@inappstory/slide-api 0.1.1 → 0.1.3
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 +15651 -10
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +8 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +15651 -10
- 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","../../../src/widgets/base/base.ts","../../../src/widgets/barcode/barcode.ts","../../../src/widgets/copy/copy.ts","../../../src/widgets/data_input/data_input.ts","../../../src/widgets/date_countdown/date_countdown.ts","../../../src/widgets/multi_slide/multi_slide.ts","../../../src/widgets/poll/poll.ts","../../../src/widgets/poll_layers/poll_layers.ts","../../../src/formatter.ts","../../../src/SwipeGestureDetector.ts","../../../src/widgets/products/products.ts","../../../src/widgets/quest/quest.ts","../../../src/widgets/quiz/quiz.ts","../../../src/widgets/quiz_grouped/quiz_grouped.ts","../../../src/widgets/range_slider/range_slider.ts","../../../src/widgets/rate/rate.ts","../../../src/widgets/share/share.ts","../../../src/widgets/test/test.ts","../../../src/widgets/vote/vote.ts","../../../src/layout/layout_api/adapters/es_module_layout_api.ts","../../../src/layout/layout_api/composition/es_module_layout_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 writeToClipboard(data: { type: \"text\"; textValue: 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 writeToClipboard(data: { type: \"text\"; textValue: string }): void {\n this.sdkBinding().writeToClipboard(data);\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 const { handled } = this._performLinkTarget(element);\n result.canClickNext = !handled;\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 const { handled } = this._performLinkTarget(element);\n result.canClickNext = !handled;\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 if (this.layoutService.layoutApi.widgetVoteApi.click(element)) {\n this.layoutService.env.setTimeout(() => {\n this.sdkApi.showNextSlide(0);\n });\n }\n result.canClickNext = false;\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 if (this.layoutService.layoutApi.widgetRangeSliderApi.click(element)) {\n this.layoutService.env.setTimeout(() => {\n this.sdkApi.showNextSlide(0);\n });\n }\n result.canClickNext = false;\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): { handled: boolean } {\n const { linkType, linkTarget, emitClick } = this._performLinkSpecialAndReturnTarget(element);\n // for btn(link) without url (openGame, openStory, closeCard, etc)\n let statisticWidgetValue = linkType;\n\n let handled = false;\n if (emitClick && linkTarget && (linkType === \"url\" || linkType === \"json\")) {\n handled = true;\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 return { handled };\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","import { container } from \"@composition\";\nimport { data, extend, forEach, getTagData, getTagDataAsNumber, getValueOrDefault, getValueOrException, sendStatisticEventToApp, slice } from \"@utils\";\nimport { CARD_TYPE } from \"../../common_types.h\";\nimport { WidgetOptionsBase } from \"./base.h\";\nimport { WidgetsService } from \"./widgets_service/widgets_service\";\n\nexport type StatisticEventBaseFieldsShortForm = {\n i: number;\n si: number;\n};\nexport type StatisticEventBaseFieldsFullForm = {\n story_id?: number;\n message_id?: number;\n slide_index: number;\n};\n\nexport class WidgetBase<WidgetOptions extends WidgetOptionsBase> {\n /**\n * @see https://github.com/Microsoft/TypeScript/issues/3841#issuecomment-1488919713\n */\n declare [\"constructor\"]: typeof WidgetBase;\n\n static DEFAULTS: WidgetOptionsBase = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n static widgetIndex = 0;\n\n protected env = WidgetBase.widgetsService.env;\n protected sdkApi = WidgetBase.widgetsService.sdkApi;\n protected options: WidgetOptions = null!;\n protected element: HTMLElement = null!;\n protected elementId: string = null!;\n protected slide: HTMLElement = null!;\n protected slideIndex: number = null!;\n protected disableTimer: boolean = null!;\n protected layoutDirection: \"ltr\" | \"rtl\" = \"ltr\";\n protected cardId: number = null!;\n protected cardType: CARD_TYPE = null!;\n protected widgetDone: Element | null = null;\n protected showWidgetCompleteToast: boolean = null!;\n protected submitButtonAnimatedView: HTMLElement | null = null;\n protected submitButtonView: HTMLElement | null = null;\n protected savedData: Record<string, any> | null = null;\n protected localData: Record<string, any> = null!;\n protected firstOpenTime: number = 0;\n protected id: string;\n\n public startReadyPromise: Promise<void> = null!;\n private startReadyResolve: () => void = null!;\n\n constructor(\n element: HTMLElement,\n options: Partial<WidgetOptions>,\n elementIdGetter?: (element: HTMLElement) => string,\n slideGetter?: (element: HTMLElement) => HTMLElement\n ) {\n this.options = extend<WidgetOptions>({}, this.constructor.DEFAULTS as WidgetOptions, options);\n this.element = element;\n if (elementIdGetter) {\n this.elementId = elementIdGetter(this.element);\n } else {\n this.elementId = getValueOrException(getTagData(this.element, \"elementId\"), \"Empty elementId\");\n }\n\n if (slideGetter) {\n this.slide = slideGetter(this.element);\n } else {\n this.slide = getValueOrException(this.element.closest<HTMLElement>(\".narrative-slide\"), \"Empty slide\");\n }\n\n this.slideIndex = getValueOrException(getTagDataAsNumber(this.slide, \"index\"), \"Empty slideIndex\");\n this.disableTimer = getTagData(this.slide, \"disableTimer\") === \"1\";\n\n this.cardId = getValueOrException(getTagDataAsNumber(this.slide, \"id\"), \"Empty cardId\");\n this.cardType = getValueOrException(getTagDataAsNumber(this.slide, \"cardType\"), \"Empty card type\");\n\n if (this.env.getComputedStyle(this.element).direction === \"rtl\") {\n this.layoutDirection = \"rtl\";\n } else {\n this.layoutDirection = \"ltr\";\n }\n this.element.dir = this.layoutDirection;\n\n if (this.element.parentElement != null) {\n this.widgetDone = this.element.parentElement?.nextElementSibling; // geometry + .widget-sent-toast\n if (this.widgetDone) {\n if (!this.widgetDone.classList.contains(\"widget-sent-toast\")) {\n this.widgetDone = null;\n }\n }\n }\n this.showWidgetCompleteToast = Boolean(getValueOrDefault(getTagDataAsNumber(this.element, \"showWidgetCompleteToast\"), 0));\n if (!this.showWidgetCompleteToast) {\n this.widgetDone = null;\n }\n\n if (this.element != null) {\n this.submitButtonAnimatedView = this.element.querySelector(\".submit-button-animated-view\");\n if (this.submitButtonAnimatedView != null) {\n this.submitButtonView = this.submitButtonAnimatedView.querySelector(\".submit-button-view\");\n }\n }\n\n this.savedData = this.sdkApi.getCardServerData(this.cardId);\n this.localData = extend({}, this.savedData ?? {}, this.options.localData ?? {});\n\n this.id = `w_${this.elementId}_${WidgetBase.widgetIndex}`;\n ++WidgetBase.widgetIndex;\n\n this.resetStartReadyPromise();\n }\n\n protected get submitButtonViewHeight() {\n if (this.submitButtonView != null) {\n return this.submitButtonView.clientHeight;\n }\n return 0;\n }\n\n private resetStartReadyPromise() {\n this.startReadyPromise = new Promise<void>(resolve => {\n this.startReadyResolve = resolve;\n });\n }\n\n /**\n * Start or restart widget\n * @param localData\n */\n public onRefreshUserData(localData: Record<string, any>): void {\n this.savedData = this.sdkApi.getCardServerData(this.cardId);\n this.localData = extend({}, this.savedData ?? {}, localData);\n }\n\n public onStart(): void {\n // add active class for enable animation\n this.element.classList.add(\"active\");\n\n this.startReadyResolve();\n }\n\n public onStop(): void {\n this.element.classList.remove(\"active\");\n\n this.resetStartReadyPromise();\n }\n\n public onPause(): void {}\n\n public onResume(): void {}\n\n public static widgetCacheKey = \"ias.story-element\";\n public static widgetClassName = \"\";\n\n public static getInstance<Widget extends WidgetBase<WidgetOptions>, WidgetOptions extends WidgetOptionsBase>(element: HTMLElement): Widget | undefined {\n return data<Widget>(element, this.widgetCacheKey);\n }\n\n public static getInstanceById<Widget extends WidgetBase<WidgetOptions>, WidgetOptions extends WidgetOptionsBase>(id: string): Widget | undefined {\n const widgetsElements = slice.call(this.widgetsService.env.document.querySelectorAll(`.${this.widgetClassName}`));\n let widget: Widget | undefined;\n forEach(widgetsElements, (element, index) => {\n const localWidget = data<Widget>(element, this.widgetCacheKey);\n if (localWidget && localWidget.id === id) {\n widget = localWidget;\n }\n });\n\n return widget;\n }\n\n public static createInstance<Widget extends WidgetBase<WidgetOptions>, WidgetOptions extends WidgetOptionsBase>(\n instantiate: (element: HTMLElement, options: Partial<WidgetOptions>) => Widget,\n element: HTMLElement,\n options: Partial<WidgetOptions>\n ): Widget {\n // get from objects cache (just Map<key, data> where key assigned to HTMLElement)\n let instance = WidgetBase.getInstance<Widget, WidgetOptions>(element);\n if (instance == null) {\n // can throw Error\n instance = instantiate(element, options);\n // save object in cache by key associated with HTMLElement\n data(element, WidgetBase.widgetCacheKey, instance);\n }\n\n return instance;\n }\n\n public static initWidget<Widget extends WidgetBase<WidgetOptions>, WidgetOptions extends WidgetOptionsBase>(\n htmlElement: HTMLElement,\n localData: Record<string, any> | undefined,\n instantiate: (element: HTMLElement, options: Partial<WidgetOptions>) => Widget\n ): Promise<Record<string, any>> {\n if (localData != null) {\n const widget = this.createInstance<Widget, WidgetOptions>(instantiate, htmlElement, {\n slide: null,\n localData,\n } as WidgetOptions);\n // start widget (just created or cached instance)\n widget.onRefreshUserData(localData);\n return Promise.resolve(localData);\n } else {\n return new Promise<Record<string, any>>(resolve => {\n this.getLocalData().then(localData => {\n const widget = this.createInstance<Widget, WidgetOptions>(instantiate, htmlElement, {\n slide: null,\n localData,\n } as WidgetOptions);\n // start widget (just created or cached instance)\n widget.onRefreshUserData(localData);\n resolve(localData);\n });\n });\n }\n }\n\n /** @deprecated */\n public static initWidgets<Widget extends WidgetBase<WidgetOptions>, WidgetOptions extends WidgetOptionsBase>(\n instantiate: (element: HTMLElement, options: Partial<WidgetOptions>) => Widget,\n elements: Array<HTMLElement>,\n localData?: Record<string, any>\n ): Promise<Record<string, any>> {\n if (localData != null) {\n forEach(elements, element => {\n const widget = this.createInstance<Widget, WidgetOptions>(instantiate, element, {\n slide: null,\n localData,\n } as WidgetOptions);\n // start widget (just created or cached instance)\n widget.onRefreshUserData(localData);\n });\n return Promise.resolve(localData);\n } else {\n return new Promise<Record<string, any>>(resolve => {\n this.getLocalData().then(localData => {\n forEach(elements, element => {\n const widget = this.createInstance<Widget, WidgetOptions>(instantiate, element, {\n slide: null,\n localData,\n } as WidgetOptions);\n // start widget (just created or cached instance)\n widget.onRefreshUserData(localData);\n });\n resolve(localData);\n });\n });\n }\n }\n\n public static get widgetsService(): WidgetsService {\n return container.get<WidgetsService>();\n }\n\n public static getLocalData(): Promise<Record<string, any>> {\n return this.widgetsService.sdkApi.getCardLocalData();\n }\n\n public getLocalData(): Promise<Record<string, any>> {\n return this.constructor.getLocalData();\n }\n\n public static setLocalData(keyValue: Record<string, any>, sendToServer?: boolean, syncWithRuntimeLocalData?: boolean) {\n // push json object as string\n if (sendToServer === undefined) {\n sendToServer = true;\n } else {\n sendToServer = Boolean(sendToServer);\n }\n if (syncWithRuntimeLocalData === undefined) {\n syncWithRuntimeLocalData = true;\n } else {\n syncWithRuntimeLocalData = Boolean(syncWithRuntimeLocalData);\n }\n\n if (syncWithRuntimeLocalData) {\n this.getLocalData().then(localData => {\n // 1 - old values, 2 - new values\n keyValue = extend({}, localData, keyValue);\n\n // todo make async via promise or async\n this.widgetsService.sdkApi.setCardLocalData(keyValue, sendToServer);\n });\n } else {\n // todo make async via promise or async\n this.widgetsService.sdkApi.setCardLocalData(keyValue, sendToServer);\n }\n }\n\n public setLocalData(keyValue: Record<string, any>, sendToServer?: boolean, syncWithRuntimeLocalData?: boolean) {\n return this.constructor.setLocalData(keyValue, sendToServer, syncWithRuntimeLocalData);\n }\n\n public get statisticEventBaseFieldsShortForm(): StatisticEventBaseFieldsShortForm {\n return WidgetBase.getStatisticEventBaseFieldsShortForm(this.cardId, this.slideIndex);\n }\n\n public static getStatisticEventBaseFieldsShortForm(cardId: number, slideIndex: number): StatisticEventBaseFieldsShortForm {\n return {\n i: cardId,\n si: slideIndex,\n };\n }\n\n public get statisticEventBaseFieldsFullForm(): StatisticEventBaseFieldsFullForm {\n return WidgetBase.getStatisticEventBaseFieldsFullForm(this.cardId, this.cardType, this.slideIndex);\n }\n\n public static getStatisticEventBaseFieldsFullForm(cardId: number, cardType: CARD_TYPE, slideIndex: number): StatisticEventBaseFieldsFullForm {\n const data: StatisticEventBaseFieldsFullForm = { slide_index: slideIndex };\n switch (cardType) {\n case CARD_TYPE.STORY:\n case CARD_TYPE.UGC_STORY:\n data.story_id = cardId;\n break;\n case CARD_TYPE.IN_APP_MESSAGING:\n data.message_id = cardId;\n break;\n }\n return data;\n }\n\n public static sendStatisticEventToApp(\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 sendStatisticEventToApp(this.widgetsService.sdkApi, name, data, devPayload, options);\n }\n\n public sendStatisticEventToApp(\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 this.constructor.sendStatisticEventToApp(name, data, devPayload, options);\n }\n\n public startDisabledTimeline() {\n this.sdkApi.startDisabledTimeline(this.cardId, this.slideIndex);\n }\n\n protected _showLayer(layers: Array<HTMLElement>, selectIndex: number, withStatEvent: boolean = false): void {\n if (this.sdkApi.isExistsShowLayer()) {\n this.sdkApi.showLayer(selectIndex);\n } else {\n forEach(layers, (layer, index) => {\n if (index === selectIndex) {\n layer.classList.remove(\"hidden\");\n this.sdkApi.cardAnimation?.start(layer);\n } else {\n layer.classList.add(\"hidden\");\n }\n });\n }\n if (withStatEvent) {\n this._statEventLayoutShow(selectIndex);\n }\n }\n\n protected _statEventLayoutShow(layoutIndex: number): void {\n try {\n this.sendStatisticEventToApp(\n \"layout-show\",\n {\n ...this.statisticEventBaseFieldsShortForm,\n li: layoutIndex,\n },\n {\n ...this.statisticEventBaseFieldsFullForm,\n layout_index: layoutIndex,\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n /** @deprecated */\n public static refreshUserData<Widget extends WidgetBase<WidgetOptions>, WidgetOptions extends WidgetOptionsBase>(\n nodes: NodeListOf<HTMLElement>,\n localData?: Record<string, any>\n ): void {\n const cb = (el: HTMLElement, localData: Record<string, any>) => {\n const widgetElement = el.closest<HTMLElement>(`.${this.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetBase.getInstance<Widget, WidgetOptions>(widgetElement);\n if (widget) {\n widget.onRefreshUserData(localData);\n }\n }\n };\n\n if (localData != null) {\n const elements: Array<HTMLElement> = slice.call(nodes);\n forEach(elements, el => cb(el, localData));\n } else {\n WidgetBase.getLocalData().then(localData => {\n const elements: Array<HTMLElement> = slice.call(nodes);\n forEach(elements, el => cb(el, localData));\n });\n }\n }\n\n public static onRefreshUserData<Widget extends WidgetBase<WidgetOptions>, WidgetOptions extends WidgetOptionsBase>(\n element: HTMLElement,\n localData?: Record<string, any>\n ): void {\n const cb = (el: HTMLElement, localData: Record<string, any>) => {\n const widgetElement = el.closest<HTMLElement>(`.${this.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetBase.getInstance<Widget, WidgetOptions>(widgetElement);\n if (widget) {\n widget.onRefreshUserData(localData);\n }\n }\n };\n\n if (localData != null) {\n cb(element, localData);\n } else {\n WidgetBase.getLocalData().then(localData => {\n cb(element, localData);\n });\n }\n }\n\n protected getPromotionalCodeFetchPath(promotionalCodeId: string): string {\n switch (this.cardType) {\n case CARD_TYPE.IN_APP_MESSAGING:\n return `inappmessaging/message/${this.cardId}/widget/${this.elementId}/promo-code/${promotionalCodeId}`;\n default:\n return `story/${this.cardId}/widget/${this.elementId}/promo-code/${promotionalCodeId}`;\n }\n }\n}\n","import { addClass, getTagData, removeClass, slice } from \"@utils\";\nimport { drawingSVG, qrcode, ean13, pdf417 } from \"bwip-js/browser\";\nimport { WidgetBase } from \"../base\";\nimport { WidgetBarcodeOptions } from \"./barcode.h\";\n\nexport class WidgetBarcode extends WidgetBase<WidgetBarcodeOptions> {\n static DEFAULTS: WidgetBarcodeOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-barcode\";\n\n private readonly captionView: HTMLElement | null;\n private readonly svgView: HTMLElement | null;\n private clipboardTarget: string | undefined;\n private readonly codeType: string | undefined;\n private readonly formatterType: string | undefined;\n private readonly copiedText: string | undefined;\n private readonly isPromotionalCode: boolean;\n private state: number | null;\n private readonly msgNetworkError: string | undefined;\n private readonly msgServiceError: string | undefined;\n private readonly msgNoMoreCodes: string | undefined;\n private readonly msgTryAgain: string | undefined;\n private readonly msgBarcodeRenderError: string | undefined;\n\n constructor(element: HTMLElement, options: Partial<WidgetBarcodeOptions>) {\n super(element, options);\n\n this.captionView = this.element.querySelector(\".narrative-element-text-lines\");\n\n this.clipboardTarget = getTagData(element, \"clipboardTarget\");\n this.isPromotionalCode = getTagData(element, \"clipboardType\") === \"promocode\";\n\n this.codeType = getTagData(element, \"codeType\");\n this.formatterType = getTagData(element, \"formatterType\");\n this.copiedText = getTagData(element, \"copiedText\");\n\n this.svgView = this.element.querySelector<HTMLElement>(\".barcode-view-inner\");\n\n this.msgNetworkError = getTagData(this.element, \"msgNetworkError\");\n this.msgServiceError = getTagData(this.element, \"msgServiceError\");\n this.msgNoMoreCodes = getTagData(this.element, \"msgNoMoreCodes\");\n this.msgTryAgain = getTagData(this.element, \"msgTryAgain\");\n this.msgBarcodeRenderError = getTagData(this.element, \"msgBarcodeRenderError\");\n }\n\n /**\n * Start or restart widget\n * @param localData\n */\n public onRefreshUserData(localData: Record<string, any>) {\n super.onRefreshUserData(localData);\n\n this.state = null;\n\n if (this.isPromotionalCode) {\n this.initPromotionalCodeFromLocalData();\n } else {\n this.renderCodeView();\n this.renderCaptionView();\n }\n }\n\n public onStart(): void {\n super.onStart();\n\n if (this.isPromotionalCode) {\n this.fetchPromoCode();\n }\n }\n\n private isTransparentElement(): boolean {\n if (this.element) {\n try {\n const color = window.getComputedStyle(this.element).color;\n if (color === \"transparent\" || color === \"rgba(0, 0, 0, 0)\" || color === \"rgba(0,0,0,0)\") {\n return true;\n }\n } catch (err) {\n console.error(err);\n }\n }\n return false;\n }\n\n private renderCodeView() {\n const text = this.clipboardTarget ?? \"\";\n let svg = \"\";\n try {\n switch (this.codeType) {\n case \"qrcode\":\n svg = qrcode<string>({ bcid: \"qrcode\", text }, drawingSVG());\n break;\n case \"pdf417\":\n svg = pdf417<string>({ bcid: \"pdf417\", text }, drawingSVG());\n break;\n case \"ean13\":\n svg = ean13<string>({ bcid: \"ean13\", text, height: 10 }, drawingSVG());\n break;\n default:\n break;\n }\n if (this.svgView && svg) {\n this.svgView.innerHTML = svg;\n const svgPathNodes = this.svgView.querySelectorAll<SVGElement>(\"svg path\");\n for (const svgPathNode of svgPathNodes) {\n if (svgPathNode.hasAttribute(\"fill\")) {\n // for paths with fill (qr, pdf417)\n svgPathNode.setAttribute(\"fill\", \"currentColor\");\n }\n if (svgPathNode.hasAttribute(\"stroke\")) {\n // for paths with stroke (EAN 13)\n svgPathNode.setAttribute(\"stroke\", \"currentColor\");\n }\n }\n }\n } catch (e) {\n if (this.msgBarcodeRenderError) {\n this.sdkApi.showToast(this.msgBarcodeRenderError);\n }\n console.error(e);\n }\n }\n\n private formatCaptionText(text: string) {\n let format = this.formatterType ?? \"\";\n const result = [];\n let j = 0;\n for (let i = 0; i < format.length; ++i) {\n if (format[i] === \"#\") {\n result.push(text[j]);\n ++j;\n if (j >= text.length) {\n break;\n }\n } else {\n result.push(format[i]);\n }\n }\n let formattedText = `${result.join(\"\")}${text.slice(j)}`;\n\n return formattedText ?? text;\n }\n\n private renderCaptionView() {\n const text = this.formatCaptionText(this.clipboardTarget ?? \"\");\n this.changeCaptionViewText(text);\n }\n\n private changeCaptionViewText(text: string) {\n if (this.captionView) {\n this.captionView.textContent = text;\n }\n }\n\n private getPromotionalCodeFromLocalData(): string | undefined {\n return this.localData[\"_bc_g_\" + this.elementId + \"_pc\"];\n }\n\n private initPromotionalCodeFromLocalData(): void {\n if (this.getPromotionalCodeFromLocalData() !== undefined) {\n this.state = 1;\n this.clipboardTarget = this.getPromotionalCodeFromLocalData();\n if (this.clipboardTarget != null) {\n this.renderCaptionView();\n this.renderCodeView();\n }\n removeClass(this.element, \"loader\");\n }\n }\n\n private fetchPromoCode(): void {\n this.state = 0;\n this.initPromotionalCodeFromLocalData();\n\n if (this.state === 0) {\n if (!this.isTransparentElement()) {\n // for transparent element\n addClass(this.element, \"loader\");\n }\n\n // fetch promotional code\n const path = this.getPromotionalCodeFetchPath(this.clipboardTarget ?? \"\");\n const headers = {\n accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n };\n const profileKey = \"fetch-promo-code\";\n\n Promise.all([\n this.sdkApi.sendApiRequest<{ code: string }>(path, \"POST\", null, headers, null, profileKey),\n new Promise<void>(function (t, e) {\n return setTimeout(t, 300);\n }),\n ]).then(values => {\n const r = values[0];\n\n const status = r.status;\n let code = null;\n let success = false;\n if (status === 200 || status === 201) {\n if (r.data) code = r.data.code;\n if (code) {\n // success case\n this.clipboardTarget = code;\n\n this.renderCaptionView();\n this.renderCodeView();\n\n success = true;\n this.state = 1;\n removeClass(this.element, \"loader\");\n\n if (status === 201) {\n this.localData[\"_bc_g_\" + this.elementId + \"_pc_fetched_at\"] = Math.round(new Date().getTime() / 1000);\n this.localData[\"_&ts_bc_g_\" + this.elementId + \"_pc_fetched_at\"] = Math.round(new Date().getTime() / 1000);\n }\n this.localData[\"_bc_g_\" + this.elementId + \"_pc\"] = code;\n\n this.setLocalData(this.localData, true);\n } else {\n this.msgNoMoreCodes && this.sdkApi.showToast(this.msgNoMoreCodes);\n }\n } else if (status === 12163 || status === 12002) {\n this.msgNetworkError && this.sdkApi.showToast(this.msgNetworkError);\n } else {\n this.msgServiceError && this.sdkApi.showToast(this.msgServiceError);\n }\n\n if (!success) {\n this.state = 3;\n\n this.changeCaptionViewText(this.msgTryAgain ?? \"\");\n\n removeClass(this.element, \"loader\");\n }\n });\n }\n }\n\n public getStateValue(): number | null {\n return this.state;\n }\n\n public getIsPromotionalCode(): boolean {\n return this.isPromotionalCode;\n }\n\n private _statEventCopyClick(clipboardTarget: string): void {\n try {\n const captionViewText = this.captionView?.textContent ?? \"\";\n\n this.sendStatisticEventToApp(\n \"w-barcode\",\n {\n ...this.statisticEventBaseFieldsShortForm,\n wi: this.elementId,\n wl: captionViewText,\n wv: clipboardTarget,\n },\n {\n ...this.statisticEventBaseFieldsShortForm,\n widget_id: this.elementId,\n widget_label: captionViewText,\n widget_value: clipboardTarget,\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n private _select(): void {\n this.element.classList.add(\"done\");\n\n this.startReadyPromise.then(() => {\n if (this.disableTimer) {\n // флаг - что таймер уже стартанул (в layout или добавить объект sharedMemory)\n // смотрим что прозрачный текст - тогда и лоадер прозрачный\n // _log(\"_showNarrativeNextSlide: \" + getSlideDuration(this.narrativeId, this.slideIndex), true);\n this.startDisabledTimeline();\n }\n });\n\n if (this.copiedText) {\n this.sdkApi.showToast(this.copiedText);\n }\n }\n\n public copyToClipboard(element: HTMLElement): void {\n this._select();\n\n const textValue = this.clipboardTarget ?? \"\";\n\n this.sdkApi.writeToClipboard({ type: \"text\", textValue });\n\n this.completeWidget();\n\n this._statEventCopyClick(textValue);\n }\n\n private completeWidget(): void {\n this.localData[\"_bc_g_\" + this.elementId + \"_done_at\"] = Math.round(new Date().getTime() / 1000);\n\n // ответ на вопрос\n this.localData[\"_&ts_bc_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n this.setLocalData(this.localData, true);\n }\n\n public isDone(): boolean {\n return this.localData[\"_bc_g_\" + this.elementId + \"_done_at\"] !== undefined;\n }\n\n public static api = {\n widgetClassName: WidgetBarcode.widgetClassName,\n /** @deprecated */\n refreshUserData: WidgetBarcode.refreshUserData,\n onRefreshUserData: WidgetBarcode.onRefreshUserData,\n init: function (element: HTMLElement, localData?: Record<string, any>): void {\n WidgetBarcode.initWidget(element, localData, (element, options) => new WidgetBarcode(element, options));\n },\n /** @deprecated */\n initWidget: function (nodeList: Iterable<HTMLElement>, localData?: Record<string, any>) {\n const elements = slice.call(nodeList);\n WidgetBarcode.initWidgets<WidgetBarcode, WidgetBarcodeOptions>((element, options) => new WidgetBarcode(element, options), elements, localData).then(\n () => {\n elements.forEach(element => WidgetBarcode.getInstance<WidgetBarcode, WidgetBarcodeOptions>(element)?.onStart());\n }\n );\n },\n onStart: function (element: HTMLElement) {\n WidgetBarcode.getInstance<WidgetBarcode, WidgetBarcodeOptions>(element)?.onStart();\n },\n onStop: function (element: HTMLElement) {\n WidgetBarcode.getInstance<WidgetBarcode, WidgetBarcodeOptions>(element)?.onStop();\n },\n click: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetBarcode.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetBarcode.getInstance<WidgetBarcode, WidgetBarcodeOptions>(widgetElement);\n if (widget) {\n if (!widget.getIsPromotionalCode()) {\n widget.copyToClipboard(element);\n } else if (widget.getStateValue() === 1) {\n widget.copyToClipboard(element);\n } else if (widget.getStateValue() === 3) {\n widget.fetchPromoCode();\n }\n }\n }\n return false;\n },\n };\n}\n","import { addClass, getTagData, removeClass, slice } from \"@utils\";\nimport { WidgetBase } from \"../base\";\nimport { WidgetCopyOptions } from \"./copy.h\";\n\nexport class WidgetCopy extends WidgetBase<WidgetCopyOptions> {\n static DEFAULTS: WidgetCopyOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-copy\";\n\n private readonly button: HTMLElement | null;\n private clipboardTarget: string | undefined;\n private readonly isPromotionalCode: boolean;\n private state: number | null;\n private readonly msgNetworkError: string | undefined;\n private readonly msgServiceError: string | undefined;\n private readonly msgNoMoreCodes: string | undefined;\n private readonly msgTryAgain: string | undefined;\n private readonly geometry: HTMLElement | null;\n private readonly resultLayer: HTMLElement | null;\n private readonly resultLayerGeometry: HTMLElement | null;\n\n constructor(element: HTMLElement, options: Partial<WidgetCopyOptions>) {\n super(element, options);\n\n this.button = this.element.querySelector(\".narrative-element-text-lines\");\n\n this.clipboardTarget = getTagData(element, \"clipboardTarget\");\n this.isPromotionalCode = getTagData(element, \"clipboardType\") === \"promocode\";\n\n this.msgNetworkError = getTagData(this.element, \"msgNetworkError\");\n this.msgServiceError = getTagData(this.element, \"msgServiceError\");\n this.msgNoMoreCodes = getTagData(this.element, \"msgNoMoreCodes\");\n this.msgTryAgain = getTagData(this.element, \"msgTryAgain\");\n\n this.geometry = this.element.closest(\".narrative-element-geometry\");\n\n // this is result layer - skip init\n // todo prevent call Widget.init on result-layer\n if (this.element.classList.contains(\"narrative-element-copy-result-variant\")) {\n return;\n }\n\n this.resultLayer = this.slide.querySelector(`.narrative-element-copy-result-variant[data-element-id=\"${this.elementId}\"]`);\n if (this.resultLayer && this.geometry) {\n this.resultLayerGeometry = this.resultLayer.closest(\".narrative-element-geometry\");\n\n // create align center\n if (this.resultLayerGeometry) {\n const baseComputedGeometry = window.getComputedStyle(this.geometry);\n let resultComputedGeometry = window.getComputedStyle(this.resultLayerGeometry);\n\n if (parseFloat(resultComputedGeometry.width) < parseFloat(baseComputedGeometry.width)) {\n // prevent resultLayer shrinking\n this.resultLayerGeometry.style.setProperty(\"width\", parseFloat(baseComputedGeometry.width) + \"px\");\n resultComputedGeometry = window.getComputedStyle(this.resultLayerGeometry);\n }\n\n const geometryCenter = parseFloat(baseComputedGeometry.left) + parseFloat(baseComputedGeometry.width) / 2;\n const resultLayerGeometryWidth = parseFloat(resultComputedGeometry.width);\n const newResultLayerGeometryLeft = geometryCenter - resultLayerGeometryWidth / 2;\n\n this.resultLayerGeometry.style.setProperty(\"left\", newResultLayerGeometryLeft + \"px\");\n }\n }\n }\n\n /**\n * Start or restart widget\n * @param localData\n */\n public onRefreshUserData(localData: Record<string, any>) {\n super.onRefreshUserData(localData);\n\n // return DOM to init state (ready to copy)\n this.element.classList.remove(\"done\");\n if (this.resultLayer) {\n this.resultLayer.classList.remove(\"done\");\n }\n\n this.state = null;\n\n if (this.isPromotionalCode) {\n this.initPromotionalCodeFromLocalData();\n }\n }\n\n public onStart(): void {\n super.onStart();\n\n // add active class for enable animation\n this.resultLayer?.classList.add(\"active\");\n\n if (this.isPromotionalCode) {\n this.fetchPromoCode();\n }\n }\n\n private isTransparentElement(): boolean {\n if (this.element) {\n try {\n const color = window.getComputedStyle(this.element).color;\n if (color === \"transparent\" || color === \"rgba(0, 0, 0, 0)\" || color === \"rgba(0,0,0,0)\") {\n return true;\n }\n } catch (err) {\n console.error(err);\n }\n }\n return false;\n }\n\n private changeText(newText: string): void {\n if (this.button) {\n this.button.textContent = newText;\n }\n }\n\n private getPromotionalCodeFromLocalData(): string | undefined {\n return this.localData[\"_cp_g_\" + this.elementId + \"_pc\"];\n }\n\n private initPromotionalCodeFromLocalData(): void {\n if (this.getPromotionalCodeFromLocalData() !== undefined) {\n this.state = 1;\n this.clipboardTarget = this.getPromotionalCodeFromLocalData();\n if (this.clipboardTarget != null) {\n this.changeText(this.clipboardTarget);\n }\n removeClass(this.element, \"loader\");\n }\n }\n\n private fetchPromoCode(): void {\n this.state = 0;\n this.initPromotionalCodeFromLocalData();\n\n if (this.state === 0) {\n if (!this.isTransparentElement()) {\n // for transparent element\n addClass(this.element, \"loader\");\n }\n\n // fetch promotional code\n const path = this.getPromotionalCodeFetchPath(this.clipboardTarget ?? \"\");\n const headers = {\n accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n };\n const profileKey = \"fetch-promo-code\";\n\n Promise.all([\n this.sdkApi.sendApiRequest<{ code: string }>(path, \"POST\", null, headers, null, profileKey),\n new Promise<void>(function (t, e) {\n return setTimeout(t, 300);\n }),\n ]).then(values => {\n const r = values[0];\n\n const status = r.status;\n let code = null;\n let success = false;\n if (status === 200 || status === 201) {\n if (r.data) code = r.data.code;\n if (code) {\n // success case\n this.clipboardTarget = code;\n this.changeText(this.clipboardTarget);\n success = true;\n this.state = 1;\n removeClass(this.element, \"loader\");\n\n if (status === 201) {\n this.localData[\"_cp_g_\" + this.elementId + \"_pc_fetched_at\"] = Math.round(new Date().getTime() / 1000);\n this.localData[\"_&ts_cp_g_\" + this.elementId + \"_pc_fetched_at\"] = Math.round(new Date().getTime() / 1000);\n }\n this.localData[\"_cp_g_\" + this.elementId + \"_pc\"] = code;\n\n this.setLocalData(this.localData, true);\n } else {\n this.msgNoMoreCodes && this.sdkApi.showToast(this.msgNoMoreCodes);\n }\n } else if (status === 12163 || status === 12002) {\n this.msgNetworkError && this.sdkApi.showToast(this.msgNetworkError);\n } else {\n this.msgServiceError && this.sdkApi.showToast(this.msgServiceError);\n }\n\n if (!success) {\n this.state = 3;\n this.changeText(this.msgTryAgain ?? \"\");\n removeClass(this.element, \"loader\");\n }\n });\n }\n }\n\n public getStateValue(): number | null {\n return this.state;\n }\n\n public getIsPromotionalCode(): boolean {\n return this.isPromotionalCode;\n }\n\n private _statEventCopyClick(clipboardTarget: string): void {\n try {\n const buttonText = this.button?.textContent ?? \"\";\n\n this.sendStatisticEventToApp(\n \"w-copy\",\n {\n ...this.statisticEventBaseFieldsShortForm,\n wi: this.elementId,\n wl: buttonText,\n wv: clipboardTarget,\n },\n {\n ...this.statisticEventBaseFieldsFullForm,\n widget_id: this.elementId,\n widget_label: buttonText,\n widget_value: clipboardTarget,\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n private _select(): void {\n this.element.classList.add(\"done\");\n if (this.resultLayer) {\n this.resultLayer.classList.add(\"done\");\n }\n\n this.startReadyPromise.then(() => {\n if (this.disableTimer) {\n // флаг - что таймер уже стартанул (в layout или добавить объект sharedMemory)\n // смотрим что прозрачный текст - тогда и лоадер прозрачный\n // _log(\"_showNarrativeNextSlide: \" + getSlideDuration(this.narrativeId, this.slideIndex), true);\n this.startDisabledTimeline();\n }\n });\n }\n\n public copyToClipboard(element: HTMLElement): void {\n this._select();\n\n const textValue = this.clipboardTarget ?? \"\";\n\n this.sdkApi.writeToClipboard({ type: \"text\", textValue });\n\n this.completeWidget();\n\n this._statEventCopyClick(textValue);\n }\n\n private completeWidget(): void {\n this.localData[\"_cp_g_\" + this.elementId + \"_done_at\"] = Math.round(new Date().getTime() / 1000);\n\n // ответ на вопрос\n this.localData[\"_&ts_cp_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n this.setLocalData(this.localData, true);\n }\n\n public isDone(): boolean {\n return this.localData[\"_cp_g_\" + this.elementId + \"_done_at\"] !== undefined;\n }\n\n public static api = {\n widgetClassName: WidgetCopy.widgetClassName,\n /** @deprecated */\n refreshUserData: WidgetCopy.refreshUserData,\n onRefreshUserData: WidgetCopy.onRefreshUserData,\n init: function (element: HTMLElement, localData?: Record<string, any>): void {\n // prevent initWidget for result layer\n if (!element.classList.contains(\"narrative-element-copy-result-variant\")) {\n WidgetCopy.initWidget<WidgetCopy, WidgetCopyOptions>(element, localData, (element, options) => new WidgetCopy(element, options));\n }\n },\n /** @deprecated */\n initWidget: function (nodeList: Iterable<HTMLElement>, localData?: Record<string, any>) {\n // prevent initWidget for result layer\n const elements = slice.call(nodeList).filter(element => !element.classList.contains(\"narrative-element-copy-result-variant\"));\n WidgetCopy.initWidgets<WidgetCopy, WidgetCopyOptions>((element, options) => new WidgetCopy(element, options), elements, localData).then(() => {\n elements.forEach(element => WidgetCopy.getInstance<WidgetCopy, WidgetCopyOptions>(element)?.onStart());\n });\n },\n onStart: function (element: HTMLElement) {\n WidgetCopy.getInstance<WidgetCopy, WidgetCopyOptions>(element)?.onStart();\n },\n onStop: function (element: HTMLElement) {\n WidgetCopy.getInstance<WidgetCopy, WidgetCopyOptions>(element)?.onStop();\n },\n click: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetCopy.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetCopy.getInstance<WidgetCopy, WidgetCopyOptions>(widgetElement);\n if (widget) {\n if (!widget.getIsPromotionalCode()) {\n widget.copyToClipboard(element);\n } else if (widget.getStateValue() === 1) {\n widget.copyToClipboard(element);\n } else if (widget.getStateValue() === 3) {\n widget.fetchPromoCode();\n }\n }\n }\n return false;\n },\n };\n}\n","/** QUIZ */\nimport { extend, getElementBounding, getValueOrException, slice } from \"@utils\";\nimport { WidgetDataInputOptions } from \"./data_input.h\";\nimport { WidgetBase } from \"../base\";\n\nexport class WidgetDataInput extends WidgetBase<WidgetDataInputOptions> {\n static DEFAULTS = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-data-input\";\n\n private readonly label: HTMLElement | null;\n private elementRect: DOMRect;\n private readonly inputElement: HTMLElement;\n private readonly textElement: HTMLElement;\n private readonly inputPlaceholderValue: string;\n\n /**\n * @throws Error\n * @param element\n * @param options\n */\n constructor(element: HTMLElement, options: Partial<WidgetDataInputOptions>) {\n super(element, options);\n\n this.label = this.element.querySelector(\".label-view .label\");\n\n this.elementRect = this.element.getBoundingClientRect();\n\n this.inputElement = getValueOrException(this.element.querySelector<HTMLElement>(\".input-view .input\"), \"Empty .input-view .input\");\n this.textElement = getValueOrException(\n this.inputElement.querySelector<HTMLElement>(\".narrative-element-text-lines\"),\n \"Empty .narrative-element-text-lines\"\n );\n this.inputPlaceholderValue = this.textElement.innerHTML;\n }\n\n /**\n * Start or restart widget\n * @param localData\n */\n public onRefreshUserData(localData: Record<string, any>) {\n super.onRefreshUserData(localData);\n\n const text = this.getTextFromLocalData();\n this._fillUserText(text);\n if (text != null) {\n this.element.classList.add(\"done\");\n\n this.startReadyPromise.then(() => {\n if (this.disableTimer) {\n this.startDisabledTimeline();\n }\n });\n }\n }\n\n private getTextFromLocalData(): string | undefined {\n return this.localData[\"_di_g_\" + this.elementId + \"_t\"];\n }\n\n private _statEventFocusIn() {\n try {\n const labelText = this.label ? this.label.textContent ?? \"\" : \"\";\n\n this.sendStatisticEventToApp(\n \"w-data-input-focus\",\n {\n ...this.statisticEventBaseFieldsShortForm,\n wi: this.elementId,\n wl: labelText,\n },\n {\n ...this.statisticEventBaseFieldsFullForm,\n widget_id: this.elementId,\n widget_label: labelText,\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n private _statEventInputSave(answerText: string) {\n try {\n const labelText = this.label ? this.label.textContent ?? \"\" : \"\";\n\n this.sendStatisticEventToApp(\n \"w-data-input-save\",\n {\n ...this.statisticEventBaseFieldsShortForm,\n wi: this.elementId,\n wl: labelText,\n wv: answerText,\n },\n {\n ...this.statisticEventBaseFieldsFullForm,\n widget_id: this.elementId,\n widget_label: labelText,\n widget_value: answerText,\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n public isDone() {\n return Boolean(this.localData[\"_di_g_\" + this.elementId + \"_t\"]);\n }\n\n public click(element: HTMLElement) {\n if (this.isDone()) {\n return true;\n }\n\n this.elementRect = this.element.getBoundingClientRect();\n\n if (this.sdkApi.isAndroid || this.sdkApi.isWeb) {\n this.slide.classList.add(\"blured\");\n }\n this.slide.classList.add(\"data-input-editing\");\n\n const dataString = this.element.dataset[\"clientdialogwidgetconfig\"];\n\n if (this.sdkApi.isExistsShowCardTextInput && dataString) {\n const data: Record<any, any> = JSON.parse(dataString);\n data.size = getElementBounding(this.env, this.elementRect);\n\n if (!this.disableTimer) {\n this.sdkApi.pauseUI();\n }\n\n try {\n data.text.value = data.text.value.replaceAll(\"\\\\n\", \"\\n\").replaceAll(\"\\\\r\", \"\\r\").replaceAll(\"\\\\t\", \"\\t\");\n data.input.text.placeholder = data.input.text.placeholder.replaceAll(\"\\\\n\", \"\\n\").replaceAll(\"\\\\r\", \"\\r\").replaceAll(\"\\\\t\", \"\\t\");\n data.configV2.main.question.text.value = data.configV2.main.question.text.value\n .replaceAll(\"\\\\n\", \"\\n\")\n .replaceAll(\"\\\\r\", \"\\r\")\n .replaceAll(\"\\\\t\", \"\\t\");\n data.configV2.main.input.text.placeholder = data.configV2.main.input.text.placeholder\n .replaceAll(\"\\\\n\", \"\\n\")\n .replaceAll(\"\\\\r\", \"\\r\")\n .replaceAll(\"\\\\t\", \"\\t\");\n } catch (e) {\n console.error(e);\n }\n\n this.sdkApi.showCardTextInput(this.id, data);\n\n this._statEventFocusIn();\n }\n\n return false;\n }\n\n private _fillUserText(text: string | undefined) {\n if (this.inputElement && this.textElement) {\n if (text != null) {\n this.inputElement.classList.remove(\"_is-placeholder\");\n text = text.replace(new RegExp(\"\\r?\\n\", \"g\"), \"<br />\");\n this.textElement.innerHTML = text;\n } else {\n this.inputElement.classList.add(\"_is-placeholder\");\n this.textElement.innerHTML = this.inputPlaceholderValue;\n }\n }\n }\n\n public setUserText(text: string) {\n this.slide.classList.remove(\"data-input-editing\");\n this.slide.classList.remove(\"blured\");\n\n let needResumeUITimer = true;\n\n if (text) {\n this._fillUserText(text);\n\n this.localData[\"_di_g_\" + this.elementId + \"_t\"] = text;\n // answer to question\n this.localData[\"_&ts_di_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n\n if (this.widgetDone) {\n this.widgetDone.classList.add(\"active\", \"opacity-active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"opacity-active\");\n }, 250);\n }, 2000);\n }\n this.setLocalData(this.localData, true);\n\n this._statEventInputSave(text);\n\n if (this.disableTimer) {\n this.startDisabledTimeline();\n needResumeUITimer = false;\n }\n }\n if (needResumeUITimer && !this.disableTimer) {\n this.sdkApi.resumeUI();\n }\n }\n\n public static api = {\n widgetClassName: WidgetDataInput.widgetClassName,\n /** @deprecated */\n refreshUserData: WidgetDataInput.refreshUserData,\n onRefreshUserData: WidgetDataInput.onRefreshUserData,\n init: function (element: HTMLElement, localData?: Record<string, any>): void {\n WidgetDataInput.initWidget<WidgetDataInput, WidgetDataInputOptions>(\n element,\n localData,\n (element, options) => new WidgetDataInput(element, options)\n );\n },\n /** @deprecated */\n initWidget: function (nodeList: Iterable<HTMLElement>, localData?: Record<string, any>) {\n const elements = slice.call(nodeList);\n WidgetDataInput.initWidgets<WidgetDataInput, WidgetDataInputOptions>(\n (element, options) => new WidgetDataInput(element, options),\n slice.call(nodeList),\n localData\n ).then(() => {\n elements.forEach(element => WidgetDataInput.getInstance<WidgetDataInput, WidgetDataInputOptions>(element)?.onStart());\n });\n },\n onStart: function (element: HTMLElement) {\n WidgetDataInput.getInstance<WidgetDataInput, WidgetDataInputOptions>(element)?.onStart();\n },\n onStop: function (element: HTMLElement) {\n WidgetDataInput.getInstance<WidgetDataInput, WidgetDataInputOptions>(element)?.onStop();\n },\n click: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetDataInput.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetDataInput.getInstance<WidgetDataInput, WidgetDataInputOptions>(widgetElement);\n if (widget) {\n return widget.click(element);\n }\n }\n return true;\n },\n setUserData: function (id: string, text: string) {\n WidgetDataInput.getInstanceById<WidgetDataInput, WidgetDataInputOptions>(id)?.setUserText(text);\n },\n };\n}\n","import { extend, forEach, getTagData, getTagDataAsNumber, getValueOrException, slice } from \"@utils\";\nimport { WidgetBase } from \"../base\";\nimport { WidgetDateCountdownOptions } from \"./date_countdown.h\";\n\nexport class WidgetDateCountdown extends WidgetBase<WidgetDateCountdownOptions> {\n static DEFAULTS: WidgetDateCountdownOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n layers: [],\n };\n\n public static widgetClassName = \"narrative-element-date-countdown\";\n\n private label: HTMLElement | null;\n private readonly layers: Array<HTMLElement>;\n private messages: {\n days: string;\n hours: string;\n minutes: string;\n seconds: string;\n };\n private readonly timestampMs: number;\n private readonly diff: number;\n private timerInit: boolean;\n private pendingUpdate: boolean;\n\n private firstGroup1: HTMLElement;\n private firstGroup2: HTMLElement;\n private firstGroupCaption: HTMLElement;\n\n private secondGroup1: HTMLElement;\n private secondGroup2: HTMLElement;\n private secondGroupCaption: HTMLElement;\n\n private thirdGroup1: HTMLElement;\n private thirdGroup2: HTMLElement;\n private thirdGroupCaption: HTMLElement;\n\n constructor(element: HTMLElement, options: Partial<WidgetDateCountdownOptions>) {\n super(element, options);\n\n this.label = this.element.querySelector(\".label-view .label\");\n\n this.messages = {\n days: getTagData(this.element, \"tDays\") ?? \"\",\n hours: getTagData(this.element, \"tHours\") ?? \"\",\n minutes: getTagData(this.element, \"tMinutes\") ?? \"\",\n seconds: getTagData(this.element, \"tSeconds\") ?? \"\",\n };\n\n this.timestampMs = getValueOrException(getTagDataAsNumber(this.element, \"timestampSeconds\"), \"Empty timestampSeconds\") * 1000;\n this.diff = 0;\n\n this.timerInit = false;\n this.pendingUpdate = true;\n\n this.layers = this.options.layers;\n }\n\n /**\n * Start or restart widget\n * @param localData\n */\n public onRefreshUserData(localData: Record<string, any>): void {\n super.onRefreshUserData(localData);\n\n const value = this.timestampMs - (new Date().getTime() - this.diff);\n if (value > 0) {\n this._showLayer(this.layers, 0);\n } else {\n if (this.layers[1] != null) {\n this._showLayer(this.layers, 1);\n }\n }\n }\n\n public onPause(): void {\n super.onPause();\n\n if (this.timerInit) {\n this.pendingUpdate = false;\n }\n }\n\n public onResume(): void {\n super.onResume();\n\n if (this.timerInit && !this.pendingUpdate) {\n this.pendingUpdate = true;\n this.updateTimer();\n }\n }\n\n public onStart(): void {\n super.onStart();\n\n if (!this.timerInit) {\n this.initTimer();\n }\n }\n\n public onStop(): void {\n super.onStop();\n\n if (this.timerInit) {\n this.pendingUpdate = false;\n this.timerInit = false;\n }\n }\n\n private initTimer(): void {\n if (this.timerInit) {\n return;\n }\n\n // find groups\n this.firstGroup1 = getValueOrException(this.element.querySelector<HTMLElement>(\".date-item-view-group-1 .date-output-label-1\"), \"Empty firstGroup1\");\n this.firstGroup2 = getValueOrException(this.element.querySelector<HTMLElement>(\".date-item-view-group-1 .date-output-label-2\"), \"Empty firstGroup2\");\n this.firstGroupCaption = getValueOrException(\n this.element.querySelector<HTMLElement>(\".date-item-view-group-1 .date-item-caption\"),\n \"Empty firstGroupCaption\"\n );\n\n this.secondGroup1 = getValueOrException(this.element.querySelector<HTMLElement>(\".date-item-view-group-2 .date-output-label-1\"), \"Empty secondGroup1\");\n this.secondGroup2 = getValueOrException(this.element.querySelector<HTMLElement>(\".date-item-view-group-2 .date-output-label-2\"), \"Empty secondGroup2\");\n this.secondGroupCaption = getValueOrException(\n this.element.querySelector<HTMLElement>(\".date-item-view-group-2 .date-item-caption\"),\n \"Empty secondGroupCaption\"\n );\n\n this.thirdGroup1 = getValueOrException(this.element.querySelector<HTMLElement>(\".date-item-view-group-3 .date-output-label-1\"), \"Empty thirdGroup1\");\n this.thirdGroup2 = getValueOrException(this.element.querySelector<HTMLElement>(\".date-item-view-group-3 .date-output-label-2\"), \"Empty thirdGroup2\");\n this.thirdGroupCaption = getValueOrException(\n this.element.querySelector<HTMLElement>(\".date-item-view-group-3 .date-item-caption\"),\n \"Empty thirdGroupCaption\"\n );\n\n this.timerInit = true;\n\n const value = this.timestampMs - (new Date().getTime() - this.diff);\n if (value > 0) {\n this._showLayer(this.layers, 0);\n }\n\n this.updateTimer();\n }\n\n private updateTimer(): void {\n if (!this.timerInit) {\n return;\n }\n const value = this.timestampMs - (new Date().getTime() - this.diff);\n if (value > 0) {\n const result = this._asDuration(Math.round(value / 1000));\n\n if (result.days) {\n this.firstGroupCaption.textContent = this.messages.days;\n this.firstGroup1.textContent = result.day1;\n this.firstGroup2.textContent = result.day2;\n\n this.secondGroupCaption.textContent = this.messages.hours;\n this.secondGroup1.textContent = result.hour1;\n this.secondGroup2.textContent = result.hour2;\n\n this.thirdGroupCaption.textContent = this.messages.minutes;\n this.thirdGroup1.textContent = result.minute1;\n this.thirdGroup2.textContent = result.minute2;\n } else {\n this.firstGroupCaption.textContent = this.messages.hours;\n this.firstGroup1.textContent = result.hour1;\n this.firstGroup2.textContent = result.hour2;\n\n this.secondGroupCaption.textContent = this.messages.minutes;\n this.secondGroup1.textContent = result.minute1;\n this.secondGroup2.textContent = result.minute2;\n\n this.thirdGroupCaption.textContent = this.messages.seconds;\n this.thirdGroup1.textContent = result.second1;\n this.thirdGroup2.textContent = result.second2;\n }\n\n // this.pendingUpdate = true;\n } else {\n this.pendingUpdate = false;\n if (this.layers[1] != null) {\n this._showLayer(this.layers, 1);\n }\n }\n\n if (this.pendingUpdate) {\n this.env.requestAnimationFrame(() => this.updateTimer());\n }\n }\n\n private _asDuration(value: number | undefined | null) {\n const result = {\n days: false,\n day1: \"0\",\n day2: \"0\",\n hour1: \"0\",\n hour2: \"0\",\n minute1: \"0\",\n minute2: \"0\",\n second1: \"0\",\n second2: \"0\",\n };\n\n if (value === undefined || value === null) {\n return result;\n }\n if (value < 0) {\n return result;\n }\n value = Math.floor(value);\n const days = Math.floor((value / 86400) % 365);\n const hours = Math.floor((value / 3600) % 24);\n const minutes = Math.floor((value / 60) % 60);\n const seconds = value % 60;\n\n let pair;\n if (days > 0) {\n result.days = true;\n if (days < 10) result.day2 = String(days);\n else {\n pair = String(days).split(\"\");\n result.day1 = pair[0];\n result.day2 = pair[1];\n }\n }\n\n if (hours < 10) result.hour2 = String(hours);\n else {\n pair = String(hours).split(\"\");\n result.hour1 = pair[0];\n result.hour2 = pair[1];\n }\n\n if (minutes < 10) result.minute2 = String(minutes);\n else {\n pair = String(minutes).split(\"\");\n result.minute1 = pair[0];\n result.minute2 = pair[1];\n }\n\n if (seconds < 10) result.second2 = String(seconds);\n else {\n pair = String(seconds).split(\"\");\n result.second1 = pair[0];\n result.second2 = pair[1];\n }\n return result;\n }\n\n public static api = {\n widgetClassName: WidgetDateCountdown.widgetClassName,\n /** @deprecated */\n refreshUserData: WidgetDateCountdown.refreshUserData,\n onRefreshUserData: WidgetDateCountdown.onRefreshUserData,\n init: function (element: HTMLElement, layers: Array<HTMLElement>, localData?: Record<string, any>): void {\n WidgetDateCountdown.initWidget<WidgetDateCountdown, WidgetDateCountdownOptions>(\n element,\n localData,\n (element, options) => new WidgetDateCountdown(element, { ...options, layers })\n );\n },\n /** @deprecated */\n initWidget: function (nodeList: Iterable<HTMLElement>, layers: Array<HTMLElement>, localData?: Record<string, any>): void {\n const elements = slice.call(nodeList);\n WidgetDateCountdown.initWidgets<WidgetDateCountdown, WidgetDateCountdownOptions>(\n (element, options) => new WidgetDateCountdown(element, { ...options, layers }),\n elements,\n localData\n ).then(() => {\n elements.forEach(element => WidgetDateCountdown.getInstance<WidgetDateCountdown, WidgetDateCountdownOptions>(element)?.onStart());\n });\n },\n onStart: function (element: HTMLElement) {\n WidgetDateCountdown.getInstance<WidgetDateCountdown, WidgetDateCountdownOptions>(element)?.onStart();\n },\n onStop: function (element: HTMLElement) {\n WidgetDateCountdown.getInstance<WidgetDateCountdown, WidgetDateCountdownOptions>(element)?.onStop();\n },\n onPause: function (element: HTMLElement) {\n WidgetDateCountdown.getInstance<WidgetDateCountdown, WidgetDateCountdownOptions>(element)?.onPause();\n },\n onResume: function (element: HTMLElement) {\n WidgetDateCountdown.getInstance<WidgetDateCountdown, WidgetDateCountdownOptions>(element)?.onResume();\n },\n /** @deprecated */\n pause: function (nodeList: Iterable<HTMLElement>): void {\n forEach(slice.call(nodeList), function (el, index) {\n WidgetDateCountdown.getInstance<WidgetDateCountdown, WidgetDateCountdownOptions>(el)?.onPause();\n });\n },\n /** @deprecated */\n resume: function (nodeList: Iterable<HTMLElement>): void {\n forEach(slice.call(nodeList), function (el, index) {\n WidgetDateCountdown.getInstance<WidgetDateCountdown, WidgetDateCountdownOptions>(el)?.onResume();\n });\n },\n };\n}\n","import { forEach, getTagData, getTagDataAsNumber, isNumeric, isObject } from \"@utils\";\nimport { CARD_TYPE } from \"../../common_types.h\";\nimport { WidgetBase } from \"../base\";\n\nconst displaySlide = function (slides: Array<HTMLElement>, localData: Record<string, any>) {\n const multiSlideItem = slides[0];\n\n let cardId: number | undefined = undefined;\n let cardType: CARD_TYPE = CARD_TYPE.STORY;\n let slideIndex: number | undefined = undefined;\n\n if (multiSlideItem != null) {\n cardId = getTagDataAsNumber(multiSlideItem, \"id\");\n cardType = getTagDataAsNumber(multiSlideItem, \"cardType\") ?? CARD_TYPE.STORY;\n slideIndex = getTagDataAsNumber(multiSlideItem, \"index\");\n\n if (\n multiSlideItem.querySelectorAll(\n \".narrative-element-share[data-with-layer='1'], .narrative-element-poll-layers, .narrative-element-date-countdown, .narrative-element-game\"\n ).length > 0\n ) {\n // skip if exists share/poll_layers\n return;\n }\n }\n\n // score\n var score = null;\n var selectedIndex: number | undefined = undefined;\n if (localData[\"q_score\"] !== undefined) {\n score = parseInt(localData[\"q_score\"]);\n } else if (localData[\"t_score\"] !== undefined) {\n score = parseInt(localData[\"t_score\"]);\n } else if (localData[\"qg_score\"] !== undefined) {\n score = localData[\"qg_score\"]; // array\n\n var tmpScore = score;\n if (isObject(score)) {\n tmpScore = Object.values(score);\n }\n tmpScore.sort();\n tmpScore.reverse();\n\n if (tmpScore[0] === tmpScore[1]) {\n forEach(slides, function (slide, index) {\n var minScore = getTagData(slide, \"layerMinScore\");\n if (minScore !== undefined) {\n if (minScore === \"uncertain\") {\n selectedIndex = index as number;\n }\n }\n });\n } else {\n var maxCategoryCnt = 0;\n // find quiz category (selectedCategoryIndex) - chosen most often\n var selectedCategoryIndex: number | undefined = undefined;\n forEach(score, function (value, i) {\n var item = parseInt(value as unknown as string);\n if (item > maxCategoryCnt) {\n maxCategoryCnt = item;\n selectedCategoryIndex = parseInt(i as string);\n }\n });\n\n // chose slide with correct result\n forEach(slides, function (slide, index) {\n var minScore = getTagData(slide, \"layerMinScore\");\n if (minScore !== undefined && isNumeric(minScore) && parseInt(minScore) === selectedCategoryIndex) {\n selectedIndex = index as number;\n }\n });\n }\n }\n\n if (score === null) {\n if (slides.length > 0) {\n var slide = slides[0];\n slide.classList.remove(\"hidden\");\n\n WidgetBase.widgetsService.sdkApi.cardAnimation?.start(slide);\n return;\n }\n score = 0;\n }\n\n if (selectedIndex === undefined) {\n var map: Array<[number, number]> = [];\n forEach(slides, function (slide, index) {\n var minScore = getTagData(slide, \"layerMinScore\");\n if (minScore !== undefined) {\n map.push([index as number, parseInt(minScore)]);\n }\n });\n\n map.sort(function (a, b) {\n return a[1] - b[1];\n });\n\n for (var i = map.length - 1; i >= 0; i--) {\n if (score >= map[i][1]) {\n selectedIndex = map[i][0];\n break;\n }\n }\n }\n\n var undefinedResult = true;\n if (selectedIndex !== undefined) {\n forEach(slides, function (slide, index) {\n if (index === selectedIndex) {\n slide.classList.remove(\"hidden\");\n undefinedResult = false;\n WidgetBase.widgetsService.sdkApi.cardAnimation?.start(slide);\n _sendStatEvent(cardId as number, cardType, slideIndex as number, selectedIndex);\n }\n });\n }\n\n if (undefinedResult) {\n console.warn(\"undefinedResult layer index\");\n WidgetBase.widgetsService.sdkApi.showLayer(0);\n }\n};\n\nconst _sendStatEvent = function (cardId: number, cardType: CARD_TYPE, slideIndex: number, layerIndex: number) {\n try {\n WidgetBase.sendStatisticEventToApp(\n \"layout-show\",\n {\n ...WidgetBase.getStatisticEventBaseFieldsShortForm(cardId, slideIndex),\n li: layerIndex,\n },\n {\n ...WidgetBase.getStatisticEventBaseFieldsFullForm(cardId, cardType, slideIndex),\n layout_index: layerIndex,\n }\n );\n } catch (error) {\n console.error(error);\n }\n};\n\nexport class WidgetMultiSlide {\n public static api = {\n init: function (slides: Array<HTMLElement>, localData?: Record<string, any>) {\n if (localData != null) {\n displaySlide(slides, localData);\n } else {\n WidgetBase.getLocalData().then(function (localData) {\n displaySlide(slides, localData);\n });\n }\n },\n };\n}\n","import { extend, forEach, getElementBounding, getTagDataAsNumber, getValueOrException, isArray, isNumber, isObject, slice } from \"@utils\";\nimport { WidgetBase, Widgets } from \"../base\";\nimport { WidgetPollOptions, WidgetPollSharedData } from \"./poll.h\";\n\nexport class WidgetPoll extends WidgetBase<WidgetPollOptions> {\n static DEFAULTS = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-poll\";\n\n private label: HTMLElement | null;\n private readonly percentFillMask: HTMLElement | null;\n private readonly maskedVariants: Array<HTMLElement>;\n private readonly variantsViewGroup: HTMLElement;\n private readonly variants: Array<HTMLElement>;\n private readonly variantsTexts: Array<string>;\n private readonly isInvertedPercentFilledMaskDirection: boolean;\n private readonly getUseResponseOnFirstButton: boolean;\n private readonly getUseResponseOnSecondButton: boolean;\n private readonly showClientTotalResult: boolean;\n private selectedVariant: number | undefined;\n private nativeDialogueWasOpened: boolean = false;\n private answerDuration: number = 0;\n private elementRect: DOMRect;\n\n /**\n * @throws Error\n * @param element\n * @param options\n */\n constructor(element: HTMLElement, options: Partial<WidgetPollOptions>) {\n super(element, options);\n\n this.label = this.element.querySelector(\".label-view .label\");\n\n this.percentFillMask = this.element.querySelector<HTMLElement>(\".percent-filled-variants-view-group-mask\");\n this.maskedVariants = slice.call(this.element.querySelectorAll(\".variants-box .variants-view-group.percent-filled-variants-view-group .variant-view\"));\n\n this.variantsViewGroup = getValueOrException(\n this.element.querySelector<HTMLElement>(\".variants-box .variants-view-group:not(.percent-filled-variants-view-group)\"),\n \"Empty variantsViewGroup\"\n );\n this.variants = slice.call(this.variantsViewGroup.querySelectorAll(\".variant-view\"));\n\n this.variantsTexts = [];\n forEach(this.variants, (element, index) => {\n const label = element.querySelector(\".label\");\n if (label) {\n this.variantsTexts.push(label.textContent ?? \"\");\n }\n });\n\n this.isInvertedPercentFilledMaskDirection =\n this.element.classList.contains(\"theme-translucent\") || this.element.classList.contains(\"base-theme-translucent\");\n\n this.getUseResponseOnFirstButton = Boolean(getTagDataAsNumber(this.element, \"getUserResponseOnFirstButton\"));\n this.getUseResponseOnSecondButton = Boolean(getTagDataAsNumber(this.element, \"getUserResponseOnSecondButton\"));\n this.showClientTotalResult = Boolean(getTagDataAsNumber(this.element, \"showClientTotalResult\"));\n }\n\n /**\n * Start or restart widget\n * @param localData\n */\n public onRefreshUserData(localData: Record<string, any>): void {\n super.onRefreshUserData(localData);\n\n this.selectedVariant = undefined;\n\n if (this.localData) {\n if (this.localData[\"_p_g_\" + this.elementId + \"_sa\"] !== undefined) {\n this._selectVariant(this.localData[\"_p_g_\" + this.elementId + \"_sa\"], true);\n } else {\n this._clearVariantSelection();\n }\n }\n\n this.firstOpenTime = new Date().getTime();\n\n this.nativeDialogueWasOpened = false;\n }\n\n private _statEventPollAnswer(): void {\n this.answerDuration = new Date().getTime() - this.firstOpenTime;\n try {\n if (this.selectedVariant !== undefined) {\n const labelText = this.label?.textContent ?? \"\";\n const variantText = this.variantsTexts[this.selectedVariant] ? this.variantsTexts[this.selectedVariant] : \"\";\n\n this.sendStatisticEventToApp(\n \"w-poll-answer\",\n {\n ...this.statisticEventBaseFieldsShortForm,\n wi: this.elementId,\n wl: labelText,\n wa: this.selectedVariant,\n wal: variantText,\n d: this.answerDuration,\n },\n {\n ...this.statisticEventBaseFieldsFullForm,\n widget_id: this.elementId,\n widget_label: labelText,\n widget_answer: this.selectedVariant,\n widget_answer_label: variantText,\n duration_ms: this.answerDuration,\n }\n );\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n private _statEventInputSave(responseText: string): void {\n try {\n if (this.selectedVariant !== undefined) {\n const labelText = this.label?.textContent ?? \"\";\n const variantText = this.variantsTexts[this.selectedVariant] ? this.variantsTexts[this.selectedVariant] : \"\";\n\n this.sendStatisticEventToApp(\n \"w-poll-clarification\",\n {\n ...this.statisticEventBaseFieldsShortForm,\n wi: this.elementId,\n wl: labelText,\n wa: this.selectedVariant,\n wal: variantText,\n wv: responseText,\n d: this.answerDuration,\n },\n {\n ...this.statisticEventBaseFieldsFullForm,\n widget_id: this.elementId,\n widget_label: labelText,\n widget_answer: this.selectedVariant,\n widget_answer_label: variantText,\n widget_value: responseText,\n duration_ms: this.answerDuration,\n }\n );\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n _selectVariant(index: number, filled: boolean = false): void {\n if (this.variants[index]) {\n this.variants[index].classList.add(\"selected\");\n }\n\n this.selectedVariant = index;\n\n this.localData[\"_p_g_\" + this.elementId + \"_sa\"] = index;\n\n this.element.classList.add(\"done\");\n this.element.classList.add(\"selected-\" + this.selectedVariant);\n if (filled) {\n this.element.classList.add(\"filled\");\n }\n\n if (this.showClientTotalResult) {\n this.element.classList.add(\"with-total-result\");\n this.displayPercents(index, filled);\n }\n\n this.startReadyPromise.then(() => {\n if (this.disableTimer) {\n this.startDisabledTimeline();\n }\n });\n }\n\n private _clearVariantSelection(): void {\n forEach(this.variants, function (variant) {\n variant.classList.remove(\"selected\");\n });\n\n this.element.classList.remove(\"done\");\n this.element.classList.remove(\"selected-\" + this.selectedVariant);\n this.element.classList.remove(\"filled\");\n\n this.selectedVariant = undefined;\n\n this.element.classList.remove(\"with-total-result\");\n // this.displayPercents(index, filled);\n }\n\n private selectVariant(variantView: HTMLElement): boolean {\n this.nativeDialogueWasOpened = false;\n\n if (this.selectedVariant !== undefined) {\n return true;\n }\n\n const index = this.variants.indexOf(variantView);\n if (index !== -1) {\n this.elementRect = this.element.getBoundingClientRect();\n\n if (this.getUseResponseOnFirstButton && index === 0) {\n if (this.sdkApi.isAndroid) {\n this.slide.classList.add(\"blured\");\n }\n this.slide.classList.add(\"data-input-editing\");\n\n const dataString = this.element.dataset[\"clientdialogwidgetconfig\"];\n\n this.selectedVariant = index;\n\n if (this.sdkApi.isExistsShowCardTextInput && dataString) {\n const data: Record<any, any> = JSON.parse(dataString);\n\n data.size = getElementBounding(this.env, this.elementRect);\n\n if (!this.disableTimer) {\n this.sdkApi.pauseUI();\n }\n this.nativeDialogueWasOpened = false;\n\n try {\n data.text.value = data.text.value.replaceAll(\"\\\\n\", \"\\n\").replaceAll(\"\\\\r\", \"\\r\").replaceAll(\"\\\\t\", \"\\t\");\n data.input.text.placeholder = data.input.text.placeholder.replaceAll(\"\\\\n\", \"\\n\").replaceAll(\"\\\\r\", \"\\r\").replaceAll(\"\\\\t\", \"\\t\");\n data.configV2.main.question.text.value = data.configV2.main.question.text.value\n .replaceAll(\"\\\\n\", \"\\n\")\n .replaceAll(\"\\\\r\", \"\\r\")\n .replaceAll(\"\\\\t\", \"\\t\");\n data.configV2.main.input.text.placeholder = data.configV2.main.input.text.placeholder\n .replaceAll(\"\\\\n\", \"\\n\")\n .replaceAll(\"\\\\r\", \"\\r\")\n .replaceAll(\"\\\\t\", \"\\t\");\n } catch (e) {\n console.error(e);\n }\n\n this.sdkApi.showCardTextInput(`${this.id}_first`, data);\n }\n\n this._statEventPollAnswer();\n\n return false;\n } else if (this.getUseResponseOnSecondButton && index === 1) {\n if (this.sdkApi.isAndroid) {\n this.slide.classList.add(\"blured\");\n }\n this.slide.classList.add(\"data-input-editing\");\n\n const dataString = this.element.dataset[\"clientdialogwidgetconfig\"];\n\n this.selectedVariant = index;\n\n if (this.sdkApi.isExistsShowCardTextInput && dataString) {\n const data: Record<any, any> = JSON.parse(dataString);\n data.size = getElementBounding(this.env, this.elementRect);\n\n if (!this.disableTimer) {\n this.sdkApi.pauseUI();\n }\n\n try {\n data.text.value = data.text.value.replaceAll(\"\\\\n\", \"\\n\").replaceAll(\"\\\\r\", \"\\r\").replaceAll(\"\\\\t\", \"\\t\");\n data.input.text.placeholder = data.input.text.placeholder.replaceAll(\"\\\\n\", \"\\n\").replaceAll(\"\\\\r\", \"\\r\").replaceAll(\"\\\\t\", \"\\t\");\n data.configV2.main.question.text.value = data.configV2.main.question.text.value\n .replaceAll(\"\\\\n\", \"\\n\")\n .replaceAll(\"\\\\r\", \"\\r\")\n .replaceAll(\"\\\\t\", \"\\t\");\n data.configV2.main.input.text.placeholder = data.configV2.main.input.text.placeholder\n .replaceAll(\"\\\\n\", \"\\n\")\n .replaceAll(\"\\\\r\", \"\\r\")\n .replaceAll(\"\\\\t\", \"\\t\");\n } catch (e) {\n console.error(e);\n }\n\n this.sdkApi.showCardTextInput(`${this.id}_second`, data);\n }\n\n this._statEventPollAnswer();\n\n return false;\n } else {\n this._selectVariant(index);\n\n this._statEventPollAnswer();\n }\n\n this.completeWidget();\n }\n\n return false;\n }\n\n private _getVariantBoxInPercent(variantIndex: number) {\n const box = {\n sideOffset: 0,\n width: 0,\n };\n\n if (this.variantsViewGroup != null && variantIndex != null && this.variants[0] != null && this.variants[1] != null) {\n const viewGroupWidth = this.variantsViewGroup.clientWidth;\n if (viewGroupWidth > 0) {\n let offset = 0;\n let variantViewMinWidth = 0;\n\n // get min offset for variantView from variants-view-group\n const variantView = this.variants[variantIndex];\n const label = variantView.querySelector(\".label\");\n const percentLabel = variantView.querySelector(\".percent-label\");\n\n if (label != null && percentLabel != null) {\n const variantViewWidth = variantView.clientWidth;\n const labelOffset = (variantViewWidth - label.clientWidth) / 2;\n const percentLabelOffset = (variantViewWidth - percentLabel.clientWidth) / 2;\n offset = Math.min(labelOffset, percentLabelOffset);\n variantViewMinWidth = Math.max(label.clientWidth, percentLabel.clientWidth);\n }\n\n box.sideOffset = (offset / viewGroupWidth) * 100;\n box.width = (variantViewMinWidth / viewGroupWidth) * 100;\n }\n }\n\n return box;\n }\n\n displayPercents(selectedVariantIndex: number, filled: boolean = false): void {\n let pollAllocation: WidgetPollSharedData[string] = [0, 0];\n let pollAllocationTs: number | undefined = undefined;\n const sharedData = this.sdkApi.getWidgetsSharedData<Widgets.Poll>(this.cardId, Widgets.Poll);\n if (sharedData && sharedData[this.elementId] != null && (isObject(sharedData[this.elementId]) || isArray(sharedData[this.elementId]))) {\n pollAllocation = sharedData[this.elementId];\n if (isObject(sharedData[this.elementId])) {\n pollAllocation = slice.call(Object.values(sharedData[this.elementId])) as unknown as WidgetPollSharedData[string];\n }\n pollAllocationTs = sharedData.ts;\n }\n\n // todo debug\n // pollAllocation[0] = 10;\n // pollAllocation[1] = 20;\n\n const pollDoneAt = this.localData[\"_p_g_\" + this.elementId + \"_done_at\"];\n\n if (pollAllocationTs === undefined || pollDoneAt === undefined || pollDoneAt > pollAllocationTs) {\n forEach(this.variants, (element, index) => {\n const key = index as 0 | 1;\n if (pollAllocation[key] === undefined || !isNumber(pollAllocation[key])) {\n pollAllocation[key] = 0;\n }\n if (selectedVariantIndex === key) {\n ++pollAllocation[key];\n }\n });\n }\n\n // calc percents\n let percents: Array<number> = [],\n total = 0;\n forEach(this.variants, (element, index) => {\n const key = index as 0 | 1;\n if (pollAllocation[key] !== undefined) {\n if (!isNumber(pollAllocation[key])) {\n percents[key] = parseInt(String(pollAllocation[key]));\n } else {\n percents[key] = pollAllocation[key];\n }\n\n if (!isNumber(percents[key]) || isNaN(percents[key])) {\n percents[key] = 0;\n }\n } else {\n percents[key] = 0;\n }\n total += percents[key];\n });\n for (let i = 0; i < percents.length; i++) {\n if (total !== 0) {\n percents[i] = Math.round((percents[i] / total) * 100);\n if (percents[i] > 100) {\n percents[i] = 100;\n }\n } else {\n percents[i] = 0;\n }\n }\n\n const percentsTotal = function () {\n let acc = 0;\n for (let i = 0; i < percents.length; i++) {\n acc += percents[i];\n }\n return acc;\n };\n\n const start = new Date().getTime();\n while (percentsTotal() > 100) {\n percents[percents.length - 1]--;\n if (new Date().getTime() - start >= 1000) {\n break;\n }\n }\n\n let variantWithMinPercentsRelativeWidth = 0;\n let variantWithMinPercentsIndex = null;\n forEach(this.variants, (element, index) => {\n const key = index as 0 | 1;\n const percent = percents[key];\n\n const variant = element;\n const maskedVariant = this.maskedVariants[key];\n\n if (this.selectedVariant === key) {\n variant.classList.add(\"selected\");\n if (maskedVariant != null) {\n maskedVariant.classList.add(\"selected\");\n }\n }\n\n const percentLabel = variant.querySelector(\".percent-label\");\n if (percentLabel != null) {\n percentLabel.innerHTML = percent + \"%\";\n }\n const maskedPercentLabel = maskedVariant?.querySelector(\".percent-label\");\n if (maskedPercentLabel != null) {\n maskedPercentLabel.innerHTML = percent + \"%\";\n }\n });\n\n const cb = () => {\n if (\n this.percentFillMask != null &&\n this.variants[0] != null &&\n this.variants[1] != null &&\n this.selectedVariant != null &&\n percents[this.selectedVariant] != null\n ) {\n const selectedVariantPercent = percents[this.selectedVariant];\n let limit = 0;\n let percent = 0;\n\n variantWithMinPercentsIndex = 0;\n if (percents[1] < percents[0]) {\n variantWithMinPercentsIndex = 1;\n }\n\n const boxPercents = this._getVariantBoxInPercent(variantWithMinPercentsIndex);\n variantWithMinPercentsRelativeWidth = boxPercents.width;\n\n let offset = 0;\n if (this.selectedVariant === 0) {\n if (this.isInvertedPercentFilledMaskDirection) {\n if (variantWithMinPercentsIndex === 1) {\n percent = Math.max(variantWithMinPercentsRelativeWidth, 100 - selectedVariantPercent);\n } else {\n limit = 100 - variantWithMinPercentsRelativeWidth;\n percent = Math.min(limit, 100 - selectedVariantPercent);\n }\n offset = (50 - percent) / 2;\n\n this.percentFillMask.style.setProperty(\"--selected-variant-view-clip-area-start\", String(0));\n this.percentFillMask.style.setProperty(\"--selected-variant-view-clip-area-end\", String(percent));\n\n this.element.style.setProperty(\"--variants-view-group-offset\", String(offset));\n } else {\n if (variantWithMinPercentsIndex === 0) {\n // real variant percent or variantView min width\n percent = Math.max(selectedVariantPercent, variantWithMinPercentsRelativeWidth);\n } else {\n limit = 100 - variantWithMinPercentsRelativeWidth;\n percent = Math.min(limit, selectedVariantPercent);\n }\n offset = (50 - percent) / -2;\n\n // decrease alt color from start to firstVariant percents\n this.percentFillMask.style.setProperty(\"--selected-variant-view-clip-area-start\", String(percent));\n this.percentFillMask.style.setProperty(\"--selected-variant-view-clip-area-end\", String(0));\n\n this.element.style.setProperty(\"--variants-view-group-offset\", String(offset));\n }\n } else if (this.selectedVariant === 1) {\n if (this.isInvertedPercentFilledMaskDirection) {\n if (variantWithMinPercentsIndex === 0) {\n percent = Math.max(variantWithMinPercentsRelativeWidth, 100 - selectedVariantPercent);\n } else {\n limit = 100 - variantWithMinPercentsRelativeWidth;\n percent = Math.min(limit, 100 - selectedVariantPercent);\n }\n offset = (50 - percent) / -2;\n\n this.percentFillMask.style.setProperty(\"--selected-variant-view-clip-area-start\", String(percent));\n this.percentFillMask.style.setProperty(\"--selected-variant-view-clip-area-end\", String(0));\n\n this.element.style.setProperty(\"--variants-view-group-offset\", String(offset));\n } else {\n // decrease alt color from end to secondVariant percents\n this.percentFillMask.style.setProperty(\"--selected-variant-view-clip-area-start\", String(0));\n if (variantWithMinPercentsIndex === 1) {\n // real variant percent or variantView min width\n percent = Math.max(selectedVariantPercent, variantWithMinPercentsRelativeWidth);\n } else {\n limit = 100 - variantWithMinPercentsRelativeWidth;\n percent = Math.min(limit, selectedVariantPercent);\n }\n offset = (50 - percent) / 2;\n\n this.percentFillMask.style.setProperty(\"--selected-variant-view-clip-area-end\", String(percent));\n\n this.element.style.setProperty(\"--variants-view-group-offset\", String(offset));\n }\n }\n }\n };\n\n // if (filled) {\n // cb();\n // } else {\n // wait for percent render done (for calc correct variantView width)\n this.env.requestAnimationFrame(cb);\n // }\n }\n\n public setUserText(text: string, buttonPosition: \"first_button\" | \"second_button\"): void {\n this.slide.classList.remove(\"data-input-editing\");\n this.slide.classList.remove(\"blured\");\n\n if (this.selectedVariant != null) {\n this._selectVariant(this.selectedVariant);\n }\n\n if (!this.disableTimer && this.nativeDialogueWasOpened) {\n this.sdkApi.resumeUI();\n this.nativeDialogueWasOpened = false;\n }\n\n this.localData[\"_p_g_\" + this.elementId + \"_user_response_on_\" + buttonPosition] = text;\n this.completeWidget();\n\n this._statEventInputSave(text);\n }\n\n private completeWidget(): void {\n if (this.widgetDone) {\n this.widgetDone.classList.add(\"active\", \"opacity-active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"opacity-active\");\n }, 250);\n }, 2000);\n }\n\n this.localData[\"_p_g_\" + this.elementId + \"_done_at\"] = Math.round(new Date().getTime() / 1000);\n // ответ на вопрос\n this.localData[\"_&ts_p_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n this.setLocalData(this.localData, true);\n }\n\n public isDone(): boolean {\n return this.localData[\"_p_g_\" + this.elementId + \"_done_at\"] !== undefined;\n }\n\n public slidePollIsDone(): boolean {\n return this.localData[\"_p_g_\" + this.elementId + \"_sa\"] !== undefined;\n }\n\n public static api = {\n widgetClassName: WidgetPoll.widgetClassName,\n /** @deprecated */\n refreshUserData: WidgetPoll.refreshUserData,\n onRefreshUserData: WidgetPoll.onRefreshUserData,\n init: function (element: HTMLElement, localData?: Record<string, any>): void {\n WidgetPoll.initWidget<WidgetPoll, WidgetPollOptions>(element, localData, (element, options) => new WidgetPoll(element, options));\n },\n /** @deprecated */\n initWidget: function (element: HTMLElement, localData?: Record<string, any>) {\n WidgetPoll.initWidgets<WidgetPoll, WidgetPollOptions>((element, options) => new WidgetPoll(element, options), [element], localData).then(() => {\n WidgetPoll.getInstance<WidgetPoll, WidgetPollOptions>(element)?.onStart();\n });\n },\n onStart: function (element: HTMLElement) {\n WidgetPoll.getInstance<WidgetPoll, WidgetPollOptions>(element)?.onStart();\n },\n onStop: function (element: HTMLElement) {\n WidgetPoll.getInstance<WidgetPoll, WidgetPollOptions>(element)?.onStop();\n },\n /**\n * click\n */\n select: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetPoll.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetPoll.getInstance<WidgetPoll, WidgetPollOptions>(widgetElement);\n if (widget) {\n return widget.selectVariant(element);\n }\n }\n return false;\n },\n slidePollIsDone: function (element: HTMLElement) {\n const widget = WidgetPoll.getInstance<WidgetPoll, WidgetPollOptions>(element);\n if (widget) {\n return widget.slidePollIsDone();\n }\n return true;\n },\n setUserData: function (id: string, text: string) {\n // id = widgetId_first || widgetId_second\n let correctWidgetId = id;\n let buttonPosition: \"first_button\" | \"second_button\" | undefined;\n if (id.endsWith(\"_first\")) {\n buttonPosition = \"first_button\";\n correctWidgetId = id.replace(/_first$/, \"\");\n } else if (id.endsWith(\"_second\")) {\n buttonPosition = \"second_button\";\n correctWidgetId = id.replace(/_second$/, \"\");\n }\n\n const widget = WidgetPoll.getInstanceById<WidgetPoll, WidgetPollOptions>(correctWidgetId);\n if (widget && buttonPosition) {\n widget.setUserText(text, buttonPosition);\n }\n },\n };\n}\n","import { extend, forEach, slice } from \"@utils\";\nimport { WidgetBase } from \"../base\";\nimport { WidgetPollLayersOptions } from \"./poll_layers.h\";\n\nexport class WidgetPollLayers extends WidgetBase<WidgetPollLayersOptions> {\n static DEFAULTS: WidgetPollLayersOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n layers: [],\n };\n\n public static widgetClassName = \"narrative-element-poll-layers\";\n\n private label: HTMLElement | null;\n private readonly variants: Array<HTMLElement>;\n private variantsTexts: Array<string>;\n private selectedVariant: number | undefined;\n private readonly layers: Array<HTMLElement>;\n\n constructor(element: HTMLElement, options: Partial<WidgetPollLayersOptions>) {\n super(element, options);\n this.layers = this.options.layers;\n this.label = this.element.querySelector(\".label-view .label\");\n this.variants = slice.call(this.element.querySelectorAll(\".variants-box .variant-view\"));\n\n this.variantsTexts = [];\n forEach(this.variants, (element, index) => {\n const label = element.querySelector(\".label\");\n if (label) {\n this.variantsTexts.push(label.textContent ?? \"\");\n }\n });\n }\n\n /**\n * Start or restart widget\n * @param localData\n */\n public onRefreshUserData(localData: Record<string, any>): void {\n super.onRefreshUserData(localData);\n\n this.selectedVariant = undefined;\n\n if (this.slidePollIsDone()) {\n this._selectVariant(this.localData[\"_pl_g_\" + this.elementId + \"_sa\"]);\n } else {\n this._showLayer(this.layers, 0);\n }\n\n this.firstOpenTime = new Date().getTime();\n }\n\n private _statEventPollVariant(): void {\n try {\n if (this.selectedVariant != null) {\n const labelText = this.label?.textContent ?? \"\";\n const variantText = this.variants[this.selectedVariant]?.textContent ?? \"\";\n const duration = new Date().getTime() - this.firstOpenTime;\n\n this.sendStatisticEventToApp(\n \"w-poll-layers-answer\",\n {\n ...this.statisticEventBaseFieldsShortForm,\n wi: this.elementId,\n wl: labelText,\n wa: this.selectedVariant,\n wal: variantText,\n d: duration,\n },\n {\n ...this.statisticEventBaseFieldsFullForm,\n widget_id: this.elementId,\n widget_label: labelText,\n widget_variant: this.selectedVariant,\n widget_answer_label: variantText,\n duration_ms: duration,\n }\n );\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n private _selectVariant(index: number, userAction: boolean = false): void {\n if (this.variants[index]) {\n this.variants[index].classList.add(\"selected\");\n }\n\n this.selectedVariant = index;\n\n this.localData[\"_pl_g_\" + this.elementId + \"_sa\"] = index;\n\n this.element.classList.add(\"done\");\n\n // main\n let layerIndex = 0;\n if (index === 0) {\n layerIndex = 1;\n } else if (index === 1) {\n layerIndex = 2;\n }\n\n this._showLayer(this.layers, layerIndex, userAction);\n\n this.startReadyPromise.then(() => {\n if (this.disableTimer) {\n this.startDisabledTimeline();\n }\n });\n }\n\n public selectVariant(variant: HTMLElement): boolean {\n if (this.selectedVariant !== undefined) {\n return true;\n }\n\n const index = this.variants.indexOf(variant);\n if (index !== -1) {\n this._selectVariant(index, true);\n this.completeWidget();\n this._statEventPollVariant();\n }\n return false;\n }\n\n private completeWidget(): void {\n if (this.widgetDone) {\n this.widgetDone.classList.add(\"active\", \"opacity-active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"opacity-active\");\n }, 250);\n }, 2000);\n }\n\n this.localData[\"_pl_g_\" + this.elementId + \"_done_at\"] = Math.round(new Date().getTime() / 1000);\n // ответ на вопрос\n this.localData[\"_&ts_pl_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n\n this.setLocalData(this.localData, true);\n }\n\n public isDone(): boolean {\n return this.localData != null && this.localData[\"_pl_g_\" + this.elementId + \"_done_at\"] !== undefined;\n }\n\n public slidePollIsDone(): boolean {\n return this.localData != null && this.localData[\"_pl_g_\" + this.elementId + \"_sa\"] !== undefined;\n }\n\n public static api = {\n widgetClassName: WidgetPollLayers.widgetClassName,\n /** @deprecated */\n refreshUserData: WidgetPollLayers.refreshUserData,\n onRefreshUserData: WidgetPollLayers.onRefreshUserData,\n init: function (element: HTMLElement, layers: Array<HTMLElement>, localData?: Record<string, any>): void {\n WidgetPollLayers.initWidget<WidgetPollLayers, WidgetPollLayersOptions>(\n element,\n localData,\n (element, options) => new WidgetPollLayers(element, { ...options, layers })\n );\n },\n /** @deprecated\n *\n * signature variants\n * (widget, layers, undefined) - modern web sdk\n * (widget, undefined, layers) - old web sdk and rn\n * (widget, layers, localData) - native sdk\n */\n initWidget: function (element: HTMLElement, layers: Array<HTMLElement>, localData?: Record<string, any>): void {\n if (layers === undefined && localData !== undefined) {\n // @ts-ignore\n layers = localData;\n localData = undefined;\n }\n WidgetPollLayers.initWidgets<WidgetPollLayers, WidgetPollLayersOptions>(\n (element, options) => new WidgetPollLayers(element, { ...options, layers }),\n [element],\n localData\n ).then(() => {\n WidgetPollLayers.getInstance<WidgetPollLayers, WidgetPollLayersOptions>(element)?.onStart();\n });\n },\n onStart: function (element: HTMLElement) {\n WidgetPollLayers.getInstance<WidgetPollLayers, WidgetPollLayersOptions>(element)?.onStart();\n },\n onStop: function (element: HTMLElement) {\n WidgetPollLayers.getInstance<WidgetPollLayers, WidgetPollLayersOptions>(element)?.onStop();\n },\n /**\n * click on poll variant\n * @param element\n * @returns {boolean}\n */\n select: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetPollLayers.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetPollLayers.getInstance<WidgetPollLayers, WidgetPollLayersOptions>(widgetElement);\n if (widget) {\n return widget.selectVariant(element);\n }\n }\n return false;\n },\n };\n}\n","import { determineLocale } from \"@utils\";\n\nexport type FormatterDatetimeOptions = {\n timezone?: string;\n};\n\nclass Formatter {\n private readonly intlSupport: boolean = false;\n\n public defaultTimeFormat: string = \"medium\";\n\n public defaultDatetimeFormat: string = \"medium\";\n\n public defaultDateFormat: string = \"medium\";\n\n private decimalSeparator: string = \".\";\n\n private thousandSeparator: string = \" \";\n\n private spaceSeparator: string = \" \";\n\n public static readonly Second = 1000;\n public static readonly Minute = 60 * Formatter.Second;\n public static readonly Hour = 60 * Formatter.Minute;\n public static readonly Day = 24 * Formatter.Hour;\n\n private datetimeFormatOptions: Record<string, Intl.DateTimeFormatOptions> = {\n short: {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n },\n medium: {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n },\n long: {\n year: \"numeric\",\n month: \"long\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n timeZoneName: \"short\",\n },\n full: {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n timeZoneName: \"long\",\n },\n };\n\n private dateFormatOptions: Record<string, Intl.DateTimeFormatOptions> = {\n short: {\n year: \"2-digit\",\n month: \"2-digit\",\n day: \"2-digit\",\n },\n medium: {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n },\n long: {\n year: \"numeric\",\n month: \"long\",\n day: \"2-digit\",\n },\n full: {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"2-digit\",\n },\n };\n\n private timeFormatOptions: Record<string, Intl.DateTimeFormatOptions> = {\n short: {\n hour: \"2-digit\",\n minute: \"2-digit\",\n },\n medium: {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n },\n long: {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n timeZoneName: \"short\",\n },\n full: {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n timeZoneName: \"long\",\n },\n };\n\n private readonly context;\n\n constructor(context: {\n determineLocale: () => string;\n i18n: { t: (key: string) => string; tc: (key: string, value: string | number) => string } | undefined;\n }) {\n this.intlSupport = typeof Intl === \"object\" && Intl !== null;\n this.context = context;\n }\n\n public asDate(value: any, format: string | undefined = undefined, options: FormatterDatetimeOptions = {}): string {\n if (!format) {\n format = this.defaultDateFormat;\n }\n return this.formatDateTimeValue(value, format, \"date\", options);\n }\n\n public asTime(value: any, format: string | undefined = undefined, options: FormatterDatetimeOptions = {}): string {\n if (!format) {\n format = this.defaultTimeFormat;\n }\n\n return this.formatDateTimeValue(value, format, \"time\", options);\n }\n\n public asDatetime(value: any, format: string | undefined = undefined, options: FormatterDatetimeOptions = {}): string {\n if (!format) {\n format = this.defaultTimeFormat;\n }\n\n return this.formatDateTimeValue(value, format, \"datetime\", options);\n }\n\n private formatDateTimeValue(\n value: any,\n format: string | undefined = undefined,\n type: string | undefined = undefined,\n options: FormatterDatetimeOptions = {}\n ): string {\n const normalizedValue: Date | null = Formatter.normalizeDatetimeValue(value);\n\n if (normalizedValue === null) {\n return \"\";\n }\n if (this.intlSupport) {\n let formatterOptions: Intl.DateTimeFormatOptions = {};\n if (type === \"date\") {\n if (typeof format === \"undefined\") {\n format = this.defaultDateFormat;\n }\n if (typeof format === \"object\") {\n formatterOptions = format;\n } else {\n if (format in this.dateFormatOptions) {\n formatterOptions = this.dateFormatOptions[format];\n } else {\n return this.momentFallback(normalizedValue, format, options);\n }\n }\n } else if (type === \"time\") {\n if (typeof format === \"undefined\") {\n format = this.defaultTimeFormat;\n }\n if (typeof format === \"object\") {\n formatterOptions = format;\n } else {\n if (format in this.timeFormatOptions) {\n formatterOptions = this.timeFormatOptions[format];\n } else {\n return this.momentFallback(normalizedValue, format, options);\n }\n }\n } else if (type === \"datetime\") {\n if (typeof format === \"undefined\") {\n format = this.defaultDatetimeFormat;\n }\n if (typeof format === \"object\") {\n formatterOptions = format;\n } else {\n if (format in this.datetimeFormatOptions) {\n formatterOptions = this.datetimeFormatOptions[format];\n } else {\n return this.momentFallback(normalizedValue, format, options);\n }\n }\n }\n\n if (options.timezone) {\n formatterOptions.timeZone = options.timezone;\n }\n\n const formatted = Intl.DateTimeFormat(this.locale, formatterOptions).format(normalizedValue);\n\n return Intl.DateTimeFormat(this.locale, formatterOptions).format(normalizedValue);\n }\n\n return \"\";\n }\n\n private momentFallback(value: Date, format: string, options: FormatterDatetimeOptions = {}): string {\n return value.toLocaleString(this.locale);\n // return this.context.$moment(value).format(format);\n }\n\n public asInteger(value: any): string {\n if (value === undefined || value === null) {\n return this.nullDisplay;\n }\n\n const normalizedValue = Formatter.normalizeNumericValue(value);\n if (this.intlSupport) {\n return Intl.NumberFormat(this.locale, {\n maximumFractionDigits: 0,\n useGrouping: true,\n }).format(normalizedValue);\n }\n\n return Formatter.numberFormat(normalizedValue, 0, this.decimalSeparator, this.thousandSeparator);\n }\n\n public asDecimal(value: any, decimals: number | undefined = 2): string {\n if (value == null) {\n return this.nullDisplay;\n }\n\n const normalizedValue = Formatter.normalizeNumericValue(value);\n if (this.intlSupport) {\n return Intl.NumberFormat(this.locale, {\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals,\n useGrouping: true,\n }).format(normalizedValue);\n }\n\n return Formatter.numberFormat(normalizedValue, decimals, this.decimalSeparator, this.thousandSeparator);\n }\n\n public asDecimalMax(value: any, decimals: number | undefined = 2): string {\n if (value === undefined || value === null) {\n return this.nullDisplay;\n }\n\n const normalizedValue = Formatter.normalizeNumericValue(value);\n if (this.intlSupport) {\n return Intl.NumberFormat(this.locale, {\n maximumFractionDigits: decimals,\n minimumFractionDigits: 0,\n useGrouping: true,\n }).format(normalizedValue);\n }\n\n return Formatter.numberFormat(normalizedValue, decimals, this.decimalSeparator, this.thousandSeparator);\n }\n\n public asPercent(value: any, decimals: number = 0): string {\n if (value === undefined || value === null) {\n return this.nullDisplay;\n }\n\n const normalizedValue = Formatter.normalizeNumericValue(value);\n if (this.intlSupport) {\n return Intl.NumberFormat(this.locale, {\n style: \"percent\",\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals,\n }).format(normalizedValue);\n }\n\n return Formatter.numberFormat(normalizedValue * 100, decimals, this.decimalSeparator, this.thousandSeparator);\n }\n\n public asPercentMax(value: any, decimals: number = 0): string {\n if (value === undefined || value === null) {\n return this.nullDisplay;\n }\n\n const normalizedValue = Formatter.normalizeNumericValue(value);\n if (this.intlSupport) {\n return Intl.NumberFormat(this.locale, {\n style: \"percent\",\n maximumFractionDigits: decimals,\n minimumFractionDigits: 0,\n }).format(normalizedValue);\n }\n\n return Formatter.numberFormat(normalizedValue * 100, decimals, this.decimalSeparator, this.thousandSeparator);\n }\n\n public asRelativeTime(value: any, referenceTime: any = undefined): string {\n if (value === undefined || value === null) {\n return this.nullDisplay;\n }\n const normalizedValue = Formatter.normalizeDatetimeValue(value);\n if (normalizedValue == null) {\n return this.nullDisplay;\n }\n\n if (referenceTime === undefined || referenceTime === null) {\n referenceTime = new Date();\n } else {\n referenceTime = Formatter.normalizeDatetimeValue(value);\n }\n\n const dt = referenceTime.getTime() - normalizedValue.getTime();\n const absDt = Math.abs(dt);\n const invert = dt < 0;\n if (absDt < Formatter.Second) {\n return this.context.i18n?.t(\"format.relativeTime.justNow\").toString() ?? \"\";\n }\n\n const seconds = absDt / 1000;\n let interval = seconds / 31536000;\n\n if (interval > 1) {\n return this.context.i18n?.tc(\"format.relativeTime.year\" + (invert ? \"In\" : \"Ago\"), Math.floor(interval)).toString() ?? \"\";\n }\n interval = seconds / 2592000;\n if (interval > 1) {\n return this.context.i18n?.tc(\"format.relativeTime.month\" + (invert ? \"In\" : \"Ago\"), Math.floor(interval)).toString() ?? \"\";\n }\n interval = seconds / 86400;\n if (interval > 1) {\n return this.context.i18n?.tc(\"format.relativeTime.day\" + (invert ? \"In\" : \"Ago\"), Math.floor(interval)).toString() ?? \"\";\n }\n interval = seconds / 3600;\n if (interval > 1) {\n return this.context.i18n?.tc(\"format.relativeTime.hour\" + (invert ? \"In\" : \"Ago\"), Math.floor(interval)).toString() ?? \"\";\n }\n interval = seconds / 60;\n if (interval > 1) {\n return this.context.i18n?.tc(\"format.relativeTime.minute\" + (invert ? \"In\" : \"Ago\"), Math.floor(interval)).toString() ?? \"\";\n }\n return this.context.i18n?.tc(\"format.relativeTime.second\" + (invert ? \"In\" : \"Ago\"), Math.floor(seconds)).toString() ?? \"\";\n }\n\n public asDuration(value: any) {\n if (value === undefined || value === null) {\n return \"00:00\";\n }\n const normalizedValue = Formatter.normalizeDatetimeValue(value);\n if (normalizedValue === undefined || normalizedValue === null) {\n return \"00:00\";\n }\n const hours = Math.floor(value / 3600);\n const minutes = Math.floor((value / 60) % 60);\n const seconds = value % 60;\n if (hours > 0) {\n return `${hours}:${minutes < 10 ? 0 : \"\"}${minutes}:${seconds < 10 ? 0 : \"\"}${seconds}`;\n } else {\n return `${minutes < 10 ? 0 : \"\"}${minutes}:${seconds < 10 ? 0 : \"\"}${seconds}`;\n }\n }\n\n public asCurrency(value: any, currency: string | undefined = undefined): string {\n if (value === undefined || value === null) {\n return this.nullDisplay;\n }\n\n if (currency === undefined || currency === null) {\n currency = \"USD\";\n }\n const normalizedValue = Formatter.normalizeNumericValue(value);\n if (normalizedValue == null) {\n return this.nullDisplay;\n }\n\n let decimals = 2;\n if (Number.isInteger(normalizedValue)) {\n decimals = 0;\n }\n\n if (currency === \"RUR\" || currency === \"RUB\") {\n return `${this.asDecimal(normalizedValue, decimals)}${this.spaceSeparator}₽`;\n }\n\n if (this.intlSupport) {\n try {\n return Intl.NumberFormat(this.locale, {\n style: \"currency\",\n currency,\n currencyDisplay: \"symbol\",\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals,\n }).format(normalizedValue);\n } catch (e) {\n console.error(e);\n return String(normalizedValue);\n }\n }\n\n return currency + \" \" + this.asDecimal(normalizedValue, 2);\n }\n\n public asShortSizeCasual(value: any, dp: number = 1) {\n if (value === undefined || value === null) {\n return this.nullDisplay;\n }\n const normalizedValue = Formatter.normalizeNumericValue(value);\n if (normalizedValue === undefined || normalizedValue === null) {\n return this.nullDisplay;\n }\n\n const thresh = 1024;\n if (Math.abs(value) < thresh) {\n return value + \" B\";\n }\n\n const units = [\"kB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n\n let u = -1;\n const r = 10 ** dp;\n\n do {\n value /= thresh;\n ++u;\n } while (Math.round(Math.abs(value) * r) / r >= thresh && u < units.length - 1);\n\n return value.toFixed(dp) + \" \" + units[u];\n }\n\n public asShortSize(value: any, si: boolean = false, dp: number = 1) {\n if (value === undefined || value === null) {\n return this.nullDisplay;\n }\n\n const normalizedValue = Formatter.normalizeNumericValue(value);\n if (normalizedValue === undefined || normalizedValue === null) {\n return this.nullDisplay;\n }\n const thresh = si ? 1000 : 1024;\n\n if (Math.abs(value) < thresh) {\n return value + \" B\";\n }\n\n const units = si ? [\"kB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"] : [\"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\", \"EiB\", \"ZiB\", \"YiB\"];\n let u = -1;\n const r = 10 ** dp;\n\n do {\n value /= thresh;\n ++u;\n } while (Math.round(Math.abs(value) * r) / r >= thresh && u < units.length - 1);\n\n return value.toFixed(dp) + \" \" + units[u];\n }\n\n private static numberFormat(value: number, decimals: number = 0, decimalSeparator: string = \".\", thousandsSeparator: string): string {\n const sign = value < 0 ? \"-\" : \"\";\n\n const sNumber = Math.abs(parseInt((+value || 0).toFixed(decimals))) + \"\";\n const len = sNumber.length;\n const tchunk = len > 3 ? len % 3 : 0;\n\n const chFirst = tchunk ? sNumber.substr(0, tchunk) + thousandsSeparator : \"\";\n const chRest = sNumber.substr(tchunk).replace(/(\\d\\d\\d)(?=\\d)/g, \"$1\" + thousandsSeparator);\n const chLast = decimals ? decimalSeparator + (Math.abs(value) - parseFloat(sNumber)).toFixed(decimals).slice(2) : \"\";\n\n return sign + chFirst + chRest + chLast;\n }\n\n public get nullDisplay(): string {\n return \"\";\n // if (this.context && this.context.i18n) {\n // return this.context.i18n.t(\"notSet\").toString();\n // }\n //\n // return \"not set\";\n }\n\n private static normalizeDatetimeValue(value: any): Date | null {\n const type = typeof value;\n if (type === \"object\" && value instanceof Date) {\n return value;\n } else if (type === \"number\") {\n return new Date(value);\n } else if (type === \"string\") {\n if (isNaN(value)) {\n return new Date(parseInt(value));\n } else {\n const d = Date.parse(value);\n if (isNaN(d)) {\n return null;\n }\n return new Date(d);\n }\n }\n return null;\n }\n\n private static normalizeNumericValue(value: any): number {\n const type = typeof value;\n if ((type === \"object\" && value === null) || type === \"undefined\") {\n return 0;\n } else if (type === \"number\") {\n return value;\n }\n return parseFloat(value);\n }\n\n public get locale(): string {\n return this.context.determineLocale();\n }\n}\n\nexport const formatter = new Formatter({ determineLocale, i18n: undefined });\n","export const enum SwipeGesture {\n undefined,\n Tap,\n SwipeUp,\n SwipeDown,\n SwipeLeft,\n SwipeRight,\n}\n\nexport class SwipeGestureDetector {\n constructor(\n private readonly env: Window,\n private readonly isScreenSupportsTouch: boolean,\n private readonly canContinueHandleDown: (e: MouseEvent | TouchEvent) => boolean,\n private readonly onStart: (e: MouseEvent | TouchEvent) => void,\n private readonly onUpdate: (e: MouseEvent | TouchEvent) => void,\n private readonly onEnd: (e: MouseEvent | TouchEvent, gesture: SwipeGesture) => void\n ) {\n // Store context\n this.handleDown = this.handleDown.bind(this);\n this.handleMove = this.handleMove.bind(this);\n this.handleEnd = this.handleEnd.bind(this);\n\n this.supportsTouch = false;\n\n if (this.isScreenSupportsTouch) {\n this.env.document.addEventListener(\"touchstart\", this.handleDown, false);\n } else {\n this.env.document.addEventListener(\"mousedown\", this.handleDown, false);\n }\n }\n\n startPageCoordinate = [0, 0];\n limit = Math.tan(((45 * 1.5) / 180) * Math.PI);\n pageWidth = window.innerWidth || document.body.clientWidth;\n threshold = Math.max(1, Math.floor(0.01 * this.pageWidth));\n supportsTouch = false;\n\n handleDown(e: MouseEvent | TouchEvent) {\n // console.log(\"handleDown\", {e, startPageCoordinate: this.startPageCoordinate})\n if (!this.canContinueHandleDown(e)) {\n return;\n }\n\n this.startPageCoordinate = this.getPageCoordinate(e);\n\n if (this.isScreenSupportsTouch) {\n this.env.document.addEventListener(\"touchmove\", this.handleMove, false);\n this.env.document.addEventListener(\"touchend\", this.handleEnd, false);\n } else {\n this.env.document.addEventListener(\"mousemove\", this.handleMove, false);\n this.env.document.addEventListener(\"mouseup\", this.handleEnd, false);\n }\n\n this.onStart(e);\n }\n\n handleMove(e: MouseEvent | TouchEvent) {\n // console.log(\"handleMove\", { startPageCoordinate: this.startPageCoordinate})\n // this.currentPageCoordinate = this.getPageCoordinate(e);\n this.onUpdate(e);\n }\n\n handleEnd(e: MouseEvent | TouchEvent) {\n if (this.isScreenSupportsTouch) {\n this.env.document.removeEventListener(\"touchmove\", this.handleMove);\n this.env.document.removeEventListener(\"touchend\", this.handleEnd);\n } else {\n this.env.document.removeEventListener(\"mousemove\", this.handleMove);\n this.env.document.removeEventListener(\"mouseup\", this.handleEnd);\n }\n\n const currentPageCoordinate = this.getPageCoordinate(e);\n\n let gesture = SwipeGesture.undefined;\n const x = currentPageCoordinate[0] - this.startPageCoordinate[0];\n const y = currentPageCoordinate[1] - this.startPageCoordinate[1];\n\n // console.log(\"handleEnd\", {currentPageCoordinate, startPageCoordinate: this.startPageCoordinate})\n\n let xy = Math.abs(x / y);\n let yx = Math.abs(y / x);\n if (Math.abs(x) > this.threshold || Math.abs(y) > this.threshold) {\n if (yx <= this.limit) {\n if (x < 0) {\n gesture = SwipeGesture.SwipeLeft;\n // @ts-ignore\n // _log(JSON.stringify({t: \"SwipeLeft\", yx, x, threshold: this.threshold}), true);\n } else {\n // @ts-ignore\n // _log(JSON.stringify({t: \"SwipeRight\", yx, x, threshold: this.threshold}), true);\n gesture = SwipeGesture.SwipeRight;\n }\n }\n if (xy <= this.limit) {\n if (y < 0) {\n // @ts-ignore\n // _log(JSON.stringify({t: \"SwipeUp\", xy, y, threshold: this.threshold}), true);\n gesture = SwipeGesture.SwipeUp;\n } else {\n // @ts-ignore\n // _log(JSON.stringify({t: \"SwipeDown\", xy, y, threshold: this.threshold}), true);\n gesture = SwipeGesture.SwipeDown;\n }\n }\n } else {\n // @ts-ignore\n // _log(JSON.stringify({t: \"Tap\", x, y, threshold: this.threshold}), true);\n gesture = SwipeGesture.Tap;\n }\n\n this.onEnd(e, gesture);\n }\n\n destroy() {\n if (this.isScreenSupportsTouch) {\n this.env.document.removeEventListener(\"touchstart\", this.handleDown);\n this.env.document.removeEventListener(\"touchmove\", this.handleMove);\n this.env.document.removeEventListener(\"touchend\", this.handleEnd);\n } else {\n this.env.document.removeEventListener(\"mousedown\", this.handleDown);\n this.env.document.removeEventListener(\"mousemove\", this.handleMove);\n this.env.document.removeEventListener(\"mouseup\", this.handleEnd);\n }\n }\n\n private getPageCoordinate(e: MouseEvent | TouchEvent): [number, number] {\n let x = 0;\n let y = 0;\n\n if ((e as MouseEvent)[\"clientX\"] != null && (e as MouseEvent)[\"clientY\"] != null) {\n x = (e as MouseEvent)[\"clientX\"];\n y = (e as MouseEvent)[\"clientY\"];\n } else if (\n (e as TouchEvent).touches &&\n (e as TouchEvent).touches[0] &&\n (e as TouchEvent).touches[0][\"clientX\"] != null &&\n (e as TouchEvent).touches[0][\"clientY\"] != null\n ) {\n x = (e as TouchEvent).touches[0][\"clientX\"];\n y = (e as TouchEvent).touches[0][\"clientY\"];\n } else if (\n (e as TouchEvent).changedTouches &&\n (e as TouchEvent).changedTouches[0] &&\n (e as TouchEvent).changedTouches[0][\"clientX\"] != null &&\n (e as TouchEvent).changedTouches[0][\"clientY\"] != null\n ) {\n x = (e as TouchEvent).changedTouches[0][\"clientX\"];\n y = (e as TouchEvent).changedTouches[0][\"clientY\"];\n }\n // @ts-ignore\n else if (e.currentPoint && e.currentPoint[\"x\"] != null && e.currentPoint[\"y\"] != null) {\n // @ts-ignore\n x = e.currentPoint[\"x\"];\n // @ts-ignore\n y = e.currentPoint[\"y\"];\n }\n\n return [x, y];\n }\n}\n","import { addClass, FilterNumber, getTagData, isObject, isScreenSupportsTouch, removeClass } from \"@utils\";\nimport { formatter } from \"../../formatter\";\nimport { SwipeGesture, SwipeGestureDetector } from \"../../SwipeGestureDetector\";\nimport { WidgetBase } from \"../base\";\nimport { WidgetProductsOptions } from \"./products.h\";\n\ntype OfferModel = {\n id: number;\n offerId: string;\n name?: string;\n description?: string;\n price?: string;\n oldPrice?: string;\n currency?: string;\n availability: number; // * 0 - OUT_OF_STOCK * 1 - IN_STOCK * 2 - PREORDER * 3 - BACKORDER\n adult?: boolean;\n coverUrl?: string;\n url?: string;\n};\n\nexport type ProductsWidgetOptions = {\n productsList: ProductsListOptions;\n productsCard: ProductsCardOptions;\n loader: {\n default: {\n color: string;\n accentColor: string;\n };\n custom?: string;\n };\n};\n\nexport type ProductsCardOptions = {\n mainTextColor: string;\n oldPriceTextColor: string;\n imageBackgroundColor: string;\n imageCornerRadius: number;\n titleFont?: string;\n subtitleFont?: string;\n priceFont?: string;\n oldPriceFont?: string;\n};\n\nexport type ProductsListOptions = {\n closeBackgroundColor: string;\n closeImage?: string;\n substrateHeight: number;\n substrateColor: string;\n dimColor: string;\n};\n\nconst ProductsWidgetOptionsDefault: ProductsWidgetOptions = {\n productsList: {\n closeBackgroundColor: \"#000000\",\n substrateHeight: 200,\n substrateColor: \"#FFFFFF\",\n dimColor: \"rgba(0, 0, 0, 0.5)\",\n },\n productsCard: {\n mainTextColor: \"#000000\",\n oldPriceTextColor: \"#CCCCCC\",\n imageBackgroundColor: \"transparent\",\n imageCornerRadius: 8,\n },\n loader: {\n default: {\n color: \"gray\",\n accentColor: \"transparent\",\n },\n },\n};\n\n/**\n * adult: null\n * availability: 1\n * coverUrl: \"https://cdn.test.inappstory.com/np/file/cf/wb/wc/vcaji5clqon3nkwdwle3cjz63x.jpg?k=KgAAAAAAAAACAQ\"\n * currency: \"RUR\"\n * description: \"Непромокаемый комбинезон - дождевик детский Муссон\"\n * id: 204\n * name: \"Непромокаемый комбинезон - дождевик детский \\\"Муссон\\\"\"\n * offerId: \"10125\"\n * oldPrice: null\n * price: \"2690.0000\"\n * url: \"http://www.songnomik.ru/products/detskaya-odezhda-optom-dlya-novorozhdennyh/detskie-kombinezony-optom/2166483.html\"\n */\n\nexport class WidgetProducts extends WidgetBase<WidgetProductsOptions> {\n static DEFAULTS: WidgetProductsOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-products\";\n\n private themeName: string | null;\n private baseThemeName: string | null;\n\n private readonly captionView: HTMLElement | null;\n private readonly linkTarget: Array<number> = [];\n private readonly msgNetworkError: string | undefined;\n private readonly msgServiceError: string | undefined;\n\n private swipeGestureDetector: SwipeGestureDetector | null = null;\n private isClickCapturedByWidget: boolean = false;\n private readonly isScreenSupportsTouch: boolean = false;\n\n constructor(element: HTMLElement, options: Partial<WidgetProductsOptions>) {\n super(element, options);\n\n this.captionView = this.element.querySelector(\".narrative-element-text-lines\");\n\n const linkTarget = decodeURIComponent(getTagData(element, \"linkTarget\") ?? \"[]\");\n try {\n let parsed = JSON.parse(linkTarget);\n if (Array.isArray(parsed)) {\n this.linkTarget = parsed.filter(FilterNumber);\n }\n } catch (e) {\n console.error(e);\n }\n\n const themeClasses = Array.from(this.element.classList).filter(item => item.startsWith(\"theme-\") || item.startsWith(\"base-theme-\"));\n themeClasses.forEach(item => {\n if (item.startsWith(\"theme-\") && this.themeName == null) {\n this.themeName = item;\n }\n if (item.startsWith(\"base-theme-\") && this.baseThemeName == null) {\n this.baseThemeName = item;\n }\n });\n\n this.isScreenSupportsTouch = isScreenSupportsTouch(this.env);\n\n this.msgNetworkError = getTagData(this.element, \"msgNetworkError\");\n this.msgServiceError = getTagData(this.element, \"msgServiceError\");\n }\n\n /**\n * Start or restart widget\n * @param localData\n */\n public onRefreshUserData(localData: Record<string, any>) {\n super.onRefreshUserData(localData);\n }\n\n public onStart(): void {\n super.onStart();\n\n // reinit for case when we returned to slide from other slide and onStop destroyed SwipeGestureDetector\n this.initSwipeGestureDetector();\n }\n\n private isTransparentElement(): boolean {\n if (this.element) {\n try {\n const color = window.getComputedStyle(this.element).color;\n if (color === \"transparent\" || color === \"rgba(0, 0, 0, 0)\" || color === \"rgba(0,0,0,0)\") {\n return true;\n }\n } catch (err) {\n console.error(err);\n }\n }\n return false;\n }\n\n private _statEventWidgetClick(): void {\n try {\n const captionViewText = this.captionView?.textContent ?? \"\";\n this.sendStatisticEventToApp(\n \"w-products-click\",\n {\n ...this.statisticEventBaseFieldsShortForm,\n wi: this.elementId,\n wl: captionViewText,\n wv: JSON.stringify(this.linkTarget),\n },\n {\n ...this.statisticEventBaseFieldsShortForm,\n widget_id: this.elementId,\n widget_label: captionViewText,\n widget_value: this.linkTarget,\n },\n {\n forceEnableStatisticV2: true,\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n private _statEventWidgetOpen(offers: Array<OfferModel>): void {\n try {\n const captionViewText = this.captionView?.textContent ?? \"\";\n this.sendStatisticEventToApp(\n \"w-products-open\",\n {\n ...this.statisticEventBaseFieldsShortForm,\n wi: this.elementId,\n wl: captionViewText,\n wv: JSON.stringify(this.linkTarget),\n wit: JSON.stringify(offers.map(item => item.offerId)),\n },\n {\n ...this.statisticEventBaseFieldsShortForm,\n widget_id: this.elementId,\n widget_label: captionViewText,\n widget_value: this.linkTarget,\n widget_items: offers.map(item => item.offerId),\n },\n {\n forceEnableStatisticV2: true,\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n private _statEventWidgetCardClick(offer: OfferModel): void {\n try {\n const captionViewText = this.captionView?.textContent ?? \"\";\n this.sendStatisticEventToApp(\n \"w-products-card-click\",\n {\n ...this.statisticEventBaseFieldsShortForm,\n wi: this.elementId,\n wl: captionViewText,\n wv: offer.offerId,\n wvi: offer.id,\n },\n {\n ...this.statisticEventBaseFieldsShortForm,\n widget_id: this.elementId,\n widget_label: captionViewText,\n widget_value: offer.offerId,\n widget_value_id: offer.id,\n },\n {\n forceEnableStatisticV2: true,\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n public async fetchProducts(): Promise<{ message: string; models: Array<OfferModel> }> {\n const fetchAndCacheMedia = async (): Promise<{ message: string; models: Array<OfferModel> }> => {\n if (!this.linkTarget.length) {\n return { message: this.msgServiceError ?? \"\", models: [] };\n }\n\n const path = `product/offer?id=${this.linkTarget.join(\",\")}`;\n const headers = {\n accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n };\n const profileKey = \"fetch-products\";\n\n try {\n const response = await this.sdkApi.sendApiRequest<Array<OfferModel>>(path, \"GET\", null, headers, null, profileKey);\n // console.log({response});\n const status = response.status;\n\n if (status === 200 || status === 201) {\n if (response.data && Array.isArray(response.data) && response.data.length > 0) {\n try {\n await this.cacheOffersMediaResources(response.data);\n } catch (error) {\n console.error(error);\n }\n return { message: \"\", models: response.data };\n } else {\n return { message: this.msgServiceError ?? \"\", models: [] };\n }\n } else if (status === 12163 || status === 12002) {\n return { message: this.msgNetworkError ?? \"\", models: [] };\n } else {\n return { message: this.msgServiceError ?? \"\", models: [] };\n }\n } catch (error) {\n console.error(error);\n return { message: this.msgServiceError ?? \"\", models: [] };\n }\n };\n\n return Promise.all([\n fetchAndCacheMedia(),\n new Promise<void>(t => {\n return setTimeout(t, 200);\n }),\n ]).then(([result]) => result);\n }\n\n private cacheOffersMediaResources(offers: Array<OfferModel>): Promise<Array<void>> {\n const cacheItem = (offer: OfferModel) => {\n return new Promise<void>(resolve => {\n if (offer.coverUrl != null) {\n this.env\n .fetch(offer.coverUrl)\n .then(response => {\n if (response != null && response.ok) {\n response\n .blob()\n .then(blob => {\n offer.coverUrl = URL.createObjectURL(blob);\n resolve();\n })\n .catch(resolve);\n } else {\n resolve();\n }\n })\n .catch(resolve);\n } else {\n resolve();\n }\n });\n };\n\n const promises = offers.map(cacheItem);\n return Promise.all(promises);\n }\n\n private revokeOffersMediaResources(offers: Array<OfferModel>): void {\n offers.forEach(offer => {\n if (offer.coverUrl != null) {\n // todo check if coverUrl really is object URL\n URL.revokeObjectURL(offer.coverUrl);\n }\n });\n }\n\n private initSwipeGestureDetector(): void {\n if (this.isOpen) {\n if (this.swipeGestureDetector == null) {\n this.swipeGestureDetector = new SwipeGestureDetector(\n this.env,\n this.isScreenSupportsTouch,\n // detect gestures started on backdrop view\n (e: MouseEvent | TouchEvent) =>\n e.target instanceof HTMLElement ? e.target.classList.contains(\"ias-products-container-backdrop-view\") : true,\n e => {\n // this.isClickCapturedByWidget = true;\n return;\n },\n e => {\n return;\n },\n (e, gesture: SwipeGesture) => {\n if (gesture === SwipeGesture.SwipeDown) {\n this.closeProductsView();\n }\n // this.env.requestAnimationFrame(() => {\n // this.isClickCapturedByWidget = false;\n // });\n }\n );\n }\n }\n }\n\n private productsView: HTMLElement | null = null;\n private isOpen = false;\n\n public get isForcePaused(): boolean {\n return this.isOpen;\n }\n\n private currentModels: Array<OfferModel> = [];\n\n public async openProductsView() {\n if (this.isOpen) {\n return;\n }\n this._statEventWidgetClick();\n\n if (!this.disableTimer) {\n this.sdkApi.pauseUI();\n }\n\n if (!this.isTransparentElement()) {\n this.element.classList.add(\"loader\");\n }\n\n // const start = window.performance.now();\n\n const result = await this.fetchProducts();\n // @ts-ignore\n // _log(`fetched for ${window.performance.now() - start}ms`, true);\n\n // console.log({result})\n\n if (result.models.length > 0) {\n this.currentModels = result.models;\n this.productsView = this.createProductsView(this.currentModels, this.closeProductsView.bind(this));\n this.productsView.classList.add(\"ias-products-container-view--visible\");\n this.slide.appendChild(this.productsView);\n this.element.classList.add(\"hidden\");\n this.isOpen = true;\n // prevent next slide navigation gesture\n this.isClickCapturedByWidget = true;\n this.sdkApi.disableVerticalSwipeGesture();\n this.sdkApi.disableBackpress();\n this._statEventWidgetOpen(this.currentModels);\n this.initSwipeGestureDetector();\n } else {\n if (result.message) {\n this.sdkApi.showToast(result.message);\n }\n }\n\n this.element.classList.remove(\"loader\");\n }\n\n public closeProductsView(): void {\n if (!this.isOpen) {\n return;\n }\n\n this.productsView?.classList.add(\"ias-products-container-view--hidden\");\n this.element.classList.remove(\"hidden\");\n this.isClickCapturedByWidget = false;\n if (this.swipeGestureDetector != null) {\n this.swipeGestureDetector.destroy();\n this.swipeGestureDetector = null;\n }\n\n this.sdkApi.enableVerticalSwipeGesture();\n this.sdkApi.enableBackpress();\n const onClosed = () => {\n this.productsView?.removeEventListener(\"animationend\", onClosed);\n this.productsView?.parentElement?.removeChild(this.productsView);\n\n this.revokeOffersMediaResources(this.currentModels);\n\n if (!this.disableTimer) {\n this.sdkApi.resumeUI();\n }\n\n this.isOpen = false;\n this.currentModels = [];\n };\n this.productsView?.addEventListener(\"animationend\", onClosed);\n }\n\n private createCardView(offer: OfferModel) {\n const figure = document.createElement(\"div\");\n figure.classList.add(\"ias-products-card-figure\");\n if (offer.coverUrl) {\n const image = document.createElement(\"img\");\n image.classList.add(\"ias-products-card-figure-image\");\n image.alt = offer.name ?? \"\";\n image.src = offer.coverUrl;\n\n figure.appendChild(image);\n }\n const imageMask = document.createElement(\"div\");\n imageMask.classList.add(\"ias-products-card-figure-image-mask\");\n figure.appendChild(imageMask);\n\n // const subTitle = document.createElement(\"div\");\n // subTitle.classList.add(\"ias-products-card-subtitle\");\n // subTitle.innerText = offer.description ?? \"\";\n\n const title = document.createElement(\"div\");\n title.classList.add(\"ias-products-card-title\");\n title.innerText = offer.name ?? \"\";\n\n let price: HTMLElement | null = null;\n if (offer.price && offer.currency) {\n price = document.createElement(\"div\");\n price.classList.add(\"ias-products-card-price\");\n price.innerHTML = formatter.asCurrency(offer.price, offer.currency);\n }\n\n let oldPrice: HTMLElement | null = null;\n if (offer.oldPrice && offer.currency) {\n oldPrice = document.createElement(\"div\");\n oldPrice.classList.add(\"ias-products-card-old-price\");\n oldPrice.innerHTML = formatter.asCurrency(offer.oldPrice, offer.currency);\n }\n\n const prices = document.createElement(\"div\");\n prices.classList.add(\"ias-products-card-prices\");\n if (price) {\n prices.appendChild(price);\n }\n if (oldPrice) {\n prices.appendChild(oldPrice);\n }\n\n const card = document.createElement(\"div\");\n card.classList.add(\"ias-products-card\");\n card.onclick = e => {\n // prevent click in SDK (slide/story navigation)\n e.stopPropagation();\n e.preventDefault();\n this._statEventWidgetCardClick(offer);\n if (offer.url) {\n this.sdkApi.openUrl({ type: \"link\", link: { type: \"url\", target: offer.url } });\n }\n };\n\n card.appendChild(figure);\n // card.appendChild(subTitle);\n card.appendChild(prices);\n card.appendChild(title);\n\n return card;\n }\n\n private createScrollView(offers: Array<OfferModel>) {\n const scrollViewGroup = document.createElement(\"div\");\n scrollViewGroup.classList.add(\"ias-products-scroll-view-group\");\n\n const scrollView = document.createElement(\"div\");\n scrollView.classList.add(\"ias-products-scroll-view\");\n offers.forEach(offer => scrollView.appendChild(this.createCardView(offer)));\n scrollViewGroup.appendChild(scrollView);\n\n if (!this.isScreenSupportsTouch) {\n const { scrollLeft, scrollRight, mountScrollControls } = this.createScrollControls(scrollView);\n\n const scrollControlsView = document.createElement(\"div\");\n scrollControlsView.classList.add(\"ias-products-scroll-controls-view\");\n\n const scrollControlStartView = document.createElement(\"div\");\n scrollControlStartView.classList.add(\"ias-products-scroll-control-start-view\");\n const scrollControlStartIconView = document.createElement(\"div\");\n scrollControlStartIconView.classList.add(\"ias-products-scroll-control-start-icon-view\");\n scrollControlStartView.appendChild(scrollControlStartIconView);\n scrollControlsView.appendChild(scrollControlStartView);\n scrollControlStartView.onclick = e => {\n e.preventDefault();\n e.stopPropagation();\n if (this.layoutDirection === \"ltr\") {\n scrollLeft();\n } else {\n scrollRight();\n }\n };\n\n const scrollControlEndView = document.createElement(\"div\");\n scrollControlEndView.classList.add(\"ias-products-scroll-control-end-view\");\n const scrollControlEndIconView = document.createElement(\"div\");\n scrollControlEndIconView.classList.add(\"ias-products-scroll-control-end-icon-view\");\n scrollControlEndView.appendChild(scrollControlEndIconView);\n scrollControlsView.appendChild(scrollControlEndView);\n scrollControlEndView.onclick = e => {\n e.preventDefault();\n e.stopPropagation();\n if (this.layoutDirection === \"ltr\") {\n scrollRight();\n } else {\n scrollLeft();\n }\n };\n mountScrollControls(() => scrollViewGroup.appendChild(scrollControlsView));\n }\n return scrollViewGroup;\n }\n\n private createProductsView(offers: Array<OfferModel>, onClose: () => void) {\n const containerView = document.createElement(\"div\");\n containerView.classList.add(\"ias-products-container-view\");\n if (this.baseThemeName) {\n containerView.classList.add(this.baseThemeName);\n }\n if (this.themeName) {\n containerView.classList.add(this.themeName);\n }\n containerView.dir = this.layoutDirection;\n\n const backdropView = document.createElement(\"div\");\n backdropView.classList.add(\"ias-products-container-backdrop-view\");\n backdropView.onclick = e => {\n e.preventDefault();\n e.stopPropagation();\n onClose();\n };\n\n const backgroundView = document.createElement(\"div\");\n backgroundView.classList.add(\"ias-products-container-background-view\");\n\n const scrollView = this.createScrollView(offers);\n\n const closeButton = document.createElement(\"div\");\n closeButton.classList.add(\"ias-products-container-close-button\");\n // fill=${ProductsWidgetOptionsDefault.productsList.closeBackgroundColor}\n closeButton.innerHTML = `<svg width=\"32\" height=\"12.5\" viewBox=\"0 0 64 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M56.293 1.23375C58.054 -0.41125 60.846 -0.41125 62.607 1.23375C64.464 2.96775 64.464 5.85675 62.607 7.59075L35.157 23.2288C33.396 24.8738 30.604 24.8738 28.843 23.2288L1.393 7.59075C0.494002 6.75175 0 5.62775 0 4.41275C0 3.19775 0.494002 2.07375 1.393 1.23475C3.154 -0.410251 5.946 -0.410251 7.707 1.23475L32 13.9237L56.293 1.23375Z\" fill=\"currentColor\" /></svg>`;\n closeButton.onclick = e => {\n e.preventDefault();\n e.stopPropagation();\n onClose();\n };\n\n const divider = document.createElement(\"div\");\n\n backgroundView.appendChild(scrollView);\n backgroundView.appendChild(closeButton);\n backgroundView.appendChild(divider);\n\n containerView.appendChild(backdropView);\n containerView.appendChild(backgroundView);\n\n return containerView;\n }\n\n private scrollViewRef: HTMLElement | null = null;\n\n private getScrollLeft(): number {\n if (this.scrollViewRef != null) {\n return this.scrollViewRef.scrollLeft;\n }\n return 0;\n }\n\n private getScrollViewportWidth(): number {\n if (this.scrollViewRef != null) {\n return this.scrollViewRef.clientWidth;\n }\n return 0;\n }\n\n private setScrollLeft(value: number) {\n if (this.scrollViewRef != null) {\n this.scrollViewRef.scrollLeft = Math.round(value);\n }\n }\n\n private createScrollControls(scrollViewRef: HTMLElement): {\n scrollLeft: () => void;\n scrollRight: () => void;\n mountScrollControls: (cb: () => void) => void;\n } {\n this.scrollViewRef = scrollViewRef;\n return {\n scrollLeft: () => this.setScrollLeft(this.getScrollLeft() - this.getScrollViewportWidth()),\n scrollRight: () => this.setScrollLeft(this.getScrollLeft() + this.getScrollViewportWidth()),\n mountScrollControls: (cb: () => void) => this.env.requestAnimationFrame(() => scrollViewRef.scrollWidth > scrollViewRef.clientWidth && cb()),\n };\n }\n\n public getIsClickCapturedByWidget(): boolean {\n return this.isClickCapturedByWidget;\n }\n\n private destroy(): void {\n if (this.swipeGestureDetector != null) {\n this.swipeGestureDetector.destroy();\n this.swipeGestureDetector = null;\n }\n }\n\n public onStop(): void {\n super.onStop();\n\n this.destroy();\n }\n\n public static api = {\n widgetClassName: WidgetProducts.widgetClassName,\n onRefreshUserData: WidgetProducts.onRefreshUserData,\n init: function (element: HTMLElement, localData?: Record<string, any>): void {\n WidgetProducts.initWidget(element, localData, (element, options) => new WidgetProducts(element, options));\n },\n onStart: function (element: HTMLElement) {\n WidgetProducts.getInstance<WidgetProducts, WidgetProductsOptions>(element)?.onStart();\n },\n onStop: function (element: HTMLElement) {\n WidgetProducts.getInstance<WidgetProducts, WidgetProductsOptions>(element)?.onStop();\n },\n click: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetProducts.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetProducts.getInstance<WidgetProducts, WidgetProductsOptions>(widgetElement);\n if (widget) {\n widget.openProductsView();\n }\n }\n return false;\n },\n isClickCapturedByWidget: function (element: HTMLElement) {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetProducts.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetProducts.getInstance<WidgetProducts, WidgetProductsOptions>(widgetElement);\n if (widget) {\n return widget.getIsClickCapturedByWidget();\n }\n }\n return false;\n },\n isForcePaused: function (element: HTMLElement) {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetProducts.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetProducts.getInstance<WidgetProducts, WidgetProductsOptions>(widgetElement);\n if (widget) {\n return widget.isForcePaused;\n }\n }\n return false;\n },\n onHandleBackpress: function (element: HTMLElement) {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetProducts.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetProducts.getInstance<WidgetProducts, WidgetProductsOptions>(widgetElement);\n if (widget) {\n widget.closeProductsView();\n }\n }\n return false;\n },\n };\n}\n","import { extend, getTagData, getTagDataAsNumber, getValueOrDefault, getValueOrException, hasClass, slice } from \"@utils\";\nimport { WidgetBase } from \"../base\";\nimport { WidgetQuestOptions } from \"./quest.h\";\n\nexport class WidgetQuest extends WidgetBase<WidgetQuestOptions> {\n static DEFAULTS: WidgetQuestOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-quest\";\n\n private selectedAnswer: number | undefined;\n protected label: HTMLElement | null;\n protected variants: Array<HTMLElement>;\n private readonly isWidget: boolean;\n private readonly slideCount: number;\n private readonly nonFinalSlide?: boolean;\n private readonly navigationNextSlide?: number;\n private readonly slideDisabledNavigation: boolean;\n private readonly finalSlide: boolean;\n\n constructor(element: HTMLElement, options: Partial<WidgetQuestOptions>) {\n const isWidget = !hasClass(element, \"narrative-slide\");\n const elementIdGetter = (element: HTMLElement) => getValueOrDefault(getTagData(element, \"elementId\"), \"\");\n const slideGetter = (element: HTMLElement) =>\n isWidget ? getValueOrException(element.closest<HTMLElement>(\".narrative-slide\"), \"Empty slide\") : element;\n\n super(element, options, elementIdGetter, slideGetter);\n\n this.isWidget = isWidget;\n this.slideCount = getTagDataAsNumber(this.slide, \"slideCount\") ?? 0;\n const nonFinalSlide = getTagDataAsNumber(this.slide, \"nonFinalSlide\");\n if (nonFinalSlide != null) {\n this.nonFinalSlide = Boolean(nonFinalSlide);\n }\n this.finalSlide = !this.isWidget && !this.nonFinalSlide;\n this.navigationNextSlide = getTagDataAsNumber(this.slide, \"navigationNextSlide\");\n this.label = this.element.querySelector(\".label-view .label\");\n this.variants = slice.call(this.element.querySelectorAll(\".variants-box .variant-view\"));\n this.slideDisabledNavigation = Boolean(getTagDataAsNumber(this.slide, \"disableNavigation\") ?? 0);\n\n this.selectedAnswer = undefined;\n }\n\n /**\n * Start or restart widget\n * @param localData\n */\n public onRefreshUserData(localData: Record<string, any>) {\n super.onRefreshUserData(localData);\n }\n\n private setCardSessionValue(name: string, value: string): void {\n this.sdkApi.setCardSessionValue(this.element, name, value);\n }\n\n private getCardSessionValue(name: string): string | undefined {\n return this.sdkApi.getCardSessionValue(this.element, name);\n }\n\n private init(): boolean {\n if (this.localData) {\n if (this.localData[\"_qt_g_\" + this.elementId + \"_sa\"] !== undefined) {\n // this._selectAnswer(this.localData['_t_g_' + this.elementId + '_sa']);\n // setLocalData(this.localData, false);\n }\n\n if (this.localData[\"_qt_g_\" + this.elementId + \"fo_at\"] === undefined) {\n this.localData[\"_qt_g_\" + this.elementId + \"fo_at\"] = Math.round(new Date().getTime() / 1000);\n this.setLocalData(this.localData, false);\n }\n\n let lastSlideIdx = this.localData[\"_qt_last_slide_idx\"];\n if (lastSlideIdx !== undefined) {\n lastSlideIdx = parseInt(lastSlideIdx);\n if (\n lastSlideIdx >= 0 &&\n lastSlideIdx < this.slideCount &&\n lastSlideIdx !== this.slideIndex /*&& this.slideIndex === this.firstSlideWithQuestIndex()*/\n ) {\n if (this.getCardSessionValue(\"__storyQuestSlideChanged\") === undefined) {\n // global flag - был сделан переход на нужный слайд, больше не нужно повторять за эту сессию\n // perform showStorySlide with lastSlideIdx only on story open first time (not on second slide, etc)\n this.setCardSessionValue(\"__storyQuestSlideChanged\", \"1\");\n\n if (this.sdkApi.isExistsShowCardSlide) {\n this.sdkApi.showCardSlide(lastSlideIdx);\n return false;\n }\n }\n }\n }\n\n // only for widget v1\n if (this.nonFinalSlide != null) {\n // если этого слайда нет в роутинге (сработал переход по таймеру в app)\n const routes = this._getRoutes();\n if (routes[0].indexOf(this.slideIndex) === -1 && this.finalSlide) {\n if (this.sdkApi.isExistsShowNextCard) {\n this.sdkApi.cardShowNext();\n return false;\n }\n }\n }\n\n // сбор роутинга - все же в selectAnswer\n // + pointer - set in select answer and in simple history back naviation\n\n // Общее поле в сторис - latest slide with viewed quest item\n // только если находимся в диапазоне квеста\n this.localData[\"_qt_last_slide_idx\"] = this.slideIndex;\n // global flag - был сделан переход на нужный слайд, больше не нужно повторять за эту сессию\n this.setCardSessionValue(\"__storyQuestSlideChanged\", \"1\");\n\n // если перешли на слайд (через кнопку - на слайд например) то не будет истории в роутере\n // добавляем сами\n if (this.getLastSlideIndexFromRouteHistory() !== this.slideIndex) {\n this._addNewRouteHistory(this.slideIndex);\n }\n\n this.setLocalData(this.localData, true);\n }\n\n this.firstOpenTime = new Date().getTime();\n\n return true;\n }\n\n private _selectAnswer(index: number, slideIndex: number): void {\n // if (this.answers[index]) {\n // this.answers[index].classList.add('selected');\n // }\n\n this.selectedAnswer = index;\n\n if (this.localData[\"_qt_g_\" + this.elementId + \"_sa\"] === undefined || !Array.isArray(this.localData[\"_qt_g_\" + this.elementId + \"_sa\"])) {\n this.localData[\"_qt_g_\" + this.elementId + \"_sa\"] = [];\n }\n this.localData[\"_qt_g_\" + this.elementId + \"_sa\"].push([index, slideIndex, Math.round(new Date().getTime() / 1000)]);\n // ответ на вопрос\n this.localData[\"_&ts_qt_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n\n this.element.classList.add(\"done\");\n\n this._addNewRouteHistory(slideIndex);\n }\n\n public selectAnswer(answer: HTMLElement): boolean {\n // if (this.selectedAnswer !== undefined) {\n // return true;\n // }\n\n const index = this.variants.indexOf(answer);\n if (index !== -1) {\n const slideIndex = getValueOrDefault(getTagDataAsNumber(this.variants[index], \"score\"), 0) - 1;\n\n this._selectAnswer(index, slideIndex);\n this.setLocalData(this.localData, true);\n\n this.env.setTimeout(() => {\n if (slideIndex >= 0 && slideIndex < this.slideCount && this.sdkApi.isExistsShowCardSlide) {\n // global flag - был сделан переход на нужный слайд, больше не нужно повторять за эту сессию\n this.setCardSessionValue(\"__storyQuestSlideChanged\", \"1\");\n this.sdkApi.showCardSlide(slideIndex);\n }\n }, 100);\n }\n\n return true;\n }\n\n public isDone(): boolean {\n return this.localData[\"_qt_done_at\"] !== undefined && this.selectedAnswer !== undefined;\n }\n\n public slideQuestIsDone(): boolean {\n return this.localData[\"_qt_g_\" + this.elementId + \"_sa\"] !== undefined && this.selectedAnswer !== undefined;\n }\n\n private firstSlideWithQuestIndex(): number {\n return getTagDataAsNumber(this.slide, \"firstSlideWithQuest\") ?? 0;\n }\n\n private lastSlideWithQuestIndex(): number {\n return getTagDataAsNumber(this.slide, \"lastSlideWithQuest\") ?? 0;\n }\n\n private _getRoutes() {\n let routes = this.localData[\"_qt_routes\"];\n if (!Array.isArray(routes)) {\n routes = [[0], 0];\n }\n return routes;\n }\n\n private _addNewRouteHistory(route: number): void {\n const routes = this._getRoutes();\n const _routes = routes[0].slice(0, routes[1] + 1);\n routes[0] = _routes.concat([route]);\n routes[1] = routes[0].length - 1;\n this.localData[\"_qt_routes\"] = routes;\n }\n\n private _routeMvPtrBack() {\n const routes = this._getRoutes();\n const newPtr = routes[1] - 1;\n if (newPtr >= 0 && routes[0][newPtr] !== undefined) {\n routes[1] = newPtr;\n this.localData[\"_qt_routes\"] = routes;\n this.setLocalData(this.localData, true);\n return routes[0][newPtr];\n }\n return false;\n }\n\n private getLastSlideIndexFromRouteHistory() {\n const routes = this._getRoutes();\n return routes[0][routes[1]];\n }\n\n // переделать в handleRouteTrigger\n // не завязываться на click, сделать через коллбэк - default action\n private handleRouteClick(event: { direction: \"backward\" | \"forward\"; slideIndex: number; slideCount: number }): {\n continueDefaultNavigation: boolean;\n } {\n const result = { continueDefaultNavigation: false };\n let moveTo;\n // event: direction ('backward', 'forward') slideIndex, slideCount\n const directionForward = event.direction === \"forward\";\n const directionBackward = event.direction === \"backward\";\n\n if (this.isWidget) {\n // like in web-sdk - simple block tap navigation at all\n if (this.slideDisabledNavigation) {\n return result;\n }\n if (directionForward) {\n return result;\n } else {\n if (event.slideIndex === 0) {\n // can click back\n result.continueDefaultNavigation = true;\n return result;\n } else {\n // by routing - move back\n moveTo = this._routeMvPtrBack();\n if (moveTo !== false && moveTo >= 0 && moveTo < event.slideCount && this.sdkApi.isExistsShowCardSlide) {\n this.sdkApi.showCardSlide(moveTo);\n }\n if (moveTo === false && this.sdkApi.isExistsShowCardSlide) {\n // allow move to start - for broken route history\n this.sdkApi.showCardSlide(0);\n }\n }\n return result;\n }\n } else {\n // like in web-sdk - simple block tap navigation at all\n if (this.slideDisabledNavigation) {\n return result;\n }\n\n if (this.nonFinalSlide == null) {\n // widget v2 (with navigationNextSlide)\n\n if (directionForward) {\n const nextSlideIndex = this.navigationNextSlide ?? event.slideIndex + 1;\n if (nextSlideIndex < this.slideCount) {\n this._addNewRouteHistory(nextSlideIndex);\n this.setLocalData(this.localData, true);\n this.sdkApi.showCardSlide(nextSlideIndex);\n } else {\n if (this.sdkApi.isExistsShowNextCard) {\n this.sdkApi.cardShowNext();\n }\n }\n } else {\n if (event.slideIndex === 0) {\n // move to prev slide\n result.continueDefaultNavigation = true;\n return result;\n } else {\n // by routing - move back\n moveTo = this._routeMvPtrBack();\n if (moveTo !== false && moveTo >= 0 && moveTo < event.slideCount && this.sdkApi.isExistsShowCardSlide) {\n this.sdkApi.showCardSlide(moveTo);\n }\n if (moveTo === false && this.sdkApi.isExistsShowCardSlide) {\n // allow move to start - for broken route history\n this.sdkApi.showCardSlide(0);\n }\n }\n }\n } else {\n // widget v1 (with nonFinalSlide)\n\n // slides without a quest form\n // simple slide case\n if (this.nonFinalSlide || event.slideIndex < this.firstSlideWithQuestIndex()) {\n if (directionForward) {\n const nextSlideIndex = event.slideIndex + 1;\n if (nextSlideIndex < this.slideCount) {\n this._addNewRouteHistory(nextSlideIndex);\n this.setLocalData(this.localData, true);\n this.sdkApi.showCardSlide(nextSlideIndex);\n } else {\n if (this.sdkApi.isExistsShowNextCard) {\n this.sdkApi.cardShowNext();\n }\n }\n } else {\n if (event.slideIndex === 0) {\n // move to prev slide\n result.continueDefaultNavigation = true;\n return result;\n } else {\n // by routing - move back\n moveTo = this._routeMvPtrBack();\n if (moveTo !== false && moveTo >= 0 && moveTo < event.slideCount && this.sdkApi.isExistsShowCardSlide) {\n this.sdkApi.showCardSlide(moveTo);\n }\n if (moveTo === false && this.sdkApi.isExistsShowCardSlide) {\n // allow move to start - for broken route history\n this.sdkApi.showCardSlide(0);\n }\n }\n }\n } else {\n // quest final slide\n if (directionForward) {\n // если клик вперед по финальному слайду из любой ветки - то выходим из сторис\n // var nextSlideIndex = this.lastSlideWithQuestIndex() + 1;\n // if (nextSlideIndex < this.slideCount) {\n // this._addNewRouteHistory(nextSlideIndex);\n // setLocalData(this.localData, true);\n // window._showNarrativeSlide(nextSlideIndex);\n // } else {\n\n if (this.sdkApi.isExistsShowNextCard) {\n this.sdkApi.cardShowNext();\n }\n // }\n } else {\n // by routing - move back\n moveTo = this._routeMvPtrBack();\n if (moveTo !== false && moveTo >= 0 && moveTo < event.slideCount && this.sdkApi.isExistsShowCardSlide) {\n this.sdkApi.showCardSlide(moveTo);\n }\n if (moveTo === false && this.sdkApi.isExistsShowCardSlide) {\n // allow move to start - for broken route history\n this.sdkApi.showCardSlide(0);\n }\n }\n }\n }\n }\n return result;\n }\n\n public static api = {\n widgetClassName: WidgetQuest.widgetClassName,\n /** @deprecated */\n refreshUserData: WidgetQuest.refreshUserData,\n onRefreshUserData: WidgetQuest.onRefreshUserData,\n init: function (element: HTMLElement, localData?: Record<string, any>): Promise<boolean> {\n return new Promise(function (resolve, reject) {\n WidgetQuest.initWidget<WidgetQuest, WidgetQuestOptions>(element, localData, (element, options) => new WidgetQuest(element, options)).then(\n localData => {\n const widget = WidgetQuest.getInstance<WidgetQuest, WidgetQuestOptions>(element);\n if (widget) {\n resolve(widget.init());\n } else {\n resolve(true);\n }\n }\n );\n });\n },\n /** @deprecated */\n initWidget: function (element: HTMLElement, localData?: Record<string, any>): Promise<boolean> {\n return new Promise(function (resolve, reject) {\n WidgetQuest.initWidgets<WidgetQuest, WidgetQuestOptions>((element, options) => new WidgetQuest(element, options), [element], localData).then(\n localData => {\n const widget = WidgetQuest.getInstance<WidgetQuest, WidgetQuestOptions>(element);\n if (widget) {\n const result = widget.init();\n widget.onStart();\n resolve(result);\n } else {\n resolve(true);\n }\n }\n );\n });\n },\n onStart: function (element: HTMLElement) {\n WidgetQuest.getInstance<WidgetQuest, WidgetQuestOptions>(element)?.onStart();\n },\n onStop: function (element: HTMLElement) {\n WidgetQuest.getInstance<WidgetQuest, WidgetQuestOptions>(element)?.onStop();\n },\n select: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetQuest.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetQuest.getInstance<WidgetQuest, WidgetQuestOptions>(widgetElement);\n if (widget) {\n return widget.selectAnswer(element);\n }\n }\n return false;\n },\n slideTestIsDone: function (element: HTMLElement): boolean {\n const widget = WidgetQuest.getInstance<WidgetQuest, WidgetQuestOptions>(element);\n if (widget) {\n return widget.slideQuestIsDone();\n }\n return true;\n },\n handleRouteClick: function (\n element: HTMLElement,\n event: { direction: \"backward\" | \"forward\"; slideIndex: number; slideCount: number }\n ): { continueDefaultNavigation: boolean } {\n const widget = WidgetQuest.getInstance<WidgetQuest, WidgetQuestOptions>(element);\n if (widget) {\n return widget.handleRouteClick(event);\n }\n return { continueDefaultNavigation: true };\n },\n };\n}\n","import { extend, forEach, getTagDataAsNumber, getValueOrException, slice } from \"@utils\";\nimport { WidgetQuizOptions } from \"./quiz.h\";\nimport { WidgetBase } from \"../base\";\n\nexport class WidgetQuiz extends WidgetBase<WidgetQuizOptions> {\n static DEFAULTS: WidgetQuizOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-quiz\";\n\n private readonly question: HTMLElement | null;\n private readonly answers: Array<HTMLElement>;\n private readonly questionCount: number;\n private selectedAnswer: number | undefined;\n\n constructor(element: HTMLElement, options: Partial<WidgetQuizOptions>) {\n super(element, options);\n\n this.question = this.element.querySelector<HTMLElement>(\".label-view .label\");\n this.answers = slice.call(this.element.querySelectorAll(\".variants-box .variant-view-group\"));\n this.questionCount = getValueOrException(getTagDataAsNumber(this.slide, \"quizCount\"), \"Empty quizCount\");\n }\n\n /**\n * Start or restart widget\n * @param localData\n */\n public onRefreshUserData(localData: Record<string, any>) {\n super.onRefreshUserData(localData);\n\n this.selectedAnswer = undefined;\n\n if (this.localData) {\n if (this.localData[\"_q_g_\" + this.elementId + \"_sa\"] !== undefined) {\n this._selectAnswer(this.localData[\"_q_g_\" + this.elementId + \"_sa\"]);\n this.setLocalData(this.localData, false);\n } else {\n this._clearAnswerSelection();\n }\n\n if (this.localData[\"_q_g_\" + this.elementId + \"fo_at\"] === undefined) {\n this.localData[\"_q_g_\" + this.elementId + \"fo_at\"] = Math.round(new Date().getTime() / 1000);\n this.setLocalData(this.localData, false);\n }\n }\n\n this.firstOpenTime = new Date().getTime();\n }\n\n private _selectAnswer(index: number): void {\n // var hintContainer = null;\n // var hintContainerHeight = null;\n if (this.answers[index]) {\n this.answers[index].classList.add(\"selected\");\n\n // hintContainer = this.answers[index].nextSibling;\n // if (hintContainer && hintContainer.classList.contains('narrative-element-quiz-answer-hint-container')) {\n // hintContainerHeight = hintContainer.getBoundingClientRect().height;\n // hintContainer.style.height = 0;\n // }\n }\n\n this.selectedAnswer = index;\n\n this.localData[\"_q_g_\" + this.elementId + \"_sa\"] = index;\n\n this.element.classList.add(\"done\");\n\n this.env.requestAnimationFrame(() => {\n if (this.submitButtonAnimatedView != null) {\n this.submitButtonAnimatedView.style.maxHeight = `${this.submitButtonViewHeight}px`;\n }\n });\n\n // if (hintContainer && hintContainerHeight && window.requestAnimationFrame) {\n // requestAnimationFrame(function() {\n // requestAnimationFrame(function() {\n // hintContainer.style.height = hintContainerHeight + 'px';\n // })\n // })\n // }\n\n this.startReadyPromise.then(() => {\n if (this.disableTimer) {\n this.startDisabledTimeline();\n }\n });\n }\n\n private _clearAnswerSelection(): void {\n forEach(this.answers, function (answer) {\n answer.classList.remove(\"selected\");\n });\n\n this.selectedAnswer = undefined;\n\n this.element.classList.remove(\"done\");\n\n this.env.requestAnimationFrame(() => {\n if (this.submitButtonAnimatedView != null) {\n this.submitButtonAnimatedView.style.maxHeight = \"0px\";\n }\n });\n }\n\n public selectAnswer(answer: HTMLElement): boolean {\n if (this.selectedAnswer !== undefined) {\n return true;\n }\n\n const selectedAnswerIndex = this.answers.indexOf(answer);\n if (selectedAnswerIndex !== -1) {\n this._selectAnswer(selectedAnswerIndex);\n\n const isCorrect = this.answers[selectedAnswerIndex].classList.contains(\"check\");\n\n this.localData[\"q_score\"] = (this.localData[\"q_score\"] === undefined ? 0 : this.localData[\"q_score\"]) + (isCorrect ? 1 : 0);\n\n let answeredQuestion = 0;\n for (const key in this.localData) {\n if (this.localData.hasOwnProperty(key)) {\n if (/^_q_g_[A-z0-9-_]+_sa$/.test(key)) {\n answeredQuestion++;\n }\n }\n }\n if (this.localData[\"_q_fa_at\"] === undefined) {\n this.localData[\"_q_fa_at\"] = Math.round(new Date().getTime() / 1000);\n }\n\n if (answeredQuestion === this.questionCount) {\n this.localData[\"_q_done_at\"] = Math.round(new Date().getTime() / 1000);\n }\n\n // ответ на вопрос\n this.localData[\"_&ts_q_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n\n this.setLocalData(this.localData, true);\n\n if (this.widgetDone) {\n this.widgetDone.classList.add(\"active\", \"opacity-active\");\n const self = this;\n setTimeout(function () {\n self.widgetDone?.classList.remove(\"active\");\n setTimeout(function () {\n self.widgetDone?.classList.remove(\"opacity-active\");\n }, 250);\n }, 2000);\n }\n\n try {\n const questionText = this.question ? this.question.textContent ?? \"\" : \"\";\n let answerText = \"\";\n if (this.answers[selectedAnswerIndex]) {\n const answerLabel = this.answers[selectedAnswerIndex].querySelector(\".variant-view .label\");\n if (answerLabel != null && answerLabel.textContent != null) {\n answerText = answerLabel.textContent;\n }\n }\n\n const duration = new Date().getTime() - this.firstOpenTime;\n\n this.sendStatisticEventToApp(\n \"w-quiz-answer\",\n {\n ...this.statisticEventBaseFieldsShortForm,\n wi: this.elementId,\n wl: questionText,\n wa: selectedAnswerIndex,\n wal: answerText,\n d: duration,\n },\n {\n ...this.statisticEventBaseFieldsFullForm,\n widget_id: this.elementId,\n widget_label: questionText,\n widget_answer: selectedAnswerIndex,\n widget_answer_label: answerText,\n duration_ms: duration,\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n return false;\n }\n\n public isDone(): boolean {\n return this.localData[\"_q_done_at\"] !== undefined;\n }\n\n public slideQuizIsDone(): boolean {\n return this.localData[\"_q_g_\" + this.elementId + \"_sa\"] !== undefined;\n }\n\n public static api = {\n widgetClassName: WidgetQuiz.widgetClassName,\n /** @deprecated */\n refreshUserData: WidgetQuiz.refreshUserData,\n onRefreshUserData: WidgetQuiz.onRefreshUserData,\n init: function (element: HTMLElement, localData?: Record<string, any>): void {\n WidgetQuiz.initWidget<WidgetQuiz, WidgetQuizOptions>(element, localData, (element, options) => new WidgetQuiz(element, options));\n },\n /** @deprecated */\n initWidget: function (element: HTMLElement, localData?: Record<string, any>) {\n WidgetQuiz.initWidgets<WidgetQuiz, WidgetQuizOptions>((element, options) => new WidgetQuiz(element, options), [element], localData).then(() => {\n WidgetQuiz.getInstance<WidgetQuiz, WidgetQuizOptions>(element)?.onStart();\n });\n },\n onStart: function (element: HTMLElement) {\n WidgetQuiz.getInstance<WidgetQuiz, WidgetQuizOptions>(element)?.onStart();\n },\n onStop: function (element: HTMLElement) {\n WidgetQuiz.getInstance<WidgetQuiz, WidgetQuizOptions>(element)?.onStop();\n },\n /**\n * click on quiz answer\n */\n select: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetQuiz.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetQuiz.getInstance<WidgetQuiz, WidgetQuizOptions>(widgetElement);\n if (widget) {\n return widget.selectAnswer(element);\n }\n }\n return false;\n },\n slideQuizIsDone: function (element: HTMLElement) {\n const widget = WidgetQuiz.getInstance<WidgetQuiz, WidgetQuizOptions>(element);\n if (widget) {\n return widget.slideQuizIsDone();\n }\n return true;\n },\n };\n}\n","import { extend, forEach, getTagDataAsNumber, getValueOrDefault, getValueOrException, slice } from \"@utils\";\nimport { WidgetQuizGroupedOptions } from \"./quiz_grouped.h\";\nimport { WidgetBase } from \"../base\";\n\nexport class WidgetQuizGrouped extends WidgetBase<WidgetQuizGroupedOptions> {\n static DEFAULTS = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-quiz-grouped\";\n\n private readonly question: HTMLElement | null;\n private readonly answers: Array<HTMLElement>;\n private readonly questionCount: number;\n private selectedAnswer: number | undefined;\n\n /**\n * @throws Error\n * @param element\n * @param options\n */\n constructor(element: HTMLElement, options: Partial<WidgetQuizGroupedOptions>) {\n super(element, options);\n\n this.question = this.element.querySelector<HTMLElement>(\".label-view .label\");\n this.answers = slice.call(this.element.querySelectorAll(\".variants-box .variant-view-group\"));\n this.questionCount = getValueOrException(getTagDataAsNumber(this.slide, \"quizCount\"), \"Empty quizCount\");\n }\n\n /**\n * Start or restart widget\n * @param localData\n */\n public onRefreshUserData(localData: Record<string, any>) {\n super.onRefreshUserData(localData);\n\n this.selectedAnswer = undefined;\n\n if (this.localData) {\n if (this.localData[\"_q_gg_\" + this.elementId + \"_sa\"] !== undefined) {\n this._selectAnswer(this.localData[\"_q_gg_\" + this.elementId + \"_sa\"]);\n // this._updateScore(this.localData['_q_gg_' + this.elementId + '_sa']);\n this.setLocalData(this.localData, false);\n } else {\n this._clearAnswerSelection();\n }\n\n if (this.localData[\"_qg_g_\" + this.elementId + \"fo_at\"] === undefined) {\n this.localData[\"_qg_g_\" + this.elementId + \"fo_at\"] = Math.round(new Date().getTime() / 1000);\n this.setLocalData(this.localData, false);\n }\n }\n\n this.firstOpenTime = new Date().getTime();\n }\n\n private _selectAnswer(index: number): void {\n if (this.answers[index]) {\n this.answers[index].classList.add(\"selected\");\n }\n\n this.selectedAnswer = index;\n\n this.localData[\"_q_gg_\" + this.elementId + \"_sa\"] = index;\n\n this.element.classList.add(\"done\");\n\n this.env.requestAnimationFrame(() => {\n if (this.submitButtonAnimatedView != null) {\n this.submitButtonAnimatedView.style.maxHeight = `${this.submitButtonViewHeight}px`;\n }\n });\n\n this.startReadyPromise.then(() => {\n if (this.disableTimer) {\n this.startDisabledTimeline();\n }\n });\n }\n\n private _clearAnswerSelection() {\n forEach(this.answers, function (answer) {\n answer.classList.remove(\"selected\");\n });\n\n this.selectedAnswer = undefined;\n\n this.element.classList.remove(\"done\");\n\n this.env.requestAnimationFrame(() => {\n if (this.submitButtonAnimatedView != null) {\n this.submitButtonAnimatedView.style.maxHeight = \"0px\";\n }\n });\n }\n\n private _updateScore(index: number) {\n const answerValue = getValueOrDefault(getTagDataAsNumber(this.answers[index], \"value\"), index);\n\n if (this.localData[\"qg_score\"] == null) {\n this.localData[\"qg_score\"] = {};\n }\n\n let sum = 0;\n for (let i = 0; i < this.answers.length; i++) {\n if (this.localData[\"qg_score\"][i] == null) {\n this.localData[\"qg_score\"][i] = 0;\n }\n sum += this.localData[\"qg_score\"][i];\n }\n\n // если еще не ответили на все\n if (sum < this.questionCount) {\n this.localData[\"qg_score\"][answerValue] += 1;\n\n let answeredQuestion = 0;\n for (const key in this.localData) {\n if (this.localData.hasOwnProperty(key)) {\n if (/^_q_gg_[A-z0-9-_]+_sa$/.test(key)) {\n answeredQuestion++;\n }\n }\n }\n if (this.localData[\"_qg_fa_at\"] === undefined) {\n this.localData[\"_qg_fa_at\"] = Math.round(new Date().getTime() / 1000);\n }\n\n if (this.localData[\"_qg_done_at\"] === undefined) {\n if (answeredQuestion === this.questionCount) {\n this.localData[\"_qg_done_at\"] = Math.round(new Date().getTime() / 1000);\n }\n }\n\n // ответ на вопрос\n this.localData[\"_&ts_qg_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n\n this.setLocalData(this.localData, true);\n }\n }\n\n private selectAnswer(answer: HTMLElement): boolean {\n if (this.selectedAnswer != null) {\n return true;\n }\n\n const selectedAnswerIndex = this.answers.indexOf(answer);\n if (selectedAnswerIndex !== -1) {\n this._selectAnswer(selectedAnswerIndex);\n this._updateScore(selectedAnswerIndex);\n\n if (this.widgetDone) {\n this.widgetDone.classList.add(\"active\", \"opacity-active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"opacity-active\");\n }, 250);\n }, 2000);\n }\n\n try {\n const questionText = this.question ? this.question.textContent ?? \"\" : \"\";\n let answerText = \"\";\n if (this.answers[selectedAnswerIndex]) {\n const answerLabel = this.answers[selectedAnswerIndex].querySelector(\".variant-view .label\");\n if (answerLabel != null) {\n answerText = answerLabel.textContent ?? \"\";\n }\n }\n const duration = new Date().getTime() - this.firstOpenTime;\n\n this.sendStatisticEventToApp(\n \"w-quiz-grouped-answer\",\n {\n ...this.statisticEventBaseFieldsShortForm,\n wi: this.elementId,\n wl: questionText,\n wa: selectedAnswerIndex,\n wal: answerText,\n d: duration,\n },\n {\n ...this.statisticEventBaseFieldsFullForm,\n widget_id: this.elementId,\n widget_label: questionText,\n widget_answer: selectedAnswerIndex,\n widget_answer_label: answerText,\n duration_ms: duration,\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n return false;\n }\n\n public isDone(): boolean {\n return this.localData[\"_qg_done_at\"] !== undefined;\n }\n\n public slideQuizIsDone(): boolean {\n return this.localData[\"_q_gg_\" + this.elementId + \"_sa\"] !== undefined;\n }\n\n public static api = {\n widgetClassName: WidgetQuizGrouped.widgetClassName,\n /** @deprecated */\n refreshUserData: WidgetQuizGrouped.refreshUserData,\n onRefreshUserData: WidgetQuizGrouped.onRefreshUserData,\n init: function (element: HTMLElement, localData?: Record<string, any>): void {\n WidgetQuizGrouped.initWidget<WidgetQuizGrouped, WidgetQuizGroupedOptions>(\n element,\n localData,\n (element, options) => new WidgetQuizGrouped(element, options)\n );\n },\n /** @deprecated */\n initWidget: function (element: HTMLElement, localData?: Record<string, any>) {\n WidgetQuizGrouped.initWidgets<WidgetQuizGrouped, WidgetQuizGroupedOptions>(\n (element, options) => new WidgetQuizGrouped(element, options),\n [element],\n localData\n ).then(() => {\n WidgetQuizGrouped.getInstance<WidgetQuizGrouped, WidgetQuizGroupedOptions>(element)?.onStart();\n });\n },\n onStart: function (element: HTMLElement) {\n WidgetQuizGrouped.getInstance<WidgetQuizGrouped, WidgetQuizGroupedOptions>(element)?.onStart();\n },\n onStop: function (element: HTMLElement) {\n WidgetQuizGrouped.getInstance<WidgetQuizGrouped, WidgetQuizGroupedOptions>(element)?.onStop();\n },\n /**\n * click on quiz answer\n */\n select: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetQuizGrouped.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetQuizGrouped.getInstance<WidgetQuizGrouped, WidgetQuizGroupedOptions>(widgetElement);\n if (widget) {\n return widget.selectAnswer(element);\n }\n }\n\n return false;\n },\n slideQuizIsDone: function (element: HTMLElement) {\n const widget = WidgetQuizGrouped.getInstance<WidgetQuizGrouped, WidgetQuizGroupedOptions>(element);\n if (widget) {\n return widget.slideQuizIsDone();\n }\n return true;\n },\n };\n}\n","import { extend, getTagData, getValueOrException, isArray, isNumber, isObject, proxy } from \"@utils\";\nimport { WidgetBase, Widgets } from \"../base\";\nimport { WidgetRangeSliderOptions, WidgetRangeSliderSharedData } from \"./range_slider.h\";\n\n// Polyfill Number.isNaN(value)\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN\nNumber.isNaN =\n Number.isNaN ||\n function (value) {\n return typeof value === \"number\" && value !== value;\n };\n\n/**\n * Range feature detection\n * @return {Boolean}\n */\nfunction supportsRange(env: Window) {\n const input = env.document.createElement(\"input\");\n input.setAttribute(\"type\", \"range\");\n return input.type !== \"text\";\n}\n\nconst constants = {\n orientation: {\n horizontal: {\n dimension: \"width\",\n direction: \"left\",\n directionStyle: {\n ltr: \"left\",\n rtl: \"right\",\n },\n coordinate: \"x\",\n },\n vertical: {\n dimension: \"height\",\n direction: \"top\",\n directionStyle: {\n ltr: \"bottom\",\n rtl: \"bottom\",\n },\n coordinate: \"y\",\n },\n },\n} as const;\n\n/**\n * Delays a function for the given number of milliseconds, and then calls\n * it with the arguments supplied.\n */\nfunction delay(env: Window, fn: Function, wait: number): number {\n const args = Array.prototype.slice.call(arguments, 2);\n return env.setTimeout(function () {\n return fn.apply(null, args);\n }, wait);\n}\n\n/**\n * Returns a debounced function that will make sure the given\n * function is not triggered too much.\n *\n * @param {Window} env\n * @param {Function} fn Function to debounce.\n * @param {Number} debounceDuration OPTIONAL. The amount of time in milliseconds for which we will debounce the function. (defaults to 100ms)\n * @return {Function}\n */\nfunction debounce(\n env: Window,\n fn: Function & {\n debouncing?: boolean;\n lastReturnVal?: any;\n debounceTimeout?: number;\n },\n debounceDuration: number\n) {\n debounceDuration = debounceDuration || 100;\n return function () {\n if (!fn.debouncing) {\n const args = Array.prototype.slice.apply(arguments);\n fn.lastReturnVal = fn.apply(env, args);\n fn.debouncing = true;\n }\n env.clearTimeout(fn.debounceTimeout);\n fn.debounceTimeout = env.setTimeout(function () {\n fn.debouncing = false;\n }, debounceDuration);\n return fn.lastReturnVal;\n };\n}\n\n/**\n * Check if a `element` is visible in the DOM\n *\n * @param {Element} element\n * @return {Boolean}\n */\nfunction isHidden(element: (HTMLElement & { open?: boolean }) | null) {\n return Boolean(\n element &&\n (element.offsetWidth === 0 ||\n element.offsetHeight === 0 ||\n // Also Consider native `<details>` elements.\n element.open === false)\n );\n}\n\n/**\n * Get hidden parentNodes of an `element`\n *\n * @param {Element} element\n * @return {[type]}\n */\nfunction getHiddenParentNodes(element: HTMLElement) {\n let parents = [],\n node = element.parentNode as HTMLElement;\n\n while (isHidden(node)) {\n parents.push(node);\n node = node.parentNode as HTMLElement;\n }\n return parents;\n}\n\n/**\n * Returns dimensions for an element even if it is not visible in the DOM.\n *\n * @param {Element} element\n * @param {String} key (e.g. offsetWidth …)\n * @return {Number}\n */\nfunction getDimension(element: HTMLElement, key: \"offsetWidth\" | \"offsetHeight\"): number {\n const hiddenParentNodes = getHiddenParentNodes(element),\n hiddenParentNodesLength = hiddenParentNodes.length,\n inlineStyle = [];\n\n // Used for native `<details>` elements\n function toggleOpenProperty(element: HTMLElement & { open?: boolean }) {\n if (typeof element.open !== \"undefined\") {\n element.open = !Boolean(element.open);\n }\n }\n\n // if (hiddenParentNodesLength) {\n // for (var i = 0; i < hiddenParentNodesLength; i++) {\n //\n // // Cache style attribute to restore it later.\n // inlineStyle[i] = hiddenParentNodes[i].style.cssText;\n //\n // // visually hide\n // if (hiddenParentNodes[i].style.setProperty) {\n // hiddenParentNodes[i].style.setProperty('display', 'block', 'important');\n // } else {\n // hiddenParentNodes[i].style.cssText += ';display: block !important';\n // }\n // hiddenParentNodes[i].style.height = '0';\n // hiddenParentNodes[i].style.overflow = 'hidden';\n // hiddenParentNodes[i].style.visibility = 'hidden';\n // toggleOpenProperty(hiddenParentNodes[i]);\n // }\n //\n // // Update dimension\n // dimension = element[key];\n //\n // for (var j = 0; j < hiddenParentNodesLength; j++) {\n //\n // // Restore the style attribute\n // hiddenParentNodes[j].style.cssText = inlineStyle[j];\n // toggleOpenProperty(hiddenParentNodes[j]);\n // }\n // }\n return element[key];\n}\n\n/**\n * Returns the parsed float or the default if it failed.\n *\n * @param {String} str\n * @param {Number} defaultValue\n * @return {Number}\n */\nfunction tryParseFloat(str: string | undefined | null, defaultValue: number): number {\n if (str == null) {\n return defaultValue;\n }\n const value = parseFloat(str);\n return Number.isNaN(value) ? defaultValue : value;\n}\n\n/**\n * Capitalize the first letter of string\n *\n * @param {String} str\n * @return {String}\n */\nfunction ucfirst(str: string): string {\n return str.charAt(0).toUpperCase() + str.substr(1);\n}\n\nfunction insertAfter(elem: HTMLElement, refElem: HTMLElement): HTMLElement | undefined {\n return refElem.parentNode?.insertBefore(elem, refElem.nextSibling);\n}\n\nexport class WidgetRangeSlider extends WidgetBase<WidgetRangeSliderOptions> {\n static DEFAULTS: WidgetRangeSliderOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n\n rangeClass: \"slider-view\",\n rangeBackgroundClass: \"slider-background-view\",\n activeClass: \"rangeslider--active\",\n horizontalClass: \"rangeslider--horizontal\",\n verticalClass: \"rangeslider--vertical\",\n fillClass: \"slider-fill-view\",\n handleClass: \"slider-handle-view\",\n };\n\n public static widgetClassName = \"narrative-element-range-slider\";\n\n private label: HTMLElement | null;\n private readonly topScale: HTMLElement | null;\n\n private readonly startValue: number;\n private readonly snapPosition: boolean;\n private readonly hasSubmitButton: boolean;\n private elementSlider: HTMLInputElement;\n private readonly elementAverageResult: HTMLElement | null;\n private readonly elementAverageResultTooltip: HTMLElement | null;\n private readonly elementAverageResultTooltipLabelView: HTMLElement | null;\n private readonly orientation: \"horizontal\" | \"vertical\";\n private min: number;\n private max: number;\n private value: number;\n private step: number;\n private readonly toFixed: number;\n private fill: HTMLElement;\n private readonly handle: HTMLElement;\n private readonly range: HTMLElement;\n private readonly rangeBgView: HTMLElement;\n private readonly DIMENSION: \"width\" | \"height\";\n private readonly DIRECTION: \"left\" | \"top\";\n private DIRECTION_STYLE: \"left\" | \"right\";\n private readonly COORDINATE: \"x\" | \"y\";\n private isClickCapturedBySlider: boolean = false;\n private handleDimension: number;\n private rangeDimension: number;\n private maxHandlePos: number;\n private grabPos: number;\n private position: number;\n private prevSnapValue: number;\n\n /**\n * @throws Error\n * @param element\n * @param options\n */\n constructor(element: HTMLElement, options: Partial<WidgetRangeSliderOptions>) {\n super(element, options);\n\n this.hasSubmitButton = Boolean(this.element.querySelector(\".submit-button-view\"));\n this.topScale = this.element.querySelector(\".top-scale-bar-view-group\");\n this.snapPosition = false;\n try {\n this.snapPosition = this.topScale != null && this.topScale.getBoundingClientRect().height > 0;\n } catch (e) {\n console.error(e);\n }\n this.startValue = tryParseFloat(getTagData(this.element, \"startValue\"), 0);\n this.label = this.element.querySelector(\".label-view .label\");\n this.elementSlider = getValueOrException(this.element.querySelector<HTMLInputElement>('input[type=\"range\"]'), \"Empty elementSlider\");\n\n this.elementAverageResult = this.element.querySelector(\".slider-average-result-view\");\n if (this.elementAverageResult != null) {\n this.elementAverageResultTooltip = this.elementAverageResult.querySelector(\".tooltip-view\");\n if (this.elementAverageResultTooltip != null) {\n this.elementAverageResultTooltipLabelView = this.elementAverageResult.querySelector(\".average-result-label-view\");\n }\n }\n\n this.toFixed = (this.step + \"\").replace(\".\", \"\").length - 1;\n this.fill = getValueOrException(this.element.querySelector<HTMLElement>(`.${this.options.fillClass}`), `Empty .${this.options.fillClass}`);\n this.handle = getValueOrException(this.element.querySelector<HTMLElement>(`.${this.options.handleClass}`), `Empty .${this.options.handleClass}`);\n this.range = getValueOrException(this.element.querySelector<HTMLElement>(`.${this.options.rangeClass}`), `Empty .${this.options.rangeClass}`);\n this.range.id = this.id;\n this.rangeBgView = getValueOrException(\n this.element.querySelector<HTMLElement>(`.${this.options.rangeBackgroundClass}`),\n `Empty .${this.options.rangeBackgroundClass}`\n );\n\n // if (this.range.classList.contains(this.options['horizontalClass'])) {\n this.orientation = \"horizontal\";\n // } else if (this.range.classList.contains(this.options['verticalClass'])) {\n // this.orientation = 'vertical';\n // }\n\n // enable expanded tap area (disabled by default for backward compatibility)\n this.element.classList.add(\"width-expanded-slider-tap-area\");\n\n this.DIMENSION = constants.orientation[this.orientation].dimension;\n this.DIRECTION = constants.orientation[this.orientation].direction;\n this.DIRECTION_STYLE = constants.orientation[this.orientation].directionStyle[this.layoutDirection];\n this.COORDINATE = constants.orientation[this.orientation].coordinate;\n\n // Store context\n this.handleDown = proxy(this.handleDown, this);\n this.handleMove = proxy(this.handleMove, this);\n this.handleEnd = proxy(this.handleEnd, this);\n\n // Attach Events\n // window.addEventListener('resize.' + this.identifier, debounce(function() {\n // // Simulate resizeEnd event.\n // delay(function() {\n // _this.update(false, false);\n // }, 300);\n // }, 20));\n }\n\n private isTouchListenersInit = false;\n\n private initTouchListeners() {\n if (!this.isTouchListenersInit) {\n this.env.document.addEventListener(\"touchstart\", this.handleDown);\n this.env.document.addEventListener(\"mousedown\", this.handleDown);\n this.isTouchListenersInit = true;\n }\n }\n\n /**\n * Start or restart widget\n * @param localData\n */\n public onRefreshUserData(localData: Record<string, any>) {\n super.onRefreshUserData(localData);\n\n if (this.localData[\"_rs_g_\" + this.elementId + \"_v\"] !== undefined) {\n this.elementSlider.value = String(tryParseFloat(this.localData[\"_rs_g_\" + this.elementId + \"_v\"], 0));\n this.element.classList.add(\"done\");\n this.displayAverageAnswer();\n this.startReadyPromise.then(() => {\n if (this.disableTimer) {\n this.startDisabledTimeline();\n }\n });\n } else {\n this.elementSlider.value = String(this.startValue);\n this.element.classList.remove(\"done\");\n this.element.classList.remove(\"input-done\");\n }\n\n this.init();\n }\n\n public onStart() {\n super.onStart();\n\n this.initTouchListeners();\n }\n\n public onStop(): void {\n super.onStop();\n\n this.destroy();\n }\n\n private _statEventInputSave(val: number) {\n try {\n const labelText = this.label?.textContent ?? \"\";\n\n this.sendStatisticEventToApp(\n \"w-range-slider-answer\",\n {\n ...this.statisticEventBaseFieldsShortForm,\n wi: this.elementId,\n wl: labelText,\n wa: val,\n },\n {\n ...this.statisticEventBaseFieldsFullForm,\n widget_id: this.elementId,\n widget_label: labelText,\n widget_answer: val,\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n public click(): boolean {\n if (this.isDone()) {\n return true;\n }\n this.completeWidget();\n return false;\n }\n\n private completeWidget(): void {\n if (this.widgetDone) {\n this.widgetDone.classList.add(\"active\", \"opacity-active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"opacity-active\");\n }, 250);\n }, 2000);\n }\n\n this.localData[\"_rs_g_\" + this.elementId + \"_v\"] = tryParseFloat(this.elementSlider.value, 0);\n this.localData[\"_rs_g_\" + this.elementId + \"_done_at\"] = Math.round(new Date().getTime() / 1000);\n // answer for question\n this.localData[\"_&ts_rs_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n\n // hide submit button\n this.env.requestAnimationFrame(() => {\n if (this.submitButtonAnimatedView != null) {\n this.submitButtonAnimatedView.style.maxHeight = \"0px\";\n\n setTimeout(() => {\n // important, displayAverageAnswer need .done at element\n this.element.classList.add(\"done\");\n this.displayAverageAnswer(true);\n }, 200);\n } else {\n // important, displayAverageAnswer need .done at element\n this.element.classList.add(\"done\");\n this.displayAverageAnswer(true);\n }\n });\n\n // if (this.disableTimer) {\n this.startDisabledTimeline();\n // }\n\n this.setLocalData(this.localData, true);\n this._statEventInputSave(this.localData[\"_rs_g_\" + this.elementId + \"_v\"]);\n }\n\n public isDone(): boolean {\n return this.localData[\"_rs_g_\" + this.elementId + \"_v\"] != null;\n }\n\n public getIsClickCapturedBySlider(): boolean {\n return this.isClickCapturedBySlider;\n }\n\n private displayAverageAnswer(withTooltip: boolean = false): void {\n let answerAllocation: WidgetRangeSliderSharedData[string] = {\n total_value: 0,\n total_user: 0,\n };\n let answerAllocationTs: number | undefined = undefined;\n const sharedData = this.sdkApi.getWidgetsSharedData<Widgets.RangeSlider>(this.cardId, Widgets.RangeSlider);\n if (sharedData && sharedData[this.elementId] != null && (isObject(sharedData[this.elementId]) || isArray(sharedData[this.elementId]))) {\n answerAllocation = sharedData[this.elementId];\n answerAllocationTs = sharedData.ts;\n }\n\n const rangeSliderDoneAt = this.localData[\"_rs_g_\" + this.elementId + \"_done_at\"];\n\n if (answerAllocationTs === undefined || rangeSliderDoneAt === undefined || rangeSliderDoneAt > answerAllocationTs) {\n answerAllocation[\"total_value\"] += this.localData[\"_rs_g_\" + this.elementId + \"_v\"];\n ++answerAllocation[\"total_user\"];\n }\n\n let averageValue: number | null = null;\n if (\n answerAllocation[\"total_user\"] !== undefined &&\n isNumber(answerAllocation[\"total_user\"]) &&\n answerAllocation[\"total_value\"] !== undefined &&\n isNumber(answerAllocation[\"total_value\"])\n ) {\n averageValue = Math.round((answerAllocation[\"total_value\"] / answerAllocation[\"total_user\"]) * 10) / 10;\n }\n\n if (this.elementAverageResult != null && averageValue !== null) {\n this.update(true, false);\n\n const positionDimension = this.env.document.documentElement.dir === \"rtl\" ? (\"right\" as const) : (\"left\" as const);\n\n const position = this.getPositionFromValue(averageValue) + this.handleDimension / 2;\n\n this.elementAverageResult.style[positionDimension] = position + \"px\";\n // this.elementAverageResult.style.display = 'block';\n if (withTooltip && this.elementAverageResultTooltipLabelView != null && this.element != null) {\n if (!this.elementAverageResultTooltip?.classList.contains(\"visible\")) {\n this.elementAverageResultTooltip?.classList.add(\"visible\");\n setTimeout(() => {\n if (this.elementAverageResultTooltip && this.elementAverageResultTooltip.classList) {\n this.elementAverageResultTooltip.classList.remove(\"visible\");\n }\n }, 3000);\n }\n\n this.env.requestAnimationFrame(() => {\n const elementBox = this.element.getBoundingClientRect();\n const labelViewBox = this.elementAverageResultTooltipLabelView?.getBoundingClientRect();\n let offset = 0;\n\n // console.log({labelViewBox, elementBox})\n\n if (labelViewBox && labelViewBox.width !== 0) {\n if (labelViewBox.right > elementBox.right) {\n // get -x for translateX with offset to left\n offset = elementBox.right - labelViewBox.right;\n } else if (labelViewBox.left < elementBox.left) {\n // get +x for translateX with offset to right\n offset = elementBox.left - labelViewBox.left;\n }\n }\n\n if (offset !== 0) {\n this.elementAverageResultTooltipLabelView?.style.setProperty(\"transform\", \"translateX(\" + offset + \"px)\");\n }\n });\n }\n }\n }\n\n private init(): void {\n if (!this.maxHandlePos) {\n this.env.setTimeout(() => {\n this.update(true, false);\n }, 10);\n } else {\n this.update(true, false);\n }\n }\n\n private update(updateAttributes: boolean, triggerSlide: boolean) {\n updateAttributes = updateAttributes || false;\n\n if (updateAttributes) {\n this.min = tryParseFloat(this.elementSlider.getAttribute(\"min\"), 0);\n this.max = tryParseFloat(this.elementSlider.getAttribute(\"max\"), 100);\n this.value = tryParseFloat(this.elementSlider.value, Math.round(this.min + (this.max - this.min) / 2));\n this.step = tryParseFloat(this.elementSlider.getAttribute(\"step\"), 1);\n }\n\n this.handleDimension = getDimension(this.handle, (\"offset\" + ucfirst(this.DIMENSION)) as \"offsetWidth\" | \"offsetHeight\");\n this.rangeDimension = getDimension(this.rangeBgView, (\"offset\" + ucfirst(this.DIMENSION)) as \"offsetWidth\" | \"offsetHeight\");\n // this.maxHandlePos = this.rangeDimension - this.handleDimension;\n this.maxHandlePos = this.rangeDimension;\n this.grabPos = this.handleDimension / 2;\n this.position = this.getPositionFromValue(this.value);\n\n if (updateAttributes) {\n // Snapping steps\n this.prevSnapValue = this.getValueFromPosition(this.cap(this.position, 0, this.maxHandlePos));\n }\n\n this.setPosition(this.position, triggerSlide);\n }\n\n private handleDown(e: MouseEvent | TouchEvent) {\n if (this.isDone()) {\n return;\n }\n\n let rangeslider: HTMLElement | null = e.target as HTMLElement;\n if (!rangeslider.classList.contains(\"slider-view\")) {\n rangeslider = rangeslider.closest<HTMLElement>(\".slider-view\");\n }\n\n if (!rangeslider) {\n return;\n }\n if (rangeslider.id !== this.id) {\n return;\n }\n e.preventDefault();\n\n this.isClickCapturedBySlider = true;\n\n if (!this.maxHandlePos) {\n this.update(true, false);\n }\n\n this.env.document.addEventListener(\"touchmove\", this.handleMove);\n this.env.document.addEventListener(\"touchend\", this.handleEnd);\n\n this.env.document.addEventListener(\"mousemove\", this.handleMove);\n this.env.document.addEventListener(\"mouseup\", this.handleEnd);\n\n // add active class because Firefox is ignoring\n // the handle:active pseudo selector because of `e.preventDefault();`\n this.range.classList.add(this.options.activeClass);\n\n // If we click on the handle don't set the new position\n if ((\" \" + (e.target as HTMLElement).className + \" \").replace(/[\\n\\t]/g, \" \").indexOf(this.options.handleClass) > -1) {\n return;\n }\n\n const pos = this.getRelativePosition(e),\n rangePos = this.rangeBgView.getBoundingClientRect()[this.DIRECTION],\n handlePos = this.getPositionFromNode(this.handle) - rangePos,\n setPos = this.orientation === \"vertical\" ? this.maxHandlePos - (pos - this.grabPos) : pos - this.grabPos;\n\n this.setPosition(setPos);\n\n if (pos >= handlePos && pos < handlePos + this.handleDimension) {\n this.grabPos = pos - handlePos;\n }\n }\n\n private handleMove(e: MouseEvent | TouchEvent) {\n e.preventDefault();\n const pos = this.getRelativePosition(e);\n const setPos = this.orientation === \"vertical\" ? this.maxHandlePos - (pos - this.grabPos) : pos - this.grabPos;\n\n this.setPosition(setPos);\n }\n\n private handleEnd(e: MouseEvent | TouchEvent): void {\n this.env.requestAnimationFrame(() => {\n this.isClickCapturedBySlider = false;\n });\n\n // e.preventDefault();\n this.env.document.removeEventListener(\"touchmove\", this.handleMove);\n this.env.document.removeEventListener(\"touchend\", this.handleEnd);\n\n this.env.document.removeEventListener(\"mousemove\", this.handleMove);\n this.env.document.removeEventListener(\"mouseup\", this.handleEnd);\n\n this.range.classList.remove(this.options.activeClass);\n\n this.element.classList.add(\"input-done\");\n\n if (!this.hasSubmitButton) {\n this.completeWidget();\n } else {\n this.env.requestAnimationFrame(() => {\n if (this.submitButtonAnimatedView != null) {\n this.submitButtonAnimatedView.style.maxHeight = `${this.submitButtonViewHeight}px`;\n }\n });\n }\n\n // Ok we're done fire the change event\n // this.$element.trigger('change', {origin: this.identifier});\n }\n\n private cap = function (pos: number, min: number, max: number) {\n if (pos < min) {\n return min;\n }\n if (pos > max) {\n return max;\n }\n return pos;\n };\n\n private setPosition(pos: number, triggerSlide?: boolean) {\n let value, newPos;\n\n if (triggerSlide === undefined) {\n triggerSlide = true;\n }\n\n // Snapping steps\n value = this.getValueFromPosition(this.cap(pos, 0, this.maxHandlePos));\n newPos = this.getPositionFromValue(value);\n\n // Update ui\n let uiPos = newPos;\n // invert pos for rtl\n if (this.orientation === \"horizontal\" && this.layoutDirection === \"rtl\") {\n uiPos = this.maxHandlePos + uiPos;\n }\n\n // this.rangeDimension - slider width\n this.fill.style.transform = \"translateX(\" + (uiPos - this.rangeDimension) + \"px)\";\n // this.fill.style.transform = \"translateX(\" + (uiPos + this.grabPos - this.rangeDimension) + \"px)\";\n // this.fill.style[this.DIMENSION] = (uiPos + this.grabPos) + 'px';\n const percentage = this.getPercentageFromValue(value);\n\n if (this.orientation === \"horizontal\" && this.layoutDirection === \"rtl\") {\n // value 0% - offset = 0, value 100% - offset = -1*maxHandlePos\n uiPos = newPos - this.maxHandlePos;\n }\n this.handle.style.setProperty(\"--offset\", String(uiPos));\n this.handle.style.setProperty(\"--percentage\", String(percentage));\n\n // this.handle.style.transform = \"translateY(-50%) translateX(\" + uiPos + \"px) scale(calc(1 + (var(--scale-factor, 1) - 1) * \" + percentage + \"))\";\n\n // this.handle.style[this.DIRECTION_STYLE] = uiPos + 'px';\n\n this.setValue(value);\n\n // Update globals\n this.position = newPos;\n this.value = value;\n\n if (this.snapPosition) {\n const stepItem = String(Math.round(this.value / this.step));\n this.fill.setAttribute(\"data-step-item\", stepItem);\n\n if (this.value !== this.prevSnapValue) {\n this.prevSnapValue = this.value;\n\n try {\n this.sdkApi.vibrate(20);\n } catch (e) {\n console.error(e);\n }\n }\n }\n }\n\n // Returns element position relative to the parent\n private getPositionFromNode(node: HTMLElement | null) {\n let i = 0;\n while (node !== null) {\n i += node.offsetLeft;\n node = node.offsetParent as HTMLElement;\n }\n return i;\n }\n\n private getRelativePosition(e: MouseEvent | TouchEvent): number {\n // Get the offset DIRECTION relative to the viewport\n const ucCoordinate = ucfirst(this.COORDINATE) as \"X\" | \"Y\";\n const ucCoordinateClient = `client${ucCoordinate}` as \"clientX\" | \"clientY\";\n const rangePos = this.range.getBoundingClientRect()[this.DIRECTION];\n let pageCoordinate = 0;\n\n if (typeof (e as MouseEvent)[ucCoordinateClient] !== \"undefined\") {\n pageCoordinate = (e as MouseEvent)[ucCoordinateClient];\n } else if ((e as TouchEvent).touches && (e as TouchEvent).touches[0] && typeof (e as TouchEvent).touches[0][ucCoordinateClient] !== \"undefined\") {\n pageCoordinate = (e as TouchEvent).touches[0][ucCoordinateClient];\n // @ts-ignore\n } else if (e.currentPoint && typeof e.currentPoint[this.COORDINATE] !== \"undefined\") {\n // @ts-ignore\n pageCoordinate = e.currentPoint[this.COORDINATE];\n }\n\n return pageCoordinate - rangePos;\n }\n\n private getPercentageFromValue(value: number): number {\n let percentage;\n percentage = (value - this.min) / (this.max - this.min);\n return percentage;\n }\n\n private getPositionFromValue(value: number): number {\n let percentage, pos;\n percentage = (value - this.min) / (this.max - this.min);\n\n // invert pos for rtl\n if (this.orientation === \"horizontal\" && this.layoutDirection === \"rtl\") {\n percentage = 1 - percentage;\n }\n\n pos = !Number.isNaN(percentage) ? percentage * this.maxHandlePos : 0;\n return pos;\n }\n\n private getValueFromPosition(pos: number): number {\n let percentage, value;\n percentage = pos / (this.maxHandlePos || 1);\n\n // invert pos for rtl\n if (this.orientation === \"horizontal\" && this.layoutDirection === \"rtl\") {\n percentage = 1 - percentage;\n }\n\n value = this.step * Math.round((percentage * (this.max - this.min)) / this.step) + this.min;\n return Number(value.toFixed(this.toFixed));\n }\n\n private setValue(value: number): void {\n if (value === this.value && this.elementSlider.value !== \"\") {\n return;\n }\n\n // Set the new value and fire the `input` event\n this.elementSlider.value = String(value);\n // .val(value)\n // .trigger('input', {origin: this.identifier});\n }\n\n private destroy(): void {\n this.env.document.removeEventListener(\"touchstart\", this.handleDown);\n this.env.document.removeEventListener(\"mousedown\", this.handleDown);\n\n this.env.document.removeEventListener(\"touchmove\", this.handleMove);\n this.env.document.removeEventListener(\"touchend\", this.handleEnd);\n\n this.env.document.removeEventListener(\"mousemove\", this.handleMove);\n this.env.document.removeEventListener(\"mouseup\", this.handleEnd);\n\n this.isTouchListenersInit = false;\n\n // off resize event\n // this.$window.off('.' + this.identifier);\n\n // this.$element\n // .off('.' + this.identifier)\n // .removeAttr('style')\n // .removeData('plugin_' + pluginName);\n }\n\n public static api = {\n widgetClassName: WidgetRangeSlider.widgetClassName,\n /** @deprecated */\n refreshUserData: WidgetRangeSlider.refreshUserData,\n onRefreshUserData: WidgetRangeSlider.onRefreshUserData,\n init: function (element: HTMLElement, localData?: Record<string, any>): void {\n WidgetRangeSlider.initWidget<WidgetRangeSlider, WidgetRangeSliderOptions>(\n element,\n localData,\n (element, options) => new WidgetRangeSlider(element, options)\n );\n },\n /** @deprecated */\n initWidget: function (element: HTMLElement, localData?: Record<string, any>) {\n WidgetRangeSlider.initWidgets<WidgetRangeSlider, WidgetRangeSliderOptions>(\n (element, options) => new WidgetRangeSlider(element, options),\n [element],\n localData\n ).then(() => {\n WidgetRangeSlider.getInstance<WidgetRangeSlider, WidgetRangeSliderOptions>(element)?.onStart();\n });\n },\n onStart: function (element: HTMLElement) {\n WidgetRangeSlider.getInstance<WidgetRangeSlider, WidgetRangeSliderOptions>(element)?.onStart();\n },\n onStop: function (element: HTMLElement) {\n WidgetRangeSlider.getInstance<WidgetRangeSlider, WidgetRangeSliderOptions>(element)?.onStop();\n },\n click: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetRangeSlider.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetRangeSlider.getInstance<WidgetRangeSlider, WidgetRangeSliderOptions>(widgetElement);\n if (widget) {\n return widget.click();\n }\n }\n return true;\n },\n isClickCapturedBySlider: function (element: HTMLElement) {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetRangeSlider.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetRangeSlider.getInstance<WidgetRangeSlider, WidgetRangeSliderOptions>(widgetElement);\n if (widget) {\n return widget.getIsClickCapturedBySlider();\n }\n }\n return false;\n },\n };\n}\n","import { extend, forEach, getElementBounding, getTagData, getTagDataAsNumber, getValueOrDefault, slice } from \"@utils\";\nimport { WidgetBase } from \"../base\";\nimport { WidgetRateOptions } from \"./rate.h\";\n\nexport class WidgetRate extends WidgetBase<WidgetRateOptions> {\n static DEFAULTS: WidgetRateOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-rate\";\n\n private label: HTMLElement | null;\n private nativeDialogueWasOpened: boolean = false;\n private readonly stars: Array<HTMLElement>;\n private readonly submitToStores: boolean;\n private readonly submitToStoresMin: number;\n private readonly submitToStoresMax: number;\n private readonly showDialogOnLowRate: boolean;\n private readonly showDialogueMin: number;\n private readonly showDialogueMax: number;\n private selectedStar: number | undefined;\n private answerSelectDuration: number;\n private elementRect: DOMRect;\n\n constructor(element: HTMLElement, options: Partial<WidgetRateOptions>) {\n super(element, options);\n\n this.label = this.element.querySelector(\".label-view .label\");\n this.stars = slice.call(this.element.querySelectorAll<HTMLElement>(\".input-view\"));\n\n this.submitToStores = Boolean(getValueOrDefault(getTagDataAsNumber(this.element, \"submitToStores\"), 0));\n this.submitToStoresMin = getValueOrDefault(getTagDataAsNumber(this.element, \"submitToStoresMin\"), 4);\n this.submitToStoresMax = getValueOrDefault(getTagDataAsNumber(this.element, \"submitToStoresMax\"), 5);\n this.showDialogOnLowRate = Boolean(getValueOrDefault(getTagDataAsNumber(this.element, \"showDialogOnLowRate\"), 0));\n this.showDialogueMin = getValueOrDefault(getTagDataAsNumber(this.element, \"showDialogueMin\"), 1);\n this.showDialogueMax = getValueOrDefault(getTagDataAsNumber(this.element, \"showDialogueMax\"), 3);\n }\n\n /**\n * Start or restart widget\n * @param localData\n */\n public onRefreshUserData(localData: Record<string, any>): void {\n super.onRefreshUserData(localData);\n\n this.selectedStar = undefined;\n\n if (this.localData) {\n if (this.localData[\"_r_g_\" + this.elementId + \"_ss\"] !== undefined) {\n this._selectStar(this.localData[\"_r_g_\" + this.elementId + \"_ss\"], true);\n } else {\n this._clearSelectedStar();\n }\n }\n\n this.firstOpenTime = new Date().getTime();\n this.answerSelectDuration = 0;\n\n this.nativeDialogueWasOpened = false;\n }\n\n private _statEventRateUsAnswer(answerText: string): void {\n try {\n const labelText = this.label?.textContent ?? \"\";\n\n if (this.selectedStar != null) {\n const selectedAnswer = this.selectedStar + 1;\n\n this.sendStatisticEventToApp(\n \"w-rate-answer\",\n {\n ...this.statisticEventBaseFieldsShortForm,\n wi: this.elementId,\n wl: labelText,\n wa: selectedAnswer,\n wv: answerText,\n d: this.answerSelectDuration,\n },\n {\n ...this.statisticEventBaseFieldsFullForm,\n widget_id: this.elementId,\n widget_label: labelText,\n widget_answer: selectedAnswer,\n widget_value: answerText,\n duration_ms: this.answerSelectDuration,\n }\n );\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n private _selectStar(value: number, runTimer: boolean): void {\n const list = [];\n let i;\n for (i = 0; i < this.stars.length; i++) {\n list[i] = this.stars[i];\n }\n\n forEach(list, (element, idx) => {\n const key = idx as number;\n if (key <= value) {\n element.classList.add(\"fill\");\n }\n });\n\n if (list[value]) {\n list[value].classList.add(\"selected\");\n }\n\n this.selectedStar = value;\n\n this.localData[\"_r_g_\" + this.elementId + \"_ss\"] = value;\n\n this.element.classList.add(\"done\");\n\n this.startReadyPromise.then(() => {\n if (this.disableTimer && runTimer) {\n this.startDisabledTimeline();\n }\n });\n }\n\n private _clearSelectedStar(): void {\n forEach(this.stars, function (element) {\n element.classList.remove(\"fill\");\n element.classList.remove(\"selected\");\n });\n this.element.classList.remove(\"done\");\n }\n\n private selectStar(starElement: HTMLElement): boolean {\n if (this.selectedStar !== undefined) {\n return true;\n }\n\n const index = this.stars.indexOf(starElement);\n const length = this.stars.length;\n const value = index;\n // if (this.layoutDirection === 'rtl') {\n // value = length - index + 1;\n // }\n\n this.nativeDialogueWasOpened = false;\n\n if (value !== -1) {\n this.answerSelectDuration = new Date().getTime() - this.firstOpenTime;\n\n // 1-3 stars (default)\n if (value + 1 >= this.showDialogueMin && value + 1 <= this.showDialogueMax) {\n this.selectedStar = value;\n\n if (this.showDialogOnLowRate) {\n this.elementRect = this.element.getBoundingClientRect();\n\n this._selectStar(this.selectedStar, false);\n\n if (this.sdkApi.isAndroid) {\n this.slide.classList.add(\"blured\");\n }\n this.slide.classList.add(\"data-input-editing\");\n\n const dataString = this.element.dataset[\"clientdialogwidgetconfig\"];\n\n if (this.sdkApi.isExistsShowCardTextInput && dataString) {\n const data: Record<any, any> = JSON.parse(dataString);\n\n data.size = getElementBounding(this.env, this.elementRect);\n\n if (!this.disableTimer) {\n this.sdkApi.pauseUI();\n }\n this.nativeDialogueWasOpened = true;\n\n try {\n data.text.value = data.text.value.replaceAll(\"\\\\n\", \"\\n\").replaceAll(\"\\\\r\", \"\\r\").replaceAll(\"\\\\t\", \"\\t\");\n data.input.text.placeholder = data.input.text.placeholder.replaceAll(\"\\\\n\", \"\\n\").replaceAll(\"\\\\r\", \"\\r\").replaceAll(\"\\\\t\", \"\\t\");\n data.configV2.main.question.text.value = data.configV2.main.question.text.value\n .replaceAll(\"\\\\n\", \"\\n\")\n .replaceAll(\"\\\\r\", \"\\r\")\n .replaceAll(\"\\\\t\", \"\\t\");\n data.configV2.main.input.text.placeholder = data.configV2.main.input.text.placeholder\n .replaceAll(\"\\\\n\", \"\\n\")\n .replaceAll(\"\\\\r\", \"\\r\")\n .replaceAll(\"\\\\t\", \"\\t\");\n } catch (e) {\n console.error(e);\n }\n\n this.sdkApi.showCardTextInput(this.id, data);\n }\n } else {\n this._selectStar(this.selectedStar, true);\n this.completeWidget();\n this._statEventRateUsAnswer(\"\");\n }\n\n return false;\n } else if (value + 1 >= this.submitToStoresMin && value + 1 <= this.submitToStoresMax) {\n let target = null;\n\n if (this.sdkApi.isAndroid) {\n target = getTagData(this.element, \"androidLink\");\n } else if (this.sdkApi.isIOS) {\n target = getTagData(this.element, \"appleLink\");\n }\n\n this._selectStar(value, true);\n this.completeWidget();\n this._statEventRateUsAnswer(\"\");\n\n if (this.submitToStores && target) {\n this.sdkApi.openUrl({ type: \"link\", link: { type: \"url\", target } });\n }\n } else {\n this._selectStar(value, true);\n this.completeWidget();\n this._statEventRateUsAnswer(\"\");\n }\n }\n return false;\n }\n\n public setUserText(text: string): void {\n this.slide.classList.remove(\"data-input-editing\");\n this.slide.classList.remove(\"blured\");\n\n if (this.selectedStar != null) {\n this._selectStar(this.selectedStar, true);\n }\n\n if (!this.disableTimer && this.nativeDialogueWasOpened) {\n this.sdkApi.resumeUI();\n this.nativeDialogueWasOpened = false;\n }\n\n this.localData[\"_r_g_\" + this.elementId + \"_user_response\"] = text;\n this.completeWidget();\n this._statEventRateUsAnswer(text);\n }\n\n private completeWidget(): void {\n if (this.widgetDone) {\n this.widgetDone.classList.add(\"active\", \"opacity-active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"opacity-active\");\n }, 250);\n }, 2000);\n }\n\n this.localData[\"_r_g_\" + this.elementId + \"_done_at\"] = Math.round(new Date().getTime() / 1000);\n // ответ на вопрос\n this.localData[\"_&ts_r_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n\n this.setLocalData(this.localData, true);\n }\n\n public isDone(): boolean {\n return this.localData[\"_r_g_\" + this.elementId + \"_done_at\"] !== undefined;\n }\n\n public slideRateIsDone(): boolean {\n return this.localData[\"_r_g_\" + this.elementId + \"_sa\"] !== undefined;\n }\n\n public static api = {\n widgetClassName: WidgetRate.widgetClassName,\n /** @deprecated */\n refreshUserData: WidgetRate.refreshUserData,\n onRefreshUserData: WidgetRate.onRefreshUserData,\n init: function (element: HTMLElement, localData?: Record<string, any>): void {\n WidgetRate.initWidget<WidgetRate, WidgetRateOptions>(element, localData, (element, options) => new WidgetRate(element, options));\n },\n /** @deprecated */\n initWidget: function (nodeList: Iterable<HTMLElement>, localData?: Record<string, any>) {\n const elements = slice.call(nodeList);\n WidgetRate.initWidgets<WidgetRate, WidgetRateOptions>((element, options) => new WidgetRate(element, options), elements, localData).then(() => {\n elements.forEach(element => WidgetRate.getInstance<WidgetRate, WidgetRateOptions>(element)?.onStart());\n });\n },\n onStart: function (element: HTMLElement) {\n WidgetRate.getInstance<WidgetRate, WidgetRateOptions>(element)?.onStart();\n },\n onStop: function (element: HTMLElement) {\n WidgetRate.getInstance<WidgetRate, WidgetRateOptions>(element)?.onStop();\n },\n select: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetRate.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetRate.getInstance<WidgetRate, WidgetRateOptions>(widgetElement);\n if (widget) {\n return widget.selectStar(element);\n }\n }\n return false;\n },\n slidePollIsDone: function (element: HTMLElement) {\n const widget = WidgetRate.getInstance<WidgetRate, WidgetRateOptions>(element);\n if (widget) {\n return widget.slideRateIsDone();\n }\n return true;\n },\n setUserData: function (id: string, text: string): void {\n WidgetRate.getInstanceById<WidgetRate, WidgetRateOptions>(id)?.setUserText(text);\n },\n };\n}\n","import { extend, getTagData, getTagDataAsNumber, getValueOrDefault, slice } from \"@utils\";\nimport { WidgetBase } from \"../base\";\nimport { WidgetShareOptions } from \"./share.h\";\n\nexport class WidgetShare extends WidgetBase<WidgetShareOptions> {\n static DEFAULTS: WidgetShareOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n layers: [],\n };\n\n public static widgetClassName = \"narrative-element-share\";\n\n private readonly layers: Array<HTMLElement>;\n private readonly shareType: string | undefined;\n private readonly shareTarget: string | undefined;\n private readonly withLayer: boolean;\n private btnDisabled: boolean;\n\n constructor(element: HTMLElement, options: Partial<WidgetShareOptions>) {\n super(element, options);\n this.shareType = getTagData(this.element, \"shareType\");\n this.shareTarget = getTagData(this.element, \"shareTarget\");\n this.layers = this.options.layers;\n this.withLayer = Boolean(getValueOrDefault(getTagDataAsNumber(this.element, \"withLayer\"), 0));\n }\n\n /**\n * Start or restart widget\n * @param localData\n */\n public onRefreshUserData(localData: Record<string, any>): void {\n super.onRefreshUserData(localData);\n\n if (this.withLayer) {\n if (this.isDone()) {\n this._showLayer(this.layers, 1);\n } else {\n this._showLayer(this.layers, 0);\n }\n }\n\n this.startReadyPromise.then(() => {\n if (this.isDone() && this.disableTimer) {\n this.startDisabledTimeline();\n }\n });\n\n this.btnDisabled = false;\n }\n\n private _statEventShare(result: boolean, via: string | null): void {\n try {\n const buttonText = this.element.textContent ?? \"\";\n\n this.sendStatisticEventToApp(\n \"w-share\",\n {\n ...this.statisticEventBaseFieldsShortForm,\n wi: this.elementId,\n wl: buttonText,\n wv: this.shareTarget ?? \"\",\n wa: result ? 1 : 0,\n wal: via ?? \"\",\n },\n {\n ...this.statisticEventBaseFieldsFullForm,\n widget_id: this.elementId,\n widget_label: buttonText,\n widget_value: this.shareTarget ?? \"\",\n widget_answer: result ? 1 : 0,\n widget_answer_label: via ?? \"\",\n }\n );\n } catch (error) {\n console.error(error);\n }\n }\n\n private share(): void {\n if (!this.btnDisabled) {\n if (this.sdkApi.isExistsShare) {\n if (this.sdkApi.sdkCanSendShareComplete) {\n this.btnDisabled = true;\n }\n if (this.shareType === \"url\" || this.shareType === \"story\") {\n this.sdkApi.share(this.id, {\n url: this.shareTarget, // sdk old versions\n text: this.shareTarget,\n title: null,\n files: null,\n });\n } else if (this.shareType === \"slide\") {\n this.sdkApi.shareSlideScreenshot(this.id, \"[data-element-id='\" + this.elementId + \"']\", this.shareTarget ? this.shareTarget : undefined);\n }\n }\n }\n }\n\n public _complete(isSuccess: boolean): void {\n if (!this.localData[\"_s_\" + this.elementId + \"_ts\"] && isSuccess) {\n this.localData[\"_s_\" + this.elementId + \"_ts\"] = Math.round(new Date().getTime() / 1000);\n // `answer_at` time\n this.localData[\"_&ts_s_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n this.setLocalData(this.localData, true);\n }\n\n this._statEventShare(isSuccess, null);\n\n if (isSuccess && this.withLayer) {\n this._showLayer(this.layers, 1, true);\n }\n\n if (this.disableTimer) {\n this.startDisabledTimeline();\n }\n\n this.btnDisabled = false;\n }\n\n public isDone(): boolean {\n return Boolean(this.localData[\"_s_\" + this.elementId + \"_ts\"]);\n }\n\n public static api = {\n widgetClassName: WidgetShare.widgetClassName,\n /** @deprecated */\n refreshUserData: WidgetShare.refreshUserData,\n onRefreshUserData: WidgetShare.onRefreshUserData,\n init: function (element: HTMLElement, layers: Array<HTMLElement>, localData?: Record<string, any>): void {\n WidgetShare.initWidget<WidgetShare, WidgetShareOptions>(\n element,\n localData,\n (element, options) =>\n new WidgetShare(element, {\n ...options,\n layers,\n })\n );\n },\n /** @deprecated\n * signature variants\n * (widget, layers, undefined) - modern web sdk\n * (widget, undefined, layers) - old web sdk and rn\n * (widget, layers, localData) - native sdk\n */\n initWidget: function (nodeList: Iterable<HTMLElement>, layers: Array<HTMLElement>, localData?: Record<string, any>): void {\n if (layers === undefined && localData !== undefined) {\n // @ts-ignore\n layers = localData;\n localData = undefined;\n }\n const elements = slice.call(nodeList);\n WidgetShare.initWidgets<WidgetShare, WidgetShareOptions>(\n (element, options) => new WidgetShare(element, { ...options, layers }),\n elements,\n localData\n ).then(() => {\n elements.forEach(element => WidgetShare.getInstance<WidgetShare, WidgetShareOptions>(element)?.onStart());\n });\n },\n onStart: function (element: HTMLElement) {\n WidgetShare.getInstance<WidgetShare, WidgetShareOptions>(element)?.onStart();\n },\n onStop: function (element: HTMLElement) {\n WidgetShare.getInstance<WidgetShare, WidgetShareOptions>(element)?.onStop();\n },\n click: function (element: HTMLElement): void {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetShare.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetShare.getInstance<WidgetShare, WidgetShareOptions>(widgetElement);\n if (widget) {\n widget.share();\n }\n }\n },\n complete: function (id: string, isSuccess: boolean): void {\n WidgetShare.getInstanceById<WidgetShare, WidgetShareOptions>(id)?._complete(isSuccess);\n },\n };\n}\n","import { extend, getTagDataAsNumber, getValueOrDefault, getValueOrException, slice } from \"@utils\";\nimport { WidgetBase } from \"../base\";\nimport { WidgetTestOptions } from \"./test.h\";\n\nexport class WidgetTest extends WidgetBase<WidgetTestOptions> {\n static DEFAULTS: WidgetTestOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-test\";\n\n private label: HTMLElement | null;\n private readonly variants: Array<HTMLElement>;\n private readonly testCount: number;\n private selectedAnswer: number | undefined;\n private readonly withTimeToAnswer: boolean;\n private readonly answerTimeout: number;\n private readonly tick: () => void;\n private readonly cancelTick: () => void;\n private animationFrameId: number | null;\n private startTimerAt: number;\n private timeLeft: number;\n private timeLeftDefault: number;\n private readonly timeline: HTMLElement | null;\n private isWidgetTimerInit = false;\n\n constructor(element: HTMLElement, options: Partial<WidgetTestOptions>) {\n super(element, options);\n\n this.label = this.element.querySelector(\".label-view .label\");\n this.variants = slice.call(this.element.querySelectorAll(\".variants-box .variant-view\"));\n this.testCount = getValueOrException(getTagDataAsNumber(this.slide, \"testCount\"), \"Empty testCount\");\n\n this.withTimeToAnswer = Boolean(getValueOrDefault(getTagDataAsNumber(this.element, \"withTimeToAnswer\"), 0));\n this.answerTimeout = getValueOrDefault(getTagDataAsNumber(this.element, \"answerTimeout\"), 0);\n\n this.timeline = this.element.querySelector(\".timeline\");\n\n this.tick = () => {\n this.animationFrameId = this.env.requestAnimationFrame(() => {\n this.tick();\n });\n\n // update timer\n // update timeline position\n if (this.startTimerAt) {\n const timeNow = new Date().getTime();\n this.timeLeft = this.startTimerAt + this.timeLeftDefault - timeNow;\n\n if (this.timeLeft <= 0) {\n this.timeLeft = 0;\n this.cancelTick();\n\n this.doneWithoutAnswer();\n }\n\n if (this.timeline) {\n this.timeline.style.transform = \"translateX(\" + String((1 - this.timeLeft / this.timeLeftDefault) * 100) + \"%)\";\n }\n }\n };\n\n this.cancelTick = () => {\n if (this.animationFrameId != null) {\n this.env.cancelAnimationFrame(this.animationFrameId);\n }\n };\n }\n\n /**\n * Start or restart widget\n * @param localData\n */\n public onRefreshUserData(localData: Record<string, any>) {\n super.onRefreshUserData(localData);\n\n this.selectedAnswer = undefined;\n\n if (this.localData) {\n if (this.localData[\"_t_g_\" + this.elementId + \"_sa\"] !== undefined) {\n this._selectAnswer(this.localData[\"_t_g_\" + this.elementId + \"_sa\"]);\n this.setLocalData(this.localData, false);\n }\n\n if (this.localData[\"_t_g_\" + this.elementId + \"fo_at\"] === undefined) {\n this.localData[\"_t_g_\" + this.elementId + \"fo_at\"] = Math.round(new Date().getTime() / 1000);\n this.setLocalData(this.localData, false);\n }\n }\n\n this.firstOpenTime = new Date().getTime();\n\n if (this.slideTestWithTimer()) {\n this.cancelTick();\n this.initWidgetTimer();\n }\n }\n\n private initWidgetTimer(): void {\n if (!this.isWidgetTimerInit) {\n if (this.selectedAnswer === undefined) {\n // find timer element\n // start raf\n // pause raf on pauseUI (actually don`t need)\n\n this.timeLeftDefault = (this.answerTimeout ? this.answerTimeout : 0) * 1000;\n this.timeLeft = this.timeLeftDefault;\n\n this.animationFrameId = null;\n this.startReadyPromise.then(() => {\n if (this.localData[\"_t_g_\" + this.elementId + \"st_at\"] != null) {\n this.startTimerAt = this.localData[\"_t_g_\" + this.elementId + \"st_at\"];\n this.startTimerAt *= 1000;\n }\n if (this.startTimerAt == null) {\n this.startTimerAt = new Date().getTime();\n this.localData[\"_t_g_\" + this.elementId + \"st_at\"] = Math.round(this.startTimerAt / 1000);\n this.setLocalData(this.localData, false);\n }\n\n this.tick();\n });\n } else {\n // animate 100%\n if (this.selectedAnswer === -1) {\n if (this.timeline) {\n this.timeline.style.transform = \"translateX(100%)\";\n }\n } else if (this.localData[\"_&ts_t_g_\" + this.elementId + \"_a_tspent\"] != null) {\n if (this.timeline) {\n this.timeline.style.transform = \"translateX(\" + String(this.localData[\"_&ts_t_g_\" + this.elementId + \"_a_tspent\"]) + \"%)\";\n }\n }\n }\n this.isWidgetTimerInit = true;\n }\n }\n\n public onStart(): void {\n super.onStart();\n\n if (this.slideTestWithTimer()) {\n this.initWidgetTimer();\n }\n }\n\n public onStop(): void {\n super.onStop();\n\n if (this.slideTestWithTimer()) {\n this.cancelTick();\n }\n this.isWidgetTimerInit = false;\n }\n\n private _statEventVoteAnswer(answerScore: number): void {\n try {\n if (this.selectedAnswer != null) {\n const labelText = this.label?.textContent ?? \"\";\n let answerText = \"\";\n if (this.variants[this.selectedAnswer]) {\n const answerLabel = this.variants[this.selectedAnswer].querySelector(\".label\");\n if (answerLabel != null) {\n answerText = answerLabel.textContent ?? \"\";\n }\n }\n const duration = new Date().getTime() - this.firstOpenTime;\n\n this.sendStatisticEventToApp(\n \"w-test-answer\",\n {\n ...this.statisticEventBaseFieldsShortForm,\n wi: this.elementId,\n wl: labelText,\n wa: this.selectedAnswer,\n wal: answerText,\n was: answerScore,\n d: duration,\n },\n {\n ...this.statisticEventBaseFieldsFullForm,\n widget_id: this.elementId,\n widget_label: labelText,\n widget_answer: this.selectedAnswer,\n widget_answer_label: answerText,\n widget_answer_score: answerScore,\n duration_ms: duration,\n }\n );\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n private _selectAnswer(index: number): void {\n if (this.variants[index]) {\n this.variants[index].classList.add(\"selected\");\n }\n\n this.selectedAnswer = index;\n\n this.localData[\"_t_g_\" + this.elementId + \"_sa\"] = index;\n\n this.element.classList.add(\"done\");\n\n this.env.requestAnimationFrame(() => {\n if (this.submitButtonAnimatedView != null) {\n this.submitButtonAnimatedView.style.maxHeight = `${this.submitButtonViewHeight}px`;\n }\n });\n\n this.startReadyPromise.then(() => {\n if (this.disableTimer) {\n this.startDisabledTimeline();\n }\n });\n }\n\n public selectAnswer(answer: HTMLElement): boolean {\n if (this.selectedAnswer !== undefined) {\n return true;\n }\n\n const index = this.variants.indexOf(answer);\n if (index !== -1) {\n const answerScore = getValueOrDefault(getTagDataAsNumber(this.variants[index], \"score\"), 0);\n this._completeWidget(index, answerScore);\n }\n\n if (Boolean(this.withTimeToAnswer && this.answerTimeout)) {\n this.cancelTick();\n }\n\n return false;\n }\n\n private doneWithoutAnswer(): void {\n if (this.selectedAnswer !== undefined) {\n return;\n }\n const index = -1,\n answerScore = 0;\n this._completeWidget(index, answerScore);\n }\n\n // complete answer select and save local data + stat event\n private _completeWidget(index: number, answerScore: number): void {\n this._selectAnswer(index);\n\n this.localData[\"t_score\"] = (this.localData[\"t_score\"] === undefined ? 0 : this.localData[\"t_score\"]) + answerScore;\n\n let answeredQuestion = 0;\n for (const key in this.localData) {\n if (this.localData.hasOwnProperty(key)) {\n if (/^_t_g_[A-z0-9-_]+_sa$/.test(key)) {\n answeredQuestion++;\n }\n }\n }\n if (this.localData[\"_t_fa_at\"] === undefined) {\n this.localData[\"_t_fa_at\"] = Math.round(new Date().getTime() / 1000);\n }\n\n if (answeredQuestion === this.testCount) {\n this.localData[\"_t_done_at\"] = Math.round(new Date().getTime() / 1000);\n }\n\n // answer on question\n this.localData[\"_&ts_t_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n\n // spent percent of time\n if (this.slideTestWithTimer()) {\n this.localData[\"_&ts_t_g_\" + this.elementId + \"_a_tspent\"] = Math.round((1 - this.timeLeft / this.timeLeftDefault) * 100);\n }\n\n if (this.widgetDone) {\n this.widgetDone.classList.add(\"active\", \"opacity-active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"opacity-active\");\n }, 250);\n }, 2000);\n }\n\n this.setLocalData(this.localData, true);\n\n this._statEventVoteAnswer(answerScore);\n }\n\n public isDone(): boolean {\n return this.localData[\"_t_done_at\"] !== undefined && this.selectedAnswer !== undefined;\n }\n\n public slideTestIsDone(): boolean {\n return this.localData[\"_t_g_\" + this.elementId + \"_sa\"] !== undefined && this.selectedAnswer !== undefined;\n }\n\n public slideTestWithTimer(): boolean {\n return Boolean(this.withTimeToAnswer && this.answerTimeout);\n }\n\n public static api = {\n widgetClassName: WidgetTest.widgetClassName,\n /** @deprecated */\n refreshUserData: WidgetTest.refreshUserData,\n onRefreshUserData: WidgetTest.onRefreshUserData,\n init: function (element: HTMLElement, localData?: Record<string, any>) {\n WidgetTest.initWidget<WidgetTest, WidgetTestOptions>(element, localData, (element, options) => new WidgetTest(element, options));\n },\n /** @deprecated */\n initWidget: function (element: HTMLElement, localData?: Record<string, any>) {\n WidgetTest.initWidgets<WidgetTest, WidgetTestOptions>((element, options) => new WidgetTest(element, options), [element], localData).then(() => {\n WidgetTest.getInstance<WidgetTest, WidgetTestOptions>(element)?.onStart();\n });\n },\n onStart: function (element: HTMLElement) {\n WidgetTest.getInstance<WidgetTest, WidgetTestOptions>(element)?.onStart();\n },\n onStop: function (element: HTMLElement) {\n WidgetTest.getInstance<WidgetTest, WidgetTestOptions>(element)?.onStop();\n },\n /**\n * click on quiz answer\n */\n select: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetTest.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetTest.getInstance<WidgetTest, WidgetTestOptions>(widgetElement);\n if (widget) {\n return widget.selectAnswer(element);\n }\n }\n return false;\n },\n slideTestIsDone: function (element: HTMLElement) {\n const widget = WidgetTest.getInstance<WidgetTest, WidgetTestOptions>(element);\n if (widget) {\n return widget.slideTestIsDone();\n }\n return true;\n },\n slideTestWithTimer: function (element: HTMLElement) {\n const widget = WidgetTest.getInstance<WidgetTest, WidgetTestOptions>(element);\n if (widget) {\n return widget.slideTestWithTimer();\n }\n return true;\n },\n };\n}\n","import { WidgetVoteOptions, WidgetVoteSharedData } from \"./vote.h\";\nimport { extend, forEach, getTagData, getTagDataAsNumber, getValueOrDefault, isArray, isNumber, isObject, slice } from \"@utils\";\nimport { WidgetBase, Widgets } from \"../base\";\n\nexport class WidgetVote extends WidgetBase<WidgetVoteOptions> {\n static DEFAULTS: WidgetVoteOptions = {\n slide: null,\n activateAfterCreate: false,\n create: false,\n localData: {},\n };\n\n public static widgetClassName = \"narrative-element-vote\";\n\n private question: HTMLElement = null!;\n private answers: Array<HTMLElement> = null!;\n private questionCount: number = null!;\n private selectedAnswer: number | undefined = undefined;\n\n private label: HTMLElement | null;\n private readonly variants: Array<HTMLElement>;\n private readonly variantsTexts: Array<string>;\n private selectedVariant: number | undefined;\n private voteAllocation: any;\n private readonly hideClientTotalResult: boolean;\n private readonly multipleChoice: boolean;\n\n /**\n * @throws Error\n * @param element\n * @param options\n */\n constructor(element: HTMLElement, options: Partial<WidgetVoteOptions>) {\n super(element, options);\n\n this.voteAllocation = getTagData(this.slide, \"voteAllocation\");\n this.label = this.element.querySelector(\".label-view .label\");\n this.variants = slice.call(this.element.querySelectorAll(\".variants-box .variant-view-group\"));\n this.variantsTexts = [];\n forEach(this.variants, (element, index) => {\n const variantView = element.querySelector(\".variant-view .label\");\n if (variantView) {\n this.variantsTexts.push(variantView.textContent ?? \"\");\n }\n });\n\n this.hideClientTotalResult = getValueOrDefault(Boolean(getTagDataAsNumber(this.element, \"hideClientTotalResult\")), false);\n this.multipleChoice = getValueOrDefault(Boolean(getTagDataAsNumber(this.element, \"multipleChoice\")), false);\n }\n\n private _initFromLocalData(): void {\n const value = this.localData[\"_v_g_\" + this.elementId + \"_sa\"];\n if (!this.multipleChoice) {\n let index = value;\n if (Array.isArray(value)) {\n index = value[0];\n }\n this.variants[index]?.classList.add(\"checked\");\n this._selectVariant(index, true);\n if (!this.hideClientTotalResult) {\n this.displayPercents([index], true);\n }\n this._fillWidget(true);\n }\n if (this.multipleChoice) {\n let values = [];\n if (Array.isArray(value)) {\n values = value;\n } else {\n values.push(value);\n }\n\n for (let i = 0; i < values.length; ++i) {\n const index = values[i];\n this.variants[index]?.classList.add(\"checked\");\n this._selectVariant(index, true);\n }\n if (!this.hideClientTotalResult) {\n this.displayPercents(values, true);\n }\n this._fillWidget(true);\n }\n }\n\n /**\n * Start or restart widget\n * @param localData\n */\n public onRefreshUserData(localData: Record<string, any>) {\n super.onRefreshUserData(localData);\n\n this.selectedVariant = undefined;\n\n if (this.localData) {\n if (this.localData[\"_v_g_\" + this.elementId + \"_sa\"] != null) {\n this._initFromLocalData();\n } else {\n this._clearSelectedVariants();\n this.element.classList.remove(\"done\");\n this.element.classList.remove(\"input-done\");\n this.element.classList.remove(\"filled\");\n }\n }\n\n this.firstOpenTime = new Date().getTime();\n }\n\n private _clearSelectedVariants(): void {\n this.variants.forEach((variant, index) => {\n variant.classList.remove(\"checked\");\n variant.classList.remove(\"selected\");\n variant.style.setProperty(\"--selected-variant-view-clip-area\", String(100));\n });\n }\n\n private _statEventVoteVariant(): void {\n try {\n let isValid = false;\n let selectedVariant: number = null!;\n if (!this.multipleChoice) {\n if (this.selectedVariant != null) {\n isValid = true;\n selectedVariant = this.selectedVariant;\n }\n }\n let selectedVariantsLabels: Array<string> = [];\n let selectedVariantsIdxs: Array<number> = [];\n if (this.multipleChoice) {\n selectedVariantsIdxs = this._getCheckedVariants();\n if (selectedVariantsIdxs.length > 0) {\n isValid = true;\n selectedVariant = selectedVariantsIdxs[0];\n selectedVariantsIdxs.forEach(idx => selectedVariantsLabels.push(this.variantsTexts[idx] ? this.variantsTexts[idx] : \"\"));\n }\n }\n\n if (isValid) {\n let labelText = this.label?.textContent ?? \"\";\n\n let variantText = this.variantsTexts[selectedVariant] ? this.variantsTexts[selectedVariant] : \"\";\n\n let duration = new Date().getTime() - this.firstOpenTime;\n\n // доп поля - для multiple choice\n // первые оставляем пустыми в этом случае\n\n this.sendStatisticEventToApp(\n \"w-vote-answer\",\n {\n ...this.statisticEventBaseFieldsShortForm,\n wi: this.elementId,\n wl: labelText,\n wa: selectedVariant,\n wv: variantText,\n d: duration,\n was: selectedVariantsIdxs,\n wvs: selectedVariantsLabels,\n },\n {\n ...this.statisticEventBaseFieldsFullForm,\n widget_id: this.elementId,\n widget_label: labelText,\n widget_answer: selectedVariant,\n widget_value: variantText,\n duration_ms: duration,\n widget_answers: selectedVariantsIdxs,\n widget_values: selectedVariantsLabels,\n }\n );\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n // user click on (un)checked (radio btn) variant\n private _checkVariant(index: number): void {\n if (this.variants[index]) {\n if (this.variants[index].classList.contains(\"checked\")) {\n this.variants[index].classList.remove(\"checked\");\n } else {\n this.variants[index].classList.add(\"checked\");\n }\n }\n }\n\n private _getCheckedVariants(): Array<number> {\n const map: Array<number> = [];\n this.variants.forEach((variant, index) => {\n if (variant.classList.contains(\"checked\")) {\n map.push(index);\n }\n });\n return map;\n }\n\n private _selectVariant(index: number, filled: boolean = false): void {\n if (this.variants[index]) {\n this.variants[index].classList.add(\"selected\");\n }\n\n this.selectedVariant = index;\n\n if (!this.multipleChoice) {\n this.localData[\"_v_g_\" + this.elementId + \"_sa\"] = index;\n }\n\n if (this.hideClientTotalResult) {\n const cb = () => {\n if (this.variants[index]) {\n this.variants[index].style.setProperty(\"--selected-variant-view-clip-area\", String(0));\n }\n };\n if (filled) {\n cb();\n } else {\n this.env.requestAnimationFrame(cb);\n }\n }\n }\n\n private _fillWidget(filled: boolean = false): void {\n this.element.classList.add(\"done\");\n if (filled) {\n this.element.classList.add(\"filled\");\n }\n\n if (!this.multipleChoice) {\n if (this.submitButtonView != null) {\n this._setInputDone();\n this._showSubmitBtn();\n }\n }\n if (this.multipleChoice) {\n this._removeInputDone();\n this._hideSubmitBtn();\n }\n\n this.startReadyPromise.then(() => {\n if (this.disableTimer) {\n this.startDisabledTimeline();\n }\n });\n }\n\n private _showSubmitBtn() {\n this.env.requestAnimationFrame(() => {\n if (this.submitButtonAnimatedView != null) {\n this.submitButtonAnimatedView.style.maxHeight = `${this.submitButtonViewHeight}px`;\n }\n });\n }\n\n private _hideSubmitBtn() {\n this.env.requestAnimationFrame(() => {\n if (this.submitButtonAnimatedView != null && this.submitButtonViewHeight != null) {\n this.submitButtonAnimatedView.style.maxHeight = \"0px\";\n }\n });\n }\n\n public selectVariant(variant: HTMLElement): boolean {\n if (!this.multipleChoice) {\n if (this.selectedVariant != null) {\n return true;\n }\n }\n if (this.multipleChoice) {\n if (this.isDone()) {\n return true;\n }\n }\n\n const selectedVariantIndex = this.variants.indexOf(variant);\n\n if (selectedVariantIndex !== -1) {\n this._checkVariant(selectedVariantIndex);\n\n if (this.multipleChoice) {\n if (this._getCheckedVariants().length > 0) {\n this._setInputDone();\n this._showSubmitBtn();\n } else {\n this._removeInputDone();\n this._hideSubmitBtn();\n }\n }\n if (!this.multipleChoice) {\n this._selectVariant(selectedVariantIndex);\n if (!this.hideClientTotalResult) {\n this.displayPercents([selectedVariantIndex]);\n }\n this._fillWidget();\n this._completeWidget();\n }\n }\n\n return false;\n }\n\n private _setInputDone() {\n if (this.submitButtonView != null) {\n this.element.classList.add(\"input-done\");\n }\n }\n\n private _removeInputDone() {\n // if (this.submitButtonView != null) {\n setTimeout(() => {\n this.element.classList.add(\"border-radius-transition-250\");\n this.env.requestAnimationFrame(() => {\n this.element.classList.remove(\"input-done\");\n setTimeout(() => this.element.classList.remove(\"border-radius-transition-250\"), 250);\n });\n }, 250);\n // }\n }\n\n private _completeWidget() {\n this.localData[\"_v_g_\" + this.elementId + \"_done_at\"] = Math.round(new Date().getTime() / 1000);\n\n // ответ на вопрос\n this.localData[\"_&ts_v_g_\" + this.elementId + \"_a_at\"] = Math.round(new Date().getTime() / 1000);\n\n if (this.widgetDone) {\n this.widgetDone.classList.add(\"active\", \"opacity-active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"active\");\n setTimeout(() => {\n this.widgetDone?.classList.remove(\"opacity-active\");\n }, 250);\n }, 2000);\n }\n\n this.setLocalData(this.localData, true);\n\n this._statEventVoteVariant();\n }\n\n private submitMultipleChoice() {\n const variants = this._getCheckedVariants();\n if (variants.length > 0) {\n this.localData[\"_v_g_\" + this.elementId + \"_sa\"] = variants;\n\n for (let i = 0; i < variants.length; ++i) {\n const index = variants[i];\n this._selectVariant(index);\n }\n if (!this.hideClientTotalResult) {\n this.displayPercents(variants);\n }\n this._fillWidget();\n this._completeWidget();\n } else {\n // todo - toast with error (select at least one variant)\n }\n }\n\n public click(): boolean {\n if (this.isDone()) {\n return true;\n }\n\n if (this.multipleChoice) {\n this.submitMultipleChoice();\n return false;\n } else {\n // for single mode - return true and sdk will proceed click as nextClick()\n return true;\n }\n }\n\n private displayPercents(selectedVariantsIndexes: Array<number>, filled: boolean = false): void {\n // voteAllocation[0] - variant total count allocation\n // voteAllocation[1]\n // ...\n // voteAllocation[7]\n let voteAllocation: WidgetVoteSharedData[string] = [];\n let voteAllocationTs: number | undefined = undefined;\n const sharedData = this.sdkApi.getWidgetsSharedData<Widgets.Vote>(this.cardId, Widgets.Vote);\n if (sharedData && sharedData[this.elementId] != null && (isObject(sharedData[this.elementId]) || isArray(sharedData[this.elementId]))) {\n voteAllocation = sharedData[this.elementId];\n if (isObject(sharedData[this.elementId])) {\n voteAllocation = slice.call(Object.values(sharedData[this.elementId])) as unknown as WidgetVoteSharedData[string];\n }\n voteAllocationTs = sharedData.ts;\n }\n\n const voteDoneAt = this.localData[\"_v_g_\" + this.elementId + \"_done_at\"];\n\n if (voteAllocationTs === undefined || voteDoneAt === undefined || voteDoneAt > voteAllocationTs) {\n forEach(this.variants, function (element, index) {\n const key = index as number;\n if (voteAllocation[key] === undefined || !isNumber(voteAllocation[key])) {\n voteAllocation[key] = 0;\n }\n if (selectedVariantsIndexes.includes(key)) {\n ++voteAllocation[key];\n }\n });\n }\n\n // calc percents\n let percents: Array<number> = [],\n total = 0;\n forEach(this.variants, (element, index) => {\n const key = index as number;\n if (voteAllocation[key] !== undefined) {\n percents[key] = isNumber(voteAllocation[key]) ? voteAllocation[key] : parseInt(String(voteAllocation[key]));\n if (!isNumber(percents[key]) || isNaN(percents[key])) {\n percents[key] = 0;\n }\n } else {\n percents[key] = 0;\n }\n total += percents[key];\n });\n for (let i = 0; i < percents.length; ++i) {\n if (total !== 0) {\n percents[i] = Math.round((percents[i] / total) * 100 * 10) / 10;\n if (percents[i] > 100) {\n percents[i] = 100;\n }\n // percents[i] += '%';\n } else {\n // percents[i] = '0%';\n }\n }\n\n const self = this;\n forEach(this.variants, (element, index) => {\n const key = index as number;\n const percentLabels = slice.call(element.querySelectorAll(\".percent-label\"));\n\n forEach(percentLabels, label => {\n if (percents[key] != null) {\n label.textContent = percents[key] + \"%\";\n }\n });\n element.classList.add(\"selected\");\n });\n\n const cb = function () {\n forEach(self.variants, function (element, index) {\n const key = index as number;\n if (percents[key] != null) {\n element.style.setProperty(\"--selected-variant-view-clip-area\", String(100 - percents[key]));\n }\n });\n };\n\n if (filled) {\n cb();\n } else {\n this.env.requestAnimationFrame(cb);\n }\n }\n\n public isDone(): boolean {\n return this.localData[\"_v_g_\" + this.elementId + \"_done_at\"] != null;\n }\n\n public slideVoteIsDone(): boolean {\n return this.localData[\"_v_g_\" + this.elementId + \"_sa\"] != null;\n }\n\n public static api = {\n widgetClassName: WidgetVote.widgetClassName,\n /** @deprecated */\n refreshUserData: WidgetVote.refreshUserData,\n onRefreshUserData: WidgetVote.onRefreshUserData,\n init: function (element: HTMLElement, localData?: Record<string, any>): void {\n WidgetVote.initWidget<WidgetVote, WidgetVoteOptions>(element, localData, (element, options) => new WidgetVote(element, options));\n },\n /** @deprecated\n *\n * fix for WidgetVote on every layer of multilayers story\n */\n fallbackInitOnMultiSlide: function (element: HTMLElement, localData?: Record<string, any>) {\n if (element.dataset.fallbackInitOnMultiSlide) {\n return;\n }\n const multiSlide = element.closest(\".narrative-multi-slide\");\n if (multiSlide != null) {\n const container = multiSlide.parentElement;\n const widgetElements = container?.querySelectorAll<HTMLElement>(`.${WidgetVote.widgetClassName}`);\n if (widgetElements != null) {\n for (let i = 0; i < widgetElements.length; ++i) {\n const widgetElement = widgetElements[i];\n const widget = WidgetVote.getInstance<WidgetVote, WidgetVoteOptions>(widgetElement);\n if (!widget) {\n WidgetVote.initWidgets<WidgetVote, WidgetVoteOptions>(\n (element, options) => new WidgetVote(element, options),\n [widgetElement],\n localData\n );\n }\n }\n }\n }\n\n element.dataset.fallbackInitOnMultiSlide = \"1\";\n },\n /** @deprecated */\n initWidget: function (element: HTMLElement, localData?: Record<string, any>) {\n WidgetVote.initWidgets<WidgetVote, WidgetVoteOptions>((element, options) => new WidgetVote(element, options), [element], localData)\n .then(localData => {\n WidgetVote.api.fallbackInitOnMultiSlide(element, localData);\n })\n .then(() => {\n WidgetVote.getInstance<WidgetVote, WidgetVoteOptions>(element)?.onStart();\n });\n },\n onStart: function (element: HTMLElement) {\n WidgetVote.getInstance<WidgetVote, WidgetVoteOptions>(element)?.onStart();\n },\n onStop: function (element: HTMLElement) {\n WidgetVote.getInstance<WidgetVote, WidgetVoteOptions>(element)?.onStop();\n },\n select: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetVote.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetVote.getInstance<WidgetVote, WidgetVoteOptions>(widgetElement);\n if (widget) {\n return widget.selectVariant(element);\n }\n }\n return false;\n },\n click: function (element: HTMLElement): boolean {\n const widgetElement = element.closest<HTMLElement>(`.${WidgetVote.widgetClassName}`);\n if (widgetElement) {\n const widget = WidgetVote.getInstance<WidgetVote, WidgetVoteOptions>(widgetElement);\n if (widget) {\n return widget.click();\n }\n }\n return true;\n },\n slideVoteIsDone: function (element: HTMLElement): boolean {\n const widget = WidgetVote.getInstance<WidgetVote, WidgetVoteOptions>(element);\n if (widget) {\n return widget.slideVoteIsDone();\n }\n return true;\n },\n };\n}\n","import { SDKInterface } from \"../../../sdk_api/es_module_sdk_api.h\";\nimport { WidgetBarcode } from \"../../../widgets/barcode\";\nimport { WidgetCopy } from \"../../../widgets/copy\";\nimport { WidgetDataInput } from \"../../../widgets/data_input\";\nimport { WidgetDateCountdown } from \"../../../widgets/date_countdown\";\nimport { WidgetMultiSlide } from \"../../../widgets/multi_slide\";\nimport { WidgetPoll } from \"../../../widgets/poll\";\nimport { WidgetPollLayers } from \"../../../widgets/poll_layers\";\nimport { WidgetProducts } from \"../../../widgets/products\";\nimport { WidgetQuest } from \"../../../widgets/quest\";\nimport { WidgetQuiz } from \"../../../widgets/quiz\";\nimport { WidgetQuizGrouped } from \"../../../widgets/quiz_grouped\";\nimport { WidgetRangeSlider } from \"../../../widgets/range_slider\";\nimport { WidgetRate } from \"../../../widgets/rate\";\nimport { WidgetShare } from \"../../../widgets/share\";\nimport { WidgetTest } from \"../../../widgets/test\";\nimport { WidgetVote } from \"../../../widgets/vote\";\nimport { ILayoutApi, SlideApiPeerDeps } from \"../layout_api.h\";\n\nexport class EsModuleLayoutApi implements ILayoutApi {\n constructor(private readonly slideApiPeerDeps: () => SlideApiPeerDeps) {}\n get widgetCopyApi(): typeof WidgetCopy.api | undefined {\n return WidgetCopy.api;\n }\n get widgetBarcodeApi(): typeof WidgetBarcode.api | undefined {\n return WidgetBarcode.api;\n }\n get widgetDataInputApi(): typeof WidgetDataInput.api | undefined {\n return WidgetDataInput.api;\n }\n get widgetDateCountdownApi(): typeof WidgetDateCountdown.api | undefined {\n return WidgetDateCountdown.api;\n }\n get widgetMultiSlideApi(): typeof WidgetMultiSlide.api | undefined {\n return WidgetMultiSlide.api;\n }\n get widgetPollApi(): typeof WidgetPoll.api | undefined {\n return WidgetPoll.api;\n }\n get widgetPollLayersApi(): typeof WidgetPollLayers.api | undefined {\n return WidgetPollLayers.api;\n }\n get widgetQuestApi(): typeof WidgetQuest.api | undefined {\n return WidgetQuest.api;\n }\n get widgetQuizApi(): typeof WidgetQuiz.api | undefined {\n return WidgetQuiz.api;\n }\n get widgetQuizGroupedApi(): typeof WidgetQuizGrouped.api | undefined {\n return WidgetQuizGrouped.api;\n }\n get widgetRangeSliderApi(): typeof WidgetRangeSlider.api | undefined {\n return WidgetRangeSlider.api;\n }\n get widgetRateApi(): typeof WidgetRate.api | undefined {\n return WidgetRate.api;\n }\n get widgetShareApi(): typeof WidgetShare.api | undefined {\n return WidgetShare.api;\n }\n get widgetTestApi(): typeof WidgetTest.api | undefined {\n return WidgetTest.api;\n }\n get widgetVoteApi(): typeof WidgetVote.api | undefined {\n return WidgetVote.api;\n }\n get widgetProductsApi(): typeof WidgetProducts.api | undefined {\n return WidgetProducts.api;\n }\n get VideoPlayer(): SlideApiPeerDeps[\"VODPlayer\"] | undefined {\n return this.slideApiPeerDeps().VODPlayer;\n }\n}\n","import { container } from \"@composition\";\nimport { slideApiPeerDeps } from \"../../../entry_points/es_module/es_module\";\nimport { EsModuleLayoutApi } from \"../adapters/es_module_layout_api\";\nimport { ILayoutApi } from \"../layout_api.h\";\n\ncontainer.registerSingleton<ILayoutApi>(() => new EsModuleLayoutApi(() => slideApiPeerDeps));\n"],"names":["isObject","Utils.waitForImageHtmlElementLoad","Utils.waitForVideoHtmlElementLoad","Utils.isObject","WidgetFactory.tryCreateFromHtmlElement","Utils.isFunction","BaseSlideApi","drawingSVG"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|