@inappstory/slide-api 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../src/composition/core.ts","../../../src/widgets/base/widgets_service/widgets_service.ts","../../../src/widgets/base/widgets_service/composition.ts","../../../src/layout/layout_service/layout_service.ts","../../../src/layout/layout_service/composition.ts","../../../src/composition/index.ts","../../../src/sdk_api/sdk_api.h.ts","../../../src/utils.ts","../../../src/animation/animation.ts","../../../src/sdk_api/adapters/es_module_sdk_api.ts","../../../src/layout/elements/DataInput.ts","../../../src/layout/elements/Barcode.ts","../../../src/layout/elements/ClickableBase.ts","../../../src/layout/elements/Button.ts","../../../src/layout/elements/Copy.ts","../../../src/layout/elements/DateCountdown.ts","../../../src/layout/elements/Poll.ts","../../../src/layout/elements/PollLayers.ts","../../../src/layout/elements/Products.ts","../../../src/layout/elements/Quest.ts","../../../src/layout/elements/Quiz.ts","../../../src/layout/elements/QuizGrouped.ts","../../../src/layout/elements/RangeSlider.ts","../../../src/layout/elements/Rate.ts","../../../src/layout/elements/Share.ts","../../../src/layout/elements/SwipeUpItems.ts","../../../src/layout/elements/Test.ts","../../../src/layout/elements/Vote.ts","../../../src/layout/elements/Text.ts","../../../src/layout/utils/utils.ts","../../../src/layout/elements/Image.ts","../../../src/layout/elements/SwipeUp.ts","../../../src/layout/elements/Video.ts","../../../src/layout/elements/factory.ts","../../../src/layout/slide_timeline/slide_timeline.ts","../../../src/layout/Layer.ts","../../../src/layout/Slide.ts","../../../src/layout/SlideApi.ts","../../../src/entry_points/es_module/es_module.ts","../../../src/sdk_api/composition/es_module_sdk_api.ts"],"sourcesContent":["import { DIContainer } from \"@wessberg/di\";\n\nexport const container = new DIContainer();\n","import { SDKApi } from \"@skd_api\";\n\nexport class WidgetsService {\n constructor(\n private _env: Window,\n private _sdkApi: SDKApi\n ) {}\n\n get env(): Window {\n return this._env;\n }\n get sdkApi(): SDKApi {\n return this._sdkApi;\n }\n}\n","import { container } from \"@composition\";\nimport { WidgetsService } from \"./widgets_service\";\n\ncontainer.registerSingleton<WidgetsService>();\n","import { SDKApi } from \"@skd_api\";\nimport { ILayoutApi } from \"../layout_api\";\n\nexport class LayoutService {\n constructor(\n private _env: Window,\n private _sdkApi: SDKApi,\n private _layoutApi: ILayoutApi\n ) {}\n\n get env(): Window {\n return this._env;\n }\n get sdkApi(): SDKApi {\n return this._sdkApi;\n }\n\n get layoutApi(): ILayoutApi {\n return this._layoutApi;\n }\n}\n","import { container } from \"@composition\";\nimport { LayoutService } from \"./layout_service\";\n\ncontainer.registerSingleton<LayoutService>();\n","import { container } from \"./core\";\n\n// import '../core/composition';\nimport \"../widgets/base/widgets_service/composition\";\nimport \"../layout/layout_service/composition\";\n\n// import '../adapters/dateTimeSource/composition';\n// import '../adapters/uuidGenerator/composition';\n// import '../effects/eventHandler/composition';\n// import '../effects/logger/composition';\n// import '../effects/timer/composition';\n\ncontainer.registerSingleton<Window>(() => window);\nexport { container };\n","import { Widgets, WidgetsSharedDataMap } from \"../widgets/base\";\nimport { IAnimation } from \"@animation\";\nimport { TIMELINE_ACTION } from \"../layout/slide_timeline\";\n\nexport type APIResponse<DTO> = {\n status: number;\n data: DTO;\n headers?: { [key: string]: string };\n requestId: number | string;\n};\n\nexport type FontDTO = {\n url: string;\n family: string;\n style: string;\n weight: string;\n};\n\nexport const DEFAULT_SLIDE_DURATION = 10000;\nexport interface SDKApi {\n getCardServerData(cardId: number): Record<string, any> | null;\n updateCardServerDataLocally(cardId: number, data: Record<string, any>): void;\n getSlideDuration(cardId: number, slideIndex: number): number | null;\n showNextSlide(duration: number): void;\n sendStatisticEvent(\n name: string,\n data: Record<string, string | number | Array<string | number>>,\n devPayload?: Record<string, string | number | Array<string | number>>,\n forceEnableStatisticV2?: boolean\n ): void;\n getCardLocalData(): Promise<Record<string, any>>;\n isExistsShowLayer(): boolean;\n showLayer(index: number): void;\n cardAnimation: IAnimation | undefined;\n isAndroid: boolean;\n isWeb: boolean;\n isIOS: boolean;\n pauseUI(): void;\n resumeUI(): void;\n isExistsShowCardTextInput: boolean;\n showCardTextInput(id: string, data: Record<string, any>): void;\n setCardLocalData(keyValue: Record<string, any>, sendToServer: boolean): void;\n getWidgetsSharedData<WidgetType extends keyof WidgetsSharedDataMap>(cardId: number, widget: Widgets): WidgetsSharedDataMap[WidgetType] | null;\n vibrate(pattern: number): void;\n openUrl(data: {\n type: \"link\" | \"swipeUpLink\" | \"swipeUpItems\";\n link: {\n type: \"url\" | \"json\";\n target: string;\n };\n elementId?: string;\n }): void;\n sendApiRequest<ResponseDTO>(\n url: string,\n method: string,\n params: Record<string, any> | null,\n headers: Record<string, any> | null,\n data: Record<string, any> | null,\n profilingKey: string\n ): Promise<APIResponse<ResponseDTO>>;\n sendApiRequestSupported(): boolean;\n showToast(text: string): void;\n sdkCanSendShareComplete: boolean;\n isExistsShare: boolean;\n share(\n id: string,\n config: {\n url?: string | null;\n text?: string | null;\n title?: string | null;\n files?: Array<{\n file: File;\n name: string;\n type: string;\n }> | null;\n }\n ): void;\n shareSlideScreenshot(shareId: string, hideElementsSelector?: string, shareText?: string): void;\n isExistsShowCardSlide: boolean;\n showCardSlide(index: number): void;\n isExistsShowNextCard: boolean;\n cardShowNext(): void;\n setCardSessionValue(element: HTMLElement, key: string, value: string): void;\n getCardSessionValue(element: HTMLElement, key: string): string | undefined;\n updateTimeline(slideIndex: number, action: TIMELINE_ACTION, currentTime: number, duration: number, showLoader: boolean, showError: boolean): void;\n\n /** @deprecated, used only in native sdk **/\n cardPausedCallback(currentTime: number | null): void;\n /** @deprecated, used only in native sdk **/\n cardResumedCallback(currentTime: number | null): void;\n\n startDisabledTimeline(cardId: number, slideIndex: number): void;\n\n getCardFonts(): Array<FontDTO>;\n\n disableVerticalSwipeGesture(): void;\n enableVerticalSwipeGesture(): void;\n\n disableBackpress(): void;\n enableBackpress(): void;\n\n closeCard(reason: string): void;\n openStory(id: number, index: number): void;\n openGame(gameInstanceId: string): void;\n}\n","import { SDKApi } from \"@skd_api\";\n\nexport const array_string = \"[object Array]\";\nexport const ops = Object.prototype.toString;\nexport const fnPrototype = Function.prototype;\nexport const bind = fnPrototype.bind;\nexport const arPrototype = Array.prototype;\nexport const obPrototype = Object.prototype;\nexport const push = arPrototype.push;\nexport const slice = arPrototype.slice;\nexport const concat = arPrototype.concat;\nexport const obKeys = Object.keys;\nexport const obHasOwnProp = obPrototype.hasOwnProperty;\nexport const toString = obPrototype.toString;\nexport const isArray =\n Array.isArray ||\n function (e) {\n return toString.call(e) === \"[object Array]\";\n };\n// Matches dashed string for camelizing\nexport const rmsPrefix = /^-ms-/;\nexport const rdashAlpha = /-([\\da-z])/gi;\nexport const fcamelCase = function (letter: string) {\n return letter.toUpperCase();\n};\n\n// private methods\nexport const isObject = function (e: any) {\n var t = typeof e;\n return t === \"function\" || (t === \"object\" && !!e);\n};\nexport const isNumber = function (t: any) {\n return toString.call(t) === \"[object Number]\";\n};\n\nexport const isNumeric = function (n: any) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n};\n\n// isEmpty = function(e) {\n// if (e == null)\n// return !0;\n// if (isArray(e) || isString(e) || isArguments(e))\n// return e.length === 0;\n// for (var t in e)\n// if (p.has(e, t))\n// return !1;\n// return !0\n// },\nexport const has = function (e: Object, t: string) {\n return e != null && obHasOwnProp.call(e, t);\n};\nexport const keys = function (e: Object) {\n if (!isObject(e)) return [];\n if (obKeys) return obKeys(e);\n var t = [];\n for (var n in e) has(e, n) && t.push(n);\n return t;\n};\nconst d = function (e: Function, t?: Object, n?: number) {\n if (t === void 0) return e;\n switch (n == null ? 3 : n) {\n case 1:\n return function (n: any) {\n return e.call(t, n);\n };\n case 2:\n return function (n: any, r: any) {\n return e.call(t, n, r);\n };\n case 3:\n return function (n: any, r: any, i: any) {\n return e.call(t, n, r, i);\n };\n case 4:\n return function (n: any, r: any, i: any, s: any) {\n return e.call(t, n, r, i, s);\n };\n }\n return function () {\n return e.apply(t, arguments);\n };\n};\nexport const each = function <T>(e: Array<T>, t: (value: T, index: string | number, arr: Array<T>) => void, n?: Object) {\n if (e == null) return e;\n t = d(t, n) as (value: T, index: string | number, arr: Array<T>) => void;\n var r: number,\n i: number = e.length;\n if (i === +i) for (r = 0; r < i; ++r) t(e[r], r, e);\n else {\n var s: Array<string> = keys(e);\n for (r = 0, i = s.length; r < i; ++r) t((e as { [key in string]: any })[s[r]], s[r], e);\n }\n return e;\n};\nexport const forEach = each;\nexport const extend = function <T extends Record<string, any>, R extends Array<Partial<T>> = Array<Partial<T>>>(e: Partial<T>, ...args: R): T {\n var t, n;\n for (var r = 1, i = arguments.length; r < i; r++) {\n t = arguments[r];\n for (n in t) obHasOwnProp.call(t, n) && ((e as Record<string, any>)[n] = t[n]);\n }\n return e as T;\n};\nexport const isEmptyObject = function (obj: Object): boolean {\n var name;\n for (name in obj) {\n return false;\n }\n return true;\n};\n\nexport const expando = function (): string {\n return \"app\" + (\"\" + Math.random()).replace(/\\D/g, \"\");\n};\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE9-11+\n// Microsoft forgot to hump their vendor prefix (#9572)\nexport const camelCase = function (string: string) {\n return string.replace(rmsPrefix, \"ms-\").replace(rdashAlpha, fcamelCase);\n};\n\nexport const proxy = function <T extends (...args: any[]) => any>(func: T, obj?: Object): () => ReturnType<T> {\n if (typeof func != \"function\") {\n return func;\n }\n\n // If obj is empty or another set another object\n if (!obj) {\n // @ts-ignore\n obj = this;\n }\n\n return function () {\n return func.apply(obj, arguments as unknown as any[]);\n };\n};\n\n/*\n hasData: function( elem ) {\n return data_user.hasData( elem ) || data_priv.hasData( elem );\n},\n\ndata: function( elem, name, data ) {\n return data_user.access( elem, name, data );\n},\n\nremoveData: function( elem, name ) {\n data_user.remove( elem, name );\n},\n */\n\nexport const data = function <T>(elem: HTMLElement, name: string, data?: T): T | undefined {\n return data_user.access(elem, name, data);\n};\n\nexport const getTagData = function (element: HTMLElement, key: string) {\n return element.dataset[key];\n};\n\nexport const getTagDataAsNumber = function (element: HTMLElement, key: string): number | undefined {\n const data = element.dataset[key];\n if (data == null) {\n return undefined;\n }\n return parseInt(data);\n};\n\nexport const setTagData = function (element: HTMLElement, key: string, value: string): void {\n element.dataset[key] = value;\n};\nvar rnotwhite = /\\S+/g;\n\nclass Data {\n static uid: number = 1;\n\n static accepts(owner: HTMLElement): boolean {\n // Accepts only:\n // - Node\n // - Node.ELEMENT_NODE\n // - Node.DOCUMENT_NODE\n // - Object\n // - Any\n /* jshint -W018 */\n return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType;\n }\n\n private expando: string;\n private cache: Record<string, any>;\n\n constructor() {\n // Support: Android<4,\n // Old WebKit does not have Object.preventExtensions/freeze method,\n // return new empty object instead with no [[set]] accessor\n Object.defineProperty((this.cache = {}), 0, {\n get: function () {\n return {};\n },\n });\n\n this.expando = expando() + String(Data.uid++);\n }\n\n public key(owner: HTMLElement) {\n const _owner = owner as HTMLElement & { [key in string]: any };\n\n // We can accept data for non-element nodes in modern browsers,\n // but we should not, see #8335.\n // Always return the key for a frozen object.\n if (!Data.accepts(_owner)) {\n return 0;\n }\n\n var descriptor: Record<string, any> = {},\n // Check if the owner object already has a cache key\n unlock = _owner[this.expando];\n\n // If not, create one\n if (!unlock) {\n unlock = Data.uid++;\n\n // Secure it in a non-enumerable, non-writable property\n try {\n descriptor[this.expando] = { value: unlock };\n Object.defineProperties(_owner, descriptor);\n\n // Support: Android<4\n // Fallback to a less secure definition\n } catch (e) {\n descriptor[this.expando] = unlock;\n extend(_owner, descriptor);\n }\n }\n\n // Ensure the cache object\n if (!this.cache[unlock]) {\n this.cache[unlock] = {};\n }\n\n return unlock;\n }\n\n public set(owner: HTMLElement, data: string | Object, value: Object) {\n var prop,\n // There may be an unlock assigned to this node,\n // if there is no entry for this \"owner\", create one inline\n // and set the unlock as though an owner entry had always existed\n unlock = this.key(owner),\n cache = this.cache[unlock];\n\n // Handle: [ owner, key, value ] args\n if (typeof data === \"string\") {\n cache[data] = value;\n\n // Handle: [ owner, { properties } ] args\n } else {\n // Fresh assignments by object are shallow copied\n if (isEmptyObject(cache)) {\n extend(this.cache[unlock], data);\n // Otherwise, copy the properties one-by-one to the cache object\n } else {\n for (prop in data) {\n //@ts-ignore\n cache[prop] = data[prop];\n }\n }\n }\n return cache;\n }\n\n public get(owner: HTMLElement, key: string) {\n // Either a valid cache is found, or will be created.\n // New caches will be created and the unlock returned,\n // allowing direct access to the newly created\n // empty data object. A valid owner object must be provided.\n var cache = this.cache[this.key(owner)];\n\n return key === undefined ? cache : cache[key];\n }\n\n public access(owner: HTMLElement, key: string, value: any) {\n var stored;\n // In cases where either:\n //\n // 1. No key was specified\n // 2. A string key was specified, but no value provided\n //\n // Take the \"read\" path and allow the get method to determine\n // which value to return, respectively either:\n //\n // 1. The entire cache object\n // 2. The data stored at the key\n //\n if (key === undefined || (key && typeof key === \"string\" && value === undefined)) {\n stored = this.get(owner, key);\n\n return stored !== undefined ? stored : this.get(owner, camelCase(key));\n }\n\n // [*]When the key is not a string, or both a key and value\n // are specified, set or extend (existing objects) with either:\n //\n // 1. An object of properties\n // 2. A key and value\n //\n this.set(owner, key, value);\n\n // Since the \"set\" path can have two possible entry points\n // return the expected data based on which path was taken[*]\n return value !== undefined ? value : key;\n }\n\n public remove(owner: HTMLElement, key: string): void {\n var i,\n name,\n camel,\n unlock = this.key(owner),\n cache = this.cache[unlock];\n\n if (key === undefined) {\n this.cache[unlock] = {};\n } else {\n // Support array or space separated string of keys\n if (isArray(key)) {\n // If \"name\" is an array of keys...\n // When data is initially created, via (\"key\", \"val\") signature,\n // keys will be converted to camelCase.\n // Since there is no way to tell _how_ a key was added, remove\n // both plain key and camelCase key. #12786\n // This will only penalize the array argument path.\n name = key.concat(key.map(camelCase));\n } else {\n camel = camelCase(key);\n // Try the string as a key before any manipulation\n if (key in cache) {\n name = [key, camel];\n } else {\n // If a key with the spaces exists, use it.\n // Otherwise, create an array by matching non-whitespace\n name = camel;\n name = name in cache ? [name] : name.match(rnotwhite) || [];\n }\n }\n\n i = name.length;\n while (i--) {\n delete cache[name[i]];\n }\n }\n }\n\n public hasData(owner: HTMLElement): boolean {\n const _owner = owner as HTMLElement & { [key: string]: any };\n return !isEmptyObject(this.cache[_owner[this.expando]] || {});\n }\n\n public discard(owner: HTMLElement): void {\n const _owner = owner as HTMLElement & { [key: string]: any };\n if (_owner[this.expando]) {\n delete this.cache[_owner[this.expando]];\n }\n }\n}\n\n// var data_priv = new Data();\nconst data_user = new Data();\n\nexport const getWinWidth = function (env: Window) {\n return env.innerWidth || env.document.documentElement.clientWidth || env.document.body.clientWidth;\n};\n\nexport const getWinHeight = function (env: Window) {\n return env.innerHeight || env.document.documentElement.clientHeight || env.document.body.clientHeight;\n};\n\nexport const sendStatisticEventToApp = function (\n sdkApi: SDKApi,\n name: string,\n data: Record<string, string | number | Array<string | number>>,\n devPayload?: Record<string, string | number | Array<string | number>>,\n options?: { forceEnableStatisticV2?: boolean }\n) {\n sdkApi.sendStatisticEvent(name, data, devPayload, options?.forceEnableStatisticV2 ?? false);\n};\n\nexport const getValueOrException = function <T>(value: T | undefined | null, message: string): T {\n if (value == null) {\n throw new Error(message);\n }\n return value;\n};\n\nexport const getValueOrDefault = function <T>(value: T | undefined | null, defaultValue: T): T {\n if (value == null) {\n return defaultValue;\n }\n return value;\n};\n\nexport const getElementBounding = (env: Window, rect: DOMRect) => {\n var wWidth = getWinWidth(env);\n var wHeight = getWinHeight(env);\n\n var bounding = {\n absolute: {\n width: rect.width,\n height: rect.height,\n left: rect.left,\n right: 0,\n center: {\n x: rect.x + rect.width / 2,\n y: rect.y + rect.height / 2,\n },\n },\n width: (rect.width / wWidth) * 100,\n height: (rect.height / wHeight) * 100,\n left: (rect.left / wWidth) * 100,\n right: 0,\n center: {\n x: ((rect.x + rect.width / 2) / wWidth) * 100,\n y: ((rect.y + rect.height / 2) / wHeight) * 100,\n },\n };\n bounding.right = bounding.left + bounding.width;\n bounding.absolute.right = rect.left + rect.width;\n\n return bounding;\n};\n\nexport const toArray = <T = any>(value: any): Array<T> => Array.prototype.slice.call(value) as Array<T>;\n\nexport const addClass = (target: HTMLElement, className: string): void => {\n var arr = target.className.split(\" \");\n if (arr.indexOf(className) === -1) {\n target.className += \" \" + className;\n }\n};\nexport const removeClass = (target: HTMLElement, className: string): void => {\n target.className = target.className.replace(new RegExp(\"(?:^|\\\\s)\" + className + \"(?:\\\\s|$)\"), \" \").trim();\n};\nexport const classList = (target: HTMLElement): Array<string> => {\n if (target.classList !== undefined) {\n return toArray(target.classList);\n }\n return target.className.split(\" \");\n};\nexport const hasClass = (target: HTMLElement, className: string): boolean => classList(target).indexOf(className) !== -1;\n\nexport const Clipboard = (function (window: Window, document: Document, navigator: Navigator) {\n let textArea: HTMLTextAreaElement;\n\n function isOS() {\n return navigator.userAgent.match(/ipad|iphone/i);\n }\n\n function createTextArea(text: string): void {\n textArea = document.createElement(\"textArea\") as HTMLTextAreaElement;\n textArea.value = text;\n document.body.appendChild(textArea);\n }\n\n function selectText() {\n if (isOS()) {\n const range = document.createRange();\n range.selectNodeContents(textArea);\n const selection = window.getSelection();\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n textArea.setSelectionRange(0, 999999);\n } else {\n textArea.select();\n }\n }\n\n function copyToClipboard() {\n document.execCommand(\"copy\");\n document.body.removeChild(textArea);\n }\n\n const copy = function (text: string): void {\n createTextArea(text);\n selectText();\n copyToClipboard();\n };\n\n return {\n copy,\n };\n})(window, document, navigator);\n\nexport function FilterNumber(x: any): x is number {\n return typeof x === \"number\";\n}\n\nexport function determineLocale(): string {\n // All modern browsers support this. Should match what's used by localeCompare() etc.\n const intl = window.Intl;\n if (intl !== undefined) {\n return intl.NumberFormat().resolvedOptions().locale;\n }\n\n // Fall back to ranked choice locales, which are configured in the browser but aren't necessarily\n // what's used in functions like localeCompare().\n const languages = navigator.languages as string[] | undefined;\n if (languages !== undefined && languages.length > 0) {\n return languages[0];\n }\n\n // Old standard.\n return navigator.language ?? \"en-US\";\n}\n\nexport function isScreenSupportsTouch(env: Window): boolean {\n let supportsTouch = false;\n if (\"ontouchstart\" in env) {\n supportsTouch = true;\n } else if ((env.navigator as any).msPointerEnabled) {\n supportsTouch = true;\n } else if (\"ontouchstart\" in env.document.documentElement) {\n supportsTouch = true;\n }\n return supportsTouch;\n}\n","import { addClass, classList, hasClass, removeClass, toArray } from \"@utils\";\nimport { IAnimation } from \"./animation.h\";\n\nvar supportAnimate = document.documentElement.animate !== undefined;\nsupportAnimate = false; // tmp off\n\nvar _intervals: Array<number> = [];\n\nvar _startShakeAnimation = function (element: HTMLElement) {\n var step = 0;\n return window.setInterval(function () {\n if (element) {\n switch (step) {\n case 0:\n element.style.setProperty(\"transform\", \"translate(1px, 1px) rotate(0deg)\");\n break;\n case 10:\n element.style.setProperty(\"transform\", \"translate(-1px, -2px) rotate(-1deg)\");\n break;\n case 20:\n element.style.setProperty(\"transform\", \"translate(-3px, 0px) rotate(1deg)\");\n break;\n case 30:\n element.style.setProperty(\"transform\", \"translate(3px, 2px) rotate(0deg)\");\n break;\n case 40:\n element.style.setProperty(\"transform\", \"translate(1px, -1px) rotate(1deg)\");\n break;\n case 50:\n element.style.setProperty(\"transform\", \"translate(-1px, 2px) rotate(-1deg)\");\n break;\n case 60:\n element.style.setProperty(\"transform\", \"translate(-3px, 1px) rotate(0deg)\");\n break;\n case 70:\n element.style.setProperty(\"transform\", \"translate(-3px, 1px) rotate(0deg)\");\n break;\n case 80:\n element.style.setProperty(\"transform\", \"translate(-1px, -1px) rotate(1deg)\");\n break;\n case 90:\n element.style.setProperty(\"transform\", \"translate(1px, 2px) rotate(0deg)\");\n break;\n case 100:\n element.style.setProperty(\"transform\", \"translate(1px, -2px) rotate(-1deg)\");\n break;\n }\n step += 10;\n if (step > 100) {\n step = 0;\n }\n }\n }, 100);\n};\n\nvar _startExpandShakeAnimation = function (element: HTMLElement) {\n var step = 0;\n return window.setInterval(function () {\n if (element) {\n switch (step) {\n case 0:\n element.style.setProperty(\"transform\", \"translate(1px, 1px) rotate(0deg) scale(1.1)\");\n break;\n case 10:\n element.style.setProperty(\"transform\", \"translate(-1px, -2px) rotate(-1deg) scale(1.1)\");\n break;\n case 20:\n element.style.setProperty(\"transform\", \"translate(-3px, 0px) rotate(1deg) scale(1.1)\");\n break;\n case 30:\n element.style.setProperty(\"transform\", \"translate(3px, 2px) rotate(0deg) scale(1.1)\");\n break;\n case 40:\n element.style.setProperty(\"transform\", \"translate(1px, -1px) rotate(1deg) scale(1.1)\");\n break;\n case 50:\n element.style.setProperty(\"transform\", \"translate(-1px, 2px) rotate(-1deg) scale(1.1)\");\n break;\n case 60:\n element.style.setProperty(\"transform\", \"translate(-3px, 1px) rotate(0deg) scale(1.1)\");\n break;\n case 70:\n element.style.setProperty(\"transform\", \"translate(3px, 1px) rotate(-1deg) scale(1.1)\");\n break;\n case 80:\n element.style.setProperty(\"transform\", \"translate(-1px, -1px) rotate(1deg) scale(1.1)\");\n break;\n case 90:\n element.style.setProperty(\"transform\", \"translate(1px, 2px) rotate(0deg) scale(1.1)\");\n break;\n case 100:\n element.style.setProperty(\"transform\", \"translate(1px, -2px) rotate(-1deg) scale(1.1)\");\n break;\n }\n step += 10;\n if (step > 100) {\n step = 0;\n }\n }\n }, 100);\n};\n\nvar _startBlurAnimation = function (element: HTMLElement) {\n const listener = (e: TransitionEvent) => {\n if (e.propertyName === \"filter\" && e.target != null) {\n const target = e.target as HTMLElement;\n if (hasClass(target, \"animated\")) {\n if (target.style.filter === \"blur(0px)\" || target.style.filter === \"\") {\n setTimeout(function () {\n target.style.filter = \"blur(5px)\";\n }, 10);\n } else if (target.style.filter === \"blur(5px)\") {\n setTimeout(function () {\n target.style.filter = \"blur(0px)\";\n }, 10);\n }\n } else {\n target.style.filter = \"\";\n target.removeEventListener(\"transitionend\", listener);\n }\n }\n };\n element.addEventListener(\"transitionend\", listener);\n};\n\nvar shortDuration = {\n duration: 1000,\n iterations: 1,\n};\nvar longDuration = {\n duration: 10000,\n iterations: 1,\n};\nvar extraLongDuration = {\n duration: 20000,\n iterations: 1,\n};\nvar longInfinityDuration = {\n duration: 10000,\n iterations: Infinity,\n};\n\nvar getAnimationFunction = function (element: HTMLElement): () => void {\n if (!hasClass(element, \"animated\")) {\n if (hasClass(element, \"narrative-element-animation-shake\")) {\n if (element.parentElement && hasClass(element.parentElement, \"narrative-element-expand\")) {\n return function () {\n _intervals.push(_startExpandShakeAnimation(element));\n addClass(element, \"animated\");\n };\n } else {\n return function () {\n _intervals.push(_startShakeAnimation(element));\n addClass(element, \"animated\");\n };\n }\n } else if (hasClass(element, \"narrative-element-animation-blur\")) {\n return function () {\n _startBlurAnimation(element);\n addClass(element, \"animated\");\n };\n } else {\n return function () {\n addClass(element, \"active\");\n addClass(element, \"animated\");\n };\n }\n }\n return function () {};\n};\n\nexport const animationApi: IAnimation = {\n start: function (slide: HTMLElement, animate: boolean = false) {\n if (supportAnimate && animate) {\n // for editor, todo add .reset-animation to narrative-editor-slide && clear that\n if (!hasClass(slide, \"narrative-slide\")) {\n addClass(slide, \"reset-animation\");\n }\n\n const elements = toArray<HTMLElement>(slide.querySelectorAll(\".narrative-element-animation\"));\n\n elements.forEach(element => {\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n var _classList = classList(element);\n\n if (_classList.indexOf(\"narrative-element-animation-fade-in-up\") !== -1) {\n element.animate(\n {\n transform: [\"translateY(\" + height + \"px)\", \"translateY(0)\"],\n opacity: [0, 1],\n },\n shortDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-fade-in-down\") !== -1) {\n element.animate(\n {\n transform: [\"translateY(\" + -1 * height + \"px)\", \"translateY(0)\"],\n opacity: [0, 1],\n },\n shortDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-fade-in-left\") !== -1) {\n element.animate(\n {\n transform: [\"translateX(\" + -1 * width + \"px)\", \"translateX(0)\"],\n opacity: [0, 1],\n },\n shortDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-fade-in-right\") !== -1) {\n element.animate(\n {\n transform: [\"translateX(\" + width + \"px)\", \"translateX(0)\"],\n opacity: [0, 1],\n },\n shortDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-blur\") !== -1) {\n element.animate(\n [\n { filter: \"blur(5px)\", offset: 0 },\n { filter: \"blur(0px)\", offset: 0.5 },\n { filter: \"blur(5px)\", offset: 1 },\n ],\n longInfinityDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-focus-in\") !== -1) {\n element.animate({ filter: [\"blur(12px)\", \"blur(0px)\"], opacity: [0, 1] }, shortDuration);\n } else if (_classList.indexOf(\"narrative-element-animation-scroll-left\") !== -1) {\n element.animate(\n {\n transform: [\"scale(1.2) translateX(\" + 0.08 * width + \"px)\", \"scale(1.2) translateX(\" + -0.08 * width + \"px)\"],\n },\n extraLongDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-scroll-right\") !== -1) {\n element.animate(\n {\n transform: [\"scale(1.2) translateX(\" + -0.08 * width + \"px)\", \"scale(1.2) translateX(\" + 0.08 * width + \"px)\"],\n },\n extraLongDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-scroll-up\") !== -1) {\n element.animate(\n {\n transform: [\"scale(1.2) translateY(\" + 0.08 * width + \"px)\", \"scale(1.2) translateY(\" + -0.08 * width + \"px)\"],\n },\n extraLongDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-scroll-down\") !== -1) {\n element.animate(\n {\n transform: [\"scale(1.2) translateY(\" + -0.08 * width + \"px)\", \"scale(1.2) translateY(\" + 0.08 * width + \"px)\"],\n },\n extraLongDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-zoom\") !== -1) {\n element.animate({ transform: [\"scale(1)\", \"scale(1.2)\"] }, longDuration);\n } else if (_classList.indexOf(\"narrative-element-animation-zoom-out\") !== -1) {\n element.animate({ transform: [\"scale(1.2)\", \"scale(1)\"] }, longDuration);\n } else if (_classList.indexOf(\"narrative-element-animation-shake\") !== -1) {\n element.animate(\n [\n { transform: \"translate(1px, 1px) rotate(0deg)\", offset: 0 },\n { transform: \"translate(-1px, -2px) rotate(-1deg)\", offset: 0.1 },\n { transform: \"translate(-3px, 0px) rotate(1deg)\", offset: 0.2 },\n { transform: \"translate(3px, 2px) rotate(0deg)\", offset: 0.3 },\n { transform: \"translate(1px, -1px) rotate(1deg)\", offset: 0.4 },\n { transform: \"translate(-1px, 2px) rotate(-1deg)\", offset: 0.5 },\n { transform: \"translate(-3px, 1px) rotate(0deg)\", offset: 0.6 },\n { transform: \"translate(3px, 1px) rotate(-1deg)\", offset: 0.7 },\n { transform: \"translate(-1px, -1px) rotate(1deg)\", offset: 0.8 },\n { transform: \"translate(1px, 2px) rotate(0deg)\", offset: 0.9 },\n { transform: \"translate(1px, -2px) rotate(-1deg)\", offset: 1 },\n ],\n { duration: 1000, iterations: Infinity, composite: \"add\" }\n );\n }\n });\n\n if (elements.length > 0) {\n requestAnimationFrame(() => removeClass(slide, \"reset-animation\"));\n }\n } else {\n addClass(slide, \"animation-fallback\");\n\n type SavedAnimation = { cb: () => void; timerId?: number; timeout: number; needResume?: boolean };\n const animations: Array<SavedAnimation> = [];\n\n // просто Array\n\n var elements = slide.querySelectorAll<HTMLElement>(\".narrative-element-animation\");\n var isEditorSlide = hasClass(slide, \"narrative-editor-slide\");\n for (var i = 0; i < elements.length; i++) {\n if (!isEditorSlide && !elements[i].style.getPropertyValue(\"--width\")) {\n var rects = elements[i].getBoundingClientRect();\n var width = rects.width;\n var height = rects.height;\n if (width && height) {\n elements[i].style.setProperty(\"--width\", width + \"px\");\n elements[i].style.setProperty(\"--height\", height + \"px\");\n }\n }\n (function (element) {\n var timeout = 50;\n\n if (element.getAttribute(\"data-animation-timeout\") && parseFloat(element.getAttribute(\"data-animation-timeout\") ?? \"0\")) {\n timeout = parseFloat(element.getAttribute(\"data-animation-timeout\") ?? \"0\") * 1000;\n }\n\n const cb = () => {\n getAnimationFunction(element)();\n if (animation) {\n animation.timerId = undefined;\n }\n };\n const animation: SavedAnimation = {\n cb,\n timeout,\n timerId: window.setTimeout(cb, timeout),\n };\n animations.push(animation);\n })(elements[i]);\n }\n\n var startAt = new Date().getTime();\n // onstop && onpause\n return function (isStop: boolean) {\n for (var animation of animations) {\n if (animation[\"timerId\"] !== undefined) {\n clearTimeout(animation[\"timerId\"]);\n animation[\"timerId\"] = undefined;\n animation[\"timeout\"] -= new Date().getTime() - startAt;\n animation[\"needResume\"] = !isStop;\n }\n }\n\n // resume\n return function () {\n startAt = new Date().getTime();\n for (const animation of animations) {\n if (animation[\"timerId\"] === undefined && animation[\"needResume\"] === true) {\n animation[\"timerId\"] = window.setTimeout(animation[\"cb\"], animation[\"timeout\"]);\n }\n }\n };\n };\n }\n },\n\n stop: function (slide: HTMLElement, animate: boolean) {\n if (supportAnimate && animate) {\n /** @type {HTMLElement[]} */\n var elements = toArray<HTMLElement>(slide.querySelectorAll(\".narrative-element-animation\"));\n elements.forEach(function (el) {\n el.getAnimations().forEach(function (animation) {\n animation.cancel();\n });\n });\n } else {\n for (var i = 0; i < _intervals.length; i++) {\n clearInterval(_intervals[i]);\n }\n\n if (slide) {\n var elements = toArray<HTMLElement>(slide.querySelectorAll(\".narrative-element-animation\"));\n for (var i = 0; i < elements.length; i++) {\n removeClass(elements[i], \"active\");\n removeClass(elements[i], \"animated\");\n elements[i].style.setProperty(\"transform\", \"\");\n elements[i].style.setProperty(\"filter\", \"\");\n }\n }\n }\n },\n\n pause: function (slide: HTMLElement): void {\n if (supportAnimate) {\n /* var elements = document.querySelectorAll('.narrative-element-animation');\n elements = _toArray(elements);\n\n elements.forEach(function(el) {\n el.playState = \"paused\";\n // el.currentTime = 0;\n });*/\n\n var elements = toArray<HTMLElement>(slide.querySelectorAll(\".narrative-element-animation\"));\n elements.forEach(function (el) {\n el.getAnimations().forEach(function (animation) {\n if (animation.playState !== \"finished\" && animation.playState === \"running\") {\n animation.pause();\n }\n });\n });\n\n // slide.getAnimations().forEach(function (animation) {\n // if (animation.playState !== 'finished' && animation.playState === 'running') {\n // animation.pause();\n // }\n // });\n }\n },\n resume: function (slide: HTMLElement): void {\n if (supportAnimate) {\n var elements = toArray<HTMLElement>(slide.querySelectorAll(\".narrative-element-animation\"));\n elements.forEach(function (el) {\n el.getAnimations().forEach(function (animation) {\n if (animation.playState === \"paused\") {\n animation.play();\n }\n });\n });\n }\n },\n reset: function (slide: HTMLElement): void {\n // _addClass(slide, 'reset-animation');\n },\n};\n","import { APIResponse, DEFAULT_SLIDE_DURATION, FontDTO, SDKApi } from \"@skd_api\";\nimport { Widgets, WidgetsSharedDataMap } from \"../../widgets/base\";\nimport { animationApi } from \"@animation\";\nimport { SDKInterface } from \"../es_module_sdk_api.h\";\nimport { TIMELINE_ACTION } from \"../../layout/slide_timeline\";\n\ndeclare class Toast {\n constructor(options: { content: string });\n}\n\nexport class EsModuleSdkApi implements SDKApi {\n constructor(private readonly sdkBinding: () => SDKInterface) {}\n\n getCardServerData(cardId: number): Record<string, any> | null {\n return this.sdkBinding().getCardServerData(cardId);\n }\n\n updateCardServerDataLocally(cardId: number, data: Record<string, any>): void {\n return this.sdkBinding().updateCardServerDataLocally(data);\n }\n\n getSlideDuration(cardId: number, slideIndex: number): number | null {\n return this.sdkBinding().getSlideDuration(cardId, slideIndex);\n }\n\n showNextSlide(duration: number): void {\n this.sdkBinding().showNextSlide(duration);\n }\n\n sendStatisticEvent(\n name: string,\n data: Record<string, string | number | Array<string | number>>,\n devPayload?: Record<string, string | number | Array<string | number>>,\n forceEnableStatisticV2?: boolean\n ): void {\n this.sdkBinding().sendStatisticEvent(name, data, devPayload, forceEnableStatisticV2);\n }\n\n getCardLocalData(): Promise<Record<string, any>> {\n return this.sdkBinding().getCardLocalData();\n }\n\n isExistsShowLayer(): boolean {\n return true;\n }\n\n showLayer(index: number) {\n this.sdkBinding().showLayer(index);\n }\n\n get cardAnimation() {\n return animationApi;\n }\n\n get isAndroid(): boolean {\n return false;\n }\n\n get isIOS(): boolean {\n return false;\n }\n\n get isWeb(): boolean {\n return true;\n }\n\n pauseUI() {\n this.sdkBinding().pauseUI();\n }\n\n resumeUI() {\n this.sdkBinding().resumeUI();\n }\n\n get isExistsShowCardTextInput(): boolean {\n return true;\n }\n\n showCardTextInput(id: string, data: Record<string, any>): void {\n this.sdkBinding().showCardTextInput(id, data);\n }\n\n setCardLocalData(keyValue: Record<string, any>, sendToServer: boolean) {\n this.sdkBinding().setCardLocalData(keyValue, sendToServer);\n }\n\n getWidgetsSharedData<WidgetType extends keyof WidgetsSharedDataMap>(cardId: number, widget: Widgets): WidgetsSharedDataMap[WidgetType] | null {\n return this.sdkBinding().getWidgetsSharedData<WidgetType>(cardId, widget);\n }\n\n vibrate(pattern: number): void {\n navigator.vibrate(pattern);\n }\n\n openUrl(data: {\n type: \"link\" | \"swipeUpLink\" | \"swipeUpItems\";\n link: {\n type: \"url\" | \"json\";\n target: string;\n };\n elementId?: string;\n }): void {\n this.sdkBinding().openUrl(data);\n }\n\n sendApiRequest<ResponseDTO>(\n url: string,\n method: string,\n params: Record<string, any> | null,\n headers: Record<string, any> | null,\n data: Record<string, any> | null,\n profilingKey: string\n ): Promise<APIResponse<ResponseDTO>> {\n return this.sdkBinding().sendApiRequest(url, method, params, headers, data, profilingKey);\n }\n\n sendApiRequestSupported(): boolean {\n return true;\n }\n\n showToast(text: string): void {\n this.sdkBinding().showToast(text);\n }\n\n get sdkCanSendShareComplete(): boolean {\n return true;\n }\n\n get isExistsShare(): boolean {\n return true;\n }\n\n share(\n id: string,\n config: {\n url?: string | null;\n text?: string | null;\n title?: string | null;\n files?: Array<{\n file: File;\n name: string;\n type: string;\n }> | null;\n }\n ) {\n this.sdkBinding().share(id, config);\n }\n\n shareSlideScreenshot(shareId: string, hideElementsSelector?: string, shareText?: string): void {\n this.sdkBinding().shareSlideScreenshot(shareId, hideElementsSelector, shareText);\n }\n\n get isExistsShowCardSlide(): boolean {\n return true;\n }\n\n showCardSlide(index: number): void {\n this.sdkBinding().showCardSlide(index);\n }\n\n get isExistsShowNextCard(): boolean {\n return true;\n }\n\n cardShowNext(): void {\n this.sdkBinding().cardShowNext();\n }\n\n setCardSessionValue(element: HTMLElement, key: string, value: string): void {\n this.sdkBinding().setCardSessionValue(key, value);\n }\n\n getCardSessionValue(element: HTMLElement, key: string): string | undefined {\n return this.sdkBinding().getCardSessionValue(key);\n }\n\n updateTimeline(slideIndex: number, action: TIMELINE_ACTION, currentTime: number, duration: number, showLoader: boolean, showError: boolean): void {\n const updateTimeline = this.sdkBinding().updateTimeline;\n if (updateTimeline != null) {\n updateTimeline(slideIndex, action, currentTime, duration, showLoader, showError);\n }\n }\n\n cardPausedCallback(currentTime: number | null) {}\n\n cardResumedCallback(currentTime: number | null) {}\n\n startDisabledTimeline(cardId: number, slideIndex: number): void {\n // old api\n this.showNextSlide(this.getSlideDuration(cardId, slideIndex) ?? DEFAULT_SLIDE_DURATION);\n }\n\n getCardFonts(): Array<FontDTO> {\n return this.sdkBinding().getCardFonts();\n }\n\n disableVerticalSwipeGesture(): void {\n this.sdkBinding().disableVerticalSwipeGesture();\n }\n\n enableVerticalSwipeGesture(): void {\n this.sdkBinding().enableVerticalSwipeGesture();\n }\n\n disableBackpress(): void {}\n\n enableBackpress(): void {}\n\n closeCard(reason: string): void {\n this.sdkBinding().closeCard(reason);\n }\n\n openStory(id: number, index: number): void {\n this.sdkBinding().openStory(id, index);\n }\n\n openGame(gameInstanceId: string): void {\n this.sdkBinding().openGame(gameInstanceId);\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetDataInput } from \"../../widgets/data_input\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class DataInput implements IElement {\n private static readonly _className = \"narrative-element-data-input\";\n\n public static className(): string {\n return DataInput._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _widgetApi: typeof WidgetDataInput.api\n ) {}\n\n public static isTypeOf(element: IElement): element is DataInput {\n return element instanceof DataInput;\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n try {\n this._widgetApi.init(this._elementNodeRef, localData);\n } catch (e) {\n console.error(e);\n }\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n\n handleClick(): boolean {\n return false;\n }\n\n setUserData(id: string, text: string): void {\n this._widgetApi.setUserData(id, text);\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetBarcode } from \"../../widgets/barcode\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class Barcode implements IElement {\n private static readonly _className = \"narrative-element-barcode\";\n\n public static className(): string {\n return Barcode._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _widgetApi: typeof WidgetBarcode.api\n ) {}\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n try {\n this._widgetApi.init(this._elementNodeRef, localData);\n } catch (e) {\n console.error(e);\n }\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n\n handleClick(): boolean {\n return false;\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { Layer } from \"../Layer\";\n\nexport class ClickableBase {\n constructor(private readonly _element: HTMLElement) {}\n}\n","import { LocalData } from \"@layout\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\nimport { ClickableBase } from \"./ClickableBase\";\n\nexport class Button extends ClickableBase implements IElement {\n private static readonly _className = \"narrative-element-link\";\n\n public static className(): string {\n return Button._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer\n ) {\n super(_elementNodeRef);\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n\n onStart() {}\n onStop() {}\n\n handleClick(): boolean {\n return false;\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetCopy } from \"../../widgets/copy\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class Copy implements IElement {\n private static readonly _className = \"narrative-element-copy\";\n\n public static className(): string {\n return Copy._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _widgetApi: typeof WidgetCopy.api\n ) {}\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n try {\n this._widgetApi.init(this._elementNodeRef, localData);\n } catch (e) {\n console.error(e);\n }\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n\n handleClick(): boolean {\n return false;\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetDateCountdown } from \"../../widgets/date_countdown\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class DateCountdown implements IElement {\n private static readonly _className = \"narrative-element-date-countdown\";\n\n public static className(): string {\n return DateCountdown._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _layersNodesRefs: Array<HTMLElement>,\n private readonly _widgetApi: typeof WidgetDateCountdown.api\n ) {}\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n try {\n this._widgetApi.init(this._elementNodeRef, this._layersNodesRefs, localData);\n } catch (e) {\n console.error(e);\n }\n return Promise.resolve(true);\n }\n onPause() {\n this._widgetApi.onPause(this._elementNodeRef);\n }\n onResume() {\n this._widgetApi.onResume(this._elementNodeRef);\n }\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n\n handleClick(): boolean {\n return false;\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetPoll } from \"../../widgets/poll\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class Poll implements IElement {\n private static readonly _className = \"narrative-element-poll\";\n\n public static className(): string {\n return Poll._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _widgetApi: typeof WidgetPoll.api\n ) {}\n\n public static isTypeOf(element: IElement): element is Poll {\n return element instanceof Poll;\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n try {\n this._widgetApi.init(this._elementNodeRef, localData);\n } catch (e) {\n console.error(e);\n }\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n handleClick(): boolean {\n return false;\n }\n\n setUserData(id: string, text: string): void {\n this._widgetApi.setUserData(id, text);\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetPollLayers } from \"../../widgets/poll_layers\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class PollLayers implements IElement {\n private static readonly _className = \"narrative-element-poll-layers\";\n\n public static className(): string {\n return PollLayers._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _layersNodesRefs: Array<HTMLElement>,\n private readonly _widgetApi: typeof WidgetPollLayers.api\n ) {}\n\n public static isTypeOf(element: IElement): element is PollLayers {\n return element instanceof PollLayers;\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n try {\n this._widgetApi.init(this._elementNodeRef, this._layersNodesRefs, localData);\n } catch (e) {\n console.error(e);\n }\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n handleClick(): boolean {\n return false;\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetProducts } from \"../../widgets/products\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class Products implements IElement {\n private static readonly _className = \"narrative-element-products\";\n\n public static className(): string {\n return Products._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _widgetApi: typeof WidgetProducts.api\n ) {}\n\n public static isTypeOf(element: IElement): element is Products {\n return element instanceof Products;\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n try {\n this._widgetApi.init(this._elementNodeRef, localData);\n } catch (e) {\n console.error(e);\n }\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n\n handleClick(): boolean {\n return false;\n }\n\n handleBackpress(): void {\n this._widgetApi.onHandleBackpress(this._elementNodeRef);\n }\n\n get elementNodeRef(): HTMLElement {\n return this._elementNodeRef;\n }\n\n get isClickCapturedByWidget(): boolean {\n return this._widgetApi.isClickCapturedByWidget(this._elementNodeRef);\n }\n\n get isLayerForcePaused(): boolean {\n return this._widgetApi.isForcePaused(this._elementNodeRef);\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetQuest } from \"../../widgets/quest\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class Quest implements IElement {\n private static readonly _className = \"narrative-element-quest\";\n\n public static className(): string {\n return Quest._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _widgetApi: typeof WidgetQuest.api\n ) {}\n\n public static isTypeOf(element: IElement): element is Quest {\n return element instanceof Quest;\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n return this._widgetApi.init(this._elementNodeRef, localData);\n }\n\n onPause() {}\n onResume() {}\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n\n handleClick(): boolean {\n return false;\n }\n\n handleRouteClick(options: { direction: \"backward\" | \"forward\"; slideIndex: number; slideCount: number }): { continueDefaultNavigation: boolean } {\n return this._widgetApi.handleRouteClick(this._elementNodeRef, options);\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetQuiz } from \"../../widgets/quiz\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class Quiz implements IElement {\n private static readonly _className = \"narrative-element-quiz\";\n\n public static className(): string {\n return Quiz._className;\n }\n\n // widgetApi in ctor\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _widgetApi: typeof WidgetQuiz.api\n ) {}\n\n public static isTypeOf(element: IElement): element is Quiz {\n return element instanceof Quiz;\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n try {\n this._widgetApi.init(this._elementNodeRef, localData);\n } catch (e) {\n console.error(e);\n }\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n\n handleClick(): boolean {\n return false;\n }\n\n get slideQuizIsDone(): boolean {\n return this._widgetApi.slideQuizIsDone(this._elementNodeRef);\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetQuizGrouped } from \"../../widgets/quiz_grouped\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class QuizGrouped implements IElement {\n private static readonly _className = \"narrative-element-quiz-grouped\";\n\n public static className(): string {\n return QuizGrouped._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _widgetApi: typeof WidgetQuizGrouped.api\n ) {}\n\n public static isTypeOf(element: IElement): element is QuizGrouped {\n return element instanceof QuizGrouped;\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n try {\n this._widgetApi.init(this._elementNodeRef, localData);\n } catch (e) {\n console.error(e);\n }\n return Promise.resolve(true);\n }\n\n onPause() {}\n onResume() {}\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n handleClick(): boolean {\n return false;\n }\n\n get slideQuizGroupedIsDone(): boolean {\n return this._widgetApi.slideQuizIsDone(this._elementNodeRef);\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetRangeSlider } from \"../../widgets/range_slider\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class RangeSlider implements IElement {\n private static readonly _className = \"narrative-element-range-slider\";\n\n public static className(): string {\n return RangeSlider._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _widgetApi: typeof WidgetRangeSlider.api\n ) {}\n\n public static isTypeOf(element: IElement): element is RangeSlider {\n return element instanceof RangeSlider;\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n try {\n this._widgetApi.init(this._elementNodeRef, localData);\n } catch (e) {\n console.error(e);\n }\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n\n get isClickCapturedBySlider(): boolean {\n return this._widgetApi.isClickCapturedBySlider(this._elementNodeRef);\n }\n\n handleClick(): boolean {\n return false;\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetRate } from \"../../widgets/rate\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class Rate implements IElement {\n private static readonly _className = \"narrative-element-rate\";\n\n public static className(): string {\n return Rate._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _widgetApi: typeof WidgetRate.api\n ) {}\n\n public static isTypeOf(element: IElement): element is Rate {\n return element instanceof Rate;\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n try {\n this._widgetApi.init(this._elementNodeRef, localData);\n } catch (e) {\n console.error(e);\n }\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n\n handleClick(): boolean {\n return false;\n }\n\n setUserData(id: string, text: string): void {\n this._widgetApi.setUserData(id, text);\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetShare } from \"../../widgets/share\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class Share implements IElement {\n private static readonly _className = \"narrative-element-share\";\n private static readonly _widgetApiName = \"_narrative_share\";\n\n public static className(): string {\n return Share._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _layersNodesRefs: Array<HTMLElement>,\n private readonly _widgetApi: typeof WidgetShare.api\n ) {}\n\n public static isTypeOf(element: IElement): element is Share {\n return element instanceof Share;\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n try {\n this._widgetApi.init(this._elementNodeRef, this._layersNodesRefs, localData);\n } catch (e) {\n console.error(e);\n }\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n\n handleClick(): boolean {\n return false;\n }\n\n complete(id: string, isSuccess: boolean): void {\n this._widgetApi.complete(id, isSuccess);\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class SwipeUpItems implements IElement {\n private static readonly _className = \"narrative-element-swipe-up-items\";\n\n public static className(): string {\n return SwipeUpItems._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer\n ) {}\n\n public static isTypeOf(element: IElement): element is SwipeUpItems {\n return element instanceof SwipeUpItems;\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n onStart() {}\n onStop() {}\n handleClick(): boolean {\n return false;\n }\n\n get elementNodeRef(): HTMLElement {\n return this._elementNodeRef;\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetTest } from \"../../widgets/test\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class Test implements IElement {\n private static readonly _className = \"narrative-element-test\";\n\n public static className(): string {\n return Test._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _widgetApi: typeof WidgetTest.api\n ) {}\n\n public static isTypeOf(element: IElement): element is Test {\n return element instanceof Test;\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n try {\n this._widgetApi.init(this._elementNodeRef, localData);\n } catch (e) {\n console.error(e);\n }\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n handleClick(): boolean {\n return false;\n }\n\n get slideTestIsDone(): boolean {\n return this._widgetApi.slideTestIsDone(this._elementNodeRef);\n }\n\n get slideTestWithTimer(): boolean {\n return this._widgetApi.slideTestWithTimer(this._elementNodeRef);\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetVote } from \"../../widgets/vote\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class Vote implements IElement {\n private static readonly _className = \"narrative-element-vote\";\n\n public static className(): string {\n return Vote._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _widgetApi: typeof WidgetVote.api\n ) {}\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n try {\n this._widgetApi.init(this._elementNodeRef, localData);\n } catch (e) {\n console.error(e);\n }\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n handleClick(): boolean {\n return false;\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class Text implements IElement {\n private static readonly _className = \"narrative-element-text\";\n\n public static className(): string {\n return Text._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer\n ) {}\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n onStart() {}\n onStop() {}\n handleClick(): boolean {\n return false;\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","export const waitForImageHtmlElementLoad = async (nodeRef: HTMLImageElement): Promise<HTMLImageElement> => {\n return new Promise((resolve, reject) => {\n const onLoad = function () {\n requestAnimationFrame(() =>\n requestAnimationFrame(() => {\n resolve(nodeRef);\n nodeRef.removeEventListener(\"load\", onLoad);\n })\n );\n };\n nodeRef.addEventListener(\"load\", onLoad);\n if (nodeRef.complete && 0 !== nodeRef.naturalHeight) {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n resolve(nodeRef);\n });\n });\n }\n nodeRef.addEventListener(\"error\", err => reject(err));\n });\n};\n\nexport const waitForVideoHtmlElementLoad = async (nodeRef: HTMLVideoElement): Promise<HTMLVideoElement> => {\n return new Promise((resolve, reject) => {\n if (void 0 !== nodeRef.oncanplaythrough) {\n const onCanplaythrough = () => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n resolve(nodeRef);\n nodeRef.removeEventListener(\"canplaythrough\", onCanplaythrough);\n });\n });\n };\n nodeRef.addEventListener(\"canplaythrough\", onCanplaythrough);\n nodeRef.load();\n } else {\n var onCanPlay = function () {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n resolve(nodeRef);\n nodeRef.removeEventListener(\"canplay\", onCanPlay);\n });\n });\n };\n nodeRef.addEventListener(\"canplay\", onCanPlay);\n nodeRef.load();\n }\n });\n};\n\nexport function htmlEncode(s: string): string {\n return s.replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/'/g, \"'\").replace(/\"/g, \""\");\n}\n\nexport function addClass(target: HTMLElement, className: string): void {\n if (classList(target).indexOf(className) === -1) {\n target.className += \" \" + className;\n }\n}\n\nexport function removeClass(target: HTMLElement, className: string): void {\n var list = classList(target);\n var index = list.indexOf(className);\n if (index !== -1) {\n delete list[index];\n target.className = list.join(\" \");\n }\n}\n\nfunction classList(target: HTMLElement): Array<string> {\n if (target.classList !== undefined) {\n return Array.prototype.slice.call(target.classList);\n }\n return target.className.split(\" \");\n}\n\nexport function hasClass(target: HTMLElement, className: string): boolean {\n return classList(target).indexOf(className) !== -1;\n}\n\nexport function winWidth(): number {\n return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\n}\n\nexport function winHeight(): number {\n return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;\n}\n\nexport function isNumber(n: any): boolean {\n return typeof n === \"number\" && !isNaN(n);\n}\n\nexport function isObject(value: any): boolean {\n let type = typeof value;\n return value != null && (type === \"object\" || type === \"function\");\n}\n\nexport function isString(value: any): boolean {\n let type = typeof value;\n return value != null && type === \"string\";\n}\n\nexport function isFunction(functionToCheck: any): string {\n let getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === \"[object Function]\";\n}\n","import { LocalData } from \"@layout\";\nimport { Layer } from \"../Layer\";\nimport { Utils } from \"../utils\";\nimport { IElement } from \"../IElement\";\nimport { ClickableBase } from \"./ClickableBase\";\n\nexport class Image extends ClickableBase implements IElement {\n private static readonly _className = \"narrative-element-image\";\n\n public static className(): string {\n return Image._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer\n ) {\n super(_elementNodeRef);\n const mediaElements = Array.from(this._elementNodeRef.querySelectorAll(\"img\"));\n this.mediaElementsLoadingPromises = mediaElements.map(Utils.waitForImageHtmlElementLoad);\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n return Promise.resolve(true);\n }\n\n onPause() {}\n\n onResume() {}\n\n onStart() {}\n\n onStop() {}\n\n handleClick(): boolean {\n return false;\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class SwipeUp implements IElement {\n private static readonly _className = \"narrative-element-swipe-up\";\n\n public static className(): string {\n return SwipeUp._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer\n ) {}\n\n public static isTypeOf(element: IElement): element is SwipeUp {\n return element instanceof SwipeUp;\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n init(localData: LocalData): Promise<boolean> {\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n onStart() {}\n onStop() {}\n\n handleClick(): boolean {\n return false;\n }\n\n get elementNodeRef(): HTMLElement {\n return this._elementNodeRef;\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { SDKApi } from \"@skd_api\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\nimport { Utils } from \"../utils\";\nimport { type Player as VideoPlayer } from \"@inappstory/video-player\";\n\nexport class Video implements IElement {\n private static readonly _className = \"narrative-element-video\";\n\n public static className(): string {\n return Video._className;\n }\n\n private readonly _video: HTMLVideoElement;\n private readonly _isVOD: boolean = false;\n private readonly _vodData: Record<string, any>;\n private _vodPlayerInstance: VideoPlayer | null = null;\n private _videoStateAdapter: VideoStateAdapter | null = null;\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _VideoPlayer: typeof VideoPlayer | undefined,\n private readonly _sdkApi: SDKApi\n ) {\n const _video = this._elementNodeRef.querySelector(\"video\");\n if (!_video) {\n return;\n }\n this._video = _video;\n\n // _video.addEventListener(\"canplay\", () => console.log(\"canplay\", true));\n // _video.addEventListener(\"complete\", () => console.log(\"complete\", true));\n // _video.addEventListener(\"emptied\", () => console.log(\"emptied\", true));\n // _video.addEventListener(\"ended\", () => console.log(\"ended\", true));\n // _video.addEventListener(\"pause\", () => console.log(\"pause\", true));\n // _video.addEventListener(\"play\", () => console.log(\"play\", true));\n // _video.addEventListener(\"playing\", () => console.log(\"playing\", true));\n // _video.addEventListener(\"progress\", () => console.log(\"progress\", true));\n // _video.addEventListener(\"seeked\", () => console.log(\"seeked\", true));\n // _video.addEventListener(\"seeking\", () => console.log(\"seeking\", true));\n // _video.addEventListener(\"stalled\", () => console.log(\"stalled\", true));\n // _video.addEventListener(\"suspend\", () => console.log(\"suspend\", true));\n // _video.addEventListener(\"waiting\", () => console.log(\"waiting\", true));\n\n // _video.addEventListener(\"timeupdate\", (e) => console.log(`timeupdate: ${e.timeStamp}`, true));\n // _video.addEventListener(\"timeupdate\", (e) =>_log(`timeupdate: ${e.timeStamp}`, true));\n\n const mediaImageElements = Array.from(this._elementNodeRef.querySelectorAll(\"img\"));\n this.mediaElementsLoadingPromises = mediaImageElements.map(Utils.waitForImageHtmlElementLoad);\n\n this._elementNodeRef.classList.add(\"init\");\n if (this._video.getAttribute(\"data-default-muted\") == null) {\n this._video.setAttribute(\"data-default-muted\", this._video.muted ? \"1\" : \"0\");\n }\n\n const vodData_ = this._video.getAttribute(\"data-vod\");\n if (vodData_ != null) {\n try {\n this._vodData = this._convertMpdUrls(JSON.parse(vodData_));\n } catch (e) {\n console.error(e);\n }\n }\n\n this._isVOD = Boolean(this._vodData != null && this._VideoPlayer != null);\n\n if (this._isVOD) {\n this.mediaElementsLoadingPromises.push(this._initVOD(this._vodData));\n } else {\n this.mediaElementsLoadingPromises.push(Utils.waitForVideoHtmlElementLoad(this._video));\n }\n\n // console.log({mediaElementsLoadingPromises: this.mediaElementsLoadingPromises})\n }\n\n public static isTypeOf(element: IElement): element is Video {\n return element instanceof Video;\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n return Promise.resolve(true);\n }\n\n private _isScreenOnPause = false;\n\n onPause() {\n this._isScreenOnPause = true;\n }\n\n onResume() {\n this._isScreenOnPause = false;\n }\n\n onStart() {}\n onStop() {}\n\n private _initVOD(vodData: Record<string, any>): Promise<HTMLVideoElement> {\n const onWaiting = () => {\n /**\n * When screen on pause - ignore onWaiting\n * (triggered when video paused, not only when canplay = false)\n */\n if (this._isScreenOnPause) {\n return;\n }\n\n // console.log(\"onWaiting\")\n // @ts-ignore\n // _log(\"waiting\", true);\n this._video.setAttribute(\"data-waiting\", \"1\");\n // @ts-ignore\n // _log(`waiting: ${this._video.currentTime}`, true);\n this._layer.timeline.onSlideDataWaiting(this._video.currentTime * 1000);\n // window.synthErrorId = setTimeout(synthError, 15000);\n };\n // this._video.addEventListener(\"waiting\", onWaiting);\n\n const onPlaying = () => {\n // console.log(\"onPlaying\");\n // _log(\"playing\", true);\n // TODO via class instead of data attr\n if (this._video.getAttribute(\"data-waiting\") === \"1\") {\n this._video.setAttribute(\"data-waiting\", \"0\");\n this._layer.timeline.slideResumed(this._video.currentTime * 1000);\n // @ts-ignore\n // _log(`playing: ${this._video.currentTime}`, true);\n // clearTimeout(window.synthErrorId);\n }\n };\n // this._video.addEventListener(\"playing\", onPlaying);\n this._videoStateAdapter = new VideoStateAdapter(this._video, onWaiting, onPlaying);\n\n // @ts-ignore\n // this._video.addEventListener(\"timeupdate\", (e) =>_log(`timeupdate: ${e.timeStamp}`, true));\n // this._video.addEventListener(\"timeupdate\", (e) =>console.log(`timeupdate: ${e.timeStamp}: ${this._video.currentTime}`));\n\n return new Promise((resolve, reject) => {\n // console.log(`initVoD slide idx: ${this._layer.slideIndex}`);\n\n // console.log(\"_initVOD 1\");\n\n // @ts-ignore\n if (this._VideoPlayer != null && this._VideoPlayer.isBrowserSupported() && (\"MediaSource\" in window || \"ManagedMediaSource\" in window)) {\n const player = new this._VideoPlayer();\n\n // console.log(\"_initVOD 2\");\n\n // @ts-ignore\n const onErrorEvent = event => {\n // Extract the PlayerError object from the event.\n onError(event.detail);\n };\n\n // @ts-ignore\n player.addEventListener(\"error\", onErrorEvent);\n\n // @ts-ignore\n const onError = error => {\n // Log the error.\n console.error(\"Error code\", error.code, \"object\", error);\n\n // _log(`video error: ${video.currentTime} code: ${error.code}`, true);\n\n if (this._video.paused) {\n this._layer.stopInternal();\n this._layer.timeline.onSlideError(this._video.currentTime * 1000);\n }\n };\n\n // console.log(\"_initVOD 3\");\n player.attach(this._video).then(() => {\n // console.log(\"_initVOD 4\");\n try {\n player\n // @ts-ignore\n .load(this._VideoPlayer.convertJsonToUri(vodData), 0, \"application/json\")\n .then(() => {\n // console.log(\"_initVOD 5\");\n this._vodPlayerInstance = player;\n\n // This runs if the asynchronous load is successful.\n resolve(this._video);\n })\n .catch(reason => {\n // console.log(\"_initVOD 6\", reason);\n\n // onError is executed if the asynchronous load fails.\n reject(reason);\n onError(reason);\n });\n } catch (e) {\n // onError is executed if the asynchronous load fails.\n reject(e);\n onError(e);\n }\n });\n } else {\n // use default (not mpd) video stream\n // console.error(\"Browser not supported!\");\n // get std video stream\n let src = \"\";\n if (vodData && vodData.formats != null && Array.isArray(vodData.formats) && vodData.formats.length > 0) {\n src = vodData.formats[0].url;\n this._video.src = src;\n resolve(this._video);\n } else {\n reject(\"Empty formats list\");\n }\n }\n });\n }\n\n private _convertMpdUrls(mpd_: Record<string, any>): Record<string, any> {\n if (this._sdkApi.isWeb) {\n return mpd_;\n }\n if (Utils.isObject(mpd_) && mpd_.adaptiveFormats != null && Array.isArray(mpd_.adaptiveFormats)) {\n const mpd = { ...mpd_ };\n for (let i = 0; i < mpd.adaptiveFormats.length; ++i) {\n mpd.adaptiveFormats[i].url = `${this._sdkApi.isAndroid ? `http://vod-asset/` : `vod-asset://`}${mpd.adaptiveFormats[i].cacheName}`;\n }\n return mpd;\n }\n return mpd_;\n }\n\n handleClick(): boolean {\n return false;\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n\n private _videoStartedPromise: Promise<{ currentTime: number }> | null = null;\n public get videoStartedPromise() {\n return this._videoStartedPromise;\n }\n\n public start(muted = true): Promise<{ currentTime: number }> {\n this._videoStartedPromise = new Promise(async resolve => {\n // invariant - always wait for mediaElementsLoadingPromises\n // else call of _initVOD can start and onAllMediaLoaded failed\n // TODO - add for all Elements state invariant protection\n Promise.all(this.mediaElementsLoadingPromises).finally(async () => {\n if (this._video) {\n if (this._isVOD && this._vodPlayerInstance === null) {\n // console.log(\"_initVOD 5.1\");\n await this._initVOD(this._vodData);\n }\n\n // console.log(\"Video:start => this._video.pause()\");\n this._video.pause();\n this._video.currentTime = 0;\n\n // remove init class\n // if vod - create VoD player\n\n if (this._video.getAttribute(\"data-default-muted\") !== \"1\") {\n this._video.muted = muted;\n }\n\n const playPromise = this._video.play();\n if (playPromise != null) {\n playPromise\n .then(() => {\n this._video.currentTime = 0;\n this._elementNodeRef.classList.remove(\"init\");\n resolve({\n currentTime: this._video.currentTime,\n });\n })\n .catch(error => {\n console.error(error);\n resolve({\n currentTime: this._video.currentTime,\n });\n });\n } else {\n setTimeout(() => {\n this._video.currentTime = 0;\n this._elementNodeRef.classList.remove(\"init\");\n resolve({\n currentTime: this._video.currentTime,\n });\n }, 0);\n }\n } else {\n resolve({\n currentTime: 0,\n });\n }\n });\n });\n\n return this._videoStartedPromise;\n }\n\n public pause(resetVideoTime = false): number | null {\n if (this._video) {\n // console.trace(\"Video pause\");\n this._video.pause();\n if (resetVideoTime) {\n this._video.currentTime = 0;\n }\n return this._video.currentTime;\n }\n return null;\n }\n\n public async resume(): Promise<{ currentTime: number }> {\n this._videoStartedPromise = new Promise((resolve, reject) => {\n // _log(\"video before resume: \" + video.currentTime);\n const ts = this._video.currentTime;\n if (!this._video.paused) {\n // console.log(\"Video:resume => this._video.pause()\");\n this._video.pause();\n }\n const playPromise = this._video.play();\n // console.log({ playPromise });\n if (playPromise != null) {\n playPromise\n .then(() => {\n // console.log(\"resolve 1\");\n if (this._video.currentTime < ts) {\n // console.log(\"resolve 1.1\", { ts });\n this._video.currentTime = ts;\n }\n\n resolve({ currentTime: this._video.currentTime });\n })\n .catch(error => {\n console.error(error);\n // console.log(\"error 1\");\n if (this._video.currentTime < ts) {\n this._video.currentTime = ts;\n }\n resolve({ currentTime: this._video.currentTime });\n });\n } else {\n setTimeout(() => {\n // console.log(\"resolve 2\");\n if (this._video.currentTime < ts) {\n this._video.currentTime = ts;\n }\n resolve({ currentTime: this._video.currentTime });\n }, 0);\n }\n });\n return this._videoStartedPromise;\n }\n\n public async stop() {\n if (this._video) {\n // console.log(\"Video:stop => this._video.pause()\");\n this._video.pause();\n }\n if (this._vodPlayerInstance) {\n setTimeout(async () => {\n // destroy VOD on slideStop with timeout, bcz on Android flashes white screen on several frames (if destroy without timeout)\n if (this._vodPlayerInstance) {\n try {\n // show poster\n this._elementNodeRef.classList.add(\"init\");\n if (this._videoStateAdapter) {\n this._videoStateAdapter.destroy();\n this._videoStateAdapter = null;\n }\n await this._vodPlayerInstance.detach();\n await this._vodPlayerInstance.destroy();\n // clean up - so we can reinit on slide start, id need it\n this._vodPlayerInstance = null;\n } catch (e) {\n console.error(e);\n }\n }\n }, 100);\n }\n }\n\n public enableAudio() {\n if (this._video.getAttribute(\"data-default-muted\") !== \"1\") {\n this._video.muted = false;\n }\n }\n public disableAudio() {\n if (this._video.getAttribute(\"data-default-muted\") !== \"1\") {\n this._video.muted = true;\n }\n }\n}\n\n/**\n * iOS Safari\n * sends playing event after waiting event when Video is in waiting state\n */\nconst enum VIDEO_STATE {\n UNKNOWN,\n PLAYING,\n WAITING,\n}\n\n// class VideoStateAdapter {\n//\n// // все же следить по timeupdate\n//\n// constructor(private readonly _video: HTMLVideoElement, private readonly _onWaitingCb: () => void, private readonly _onPlayingCb: () => void) {\n// this._video.addEventListener(\"playing\", () => this._onPlaying());\n// this._video.addEventListener(\"waiting\", () => this._onWaiting());\n// }\n//\n// private _state = VIDEO_STATE.WAITING;\n//\n// private _onWaiting() {\n// if (this._playingCheckerId != null) {\n// window.clearTimeout(this._playingCheckerId);\n// }\n// this._state = VIDEO_STATE.WAITING;\n// this._triggerUpdate();\n// }\n//\n// // in ms\n// private _latestPlayingStamp: number = 0;\n// private _latestPlayingDateStamp: number = new Date().getTime();\n// private _playingCheckerId: number = null!;\n//\n// private _onPlaying() {\n// this._state = VIDEO_STATE.PLAYING;\n// if (this._playingCheckerId != null) {\n// window.clearTimeout(this._playingCheckerId);\n// }\n// this._latestPlayingStamp = this._video.currentTime * 1000;\n// this._latestPlayingDateStamp = new Date().getTime();\n// this._triggerUpdate();\n//\n// // если через 100ms не время не изменится - встаем на паузу\n// // если до исполнения таймера были другие события - то отменять таймер\n// this._playingCheckerId = window.setTimeout(() => {\n// const currentTime = this._video.currentTime * 1000;\n// const diff = currentTime - this._latestPlayingStamp;\n//\n// const timeSpent = new Date().getTime() - this._latestPlayingDateStamp;\n//\n// // @ts-ignore\n// _log(`check, currentTime: ${currentTime}, latestPlayingStamp: ${this._latestPlayingStamp}, diff: ${diff}, timeSpent: ${timeSpent}`, true);\n// if (diff <= (timeSpent / 2)) {\n// this._state = VIDEO_STATE.WAITING;\n// this._triggerUpdate();\n// }\n// }, 100);\n// }\n//\n// private _triggerUpdate() {\n// if (this._state === VIDEO_STATE.PLAYING) {\n// this._onPlayingCb();\n// } else if (this._state === VIDEO_STATE.WAITING) {\n// this._onWaitingCb();\n// }\n// }\n// }\n\nclass VideoStateAdapter {\n // все же следить по timeupdate\n\n constructor(\n private readonly _video: HTMLVideoElement,\n private readonly _onWaitingCb: () => void,\n private readonly _onPlayingCb: () => void\n ) {\n // this._video.addEventListener(\"playing\", () => this._onPlaying());\n // this._video.addEventListener(\"waiting\", () => this._onWaiting());\n this._video.addEventListener(\"timeupdate\", this._onTimeupdateHandler);\n }\n\n destroy() {\n this._video.removeEventListener(\"timeupdate\", this._onTimeupdateHandler);\n }\n\n private _onTimeupdateHandler = this._onTimeupdate.bind(this);\n\n private _timeupdate = Date.now();\n private _state = VIDEO_STATE.UNKNOWN;\n // The event frequency is dependent on the system load, but will be thrown between about 4Hz and 66Hz (assuming the event handlers don't take longer than 250ms to run).\n private readonly _maxDiff = 300;\n private _waitingCheckerId: number = null!;\n private _playingCheckerId: number = null!;\n\n private _onTimeupdate() {\n this._timeupdate = Date.now();\n\n if (this._playingCheckerId != null) {\n window.clearTimeout(this._playingCheckerId);\n }\n\n if (this._state !== VIDEO_STATE.PLAYING) {\n this._state = VIDEO_STATE.PLAYING;\n this._triggerUpdate();\n }\n\n // todo - add debounce\n this._playingCheckerId = window.setTimeout(() => {\n if (Date.now() - this._timeupdate >= this._maxDiff / 2) {\n this._state = VIDEO_STATE.WAITING;\n this._triggerUpdate();\n }\n }, this._maxDiff);\n\n // if (this._state !== VIDEO_STATE.PLAYING) {\n // this._onPlaying();\n // }\n }\n\n private _onWaiting() {\n if (this._playingCheckerId != null) {\n window.clearTimeout(this._playingCheckerId);\n }\n\n // @ts-ignore\n // _log(`_onWaiting, _timeupdate: ${this._timeupdate}`, true);\n this._state = VIDEO_STATE.WAITING;\n this._triggerUpdate();\n }\n\n private _onPlaying() {\n if (this._playingCheckerId != null) {\n window.clearTimeout(this._playingCheckerId);\n }\n\n // @ts-ignore\n // _log(`_onPlaying, _timeupdate: ${this._timeupdate}`, true);\n this._playingCheckerId = window.setTimeout(() => {\n // @ts-ignore\n _log(`_onPlaying cb, _timeupdate: ${this._timeupdate}, now: ${Date.now()}, diff: ${Date.now() - this._timeupdate}`, true);\n if (Date.now() - this._timeupdate <= this._maxDiff / 2) {\n // @ts-ignore\n // _log(`_onPlaying if`, true);\n this._state = VIDEO_STATE.PLAYING;\n this._triggerUpdate();\n }\n }, this._maxDiff);\n\n // this._state = VIDEO_STATE.PLAYING;\n // if (this._playingCheckerId != null) {\n // window.clearTimeout(this._playingCheckerId);\n // }\n // this._latestPlayingStamp = this._video.currentTime * 1000;\n // this._latestPlayingDateStamp = new Date().getTime();\n // this._triggerUpdate();\n //\n // // если через 100ms не время не изменится - встаем на паузу\n // // если до исполнения таймера были другие события - то отменять таймер\n // this._playingCheckerId = window.setTimeout(() => {\n // const currentTime = this._video.currentTime * 1000;\n // const diff = currentTime - this._latestPlayingStamp;\n //\n // const timeSpent = new Date().getTime() - this._latestPlayingDateStamp;\n //\n // // @ts-ignore\n // _log(`check, currentTime: ${currentTime}, latestPlayingStamp: ${this._latestPlayingStamp}, diff: ${diff}, timeSpent: ${timeSpent}`, true);\n // if (diff <= (timeSpent / 2)) {\n // this._state = VIDEO_STATE.WAITING;\n // this._triggerUpdate();\n // }\n // }, 100);\n }\n\n private _triggerUpdate() {\n if (this._state === VIDEO_STATE.PLAYING) {\n this._onPlayingCb();\n } else if (this._state === VIDEO_STATE.WAITING) {\n this._onWaitingCb();\n }\n }\n}\n","import { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\nimport { Barcode } from \"./Barcode\";\nimport { Button } from \"./Button\";\nimport { Copy } from \"./Copy\";\nimport { DataInput } from \"./DataInput\";\nimport { DateCountdown } from \"./DateCountdown\";\nimport { Poll } from \"./Poll\";\nimport { PollLayers } from \"./PollLayers\";\nimport { Products } from \"./Products\";\nimport { Quest } from \"./Quest\";\nimport { Quiz } from \"./Quiz\";\nimport { QuizGrouped } from \"./QuizGrouped\";\nimport { RangeSlider } from \"./RangeSlider\";\nimport { Rate } from \"./Rate\";\nimport { Share } from \"./Share\";\nimport { SwipeUpItems } from \"./SwipeUpItems\";\nimport { Test } from \"./Test\";\nimport { Vote } from \"./Vote\";\nimport { Text } from \"./Text\";\nimport { Image } from \"./Image\";\nimport { SwipeUp } from \"./SwipeUp\";\nimport { Video } from \"./Video\";\n\n// export const tryCreateAtLayer = (layerNodeRef: HTMLElement): IElement {\n// const\n// }\n\n// args nodeRef, elementClassName\n\nexport const tryCreateFromHtmlElement = (nodeRef: HTMLElement, layer: Layer): IElement | null => {\n const layoutApi = layer.layoutService.layoutApi;\n const layersNodesRefs = layer.slide.layersNodesRefs;\n\n for (let elementClassName of nodeRef.classList.values()) {\n // console.log({ elementClassName });\n switch (elementClassName) {\n //////// base elements ///////\n case Text.className():\n return new Text(nodeRef, layer);\n case Button.className():\n return new Button(nodeRef, layer);\n case Image.className():\n return new Image(nodeRef, layer);\n case SwipeUp.className():\n return new SwipeUp(nodeRef, layer);\n case SwipeUpItems.className():\n return new SwipeUpItems(nodeRef, layer);\n case Video.className():\n return new Video(nodeRef, layer, layoutApi.VideoPlayer, layer.layoutService.sdkApi);\n //////// widgets ///////\n case Copy.className():\n return layoutApi.widgetCopyApi ? new Copy(nodeRef, layer, layoutApi.widgetCopyApi) : null;\n case Barcode.className():\n return layoutApi.widgetBarcodeApi ? new Barcode(nodeRef, layer, layoutApi.widgetBarcodeApi) : null;\n case DataInput.className():\n return layoutApi.widgetDataInputApi ? new DataInput(nodeRef, layer, layoutApi.widgetDataInputApi) : null;\n case DateCountdown.className():\n return layoutApi.widgetDateCountdownApi ? new DateCountdown(nodeRef, layer, layersNodesRefs, layoutApi.widgetDateCountdownApi) : null;\n case Poll.className():\n return layoutApi.widgetPollApi ? new Poll(nodeRef, layer, layoutApi.widgetPollApi) : null;\n case PollLayers.className():\n return layoutApi.widgetPollLayersApi ? new PollLayers(nodeRef, layer, layersNodesRefs, layoutApi.widgetPollLayersApi) : null;\n case Quest.className():\n return layoutApi.widgetQuestApi ? new Quest(nodeRef, layer, layoutApi.widgetQuestApi) : null;\n case Quiz.className():\n return layoutApi.widgetQuizApi ? new Quiz(nodeRef, layer, layoutApi.widgetQuizApi) : null;\n case QuizGrouped.className():\n return layoutApi.widgetQuizGroupedApi ? new QuizGrouped(nodeRef, layer, layoutApi.widgetQuizGroupedApi) : null;\n case RangeSlider.className():\n return layoutApi.widgetRangeSliderApi ? new RangeSlider(nodeRef, layer, layoutApi.widgetRangeSliderApi) : null;\n case Rate.className():\n return layoutApi.widgetRateApi ? new Rate(nodeRef, layer, layoutApi.widgetRateApi) : null;\n case Share.className():\n return layoutApi.widgetShareApi ? new Share(nodeRef, layer, layersNodesRefs, layoutApi.widgetShareApi) : null;\n case Test.className():\n return layoutApi.widgetTestApi ? new Test(nodeRef, layer, layoutApi.widgetTestApi) : null;\n case Vote.className():\n return layoutApi.widgetVoteApi ? new Vote(nodeRef, layer, layoutApi.widgetVoteApi) : null;\n case Products.className():\n return layoutApi.widgetProductsApi ? new Products(nodeRef, layer, layoutApi.widgetProductsApi) : null;\n default:\n break;\n }\n }\n return null;\n};\n\nexport * as WidgetFactory from \"./factory\";\n","import { container } from \"@composition\";\nimport { LayoutService } from \"../layout_service/layout_service\";\nimport { TIMELINE_ACTION } from \"./slide_timeline.h\";\nimport { DEFAULT_SLIDE_DURATION } from \"@skd_api\";\n\nenum TimelineDisabledState {\n disabled,\n enabled,\n}\n\n// use Promise\n// await Promise()\n// call timeLine api\n// promise - slideReadyPromise\n\nimport \"../../../global\";\n\nexport class SlideTimeline {\n constructor(\n private readonly slideIndex: number,\n private readonly slideDuration: number,\n private readonly slideDisabledTimer: boolean,\n private readonly slideReady: Promise<void>,\n private readonly _afterResumeQueuePush: (cb: () => void) => void\n ) {\n this.timelineDisabledState = this.slideDisabledTimer ? TimelineDisabledState.disabled : TimelineDisabledState.enabled;\n }\n\n private resumedAt = new Date().getTime();\n private timeSpent = 0;\n private timelineDisabledState: TimelineDisabledState;\n private currentState: TIMELINE_ACTION = TIMELINE_ACTION.STOP;\n\n public static get layoutService(): LayoutService {\n return container.get<LayoutService>();\n }\n\n private get layoutService(): LayoutService {\n return SlideTimeline.layoutService;\n }\n\n public get isSDKSupportUpdateTimeline() {\n if (SlideTimeline.layoutService.sdkApi.isAndroid) {\n return SlideTimeline.layoutService.env.Android && \"updateTimeline\" in SlideTimeline.layoutService.env.Android;\n } else if (SlideTimeline.layoutService.sdkApi.isIOS) {\n const mh = SlideTimeline.layoutService.env?.webkit?.messageHandlers ?? {};\n return \"updateTimeline\" in mh;\n } else {\n return false;\n }\n }\n\n public get index() {\n return this.slideIndex;\n }\n\n private async updateTimeline(action: TIMELINE_ACTION, showLoader = false, showError = false): Promise<void> {\n // два кейса\n // когда есть слои и у слоя вызываем showLayer который вызывает startTimer до старта слайда, потом start от sdk\n // в итоге два события вместо одного (баг)\n\n // второй кейс - когда заполнили виджет и он вызвал startDisabledTimer\n // в этом случае проверка стейта action === this.currentState не выполнит startTimer (баг)\n\n // можно сделать action_start_timer_disabeld и timer_enabled чтобы это было два разных состояния\n\n // if (action === this.currentState) {\n // return;\n // }\n\n this.currentState = action;\n\n let currentTime = this.timeSpent;\n let duration = this.slideDuration;\n\n // tmp\n // todo брать из модели\n if (!duration) {\n duration = DEFAULT_SLIDE_DURATION;\n }\n\n if (this.timelineDisabledState === TimelineDisabledState.disabled) {\n currentTime = 0;\n duration = 0;\n }\n\n if (currentTime > duration) {\n currentTime = duration;\n }\n\n //@ts-ignore\n // window._log(`updateTimeline 1, a: ${action} ct: ${currentTime} d: ${duration} tds: ${this.timelineDisabledState}`, true);\n\n await this.slideReady.then();\n\n //@ts-ignore\n // window._log(`updateTimeline, a: ${action} ct: ${currentTime} d: ${duration} tds: ${this.timelineDisabledState}`, true);\n // console.trace(`updateTimeline ${action} slideIndex: ${this.slideIndex} currentTime:${currentTime} duration:${duration} tds: ${this.timelineDisabledState}`);\n SlideTimeline.layoutService.sdkApi.updateTimeline(this.slideIndex, action, currentTime, duration, showLoader, showError);\n }\n\n /**\n * Start timeline after slide started\n * Nothing do if old sdk\n */\n public slideStarted(): void {\n // console.trace(\"slideStarted\");\n if (this.isSDKSupportUpdateTimeline) {\n this.resumedAt = new Date().getTime();\n this.timeSpent = 0; // for case when instance exists, but we return to slide again\n this.updateTimeline(TIMELINE_ACTION.START);\n } else {\n // nothing to do\n }\n }\n\n public slideRestarted(): void {\n // console.trace(\"slideRestarted\");\n if (this.isSDKSupportUpdateTimeline) {\n this.resumedAt = new Date().getTime();\n this.timeSpent = 0;\n this.updateTimeline(TIMELINE_ACTION.START);\n } else {\n // nothing to do\n }\n }\n\n /**\n *\n */\n public slidePaused(videoCurrentTime: number | null) {\n // console.trace(\"slidePaused\");\n\n if (this.isSDKSupportUpdateTimeline) {\n if (videoCurrentTime != null) {\n this.timeSpent = Math.round(videoCurrentTime);\n } else {\n const globalCurrentTime = new Date().getTime();\n let spent = globalCurrentTime - this.resumedAt;\n this.timeSpent += spent;\n }\n\n this.updateTimeline(TIMELINE_ACTION.PAUSE);\n } else {\n this.layoutService.sdkApi.cardPausedCallback(videoCurrentTime);\n }\n }\n\n public slideResumed(videoCurrentTime: number | null) {\n // console.trace(\"slideResumed\");\n // @ts-ignore\n // window._log(`updateTimeline slideResumed ${videoCurrentTime}`, true);\n\n if (this.isSDKSupportUpdateTimeline) {\n if (videoCurrentTime != null) {\n this.timeSpent = Math.round(videoCurrentTime);\n }\n this.resumedAt = new Date().getTime();\n this.updateTimeline(TIMELINE_ACTION.START);\n } else {\n this.layoutService.sdkApi.cardResumedCallback(videoCurrentTime);\n }\n }\n\n public slideStopped() {\n // console.trace(\"slideStopped\");\n if (this.isSDKSupportUpdateTimeline) {\n this.updateTimeline(TIMELINE_ACTION.STOP);\n } else {\n }\n }\n\n /**\n * Update timer state (duration from 0 to actual value) and start timeline\n * used by widgets\n */\n public startDisabledTimeline(fallback: () => void) {\n // if app is paused (in background) - don't call start timeline (Android issues)\n // @ts-ignore\n // window._log(`Push startDisabledTimeline to queue at state: ${window.slideApi.state}, time: ${new Date().getTime()}`, true);\n this._afterResumeQueuePush(() => {\n // @ts-ignore\n // window._log(`Call startDisabledTimeline at state: ${window.slideApi.state}, time: ${new Date().getTime()}`, true);\n if (this.isSDKSupportUpdateTimeline) {\n this.timelineDisabledState = TimelineDisabledState.enabled;\n this.timeSpent = 0;\n this.updateTimeline(TIMELINE_ACTION.START);\n } else {\n // OLD SDK\n fallback();\n }\n });\n }\n\n public onSlideDataWaiting(videoCurrentTime: number | null) {\n // console.trace(\"onSlideDataWaiting\");\n // @ts-ignore\n // window._log(`updateTimeline onSlideDataWaiting ${videoCurrentTime}`, true);\n\n if (videoCurrentTime != null) {\n this.timeSpent = Math.round(videoCurrentTime);\n } else {\n const globalCurrentTime = new Date().getTime();\n let spent = globalCurrentTime - this.resumedAt;\n this.timeSpent += spent;\n }\n this.updateTimeline(TIMELINE_ACTION.PAUSE, true, false);\n }\n\n public onSlideError(videoCurrentTime: number | null) {\n // console.trace(\"onSlideError\");\n if (videoCurrentTime != null) {\n this.timeSpent = Math.round(videoCurrentTime);\n } else {\n const globalCurrentTime = new Date().getTime();\n let spent = globalCurrentTime - this.resumedAt;\n this.timeSpent += spent;\n }\n this.updateTimeline(TIMELINE_ACTION.STOP, false, true);\n }\n}\n","import { IAnimation } from \"@animation\";\nimport { container } from \"@composition\";\nimport { DEFAULT_SLIDE_DURATION, SDKApi } from \"@skd_api\";\nimport { CARD_TYPE } from \"../common_types.h\";\nimport { DataInput } from \"./elements/DataInput\";\nimport { WidgetFactory } from \"./elements/factory\";\nimport { Poll } from \"./elements/Poll\";\nimport { PollLayers } from \"./elements/PollLayers\";\nimport { Products } from \"./elements/Products\";\nimport { Quest } from \"./elements/Quest\";\nimport { Quiz } from \"./elements/Quiz\";\nimport { QuizGrouped } from \"./elements/QuizGrouped\";\nimport { RangeSlider } from \"./elements/RangeSlider\";\nimport { Rate } from \"./elements/Rate\";\nimport { Share } from \"./elements/Share\";\nimport { SwipeUp } from \"./elements/SwipeUp\";\nimport { SwipeUpItems } from \"./elements/SwipeUpItems\";\nimport { Test } from \"./elements/Test\";\nimport { Video } from \"./elements/Video\";\nimport { IElement } from \"./IElement\";\nimport { LocalData } from \"./layout.h\";\nimport { LayoutService } from \"./layout_service/layout_service\";\nimport { Slide } from \"./Slide\";\nimport { SlideTimeline } from \"./slide_timeline\";\nimport { Utils } from \"./utils\";\n\nexport class Layer {\n private readonly _slideIndex: number;\n private readonly _cardId: number;\n private readonly _cardType: CARD_TYPE;\n private readonly _slideCount: number;\n private readonly _duration: number;\n private readonly _disabledTimer: boolean;\n private readonly _disabledNavigation: boolean;\n private _elements: Array<IElement> = [];\n private readonly _timeline: SlideTimeline;\n\n constructor(\n private readonly _nodeRef: HTMLElement,\n private readonly _slide: Slide,\n private readonly _slideReadyPromise: Promise<void>,\n private readonly _afterResumeQueuePush: (cb: () => void) => void\n ) {\n this._slideIndex = parseInt(this._nodeRef.getAttribute(\"data-index\") ?? \"0\");\n this._cardId = parseInt(this._nodeRef.getAttribute(\"data-id\") ?? \"0\");\n this._cardType = parseInt(this._nodeRef.getAttribute(\"data-card-type\") ?? \"1\") || CARD_TYPE.STORY;\n this._slideCount = parseInt(this._nodeRef.getAttribute(\"data-slide-count\") ?? \"0\");\n this._duration = parseInt(this._nodeRef.getAttribute(\"data-duration\") ?? \"\") || DEFAULT_SLIDE_DURATION;\n this._disabledTimer = this._nodeRef.getAttribute(\"data-disable-timer\") === \"1\";\n this._disabledNavigation = this._nodeRef.getAttribute(\"data-disable-navigation\") === \"1\";\n this._timeline = new SlideTimeline(this._slideIndex, this._duration, this._disabledTimer, this._slideReadyPromise, this._afterResumeQueuePush);\n\n const _elementsNodes = this._nodeRef.querySelectorAll<HTMLElement>(\".narrative-slide-elements .narrative-element\");\n let layerWithWidgetQuest = false;\n _elementsNodes.forEach(item => {\n let element: IElement | null = WidgetFactory.tryCreateFromHtmlElement(item, this);\n if (element) {\n this._elements.push(element);\n if (element instanceof Quest) {\n layerWithWidgetQuest = true;\n }\n }\n });\n\n // console.log({ _elementsNodes }, this._elements);\n\n /**\n * Special behaviour for widget Quest\n * if current slide/layer without WidgetQuest element explicit but story has type Quest\n * - then init WidgetQuest with layer instead of WidgetQuest element (required for WidgetQuest slides navigation)\n */\n if (this.isQuest && !layerWithWidgetQuest && this.layoutService.layoutApi.widgetQuestApi != null) {\n this._elements.push(new Quest(this._nodeRef, this, this.layoutService.layoutApi.widgetQuestApi));\n }\n }\n\n public init(localData: LocalData): Array<Promise<boolean>> {\n if (this.sdkApi.isIOS || this.sdkApi.isAndroid) {\n this._nodeRef.classList.add(\"_app\");\n this.sdkApi.isIOS && this._nodeRef.classList.add(\"_isIos\");\n this.sdkApi.isAndroid && this._nodeRef.classList.add(\"_isAndroid\");\n }\n\n const promises = this._elements.map(element => element.init(localData));\n\n this._initTextElementAutoWidthCorrection();\n this._initTextFit();\n\n return promises;\n }\n\n get nodeRef(): HTMLElement {\n return this._nodeRef;\n }\n\n get elements(): Array<IElement> {\n return this._elements;\n }\n\n get slide(): Slide {\n return this._slide;\n }\n\n get timeline(): SlideTimeline {\n return this._timeline;\n }\n\n public get layoutService(): LayoutService {\n return container.get<LayoutService>();\n }\n\n public get sdkApi(): SDKApi {\n return container.get<SDKApi>();\n }\n\n public getLocalData(): Promise<LocalData> {\n return this.layoutService.sdkApi.getCardLocalData();\n }\n\n public get isQuest(): boolean {\n return this._nodeRef.getAttribute(\"data-quest-count\") != null;\n }\n\n private _initTextFit(): void {\n const textLines = Array.prototype.slice.call(this._nodeRef.querySelectorAll(\".narrative-element-text-wrapper>.narrative-element-text-lines\"));\n TextFit(textLines, {});\n }\n\n private _initTextElementAutoWidthCorrection(): void {\n const textLines = this._nodeRef.querySelectorAll<HTMLElement>(\".narrative-element-text-wrapper>.narrative-element-text-lines\");\n for (const item of textLines) {\n if (item.parentElement) {\n new TextElementAutoWidthCorrection(item.parentElement);\n }\n }\n }\n\n public get slideIndex(): number {\n return this._slideIndex;\n }\n\n public get cardId(): number {\n return this._cardId;\n }\n\n public get cardType(): CARD_TYPE {\n return this._cardType;\n }\n\n public get slideCount(): number {\n return this._slideCount;\n }\n\n public get disabledNavigation(): boolean {\n return this._disabledNavigation;\n }\n\n public get videoElement(): Video | null {\n for (const element of this._elements) {\n if (Video.isTypeOf(element)) {\n return element;\n }\n }\n return null;\n }\n\n public get rangeSliderElement(): RangeSlider | null {\n for (const element of this._elements) {\n if (RangeSlider.isTypeOf(element)) {\n return element;\n }\n }\n return null;\n }\n\n public get quizElement(): Quiz | null {\n for (const element of this._elements) {\n if (Quiz.isTypeOf(element)) {\n return element;\n }\n }\n return null;\n }\n\n public get quizGroupedElement(): QuizGrouped | null {\n for (const element of this._elements) {\n if (QuizGrouped.isTypeOf(element)) {\n return element;\n }\n }\n return null;\n }\n\n public get questElement(): Quest | null {\n for (const element of this._elements) {\n if (Quest.isTypeOf(element)) {\n return element;\n }\n }\n return null;\n }\n\n public get testElement(): Test | null {\n for (const element of this._elements) {\n if (Test.isTypeOf(element)) {\n return element;\n }\n }\n return null;\n }\n\n public get dataInputElement(): DataInput | null {\n for (const element of this._elements) {\n if (DataInput.isTypeOf(element)) {\n return element;\n }\n }\n return null;\n }\n\n public get pollElement(): Poll | null {\n for (const element of this._elements) {\n if (Poll.isTypeOf(element)) {\n return element;\n }\n }\n return null;\n }\n\n public get pollLayersElement(): PollLayers | null {\n for (const element of this._elements) {\n if (PollLayers.isTypeOf(element)) {\n return element;\n }\n }\n return null;\n }\n\n public get rateElement(): Rate | null {\n for (const element of this._elements) {\n if (Rate.isTypeOf(element)) {\n return element;\n }\n }\n return null;\n }\n\n public get shareElement(): Share | null {\n for (const element of this._elements) {\n if (Share.isTypeOf(element)) {\n return element;\n }\n }\n return null;\n }\n\n public get swipeUpElement(): SwipeUp | null {\n for (const element of this._elements) {\n if (SwipeUp.isTypeOf(element)) {\n return element;\n }\n }\n return null;\n }\n\n public get swipeUpItemsElement(): SwipeUpItems | null {\n for (const element of this._elements) {\n if (SwipeUpItems.isTypeOf(element)) {\n return element;\n }\n }\n return null;\n }\n\n public get productsElement(): Products | null {\n for (const element of this._elements) {\n if (Products.isTypeOf(element)) {\n return element;\n }\n }\n return null;\n }\n\n public isClickCapturedBySlider(): boolean {\n return (this.rangeSliderElement?.isClickCapturedBySlider ?? false) || (this.productsElement?.isClickCapturedByWidget ?? false);\n }\n\n private _animationPauseCb: ReturnType<IAnimation[\"start\"]>;\n private _animationResumeCb: () => void;\n\n public async start(muted = true): Promise<{ currentTime: number }> {\n const videoElement = this.videoElement;\n let currentTime = 0;\n if (videoElement != null) {\n currentTime = (await videoElement.start(muted)).currentTime;\n }\n\n if (this.sdkApi.cardAnimation) {\n this._animationPauseCb = this.sdkApi.cardAnimation.start(this._nodeRef);\n }\n\n for (const element of this._elements) {\n element.onStart();\n }\n\n for (const element of this._elements) {\n element.onResume();\n }\n\n // skip start timeline if we returned to slide with enabled timer and opened WidgetProducts modal\n if (!this.isLayerForcePaused) {\n this.timeline.slideStarted();\n }\n\n return { currentTime };\n }\n\n public async stop() {\n this.videoElement?.stop();\n this.sdkApi.cardAnimation?.stop(this._nodeRef);\n for (const element of this._elements) {\n element.onPause();\n }\n for (const element of this._elements) {\n element.onStop();\n }\n this._timeline.slideStopped();\n }\n\n public stopInternal() {\n this.videoElement?.stop();\n this.sdkApi.cardAnimation?.stop(this._nodeRef);\n for (const element of this._elements) {\n element.onPause();\n }\n for (const element of this._elements) {\n element.onStop();\n }\n }\n\n public async pause(resetVideoTime = false, stopAnimation = false): Promise<{ currentTime: number | null }> {\n return new Promise(resolve => {\n const cb = () => {\n let currentTime: number | null = this.videoElement?.pause(resetVideoTime) ?? null;\n\n if (stopAnimation) {\n this.sdkApi.cardAnimation?.stop(this._nodeRef);\n } else {\n if (this._animationPauseCb != null && Utils.isFunction(this._animationPauseCb)) {\n this._animationResumeCb = this._animationPauseCb(false);\n }\n }\n\n if (currentTime != null) {\n currentTime *= 1000;\n }\n\n for (const element of this._elements) {\n element.onPause();\n }\n\n this.timeline.slidePaused(currentTime);\n\n resolve({ currentTime });\n };\n\n const videoStartedPromise = this.videoElement?.videoStartedPromise;\n if (videoStartedPromise != null && videoStartedPromise.then != null) {\n videoStartedPromise.then(cb);\n } else {\n cb();\n }\n });\n }\n\n public async resume() {\n return new Promise(resolve => {\n const cb = ({ currentTime }: { currentTime: number | null }) => {\n // console.log(\"resumed cb with currentTime\", { currentTime });\n\n if (currentTime != null) {\n currentTime *= 1000;\n }\n\n if (Utils.isFunction(this._animationResumeCb)) {\n this._animationResumeCb();\n }\n\n for (const element of this._elements) {\n element.onResume();\n }\n\n this.timeline.slideResumed(currentTime);\n\n resolve({ currentTime });\n };\n\n const videoStartedPromise = this.videoElement?.resume();\n if (videoStartedPromise != null && videoStartedPromise.then != null) {\n videoStartedPromise.then(cb);\n } else {\n cb({ currentTime: null });\n }\n });\n }\n\n public enableAudio() {\n this.videoElement?.enableAudio();\n }\n\n public disableAudio() {\n this.videoElement?.disableAudio();\n }\n\n public get isLayerForcePaused(): boolean {\n return this.elements.some(element => element.isLayerForcePaused);\n }\n}\n\nconst TextFit = (function () {\n \"use strict\";\n\n const defaultSettings = {\n step: 1,\n maxSteps: 100,\n };\n\n const hasOwnProperty = Object.prototype.hasOwnProperty;\n\n return function textFit(els: Array<HTMLElement>, options: Record<string, any>) {\n if (!options) options = {};\n\n // Extend options.\n let settings = {};\n for (let key in defaultSettings) {\n if (hasOwnProperty.call(options, key)) {\n // @ts-ignore\n settings[key] = options[key];\n } else {\n // @ts-ignore\n settings[key] = defaultSettings[key];\n }\n }\n\n // Support passing a single el\n let elType = Object.prototype.toString.call(els);\n if (elType !== \"[object Array]\" && elType !== \"[object NodeList]\" && elType !== \"[object HTMLCollection]\") {\n // @ts-ignore\n els = [els];\n }\n\n // Process each el we've passed.\n for (let i = 0; i < els.length; i++) {\n processItem(els[i], settings);\n }\n };\n\n function processItem(el: HTMLElement, settings: Record<string, any>) {\n if (!isElement(el) || el.getAttribute(\"textFitted\")) {\n return false;\n }\n\n let parentHeight, parent;\n let low, high;\n\n parent = el.parentElement;\n if (!isElement(parent)) {\n return false;\n }\n\n // Get element data.\n parentHeight = innerHeight(parent);\n\n // Don't process if we can't find box dimensions\n if (parentHeight <= 0) {\n console.warn(`Set a static height and width on the target element ${el.outerHTML} before using textFit!`, el);\n return;\n }\n\n // Set textFitted attribute so we know this was processed.\n el.setAttribute(\"textFitted\", \"1\");\n\n let step = settings.step;\n\n high = parseFloat(window.getComputedStyle(el).fontSize);\n low = high - step * settings.maxSteps;\n let size = high;\n if (size < low) return;\n while (size >= low) {\n let elBoundingClientRect = el.getBoundingClientRect();\n if (elBoundingClientRect.height > parentHeight) {\n size -= step;\n el.style.fontSize = size + \"px\";\n } else {\n break;\n }\n }\n }\n\n // Calculate height without padding.\n // @ts-ignore\n function innerHeight(el) {\n let style = window.getComputedStyle(el, null);\n return el.getBoundingClientRect().height - parseInt(style.getPropertyValue(\"padding-top\"), 10) - parseInt(style.getPropertyValue(\"padding-bottom\"), 10);\n }\n\n //Returns true if it is a DOM element\n // @ts-ignore\n function isElement(o) {\n return typeof HTMLElement === \"object\"\n ? o instanceof HTMLElement //DOM2\n : o && typeof o === \"object\" && o !== null && o.nodeType === 1 && typeof o.nodeName === \"string\";\n }\n})();\n\nclass TextElementAutoWidthCorrection {\n // wrapper (flex row)\n // lead | text | tail //\n // wrapper (flex row)\n\n // text - can be multiline, use overflow-wrap: anywhere - for overflow prevent\n // iOS 17.5 break text on second line despite on enough space\n // fix it - detect and set min-width + max-width for text element\n\n private readonly leadWidth: number = null!;\n private readonly tailWidth: number = null!;\n private columnGap: number = null!;\n private wrapperInnerWidth: number = null!;\n\n //Returns true if it is a DOM element\n // @ts-ignore\n private isElement(o: HTMLElement | Element): boolean {\n return typeof HTMLElement === \"object\"\n ? o instanceof HTMLElement //DOM2\n : o && typeof o === \"object\" && o !== null && o.nodeType === 1 && typeof o.nodeName === \"string\";\n }\n\n private computeWrapperSize(): void {\n const { columnGap, width, paddingLeft, paddingRight } = window.getComputedStyle(this.textWrapperRef, null);\n this.columnGap = parseFloat(columnGap);\n this.wrapperInnerWidth = parseFloat(width) - parseFloat(paddingLeft) - parseFloat(paddingRight);\n }\n\n private measureTextWidth(\n text: string,\n {\n fontSize,\n fontWeight,\n fontStyle,\n fontFamily,\n }: {\n fontSize: string;\n fontWeight: string;\n fontStyle: string;\n fontFamily: string;\n }\n ): number {\n let textRef = document.createElement(\"div\");\n\n textRef.style.setProperty(\"font-size\", fontSize);\n textRef.style.setProperty(\"font-weight\", fontWeight);\n textRef.style.setProperty(\"font-style\", fontStyle);\n textRef.style.setProperty(\"font-family\", fontFamily);\n textRef.style.setProperty(\"position\", \"absolute\");\n textRef.style.setProperty(\"left\", \"-1000px\");\n textRef.style.setProperty(\"top\", \"-1000px\");\n textRef.style.setProperty(\"white-space\", \"nowrap\");\n // textRef.style.setProperty(\"visibility\", \"hidden\");\n\n textRef.textContent = text;\n\n document.body.appendChild(textRef);\n\n const textWidth = parseFloat(window.getComputedStyle(textRef, null).width);\n\n document.body.removeChild(textRef);\n // @ts-ignore\n textRef = null;\n\n return textWidth;\n }\n\n constructor(private readonly textWrapperRef: HTMLElement) {\n const leadRef = textWrapperRef.querySelector<HTMLElement>(\".narrative-element-text-lines-lead\");\n const tailRef = textWrapperRef.querySelector<HTMLElement>(\".narrative-element-text-lines-tail\");\n const textRef = textWrapperRef.querySelector<HTMLElement>(\".narrative-element-text-lines\");\n\n if (leadRef && tailRef && textRef) {\n if (!this.isElement(textRef) || textRef.getAttribute(\"textWidthCorrected\")) {\n return;\n }\n\n // Set textFitted attribute so we know this was processed.\n textRef.setAttribute(\"textWidthCorrected\", \"1\");\n\n this.computeWrapperSize();\n this.leadWidth = leadRef.clientWidth;\n this.tailWidth = tailRef.clientWidth;\n\n const textMaxWidth =\n this.wrapperInnerWidth -\n this.leadWidth -\n this.columnGap * (this.leadWidth ? 1 : 0) -\n this.tailWidth -\n this.columnGap * (this.tailWidth ? 1 : 0);\n\n const { fontSize, fontFamily, fontWeight, fontStyle } = window.getComputedStyle(textRef, null);\n\n const textMinWidth = Math.min(\n this.measureTextWidth(textRef.textContent ?? \"\", {\n fontSize,\n fontFamily,\n fontWeight,\n fontStyle,\n }),\n textMaxWidth\n );\n\n // setTimeout(() => {\n // console.log({\n // textMaxWidth,\n // textMinWidth,\n // columnGap: this.columnGap,\n // leadWidth: this.leadWidth,\n // tailWidth: this.tailWidth,\n // wrapperInnerWidth: this.wrapperInnerWidth,\n // });\n // }, 10 * 1000);\n\n textRef.style.setProperty(\"min-width\", `${textMinWidth}px`);\n textRef.style.setProperty(\"max-width\", `${textMaxWidth}px`);\n }\n }\n}\n","import { container } from \"@composition\";\nimport { CARD_TYPE } from \"../common_types.h\";\nimport { Layer } from \"./Layer\";\nimport { LocalData } from \"./layout.h\";\nimport { LayoutService } from \"./layout_service/layout_service\";\n\nexport class Slide {\n private readonly _layers: Array<Layer>;\n private _start: number;\n\n constructor(\n private readonly _slidesNodesRefs: Array<HTMLElement>,\n private readonly _slideReadyPromise: Promise<void>,\n private readonly _afterResumeQueuePush: (cb: () => void) => void\n ) {\n this._start = window.performance.now();\n\n if (!this._slidesNodesRefs.length) {\n throw new Error(\"No slides found.\");\n }\n\n this._layers = this._slidesNodesRefs.map(item => new Layer(item, this, this._slideReadyPromise, this._afterResumeQueuePush));\n this._activeLayer = this._layers[0];\n }\n\n private _activeLayer: Layer;\n get activeLayer(): Layer {\n return this._activeLayer;\n }\n\n get layers(): Array<Layer> {\n return this._layers;\n }\n\n get layersNodesRefs(): Array<HTMLElement> {\n return this._slidesNodesRefs;\n // call from Slide CTOR -> exception, bcz this._layers is empty\n // return this._layers.map(layer => layer.nodeRef);\n }\n\n private _initMultiSlide(localData: LocalData): void {\n const multiSlideApi = this.layoutService.layoutApi.widgetMultiSlideApi;\n if (multiSlideApi != null && this.layers.length > 1) {\n try {\n multiSlideApi.init(this.layersNodesRefs, localData);\n } catch (e) {\n console.error(e);\n }\n }\n }\n\n public async init(localData: LocalData): Promise<boolean> {\n this._initMultiSlide(localData);\n\n const promises = this.layers.flatMap(layer => layer.init(localData));\n\n const res = await Promise.all(promises);\n\n // rescan current slide\n this.refreshActiveLayer();\n\n // if not all true - return false\n // if not all Widgets return finishRender: true - return false\n return !res.some(item => item === false);\n }\n\n public refreshActiveLayer(): void {\n this.layers.forEach(layer => {\n if (!layer.nodeRef.classList.contains(\"hidden\")) {\n this._activeLayer = layer;\n }\n });\n }\n\n public showLayer(showIndex: number, muted?: boolean): void {\n // todo allow to call only if Layer in state LAYER_STATE::STARTED\n\n // hotfix (VOD and showLayer issue) - just skip showLayer for already visible layer\n // if (this.layers[showIndex] != null && this.layers[showIndex].nodeRef != null && !this.layers[showIndex].nodeRef.classList.contains(\"hidden\")) {\n // console.log(\"hotfix (VOD and showLayer issue) - just skip showLayer for already visible layer\");\n // return;\n // }\n\n // console.log(`showLayer: ${showIndex}`);\n\n // first - stop (for correct timeline calls)\n this.layers.forEach((layer, index) => {\n // const isHidden = layer.nodeRef.classList.contains(\"hidden\");\n if (index !== showIndex) {\n layer.nodeRef.classList.add(\"hidden\");\n layer.stop();\n }\n });\n\n this.layers.forEach((layer, index) => {\n // const isHidden = layer.nodeRef.classList.contains(\"hidden\");\n if (index === showIndex) {\n this._activeLayer = layer;\n layer.nodeRef.classList.remove(\"hidden\");\n layer.start(muted);\n }\n });\n }\n\n public get layoutService(): LayoutService {\n return container.get<LayoutService>();\n }\n\n public get slideIndex(): number {\n return this._activeLayer.slideIndex;\n }\n public get cardId(): number {\n return this._activeLayer.cardId;\n }\n\n public get cardType(): CARD_TYPE {\n return this._activeLayer.cardType;\n }\n\n public get slideCount(): number {\n return this._activeLayer.slideCount;\n }\n\n public get disabledNavigation(): boolean {\n return this._activeLayer.disabledNavigation;\n }\n}\n","import { container } from \"@composition\";\nimport { FontDTO, SDKApi } from \"@skd_api\";\nimport { proxy } from \"@utils\";\nimport { CARD_TYPE } from \"../common_types.h\";\nimport { Layer } from \"./Layer\";\nimport { LocalData } from \"./layout.h\";\nimport { LayoutService } from \"./layout_service/layout_service\";\nimport { Slide } from \"./Slide\";\nimport { Utils } from \"./utils\";\n\nfunction getViewportWidth(viewport: Window): number {\n return viewport.innerWidth || viewport.document.documentElement.clientWidth || viewport.document.body.clientWidth;\n}\n\nfunction getViewportHeight(viewport: Window): number {\n return viewport.innerHeight || viewport.document.documentElement.clientHeight || viewport.document.body.clientHeight;\n}\n\nconst enum STATE {\n INIT,\n INITED,\n START,\n STARTED,\n RESUME,\n RESUMED,\n PAUSE,\n PAUSED,\n FORCE_PAUSED,\n STOP,\n STOPPED,\n}\n\nexport class SlideApi {\n public get layoutDirection(): \"ltr\" | \"rtl\" {\n // warning, detection in ctor not working, bcz sdk changes layout later\n return this.layoutService.env.getComputedStyle(this._slideWrapper).direction === \"rtl\" ? \"rtl\" : \"ltr\";\n }\n\n private static renderedBoxClassName = \"narrative-slide-box-rendered\";\n private static prerenderBoxClassName = \"narrative-slide-box-prerender\";\n\n private readonly _slideWrapper: HTMLElement;\n private readonly _viewport: Window;\n\n constructor(\n private readonly config: {\n slideWrapper: HTMLElement;\n viewport: Window;\n userResizeHandler?: (data: { viewportWidth: number; viewportHeight: number; fontSize: number }) => void;\n slideRatio: number;\n isFullscreen: boolean;\n slideLoadedCb?: (data: { slide: Slide; result: boolean; reason?: string }) => void;\n }\n ) {\n this._slideWrapper = config.slideWrapper;\n this._viewport = config.viewport;\n\n this.refreshSizes = proxy(this.refreshSizes, this);\n\n this.initListeners();\n\n this.refreshSizes();\n\n const slideBox = document.getElementById(\"narrative-slide-box\");\n // todo via first child and its innerText - faster variant\n if (slideBox && slideBox.innerText.trim() !== \"{%content}\".replace(\"{\", \"{{\").replace(\"}\", \"}}\")) {\n this._slideInInit = null;\n this._slideInRender = true;\n this._init(\n () => this._slideBoxRenderComplete(),\n () => this._slideBoxRenderError()\n ).then(({ slide, result, reason }) => {\n this._slide = slide;\n if (config.slideLoadedCb != null) {\n config.slideLoadedCb({ slide, result, reason });\n }\n });\n }\n }\n\n public destroy() {\n this.destroyListeners();\n }\n\n private initListeners(): void {\n this._viewport.addEventListener(\"resize\", this.refreshSizes);\n }\n\n private destroyListeners(): void {\n this._viewport.removeEventListener(\"resize\", this.refreshSizes);\n }\n\n private refreshSizes() {\n const viewportWidth = getViewportWidth(this._viewport);\n const viewportHeight = getViewportHeight(this._viewport);\n const viewportRatio = viewportWidth / viewportHeight;\n let slideWidth = 0;\n let slideHeight = 0;\n // _ratio = 310 / 480,\n const _ratio = this.config.slideRatio;\n let _isFullscreen = this.config.isFullscreen;\n const slideOffset = this._slideWrapper.querySelector<HTMLElement>(\".narrative-slide-offset\");\n let offset = 0;\n let xOffset = \"0px\";\n // for elements with bottom anchor (absolute position)\n let yOffset = \"0px\";\n\n // alert(viewportHeight);\n\n if (viewportRatio > _ratio) {\n // disable _isFullscreen if viewport small\n _isFullscreen = false;\n }\n\n if (_isFullscreen) {\n // fit by width, top and bottom - to offscreen or fill with bg image\n slideWidth = viewportWidth;\n slideHeight = Math.ceil(viewportWidth / _ratio);\n offset = Math.ceil(slideHeight - viewportHeight) / 2;\n\n if (slideOffset != null) {\n slideOffset.style.margin = -1 * offset + \"px\" + \" 0 \";\n }\n // offset from viewport bottom to StoryBottom plus safe area offset bottom\n yOffset = `calc(${offset}px + env(safe-area-inset-bottom))`;\n // detect safe area offset\n } else {\n // более квадратное чем надо\n if (viewportRatio > _ratio) {\n // fit by width, top and bottom - to offscreen\n slideWidth = viewportWidth;\n slideHeight = Math.ceil(viewportWidth / _ratio);\n offset = Math.ceil(slideHeight - viewportHeight) / 2;\n\n if (slideOffset != null) {\n slideOffset.style.margin = -offset + \"px\" + \" 0 \";\n }\n yOffset = offset + \"px\";\n } else {\n // вьюпорт более вытянутый чем надо\n // fit by height, sides - to offscreen\n slideHeight = viewportHeight;\n slideWidth = Math.ceil(slideHeight * _ratio);\n offset = Math.ceil(slideWidth - viewportWidth) / 2;\n if (slideOffset != null) {\n slideOffset.style.margin = \"0 \" + -offset + \"px\"; // -8.5\n }\n xOffset = offset + \"px\";\n }\n }\n\n const fontSize = slideWidth / 20;\n // todo CSP violation\n this._slideWrapper.style.fontSize = fontSize + \"px\";\n\n if (slideOffset != null) {\n // todo CSP violation\n slideOffset.style.setProperty(\"--y-offset\", yOffset);\n slideOffset.style.setProperty(\"--x-offset\", xOffset);\n }\n\n if (_isFullscreen) {\n slideOffset?.classList.add(\"narrative-slide-offset-fullscreen\");\n }\n\n if (this.config.userResizeHandler != null) {\n this.config.userResizeHandler({ viewportWidth, viewportHeight, fontSize });\n }\n }\n\n public async showSlide(html: string): Promise<{ slide: Slide; result: boolean; reason?: string }> {\n const slideBox = this._slideWrapper.querySelector(`.${SlideApi.renderedBoxClassName}`);\n const slideBoxPrerender = this._slideWrapper.querySelector(`.${SlideApi.prerenderBoxClassName}`);\n const _result: {\n slide: Slide;\n result: boolean;\n reason?: string;\n } = { slide: this.slide, result: false, reason: \"\" };\n\n if (slideBox && slideBoxPrerender) {\n if (this._slideInRender) {\n this._slideInRender = false;\n this._slideBoxRenderComplete();\n }\n\n this._slideInInit = null;\n this._slideInRender = true;\n\n slideBoxPrerender.innerHTML = html;\n const { slide, result, reason } = await this._init(\n () => this._slideBoxRenderComplete(),\n () => this._slideBoxRenderError()\n );\n this._slide = slide;\n _result.result = result;\n _result.reason = reason;\n }\n _result.slide = this.slide;\n return _result;\n }\n\n public handleBackpress(): void {\n this.activeLayer.productsElement?.handleBackpress();\n }\n\n private get layoutService(): LayoutService {\n return container.get<LayoutService>();\n }\n\n private getLocalData(): Promise<LocalData> {\n return this.layoutService.sdkApi.getCardLocalData();\n }\n\n private get sdkApi(): SDKApi {\n return container.get<SDKApi>();\n }\n\n private _fontsInit = false;\n\n private _initAndLoadFonts(fonts: Array<FontDTO>): Promise<void> {\n if (this._fontsInit) {\n return Promise.resolve();\n }\n return new Promise(resolve => {\n if (\"fonts\" in document) {\n // https://developer.mozilla.org/en-US/docs/Web/API/CSS_Font_Loading_API\n const promises: Array<Promise<FontFace>> = [];\n try {\n if (fonts != null && Array.isArray(fonts)) {\n for (let i = 0; i < fonts.length; i++) {\n const src = fonts[i];\n if (src && src.family && src.style && src.weight && src.url) {\n // var font = new FontFace(fonts[i].family, \"url(\" + src.url + \"&s=css_font_face)\", {\n const font = new FontFace(fonts[i].family, \"url(\" + src.url + \")\", {\n style: src.style,\n weight: src.weight,\n // display: \"block\"\n });\n document.fonts.add && document.fonts.add(font);\n promises.push(font.load());\n }\n }\n }\n\n this._fontsInit = true;\n Promise.all(promises)\n .then(_ => {\n resolve();\n })\n .catch(reason => {\n console.error(reason);\n resolve();\n });\n } catch (e) {\n console.error(e);\n resolve();\n }\n }\n });\n }\n\n private _slide: Slide;\n private _slideInInit: Slide | null;\n private _state: STATE;\n private _afterStartInitQueue: Array<() => void> = [];\n private _afterResumeQueue: Array<() => void> = [];\n\n public get state(): STATE {\n return this._state;\n }\n\n private async _onAllMediaLoaded(slide: Slide): Promise<void> {\n return new Promise((resolve, reject) => {\n const promises = slide.layers.flatMap(layer => layer.elements.flatMap(element => element.mediaElementsLoadingPromises));\n\n let checkerTimerId: number | undefined = undefined;\n let timeOutFired = false;\n if (promises.length > 0) {\n checkerTimerId = this.layoutService.env.setTimeout(() => {\n timeOutFired = true;\n reject(\"onAllMediaLoaded timeout\");\n }, 3000);\n } else {\n resolve();\n return;\n }\n Promise.all(promises).then(\n _ => {\n checkerTimerId && this.layoutService.env.clearTimeout(checkerTimerId);\n if (!timeOutFired) {\n resolve();\n }\n },\n reason => {\n checkerTimerId && this.layoutService.env.clearTimeout(checkerTimerId);\n if (!timeOutFired) {\n reject(reason);\n }\n }\n );\n });\n }\n\n private async _init(\n slideBoxCb: () => void,\n slideBoxFailedCb: () => void\n ): Promise<{\n slide: Slide;\n result: boolean;\n reason?: string;\n }> {\n this._state = STATE.INIT;\n\n const slideNodeRef = this._slideWrapper.querySelector(`.${SlideApi.prerenderBoxClassName} .narrative-slide`);\n const slidesNodesRefs = Array.prototype.slice.call(\n this._slideWrapper.querySelectorAll(`.${SlideApi.prerenderBoxClassName} .narrative-slide.narrative-multi-slide`)\n );\n\n if (!slidesNodesRefs.length && slideNodeRef != null) {\n slidesNodesRefs.push(slideNodeRef);\n }\n\n if (!slidesNodesRefs.length) {\n throw new Error(\"No slides found.\");\n }\n\n let slideReadyResolve: () => void = null!;\n let slideReadyReject: () => void = null!;\n const slideReadyPromise = new Promise<void>((resolve, reject) => {\n slideReadyResolve = resolve;\n slideReadyReject = reject;\n });\n\n const slide = new Slide(slidesNodesRefs, slideReadyPromise, this.afterResumeQueuePush.bind(this));\n this._slideInInit = slide;\n\n const onAllMediaLoaded = this._onAllMediaLoaded(slide);\n\n if (this.sdkApi.isAndroid) {\n this._afterStartInitQueue = [];\n }\n this._afterResumeQueue = [];\n\n const result: { slide: Slide; result: boolean; reason?: string } = { slide, result: false, reason: \"\" };\n\n await this._initAndLoadFonts(this.layoutService.sdkApi.getCardFonts());\n const localData = await this.getLocalData();\n const finishRender = await slide.init(localData);\n /**\n * если есть виджеты, которых надо ждать - то не завершаем рендеринг текущего слайда\n * пример - квест, если зашли в сторис а виджету нужно показать другой слайд вместо первого\n */\n if (finishRender) {\n this._state = STATE.INITED;\n\n try {\n await onAllMediaLoaded;\n result.result = true;\n slideBoxCb();\n this.layoutService.env.setTimeout(() => {\n slideReadyResolve();\n });\n } catch (reason) {\n console.log(\"SlideInit, onAllMediaLoaded reject\", reason);\n slideBoxFailedCb();\n this.layoutService.env.setTimeout(() => {\n slideReadyReject();\n });\n result.result = false;\n result.reason = String(reason);\n }\n } else {\n this._state = STATE.STOPPED;\n this.layoutService.env.setTimeout(() => {\n slideReadyResolve();\n });\n result.result = true;\n }\n\n return result;\n }\n\n private _slideInRender = false;\n\n private _slideBoxRenderComplete(): void {\n if (!this._slideInRender) {\n this._slideInRender = true;\n return;\n }\n const slideBox = this._slideWrapper.querySelector(`.${SlideApi.renderedBoxClassName}`);\n const slideBoxPrerender = this._slideWrapper.querySelector(`.${SlideApi.prerenderBoxClassName}`);\n\n if (slideBox && slideBoxPrerender) {\n slideBoxPrerender.classList.remove(SlideApi.prerenderBoxClassName);\n slideBox.classList.remove(SlideApi.renderedBoxClassName);\n\n slideBox.classList.add(SlideApi.prerenderBoxClassName);\n slideBox.innerHTML = \"\";\n slideBoxPrerender.classList.add(SlideApi.renderedBoxClassName);\n }\n this._slideInRender = false;\n }\n\n private _slideBoxRenderError(): void {\n // if (!slideInRender) {\n // slideInRender = true;\n // return;\n // }\n const slideBox = this._slideWrapper.querySelector(`.${SlideApi.renderedBoxClassName}`);\n const slideBoxPrerender = this._slideWrapper.querySelector(`.${SlideApi.prerenderBoxClassName}`);\n\n if (slideBox && slideBoxPrerender) {\n const slides = Array.prototype.slice.call(slideBoxPrerender.querySelectorAll(\".narrative-slide\"));\n for (let i = 0; i < slides.length; ++i) {\n const slide = slides[i];\n if (slide) {\n slide.innerHTML = \"\";\n }\n }\n\n slideBoxPrerender.classList.remove(SlideApi.prerenderBoxClassName);\n slideBox.classList.remove(SlideApi.renderedBoxClassName);\n\n slideBox.classList.add(SlideApi.prerenderBoxClassName);\n slideBox.innerHTML = \"\";\n slideBoxPrerender.classList.add(SlideApi.renderedBoxClassName);\n }\n // slideInRender = false;\n }\n\n private async _startVideo(cb: (data: { currentTime: number; slideIndex: number }) => void) {\n const videoElement = this.slide?.activeLayer?.videoElement;\n const videoStartedPromise = videoElement?.start(this._slideConfig.muted);\n\n if (videoStartedPromise) {\n videoStartedPromise.then(({ currentTime }) => {\n cb({ currentTime, slideIndex: this.slide?.slideIndex || 0 });\n });\n } else {\n cb({ currentTime: 0, slideIndex: this.slide?.slideIndex || 0 });\n }\n }\n\n private _slideConfig: { muted?: boolean } = {};\n\n public async slideStart(config: { muted?: boolean }): Promise<{ currentTime: number }> {\n // console.log(`slideStart slideIdx: ${this.activeLayer.slideIndex} state: ${this._state}`);\n if (!(this._state === STATE.STOPPED || this._state === STATE.INITED)) {\n return { currentTime: 0 };\n }\n this._state = STATE.START;\n\n this._slideConfig = config;\n\n // start deferred fncs from widgets\n // important - Android only\n if (this.sdkApi.isAndroid && this._afterStartInitQueue && Array.isArray(this._afterStartInitQueue)) {\n for (const job of this._afterStartInitQueue) {\n if (Utils.isFunction(job)) {\n job();\n }\n }\n this._afterStartInitQueue = [];\n }\n\n if (this._afterResumeQueue && Array.isArray(this._afterResumeQueue)) {\n for (const job of this._afterResumeQueue) {\n if (Utils.isFunction(job)) {\n job();\n }\n }\n this._afterResumeQueue = [];\n }\n\n const { currentTime } = await this.slide.activeLayer.start(this._slideConfig.muted);\n\n this._state = STATE.STARTED;\n\n if (this.slide.activeLayer.isLayerForcePaused) {\n this._state = STATE.PAUSED;\n }\n\n return { currentTime };\n }\n\n public async slideRestart(config: { muted?: boolean }): Promise<{ currentTime: number }> {\n this._state = STATE.STOPPED;\n return this.slideStart(config);\n }\n\n private _pauseCbTimer: number | null = null;\n\n public async slidePause() {\n if (!(this._state === STATE.STARTED || this._state === STATE.RESUMED)) {\n return;\n }\n\n // обход бага на андроиде (вызывает pause/resume при любом нажатии на экран, даже если это клик - для перехода по слайдам)\n // поэтому делаем отложенный вызов (300мс) а если следом приходит stop - то отменяем таймер\n\n const pauseCb = () => {\n if (!(this._state === STATE.STARTED || this._state === STATE.RESUMED)) {\n return;\n }\n\n if (this.slide.activeLayer.isClickCapturedBySlider()) {\n // stop pause event (from sdk) if _narrative_range_slider is active\n return;\n }\n\n this._state = STATE.PAUSE;\n\n // _log(\"pause: \" + (performance.now() - window.start));\n\n this.slide.activeLayer.pause(false, false);\n\n // clean up\n if (this._pauseCbTimer != null) {\n clearTimeout(this._pauseCbTimer);\n }\n\n this._state = STATE.PAUSED;\n };\n\n if (this.sdkApi.isAndroid) {\n this._pauseCbTimer = this.layoutService.env.setTimeout(pauseCb, 300);\n } else {\n pauseCb();\n }\n }\n\n public async slideResume() {\n if (this._pauseCbTimer != null) {\n // отменяем pause если есть (баг андроида - шлет pause/resume на простой клик)\n clearTimeout(this._pauseCbTimer);\n }\n\n if (this._state !== STATE.PAUSED) {\n return;\n }\n this._state = STATE.RESUME;\n // _log(\"resume: \" + (performance.now() - window.start));\n\n if (this._afterResumeQueue && Array.isArray(this._afterResumeQueue)) {\n for (const job of this._afterResumeQueue) {\n if (Utils.isFunction(job)) {\n job();\n }\n }\n this._afterResumeQueue = [];\n }\n\n this.slide.activeLayer.resume();\n\n this._state = STATE.RESUMED;\n }\n\n public async slideStop() {\n if (!(this._state === STATE.STARTED || this._state === STATE.RESUMED || this._state === STATE.PAUSED)) {\n return;\n }\n this._state = STATE.STOP;\n\n if (this._pauseCbTimer != null) {\n // отменяем pause если есть (баг андроида - шлет pause/resume на простой клик)\n clearTimeout(this._pauseCbTimer);\n }\n\n await this.slide.activeLayer.stop();\n\n this._state = STATE.STOPPED;\n }\n\n public slideTimerEnd() {\n const defaultAction = () => {\n const nextSlideIndex = this.slide.slideIndex + 1;\n if (nextSlideIndex >= 0 && nextSlideIndex < this.slide.slideCount) {\n this.sdkApi.showCardSlide(nextSlideIndex);\n } else {\n this.sdkApi.cardShowNext();\n }\n };\n\n if (this.activeLayer.questElement) {\n const slideIndex = this.slide.slideIndex;\n const slideCount = this.slide.slideCount;\n const { continueDefaultNavigation } = this.activeLayer.questElement.handleRouteClick({\n // handleRouteTrigger\n direction: \"forward\",\n slideIndex: slideIndex,\n slideCount: slideCount,\n });\n if (continueDefaultNavigation) {\n // default action\n defaultAction();\n }\n return;\n }\n\n defaultAction();\n }\n\n // for call from SlideApi internals (from widgets)\n // skip state checking and sdk issues\n public async slidePauseUI(): Promise<void> {\n await this.slide.activeLayer.pause(false, false);\n this._state = STATE.FORCE_PAUSED;\n }\n\n // for call from SlideApi internals (from widgets)\n // skip state checking and sdk issues\n public async slideResumeUI(): Promise<void> {\n await this.slide.activeLayer.resume();\n this._state = STATE.RESUMED;\n }\n\n public enableAudio() {\n this.slide.activeLayer.enableAudio();\n this._slideConfig.muted = false;\n }\n\n public disableAudio() {\n this.slide.activeLayer.disableAudio();\n this._slideConfig.muted = true;\n }\n\n public get isStopped(): boolean {\n return this._state === STATE.STOPPED;\n }\n\n public afterStartInitQueuePush(cb: () => void) {\n if (!Utils.isFunction(cb)) {\n return false;\n }\n if (this.sdkApi.isAndroid && this._state === STATE.INIT) {\n this._afterStartInitQueue.push(cb);\n } else {\n cb();\n }\n }\n\n public afterResumeQueuePush(cb: () => void) {\n if (!Utils.isFunction(cb)) {\n return false;\n }\n if ([STATE.RESUME, STATE.RESUMED, STATE.INITED, STATE.START, STATE.STARTED].includes(this._state)) {\n cb();\n } else {\n this._afterResumeQueue.push(cb);\n }\n }\n\n public get activeLayer(): Layer {\n return this.slide.activeLayer;\n }\n\n public get slide(): Slide {\n // todo - call showLayer with arg slide: Slide - where slide is widget parent (prevent mismatch)\n // when widget in init state, it can call showLayer\n // then we must call showLayer not on this._slide but on this._slideInInit (on slide contains widget itself)\n return this._slideInInit || this._slide;\n }\n\n public showLayer(index: number): void {\n // todo - call showLayer with arg slide: Slide - where slide is widget parent (prevent mismatch)\n // when widget in init state, it can call showLayer\n // then we must call showLayer not on this._slide but on this._slideInInit (on slide contains widget itself)\n this.slide.showLayer(index, this._slideConfig.muted);\n }\n\n public slideClickHandler(\n targetElement: HTMLElement,\n navigationDirection: \"forward\" | \"backward\"\n ): {\n canClickNext: boolean;\n } {\n const result = { canClickNext: true };\n let target: HTMLElement | null = targetElement;\n let element: HTMLElement | null | undefined;\n let propagation = true;\n\n // prevent click on geometry\n if (target?.classList.contains(\"narrative-element-geometry\")) {\n target = target?.querySelector<HTMLElement>(\".narrative-element\");\n }\n\n if (target?.classList.contains(\"narrative-element-link\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-link\");\n }\n\n if (element) {\n this._performLinkTarget(element);\n result.canClickNext = false;\n return result;\n } else {\n /** Image */\n if (target?.classList.contains(\"narrative-element-image\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-image\");\n }\n if (element) {\n this._performLinkTarget(element);\n result.canClickNext = false;\n return result;\n }\n\n /** Swipe Up */\n if (target?.classList.contains(\"narrative-element-swipe-up\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-swipe-up\");\n }\n if (element) {\n if (this.slideSwipeUpHandler(element)) {\n result.canClickNext = false;\n return result;\n }\n }\n\n /** Swipe Up Items */\n if (target?.classList.contains(\"narrative-element-swipe-up-items\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-swipe-up-items\");\n }\n if (element) {\n if (this.slideSwipeUpHandler(element)) {\n result.canClickNext = false;\n return result;\n }\n }\n\n /** Products */\n if (target?.classList.contains(\"narrative-element-products\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-products\");\n }\n if (element) {\n if (this.slideSwipeUpHandler(element)) {\n result.canClickNext = false;\n return result;\n }\n }\n\n /** Vote complete button (multiple choice) */\n if (target?.classList.contains(\"narrative-element-vote-next-button\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-vote-next-button\");\n }\n if (element) {\n // if is widget file connected to Window\n if (this.layoutService.layoutApi.widgetVoteApi) {\n result.canClickNext = this.layoutService.layoutApi.widgetVoteApi.click(element);\n return result;\n }\n }\n\n /** Next button */\n if (target?.classList.contains(\"narrative-element-quiz-next-button\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-quiz-next-button\");\n }\n if (!element) {\n if (target?.classList.contains(\"narrative-element-test-next-button\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-test-next-button\");\n }\n }\n\n if (element) {\n this.layoutService.env.setTimeout(() => {\n this.sdkApi.showNextSlide(0);\n });\n result.canClickNext = false;\n return result;\n }\n\n /** Range slider */\n let rangeSliderBorderBoxView: HTMLElement | null | undefined = target;\n if (target?.classList.contains(\"border-box-view\") || (rangeSliderBorderBoxView = target?.closest(\".border-box-view\"))) {\n if (rangeSliderBorderBoxView?.parentElement && rangeSliderBorderBoxView.parentElement.classList.contains(\"narrative-element-range-slider\")) {\n // skip click on .border-box-view inside .narrative-element-range-slider - prevent navigation trigger at click inside widget body (expect NextButton)\n result.canClickNext = false;\n return result;\n }\n }\n // if (_hasClass(target, \"rangeslider\") || target.closest(\".rangeslider\")) {\n // return;\n // }\n\n /** Range slider complete button */\n if (target?.classList.contains(\"narrative-element-range-slider-next-button\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-range-slider-next-button\");\n }\n if (element) {\n if (this.layoutService.layoutApi.widgetRangeSliderApi) {\n result.canClickNext = this.layoutService.layoutApi.widgetRangeSliderApi.click(element);\n return result;\n }\n }\n\n /** Data input widget расширенный охват на весь виджет */\n if (target?.classList.contains(\"narrative-element-data-input\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-data-input\");\n }\n if (element) {\n if (this.layoutService.layoutApi.widgetDataInputApi) {\n result.canClickNext = this.layoutService.layoutApi.widgetDataInputApi.click(element);\n return result;\n }\n }\n\n /** quiz */\n if (target?.classList.contains(\"narrative-element-quiz-answer\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-quiz-answer\");\n }\n\n if (element) {\n if (element.closest(\".narrative-element-quiz\")) {\n /* quiz */\n if (this.layoutService.layoutApi.widgetQuizApi) {\n propagation = this.layoutService.layoutApi.widgetQuizApi.select(element);\n propagation = false; // по клику на варианты ответа(даже на законченной викторине) не делаем клик на слайде\n }\n } else if (element.closest(\".narrative-element-quiz-grouped\")) {\n /* quiz-grouped */\n if (this.layoutService.layoutApi.widgetQuizGroupedApi) {\n propagation = this.layoutService.layoutApi.widgetQuizGroupedApi.select(element);\n propagation = false; // по клику на варианты ответа(даже на законченной викторине) не делаем клик на слайде\n }\n }\n }\n\n /** poll or poll layers */\n if (target?.classList.contains(\"narrative-element-poll-button\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-poll-button\");\n }\n\n if (element) {\n if (this.activeLayer.pollElement) {\n if (this.layoutService.layoutApi.widgetPollApi) {\n this.layoutService.layoutApi.widgetPollApi.select(element);\n propagation = false; // по клику на варианты ответа(даже на законченной викторине) не делаем клик на слайде\n }\n }\n if (this.activeLayer.pollLayersElement) {\n if (this.layoutService.layoutApi.widgetPollLayersApi) {\n this.layoutService.layoutApi.widgetPollLayersApi.select(element);\n propagation = false; // по клику на варианты ответа(даже на законченной викторине) не делаем клик на слайде\n }\n }\n }\n\n /** vote */\n if (target?.classList.contains(\"narrative-element-vote-answer\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-vote-answer\");\n }\n\n if (element) {\n if (this.layoutService.layoutApi.widgetVoteApi) {\n propagation = this.layoutService.layoutApi.widgetVoteApi.select(element);\n propagation = false; // по клику на варианты ответа(даже на законченной викторине) не делаем клик на слайде\n }\n }\n\n /** rate */\n if (target?.classList.contains(\"narrative-element-rate-input\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-rate-input\");\n }\n\n if (element) {\n if (this.layoutService.layoutApi.widgetRateApi) {\n propagation = this.layoutService.layoutApi.widgetRateApi.select(element);\n propagation = false; // по клику на варианты ответа(даже на законченной викторине) не делаем клик на слайде\n }\n }\n\n /** test */\n if (target?.classList.contains(\"narrative-element-test-answer\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-test-answer\");\n }\n\n if (element) {\n if (element.closest(\".narrative-element-test\")) {\n /* test */\n if (this.layoutService.layoutApi.widgetTestApi) {\n propagation = this.layoutService.layoutApi.widgetTestApi.select(element);\n propagation = false; // по клику на варианты ответа(даже на законченной викторине) не делаем клик на слайде\n }\n } else if (element.closest(\".narrative-element-quest\")) {\n /* quest */\n if (this.layoutService.layoutApi.widgetQuestApi) {\n propagation = this.layoutService.layoutApi.widgetQuestApi.select(element);\n propagation = false; // по клику на варианты ответа(даже на законченной викторине) не делаем клик на слайде\n }\n }\n }\n\n /** copy */\n if (target?.classList.contains(\"narrative-element-copy\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-copy\");\n }\n\n if (element) {\n // if (\"_narrative_test\" in window) {\n // propagation = window._narrative_test.select(element);\n // propagation = false; // по клику на варианты ответа(даже на законченной викторине) не делаем клик на слайде\n // }\n\n if (this.layoutService.layoutApi.widgetCopyApi) {\n propagation = this.layoutService.layoutApi.widgetCopyApi.click(element);\n propagation = false; // по клику на Копировать не делаем клик на слайде\n }\n\n // copyToClipboard(element.getAttribute('data-clipboard-target'));\n // propagation = false;\n }\n\n /** barcode */\n if (target?.classList.contains(\"narrative-element-barcode\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-barcode\");\n }\n\n if (element) {\n // if (\"_narrative_test\" in window) {\n // propagation = window._narrative_test.select(element);\n // propagation = false; // по клику на варианты ответа(даже на законченной викторине) не делаем клик на слайде\n // }\n\n if (this.layoutService.layoutApi.widgetBarcodeApi) {\n propagation = this.layoutService.layoutApi.widgetBarcodeApi.click(element);\n propagation = false; // по клику на Копировать не делаем клик на слайде\n }\n\n // copyToClipboard(element.getAttribute('data-clipboard-target'));\n // propagation = false;\n }\n\n /** share */\n if (target?.classList.contains(\"narrative-element-share\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-share\");\n }\n\n if (element) {\n if (this.layoutService.layoutApi.widgetShareApi) {\n this.layoutService.layoutApi.widgetShareApi.click(element);\n propagation = false;\n }\n }\n\n /** story-repeat */\n if (target?.classList.contains(\"narrative-element-story-repeat\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-story-repeat\");\n }\n\n if (element) {\n propagation = false;\n this.sdkApi.setCardLocalData({}, true);\n this.sdkApi.updateCardServerDataLocally(this.slide.cardId, {});\n\n // window._resetTimers();\n\n // сделать async в ios\n\n let slideIndex = this.slide.slideIndex;\n // prevent simultaneous call _showNarrativeSlide and _showLayer - prevent 2 calls of initAfterLoad (break video start on iOS)\n if (slideIndex === 0) {\n // for story repeat on the first slide with layers\n this.sdkApi.showLayer(0);\n } else {\n this.sdkApi.showCardSlide(0); // сделать ее async\n }\n }\n\n if (!propagation) {\n result.canClickNext = false;\n return result;\n }\n }\n\n /** can tap to next slide */\n if (this.activeLayer.quizElement) {\n result.canClickNext = this.activeLayer.quizElement.slideQuizIsDone;\n }\n\n if (this.activeLayer.quizGroupedElement) {\n result.canClickNext = this.activeLayer.quizGroupedElement.slideQuizGroupedIsDone;\n }\n\n if (this.activeLayer.testElement) {\n result.canClickNext = this.activeLayer.testElement.slideTestIsDone;\n if (this.activeLayer.testElement.slideTestWithTimer && !result.canClickNext) {\n result.canClickNext = false;\n return result; // disable all clicks\n }\n }\n\n if (this.activeLayer.rangeSliderElement) {\n if (this.activeLayer.rangeSliderElement.isClickCapturedBySlider) {\n result.canClickNext = false;\n return result; // disable all clicks if event captured by slider\n }\n }\n\n if (this.activeLayer.productsElement) {\n if (this.activeLayer.productsElement.isClickCapturedByWidget) {\n result.canClickNext = false;\n return result; // disable all clicks if event captured by products widget (slider or swipe down)\n }\n }\n\n if (this.activeLayer.questElement) {\n const slideIndex = this.slide.slideIndex;\n const slideCount = this.slide.slideCount;\n const { continueDefaultNavigation } = this.activeLayer.questElement.handleRouteClick({\n direction: navigationDirection,\n slideIndex: slideIndex,\n slideCount: slideCount,\n });\n result.canClickNext = continueDefaultNavigation;\n return result;\n }\n\n const disableNavigation = this.slide.disabledNavigation;\n\n if (disableNavigation) {\n result.canClickNext = false;\n return result; // disable slide tap navigation\n }\n\n // _clickNext(canClickNext, xPercent);\n return result;\n }\n\n private _performLinkSpecialAndReturnTarget(element: HTMLElement) {\n const linkType = element.getAttribute(\"data-link-type\");\n let linkTarget = element.getAttribute(\"data-link-target\");\n const linkTargetIos = element.getAttribute(\"data-link-target-ios\");\n const linkTargetAndroid = element.getAttribute(\"data-link-target-android\");\n const linkTargetWeb = element.getAttribute(\"data-link-target-web\");\n let emitClick = false;\n\n if (this.sdkApi.isAndroid && linkTargetAndroid) {\n linkTarget = linkTargetAndroid;\n }\n if (this.sdkApi.isIOS && linkTargetIos) {\n linkTarget = linkTargetIos;\n }\n if (this.sdkApi.isWeb && linkTargetWeb) {\n linkTarget = linkTargetWeb;\n }\n\n if (linkType === \"closeStory\" || linkType === \"closeIAM\") {\n this.layoutService.env.setTimeout(() => this.sdkApi.closeCard(\"click\"));\n emitClick = false;\n }\n\n if (linkType && linkTarget) {\n emitClick = true;\n if (linkType === \"story\") {\n // storyId: number, slideIndex: number\n this.layoutService.env.setTimeout(() => this.sdkApi.openStory(parseInt(linkTarget), 0));\n emitClick = false;\n }\n\n if (linkType === \"slide\") {\n const __slideIndex = parseInt(linkTarget);\n const __slideCount = this.slide.slideCount;\n if (__slideIndex >= 0 && __slideIndex < __slideCount) {\n this.layoutService.env.setTimeout(() => this.sdkApi.showCardSlide(__slideIndex));\n emitClick = false;\n }\n }\n\n if (linkType === \"game\") {\n this.layoutService.env.setTimeout(() => this.sdkApi.openGame(linkTarget));\n emitClick = false;\n }\n\n if (linkType === \"layer\") {\n const layerIndex = parseInt(linkTarget);\n if (layerIndex >= 0) {\n this.layoutService.env.setTimeout(() => this.sdkApi.showLayer(layerIndex));\n emitClick = false;\n }\n }\n }\n return { linkType, linkTarget, emitClick };\n }\n\n private _performLinkTarget(element: HTMLElement): void {\n const { linkType, linkTarget, emitClick } = this._performLinkSpecialAndReturnTarget(element);\n // for btn(link) without url (openGame, openStory, closeCard, etc)\n let statisticWidgetValue = linkType;\n\n if (emitClick && linkTarget && (linkType === \"url\" || linkType === \"json\")) {\n const obj: {\n type: \"link\" | \"swipeUpLink\" | \"swipeUpItems\";\n link: {\n type: \"url\" | \"json\";\n target: string;\n };\n } = {\n type: \"link\",\n link: {\n type: linkType,\n target: linkTarget,\n },\n };\n\n // traditional link, with url\n statisticWidgetValue = linkTarget;\n\n this.layoutService.env.setTimeout(() => {\n this.sdkApi.openUrl(obj);\n });\n }\n\n try {\n const cardId = this.slide.cardId;\n const cardType = this.slide.cardType;\n const slideIndex = this.slide.slideIndex;\n\n let baseFields: { story_id?: number; message_id?: number } = {};\n switch (cardType) {\n case CARD_TYPE.STORY:\n case CARD_TYPE.UGC_STORY:\n baseFields.story_id = cardId;\n break;\n case CARD_TYPE.IN_APP_MESSAGING:\n baseFields.message_id = cardId;\n break;\n }\n const elementId = element.getAttribute(\"data-element-id\");\n\n this.sdkApi.sendStatisticEvent(\n \"w-link\",\n {\n i: cardId,\n si: slideIndex,\n wi: elementId ?? \"\",\n wl: element.textContent ?? \"\",\n wv: statisticWidgetValue ?? \"\",\n },\n {\n ...baseFields,\n slide_index: slideIndex,\n widget_id: elementId ?? \"\",\n widget_label: element.textContent ?? \"\",\n widget_value: statisticWidgetValue ?? \"\",\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n // получать событие swipeUp от sdk, в том числе и от web sdk\n public slideSwipeUpHandler(target?: HTMLElement) {\n if (target == null) {\n const targetElement = this.activeLayer.swipeUpElement || this.activeLayer.swipeUpItemsElement || this.activeLayer.productsElement;\n target = targetElement?.elementNodeRef;\n }\n\n if (!target) {\n return false;\n }\n\n const elementId = target.getAttribute(\"data-element-id\") || \"\";\n\n const { linkType, linkTarget: _linkTarget, emitClick } = this._performLinkSpecialAndReturnTarget(target);\n if (emitClick) {\n const linkTarget = decodeURIComponent(_linkTarget ?? \"\");\n\n if (linkType === \"products\") {\n if (this.layoutService.layoutApi.widgetProductsApi) {\n this.layoutService.layoutApi.widgetProductsApi.click(target);\n }\n return true;\n }\n\n let swipeUpLinkObj: {\n type: \"link\" | \"swipeUpLink\" | \"swipeUpItems\";\n link: {\n type: \"url\" | \"json\";\n target: string;\n };\n elementId?: string;\n } = {\n type: \"swipeUpLink\",\n link: {\n type: \"url\",\n target: linkTarget,\n },\n elementId,\n };\n\n if (linkType === \"swipe-up-items\") {\n swipeUpLinkObj = {\n type: \"swipeUpItems\",\n link: {\n type: \"json\",\n target: linkTarget,\n },\n elementId,\n };\n\n try {\n // TODO CSP violation\n target.style.setProperty(\"opacity\", \"0\");\n } catch (e) {\n console.error(e);\n }\n }\n\n this.layoutService.env.setTimeout(() => {\n this.sdkApi.openUrl(swipeUpLinkObj);\n });\n\n let eventType = \"\";\n if (linkType === \"url\") {\n eventType = \"w-link\";\n } else if (linkType === \"swipe-up-items\") {\n eventType = \"w-goods-open\";\n }\n if (eventType) {\n try {\n const cardId = this.slide.cardId;\n const cardType = this.slide.cardType;\n const slideIndex = this.slide.slideIndex;\n\n let baseFields: { story_id?: number; message_id?: number } = {};\n switch (cardType) {\n case CARD_TYPE.STORY:\n case CARD_TYPE.UGC_STORY:\n baseFields.story_id = cardId;\n break;\n case CARD_TYPE.IN_APP_MESSAGING:\n baseFields.message_id = cardId;\n break;\n }\n\n this.sdkApi.sendStatisticEvent(\n eventType,\n {\n i: cardId,\n si: slideIndex,\n wi: elementId,\n wl: target.textContent ?? \"\",\n wv: linkTarget,\n },\n {\n ...baseFields,\n slide_index: slideIndex,\n widget_id: elementId,\n widget_label: target.textContent ?? \"\",\n widget_value: linkTarget,\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n return true;\n } else {\n return false;\n }\n }\n\n public setTextInputResult(id: string, text: string): void {\n if (this.activeLayer.dataInputElement) {\n this.activeLayer.dataInputElement.setUserData(id, text);\n }\n if (this.activeLayer.pollElement) {\n this.activeLayer.pollElement.setUserData(id, text);\n }\n if (this.activeLayer.rateElement) {\n this.activeLayer.rateElement.setUserData(id, text);\n }\n }\n\n public setShareComplete(id: string, isSuccess: boolean): void {\n if (this.activeLayer.shareElement) {\n this.activeLayer.shareElement.complete(id, isSuccess);\n }\n }\n}\n","import { SlideApiPeerDeps } from \"../../layout/layout_api\";\nimport { SDKInterface } from \"../../sdk_api/es_module_sdk_api.h\";\nimport { SlideApi as BaseSlideApi } from \"../../layout/SlideApi\";\nimport { type Player as VODPlayer } from \"@inappstory/video-player\";\n\nexport let sdkInterface: SDKInterface;\nexport const slideApiPeerDeps: SlideApiPeerDeps = {};\n\nconst createSlideWrapper = ({ slideBoxRatio, nonce }: { slideBoxRatio: number; nonce?: string }) => {\n const slideWrapper = document.createElement(\"div\");\n slideWrapper.classList.add(\"narrative-slide-wrapper\");\n slideWrapper.classList.add(\"stories-viewer\");\n\n const slideOffset = document.createElement(\"div\");\n slideWrapper.classList.add(\"narrative-slide-offset\");\n\n const slideBoxPrerender = document.createElement(\"div\");\n slideBoxPrerender.classList.add(\"narrative-slide-box\");\n slideBoxPrerender.classList.add(\"narrative-slide-box-prerender\");\n\n const slideBoxRendered = document.createElement(\"div\");\n slideBoxRendered.classList.add(\"narrative-slide-box\");\n slideBoxRendered.classList.add(\"narrative-slide-box-rendered\");\n\n const style = document.createElement(\"style\");\n if (nonce != null) {\n style.nonce = nonce;\n }\n\n const paddingTop = `${String(100 / slideBoxRatio)}%`;\n\n // .narrative-slide-box {\n // padding: <?= $slideRatioPadding ?> 0 0 0;\n // }\n style.sheet?.insertRule(`.narrative-slide-box {padding: ${paddingTop} 0 0 0;`);\n\n slideOffset.appendChild(slideBoxRendered);\n slideOffset.appendChild(slideBoxRendered);\n\n slideWrapper.appendChild(slideOffset);\n slideWrapper.appendChild(style);\n\n return slideWrapper;\n};\n\nexport class SlideApi extends BaseSlideApi {\n constructor(\n _sdkInterface: SDKInterface,\n config: {\n root: HTMLElement;\n slideRatio: number;\n isFullscreen: boolean;\n nonce?: string;\n viewport: Window;\n userResizeHandler?: (data: { viewportWidth: number; viewportHeight: number; fontSize: number }) => void;\n VODPlayer?: typeof VODPlayer;\n }\n ) {\n sdkInterface = _sdkInterface;\n slideApiPeerDeps.VODPlayer = config.VODPlayer;\n const slideWrapper = createSlideWrapper({ slideBoxRatio: config.slideRatio, nonce: config.nonce });\n // todo need to clear root node before append slideWrapper?\n config.root.appendChild(slideWrapper);\n\n super({\n slideWrapper,\n viewport: config.viewport,\n slideRatio: config.slideRatio,\n isFullscreen: config.isFullscreen,\n userResizeHandler: config.userResizeHandler,\n });\n }\n}\n","import { container } from \"@composition\";\nimport { SDKApi } from \"@skd_api\";\nimport { EsModuleSdkApi } from \"../adapters/es_module_sdk_api\";\nimport { sdkInterface } from \"../../entry_points/es_module/es_module\";\n\ncontainer.registerSingleton<SDKApi>(() => new EsModuleSdkApi(() => sdkInterface));\n"],"names":["Utils.waitForImageHtmlElementLoad","Utils.waitForVideoHtmlElementLoad","Utils.isObject","WidgetFactory.tryCreateFromHtmlElement","Utils.isFunction","BaseSlideApi"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/composition/core.ts","../../../src/widgets/base/widgets_service/widgets_service.ts","../../../src/widgets/base/widgets_service/composition.ts","../../../src/layout/layout_service/layout_service.ts","../../../src/layout/layout_service/composition.ts","../../../src/composition/index.ts","../../../src/sdk_api/sdk_api.h.ts","../../../src/utils.ts","../../../src/animation/animation.ts","../../../src/sdk_api/adapters/es_module_sdk_api.ts","../../../src/layout/elements/DataInput.ts","../../../src/layout/elements/Barcode.ts","../../../src/layout/elements/ClickableBase.ts","../../../src/layout/elements/Button.ts","../../../src/layout/elements/Copy.ts","../../../src/layout/elements/DateCountdown.ts","../../../src/layout/elements/Poll.ts","../../../src/layout/elements/PollLayers.ts","../../../src/layout/elements/Products.ts","../../../src/layout/elements/Quest.ts","../../../src/layout/elements/Quiz.ts","../../../src/layout/elements/QuizGrouped.ts","../../../src/layout/elements/RangeSlider.ts","../../../src/layout/elements/Rate.ts","../../../src/layout/elements/Share.ts","../../../src/layout/elements/SwipeUpItems.ts","../../../src/layout/elements/Test.ts","../../../src/layout/elements/Vote.ts","../../../src/layout/elements/Text.ts","../../../src/layout/utils/utils.ts","../../../src/layout/elements/Image.ts","../../../src/layout/elements/SwipeUp.ts","../../../src/layout/elements/Video.ts","../../../src/layout/elements/factory.ts","../../../src/layout/slide_timeline/slide_timeline.ts","../../../src/layout/Layer.ts","../../../src/layout/Slide.ts","../../../src/layout/SlideApi.ts","../../../src/entry_points/es_module/es_module.ts","../../../src/sdk_api/composition/es_module_sdk_api.ts"],"sourcesContent":["import { DIContainer } from \"@wessberg/di\";\n\nexport const container = new DIContainer();\n","import { SDKApi } from \"@skd_api\";\n\nexport class WidgetsService {\n constructor(\n private _env: Window,\n private _sdkApi: SDKApi\n ) {}\n\n get env(): Window {\n return this._env;\n }\n get sdkApi(): SDKApi {\n return this._sdkApi;\n }\n}\n","import { container } from \"@composition\";\nimport { WidgetsService } from \"./widgets_service\";\n\ncontainer.registerSingleton<WidgetsService>();\n","import { SDKApi } from \"@skd_api\";\nimport { ILayoutApi } from \"../layout_api\";\n\nexport class LayoutService {\n constructor(\n private _env: Window,\n private _sdkApi: SDKApi,\n private _layoutApi: ILayoutApi\n ) {}\n\n get env(): Window {\n return this._env;\n }\n get sdkApi(): SDKApi {\n return this._sdkApi;\n }\n\n get layoutApi(): ILayoutApi {\n return this._layoutApi;\n }\n}\n","import { container } from \"@composition\";\nimport { LayoutService } from \"./layout_service\";\n\ncontainer.registerSingleton<LayoutService>();\n","import { container } from \"./core\";\n\n// import '../core/composition';\nimport \"../widgets/base/widgets_service/composition\";\nimport \"../layout/layout_service/composition\";\n\n// import '../adapters/dateTimeSource/composition';\n// import '../adapters/uuidGenerator/composition';\n// import '../effects/eventHandler/composition';\n// import '../effects/logger/composition';\n// import '../effects/timer/composition';\n\ncontainer.registerSingleton<Window>(() => window);\nexport { container };\n","import { Widgets, WidgetsSharedDataMap } from \"../widgets/base\";\nimport { IAnimation } from \"@animation\";\nimport { TIMELINE_ACTION } from \"../layout/slide_timeline\";\n\nexport type APIResponse<DTO> = {\n status: number;\n data: DTO;\n headers?: { [key: string]: string };\n requestId: number | string;\n};\n\nexport type FontDTO = {\n url: string;\n family: string;\n style: string;\n weight: string;\n};\n\nexport const DEFAULT_SLIDE_DURATION = 10000;\nexport interface SDKApi {\n getCardServerData(cardId: number): Record<string, any> | null;\n updateCardServerDataLocally(cardId: number, data: Record<string, any>): void;\n getSlideDuration(cardId: number, slideIndex: number): number | null;\n showNextSlide(duration: number): void;\n sendStatisticEvent(\n name: string,\n data: Record<string, string | number | Array<string | number>>,\n devPayload?: Record<string, string | number | Array<string | number>>,\n forceEnableStatisticV2?: boolean\n ): void;\n getCardLocalData(): Promise<Record<string, any>>;\n isExistsShowLayer(): boolean;\n showLayer(index: number): void;\n cardAnimation: IAnimation | undefined;\n isAndroid: boolean;\n isWeb: boolean;\n isIOS: boolean;\n pauseUI(): void;\n resumeUI(): void;\n isExistsShowCardTextInput: boolean;\n showCardTextInput(id: string, data: Record<string, any>): void;\n setCardLocalData(keyValue: Record<string, any>, sendToServer: boolean): void;\n getWidgetsSharedData<WidgetType extends keyof WidgetsSharedDataMap>(cardId: number, widget: Widgets): WidgetsSharedDataMap[WidgetType] | null;\n vibrate(pattern: number): void;\n openUrl(data: {\n type: \"link\" | \"swipeUpLink\" | \"swipeUpItems\";\n link: {\n type: \"url\" | \"json\";\n target: string;\n };\n elementId?: string;\n }): void;\n sendApiRequest<ResponseDTO>(\n url: string,\n method: string,\n params: Record<string, any> | null,\n headers: Record<string, any> | null,\n data: Record<string, any> | null,\n profilingKey: string\n ): Promise<APIResponse<ResponseDTO>>;\n sendApiRequestSupported(): boolean;\n showToast(text: string): void;\n sdkCanSendShareComplete: boolean;\n isExistsShare: boolean;\n share(\n id: string,\n config: {\n url?: string | null;\n text?: string | null;\n title?: string | null;\n files?: Array<{\n file: File;\n name: string;\n type: string;\n }> | null;\n }\n ): void;\n shareSlideScreenshot(shareId: string, hideElementsSelector?: string, shareText?: string): void;\n isExistsShowCardSlide: boolean;\n showCardSlide(index: number): void;\n isExistsShowNextCard: boolean;\n cardShowNext(): void;\n setCardSessionValue(element: HTMLElement, key: string, value: string): void;\n getCardSessionValue(element: HTMLElement, key: string): string | undefined;\n updateTimeline(slideIndex: number, action: TIMELINE_ACTION, currentTime: number, duration: number, showLoader: boolean, showError: boolean): void;\n\n /** @deprecated, used only in native sdk **/\n cardPausedCallback(currentTime: number | null): void;\n /** @deprecated, used only in native sdk **/\n cardResumedCallback(currentTime: number | null): void;\n\n startDisabledTimeline(cardId: number, slideIndex: number): void;\n\n getCardFonts(): Array<FontDTO>;\n\n disableVerticalSwipeGesture(): void;\n enableVerticalSwipeGesture(): void;\n\n disableBackpress(): void;\n enableBackpress(): void;\n\n closeCard(reason: string): void;\n openStory(id: number, index: number): void;\n openGame(gameInstanceId: string): void;\n}\n","import { SDKApi } from \"@skd_api\";\n\nexport const array_string = \"[object Array]\";\nexport const ops = Object.prototype.toString;\nexport const fnPrototype = Function.prototype;\nexport const bind = fnPrototype.bind;\nexport const arPrototype = Array.prototype;\nexport const obPrototype = Object.prototype;\nexport const push = arPrototype.push;\nexport const slice = arPrototype.slice;\nexport const concat = arPrototype.concat;\nexport const obKeys = Object.keys;\nexport const obHasOwnProp = obPrototype.hasOwnProperty;\nexport const toString = obPrototype.toString;\nexport const isArray =\n Array.isArray ||\n function (e) {\n return toString.call(e) === \"[object Array]\";\n };\n// Matches dashed string for camelizing\nexport const rmsPrefix = /^-ms-/;\nexport const rdashAlpha = /-([\\da-z])/gi;\nexport const fcamelCase = function (letter: string) {\n return letter.toUpperCase();\n};\n\n// private methods\nexport const isObject = function (e: any) {\n var t = typeof e;\n return t === \"function\" || (t === \"object\" && !!e);\n};\nexport const isNumber = function (t: any) {\n return toString.call(t) === \"[object Number]\";\n};\n\nexport const isNumeric = function (n: any) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n};\n\n// isEmpty = function(e) {\n// if (e == null)\n// return !0;\n// if (isArray(e) || isString(e) || isArguments(e))\n// return e.length === 0;\n// for (var t in e)\n// if (p.has(e, t))\n// return !1;\n// return !0\n// },\nexport const has = function (e: Object, t: string) {\n return e != null && obHasOwnProp.call(e, t);\n};\nexport const keys = function (e: Object) {\n if (!isObject(e)) return [];\n if (obKeys) return obKeys(e);\n var t = [];\n for (var n in e) has(e, n) && t.push(n);\n return t;\n};\nconst d = function (e: Function, t?: Object, n?: number) {\n if (t === void 0) return e;\n switch (n == null ? 3 : n) {\n case 1:\n return function (n: any) {\n return e.call(t, n);\n };\n case 2:\n return function (n: any, r: any) {\n return e.call(t, n, r);\n };\n case 3:\n return function (n: any, r: any, i: any) {\n return e.call(t, n, r, i);\n };\n case 4:\n return function (n: any, r: any, i: any, s: any) {\n return e.call(t, n, r, i, s);\n };\n }\n return function () {\n return e.apply(t, arguments);\n };\n};\nexport const each = function <T>(e: Array<T>, t: (value: T, index: string | number, arr: Array<T>) => void, n?: Object) {\n if (e == null) return e;\n t = d(t, n) as (value: T, index: string | number, arr: Array<T>) => void;\n var r: number,\n i: number = e.length;\n if (i === +i) for (r = 0; r < i; ++r) t(e[r], r, e);\n else {\n var s: Array<string> = keys(e);\n for (r = 0, i = s.length; r < i; ++r) t((e as { [key in string]: any })[s[r]], s[r], e);\n }\n return e;\n};\nexport const forEach = each;\nexport const extend = function <T extends Record<string, any>, R extends Array<Partial<T>> = Array<Partial<T>>>(e: Partial<T>, ...args: R): T {\n var t, n;\n for (var r = 1, i = arguments.length; r < i; r++) {\n t = arguments[r];\n for (n in t) obHasOwnProp.call(t, n) && ((e as Record<string, any>)[n] = t[n]);\n }\n return e as T;\n};\nexport const isEmptyObject = function (obj: Object): boolean {\n var name;\n for (name in obj) {\n return false;\n }\n return true;\n};\n\nexport const expando = function (): string {\n return \"app\" + (\"\" + Math.random()).replace(/\\D/g, \"\");\n};\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE9-11+\n// Microsoft forgot to hump their vendor prefix (#9572)\nexport const camelCase = function (string: string) {\n return string.replace(rmsPrefix, \"ms-\").replace(rdashAlpha, fcamelCase);\n};\n\nexport const proxy = function <T extends (...args: any[]) => any>(func: T, obj?: Object): () => ReturnType<T> {\n if (typeof func != \"function\") {\n return func;\n }\n\n // If obj is empty or another set another object\n if (!obj) {\n // @ts-ignore\n obj = this;\n }\n\n return function () {\n return func.apply(obj, arguments as unknown as any[]);\n };\n};\n\n/*\n hasData: function( elem ) {\n return data_user.hasData( elem ) || data_priv.hasData( elem );\n},\n\ndata: function( elem, name, data ) {\n return data_user.access( elem, name, data );\n},\n\nremoveData: function( elem, name ) {\n data_user.remove( elem, name );\n},\n */\n\nexport const data = function <T>(elem: HTMLElement, name: string, data?: T): T | undefined {\n return data_user.access(elem, name, data);\n};\n\nexport const getTagData = function (element: HTMLElement, key: string) {\n return element.dataset[key];\n};\n\nexport const getTagDataAsNumber = function (element: HTMLElement, key: string): number | undefined {\n const data = element.dataset[key];\n if (data == null) {\n return undefined;\n }\n return parseInt(data);\n};\n\nexport const setTagData = function (element: HTMLElement, key: string, value: string): void {\n element.dataset[key] = value;\n};\nvar rnotwhite = /\\S+/g;\n\nclass Data {\n static uid: number = 1;\n\n static accepts(owner: HTMLElement): boolean {\n // Accepts only:\n // - Node\n // - Node.ELEMENT_NODE\n // - Node.DOCUMENT_NODE\n // - Object\n // - Any\n /* jshint -W018 */\n return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType;\n }\n\n private expando: string;\n private cache: Record<string, any>;\n\n constructor() {\n // Support: Android<4,\n // Old WebKit does not have Object.preventExtensions/freeze method,\n // return new empty object instead with no [[set]] accessor\n Object.defineProperty((this.cache = {}), 0, {\n get: function () {\n return {};\n },\n });\n\n this.expando = expando() + String(Data.uid++);\n }\n\n public key(owner: HTMLElement) {\n const _owner = owner as HTMLElement & { [key in string]: any };\n\n // We can accept data for non-element nodes in modern browsers,\n // but we should not, see #8335.\n // Always return the key for a frozen object.\n if (!Data.accepts(_owner)) {\n return 0;\n }\n\n var descriptor: Record<string, any> = {},\n // Check if the owner object already has a cache key\n unlock = _owner[this.expando];\n\n // If not, create one\n if (!unlock) {\n unlock = Data.uid++;\n\n // Secure it in a non-enumerable, non-writable property\n try {\n descriptor[this.expando] = { value: unlock };\n Object.defineProperties(_owner, descriptor);\n\n // Support: Android<4\n // Fallback to a less secure definition\n } catch (e) {\n descriptor[this.expando] = unlock;\n extend(_owner, descriptor);\n }\n }\n\n // Ensure the cache object\n if (!this.cache[unlock]) {\n this.cache[unlock] = {};\n }\n\n return unlock;\n }\n\n public set(owner: HTMLElement, data: string | Object, value: Object) {\n var prop,\n // There may be an unlock assigned to this node,\n // if there is no entry for this \"owner\", create one inline\n // and set the unlock as though an owner entry had always existed\n unlock = this.key(owner),\n cache = this.cache[unlock];\n\n // Handle: [ owner, key, value ] args\n if (typeof data === \"string\") {\n cache[data] = value;\n\n // Handle: [ owner, { properties } ] args\n } else {\n // Fresh assignments by object are shallow copied\n if (isEmptyObject(cache)) {\n extend(this.cache[unlock], data);\n // Otherwise, copy the properties one-by-one to the cache object\n } else {\n for (prop in data) {\n //@ts-ignore\n cache[prop] = data[prop];\n }\n }\n }\n return cache;\n }\n\n public get(owner: HTMLElement, key: string) {\n // Either a valid cache is found, or will be created.\n // New caches will be created and the unlock returned,\n // allowing direct access to the newly created\n // empty data object. A valid owner object must be provided.\n var cache = this.cache[this.key(owner)];\n\n return key === undefined ? cache : cache[key];\n }\n\n public access(owner: HTMLElement, key: string, value: any) {\n var stored;\n // In cases where either:\n //\n // 1. No key was specified\n // 2. A string key was specified, but no value provided\n //\n // Take the \"read\" path and allow the get method to determine\n // which value to return, respectively either:\n //\n // 1. The entire cache object\n // 2. The data stored at the key\n //\n if (key === undefined || (key && typeof key === \"string\" && value === undefined)) {\n stored = this.get(owner, key);\n\n return stored !== undefined ? stored : this.get(owner, camelCase(key));\n }\n\n // [*]When the key is not a string, or both a key and value\n // are specified, set or extend (existing objects) with either:\n //\n // 1. An object of properties\n // 2. A key and value\n //\n this.set(owner, key, value);\n\n // Since the \"set\" path can have two possible entry points\n // return the expected data based on which path was taken[*]\n return value !== undefined ? value : key;\n }\n\n public remove(owner: HTMLElement, key: string): void {\n var i,\n name,\n camel,\n unlock = this.key(owner),\n cache = this.cache[unlock];\n\n if (key === undefined) {\n this.cache[unlock] = {};\n } else {\n // Support array or space separated string of keys\n if (isArray(key)) {\n // If \"name\" is an array of keys...\n // When data is initially created, via (\"key\", \"val\") signature,\n // keys will be converted to camelCase.\n // Since there is no way to tell _how_ a key was added, remove\n // both plain key and camelCase key. #12786\n // This will only penalize the array argument path.\n name = key.concat(key.map(camelCase));\n } else {\n camel = camelCase(key);\n // Try the string as a key before any manipulation\n if (key in cache) {\n name = [key, camel];\n } else {\n // If a key with the spaces exists, use it.\n // Otherwise, create an array by matching non-whitespace\n name = camel;\n name = name in cache ? [name] : name.match(rnotwhite) || [];\n }\n }\n\n i = name.length;\n while (i--) {\n delete cache[name[i]];\n }\n }\n }\n\n public hasData(owner: HTMLElement): boolean {\n const _owner = owner as HTMLElement & { [key: string]: any };\n return !isEmptyObject(this.cache[_owner[this.expando]] || {});\n }\n\n public discard(owner: HTMLElement): void {\n const _owner = owner as HTMLElement & { [key: string]: any };\n if (_owner[this.expando]) {\n delete this.cache[_owner[this.expando]];\n }\n }\n}\n\n// var data_priv = new Data();\nconst data_user = new Data();\n\nexport const getWinWidth = function (env: Window) {\n return env.innerWidth || env.document.documentElement.clientWidth || env.document.body.clientWidth;\n};\n\nexport const getWinHeight = function (env: Window) {\n return env.innerHeight || env.document.documentElement.clientHeight || env.document.body.clientHeight;\n};\n\nexport const sendStatisticEventToApp = function (\n sdkApi: SDKApi,\n name: string,\n data: Record<string, string | number | Array<string | number>>,\n devPayload?: Record<string, string | number | Array<string | number>>,\n options?: { forceEnableStatisticV2?: boolean }\n) {\n sdkApi.sendStatisticEvent(name, data, devPayload, options?.forceEnableStatisticV2 ?? false);\n};\n\nexport const getValueOrException = function <T>(value: T | undefined | null, message: string): T {\n if (value == null) {\n throw new Error(message);\n }\n return value;\n};\n\nexport const getValueOrDefault = function <T>(value: T | undefined | null, defaultValue: T): T {\n if (value == null) {\n return defaultValue;\n }\n return value;\n};\n\nexport const getElementBounding = (env: Window, rect: DOMRect) => {\n var wWidth = getWinWidth(env);\n var wHeight = getWinHeight(env);\n\n var bounding = {\n absolute: {\n width: rect.width,\n height: rect.height,\n left: rect.left,\n right: 0,\n center: {\n x: rect.x + rect.width / 2,\n y: rect.y + rect.height / 2,\n },\n },\n width: (rect.width / wWidth) * 100,\n height: (rect.height / wHeight) * 100,\n left: (rect.left / wWidth) * 100,\n right: 0,\n center: {\n x: ((rect.x + rect.width / 2) / wWidth) * 100,\n y: ((rect.y + rect.height / 2) / wHeight) * 100,\n },\n };\n bounding.right = bounding.left + bounding.width;\n bounding.absolute.right = rect.left + rect.width;\n\n return bounding;\n};\n\nexport const toArray = <T = any>(value: any): Array<T> => Array.prototype.slice.call(value) as Array<T>;\n\nexport const addClass = (target: HTMLElement, className: string): void => {\n var arr = target.className.split(\" \");\n if (arr.indexOf(className) === -1) {\n target.className += \" \" + className;\n }\n};\nexport const removeClass = (target: HTMLElement, className: string): void => {\n target.className = target.className.replace(new RegExp(\"(?:^|\\\\s)\" + className + \"(?:\\\\s|$)\"), \" \").trim();\n};\nexport const classList = (target: HTMLElement): Array<string> => {\n if (target.classList !== undefined) {\n return toArray(target.classList);\n }\n return target.className.split(\" \");\n};\nexport const hasClass = (target: HTMLElement, className: string): boolean => classList(target).indexOf(className) !== -1;\n\nexport const Clipboard = (function (window: Window, document: Document, navigator: Navigator) {\n let textArea: HTMLTextAreaElement;\n\n function isOS() {\n return navigator.userAgent.match(/ipad|iphone/i);\n }\n\n function createTextArea(text: string): void {\n textArea = document.createElement(\"textArea\") as HTMLTextAreaElement;\n textArea.value = text;\n document.body.appendChild(textArea);\n }\n\n function selectText() {\n if (isOS()) {\n const range = document.createRange();\n range.selectNodeContents(textArea);\n const selection = window.getSelection();\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n textArea.setSelectionRange(0, 999999);\n } else {\n textArea.select();\n }\n }\n\n function copyToClipboard() {\n document.execCommand(\"copy\");\n document.body.removeChild(textArea);\n }\n\n const copy = function (text: string): void {\n createTextArea(text);\n selectText();\n copyToClipboard();\n };\n\n return {\n copy,\n };\n})(window, document, navigator);\n\nexport function FilterNumber(x: any): x is number {\n return typeof x === \"number\";\n}\n\nexport function determineLocale(): string {\n // All modern browsers support this. Should match what's used by localeCompare() etc.\n const intl = window.Intl;\n if (intl !== undefined) {\n return intl.NumberFormat().resolvedOptions().locale;\n }\n\n // Fall back to ranked choice locales, which are configured in the browser but aren't necessarily\n // what's used in functions like localeCompare().\n const languages = navigator.languages as string[] | undefined;\n if (languages !== undefined && languages.length > 0) {\n return languages[0];\n }\n\n // Old standard.\n return navigator.language ?? \"en-US\";\n}\n\nexport function isScreenSupportsTouch(env: Window): boolean {\n let supportsTouch = false;\n if (\"ontouchstart\" in env) {\n supportsTouch = true;\n } else if ((env.navigator as any).msPointerEnabled) {\n supportsTouch = true;\n } else if (\"ontouchstart\" in env.document.documentElement) {\n supportsTouch = true;\n }\n return supportsTouch;\n}\n","import { addClass, classList, hasClass, removeClass, toArray } from \"@utils\";\nimport { IAnimation } from \"./animation.h\";\n\nvar supportAnimate = document.documentElement.animate !== undefined;\nsupportAnimate = false; // tmp off\n\nvar _intervals: Array<number> = [];\n\nvar _startShakeAnimation = function (element: HTMLElement) {\n var step = 0;\n return window.setInterval(function () {\n if (element) {\n switch (step) {\n case 0:\n element.style.setProperty(\"transform\", \"translate(1px, 1px) rotate(0deg)\");\n break;\n case 10:\n element.style.setProperty(\"transform\", \"translate(-1px, -2px) rotate(-1deg)\");\n break;\n case 20:\n element.style.setProperty(\"transform\", \"translate(-3px, 0px) rotate(1deg)\");\n break;\n case 30:\n element.style.setProperty(\"transform\", \"translate(3px, 2px) rotate(0deg)\");\n break;\n case 40:\n element.style.setProperty(\"transform\", \"translate(1px, -1px) rotate(1deg)\");\n break;\n case 50:\n element.style.setProperty(\"transform\", \"translate(-1px, 2px) rotate(-1deg)\");\n break;\n case 60:\n element.style.setProperty(\"transform\", \"translate(-3px, 1px) rotate(0deg)\");\n break;\n case 70:\n element.style.setProperty(\"transform\", \"translate(-3px, 1px) rotate(0deg)\");\n break;\n case 80:\n element.style.setProperty(\"transform\", \"translate(-1px, -1px) rotate(1deg)\");\n break;\n case 90:\n element.style.setProperty(\"transform\", \"translate(1px, 2px) rotate(0deg)\");\n break;\n case 100:\n element.style.setProperty(\"transform\", \"translate(1px, -2px) rotate(-1deg)\");\n break;\n }\n step += 10;\n if (step > 100) {\n step = 0;\n }\n }\n }, 100);\n};\n\nvar _startExpandShakeAnimation = function (element: HTMLElement) {\n var step = 0;\n return window.setInterval(function () {\n if (element) {\n switch (step) {\n case 0:\n element.style.setProperty(\"transform\", \"translate(1px, 1px) rotate(0deg) scale(1.1)\");\n break;\n case 10:\n element.style.setProperty(\"transform\", \"translate(-1px, -2px) rotate(-1deg) scale(1.1)\");\n break;\n case 20:\n element.style.setProperty(\"transform\", \"translate(-3px, 0px) rotate(1deg) scale(1.1)\");\n break;\n case 30:\n element.style.setProperty(\"transform\", \"translate(3px, 2px) rotate(0deg) scale(1.1)\");\n break;\n case 40:\n element.style.setProperty(\"transform\", \"translate(1px, -1px) rotate(1deg) scale(1.1)\");\n break;\n case 50:\n element.style.setProperty(\"transform\", \"translate(-1px, 2px) rotate(-1deg) scale(1.1)\");\n break;\n case 60:\n element.style.setProperty(\"transform\", \"translate(-3px, 1px) rotate(0deg) scale(1.1)\");\n break;\n case 70:\n element.style.setProperty(\"transform\", \"translate(3px, 1px) rotate(-1deg) scale(1.1)\");\n break;\n case 80:\n element.style.setProperty(\"transform\", \"translate(-1px, -1px) rotate(1deg) scale(1.1)\");\n break;\n case 90:\n element.style.setProperty(\"transform\", \"translate(1px, 2px) rotate(0deg) scale(1.1)\");\n break;\n case 100:\n element.style.setProperty(\"transform\", \"translate(1px, -2px) rotate(-1deg) scale(1.1)\");\n break;\n }\n step += 10;\n if (step > 100) {\n step = 0;\n }\n }\n }, 100);\n};\n\nvar _startBlurAnimation = function (element: HTMLElement) {\n const listener = (e: TransitionEvent) => {\n if (e.propertyName === \"filter\" && e.target != null) {\n const target = e.target as HTMLElement;\n if (hasClass(target, \"animated\")) {\n if (target.style.filter === \"blur(0px)\" || target.style.filter === \"\") {\n setTimeout(function () {\n target.style.filter = \"blur(5px)\";\n }, 10);\n } else if (target.style.filter === \"blur(5px)\") {\n setTimeout(function () {\n target.style.filter = \"blur(0px)\";\n }, 10);\n }\n } else {\n target.style.filter = \"\";\n target.removeEventListener(\"transitionend\", listener);\n }\n }\n };\n element.addEventListener(\"transitionend\", listener);\n};\n\nvar shortDuration = {\n duration: 1000,\n iterations: 1,\n};\nvar longDuration = {\n duration: 10000,\n iterations: 1,\n};\nvar extraLongDuration = {\n duration: 20000,\n iterations: 1,\n};\nvar longInfinityDuration = {\n duration: 10000,\n iterations: Infinity,\n};\n\nvar getAnimationFunction = function (element: HTMLElement): () => void {\n if (!hasClass(element, \"animated\")) {\n if (hasClass(element, \"narrative-element-animation-shake\")) {\n if (element.parentElement && hasClass(element.parentElement, \"narrative-element-expand\")) {\n return function () {\n _intervals.push(_startExpandShakeAnimation(element));\n addClass(element, \"animated\");\n };\n } else {\n return function () {\n _intervals.push(_startShakeAnimation(element));\n addClass(element, \"animated\");\n };\n }\n } else if (hasClass(element, \"narrative-element-animation-blur\")) {\n return function () {\n _startBlurAnimation(element);\n addClass(element, \"animated\");\n };\n } else {\n return function () {\n addClass(element, \"active\");\n addClass(element, \"animated\");\n };\n }\n }\n return function () {};\n};\n\nexport const animationApi: IAnimation = {\n start: function (slide: HTMLElement, animate: boolean = false) {\n if (supportAnimate && animate) {\n // for editor, todo add .reset-animation to narrative-editor-slide && clear that\n if (!hasClass(slide, \"narrative-slide\")) {\n addClass(slide, \"reset-animation\");\n }\n\n const elements = toArray<HTMLElement>(slide.querySelectorAll(\".narrative-element-animation\"));\n\n elements.forEach(element => {\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n var _classList = classList(element);\n\n if (_classList.indexOf(\"narrative-element-animation-fade-in-up\") !== -1) {\n element.animate(\n {\n transform: [\"translateY(\" + height + \"px)\", \"translateY(0)\"],\n opacity: [0, 1],\n },\n shortDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-fade-in-down\") !== -1) {\n element.animate(\n {\n transform: [\"translateY(\" + -1 * height + \"px)\", \"translateY(0)\"],\n opacity: [0, 1],\n },\n shortDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-fade-in-left\") !== -1) {\n element.animate(\n {\n transform: [\"translateX(\" + -1 * width + \"px)\", \"translateX(0)\"],\n opacity: [0, 1],\n },\n shortDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-fade-in-right\") !== -1) {\n element.animate(\n {\n transform: [\"translateX(\" + width + \"px)\", \"translateX(0)\"],\n opacity: [0, 1],\n },\n shortDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-blur\") !== -1) {\n element.animate(\n [\n { filter: \"blur(5px)\", offset: 0 },\n { filter: \"blur(0px)\", offset: 0.5 },\n { filter: \"blur(5px)\", offset: 1 },\n ],\n longInfinityDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-focus-in\") !== -1) {\n element.animate({ filter: [\"blur(12px)\", \"blur(0px)\"], opacity: [0, 1] }, shortDuration);\n } else if (_classList.indexOf(\"narrative-element-animation-scroll-left\") !== -1) {\n element.animate(\n {\n transform: [\"scale(1.2) translateX(\" + 0.08 * width + \"px)\", \"scale(1.2) translateX(\" + -0.08 * width + \"px)\"],\n },\n extraLongDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-scroll-right\") !== -1) {\n element.animate(\n {\n transform: [\"scale(1.2) translateX(\" + -0.08 * width + \"px)\", \"scale(1.2) translateX(\" + 0.08 * width + \"px)\"],\n },\n extraLongDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-scroll-up\") !== -1) {\n element.animate(\n {\n transform: [\"scale(1.2) translateY(\" + 0.08 * width + \"px)\", \"scale(1.2) translateY(\" + -0.08 * width + \"px)\"],\n },\n extraLongDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-scroll-down\") !== -1) {\n element.animate(\n {\n transform: [\"scale(1.2) translateY(\" + -0.08 * width + \"px)\", \"scale(1.2) translateY(\" + 0.08 * width + \"px)\"],\n },\n extraLongDuration\n );\n } else if (_classList.indexOf(\"narrative-element-animation-zoom\") !== -1) {\n element.animate({ transform: [\"scale(1)\", \"scale(1.2)\"] }, longDuration);\n } else if (_classList.indexOf(\"narrative-element-animation-zoom-out\") !== -1) {\n element.animate({ transform: [\"scale(1.2)\", \"scale(1)\"] }, longDuration);\n } else if (_classList.indexOf(\"narrative-element-animation-shake\") !== -1) {\n element.animate(\n [\n { transform: \"translate(1px, 1px) rotate(0deg)\", offset: 0 },\n { transform: \"translate(-1px, -2px) rotate(-1deg)\", offset: 0.1 },\n { transform: \"translate(-3px, 0px) rotate(1deg)\", offset: 0.2 },\n { transform: \"translate(3px, 2px) rotate(0deg)\", offset: 0.3 },\n { transform: \"translate(1px, -1px) rotate(1deg)\", offset: 0.4 },\n { transform: \"translate(-1px, 2px) rotate(-1deg)\", offset: 0.5 },\n { transform: \"translate(-3px, 1px) rotate(0deg)\", offset: 0.6 },\n { transform: \"translate(3px, 1px) rotate(-1deg)\", offset: 0.7 },\n { transform: \"translate(-1px, -1px) rotate(1deg)\", offset: 0.8 },\n { transform: \"translate(1px, 2px) rotate(0deg)\", offset: 0.9 },\n { transform: \"translate(1px, -2px) rotate(-1deg)\", offset: 1 },\n ],\n { duration: 1000, iterations: Infinity, composite: \"add\" }\n );\n }\n });\n\n if (elements.length > 0) {\n requestAnimationFrame(() => removeClass(slide, \"reset-animation\"));\n }\n } else {\n addClass(slide, \"animation-fallback\");\n\n type SavedAnimation = { cb: () => void; timerId?: number; timeout: number; needResume?: boolean };\n const animations: Array<SavedAnimation> = [];\n\n // просто Array\n\n var elements = slide.querySelectorAll<HTMLElement>(\".narrative-element-animation\");\n var isEditorSlide = hasClass(slide, \"narrative-editor-slide\");\n for (var i = 0; i < elements.length; i++) {\n if (!isEditorSlide && !elements[i].style.getPropertyValue(\"--width\")) {\n var rects = elements[i].getBoundingClientRect();\n var width = rects.width;\n var height = rects.height;\n if (width && height) {\n elements[i].style.setProperty(\"--width\", width + \"px\");\n elements[i].style.setProperty(\"--height\", height + \"px\");\n }\n }\n (function (element) {\n var timeout = 50;\n\n if (element.getAttribute(\"data-animation-timeout\") && parseFloat(element.getAttribute(\"data-animation-timeout\") ?? \"0\")) {\n timeout = parseFloat(element.getAttribute(\"data-animation-timeout\") ?? \"0\") * 1000;\n }\n\n const cb = () => {\n getAnimationFunction(element)();\n if (animation) {\n animation.timerId = undefined;\n }\n };\n const animation: SavedAnimation = {\n cb,\n timeout,\n timerId: window.setTimeout(cb, timeout),\n };\n animations.push(animation);\n })(elements[i]);\n }\n\n var startAt = new Date().getTime();\n // onstop && onpause\n return function (isStop: boolean) {\n for (var animation of animations) {\n if (animation[\"timerId\"] !== undefined) {\n clearTimeout(animation[\"timerId\"]);\n animation[\"timerId\"] = undefined;\n animation[\"timeout\"] -= new Date().getTime() - startAt;\n animation[\"needResume\"] = !isStop;\n }\n }\n\n // resume\n return function () {\n startAt = new Date().getTime();\n for (const animation of animations) {\n if (animation[\"timerId\"] === undefined && animation[\"needResume\"] === true) {\n animation[\"timerId\"] = window.setTimeout(animation[\"cb\"], animation[\"timeout\"]);\n }\n }\n };\n };\n }\n },\n\n stop: function (slide: HTMLElement, animate: boolean) {\n if (supportAnimate && animate) {\n /** @type {HTMLElement[]} */\n var elements = toArray<HTMLElement>(slide.querySelectorAll(\".narrative-element-animation\"));\n elements.forEach(function (el) {\n el.getAnimations().forEach(function (animation) {\n animation.cancel();\n });\n });\n } else {\n for (var i = 0; i < _intervals.length; i++) {\n clearInterval(_intervals[i]);\n }\n\n if (slide) {\n var elements = toArray<HTMLElement>(slide.querySelectorAll(\".narrative-element-animation\"));\n for (var i = 0; i < elements.length; i++) {\n removeClass(elements[i], \"active\");\n removeClass(elements[i], \"animated\");\n elements[i].style.setProperty(\"transform\", \"\");\n elements[i].style.setProperty(\"filter\", \"\");\n }\n }\n }\n },\n\n pause: function (slide: HTMLElement): void {\n if (supportAnimate) {\n /* var elements = document.querySelectorAll('.narrative-element-animation');\n elements = _toArray(elements);\n\n elements.forEach(function(el) {\n el.playState = \"paused\";\n // el.currentTime = 0;\n });*/\n\n var elements = toArray<HTMLElement>(slide.querySelectorAll(\".narrative-element-animation\"));\n elements.forEach(function (el) {\n el.getAnimations().forEach(function (animation) {\n if (animation.playState !== \"finished\" && animation.playState === \"running\") {\n animation.pause();\n }\n });\n });\n\n // slide.getAnimations().forEach(function (animation) {\n // if (animation.playState !== 'finished' && animation.playState === 'running') {\n // animation.pause();\n // }\n // });\n }\n },\n resume: function (slide: HTMLElement): void {\n if (supportAnimate) {\n var elements = toArray<HTMLElement>(slide.querySelectorAll(\".narrative-element-animation\"));\n elements.forEach(function (el) {\n el.getAnimations().forEach(function (animation) {\n if (animation.playState === \"paused\") {\n animation.play();\n }\n });\n });\n }\n },\n reset: function (slide: HTMLElement): void {\n // _addClass(slide, 'reset-animation');\n },\n};\n","import { APIResponse, DEFAULT_SLIDE_DURATION, FontDTO, SDKApi } from \"@skd_api\";\nimport { Widgets, WidgetsSharedDataMap } from \"../../widgets/base\";\nimport { animationApi } from \"@animation\";\nimport { SDKInterface } from \"../es_module_sdk_api.h\";\nimport { TIMELINE_ACTION } from \"../../layout/slide_timeline\";\n\ndeclare class Toast {\n constructor(options: { content: string });\n}\n\nexport class EsModuleSdkApi implements SDKApi {\n constructor(private readonly sdkBinding: () => SDKInterface) {}\n\n getCardServerData(cardId: number): Record<string, any> | null {\n return this.sdkBinding().getCardServerData(cardId);\n }\n\n updateCardServerDataLocally(cardId: number, data: Record<string, any>): void {\n return this.sdkBinding().updateCardServerDataLocally(data);\n }\n\n getSlideDuration(cardId: number, slideIndex: number): number | null {\n return this.sdkBinding().getSlideDuration(cardId, slideIndex);\n }\n\n showNextSlide(duration: number): void {\n this.sdkBinding().showNextSlide(duration);\n }\n\n sendStatisticEvent(\n name: string,\n data: Record<string, string | number | Array<string | number>>,\n devPayload?: Record<string, string | number | Array<string | number>>,\n forceEnableStatisticV2?: boolean\n ): void {\n this.sdkBinding().sendStatisticEvent(name, data, devPayload, forceEnableStatisticV2);\n }\n\n getCardLocalData(): Promise<Record<string, any>> {\n return this.sdkBinding().getCardLocalData();\n }\n\n isExistsShowLayer(): boolean {\n return true;\n }\n\n showLayer(index: number) {\n this.sdkBinding().showLayer(index);\n }\n\n get cardAnimation() {\n return animationApi;\n }\n\n get isAndroid(): boolean {\n return false;\n }\n\n get isIOS(): boolean {\n return false;\n }\n\n get isWeb(): boolean {\n return true;\n }\n\n pauseUI() {\n this.sdkBinding().pauseUI();\n }\n\n resumeUI() {\n this.sdkBinding().resumeUI();\n }\n\n get isExistsShowCardTextInput(): boolean {\n return true;\n }\n\n showCardTextInput(id: string, data: Record<string, any>): void {\n this.sdkBinding().showCardTextInput(id, data);\n }\n\n setCardLocalData(keyValue: Record<string, any>, sendToServer: boolean) {\n this.sdkBinding().setCardLocalData(keyValue, sendToServer);\n }\n\n getWidgetsSharedData<WidgetType extends keyof WidgetsSharedDataMap>(cardId: number, widget: Widgets): WidgetsSharedDataMap[WidgetType] | null {\n return this.sdkBinding().getWidgetsSharedData<WidgetType>(cardId, widget);\n }\n\n vibrate(pattern: number): void {\n navigator.vibrate(pattern);\n }\n\n openUrl(data: {\n type: \"link\" | \"swipeUpLink\" | \"swipeUpItems\";\n link: {\n type: \"url\" | \"json\";\n target: string;\n };\n elementId?: string;\n }): void {\n this.sdkBinding().openUrl(data);\n }\n\n sendApiRequest<ResponseDTO>(\n url: string,\n method: string,\n params: Record<string, any> | null,\n headers: Record<string, any> | null,\n data: Record<string, any> | null,\n profilingKey: string\n ): Promise<APIResponse<ResponseDTO>> {\n return this.sdkBinding().sendApiRequest(url, method, params, headers, data, profilingKey);\n }\n\n sendApiRequestSupported(): boolean {\n return true;\n }\n\n showToast(text: string): void {\n this.sdkBinding().showToast(text);\n }\n\n get sdkCanSendShareComplete(): boolean {\n return true;\n }\n\n get isExistsShare(): boolean {\n return true;\n }\n\n share(\n id: string,\n config: {\n url?: string | null;\n text?: string | null;\n title?: string | null;\n files?: Array<{\n file: File;\n name: string;\n type: string;\n }> | null;\n }\n ) {\n this.sdkBinding().share(id, config);\n }\n\n shareSlideScreenshot(shareId: string, hideElementsSelector?: string, shareText?: string): void {\n this.sdkBinding().shareSlideScreenshot(shareId, hideElementsSelector, shareText);\n }\n\n get isExistsShowCardSlide(): boolean {\n return true;\n }\n\n showCardSlide(index: number): void {\n this.sdkBinding().showCardSlide(index);\n }\n\n get isExistsShowNextCard(): boolean {\n return true;\n }\n\n cardShowNext(): void {\n this.sdkBinding().cardShowNext();\n }\n\n setCardSessionValue(element: HTMLElement, key: string, value: string): void {\n this.sdkBinding().setCardSessionValue(key, value);\n }\n\n getCardSessionValue(element: HTMLElement, key: string): string | undefined {\n return this.sdkBinding().getCardSessionValue(key);\n }\n\n updateTimeline(slideIndex: number, action: TIMELINE_ACTION, currentTime: number, duration: number, showLoader: boolean, showError: boolean): void {\n const updateTimeline = this.sdkBinding().updateTimeline;\n if (updateTimeline != null) {\n updateTimeline(slideIndex, action, currentTime, duration, showLoader, showError);\n }\n }\n\n cardPausedCallback(currentTime: number | null) {}\n\n cardResumedCallback(currentTime: number | null) {}\n\n startDisabledTimeline(cardId: number, slideIndex: number): void {\n // old api\n this.showNextSlide(this.getSlideDuration(cardId, slideIndex) ?? DEFAULT_SLIDE_DURATION);\n }\n\n getCardFonts(): Array<FontDTO> {\n return this.sdkBinding().getCardFonts();\n }\n\n disableVerticalSwipeGesture(): void {\n this.sdkBinding().disableVerticalSwipeGesture();\n }\n\n enableVerticalSwipeGesture(): void {\n this.sdkBinding().enableVerticalSwipeGesture();\n }\n\n disableBackpress(): void {}\n\n enableBackpress(): void {}\n\n closeCard(reason: string): void {\n this.sdkBinding().closeCard(reason);\n }\n\n openStory(id: number, index: number): void {\n this.sdkBinding().openStory(id, index);\n }\n\n openGame(gameInstanceId: string): void {\n this.sdkBinding().openGame(gameInstanceId);\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetDataInput } from \"../../widgets/data_input\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class DataInput implements IElement {\n private static readonly _className = \"narrative-element-data-input\";\n\n public static className(): string {\n return DataInput._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _widgetApi: typeof WidgetDataInput.api\n ) {}\n\n public static isTypeOf(element: IElement): element is DataInput {\n return element instanceof DataInput;\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n try {\n this._widgetApi.init(this._elementNodeRef, localData);\n } catch (e) {\n console.error(e);\n }\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n\n handleClick(): boolean {\n return false;\n }\n\n setUserData(id: string, text: string): void {\n this._widgetApi.setUserData(id, text);\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetBarcode } from \"../../widgets/barcode\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class Barcode implements IElement {\n private static readonly _className = \"narrative-element-barcode\";\n\n public static className(): string {\n return Barcode._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _widgetApi: typeof WidgetBarcode.api\n ) {}\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n try {\n this._widgetApi.init(this._elementNodeRef, localData);\n } catch (e) {\n console.error(e);\n }\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n\n handleClick(): boolean {\n return false;\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { Layer } from \"../Layer\";\n\nexport class ClickableBase {\n constructor(private readonly _element: HTMLElement) {}\n}\n","import { LocalData } from \"@layout\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\nimport { ClickableBase } from \"./ClickableBase\";\n\nexport class Button extends ClickableBase implements IElement {\n private static readonly _className = \"narrative-element-link\";\n\n public static className(): string {\n return Button._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer\n ) {\n super(_elementNodeRef);\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n\n onStart() {}\n onStop() {}\n\n handleClick(): boolean {\n return false;\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetCopy } from \"../../widgets/copy\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class Copy implements IElement {\n private static readonly _className = \"narrative-element-copy\";\n\n public static className(): string {\n return Copy._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _widgetApi: typeof WidgetCopy.api\n ) {}\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n try {\n this._widgetApi.init(this._elementNodeRef, localData);\n } catch (e) {\n console.error(e);\n }\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n\n handleClick(): boolean {\n return false;\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetDateCountdown } from \"../../widgets/date_countdown\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class DateCountdown implements IElement {\n private static readonly _className = \"narrative-element-date-countdown\";\n\n public static className(): string {\n return DateCountdown._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _layersNodesRefs: Array<HTMLElement>,\n private readonly _widgetApi: typeof WidgetDateCountdown.api\n ) {}\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n try {\n this._widgetApi.init(this._elementNodeRef, this._layersNodesRefs, localData);\n } catch (e) {\n console.error(e);\n }\n return Promise.resolve(true);\n }\n onPause() {\n this._widgetApi.onPause(this._elementNodeRef);\n }\n onResume() {\n this._widgetApi.onResume(this._elementNodeRef);\n }\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n\n handleClick(): boolean {\n return false;\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetPoll } from \"../../widgets/poll\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class Poll implements IElement {\n private static readonly _className = \"narrative-element-poll\";\n\n public static className(): string {\n return Poll._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _widgetApi: typeof WidgetPoll.api\n ) {}\n\n public static isTypeOf(element: IElement): element is Poll {\n return element instanceof Poll;\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n try {\n this._widgetApi.init(this._elementNodeRef, localData);\n } catch (e) {\n console.error(e);\n }\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n handleClick(): boolean {\n return false;\n }\n\n setUserData(id: string, text: string): void {\n this._widgetApi.setUserData(id, text);\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetPollLayers } from \"../../widgets/poll_layers\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class PollLayers implements IElement {\n private static readonly _className = \"narrative-element-poll-layers\";\n\n public static className(): string {\n return PollLayers._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _layersNodesRefs: Array<HTMLElement>,\n private readonly _widgetApi: typeof WidgetPollLayers.api\n ) {}\n\n public static isTypeOf(element: IElement): element is PollLayers {\n return element instanceof PollLayers;\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n try {\n this._widgetApi.init(this._elementNodeRef, this._layersNodesRefs, localData);\n } catch (e) {\n console.error(e);\n }\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n handleClick(): boolean {\n return false;\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetProducts } from \"../../widgets/products\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class Products implements IElement {\n private static readonly _className = \"narrative-element-products\";\n\n public static className(): string {\n return Products._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _widgetApi: typeof WidgetProducts.api\n ) {}\n\n public static isTypeOf(element: IElement): element is Products {\n return element instanceof Products;\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n try {\n this._widgetApi.init(this._elementNodeRef, localData);\n } catch (e) {\n console.error(e);\n }\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n\n handleClick(): boolean {\n return false;\n }\n\n handleBackpress(): void {\n this._widgetApi.onHandleBackpress(this._elementNodeRef);\n }\n\n get elementNodeRef(): HTMLElement {\n return this._elementNodeRef;\n }\n\n get isClickCapturedByWidget(): boolean {\n return this._widgetApi.isClickCapturedByWidget(this._elementNodeRef);\n }\n\n get isLayerForcePaused(): boolean {\n return this._widgetApi.isForcePaused(this._elementNodeRef);\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetQuest } from \"../../widgets/quest\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class Quest implements IElement {\n private static readonly _className = \"narrative-element-quest\";\n\n public static className(): string {\n return Quest._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _widgetApi: typeof WidgetQuest.api\n ) {}\n\n public static isTypeOf(element: IElement): element is Quest {\n return element instanceof Quest;\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n return this._widgetApi.init(this._elementNodeRef, localData);\n }\n\n onPause() {}\n onResume() {}\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n\n handleClick(): boolean {\n return false;\n }\n\n handleRouteClick(options: { direction: \"backward\" | \"forward\"; slideIndex: number; slideCount: number }): { continueDefaultNavigation: boolean } {\n return this._widgetApi.handleRouteClick(this._elementNodeRef, options);\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetQuiz } from \"../../widgets/quiz\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class Quiz implements IElement {\n private static readonly _className = \"narrative-element-quiz\";\n\n public static className(): string {\n return Quiz._className;\n }\n\n // widgetApi in ctor\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _widgetApi: typeof WidgetQuiz.api\n ) {}\n\n public static isTypeOf(element: IElement): element is Quiz {\n return element instanceof Quiz;\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n try {\n this._widgetApi.init(this._elementNodeRef, localData);\n } catch (e) {\n console.error(e);\n }\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n\n handleClick(): boolean {\n return false;\n }\n\n get slideQuizIsDone(): boolean {\n return this._widgetApi.slideQuizIsDone(this._elementNodeRef);\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetQuizGrouped } from \"../../widgets/quiz_grouped\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class QuizGrouped implements IElement {\n private static readonly _className = \"narrative-element-quiz-grouped\";\n\n public static className(): string {\n return QuizGrouped._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _widgetApi: typeof WidgetQuizGrouped.api\n ) {}\n\n public static isTypeOf(element: IElement): element is QuizGrouped {\n return element instanceof QuizGrouped;\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n try {\n this._widgetApi.init(this._elementNodeRef, localData);\n } catch (e) {\n console.error(e);\n }\n return Promise.resolve(true);\n }\n\n onPause() {}\n onResume() {}\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n handleClick(): boolean {\n return false;\n }\n\n get slideQuizGroupedIsDone(): boolean {\n return this._widgetApi.slideQuizIsDone(this._elementNodeRef);\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetRangeSlider } from \"../../widgets/range_slider\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class RangeSlider implements IElement {\n private static readonly _className = \"narrative-element-range-slider\";\n\n public static className(): string {\n return RangeSlider._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _widgetApi: typeof WidgetRangeSlider.api\n ) {}\n\n public static isTypeOf(element: IElement): element is RangeSlider {\n return element instanceof RangeSlider;\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n try {\n this._widgetApi.init(this._elementNodeRef, localData);\n } catch (e) {\n console.error(e);\n }\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n\n get isClickCapturedBySlider(): boolean {\n return this._widgetApi.isClickCapturedBySlider(this._elementNodeRef);\n }\n\n handleClick(): boolean {\n return false;\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetRate } from \"../../widgets/rate\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class Rate implements IElement {\n private static readonly _className = \"narrative-element-rate\";\n\n public static className(): string {\n return Rate._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _widgetApi: typeof WidgetRate.api\n ) {}\n\n public static isTypeOf(element: IElement): element is Rate {\n return element instanceof Rate;\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n try {\n this._widgetApi.init(this._elementNodeRef, localData);\n } catch (e) {\n console.error(e);\n }\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n\n handleClick(): boolean {\n return false;\n }\n\n setUserData(id: string, text: string): void {\n this._widgetApi.setUserData(id, text);\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetShare } from \"../../widgets/share\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class Share implements IElement {\n private static readonly _className = \"narrative-element-share\";\n private static readonly _widgetApiName = \"_narrative_share\";\n\n public static className(): string {\n return Share._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _layersNodesRefs: Array<HTMLElement>,\n private readonly _widgetApi: typeof WidgetShare.api\n ) {}\n\n public static isTypeOf(element: IElement): element is Share {\n return element instanceof Share;\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n try {\n this._widgetApi.init(this._elementNodeRef, this._layersNodesRefs, localData);\n } catch (e) {\n console.error(e);\n }\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n\n handleClick(): boolean {\n return false;\n }\n\n complete(id: string, isSuccess: boolean): void {\n this._widgetApi.complete(id, isSuccess);\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class SwipeUpItems implements IElement {\n private static readonly _className = \"narrative-element-swipe-up-items\";\n\n public static className(): string {\n return SwipeUpItems._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer\n ) {}\n\n public static isTypeOf(element: IElement): element is SwipeUpItems {\n return element instanceof SwipeUpItems;\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n onStart() {}\n onStop() {}\n handleClick(): boolean {\n return false;\n }\n\n get elementNodeRef(): HTMLElement {\n return this._elementNodeRef;\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetTest } from \"../../widgets/test\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class Test implements IElement {\n private static readonly _className = \"narrative-element-test\";\n\n public static className(): string {\n return Test._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _widgetApi: typeof WidgetTest.api\n ) {}\n\n public static isTypeOf(element: IElement): element is Test {\n return element instanceof Test;\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n try {\n this._widgetApi.init(this._elementNodeRef, localData);\n } catch (e) {\n console.error(e);\n }\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n handleClick(): boolean {\n return false;\n }\n\n get slideTestIsDone(): boolean {\n return this._widgetApi.slideTestIsDone(this._elementNodeRef);\n }\n\n get slideTestWithTimer(): boolean {\n return this._widgetApi.slideTestWithTimer(this._elementNodeRef);\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { WidgetVote } from \"../../widgets/vote\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class Vote implements IElement {\n private static readonly _className = \"narrative-element-vote\";\n\n public static className(): string {\n return Vote._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _widgetApi: typeof WidgetVote.api\n ) {}\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n try {\n this._widgetApi.init(this._elementNodeRef, localData);\n } catch (e) {\n console.error(e);\n }\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n onStart() {\n this._widgetApi.onStart(this._elementNodeRef);\n }\n onStop() {\n this._widgetApi.onStop(this._elementNodeRef);\n }\n handleClick(): boolean {\n return false;\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class Text implements IElement {\n private static readonly _className = \"narrative-element-text\";\n\n public static className(): string {\n return Text._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer\n ) {}\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n onStart() {}\n onStop() {}\n handleClick(): boolean {\n return false;\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","export const waitForImageHtmlElementLoad = async (nodeRef: HTMLImageElement): Promise<HTMLImageElement> => {\n return new Promise((resolve, reject) => {\n const onLoad = function () {\n requestAnimationFrame(() =>\n requestAnimationFrame(() => {\n resolve(nodeRef);\n nodeRef.removeEventListener(\"load\", onLoad);\n })\n );\n };\n nodeRef.addEventListener(\"load\", onLoad);\n if (nodeRef.complete && 0 !== nodeRef.naturalHeight) {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n resolve(nodeRef);\n });\n });\n }\n nodeRef.addEventListener(\"error\", err => reject(err));\n });\n};\n\nexport const waitForVideoHtmlElementLoad = async (nodeRef: HTMLVideoElement): Promise<HTMLVideoElement> => {\n return new Promise((resolve, reject) => {\n if (void 0 !== nodeRef.oncanplaythrough) {\n const onCanplaythrough = () => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n resolve(nodeRef);\n nodeRef.removeEventListener(\"canplaythrough\", onCanplaythrough);\n });\n });\n };\n nodeRef.addEventListener(\"canplaythrough\", onCanplaythrough);\n nodeRef.load();\n } else {\n var onCanPlay = function () {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n resolve(nodeRef);\n nodeRef.removeEventListener(\"canplay\", onCanPlay);\n });\n });\n };\n nodeRef.addEventListener(\"canplay\", onCanPlay);\n nodeRef.load();\n }\n });\n};\n\nexport function htmlEncode(s: string): string {\n return s.replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/'/g, \"'\").replace(/\"/g, \""\");\n}\n\nexport function addClass(target: HTMLElement, className: string): void {\n if (classList(target).indexOf(className) === -1) {\n target.className += \" \" + className;\n }\n}\n\nexport function removeClass(target: HTMLElement, className: string): void {\n var list = classList(target);\n var index = list.indexOf(className);\n if (index !== -1) {\n delete list[index];\n target.className = list.join(\" \");\n }\n}\n\nfunction classList(target: HTMLElement): Array<string> {\n if (target.classList !== undefined) {\n return Array.prototype.slice.call(target.classList);\n }\n return target.className.split(\" \");\n}\n\nexport function hasClass(target: HTMLElement, className: string): boolean {\n return classList(target).indexOf(className) !== -1;\n}\n\nexport function winWidth(): number {\n return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\n}\n\nexport function winHeight(): number {\n return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;\n}\n\nexport function isNumber(n: any): boolean {\n return typeof n === \"number\" && !isNaN(n);\n}\n\nexport function isObject(value: any): boolean {\n let type = typeof value;\n return value != null && (type === \"object\" || type === \"function\");\n}\n\nexport function isString(value: any): boolean {\n let type = typeof value;\n return value != null && type === \"string\";\n}\n\nexport function isFunction(functionToCheck: any): string {\n let getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === \"[object Function]\";\n}\n","import { LocalData } from \"@layout\";\nimport { Layer } from \"../Layer\";\nimport { Utils } from \"../utils\";\nimport { IElement } from \"../IElement\";\nimport { ClickableBase } from \"./ClickableBase\";\n\nexport class Image extends ClickableBase implements IElement {\n private static readonly _className = \"narrative-element-image\";\n\n public static className(): string {\n return Image._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer\n ) {\n super(_elementNodeRef);\n const mediaElements = Array.from(this._elementNodeRef.querySelectorAll(\"img\"));\n this.mediaElementsLoadingPromises = mediaElements.map(Utils.waitForImageHtmlElementLoad);\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n return Promise.resolve(true);\n }\n\n onPause() {}\n\n onResume() {}\n\n onStart() {}\n\n onStop() {}\n\n handleClick(): boolean {\n return false;\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\n\nexport class SwipeUp implements IElement {\n private static readonly _className = \"narrative-element-swipe-up\";\n\n public static className(): string {\n return SwipeUp._className;\n }\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer\n ) {}\n\n public static isTypeOf(element: IElement): element is SwipeUp {\n return element instanceof SwipeUp;\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n init(localData: LocalData): Promise<boolean> {\n return Promise.resolve(true);\n }\n onPause() {}\n onResume() {}\n onStart() {}\n onStop() {}\n\n handleClick(): boolean {\n return false;\n }\n\n get elementNodeRef(): HTMLElement {\n return this._elementNodeRef;\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n}\n","import { LocalData } from \"@layout\";\nimport { SDKApi } from \"@skd_api\";\nimport { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\nimport { Utils } from \"../utils\";\nimport { type Player as VideoPlayer } from \"@inappstory/video-player\";\n\nexport class Video implements IElement {\n private static readonly _className = \"narrative-element-video\";\n\n public static className(): string {\n return Video._className;\n }\n\n private readonly _video: HTMLVideoElement;\n private readonly _isVOD: boolean = false;\n private readonly _vodData: Record<string, any>;\n private _vodPlayerInstance: VideoPlayer | null = null;\n private _videoStateAdapter: VideoStateAdapter | null = null;\n\n constructor(\n private readonly _elementNodeRef: HTMLElement,\n private readonly _layer: Layer,\n private readonly _VideoPlayer: typeof VideoPlayer | undefined,\n private readonly _sdkApi: SDKApi\n ) {\n const _video = this._elementNodeRef.querySelector(\"video\");\n if (!_video) {\n return;\n }\n this._video = _video;\n\n // _video.addEventListener(\"canplay\", () => console.log(\"canplay\", true));\n // _video.addEventListener(\"complete\", () => console.log(\"complete\", true));\n // _video.addEventListener(\"emptied\", () => console.log(\"emptied\", true));\n // _video.addEventListener(\"ended\", () => console.log(\"ended\", true));\n // _video.addEventListener(\"pause\", () => console.log(\"pause\", true));\n // _video.addEventListener(\"play\", () => console.log(\"play\", true));\n // _video.addEventListener(\"playing\", () => console.log(\"playing\", true));\n // _video.addEventListener(\"progress\", () => console.log(\"progress\", true));\n // _video.addEventListener(\"seeked\", () => console.log(\"seeked\", true));\n // _video.addEventListener(\"seeking\", () => console.log(\"seeking\", true));\n // _video.addEventListener(\"stalled\", () => console.log(\"stalled\", true));\n // _video.addEventListener(\"suspend\", () => console.log(\"suspend\", true));\n // _video.addEventListener(\"waiting\", () => console.log(\"waiting\", true));\n\n // _video.addEventListener(\"timeupdate\", (e) => console.log(`timeupdate: ${e.timeStamp}`, true));\n // _video.addEventListener(\"timeupdate\", (e) =>_log(`timeupdate: ${e.timeStamp}`, true));\n\n const mediaImageElements = Array.from(this._elementNodeRef.querySelectorAll(\"img\"));\n this.mediaElementsLoadingPromises = mediaImageElements.map(Utils.waitForImageHtmlElementLoad);\n\n this._elementNodeRef.classList.add(\"init\");\n if (this._video.getAttribute(\"data-default-muted\") == null) {\n this._video.setAttribute(\"data-default-muted\", this._video.muted ? \"1\" : \"0\");\n }\n\n const vodData_ = this._video.getAttribute(\"data-vod\");\n if (vodData_ != null) {\n try {\n this._vodData = this._convertMpdUrls(JSON.parse(vodData_));\n } catch (e) {\n console.error(e);\n }\n }\n\n this._isVOD = Boolean(this._vodData != null && this._VideoPlayer != null);\n\n if (this._isVOD) {\n this.mediaElementsLoadingPromises.push(this._initVOD(this._vodData));\n } else {\n this.mediaElementsLoadingPromises.push(Utils.waitForVideoHtmlElementLoad(this._video));\n }\n\n // console.log({mediaElementsLoadingPromises: this.mediaElementsLoadingPromises})\n }\n\n public static isTypeOf(element: IElement): element is Video {\n return element instanceof Video;\n }\n\n mediaElementsLoadingPromises: Array<Promise<HTMLImageElement | HTMLVideoElement>> = [];\n\n init(localData: LocalData): Promise<boolean> {\n return Promise.resolve(true);\n }\n\n private _isScreenOnPause = false;\n\n onPause() {\n this._isScreenOnPause = true;\n }\n\n onResume() {\n this._isScreenOnPause = false;\n }\n\n onStart() {}\n onStop() {}\n\n private _initVOD(vodData: Record<string, any>): Promise<HTMLVideoElement> {\n const onWaiting = () => {\n /**\n * When screen on pause - ignore onWaiting\n * (triggered when video paused, not only when canplay = false)\n */\n if (this._isScreenOnPause) {\n return;\n }\n\n // console.log(\"onWaiting\")\n // @ts-ignore\n // _log(\"waiting\", true);\n this._video.setAttribute(\"data-waiting\", \"1\");\n // @ts-ignore\n // _log(`waiting: ${this._video.currentTime}`, true);\n this._layer.timeline.onSlideDataWaiting(this._video.currentTime * 1000);\n // window.synthErrorId = setTimeout(synthError, 15000);\n };\n // this._video.addEventListener(\"waiting\", onWaiting);\n\n const onPlaying = () => {\n // console.log(\"onPlaying\");\n // _log(\"playing\", true);\n // TODO via class instead of data attr\n if (this._video.getAttribute(\"data-waiting\") === \"1\") {\n this._video.setAttribute(\"data-waiting\", \"0\");\n this._layer.timeline.slideResumed(this._video.currentTime * 1000);\n // @ts-ignore\n // _log(`playing: ${this._video.currentTime}`, true);\n // clearTimeout(window.synthErrorId);\n }\n };\n // this._video.addEventListener(\"playing\", onPlaying);\n this._videoStateAdapter = new VideoStateAdapter(this._video, onWaiting, onPlaying);\n\n // @ts-ignore\n // this._video.addEventListener(\"timeupdate\", (e) =>_log(`timeupdate: ${e.timeStamp}`, true));\n // this._video.addEventListener(\"timeupdate\", (e) =>console.log(`timeupdate: ${e.timeStamp}: ${this._video.currentTime}`));\n\n return new Promise((resolve, reject) => {\n // console.log(`initVoD slide idx: ${this._layer.slideIndex}`);\n\n // console.log(\"_initVOD 1\");\n\n // @ts-ignore\n if (this._VideoPlayer != null && this._VideoPlayer.isBrowserSupported() && (\"MediaSource\" in window || \"ManagedMediaSource\" in window)) {\n const player = new this._VideoPlayer();\n\n // console.log(\"_initVOD 2\");\n\n // @ts-ignore\n const onErrorEvent = event => {\n // Extract the PlayerError object from the event.\n onError(event.detail);\n };\n\n // @ts-ignore\n player.addEventListener(\"error\", onErrorEvent);\n\n // @ts-ignore\n const onError = error => {\n // Log the error.\n console.error(\"Error code\", error.code, \"object\", error);\n\n // _log(`video error: ${video.currentTime} code: ${error.code}`, true);\n\n if (this._video.paused) {\n this._layer.stopInternal();\n this._layer.timeline.onSlideError(this._video.currentTime * 1000);\n }\n };\n\n // console.log(\"_initVOD 3\");\n player.attach(this._video).then(() => {\n // console.log(\"_initVOD 4\");\n try {\n player\n // @ts-ignore\n .load(this._VideoPlayer.convertJsonToUri(vodData), 0, \"application/json\")\n .then(() => {\n // console.log(\"_initVOD 5\");\n this._vodPlayerInstance = player;\n\n // This runs if the asynchronous load is successful.\n resolve(this._video);\n })\n .catch(reason => {\n // console.log(\"_initVOD 6\", reason);\n\n // onError is executed if the asynchronous load fails.\n reject(reason);\n onError(reason);\n });\n } catch (e) {\n // onError is executed if the asynchronous load fails.\n reject(e);\n onError(e);\n }\n });\n } else {\n // use default (not mpd) video stream\n // console.error(\"Browser not supported!\");\n // get std video stream\n let src = \"\";\n if (vodData && vodData.formats != null && Array.isArray(vodData.formats) && vodData.formats.length > 0) {\n src = vodData.formats[0].url;\n this._video.src = src;\n resolve(this._video);\n } else {\n reject(\"Empty formats list\");\n }\n }\n });\n }\n\n private _convertMpdUrls(mpd_: Record<string, any>): Record<string, any> {\n if (this._sdkApi.isWeb) {\n return mpd_;\n }\n if (Utils.isObject(mpd_) && mpd_.adaptiveFormats != null && Array.isArray(mpd_.adaptiveFormats)) {\n const mpd = { ...mpd_ };\n for (let i = 0; i < mpd.adaptiveFormats.length; ++i) {\n mpd.adaptiveFormats[i].url = `${this._sdkApi.isAndroid ? `http://vod-asset/` : `vod-asset://`}${mpd.adaptiveFormats[i].cacheName}`;\n }\n return mpd;\n }\n return mpd_;\n }\n\n handleClick(): boolean {\n return false;\n }\n\n get isLayerForcePaused(): boolean {\n return false;\n }\n\n private _videoStartedPromise: Promise<{ currentTime: number }> | null = null;\n public get videoStartedPromise() {\n return this._videoStartedPromise;\n }\n\n public start(muted = true): Promise<{ currentTime: number }> {\n this._videoStartedPromise = new Promise(async resolve => {\n // invariant - always wait for mediaElementsLoadingPromises\n // else call of _initVOD can start and onAllMediaLoaded failed\n // TODO - add for all Elements state invariant protection\n Promise.all(this.mediaElementsLoadingPromises).finally(async () => {\n if (this._video) {\n if (this._isVOD && this._vodPlayerInstance === null) {\n // console.log(\"_initVOD 5.1\");\n await this._initVOD(this._vodData);\n }\n\n // console.log(\"Video:start => this._video.pause()\");\n this._video.pause();\n this._video.currentTime = 0;\n\n // remove init class\n // if vod - create VoD player\n\n if (this._video.getAttribute(\"data-default-muted\") !== \"1\") {\n this._video.muted = muted;\n }\n\n const playPromise = this._video.play();\n if (playPromise != null) {\n playPromise\n .then(() => {\n this._video.currentTime = 0;\n this._elementNodeRef.classList.remove(\"init\");\n resolve({\n currentTime: this._video.currentTime,\n });\n })\n .catch(error => {\n console.error(error);\n resolve({\n currentTime: this._video.currentTime,\n });\n });\n } else {\n setTimeout(() => {\n this._video.currentTime = 0;\n this._elementNodeRef.classList.remove(\"init\");\n resolve({\n currentTime: this._video.currentTime,\n });\n }, 0);\n }\n } else {\n resolve({\n currentTime: 0,\n });\n }\n });\n });\n\n return this._videoStartedPromise;\n }\n\n public pause(resetVideoTime = false): number | null {\n if (this._video) {\n // console.trace(\"Video pause\");\n this._video.pause();\n if (resetVideoTime) {\n this._video.currentTime = 0;\n }\n return this._video.currentTime;\n }\n return null;\n }\n\n public async resume(): Promise<{ currentTime: number }> {\n this._videoStartedPromise = new Promise((resolve, reject) => {\n // _log(\"video before resume: \" + video.currentTime);\n const ts = this._video.currentTime;\n if (!this._video.paused) {\n // console.log(\"Video:resume => this._video.pause()\");\n this._video.pause();\n }\n const playPromise = this._video.play();\n // console.log({ playPromise });\n if (playPromise != null) {\n playPromise\n .then(() => {\n // console.log(\"resolve 1\");\n if (this._video.currentTime < ts) {\n // console.log(\"resolve 1.1\", { ts });\n this._video.currentTime = ts;\n }\n\n resolve({ currentTime: this._video.currentTime });\n })\n .catch(error => {\n console.error(error);\n // console.log(\"error 1\");\n if (this._video.currentTime < ts) {\n this._video.currentTime = ts;\n }\n resolve({ currentTime: this._video.currentTime });\n });\n } else {\n setTimeout(() => {\n // console.log(\"resolve 2\");\n if (this._video.currentTime < ts) {\n this._video.currentTime = ts;\n }\n resolve({ currentTime: this._video.currentTime });\n }, 0);\n }\n });\n return this._videoStartedPromise;\n }\n\n public async stop() {\n if (this._video) {\n // console.log(\"Video:stop => this._video.pause()\");\n this._video.pause();\n }\n if (this._vodPlayerInstance) {\n setTimeout(async () => {\n // destroy VOD on slideStop with timeout, bcz on Android flashes white screen on several frames (if destroy without timeout)\n if (this._vodPlayerInstance) {\n try {\n // show poster\n this._elementNodeRef.classList.add(\"init\");\n if (this._videoStateAdapter) {\n this._videoStateAdapter.destroy();\n this._videoStateAdapter = null;\n }\n await this._vodPlayerInstance.detach();\n await this._vodPlayerInstance.destroy();\n // clean up - so we can reinit on slide start, id need it\n this._vodPlayerInstance = null;\n } catch (e) {\n console.error(e);\n }\n }\n }, 100);\n }\n }\n\n public enableAudio() {\n if (this._video.getAttribute(\"data-default-muted\") !== \"1\") {\n this._video.muted = false;\n }\n }\n public disableAudio() {\n if (this._video.getAttribute(\"data-default-muted\") !== \"1\") {\n this._video.muted = true;\n }\n }\n}\n\n/**\n * iOS Safari\n * sends playing event after waiting event when Video is in waiting state\n */\nconst enum VIDEO_STATE {\n UNKNOWN,\n PLAYING,\n WAITING,\n}\n\n// class VideoStateAdapter {\n//\n// // все же следить по timeupdate\n//\n// constructor(private readonly _video: HTMLVideoElement, private readonly _onWaitingCb: () => void, private readonly _onPlayingCb: () => void) {\n// this._video.addEventListener(\"playing\", () => this._onPlaying());\n// this._video.addEventListener(\"waiting\", () => this._onWaiting());\n// }\n//\n// private _state = VIDEO_STATE.WAITING;\n//\n// private _onWaiting() {\n// if (this._playingCheckerId != null) {\n// window.clearTimeout(this._playingCheckerId);\n// }\n// this._state = VIDEO_STATE.WAITING;\n// this._triggerUpdate();\n// }\n//\n// // in ms\n// private _latestPlayingStamp: number = 0;\n// private _latestPlayingDateStamp: number = new Date().getTime();\n// private _playingCheckerId: number = null!;\n//\n// private _onPlaying() {\n// this._state = VIDEO_STATE.PLAYING;\n// if (this._playingCheckerId != null) {\n// window.clearTimeout(this._playingCheckerId);\n// }\n// this._latestPlayingStamp = this._video.currentTime * 1000;\n// this._latestPlayingDateStamp = new Date().getTime();\n// this._triggerUpdate();\n//\n// // если через 100ms не время не изменится - встаем на паузу\n// // если до исполнения таймера были другие события - то отменять таймер\n// this._playingCheckerId = window.setTimeout(() => {\n// const currentTime = this._video.currentTime * 1000;\n// const diff = currentTime - this._latestPlayingStamp;\n//\n// const timeSpent = new Date().getTime() - this._latestPlayingDateStamp;\n//\n// // @ts-ignore\n// _log(`check, currentTime: ${currentTime}, latestPlayingStamp: ${this._latestPlayingStamp}, diff: ${diff}, timeSpent: ${timeSpent}`, true);\n// if (diff <= (timeSpent / 2)) {\n// this._state = VIDEO_STATE.WAITING;\n// this._triggerUpdate();\n// }\n// }, 100);\n// }\n//\n// private _triggerUpdate() {\n// if (this._state === VIDEO_STATE.PLAYING) {\n// this._onPlayingCb();\n// } else if (this._state === VIDEO_STATE.WAITING) {\n// this._onWaitingCb();\n// }\n// }\n// }\n\nclass VideoStateAdapter {\n // все же следить по timeupdate\n\n constructor(\n private readonly _video: HTMLVideoElement,\n private readonly _onWaitingCb: () => void,\n private readonly _onPlayingCb: () => void\n ) {\n // this._video.addEventListener(\"playing\", () => this._onPlaying());\n // this._video.addEventListener(\"waiting\", () => this._onWaiting());\n this._video.addEventListener(\"timeupdate\", this._onTimeupdateHandler);\n }\n\n destroy() {\n this._video.removeEventListener(\"timeupdate\", this._onTimeupdateHandler);\n }\n\n private _onTimeupdateHandler = this._onTimeupdate.bind(this);\n\n private _timeupdate = Date.now();\n private _state = VIDEO_STATE.UNKNOWN;\n // The event frequency is dependent on the system load, but will be thrown between about 4Hz and 66Hz (assuming the event handlers don't take longer than 250ms to run).\n private readonly _maxDiff = 300;\n private _waitingCheckerId: number = null!;\n private _playingCheckerId: number = null!;\n\n private _onTimeupdate() {\n this._timeupdate = Date.now();\n\n if (this._playingCheckerId != null) {\n window.clearTimeout(this._playingCheckerId);\n }\n\n if (this._state !== VIDEO_STATE.PLAYING) {\n this._state = VIDEO_STATE.PLAYING;\n this._triggerUpdate();\n }\n\n // todo - add debounce\n this._playingCheckerId = window.setTimeout(() => {\n if (Date.now() - this._timeupdate >= this._maxDiff / 2) {\n this._state = VIDEO_STATE.WAITING;\n this._triggerUpdate();\n }\n }, this._maxDiff);\n\n // if (this._state !== VIDEO_STATE.PLAYING) {\n // this._onPlaying();\n // }\n }\n\n private _onWaiting() {\n if (this._playingCheckerId != null) {\n window.clearTimeout(this._playingCheckerId);\n }\n\n // @ts-ignore\n // _log(`_onWaiting, _timeupdate: ${this._timeupdate}`, true);\n this._state = VIDEO_STATE.WAITING;\n this._triggerUpdate();\n }\n\n private _onPlaying() {\n if (this._playingCheckerId != null) {\n window.clearTimeout(this._playingCheckerId);\n }\n\n // @ts-ignore\n // _log(`_onPlaying, _timeupdate: ${this._timeupdate}`, true);\n this._playingCheckerId = window.setTimeout(() => {\n // @ts-ignore\n _log(`_onPlaying cb, _timeupdate: ${this._timeupdate}, now: ${Date.now()}, diff: ${Date.now() - this._timeupdate}`, true);\n if (Date.now() - this._timeupdate <= this._maxDiff / 2) {\n // @ts-ignore\n // _log(`_onPlaying if`, true);\n this._state = VIDEO_STATE.PLAYING;\n this._triggerUpdate();\n }\n }, this._maxDiff);\n\n // this._state = VIDEO_STATE.PLAYING;\n // if (this._playingCheckerId != null) {\n // window.clearTimeout(this._playingCheckerId);\n // }\n // this._latestPlayingStamp = this._video.currentTime * 1000;\n // this._latestPlayingDateStamp = new Date().getTime();\n // this._triggerUpdate();\n //\n // // если через 100ms не время не изменится - встаем на паузу\n // // если до исполнения таймера были другие события - то отменять таймер\n // this._playingCheckerId = window.setTimeout(() => {\n // const currentTime = this._video.currentTime * 1000;\n // const diff = currentTime - this._latestPlayingStamp;\n //\n // const timeSpent = new Date().getTime() - this._latestPlayingDateStamp;\n //\n // // @ts-ignore\n // _log(`check, currentTime: ${currentTime}, latestPlayingStamp: ${this._latestPlayingStamp}, diff: ${diff}, timeSpent: ${timeSpent}`, true);\n // if (diff <= (timeSpent / 2)) {\n // this._state = VIDEO_STATE.WAITING;\n // this._triggerUpdate();\n // }\n // }, 100);\n }\n\n private _triggerUpdate() {\n if (this._state === VIDEO_STATE.PLAYING) {\n this._onPlayingCb();\n } else if (this._state === VIDEO_STATE.WAITING) {\n this._onWaitingCb();\n }\n }\n}\n","import { IElement } from \"../IElement\";\nimport { Layer } from \"../Layer\";\nimport { Barcode } from \"./Barcode\";\nimport { Button } from \"./Button\";\nimport { Copy } from \"./Copy\";\nimport { DataInput } from \"./DataInput\";\nimport { DateCountdown } from \"./DateCountdown\";\nimport { Poll } from \"./Poll\";\nimport { PollLayers } from \"./PollLayers\";\nimport { Products } from \"./Products\";\nimport { Quest } from \"./Quest\";\nimport { Quiz } from \"./Quiz\";\nimport { QuizGrouped } from \"./QuizGrouped\";\nimport { RangeSlider } from \"./RangeSlider\";\nimport { Rate } from \"./Rate\";\nimport { Share } from \"./Share\";\nimport { SwipeUpItems } from \"./SwipeUpItems\";\nimport { Test } from \"./Test\";\nimport { Vote } from \"./Vote\";\nimport { Text } from \"./Text\";\nimport { Image } from \"./Image\";\nimport { SwipeUp } from \"./SwipeUp\";\nimport { Video } from \"./Video\";\n\n// export const tryCreateAtLayer = (layerNodeRef: HTMLElement): IElement {\n// const\n// }\n\n// args nodeRef, elementClassName\n\nexport const tryCreateFromHtmlElement = (nodeRef: HTMLElement, layer: Layer): IElement | null => {\n const layoutApi = layer.layoutService.layoutApi;\n const layersNodesRefs = layer.slide.layersNodesRefs;\n\n for (let elementClassName of nodeRef.classList.values()) {\n // console.log({ elementClassName });\n switch (elementClassName) {\n //////// base elements ///////\n case Text.className():\n return new Text(nodeRef, layer);\n case Button.className():\n return new Button(nodeRef, layer);\n case Image.className():\n return new Image(nodeRef, layer);\n case SwipeUp.className():\n return new SwipeUp(nodeRef, layer);\n case SwipeUpItems.className():\n return new SwipeUpItems(nodeRef, layer);\n case Video.className():\n return new Video(nodeRef, layer, layoutApi.VideoPlayer, layer.layoutService.sdkApi);\n //////// widgets ///////\n case Copy.className():\n return layoutApi.widgetCopyApi ? new Copy(nodeRef, layer, layoutApi.widgetCopyApi) : null;\n case Barcode.className():\n return layoutApi.widgetBarcodeApi ? new Barcode(nodeRef, layer, layoutApi.widgetBarcodeApi) : null;\n case DataInput.className():\n return layoutApi.widgetDataInputApi ? new DataInput(nodeRef, layer, layoutApi.widgetDataInputApi) : null;\n case DateCountdown.className():\n return layoutApi.widgetDateCountdownApi ? new DateCountdown(nodeRef, layer, layersNodesRefs, layoutApi.widgetDateCountdownApi) : null;\n case Poll.className():\n return layoutApi.widgetPollApi ? new Poll(nodeRef, layer, layoutApi.widgetPollApi) : null;\n case PollLayers.className():\n return layoutApi.widgetPollLayersApi ? new PollLayers(nodeRef, layer, layersNodesRefs, layoutApi.widgetPollLayersApi) : null;\n case Quest.className():\n return layoutApi.widgetQuestApi ? new Quest(nodeRef, layer, layoutApi.widgetQuestApi) : null;\n case Quiz.className():\n return layoutApi.widgetQuizApi ? new Quiz(nodeRef, layer, layoutApi.widgetQuizApi) : null;\n case QuizGrouped.className():\n return layoutApi.widgetQuizGroupedApi ? new QuizGrouped(nodeRef, layer, layoutApi.widgetQuizGroupedApi) : null;\n case RangeSlider.className():\n return layoutApi.widgetRangeSliderApi ? new RangeSlider(nodeRef, layer, layoutApi.widgetRangeSliderApi) : null;\n case Rate.className():\n return layoutApi.widgetRateApi ? new Rate(nodeRef, layer, layoutApi.widgetRateApi) : null;\n case Share.className():\n return layoutApi.widgetShareApi ? new Share(nodeRef, layer, layersNodesRefs, layoutApi.widgetShareApi) : null;\n case Test.className():\n return layoutApi.widgetTestApi ? new Test(nodeRef, layer, layoutApi.widgetTestApi) : null;\n case Vote.className():\n return layoutApi.widgetVoteApi ? new Vote(nodeRef, layer, layoutApi.widgetVoteApi) : null;\n case Products.className():\n return layoutApi.widgetProductsApi ? new Products(nodeRef, layer, layoutApi.widgetProductsApi) : null;\n default:\n break;\n }\n }\n return null;\n};\n\nexport * as WidgetFactory from \"./factory\";\n","import { container } from \"@composition\";\nimport { LayoutService } from \"../layout_service/layout_service\";\nimport { TIMELINE_ACTION } from \"./slide_timeline.h\";\nimport { DEFAULT_SLIDE_DURATION } from \"@skd_api\";\n\nenum TimelineDisabledState {\n disabled,\n enabled,\n}\n\n// use Promise\n// await Promise()\n// call timeLine api\n// promise - slideReadyPromise\n\nimport \"../../../global\";\n\nexport class SlideTimeline {\n constructor(\n private readonly slideIndex: number,\n private readonly slideDuration: number,\n private readonly slideDisabledTimer: boolean,\n private readonly slideReady: Promise<void>,\n private readonly _afterResumeQueuePush: (cb: () => void) => void\n ) {\n this.timelineDisabledState = this.slideDisabledTimer ? TimelineDisabledState.disabled : TimelineDisabledState.enabled;\n }\n\n private resumedAt = new Date().getTime();\n private timeSpent = 0;\n private timelineDisabledState: TimelineDisabledState;\n private currentState: TIMELINE_ACTION = TIMELINE_ACTION.STOP;\n\n public static get layoutService(): LayoutService {\n return container.get<LayoutService>();\n }\n\n private get layoutService(): LayoutService {\n return SlideTimeline.layoutService;\n }\n\n public get isSDKSupportUpdateTimeline() {\n if (SlideTimeline.layoutService.sdkApi.isAndroid) {\n return SlideTimeline.layoutService.env.Android && \"updateTimeline\" in SlideTimeline.layoutService.env.Android;\n } else if (SlideTimeline.layoutService.sdkApi.isIOS) {\n const mh = SlideTimeline.layoutService.env?.webkit?.messageHandlers ?? {};\n return \"updateTimeline\" in mh;\n } else {\n return false;\n }\n }\n\n public get index() {\n return this.slideIndex;\n }\n\n private async updateTimeline(action: TIMELINE_ACTION, showLoader = false, showError = false): Promise<void> {\n // два кейса\n // когда есть слои и у слоя вызываем showLayer который вызывает startTimer до старта слайда, потом start от sdk\n // в итоге два события вместо одного (баг)\n\n // второй кейс - когда заполнили виджет и он вызвал startDisabledTimer\n // в этом случае проверка стейта action === this.currentState не выполнит startTimer (баг)\n\n // можно сделать action_start_timer_disabeld и timer_enabled чтобы это было два разных состояния\n\n // if (action === this.currentState) {\n // return;\n // }\n\n this.currentState = action;\n\n let currentTime = this.timeSpent;\n let duration = this.slideDuration;\n\n // tmp\n // todo брать из модели\n if (!duration) {\n duration = DEFAULT_SLIDE_DURATION;\n }\n\n if (this.timelineDisabledState === TimelineDisabledState.disabled) {\n currentTime = 0;\n duration = 0;\n }\n\n if (currentTime > duration) {\n currentTime = duration;\n }\n\n //@ts-ignore\n // window._log(`updateTimeline 1, a: ${action} ct: ${currentTime} d: ${duration} tds: ${this.timelineDisabledState}`, true);\n\n await this.slideReady.then();\n\n //@ts-ignore\n // window._log(`updateTimeline, a: ${action} ct: ${currentTime} d: ${duration} tds: ${this.timelineDisabledState}`, true);\n // console.trace(`updateTimeline ${action} slideIndex: ${this.slideIndex} currentTime:${currentTime} duration:${duration} tds: ${this.timelineDisabledState}`);\n SlideTimeline.layoutService.sdkApi.updateTimeline(this.slideIndex, action, currentTime, duration, showLoader, showError);\n }\n\n /**\n * Start timeline after slide started\n * Nothing do if old sdk\n */\n public slideStarted(): void {\n // console.trace(\"slideStarted\");\n if (this.isSDKSupportUpdateTimeline) {\n this.resumedAt = new Date().getTime();\n this.timeSpent = 0; // for case when instance exists, but we return to slide again\n this.updateTimeline(TIMELINE_ACTION.START);\n } else {\n // nothing to do\n }\n }\n\n public slideRestarted(): void {\n // console.trace(\"slideRestarted\");\n if (this.isSDKSupportUpdateTimeline) {\n this.resumedAt = new Date().getTime();\n this.timeSpent = 0;\n this.updateTimeline(TIMELINE_ACTION.START);\n } else {\n // nothing to do\n }\n }\n\n /**\n *\n */\n public slidePaused(videoCurrentTime: number | null) {\n // console.trace(\"slidePaused\");\n\n if (this.isSDKSupportUpdateTimeline) {\n if (videoCurrentTime != null) {\n this.timeSpent = Math.round(videoCurrentTime);\n } else {\n const globalCurrentTime = new Date().getTime();\n let spent = globalCurrentTime - this.resumedAt;\n this.timeSpent += spent;\n }\n\n this.updateTimeline(TIMELINE_ACTION.PAUSE);\n } else {\n this.layoutService.sdkApi.cardPausedCallback(videoCurrentTime);\n }\n }\n\n public slideResumed(videoCurrentTime: number | null) {\n // console.trace(\"slideResumed\");\n // @ts-ignore\n // window._log(`updateTimeline slideResumed ${videoCurrentTime}`, true);\n\n if (this.isSDKSupportUpdateTimeline) {\n if (videoCurrentTime != null) {\n this.timeSpent = Math.round(videoCurrentTime);\n }\n this.resumedAt = new Date().getTime();\n this.updateTimeline(TIMELINE_ACTION.START);\n } else {\n this.layoutService.sdkApi.cardResumedCallback(videoCurrentTime);\n }\n }\n\n public slideStopped() {\n // console.trace(\"slideStopped\");\n if (this.isSDKSupportUpdateTimeline) {\n this.updateTimeline(TIMELINE_ACTION.STOP);\n } else {\n }\n }\n\n /**\n * Update timer state (duration from 0 to actual value) and start timeline\n * used by widgets\n */\n public startDisabledTimeline(fallback: () => void) {\n // if app is paused (in background) - don't call start timeline (Android issues)\n // @ts-ignore\n // window._log(`Push startDisabledTimeline to queue at state: ${window.slideApi.state}, time: ${new Date().getTime()}`, true);\n this._afterResumeQueuePush(() => {\n // @ts-ignore\n // window._log(`Call startDisabledTimeline at state: ${window.slideApi.state}, time: ${new Date().getTime()}`, true);\n if (this.isSDKSupportUpdateTimeline) {\n this.timelineDisabledState = TimelineDisabledState.enabled;\n this.timeSpent = 0;\n this.updateTimeline(TIMELINE_ACTION.START);\n } else {\n // OLD SDK\n fallback();\n }\n });\n }\n\n public onSlideDataWaiting(videoCurrentTime: number | null) {\n // console.trace(\"onSlideDataWaiting\");\n // @ts-ignore\n // window._log(`updateTimeline onSlideDataWaiting ${videoCurrentTime}`, true);\n\n if (videoCurrentTime != null) {\n this.timeSpent = Math.round(videoCurrentTime);\n } else {\n const globalCurrentTime = new Date().getTime();\n let spent = globalCurrentTime - this.resumedAt;\n this.timeSpent += spent;\n }\n this.updateTimeline(TIMELINE_ACTION.PAUSE, true, false);\n }\n\n public onSlideError(videoCurrentTime: number | null) {\n // console.trace(\"onSlideError\");\n if (videoCurrentTime != null) {\n this.timeSpent = Math.round(videoCurrentTime);\n } else {\n const globalCurrentTime = new Date().getTime();\n let spent = globalCurrentTime - this.resumedAt;\n this.timeSpent += spent;\n }\n this.updateTimeline(TIMELINE_ACTION.STOP, false, true);\n }\n}\n","import { IAnimation } from \"@animation\";\nimport { container } from \"@composition\";\nimport { DEFAULT_SLIDE_DURATION, SDKApi } from \"@skd_api\";\nimport { CARD_TYPE } from \"../common_types.h\";\nimport { DataInput } from \"./elements/DataInput\";\nimport { WidgetFactory } from \"./elements/factory\";\nimport { Poll } from \"./elements/Poll\";\nimport { PollLayers } from \"./elements/PollLayers\";\nimport { Products } from \"./elements/Products\";\nimport { Quest } from \"./elements/Quest\";\nimport { Quiz } from \"./elements/Quiz\";\nimport { QuizGrouped } from \"./elements/QuizGrouped\";\nimport { RangeSlider } from \"./elements/RangeSlider\";\nimport { Rate } from \"./elements/Rate\";\nimport { Share } from \"./elements/Share\";\nimport { SwipeUp } from \"./elements/SwipeUp\";\nimport { SwipeUpItems } from \"./elements/SwipeUpItems\";\nimport { Test } from \"./elements/Test\";\nimport { Video } from \"./elements/Video\";\nimport { IElement } from \"./IElement\";\nimport { LocalData } from \"./layout.h\";\nimport { LayoutService } from \"./layout_service/layout_service\";\nimport { Slide } from \"./Slide\";\nimport { SlideTimeline } from \"./slide_timeline\";\nimport { Utils } from \"./utils\";\n\nexport class Layer {\n private readonly _slideIndex: number;\n private readonly _cardId: number;\n private readonly _cardType: CARD_TYPE;\n private readonly _slideCount: number;\n private readonly _duration: number;\n private readonly _disabledTimer: boolean;\n private readonly _disabledNavigation: boolean;\n private _elements: Array<IElement> = [];\n private readonly _timeline: SlideTimeline;\n\n constructor(\n private readonly _nodeRef: HTMLElement,\n private readonly _slide: Slide,\n private readonly _slideReadyPromise: Promise<void>,\n private readonly _afterResumeQueuePush: (cb: () => void) => void\n ) {\n this._slideIndex = parseInt(this._nodeRef.getAttribute(\"data-index\") ?? \"0\");\n this._cardId = parseInt(this._nodeRef.getAttribute(\"data-id\") ?? \"0\");\n this._cardType = parseInt(this._nodeRef.getAttribute(\"data-card-type\") ?? \"1\") || CARD_TYPE.STORY;\n this._slideCount = parseInt(this._nodeRef.getAttribute(\"data-slide-count\") ?? \"0\");\n this._duration = parseInt(this._nodeRef.getAttribute(\"data-duration\") ?? \"\") || DEFAULT_SLIDE_DURATION;\n this._disabledTimer = this._nodeRef.getAttribute(\"data-disable-timer\") === \"1\";\n this._disabledNavigation = this._nodeRef.getAttribute(\"data-disable-navigation\") === \"1\";\n this._timeline = new SlideTimeline(this._slideIndex, this._duration, this._disabledTimer, this._slideReadyPromise, this._afterResumeQueuePush);\n\n const _elementsNodes = this._nodeRef.querySelectorAll<HTMLElement>(\".narrative-slide-elements .narrative-element\");\n let layerWithWidgetQuest = false;\n _elementsNodes.forEach(item => {\n let element: IElement | null = WidgetFactory.tryCreateFromHtmlElement(item, this);\n if (element) {\n this._elements.push(element);\n if (element instanceof Quest) {\n layerWithWidgetQuest = true;\n }\n }\n });\n\n // console.log({ _elementsNodes }, this._elements);\n\n /**\n * Special behaviour for widget Quest\n * if current slide/layer without WidgetQuest element explicit but story has type Quest\n * - then init WidgetQuest with layer instead of WidgetQuest element (required for WidgetQuest slides navigation)\n */\n if (this.isQuest && !layerWithWidgetQuest && this.layoutService.layoutApi.widgetQuestApi != null) {\n this._elements.push(new Quest(this._nodeRef, this, this.layoutService.layoutApi.widgetQuestApi));\n }\n }\n\n public init(localData: LocalData): Array<Promise<boolean>> {\n if (this.sdkApi.isIOS || this.sdkApi.isAndroid) {\n this._nodeRef.classList.add(\"_app\");\n this.sdkApi.isIOS && this._nodeRef.classList.add(\"_isIos\");\n this.sdkApi.isAndroid && this._nodeRef.classList.add(\"_isAndroid\");\n }\n\n const promises = this._elements.map(element => element.init(localData));\n\n this._initTextElementAutoWidthCorrection();\n this._initTextFit();\n\n return promises;\n }\n\n get nodeRef(): HTMLElement {\n return this._nodeRef;\n }\n\n get elements(): Array<IElement> {\n return this._elements;\n }\n\n get slide(): Slide {\n return this._slide;\n }\n\n get timeline(): SlideTimeline {\n return this._timeline;\n }\n\n public get layoutService(): LayoutService {\n return container.get<LayoutService>();\n }\n\n public get sdkApi(): SDKApi {\n return container.get<SDKApi>();\n }\n\n public getLocalData(): Promise<LocalData> {\n return this.layoutService.sdkApi.getCardLocalData();\n }\n\n public get isQuest(): boolean {\n return this._nodeRef.getAttribute(\"data-quest-count\") != null;\n }\n\n private _initTextFit(): void {\n const textLines = Array.prototype.slice.call(this._nodeRef.querySelectorAll(\".narrative-element-text-wrapper>.narrative-element-text-lines\"));\n TextFit(textLines, {});\n }\n\n private _initTextElementAutoWidthCorrection(): void {\n const textLines = this._nodeRef.querySelectorAll<HTMLElement>(\".narrative-element-text-wrapper>.narrative-element-text-lines\");\n for (const item of textLines) {\n if (item.parentElement) {\n new TextElementAutoWidthCorrection(item.parentElement);\n }\n }\n }\n\n public get slideIndex(): number {\n return this._slideIndex;\n }\n\n public get cardId(): number {\n return this._cardId;\n }\n\n public get cardType(): CARD_TYPE {\n return this._cardType;\n }\n\n public get slideCount(): number {\n return this._slideCount;\n }\n\n public get disabledNavigation(): boolean {\n return this._disabledNavigation;\n }\n\n public get videoElement(): Video | null {\n for (const element of this._elements) {\n if (Video.isTypeOf(element)) {\n return element;\n }\n }\n return null;\n }\n\n public get rangeSliderElement(): RangeSlider | null {\n for (const element of this._elements) {\n if (RangeSlider.isTypeOf(element)) {\n return element;\n }\n }\n return null;\n }\n\n public get quizElement(): Quiz | null {\n for (const element of this._elements) {\n if (Quiz.isTypeOf(element)) {\n return element;\n }\n }\n return null;\n }\n\n public get quizGroupedElement(): QuizGrouped | null {\n for (const element of this._elements) {\n if (QuizGrouped.isTypeOf(element)) {\n return element;\n }\n }\n return null;\n }\n\n public get questElement(): Quest | null {\n for (const element of this._elements) {\n if (Quest.isTypeOf(element)) {\n return element;\n }\n }\n return null;\n }\n\n public get testElement(): Test | null {\n for (const element of this._elements) {\n if (Test.isTypeOf(element)) {\n return element;\n }\n }\n return null;\n }\n\n public get dataInputElement(): DataInput | null {\n for (const element of this._elements) {\n if (DataInput.isTypeOf(element)) {\n return element;\n }\n }\n return null;\n }\n\n public get pollElement(): Poll | null {\n for (const element of this._elements) {\n if (Poll.isTypeOf(element)) {\n return element;\n }\n }\n return null;\n }\n\n public get pollLayersElement(): PollLayers | null {\n for (const element of this._elements) {\n if (PollLayers.isTypeOf(element)) {\n return element;\n }\n }\n return null;\n }\n\n public get rateElement(): Rate | null {\n for (const element of this._elements) {\n if (Rate.isTypeOf(element)) {\n return element;\n }\n }\n return null;\n }\n\n public get shareElement(): Share | null {\n for (const element of this._elements) {\n if (Share.isTypeOf(element)) {\n return element;\n }\n }\n return null;\n }\n\n public get swipeUpElement(): SwipeUp | null {\n for (const element of this._elements) {\n if (SwipeUp.isTypeOf(element)) {\n return element;\n }\n }\n return null;\n }\n\n public get swipeUpItemsElement(): SwipeUpItems | null {\n for (const element of this._elements) {\n if (SwipeUpItems.isTypeOf(element)) {\n return element;\n }\n }\n return null;\n }\n\n public get productsElement(): Products | null {\n for (const element of this._elements) {\n if (Products.isTypeOf(element)) {\n return element;\n }\n }\n return null;\n }\n\n public isClickCapturedBySlider(): boolean {\n return (this.rangeSliderElement?.isClickCapturedBySlider ?? false) || (this.productsElement?.isClickCapturedByWidget ?? false);\n }\n\n private _animationPauseCb: ReturnType<IAnimation[\"start\"]>;\n private _animationResumeCb: () => void;\n\n public async start(muted = true): Promise<{ currentTime: number }> {\n const videoElement = this.videoElement;\n let currentTime = 0;\n if (videoElement != null) {\n currentTime = (await videoElement.start(muted)).currentTime;\n }\n\n if (this.sdkApi.cardAnimation) {\n this._animationPauseCb = this.sdkApi.cardAnimation.start(this._nodeRef);\n }\n\n for (const element of this._elements) {\n element.onStart();\n }\n\n for (const element of this._elements) {\n element.onResume();\n }\n\n // skip start timeline if we returned to slide with enabled timer and opened WidgetProducts modal\n if (!this.isLayerForcePaused) {\n this.timeline.slideStarted();\n }\n\n return { currentTime };\n }\n\n public async stop() {\n this.videoElement?.stop();\n this.sdkApi.cardAnimation?.stop(this._nodeRef);\n for (const element of this._elements) {\n element.onPause();\n }\n for (const element of this._elements) {\n element.onStop();\n }\n this._timeline.slideStopped();\n }\n\n public stopInternal() {\n this.videoElement?.stop();\n this.sdkApi.cardAnimation?.stop(this._nodeRef);\n for (const element of this._elements) {\n element.onPause();\n }\n for (const element of this._elements) {\n element.onStop();\n }\n }\n\n public async pause(resetVideoTime = false, stopAnimation = false): Promise<{ currentTime: number | null }> {\n return new Promise(resolve => {\n const cb = () => {\n let currentTime: number | null = this.videoElement?.pause(resetVideoTime) ?? null;\n\n if (stopAnimation) {\n this.sdkApi.cardAnimation?.stop(this._nodeRef);\n } else {\n if (this._animationPauseCb != null && Utils.isFunction(this._animationPauseCb)) {\n this._animationResumeCb = this._animationPauseCb(false);\n }\n }\n\n if (currentTime != null) {\n currentTime *= 1000;\n }\n\n for (const element of this._elements) {\n element.onPause();\n }\n\n this.timeline.slidePaused(currentTime);\n\n resolve({ currentTime });\n };\n\n const videoStartedPromise = this.videoElement?.videoStartedPromise;\n if (videoStartedPromise != null && videoStartedPromise.then != null) {\n videoStartedPromise.then(cb);\n } else {\n cb();\n }\n });\n }\n\n public async resume() {\n return new Promise(resolve => {\n const cb = ({ currentTime }: { currentTime: number | null }) => {\n // console.log(\"resumed cb with currentTime\", { currentTime });\n\n if (currentTime != null) {\n currentTime *= 1000;\n }\n\n if (Utils.isFunction(this._animationResumeCb)) {\n this._animationResumeCb();\n }\n\n for (const element of this._elements) {\n element.onResume();\n }\n\n this.timeline.slideResumed(currentTime);\n\n resolve({ currentTime });\n };\n\n const videoStartedPromise = this.videoElement?.resume();\n if (videoStartedPromise != null && videoStartedPromise.then != null) {\n videoStartedPromise.then(cb);\n } else {\n cb({ currentTime: null });\n }\n });\n }\n\n public enableAudio() {\n this.videoElement?.enableAudio();\n }\n\n public disableAudio() {\n this.videoElement?.disableAudio();\n }\n\n public get isLayerForcePaused(): boolean {\n return this.elements.some(element => element.isLayerForcePaused);\n }\n}\n\nconst TextFit = (function () {\n \"use strict\";\n\n const defaultSettings = {\n step: 1,\n maxSteps: 100,\n };\n\n const hasOwnProperty = Object.prototype.hasOwnProperty;\n\n return function textFit(els: Array<HTMLElement>, options: Record<string, any>) {\n if (!options) options = {};\n\n // Extend options.\n let settings = {};\n for (let key in defaultSettings) {\n if (hasOwnProperty.call(options, key)) {\n // @ts-ignore\n settings[key] = options[key];\n } else {\n // @ts-ignore\n settings[key] = defaultSettings[key];\n }\n }\n\n // Support passing a single el\n let elType = Object.prototype.toString.call(els);\n if (elType !== \"[object Array]\" && elType !== \"[object NodeList]\" && elType !== \"[object HTMLCollection]\") {\n // @ts-ignore\n els = [els];\n }\n\n // Process each el we've passed.\n for (let i = 0; i < els.length; i++) {\n processItem(els[i], settings);\n }\n };\n\n function processItem(el: HTMLElement, settings: Record<string, any>) {\n if (!isElement(el) || el.getAttribute(\"textFitted\")) {\n return false;\n }\n\n let parentHeight, parent;\n let low, high;\n\n parent = el.parentElement;\n if (!isElement(parent)) {\n return false;\n }\n\n // Get element data.\n parentHeight = innerHeight(parent);\n\n // Don't process if we can't find box dimensions\n if (parentHeight <= 0) {\n console.warn(`Set a static height and width on the target element ${el.outerHTML} before using textFit!`, el);\n return;\n }\n\n // Set textFitted attribute so we know this was processed.\n el.setAttribute(\"textFitted\", \"1\");\n\n let step = settings.step;\n\n high = parseFloat(window.getComputedStyle(el).fontSize);\n low = high - step * settings.maxSteps;\n let size = high;\n if (size < low) return;\n while (size >= low) {\n let elBoundingClientRect = el.getBoundingClientRect();\n if (elBoundingClientRect.height > parentHeight) {\n size -= step;\n el.style.fontSize = size + \"px\";\n } else {\n break;\n }\n }\n }\n\n // Calculate height without padding.\n // @ts-ignore\n function innerHeight(el) {\n let style = window.getComputedStyle(el, null);\n return el.getBoundingClientRect().height - parseInt(style.getPropertyValue(\"padding-top\"), 10) - parseInt(style.getPropertyValue(\"padding-bottom\"), 10);\n }\n\n //Returns true if it is a DOM element\n // @ts-ignore\n function isElement(o) {\n return typeof HTMLElement === \"object\"\n ? o instanceof HTMLElement //DOM2\n : o && typeof o === \"object\" && o !== null && o.nodeType === 1 && typeof o.nodeName === \"string\";\n }\n})();\n\nclass TextElementAutoWidthCorrection {\n // wrapper (flex row)\n // lead | text | tail //\n // wrapper (flex row)\n\n // text - can be multiline, use overflow-wrap: anywhere - for overflow prevent\n // iOS 17.5 break text on second line despite on enough space\n // fix it - detect and set min-width + max-width for text element\n\n private readonly leadWidth: number = null!;\n private readonly tailWidth: number = null!;\n private columnGap: number = null!;\n private wrapperInnerWidth: number = null!;\n\n //Returns true if it is a DOM element\n // @ts-ignore\n private isElement(o: HTMLElement | Element): boolean {\n return typeof HTMLElement === \"object\"\n ? o instanceof HTMLElement //DOM2\n : o && typeof o === \"object\" && o !== null && o.nodeType === 1 && typeof o.nodeName === \"string\";\n }\n\n private computeWrapperSize(): void {\n const { columnGap, width, paddingLeft, paddingRight } = window.getComputedStyle(this.textWrapperRef, null);\n this.columnGap = parseFloat(columnGap);\n this.wrapperInnerWidth = parseFloat(width) - parseFloat(paddingLeft) - parseFloat(paddingRight);\n }\n\n private measureTextWidth(\n text: string,\n {\n fontSize,\n fontWeight,\n fontStyle,\n fontFamily,\n }: {\n fontSize: string;\n fontWeight: string;\n fontStyle: string;\n fontFamily: string;\n }\n ): number {\n let textRef = document.createElement(\"div\");\n\n textRef.style.setProperty(\"font-size\", fontSize);\n textRef.style.setProperty(\"font-weight\", fontWeight);\n textRef.style.setProperty(\"font-style\", fontStyle);\n textRef.style.setProperty(\"font-family\", fontFamily);\n textRef.style.setProperty(\"position\", \"absolute\");\n textRef.style.setProperty(\"left\", \"-1000px\");\n textRef.style.setProperty(\"top\", \"-1000px\");\n textRef.style.setProperty(\"white-space\", \"nowrap\");\n // textRef.style.setProperty(\"visibility\", \"hidden\");\n\n textRef.textContent = text;\n\n document.body.appendChild(textRef);\n\n const textWidth = parseFloat(window.getComputedStyle(textRef, null).width);\n\n document.body.removeChild(textRef);\n // @ts-ignore\n textRef = null;\n\n return textWidth;\n }\n\n constructor(private readonly textWrapperRef: HTMLElement) {\n const leadRef = textWrapperRef.querySelector<HTMLElement>(\".narrative-element-text-lines-lead\");\n const tailRef = textWrapperRef.querySelector<HTMLElement>(\".narrative-element-text-lines-tail\");\n const textRef = textWrapperRef.querySelector<HTMLElement>(\".narrative-element-text-lines\");\n\n if (leadRef && tailRef && textRef) {\n if (!this.isElement(textRef) || textRef.getAttribute(\"textWidthCorrected\")) {\n return;\n }\n\n // Set textFitted attribute so we know this was processed.\n textRef.setAttribute(\"textWidthCorrected\", \"1\");\n\n this.computeWrapperSize();\n this.leadWidth = leadRef.clientWidth;\n this.tailWidth = tailRef.clientWidth;\n\n const textMaxWidth =\n this.wrapperInnerWidth -\n this.leadWidth -\n this.columnGap * (this.leadWidth ? 1 : 0) -\n this.tailWidth -\n this.columnGap * (this.tailWidth ? 1 : 0);\n\n const { fontSize, fontFamily, fontWeight, fontStyle } = window.getComputedStyle(textRef, null);\n\n const textMinWidth = Math.min(\n this.measureTextWidth(textRef.textContent ?? \"\", {\n fontSize,\n fontFamily,\n fontWeight,\n fontStyle,\n }),\n textMaxWidth\n );\n\n // setTimeout(() => {\n // console.log({\n // textMaxWidth,\n // textMinWidth,\n // columnGap: this.columnGap,\n // leadWidth: this.leadWidth,\n // tailWidth: this.tailWidth,\n // wrapperInnerWidth: this.wrapperInnerWidth,\n // });\n // }, 10 * 1000);\n\n textRef.style.setProperty(\"min-width\", `${textMinWidth}px`);\n textRef.style.setProperty(\"max-width\", `${textMaxWidth}px`);\n }\n }\n}\n","import { container } from \"@composition\";\nimport { CARD_TYPE } from \"../common_types.h\";\nimport { Layer } from \"./Layer\";\nimport { LocalData } from \"./layout.h\";\nimport { LayoutService } from \"./layout_service/layout_service\";\n\nexport class Slide {\n private readonly _layers: Array<Layer>;\n private _start: number;\n\n constructor(\n private readonly _slidesNodesRefs: Array<HTMLElement>,\n private readonly _slideReadyPromise: Promise<void>,\n private readonly _afterResumeQueuePush: (cb: () => void) => void\n ) {\n this._start = window.performance.now();\n\n if (!this._slidesNodesRefs.length) {\n throw new Error(\"No slides found.\");\n }\n\n this._layers = this._slidesNodesRefs.map(item => new Layer(item, this, this._slideReadyPromise, this._afterResumeQueuePush));\n this._activeLayer = this._layers[0];\n }\n\n private _activeLayer: Layer;\n get activeLayer(): Layer {\n return this._activeLayer;\n }\n\n get layers(): Array<Layer> {\n return this._layers;\n }\n\n get layersNodesRefs(): Array<HTMLElement> {\n return this._slidesNodesRefs;\n // call from Slide CTOR -> exception, bcz this._layers is empty\n // return this._layers.map(layer => layer.nodeRef);\n }\n\n private _initMultiSlide(localData: LocalData): void {\n const multiSlideApi = this.layoutService.layoutApi.widgetMultiSlideApi;\n if (multiSlideApi != null && this.layers.length > 1) {\n try {\n multiSlideApi.init(this.layersNodesRefs, localData);\n } catch (e) {\n console.error(e);\n }\n }\n }\n\n public async init(localData: LocalData): Promise<boolean> {\n this._initMultiSlide(localData);\n\n const promises = this.layers.flatMap(layer => layer.init(localData));\n\n const res = await Promise.all(promises);\n\n // rescan current slide\n this.refreshActiveLayer();\n\n // if not all true - return false\n // if not all Widgets return finishRender: true - return false\n return !res.some(item => item === false);\n }\n\n public refreshActiveLayer(): void {\n this.layers.forEach(layer => {\n if (!layer.nodeRef.classList.contains(\"hidden\")) {\n this._activeLayer = layer;\n }\n });\n }\n\n public showLayer(showIndex: number, muted?: boolean): void {\n // todo allow to call only if Layer in state LAYER_STATE::STARTED\n\n // hotfix (VOD and showLayer issue) - just skip showLayer for already visible layer\n // if (this.layers[showIndex] != null && this.layers[showIndex].nodeRef != null && !this.layers[showIndex].nodeRef.classList.contains(\"hidden\")) {\n // console.log(\"hotfix (VOD and showLayer issue) - just skip showLayer for already visible layer\");\n // return;\n // }\n\n // console.log(`showLayer: ${showIndex}`);\n\n // first - stop (for correct timeline calls)\n this.layers.forEach((layer, index) => {\n // const isHidden = layer.nodeRef.classList.contains(\"hidden\");\n if (index !== showIndex) {\n layer.nodeRef.classList.add(\"hidden\");\n layer.stop();\n }\n });\n\n this.layers.forEach((layer, index) => {\n // const isHidden = layer.nodeRef.classList.contains(\"hidden\");\n if (index === showIndex) {\n this._activeLayer = layer;\n layer.nodeRef.classList.remove(\"hidden\");\n layer.start(muted);\n }\n });\n }\n\n public get layoutService(): LayoutService {\n return container.get<LayoutService>();\n }\n\n public get slideIndex(): number {\n return this._activeLayer.slideIndex;\n }\n public get cardId(): number {\n return this._activeLayer.cardId;\n }\n\n public get cardType(): CARD_TYPE {\n return this._activeLayer.cardType;\n }\n\n public get slideCount(): number {\n return this._activeLayer.slideCount;\n }\n\n public get disabledNavigation(): boolean {\n return this._activeLayer.disabledNavigation;\n }\n}\n","import { container } from \"@composition\";\nimport { FontDTO, SDKApi } from \"@skd_api\";\nimport { proxy } from \"@utils\";\nimport { CARD_TYPE } from \"../common_types.h\";\nimport { Layer } from \"./Layer\";\nimport { LocalData } from \"./layout.h\";\nimport { LayoutService } from \"./layout_service/layout_service\";\nimport { Slide } from \"./Slide\";\nimport { Utils } from \"./utils\";\n\nfunction getViewportWidth(viewport: Window): number {\n return viewport.innerWidth || viewport.document.documentElement.clientWidth || viewport.document.body.clientWidth;\n}\n\nfunction getViewportHeight(viewport: Window): number {\n return viewport.innerHeight || viewport.document.documentElement.clientHeight || viewport.document.body.clientHeight;\n}\n\nconst enum STATE {\n INIT,\n INITED,\n START,\n STARTED,\n RESUME,\n RESUMED,\n PAUSE,\n PAUSED,\n FORCE_PAUSED,\n STOP,\n STOPPED,\n}\n\nexport class SlideApi {\n public get layoutDirection(): \"ltr\" | \"rtl\" {\n // warning, detection in ctor not working, bcz sdk changes layout later\n return this.layoutService.env.getComputedStyle(this._slideWrapper).direction === \"rtl\" ? \"rtl\" : \"ltr\";\n }\n\n private static renderedBoxClassName = \"narrative-slide-box-rendered\";\n private static prerenderBoxClassName = \"narrative-slide-box-prerender\";\n\n private readonly _slideWrapper: HTMLElement;\n private readonly _viewport: Window;\n\n constructor(\n private readonly config: {\n slideWrapper: HTMLElement;\n viewport: Window;\n userResizeHandler?: (data: { viewportWidth: number; viewportHeight: number; fontSize: number }) => void;\n slideRatio: number;\n isFullscreen: boolean;\n slideLoadedCb?: (data: { slide: Slide; result: boolean; reason?: string }) => void;\n }\n ) {\n this._slideWrapper = config.slideWrapper;\n this._viewport = config.viewport;\n\n this.refreshSizes = proxy(this.refreshSizes, this);\n\n this.initListeners();\n\n this.refreshSizes();\n\n const slideBox = document.getElementById(\"narrative-slide-box\");\n // todo via first child and its innerText - faster variant\n if (slideBox && slideBox.innerText.trim() !== \"{%content}\".replace(\"{\", \"{{\").replace(\"}\", \"}}\")) {\n this._slideInInit = null;\n this._slideInRender = true;\n this._init(\n () => this._slideBoxRenderComplete(),\n () => this._slideBoxRenderError()\n ).then(({ slide, result, reason }) => {\n this._slide = slide;\n if (config.slideLoadedCb != null) {\n config.slideLoadedCb({ slide, result, reason });\n }\n });\n }\n }\n\n public destroy() {\n this.destroyListeners();\n }\n\n private initListeners(): void {\n this._viewport.addEventListener(\"resize\", this.refreshSizes);\n }\n\n private destroyListeners(): void {\n this._viewport.removeEventListener(\"resize\", this.refreshSizes);\n }\n\n private refreshSizes() {\n const viewportWidth = getViewportWidth(this._viewport);\n const viewportHeight = getViewportHeight(this._viewport);\n const viewportRatio = viewportWidth / viewportHeight;\n let slideWidth = 0;\n let slideHeight = 0;\n // _ratio = 310 / 480,\n const _ratio = this.config.slideRatio;\n let _isFullscreen = this.config.isFullscreen;\n const slideOffset = this._slideWrapper.querySelector<HTMLElement>(\".narrative-slide-offset\");\n let offset = 0;\n let xOffset = \"0px\";\n // for elements with bottom anchor (absolute position)\n let yOffset = \"0px\";\n\n // alert(viewportHeight);\n\n if (viewportRatio > _ratio) {\n // disable _isFullscreen if viewport small\n _isFullscreen = false;\n }\n\n if (_isFullscreen) {\n // fit by width, top and bottom - to offscreen or fill with bg image\n slideWidth = viewportWidth;\n slideHeight = Math.ceil(viewportWidth / _ratio);\n offset = Math.ceil(slideHeight - viewportHeight) / 2;\n\n if (slideOffset != null) {\n slideOffset.style.margin = -1 * offset + \"px\" + \" 0 \";\n }\n // offset from viewport bottom to StoryBottom plus safe area offset bottom\n yOffset = `calc(${offset}px + env(safe-area-inset-bottom))`;\n // detect safe area offset\n } else {\n // более квадратное чем надо\n if (viewportRatio > _ratio) {\n // fit by width, top and bottom - to offscreen\n slideWidth = viewportWidth;\n slideHeight = Math.ceil(viewportWidth / _ratio);\n offset = Math.ceil(slideHeight - viewportHeight) / 2;\n\n if (slideOffset != null) {\n slideOffset.style.margin = -offset + \"px\" + \" 0 \";\n }\n yOffset = offset + \"px\";\n } else {\n // вьюпорт более вытянутый чем надо\n // fit by height, sides - to offscreen\n slideHeight = viewportHeight;\n slideWidth = Math.ceil(slideHeight * _ratio);\n offset = Math.ceil(slideWidth - viewportWidth) / 2;\n if (slideOffset != null) {\n slideOffset.style.margin = \"0 \" + -offset + \"px\"; // -8.5\n }\n xOffset = offset + \"px\";\n }\n }\n\n const fontSize = slideWidth / 20;\n // todo CSP violation\n this._slideWrapper.style.fontSize = fontSize + \"px\";\n\n if (slideOffset != null) {\n // todo CSP violation\n slideOffset.style.setProperty(\"--y-offset\", yOffset);\n slideOffset.style.setProperty(\"--x-offset\", xOffset);\n }\n\n if (_isFullscreen) {\n slideOffset?.classList.add(\"narrative-slide-offset-fullscreen\");\n }\n\n if (this.config.userResizeHandler != null) {\n this.config.userResizeHandler({ viewportWidth, viewportHeight, fontSize });\n }\n }\n\n public async showSlide(html: string): Promise<{ slide: Slide; result: boolean; reason?: string }> {\n const slideBox = this._slideWrapper.querySelector(`.${SlideApi.renderedBoxClassName}`);\n const slideBoxPrerender = this._slideWrapper.querySelector(`.${SlideApi.prerenderBoxClassName}`);\n const _result: {\n slide: Slide;\n result: boolean;\n reason?: string;\n } = { slide: this.slide, result: false, reason: \"\" };\n\n if (slideBox && slideBoxPrerender) {\n if (this._slideInRender) {\n this._slideInRender = false;\n this._slideBoxRenderComplete();\n }\n\n this._slideInInit = null;\n this._slideInRender = true;\n\n slideBoxPrerender.innerHTML = html;\n const { slide, result, reason } = await this._init(\n () => this._slideBoxRenderComplete(),\n () => this._slideBoxRenderError()\n );\n this._slide = slide;\n _result.result = result;\n _result.reason = reason;\n }\n _result.slide = this.slide;\n return _result;\n }\n\n public handleBackpress(): void {\n this.activeLayer.productsElement?.handleBackpress();\n }\n\n private get layoutService(): LayoutService {\n return container.get<LayoutService>();\n }\n\n private getLocalData(): Promise<LocalData> {\n return this.layoutService.sdkApi.getCardLocalData();\n }\n\n private get sdkApi(): SDKApi {\n return container.get<SDKApi>();\n }\n\n private _fontsInit = false;\n\n private _initAndLoadFonts(fonts: Array<FontDTO>): Promise<void> {\n if (this._fontsInit) {\n return Promise.resolve();\n }\n return new Promise(resolve => {\n if (\"fonts\" in document) {\n // https://developer.mozilla.org/en-US/docs/Web/API/CSS_Font_Loading_API\n const promises: Array<Promise<FontFace>> = [];\n try {\n if (fonts != null && Array.isArray(fonts)) {\n for (let i = 0; i < fonts.length; i++) {\n const src = fonts[i];\n if (src && src.family && src.style && src.weight && src.url) {\n // var font = new FontFace(fonts[i].family, \"url(\" + src.url + \"&s=css_font_face)\", {\n const font = new FontFace(fonts[i].family, \"url(\" + src.url + \")\", {\n style: src.style,\n weight: src.weight,\n // display: \"block\"\n });\n document.fonts.add && document.fonts.add(font);\n promises.push(font.load());\n }\n }\n }\n\n this._fontsInit = true;\n Promise.all(promises)\n .then(_ => {\n resolve();\n })\n .catch(reason => {\n console.error(reason);\n resolve();\n });\n } catch (e) {\n console.error(e);\n resolve();\n }\n }\n });\n }\n\n private _slide: Slide;\n private _slideInInit: Slide | null;\n private _state: STATE;\n private _afterStartInitQueue: Array<() => void> = [];\n private _afterResumeQueue: Array<() => void> = [];\n\n public get state(): STATE {\n return this._state;\n }\n\n private async _onAllMediaLoaded(slide: Slide): Promise<void> {\n return new Promise((resolve, reject) => {\n const promises = slide.layers.flatMap(layer => layer.elements.flatMap(element => element.mediaElementsLoadingPromises));\n\n let checkerTimerId: number | undefined = undefined;\n let timeOutFired = false;\n if (promises.length > 0) {\n checkerTimerId = this.layoutService.env.setTimeout(() => {\n timeOutFired = true;\n reject(\"onAllMediaLoaded timeout\");\n }, 3000);\n } else {\n resolve();\n return;\n }\n Promise.all(promises).then(\n _ => {\n checkerTimerId && this.layoutService.env.clearTimeout(checkerTimerId);\n if (!timeOutFired) {\n resolve();\n }\n },\n reason => {\n checkerTimerId && this.layoutService.env.clearTimeout(checkerTimerId);\n if (!timeOutFired) {\n reject(reason);\n }\n }\n );\n });\n }\n\n private async _init(\n slideBoxCb: () => void,\n slideBoxFailedCb: () => void\n ): Promise<{\n slide: Slide;\n result: boolean;\n reason?: string;\n }> {\n this._state = STATE.INIT;\n\n const slideNodeRef = this._slideWrapper.querySelector(`.${SlideApi.prerenderBoxClassName} .narrative-slide`);\n const slidesNodesRefs = Array.prototype.slice.call(\n this._slideWrapper.querySelectorAll(`.${SlideApi.prerenderBoxClassName} .narrative-slide.narrative-multi-slide`)\n );\n\n if (!slidesNodesRefs.length && slideNodeRef != null) {\n slidesNodesRefs.push(slideNodeRef);\n }\n\n if (!slidesNodesRefs.length) {\n throw new Error(\"No slides found.\");\n }\n\n let slideReadyResolve: () => void = null!;\n let slideReadyReject: () => void = null!;\n const slideReadyPromise = new Promise<void>((resolve, reject) => {\n slideReadyResolve = resolve;\n slideReadyReject = reject;\n });\n\n const slide = new Slide(slidesNodesRefs, slideReadyPromise, this.afterResumeQueuePush.bind(this));\n this._slideInInit = slide;\n\n const onAllMediaLoaded = this._onAllMediaLoaded(slide);\n\n if (this.sdkApi.isAndroid) {\n this._afterStartInitQueue = [];\n }\n this._afterResumeQueue = [];\n\n const result: { slide: Slide; result: boolean; reason?: string } = { slide, result: false, reason: \"\" };\n\n await this._initAndLoadFonts(this.layoutService.sdkApi.getCardFonts());\n const localData = await this.getLocalData();\n const finishRender = await slide.init(localData);\n /**\n * если есть виджеты, которых надо ждать - то не завершаем рендеринг текущего слайда\n * пример - квест, если зашли в сторис а виджету нужно показать другой слайд вместо первого\n */\n if (finishRender) {\n this._state = STATE.INITED;\n\n try {\n await onAllMediaLoaded;\n result.result = true;\n slideBoxCb();\n this.layoutService.env.setTimeout(() => {\n slideReadyResolve();\n });\n } catch (reason) {\n console.log(\"SlideInit, onAllMediaLoaded reject\", reason);\n slideBoxFailedCb();\n this.layoutService.env.setTimeout(() => {\n slideReadyReject();\n });\n result.result = false;\n result.reason = String(reason);\n }\n } else {\n this._state = STATE.STOPPED;\n this.layoutService.env.setTimeout(() => {\n slideReadyResolve();\n });\n result.result = true;\n }\n\n return result;\n }\n\n private _slideInRender = false;\n\n private _slideBoxRenderComplete(): void {\n if (!this._slideInRender) {\n this._slideInRender = true;\n return;\n }\n const slideBox = this._slideWrapper.querySelector(`.${SlideApi.renderedBoxClassName}`);\n const slideBoxPrerender = this._slideWrapper.querySelector(`.${SlideApi.prerenderBoxClassName}`);\n\n if (slideBox && slideBoxPrerender) {\n slideBoxPrerender.classList.remove(SlideApi.prerenderBoxClassName);\n slideBox.classList.remove(SlideApi.renderedBoxClassName);\n\n slideBox.classList.add(SlideApi.prerenderBoxClassName);\n slideBox.innerHTML = \"\";\n slideBoxPrerender.classList.add(SlideApi.renderedBoxClassName);\n }\n this._slideInRender = false;\n }\n\n private _slideBoxRenderError(): void {\n // if (!slideInRender) {\n // slideInRender = true;\n // return;\n // }\n const slideBox = this._slideWrapper.querySelector(`.${SlideApi.renderedBoxClassName}`);\n const slideBoxPrerender = this._slideWrapper.querySelector(`.${SlideApi.prerenderBoxClassName}`);\n\n if (slideBox && slideBoxPrerender) {\n const slides = Array.prototype.slice.call(slideBoxPrerender.querySelectorAll(\".narrative-slide\"));\n for (let i = 0; i < slides.length; ++i) {\n const slide = slides[i];\n if (slide) {\n slide.innerHTML = \"\";\n }\n }\n\n slideBoxPrerender.classList.remove(SlideApi.prerenderBoxClassName);\n slideBox.classList.remove(SlideApi.renderedBoxClassName);\n\n slideBox.classList.add(SlideApi.prerenderBoxClassName);\n slideBox.innerHTML = \"\";\n slideBoxPrerender.classList.add(SlideApi.renderedBoxClassName);\n }\n // slideInRender = false;\n }\n\n private async _startVideo(cb: (data: { currentTime: number; slideIndex: number }) => void) {\n const videoElement = this.slide?.activeLayer?.videoElement;\n const videoStartedPromise = videoElement?.start(this._slideConfig.muted);\n\n if (videoStartedPromise) {\n videoStartedPromise.then(({ currentTime }) => {\n cb({ currentTime, slideIndex: this.slide?.slideIndex || 0 });\n });\n } else {\n cb({ currentTime: 0, slideIndex: this.slide?.slideIndex || 0 });\n }\n }\n\n private _slideConfig: { muted?: boolean } = {};\n\n public async slideStart(config: { muted?: boolean }): Promise<{ currentTime: number }> {\n // console.log(`slideStart slideIdx: ${this.activeLayer.slideIndex} state: ${this._state}`);\n if (!(this._state === STATE.STOPPED || this._state === STATE.INITED)) {\n return { currentTime: 0 };\n }\n this._state = STATE.START;\n\n this._slideConfig = config;\n\n // start deferred fncs from widgets\n // important - Android only\n if (this.sdkApi.isAndroid && this._afterStartInitQueue && Array.isArray(this._afterStartInitQueue)) {\n for (const job of this._afterStartInitQueue) {\n if (Utils.isFunction(job)) {\n job();\n }\n }\n this._afterStartInitQueue = [];\n }\n\n if (this._afterResumeQueue && Array.isArray(this._afterResumeQueue)) {\n for (const job of this._afterResumeQueue) {\n if (Utils.isFunction(job)) {\n job();\n }\n }\n this._afterResumeQueue = [];\n }\n\n const { currentTime } = await this.slide.activeLayer.start(this._slideConfig.muted);\n\n this._state = STATE.STARTED;\n\n if (this.slide.activeLayer.isLayerForcePaused) {\n this._state = STATE.PAUSED;\n }\n\n return { currentTime };\n }\n\n public async slideRestart(config: { muted?: boolean }): Promise<{ currentTime: number }> {\n this._state = STATE.STOPPED;\n return this.slideStart(config);\n }\n\n private _pauseCbTimer: number | null = null;\n\n public async slidePause() {\n if (!(this._state === STATE.STARTED || this._state === STATE.RESUMED)) {\n return;\n }\n\n // обход бага на андроиде (вызывает pause/resume при любом нажатии на экран, даже если это клик - для перехода по слайдам)\n // поэтому делаем отложенный вызов (300мс) а если следом приходит stop - то отменяем таймер\n\n const pauseCb = () => {\n if (!(this._state === STATE.STARTED || this._state === STATE.RESUMED)) {\n return;\n }\n\n if (this.slide.activeLayer.isClickCapturedBySlider()) {\n // stop pause event (from sdk) if _narrative_range_slider is active\n return;\n }\n\n this._state = STATE.PAUSE;\n\n // _log(\"pause: \" + (performance.now() - window.start));\n\n this.slide.activeLayer.pause(false, false);\n\n // clean up\n if (this._pauseCbTimer != null) {\n clearTimeout(this._pauseCbTimer);\n }\n\n this._state = STATE.PAUSED;\n };\n\n if (this.sdkApi.isAndroid) {\n this._pauseCbTimer = this.layoutService.env.setTimeout(pauseCb, 300);\n } else {\n pauseCb();\n }\n }\n\n public async slideResume() {\n if (this._pauseCbTimer != null) {\n // отменяем pause если есть (баг андроида - шлет pause/resume на простой клик)\n clearTimeout(this._pauseCbTimer);\n }\n\n if (this._state !== STATE.PAUSED) {\n return;\n }\n this._state = STATE.RESUME;\n // _log(\"resume: \" + (performance.now() - window.start));\n\n if (this._afterResumeQueue && Array.isArray(this._afterResumeQueue)) {\n for (const job of this._afterResumeQueue) {\n if (Utils.isFunction(job)) {\n job();\n }\n }\n this._afterResumeQueue = [];\n }\n\n this.slide.activeLayer.resume();\n\n this._state = STATE.RESUMED;\n }\n\n public async slideStop() {\n if (!(this._state === STATE.STARTED || this._state === STATE.RESUMED || this._state === STATE.PAUSED)) {\n return;\n }\n this._state = STATE.STOP;\n\n if (this._pauseCbTimer != null) {\n // отменяем pause если есть (баг андроида - шлет pause/resume на простой клик)\n clearTimeout(this._pauseCbTimer);\n }\n\n await this.slide.activeLayer.stop();\n\n this._state = STATE.STOPPED;\n }\n\n public slideTimerEnd() {\n const defaultAction = () => {\n const nextSlideIndex = this.slide.slideIndex + 1;\n if (nextSlideIndex >= 0 && nextSlideIndex < this.slide.slideCount) {\n this.sdkApi.showCardSlide(nextSlideIndex);\n } else {\n this.sdkApi.cardShowNext();\n }\n };\n\n if (this.activeLayer.questElement) {\n const slideIndex = this.slide.slideIndex;\n const slideCount = this.slide.slideCount;\n const { continueDefaultNavigation } = this.activeLayer.questElement.handleRouteClick({\n // handleRouteTrigger\n direction: \"forward\",\n slideIndex: slideIndex,\n slideCount: slideCount,\n });\n if (continueDefaultNavigation) {\n // default action\n defaultAction();\n }\n return;\n }\n\n defaultAction();\n }\n\n // for call from SlideApi internals (from widgets)\n // skip state checking and sdk issues\n public async slidePauseUI(): Promise<void> {\n await this.slide.activeLayer.pause(false, false);\n this._state = STATE.FORCE_PAUSED;\n }\n\n // for call from SlideApi internals (from widgets)\n // skip state checking and sdk issues\n public async slideResumeUI(): Promise<void> {\n await this.slide.activeLayer.resume();\n this._state = STATE.RESUMED;\n }\n\n public enableAudio() {\n this.slide.activeLayer.enableAudio();\n this._slideConfig.muted = false;\n }\n\n public disableAudio() {\n this.slide.activeLayer.disableAudio();\n this._slideConfig.muted = true;\n }\n\n public get isStopped(): boolean {\n return this._state === STATE.STOPPED;\n }\n\n public afterStartInitQueuePush(cb: () => void) {\n if (!Utils.isFunction(cb)) {\n return false;\n }\n if (this.sdkApi.isAndroid && this._state === STATE.INIT) {\n this._afterStartInitQueue.push(cb);\n } else {\n cb();\n }\n }\n\n public afterResumeQueuePush(cb: () => void) {\n if (!Utils.isFunction(cb)) {\n return false;\n }\n if ([STATE.RESUME, STATE.RESUMED, STATE.INITED, STATE.START, STATE.STARTED].includes(this._state)) {\n cb();\n } else {\n this._afterResumeQueue.push(cb);\n }\n }\n\n public get activeLayer(): Layer {\n return this.slide.activeLayer;\n }\n\n public get slide(): Slide {\n // todo - call showLayer with arg slide: Slide - where slide is widget parent (prevent mismatch)\n // when widget in init state, it can call showLayer\n // then we must call showLayer not on this._slide but on this._slideInInit (on slide contains widget itself)\n return this._slideInInit || this._slide;\n }\n\n public showLayer(index: number): void {\n // todo - call showLayer with arg slide: Slide - where slide is widget parent (prevent mismatch)\n // when widget in init state, it can call showLayer\n // then we must call showLayer not on this._slide but on this._slideInInit (on slide contains widget itself)\n this.slide.showLayer(index, this._slideConfig.muted);\n }\n\n public slideClickHandler(\n targetElement: HTMLElement,\n navigationDirection: \"forward\" | \"backward\"\n ): {\n canClickNext: boolean;\n } {\n const result = { canClickNext: true };\n let target: HTMLElement | null = targetElement;\n let element: HTMLElement | null | undefined;\n let propagation = true;\n\n // prevent click on geometry\n if (target?.classList.contains(\"narrative-element-geometry\")) {\n target = target?.querySelector<HTMLElement>(\".narrative-element\");\n }\n\n if (target?.classList.contains(\"narrative-element-link\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-link\");\n }\n\n if (element) {\n this._performLinkTarget(element);\n result.canClickNext = false;\n return result;\n } else {\n /** Image */\n if (target?.classList.contains(\"narrative-element-image\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-image\");\n }\n if (element) {\n this._performLinkTarget(element);\n result.canClickNext = false;\n return result;\n }\n\n /** Swipe Up */\n if (target?.classList.contains(\"narrative-element-swipe-up\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-swipe-up\");\n }\n if (element) {\n if (this.slideSwipeUpHandler(element)) {\n result.canClickNext = false;\n return result;\n }\n }\n\n /** Swipe Up Items */\n if (target?.classList.contains(\"narrative-element-swipe-up-items\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-swipe-up-items\");\n }\n if (element) {\n if (this.slideSwipeUpHandler(element)) {\n result.canClickNext = false;\n return result;\n }\n }\n\n /** Products */\n if (target?.classList.contains(\"narrative-element-products\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-products\");\n }\n if (element) {\n if (this.slideSwipeUpHandler(element)) {\n result.canClickNext = false;\n return result;\n }\n }\n\n /** Vote complete button (multiple choice) */\n if (target?.classList.contains(\"narrative-element-vote-next-button\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-vote-next-button\");\n }\n if (element) {\n // if is widget file connected to Window\n if (this.layoutService.layoutApi.widgetVoteApi) {\n result.canClickNext = this.layoutService.layoutApi.widgetVoteApi.click(element);\n return result;\n }\n }\n\n /** Next button */\n if (target?.classList.contains(\"narrative-element-quiz-next-button\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-quiz-next-button\");\n }\n if (!element) {\n if (target?.classList.contains(\"narrative-element-test-next-button\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-test-next-button\");\n }\n }\n\n if (element) {\n this.layoutService.env.setTimeout(() => {\n this.sdkApi.showNextSlide(0);\n });\n result.canClickNext = false;\n return result;\n }\n\n /** Range slider */\n let rangeSliderBorderBoxView: HTMLElement | null | undefined = target;\n if (target?.classList.contains(\"border-box-view\") || (rangeSliderBorderBoxView = target?.closest(\".border-box-view\"))) {\n if (rangeSliderBorderBoxView?.parentElement && rangeSliderBorderBoxView.parentElement.classList.contains(\"narrative-element-range-slider\")) {\n // skip click on .border-box-view inside .narrative-element-range-slider - prevent navigation trigger at click inside widget body (expect NextButton)\n result.canClickNext = false;\n return result;\n }\n }\n // if (_hasClass(target, \"rangeslider\") || target.closest(\".rangeslider\")) {\n // return;\n // }\n\n /** Range slider complete button */\n if (target?.classList.contains(\"narrative-element-range-slider-next-button\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-range-slider-next-button\");\n }\n if (element) {\n if (this.layoutService.layoutApi.widgetRangeSliderApi) {\n result.canClickNext = this.layoutService.layoutApi.widgetRangeSliderApi.click(element);\n return result;\n }\n }\n\n /** Data input widget расширенный охват на весь виджет */\n if (target?.classList.contains(\"narrative-element-data-input\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-data-input\");\n }\n if (element) {\n if (this.layoutService.layoutApi.widgetDataInputApi) {\n result.canClickNext = this.layoutService.layoutApi.widgetDataInputApi.click(element);\n return result;\n }\n }\n\n /** quiz */\n if (target?.classList.contains(\"narrative-element-quiz-answer\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-quiz-answer\");\n }\n\n if (element) {\n if (element.closest(\".narrative-element-quiz\")) {\n /* quiz */\n if (this.layoutService.layoutApi.widgetQuizApi) {\n propagation = this.layoutService.layoutApi.widgetQuizApi.select(element);\n propagation = false; // по клику на варианты ответа(даже на законченной викторине) не делаем клик на слайде\n }\n } else if (element.closest(\".narrative-element-quiz-grouped\")) {\n /* quiz-grouped */\n if (this.layoutService.layoutApi.widgetQuizGroupedApi) {\n propagation = this.layoutService.layoutApi.widgetQuizGroupedApi.select(element);\n propagation = false; // по клику на варианты ответа(даже на законченной викторине) не делаем клик на слайде\n }\n }\n }\n\n /** poll or poll layers */\n if (target?.classList.contains(\"narrative-element-poll-button\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-poll-button\");\n }\n\n if (element) {\n if (this.activeLayer.pollElement) {\n if (this.layoutService.layoutApi.widgetPollApi) {\n this.layoutService.layoutApi.widgetPollApi.select(element);\n propagation = false; // по клику на варианты ответа(даже на законченной викторине) не делаем клик на слайде\n }\n }\n if (this.activeLayer.pollLayersElement) {\n if (this.layoutService.layoutApi.widgetPollLayersApi) {\n this.layoutService.layoutApi.widgetPollLayersApi.select(element);\n propagation = false; // по клику на варианты ответа(даже на законченной викторине) не делаем клик на слайде\n }\n }\n }\n\n /** vote */\n if (target?.classList.contains(\"narrative-element-vote-answer\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-vote-answer\");\n }\n\n if (element) {\n if (this.layoutService.layoutApi.widgetVoteApi) {\n propagation = this.layoutService.layoutApi.widgetVoteApi.select(element);\n propagation = false; // по клику на варианты ответа(даже на законченной викторине) не делаем клик на слайде\n }\n }\n\n /** rate */\n if (target?.classList.contains(\"narrative-element-rate-input\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-rate-input\");\n }\n\n if (element) {\n if (this.layoutService.layoutApi.widgetRateApi) {\n propagation = this.layoutService.layoutApi.widgetRateApi.select(element);\n propagation = false; // по клику на варианты ответа(даже на законченной викторине) не делаем клик на слайде\n }\n }\n\n /** test */\n if (target?.classList.contains(\"narrative-element-test-answer\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-test-answer\");\n }\n\n if (element) {\n if (element.closest(\".narrative-element-test\")) {\n /* test */\n if (this.layoutService.layoutApi.widgetTestApi) {\n propagation = this.layoutService.layoutApi.widgetTestApi.select(element);\n propagation = false; // по клику на варианты ответа(даже на законченной викторине) не делаем клик на слайде\n }\n } else if (element.closest(\".narrative-element-quest\")) {\n /* quest */\n if (this.layoutService.layoutApi.widgetQuestApi) {\n propagation = this.layoutService.layoutApi.widgetQuestApi.select(element);\n propagation = false; // по клику на варианты ответа(даже на законченной викторине) не делаем клик на слайде\n }\n }\n }\n\n /** copy */\n if (target?.classList.contains(\"narrative-element-copy\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-copy\");\n }\n\n if (element) {\n // if (\"_narrative_test\" in window) {\n // propagation = window._narrative_test.select(element);\n // propagation = false; // по клику на варианты ответа(даже на законченной викторине) не делаем клик на слайде\n // }\n\n if (this.layoutService.layoutApi.widgetCopyApi) {\n propagation = this.layoutService.layoutApi.widgetCopyApi.click(element);\n propagation = false; // по клику на Копировать не делаем клик на слайде\n }\n\n // copyToClipboard(element.getAttribute('data-clipboard-target'));\n // propagation = false;\n }\n\n /** barcode */\n if (target?.classList.contains(\"narrative-element-barcode\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-barcode\");\n }\n\n if (element) {\n // if (\"_narrative_test\" in window) {\n // propagation = window._narrative_test.select(element);\n // propagation = false; // по клику на варианты ответа(даже на законченной викторине) не делаем клик на слайде\n // }\n\n if (this.layoutService.layoutApi.widgetBarcodeApi) {\n propagation = this.layoutService.layoutApi.widgetBarcodeApi.click(element);\n propagation = false; // по клику на Копировать не делаем клик на слайде\n }\n\n // copyToClipboard(element.getAttribute('data-clipboard-target'));\n // propagation = false;\n }\n\n /** share */\n if (target?.classList.contains(\"narrative-element-share\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-share\");\n }\n\n if (element) {\n if (this.layoutService.layoutApi.widgetShareApi) {\n this.layoutService.layoutApi.widgetShareApi.click(element);\n propagation = false;\n }\n }\n\n /** story-repeat */\n if (target?.classList.contains(\"narrative-element-story-repeat\")) {\n element = target;\n } else {\n element = target?.closest(\".narrative-element-story-repeat\");\n }\n\n if (element) {\n propagation = false;\n this.sdkApi.setCardLocalData({}, true);\n this.sdkApi.updateCardServerDataLocally(this.slide.cardId, {});\n\n // window._resetTimers();\n\n // сделать async в ios\n\n let slideIndex = this.slide.slideIndex;\n // prevent simultaneous call _showNarrativeSlide and _showLayer - prevent 2 calls of initAfterLoad (break video start on iOS)\n if (slideIndex === 0) {\n // for story repeat on the first slide with layers\n this.sdkApi.showLayer(0);\n } else {\n this.sdkApi.showCardSlide(0); // сделать ее async\n }\n }\n\n if (!propagation) {\n result.canClickNext = false;\n return result;\n }\n }\n\n /** can tap to next slide */\n if (this.activeLayer.quizElement) {\n result.canClickNext = this.activeLayer.quizElement.slideQuizIsDone;\n }\n\n if (this.activeLayer.quizGroupedElement) {\n result.canClickNext = this.activeLayer.quizGroupedElement.slideQuizGroupedIsDone;\n }\n\n if (this.activeLayer.testElement) {\n result.canClickNext = this.activeLayer.testElement.slideTestIsDone;\n if (this.activeLayer.testElement.slideTestWithTimer && !result.canClickNext) {\n result.canClickNext = false;\n return result; // disable all clicks\n }\n }\n\n if (this.activeLayer.rangeSliderElement) {\n if (this.activeLayer.rangeSliderElement.isClickCapturedBySlider) {\n result.canClickNext = false;\n return result; // disable all clicks if event captured by slider\n }\n }\n\n if (this.activeLayer.productsElement) {\n if (this.activeLayer.productsElement.isClickCapturedByWidget) {\n result.canClickNext = false;\n return result; // disable all clicks if event captured by products widget (slider or swipe down)\n }\n }\n\n if (this.activeLayer.questElement) {\n const slideIndex = this.slide.slideIndex;\n const slideCount = this.slide.slideCount;\n const { continueDefaultNavigation } = this.activeLayer.questElement.handleRouteClick({\n direction: navigationDirection,\n slideIndex: slideIndex,\n slideCount: slideCount,\n });\n result.canClickNext = continueDefaultNavigation;\n return result;\n }\n\n const disableNavigation = this.slide.disabledNavigation;\n\n if (disableNavigation) {\n result.canClickNext = false;\n return result; // disable slide tap navigation\n }\n\n // _clickNext(canClickNext, xPercent);\n return result;\n }\n\n private _performLinkSpecialAndReturnTarget(element: HTMLElement) {\n const linkType = element.getAttribute(\"data-link-type\");\n let linkTarget = element.getAttribute(\"data-link-target\");\n const linkTargetIos = element.getAttribute(\"data-link-target-ios\");\n const linkTargetAndroid = element.getAttribute(\"data-link-target-android\");\n const linkTargetWeb = element.getAttribute(\"data-link-target-web\");\n let emitClick = false;\n\n if (this.sdkApi.isAndroid && linkTargetAndroid) {\n linkTarget = linkTargetAndroid;\n }\n if (this.sdkApi.isIOS && linkTargetIos) {\n linkTarget = linkTargetIos;\n }\n if (this.sdkApi.isWeb && linkTargetWeb) {\n linkTarget = linkTargetWeb;\n }\n\n if (linkType === \"closeStory\" || linkType === \"closeIAM\") {\n this.layoutService.env.setTimeout(() => this.sdkApi.closeCard(\"click\"));\n emitClick = false;\n }\n\n if (linkType && linkTarget) {\n emitClick = true;\n if (linkType === \"story\") {\n // storyId: number, slideIndex: number\n this.layoutService.env.setTimeout(() => this.sdkApi.openStory(parseInt(linkTarget), 0));\n emitClick = false;\n }\n\n if (linkType === \"slide\") {\n const __slideIndex = parseInt(linkTarget);\n const __slideCount = this.slide.slideCount;\n if (__slideIndex >= 0 && __slideIndex < __slideCount) {\n this.layoutService.env.setTimeout(() => this.sdkApi.showCardSlide(__slideIndex));\n emitClick = false;\n }\n }\n\n if (linkType === \"game\") {\n this.layoutService.env.setTimeout(() => this.sdkApi.openGame(linkTarget));\n emitClick = false;\n }\n\n if (linkType === \"layer\") {\n const layerIndex = parseInt(linkTarget);\n if (layerIndex >= 0) {\n this.layoutService.env.setTimeout(() => this.sdkApi.showLayer(layerIndex));\n emitClick = false;\n }\n }\n }\n return { linkType, linkTarget, emitClick };\n }\n\n private _performLinkTarget(element: HTMLElement): void {\n const { linkType, linkTarget, emitClick } = this._performLinkSpecialAndReturnTarget(element);\n // for btn(link) without url (openGame, openStory, closeCard, etc)\n let statisticWidgetValue = linkType;\n\n if (emitClick && linkTarget && (linkType === \"url\" || linkType === \"json\")) {\n const obj: {\n type: \"link\" | \"swipeUpLink\" | \"swipeUpItems\";\n link: {\n type: \"url\" | \"json\";\n target: string;\n };\n } = {\n type: \"link\",\n link: {\n type: linkType,\n target: linkTarget,\n },\n };\n\n // traditional link, with url\n statisticWidgetValue = linkTarget;\n\n this.layoutService.env.setTimeout(() => {\n this.sdkApi.openUrl(obj);\n });\n }\n\n try {\n const cardId = this.slide.cardId;\n const cardType = this.slide.cardType;\n const slideIndex = this.slide.slideIndex;\n\n let baseFields: { story_id?: number; message_id?: number } = {};\n switch (cardType) {\n case CARD_TYPE.STORY:\n case CARD_TYPE.UGC_STORY:\n baseFields.story_id = cardId;\n break;\n case CARD_TYPE.IN_APP_MESSAGING:\n baseFields.message_id = cardId;\n break;\n }\n const elementId = element.getAttribute(\"data-element-id\");\n\n this.sdkApi.sendStatisticEvent(\n \"w-link\",\n {\n i: cardId,\n si: slideIndex,\n wi: elementId ?? \"\",\n wl: element.textContent ?? \"\",\n wv: statisticWidgetValue ?? \"\",\n },\n {\n ...baseFields,\n slide_index: slideIndex,\n widget_id: elementId ?? \"\",\n widget_label: element.textContent ?? \"\",\n widget_value: statisticWidgetValue ?? \"\",\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n // получать событие swipeUp от sdk, в том числе и от web sdk\n public slideSwipeUpHandler(target?: HTMLElement) {\n if (target == null) {\n const targetElement = this.activeLayer.swipeUpElement || this.activeLayer.swipeUpItemsElement || this.activeLayer.productsElement;\n target = targetElement?.elementNodeRef;\n }\n\n if (!target) {\n return false;\n }\n\n const elementId = target.getAttribute(\"data-element-id\") || \"\";\n\n const { linkType, linkTarget: _linkTarget, emitClick } = this._performLinkSpecialAndReturnTarget(target);\n if (emitClick) {\n const linkTarget = decodeURIComponent(_linkTarget ?? \"\");\n\n if (linkType === \"products\") {\n if (this.layoutService.layoutApi.widgetProductsApi) {\n this.layoutService.layoutApi.widgetProductsApi.click(target);\n }\n return true;\n }\n\n let swipeUpLinkObj: {\n type: \"link\" | \"swipeUpLink\" | \"swipeUpItems\";\n link: {\n type: \"url\" | \"json\";\n target: string;\n };\n elementId?: string;\n } = {\n type: \"swipeUpLink\",\n link: {\n type: \"url\",\n target: linkTarget,\n },\n elementId,\n };\n\n if (linkType === \"swipe-up-items\") {\n swipeUpLinkObj = {\n type: \"swipeUpItems\",\n link: {\n type: \"json\",\n target: linkTarget,\n },\n elementId,\n };\n\n try {\n // TODO CSP violation\n target.style.setProperty(\"opacity\", \"0\");\n } catch (e) {\n console.error(e);\n }\n }\n\n this.layoutService.env.setTimeout(() => {\n this.sdkApi.openUrl(swipeUpLinkObj);\n });\n\n let eventType = \"\";\n if (linkType === \"url\") {\n eventType = \"w-link\";\n } else if (linkType === \"swipe-up-items\") {\n eventType = \"w-goods-open\";\n }\n if (eventType) {\n try {\n const cardId = this.slide.cardId;\n const cardType = this.slide.cardType;\n const slideIndex = this.slide.slideIndex;\n\n let baseFields: { story_id?: number; message_id?: number } = {};\n switch (cardType) {\n case CARD_TYPE.STORY:\n case CARD_TYPE.UGC_STORY:\n baseFields.story_id = cardId;\n break;\n case CARD_TYPE.IN_APP_MESSAGING:\n baseFields.message_id = cardId;\n break;\n }\n\n this.sdkApi.sendStatisticEvent(\n eventType,\n {\n i: cardId,\n si: slideIndex,\n wi: elementId,\n wl: target.textContent ?? \"\",\n wv: linkTarget,\n },\n {\n ...baseFields,\n slide_index: slideIndex,\n widget_id: elementId,\n widget_label: target.textContent ?? \"\",\n widget_value: linkTarget,\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n return true;\n } else {\n return false;\n }\n }\n\n public setTextInputResult(id: string, text: string): void {\n if (this.activeLayer.dataInputElement) {\n this.activeLayer.dataInputElement.setUserData(id, text);\n }\n if (this.activeLayer.pollElement) {\n this.activeLayer.pollElement.setUserData(id, text);\n }\n if (this.activeLayer.rateElement) {\n this.activeLayer.rateElement.setUserData(id, text);\n }\n }\n\n public setShareComplete(id: string, isSuccess: boolean): void {\n if (this.activeLayer.shareElement) {\n this.activeLayer.shareElement.complete(id, isSuccess);\n }\n }\n}\n","import { SlideApiPeerDeps } from \"../../layout/layout_api\";\nimport { SDKInterface } from \"../../sdk_api/es_module_sdk_api.h\";\nimport { SlideApi as BaseSlideApi } from \"../../layout/SlideApi\";\nimport { type Player as VODPlayer } from \"@inappstory/video-player\";\n\nexport let sdkInterface: SDKInterface;\nexport const slideApiPeerDeps: SlideApiPeerDeps = {};\n\nconst createSlideWrapper = ({ slideBoxRatio, nonce }: { slideBoxRatio: number; nonce?: string }) => {\n const slideWrapper = document.createElement(\"div\");\n slideWrapper.classList.add(\"narrative-slide-wrapper\");\n slideWrapper.classList.add(\"stories-viewer\");\n\n const slideOffset = document.createElement(\"div\");\n slideOffset.classList.add(\"narrative-slide-offset\");\n\n const slideBoxPrerender = document.createElement(\"div\");\n slideBoxPrerender.classList.add(\"narrative-slide-box\");\n slideBoxPrerender.classList.add(\"narrative-slide-box-prerender\");\n\n const slideBoxRendered = document.createElement(\"div\");\n slideBoxRendered.classList.add(\"narrative-slide-box\");\n slideBoxRendered.classList.add(\"narrative-slide-box-rendered\");\n\n const style = document.createElement(\"style\");\n if (nonce != null) {\n style.nonce = nonce;\n }\n\n const paddingTop = `${String(100 / slideBoxRatio)}%`;\n\n // .narrative-slide-box {\n // padding: <?= $slideRatioPadding ?> 0 0 0;\n // }\n style.sheet?.insertRule(`.narrative-slide-box {padding: ${paddingTop} 0 0 0;`);\n\n slideOffset.appendChild(slideBoxPrerender);\n slideOffset.appendChild(slideBoxRendered);\n\n slideWrapper.appendChild(slideOffset);\n slideWrapper.appendChild(style);\n\n return slideWrapper;\n};\n\nexport class SlideApi extends BaseSlideApi {\n constructor(\n _sdkInterface: SDKInterface,\n config: {\n root: HTMLElement;\n slideRatio: number;\n isFullscreen: boolean;\n nonce?: string;\n viewport: Window;\n userResizeHandler?: (data: { viewportWidth: number; viewportHeight: number; fontSize: number }) => void;\n VODPlayer?: typeof VODPlayer;\n }\n ) {\n sdkInterface = _sdkInterface;\n slideApiPeerDeps.VODPlayer = config.VODPlayer;\n const slideWrapper = createSlideWrapper({ slideBoxRatio: config.slideRatio, nonce: config.nonce });\n // todo need to clear root node before append slideWrapper?\n config.root.appendChild(slideWrapper);\n\n super({\n slideWrapper,\n viewport: config.viewport,\n slideRatio: config.slideRatio,\n isFullscreen: config.isFullscreen,\n userResizeHandler: config.userResizeHandler,\n });\n }\n}\n","import { container } from \"@composition\";\nimport { SDKApi } from \"@skd_api\";\nimport { EsModuleSdkApi } from \"../adapters/es_module_sdk_api\";\nimport { sdkInterface } from \"../../entry_points/es_module/es_module\";\n\ncontainer.registerSingleton<SDKApi>(() => new EsModuleSdkApi(() => sdkInterface));\n"],"names":["Utils.waitForImageHtmlElementLoad","Utils.waitForVideoHtmlElementLoad","Utils.isObject","WidgetFactory.tryCreateFromHtmlElement","Utils.isFunction","BaseSlideApi"],"mappings":"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"}
|