diff options
Diffstat (limited to 'node_modules/@jet-app/app-store/tmp/src/api/models/shelves.js')
| -rw-r--r-- | node_modules/@jet-app/app-store/tmp/src/api/models/shelves.js | 709 |
1 files changed, 709 insertions, 0 deletions
diff --git a/node_modules/@jet-app/app-store/tmp/src/api/models/shelves.js b/node_modules/@jet-app/app-store/tmp/src/api/models/shelves.js new file mode 100644 index 0000000..5a68c4c --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/api/models/shelves.js @@ -0,0 +1,709 @@ +/** + * Created by km on 2/13/17. + */ +import { isSome } from "@jet/environment/types/optional"; +import * as base from "./base"; +/** @public */ +export class InformationContainer extends base.Model { + constructor(annotationGroups) { + super(); + this.annotationGroups = annotationGroups; + } +} +/** @public */ +export class ImpressionableArtwork extends base.ViewModel { + constructor(art) { + super(); + this.art = art; + } +} +/** @public */ +export class AppShowcase extends base.Model { + constructor(type, lockup) { + super(); + this.type = type; + this.lockup = lockup; + } +} +/** @public */ +export class Banner extends base.Model { + constructor(message, focusedMessage, action, fullProductAction, leadingArtwork, leadingArtworkTintColor, includeBackgroundBorder, kind, hideCriteria) { + super(); + this.message = message; + this.focusedMessage = focusedMessage; + this.action = action; + this.fullProductAction = fullProductAction; + this.leadingArtwork = leadingArtwork; + this.leadingArtworkTintColor = leadingArtworkTintColor; + this.includeBackgroundBorder = includeBackgroundBorder; + this.kind = kind; + this.hideCriteria = hideCriteria; + } +} +/** + * @public + * Defines which banner to show for various app states so the client can update dynamically. + */ +export class AppStateBanner extends base.Model { + constructor(unknownBanner, buyBanner, downloadBanner, updateBanner, openBanner) { + super(); + this.unknownBanner = unknownBanner; + this.buyBanner = buyBanner; + this.downloadBanner = downloadBanner; + this.updateBanner = updateBanner; + this.openBanner = openBanner; + } +} +/** @public */ +export class InAppPurchaseShowcase extends base.Model { + constructor(lockup) { + super(); + this.lockup = lockup; + } +} +// endregion +/** @public */ +export class ProductMediaItem extends base.Model { +} +/** @public */ +export class ProductMedia extends base.Model { + constructor(items, mediaPlatform, allPlatforms, platformDescription, allPlatformsDescription, allPlatformsDescriptionPlacement) { + super(); + this.items = items; + this.mediaPlatform = mediaPlatform; + this.allPlatforms = allPlatforms; + this.platformDescription = platformDescription; + this.allPlatformsDescription = allPlatformsDescription; + this.allPlatformsDescriptionPlacement = allPlatformsDescriptionPlacement; + } +} +/** @public */ +export class ProductCapability extends base.Model { + constructor(type, title, caption, captionTrailingArtwork, linkAction, artwork, artworkTintColor) { + super(); + this.type = type; + this.title = title; + this.caption = caption; + this.captionTrailingArtwork = captionTrailingArtwork; + this.linkAction = linkAction; + this.artwork = artwork; + this.artworkTintColor = artworkTintColor; + } +} +/** @public */ +export class ProductDescription extends base.Model { + constructor(paragraph, developerLinks, tags, developerAction) { + super(); + this.paragraph = paragraph; + this.developerAction = developerAction; + this.tags = tags; + this.developerLinks = developerLinks; + } +} +/** @public */ +export class Footnote extends base.Model { + constructor(text) { + super(); + this.text = text; + this.presentationStyle = []; + this.clickAction = null; + } +} +/** @public */ +export class LockupContextMenuData extends base.Model { +} +/** @public */ +export class Lockup extends base.ViewModel { + isValid() { + if (!this.title) { + return false; + } + if (!this.icon || !this.icon.isValid()) { + return false; + } + return super.isValid(); + } +} +/** @public */ +export class ScreenshotsLockup extends Lockup { + constructor() { + super(); + this.screenshots = []; + /// Force a 4 screenshot portrait display style to ensure alignment with landscape screenshots + this.screenshotsDisplayStyle = "four-screenshots"; + } + isValid() { + const hasScreenshots = this.screenshots && this.screenshots.length; + if (!hasScreenshots) { + return false; + } + return super.isValid(); + } +} +/** @public */ +export class MixedMediaLockup extends Lockup { + constructor() { + super(); + this.screenshots = []; + this.trailers = []; + this.overrideLockupPosition = null; + this.screenshotsDisplayStyle = "control"; + this.metadataRibbonItems = []; + this.showMetadataInformationInLockup = false; + this.alignedRegionArtwork = null; + this.alignedRegionVideo = null; + } +} +export class UpdatesLockup extends Lockup { + constructor() { + super(); + this.whatsNew = undefined; + this.version = undefined; + this.size = undefined; + this.externalVersionId = undefined; + this.releaseDate = undefined; + this.installDate = undefined; + } +} +/** + * @public + * The metadata ribbon item used to contain any content of a metadata ribbon view. + * Keys will be present based on which metadata ribbon item type is being presented. + * This is using specific keys rather than creating them on the fly because the key + * names get mangled if they're not defined. + */ +export class MetadataRibbonItem extends base.ViewModel { + constructor(viewType) { + super(); + this.viewType = viewType; + this.moduleType = null; + this.labelText = null; + this.borderedText = null; + this.highlightedText = null; + this.starRating = null; + this.secondaryViewPlacement = "leading"; + this.artwork = null; + this.maxCharacterCount = null; + this.truncationLegibilityCharacterCountThreshold = null; + this.allowsTruncation = null; + } +} +/** @public */ +export class TrailersLockup extends Lockup { + isValid() { + const hasTrailers = this.trailers && this.trailers.isValid(); + if (!hasTrailers) { + return false; + } + if (!this.editorialTagline || this.editorialTagline.length === 0) { + return false; + } + return super.isValid(); + } +} +/** @public */ +export class Trailers extends base.Model { + constructor(videos, mediaPlatform) { + super(); + if (videos) { + this.videos = videos; + } + if (mediaPlatform) { + this.mediaPlatform = mediaPlatform; + } + } + isValid() { + return this.videos && this.videos.length > 0 && super.isValid(); + } +} +/** @public */ +export class InAppPurchaseLockup extends Lockup { +} +/** + * @public + * This is a lockup that represents the Arcade *service* (in contrast to lockups for Arcade *apps*) + * It is used in: + * - Today Card Overlay (iOS) + * - Article Persistent Lockup (iOS, macOS) + * - Maybe more + * + * This object does *not* subclass `Lockup`, as we cannot populate the app-specific properties. Decision was made to use a separate codepath altogether for delivering this + * fake lockup to views we otherwise display standard `Lockup`, as opposed to trying to reconcile the use-cases at this time. + * + * This class deliberately maintains two button actions to fire for subscribed and unsubscribed state, respectively, instead of a single hypothetical `ArcadeStateAction` + * that switches behavior based on subscription state. This is since the subscription state can switch between model apply time (what is visually represented in UI), + * and when it is run in action runner. + */ +export class ArcadeLockup extends base.ViewModel { +} +export class ImageLockup extends base.ViewModel { + constructor(artwork, lockup, caption, title, isDark = false) { + super(); + this.isDark = false; + this.artwork = artwork; + this.lockup = lockup; + this.caption = caption; + this.title = title; + this.isDark = isDark; + } + isValid() { + return this.lockup.isValid() && this.artwork.isValid(); + } +} +/** @public */ +export class TitledParagraph extends base.Model { + constructor(text, style, mediaType) { + super(); + this.text = text; + this.style = style; + this.mediaType = mediaType; + this.wantsCollapsedNewlines = true; + } +} +/** @public */ +export class EditorialCard extends base.ViewModel { + constructor() { + super(); + this.adamId = null; + this.caption = null; + this.title = null; + this.subtitle = null; + this.artwork = null; + this.shelfBackground = null; + this.clickAction = null; + this.decorations = []; + this.flowPreviewActionsConfiguration = null; + this.appEventFormattedDates = null; + this.mediaOverlayStyle = null; + } + isValid() { + if (!this.clickAction) { + return false; + } + if (!this.artwork || !this.artwork.isValid()) { + return false; + } + if (!this.caption || !this.title) { + return false; + } + return super.isValid(); + } +} +/** + * @public + * Used for: + * - Arcade Continue Playing. + */ +export class VideoCard extends base.ViewModel { + constructor() { + super(); + this.flowPreviewActionsConfiguration = null; + } +} +/** + * @public + * Used within a `RibbonBar` which is a horizontal scrolling bar that contains multiple `RibbonBarItem`s. + * E.g. a `RibbonBarItem` that defines an Arcade category within an Arcade category ribbon bar. + * + * Each bar item should have a title and a click action alongside with an optional artwork. + * Empty artworks are potentially handled by a fallback icon by client side. + */ +export class RibbonBarItem extends base.ViewModel { + constructor(title, clickAction) { + super(); + this.title = title; + this.clickAction = clickAction; + this.artwork = null; + this.accessibilityLabel = null; + } +} +/** @public */ +export class Brick extends base.ViewModel { + constructor() { + super(); + this.artworks = null; + this.accessibilityLabel = null; + this.shortEditorialDescription = null; + this.clickAction = null; + this.personalizationStyle = "none"; + this.shelfBackground = null; + this.flowPreviewActionsConfiguration = null; + this.editorialDisplayOptions = {}; + this.artworkSafeArea = null; + this.textSafeArea = null; + } + isValid() { + var _a, _b, _c, _d; + const hasValidArtwork = (_b = (_a = this.artworks) === null || _a === void 0 ? void 0 : _a.every((artwork, index) => { + return isSome(artwork) && artwork.isValid(); + })) !== null && _b !== void 0 ? _b : false; + const hasCollectionIcons = ((_d = (_c = this.collectionIcons) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) > 0; + const hasBackgroundColor = isSome(this.backgroundColor); + return (isSome(this.clickAction) && (hasValidArtwork || hasCollectionIcons || hasBackgroundColor) && super.isValid()); + } +} +/** @public */ +export class EditorialLink extends base.ViewModel { + constructor(descriptionText, summaryText, clickAction, linkPresentationEnabled = true) { + super(); + this.descriptionText = descriptionText; + this.summaryText = summaryText; + this.clickAction = clickAction; + this.linkPresentationEnabled = linkPresentationEnabled; + } +} +/** @public */ +export class SearchLink extends base.ViewModel { + constructor(title, clickAction, artwork, imageName) { + super(); + this.title = title; + this.clickAction = clickAction; + this.imageName = imageName; + this.artwork = artwork; + } +} +/** @public */ +export class LinkableText extends base.Model { + constructor(styledText, linkedSubstrings) { + super(); + this.styledText = styledText; + this.linkedSubstrings = linkedSubstrings; + } +} +/** @public */ +export class ProductPageLink extends base.Model { + constructor(text, clickAction, systemImageName, adamIdForPurchaseHistoryFilter) { + super(); + this.text = text; + this.clickAction = clickAction; + this.systemImageName = systemImageName; + this.adamIdForPurchaseHistoryFilter = adamIdForPurchaseHistoryFilter; + } +} +/** @public */ +export class PreorderDisclaimer extends base.Model { + constructor(disclaimer) { + super(); + this.disclaimer = disclaimer; + } +} +/** @public */ +export class TitledButtonStack extends base.Model { + constructor(buttons) { + super(); + this.buttons = buttons; + } +} +/** @public */ +export class TitledButton extends base.Model { + constructor(title, action) { + super(); + this.title = title; + this.action = action; + } +} +/** @public */ +export class FramedArtwork extends base.ViewModel { + constructor(artwork, isFullWidth, captionMediaType = "text/plain", caption = null, ordinal = null, hasRoundedCorners = null) { + super(); + this.artwork = artwork; + this.isFullWidth = isFullWidth; + this.hasRoundedCorners = typeof hasRoundedCorners === "boolean" ? hasRoundedCorners : !this.isFullWidth; + this.ordinal = ordinal; + this.caption = caption; + this.captionMediaType = captionMediaType; + } +} +/** @public */ +export class FramedVideo extends base.ViewModel { + constructor(video, isFullWidth, captionMediaType = "text/plain", caption = null, ordinal = null, hasRoundedCorners = null) { + super(); + this.video = video; + this.isFullWidth = isFullWidth; + this.hasRoundedCorners = typeof hasRoundedCorners === "boolean" ? hasRoundedCorners : !this.isFullWidth; + this.ordinal = ordinal; + this.caption = caption; + this.captionMediaType = captionMediaType; + } +} +/** @public */ +export class RoundedButton extends base.Model { + constructor(type, title, hasDivider, action) { + super(); + this.type = type; + this.title = title; + this.hasDivider = hasDivider; + this.action = action; + } +} +/** @public */ +export class Quote extends base.ViewModel { + constructor(text, credit, artwork, isFullWidthArtwork) { + super(); + this.text = text; + this.credit = credit; + this.artwork = artwork; + this.isFullWidthArtwork = isFullWidthArtwork || false; + } +} +/** @public */ +export class EditorialQuote extends base.ViewModel { + constructor(text, attribution) { + super(); + this.text = text; + this.attribution = attribution; + } +} +/** @public */ +export class HorizontalRule extends base.Model { + constructor(style, ruleColor, isFullWidth) { + super(); + this.style = style; + this.color = ruleColor; + this.isFullWidth = isFullWidth; + } +} +/** + * @public + * A horizontal scrolling bar that contains multiple `RibbonBarItem`s. + * + * E.g. category ribbon bar displaying different Arcade categories in a horizontal scrolling bar. + */ +export class RibbonBar extends base.ViewModel { + constructor(items) { + super(); + this.items = items; + } +} +/** @public */ +export class InformationRibbon extends base.ViewModel { + constructor(badges, hasTopSeparator, hasBottomSeparator, separatorsAreFullWidth, alignment) { + super(); + this.badges = badges; + this.hasTopSeparator = hasTopSeparator; + this.hasBottomSeparator = hasBottomSeparator; + this.separatorsAreFullWidth = separatorsAreFullWidth; + this.alignment = alignment; + } +} +// region Client Control Button +/** + * @public + * A client control button is an button appearing within Article pages. + * This is currently used so MAS editorial articles to link into OS Updates in preferences. + */ +export class ClientControlButton extends base.ViewModel { + constructor(title, buttonAction) { + super(); + this.title = title; + this.buttonAction = buttonAction; + } +} +/** @public */ +export class BreakoutDetails extends base.Model { + constructor(title, description, badgeType, callToActionButtonAction, backgroundStyle, textAlignment) { + super(); + this.badgeType = badgeType; + this.badge = badgeType.title; + this.title = title; + this.description = description; + this.callToActionButtonAction = callToActionButtonAction; + this.backgroundStyle = backgroundStyle; + this.textAlignment = textAlignment; + } +} +/** @public */ +export class LargeHeroBreakout extends base.ViewModel { + constructor(details, detailsDisplayProperties, heading, artwork, video, collectionIcons, backgroundColor) { + super(); + this.details = details; + this.detailsDisplayProperties = detailsDisplayProperties; + this.heading = heading; + this.artwork = artwork; + this.video = video; + this.collectionIcons = collectionIcons; + this.backgroundColor = backgroundColor; + this.editorialDisplayOptions = {}; + } +} +/** @public */ +export class SmallBreakout extends base.ViewModel { + constructor(details, iconArtwork, backgroundColor) { + super(); + this.details = details; + this.iconArtwork = iconArtwork; + this.backgroundColor = backgroundColor; + } +} +/** + * The `Placeholder` is a dummy model used so a shelf with content type Placeholder can be populated with items representing the amount of placeholders to show + */ +export class Placeholder extends base.ViewModel { +} +// region ArcadeShowcase +/** + * @public + * The `ArcadeShowcase` is a model that is similar to the upsell breakout on the grouping pages, but appears inline in article pages. + * This module is specialized for Arcade service, since we don't have other subscription services currently. + * On some platforms, it may display some icon artwork. + */ +export class ArcadeShowcase extends base.ViewModel { + /** + * Initialize arcade showcase with required values + * @param unsubscribedAction Action to run in non-subscribed state. + * @param subscribedAction Action to run in subscribed state. + */ + constructor(unsubscribedAction, subscribedAction) { + super(); + this.unsubscribedAction = unsubscribedAction; + this.subscribedAction = subscribedAction; + } +} +/** @public */ +export class GameCenterReengagement extends base.ViewModel { + constructor(badgeGlyph, badge, title, subtitle, achievement, lockup, backgroundColor, backgroundArtwork, heroAction) { + super(); + this.badgeGlyph = badgeGlyph; + this.badge = badge; + this.title = title; + this.subtitle = subtitle; + this.achievement = achievement; + this.backgroundColor = backgroundColor; + this.backgroundArtwork = backgroundArtwork; + this.lockup = lockup; + this.heroAction = heroAction; + } +} +export class UnifiedMessage extends base.ViewModel { + constructor(placement, context, deliveryMethod) { + super(); + this.placement = placement; + this.context = context; + this.deliveryMethod = deliveryMethod !== null && deliveryMethod !== void 0 ? deliveryMethod : "pushAndPull"; + } +} +export const genericShelfBatchGroupBase = "shelfBatchGroup_"; +export var IncompleteShelfFetchStrategy; +(function (IncompleteShelfFetchStrategy) { + /** + * Indicates the shelf should be fetched as soon as the page is loaded, + * this is the behavior we've always had, where all incomplete shelves are + * fetched after the page loads + */ + IncompleteShelfFetchStrategy["OnPageLoad"] = "onPageLoad"; + /** + * Indicates the shelf should be fetched when it is about to be scrolled into view + */ + IncompleteShelfFetchStrategy["OnShelfWillAppear"] = "onShelfWillAppear"; +})(IncompleteShelfFetchStrategy || (IncompleteShelfFetchStrategy = {})); +// Describes the snapping behaviour for horizontally scrolling shelves. +export var ShelfHorizontalScrollTargetBehavior; +(function (ShelfHorizontalScrollTargetBehavior) { + // The default behaviour, where scrolling will snap to the leading edge of the view. + ShelfHorizontalScrollTargetBehavior["ViewAligned"] = "viewAligned"; + // Scrolling will snap so that views are center aligned in their container. Primarily + // used for large components that take up most of the container. + ShelfHorizontalScrollTargetBehavior["CenterAligned"] = "centerAligned"; +})(ShelfHorizontalScrollTargetBehavior || (ShelfHorizontalScrollTargetBehavior = {})); +/** @public */ +export class Shelf extends base.ViewModel { + constructor(contentType, marker = null, items = null) { + super(); + // - Item Properties + this.contentType = contentType; + this.marker = marker; + this.items = items || []; + this.header = undefined; + // - Incomplete Shelf Properties + this.url = null; + this.mergeWhenFetched = false; + this.fetchStrategy = IncompleteShelfFetchStrategy.OnPageLoad; + this.batchGroup = null; + // - Overflow Properties + this.seeAllAction = null; + // - Footer Properties + this.footerTitle = null; + this.footerAction = null; + // - Presentation Properties + this.eyebrow = null; + this.eyebrowArtwork = null; + this.footerStyle = null; + this.title = null; + this.titleArtwork = null; + this.subtitle = null; + this.isHorizontal = false; + this.isHidden = false; + this.rowsPerColumn = null; + this.background = { type: "none" }; + this.contentsMetadata = { type: "none" }; + // - Personalization & Filtering Properties + this.isPersonalized = false; + this.shouldFilterApps = false; + } +} +/** @public */ +export var ShelfBackgroundGradientLocation; +(function (ShelfBackgroundGradientLocation) { + ShelfBackgroundGradientLocation["TopLeading"] = "topLeading"; + ShelfBackgroundGradientLocation["Top"] = "top"; + ShelfBackgroundGradientLocation["TopTrailing"] = "topTrailing"; + ShelfBackgroundGradientLocation["Trailing"] = "trailing"; + ShelfBackgroundGradientLocation["BottomTrailing"] = "bottomTrailing"; + ShelfBackgroundGradientLocation["Bottom"] = "bottom"; + ShelfBackgroundGradientLocation["BottomLeading"] = "bottomLeading"; + ShelfBackgroundGradientLocation["Leading"] = "leading"; +})(ShelfBackgroundGradientLocation || (ShelfBackgroundGradientLocation = {})); +export var GroupDisplayStyle; +(function (GroupDisplayStyle) { + GroupDisplayStyle["Grid"] = "grid"; + GroupDisplayStyle["Hero"] = "hero"; + GroupDisplayStyle["Standard"] = "standard"; +})(GroupDisplayStyle || (GroupDisplayStyle = {})); +/// The different artwork types we can display in the header +export var ShelfHeaderArtworkType; +(function (ShelfHeaderArtworkType) { + /// The image displayed is a content icon + ShelfHeaderArtworkType["Icon"] = "icon"; + /// The image displayed is a category image + ShelfHeaderArtworkType["Category"] = "category"; +})(ShelfHeaderArtworkType || (ShelfHeaderArtworkType = {})); +/** @public */ +export class EditorialStoryCard extends base.ViewModel { + constructor(title, artwork, video, heading, badge, description, clickAction) { + super(); + this.title = title; + this.artwork = artwork; + this.video = video; + this.heading = heading; + this.badge = badge; + this.description = description; + this.clickAction = clickAction; + this.shelfBackground = null; + this.collectionIcons = null; + this.editorialDisplayOptions = {}; + } +} +/** @public */ +export class PosterLockup extends Lockup { + isValid() { + const hasPosterArtwork = this.posterArtwork; + const hasPosterVideo = this.posterVideo; + // We require at least one type of poster media. + if (!(hasPosterArtwork || hasPosterVideo)) { + return false; + } + return super.isValid(); + } +} +/** @public */ +export class PageTab extends base.Model { +} +/** @public */ +export class PageTabs extends base.Model { + constructor() { + super(); + /// The id is not from a payload and should be unique to the container + this.id = random.nextUUID(); + } +} +//# sourceMappingURL=shelves.js.map
\ No newline at end of file |
