@developer_tribe/react-builder 0.1.31 → 1.1.0
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/DeviceMockFrame.d.ts +1 -17
- package/dist/RenderPage.d.ts +1 -9
- package/dist/build-components/Button/ButtonProps.generated.d.ts +2 -1
- package/dist/build-components/CarouselButtons/CarouselButtonsProps.generated.d.ts +2 -1
- package/dist/build-components/CarouselDots/CarouselDotsProps.generated.d.ts +2 -1
- package/dist/build-components/Image/ImageProps.generated.d.ts +2 -1
- package/dist/build-components/OnboardButton/OnboardButtonProps.generated.d.ts +8 -4
- package/dist/build-components/OnboardButtons/OnboardButtonsProps.generated.d.ts +6 -3
- package/dist/build-components/OnboardDot/OnboardDotProps.generated.d.ts +2 -1
- package/dist/build-components/OnboardFooter/OnboardFooterProps.generated.d.ts +10 -5
- package/dist/build-components/OnboardImage/OnboardImageProps.generated.d.ts +4 -1
- package/dist/build-components/OnboardItem/OnboardItemProps.generated.d.ts +4 -2
- package/dist/build-components/OnboardSubtitle/OnboardSubtitleProps.generated.d.ts +10 -5
- package/dist/build-components/OnboardTitle/OnboardTitleProps.generated.d.ts +10 -5
- package/dist/build-components/Text/TextProps.generated.d.ts +10 -5
- package/dist/build-components/View/ViewProps.generated.d.ts +6 -3
- package/dist/build-components/index.d.ts +1 -0
- package/dist/build-components/patterns.generated.d.ts +7 -2
- package/dist/components/AttributesEditorPanel.d.ts +9 -0
- package/dist/components/Breadcrumb.d.ts +13 -0
- package/dist/components/Builder.d.ts +9 -0
- package/dist/components/EditorHeader.d.ts +15 -0
- package/dist/index.cjs.js +7 -4
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +5 -4
- package/dist/index.esm.js +7 -4
- package/dist/index.esm.js.map +1 -0
- package/dist/pages/ProjectPage.d.ts +9 -0
- package/dist/pages/tabs/BuilderTab.d.ts +9 -0
- package/dist/pages/tabs/DebugTab.d.ts +7 -0
- package/dist/pages/tabs/PreviewTab.d.ts +3 -0
- package/dist/store.d.ts +8 -18
- package/dist/styles.css +1 -1
- package/dist/types/PreviewConfig.d.ts +6 -3
- package/dist/types/Project.d.ts +2 -2
- package/dist/utils/copyNode.d.ts +2 -0
- package/package.json +17 -9
- package/scripts/prebuild/utils/createBuildComponentsIndex.js +15 -1
- package/scripts/prebuild/utils/createGeneratedProps.js +64 -5
- package/src/DeviceMockFrame.tsx +20 -31
- package/src/RenderPage.tsx +3 -38
- package/src/assets/images/android.svg +43 -0
- package/src/assets/images/apple.svg +16 -0
- package/src/assets/images/background.jpg +0 -0
- package/src/assets/samples/carousel-sample.json +2 -3
- package/src/assets/samples/getSamples.ts +51 -8
- package/src/assets/samples/simple-1.json +1 -2
- package/src/assets/samples/simple-2.json +1 -2
- package/src/assets/samples/vpn-onboard-1.json +1 -2
- package/src/assets/samples/vpn-onboard-2.json +1 -2
- package/src/assets/samples/vpn-onboard-3.json +1 -2
- package/src/assets/samples/vpn-onboard-4.json +1 -2
- package/src/assets/samples/vpn-onboard-5.json +1024 -0
- package/src/assets/samples/vpn-onboard-6.json +708 -0
- package/src/build-components/Button/ButtonProps.generated.ts +14 -12
- package/src/build-components/CarouselButtons/CarouselButtonsProps.generated.ts +6 -1
- package/src/build-components/CarouselDots/CarouselDotsProps.generated.ts +9 -7
- package/src/build-components/Image/ImageProps.generated.ts +3 -1
- package/src/build-components/OnboardButton/OnboardButton.tsx +5 -4
- package/src/build-components/OnboardButton/OnboardButtonProps.generated.ts +14 -9
- package/src/build-components/OnboardButton/pattern.json +3 -2
- package/src/build-components/OnboardButtons/OnboardButtons.tsx +5 -7
- package/src/build-components/OnboardButtons/OnboardButtonsProps.generated.ts +10 -3
- package/src/build-components/OnboardDot/OnboardDotProps.generated.ts +9 -7
- package/src/build-components/OnboardFooter/OnboardFooter.tsx +3 -3
- package/src/build-components/OnboardFooter/OnboardFooterProps.generated.ts +33 -22
- package/src/build-components/OnboardImage/OnboardImage.tsx +24 -1
- package/src/build-components/OnboardImage/OnboardImageProps.generated.ts +5 -1
- package/src/build-components/OnboardImage/pattern.json +3 -5
- package/src/build-components/OnboardItem/OnboardItemProps.generated.ts +5 -2
- package/src/build-components/OnboardSubtitle/OnboardSubtitleProps.generated.ts +33 -22
- package/src/build-components/OnboardTitle/OnboardTitleProps.generated.ts +33 -22
- package/src/build-components/Text/Text.tsx +3 -3
- package/src/build-components/Text/TextProps.generated.ts +33 -22
- package/src/build-components/View/ViewProps.generated.ts +18 -9
- package/src/build-components/index.ts +22 -0
- package/src/build-components/patterns.generated.ts +7 -2
- package/src/components/AttributesEditorPanel.tsx +110 -0
- package/src/components/Breadcrumb.tsx +46 -0
- package/src/components/Builder.tsx +270 -0
- package/src/components/EditorHeader.tsx +184 -0
- package/src/index.ts +5 -4
- package/src/pages/ProjectPage.tsx +112 -0
- package/src/pages/tabs/BuilderTab.tsx +31 -0
- package/src/pages/tabs/DebugTab.tsx +21 -0
- package/src/pages/tabs/PreviewTab.tsx +192 -0
- package/src/size-matters/index.ts +5 -1
- package/src/store.ts +26 -38
- package/src/styles/_mixins.scss +21 -0
- package/src/styles/_variables.scss +27 -0
- package/src/styles/builder.scss +60 -0
- package/src/styles/components.scss +88 -0
- package/src/styles/editor.scss +174 -0
- package/src/styles/global.scss +200 -0
- package/src/styles/index.scss +7 -0
- package/src/styles/pages.scss +2 -0
- package/src/types/PreviewConfig.ts +14 -5
- package/src/types/Project.ts +2 -2
- package/src/utils/copyNode.ts +7 -0
- package/src/utils/extractTextStyle.ts +4 -2
- package/src/utils/getDevices.ts +1 -0
- package/src/utils/novaToJson.ts +5 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/utils/analyseNode.ts","../src/build-components/other.tsx","../src/build-components/useNode.ts","../src/build-components/Button/Button.tsx","../src/utils/isCarousel.ts","../src/build-components/Carousel/Carousel.tsx","../node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.js","../node_modules/embla-carousel/esm/embla-carousel.esm.js","../node_modules/embla-carousel-react/esm/embla-carousel-react.esm.js","../src/build-components/CarouselProvider/CarouselProvider.tsx","../src/build-components/CarouselButtons/CarouselButtons.tsx","../src/build-components/CarouselDots/CarouselDots.tsx","../src/build-components/CarouselItem/CarouselItem.tsx","../src/utils/extractImageStyle.ts","../src/build-components/Image/Image.tsx","../src/build-components/Onboard/Onboard.tsx","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js","../node_modules/use-sync-external-store/shim/index.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js","../node_modules/use-sync-external-store/shim/with-selector.js","../node_modules/zustand/esm/vanilla.mjs","../node_modules/zustand/esm/traditional.mjs","../node_modules/zustand/esm/vanilla/shallow.mjs","../src/types/PreviewConfig.ts","../src/utils/getDevices.ts","../node_modules/zustand/esm/middleware.mjs","../src/store.ts","../src/build-components/OnboardProvider/OnboardProvider.tsx","../src/build-components/OnboardButton/OnboardButton.tsx","../src/build-components/OnboardButtons/OnboardButtons.tsx","../src/build-components/OnboardDot/OnboardDot.tsx","../src/size-matters/index.ts","../src/utils/extractTextStyle.ts","../src/build-components/OnboardFooter/OnboardFooter.tsx","../node_modules/lottie-web/build/player/lottie.js","../node_modules/lottie-react/build/index.es.js","../src/build-components/OnboardImage/OnboardImage.tsx","../src/build-components/OnboardItem/OnboardItem.tsx","../src/build-components/Text/Text.tsx","../src/build-components/OnboardSubtitle/OnboardSubtitle.tsx","../src/build-components/OnboardTitle/OnboardTitle.tsx","../src/utils/extractViewStyle.ts","../src/build-components/View/View.tsx","../src/build-components/RenderNode.generated.tsx","../src/build-components/patterns.generated.ts","../src/build-components/index.ts","../src/utils/patterns.ts","../src/AttributesEditor.tsx","../src/utils/novaToJson.ts","../src/assets/samples/getSamples.ts","../src/DeviceMockFrame.tsx","../src/RenderPage.tsx","../src/utils/querySelector.ts","../src/components/EditorHeader.tsx","../src/components/AttributesEditorPanel.tsx","../src/components/Breadcrumb.tsx","../src/components/Builder.tsx","../src/pages/tabs/BuilderTab.tsx","../node_modules/object-property-assigner/build/index.esm.js","../node_modules/object-property-extractor/build/index.esm.js","../node_modules/json-edit-react/build/index.esm.js","../src/pages/tabs/PreviewTab.tsx","../src/pages/tabs/DebugTab.tsx","../src/pages/ProjectPage.tsx","../src/utils/copyNode.ts"],"sourcesContent":["import { Node, NodeData, NodeDefaultAttribute } from '../types/Node';\n\nexport function isNodeNullOrUndefined<T = NodeDefaultAttribute>(\n node: Node<T>,\n): boolean {\n return node === null || node === undefined;\n}\nexport function isNodeString<T = NodeDefaultAttribute>(node: Node<T>): boolean {\n return typeof node === 'string';\n}\nexport function isNodeArray<T = NodeDefaultAttribute>(node: Node<T>): boolean {\n return node instanceof Array;\n}\nexport function isEmptyObject<T = NodeDefaultAttribute>(\n node: Node<T>,\n): boolean {\n return Object.keys(node as Object).length === 0;\n}\n\nexport function analyseNode(node: Node<NodeDefaultAttribute>): {\n valid: boolean;\n message?: string;\n} {\n if (isNodeNullOrUndefined(node)) {\n return {\n valid: true,\n message: 'null or undefined is valid',\n };\n }\n\n if (isNodeString(node)) {\n return {\n valid: true,\n message: 'string is valid',\n };\n }\n\n if (isNodeArray(node)) {\n const nodeArray = node as unknown as Node[];\n for (const value of nodeArray) {\n const { valid, message } = analyseNode(value);\n if (!valid) {\n return {\n valid: false,\n message: message,\n };\n }\n }\n return {\n // array is valid\n valid: true,\n message: 'Array is valid',\n };\n }\n const recordData = node as NodeData;\n if (isEmptyObject(recordData)) {\n return {\n valid: true,\n message: 'empty object is valid',\n };\n } else {\n if (recordData.children) {\n const { valid, message } = analyseNode(recordData.children);\n if (!valid) {\n return {\n valid: false,\n message: message,\n };\n }\n }\n\n return {\n valid: true,\n message: 'everthing is valid',\n };\n }\n}\n","import React from 'react';\nimport type { Node } from '../types/Node';\n\nexport function other(type: string, node: Node): React.ReactNode {\n return null;\n}\n","import { NodeData, NodeDefaultAttribute } from '../types/Node';\nimport { getDefaultsForType } from '../utils/patterns';\n\nexport default function useNode<\n T extends NodeDefaultAttribute = NodeDefaultAttribute,\n>(node: NodeData<T>): NodeData<T> {\n const type = node?.type;\n const defaults = getDefaultsForType(type) as Partial<T> | undefined;\n if (!defaults) return node;\n const mergedAttributes: T = {\n ...(defaults as T),\n ...((node.attributes as T) ?? ({} as T)),\n };\n return { ...node, attributes: mergedAttributes };\n}\n","import React from 'react';\nimport type { ButtonComponentProps } from './ButtonProps.generated';\nimport useNode from '../useNode';\n\nfunction Button({ node }: ButtonComponentProps) {\n node = useNode(node);\n return String(node?.type ?? 'button');\n}\n\nexport default React.memo(Button);\n","import { Node, NodeData } from '../types/Node';\n\nexport const isCarouselProvider = (node: Node): node is NodeData => {\n if (!node || typeof node !== 'object' || Array.isArray(node)) return false;\n return 'type' in node && node.type === 'carouselProvider';\n};\n\nexport const isCarousel = (node: Node): node is NodeData => {\n if (!node || typeof node !== 'object' || Array.isArray(node)) return false;\n return 'type' in node && node.type === 'carousel';\n};\n\nexport const isCarouselItem = (node: Node): node is NodeData => {\n if (!node || typeof node !== 'object' || Array.isArray(node)) return false;\n return 'type' in node && node.type === 'carouselItem';\n};\n\nexport const isCarouselDots = (node: Node): node is NodeData => {\n if (!node || typeof node !== 'object' || Array.isArray(node)) return false;\n return 'type' in node && node.type === 'carouselDots';\n};\n\nexport const isCarouselButtons = (node: Node): node is NodeData => {\n if (!node || typeof node !== 'object' || Array.isArray(node)) return false;\n return 'type' in node && node.type === 'carouselButtons';\n};\n\nexport const isCarouselComponent = (node: Node): boolean => {\n return (\n isCarouselProvider(node) ||\n isCarousel(node) ||\n isCarouselItem(node) ||\n isCarouselDots(node) ||\n isCarouselButtons(node)\n );\n};\n","import React from 'react';\nimport type { CarouselComponentProps } from './CarouselProps.generated';\nimport RenderNode from '../RenderNode.generated';\nimport { isCarouselItem } from '../../utils/isCarousel';\nimport useNode from '../useNode';\n\nfunction Carousel({ node }: CarouselComponentProps) {\n node = useNode(node);\n // Ensure children are carouselItems\n const renderChildren = () => {\n if (Array.isArray(node.children)) {\n return node.children.map((item, index) => (\n <RenderNode key={index} node={item} />\n ));\n }\n return isCarouselItem(node.children) ? (\n <RenderNode node={node.children} />\n ) : null;\n };\n\n return <div className=\"embla__container\">{renderChildren()}</div>;\n}\n\nexport default React.memo(Carousel);\n","function isObject(subject) {\n return Object.prototype.toString.call(subject) === '[object Object]';\n}\nfunction isRecord(subject) {\n return isObject(subject) || Array.isArray(subject);\n}\nfunction canUseDOM() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}\nfunction areOptionsEqual(optionsA, optionsB) {\n const optionsAKeys = Object.keys(optionsA);\n const optionsBKeys = Object.keys(optionsB);\n if (optionsAKeys.length !== optionsBKeys.length) return false;\n const breakpointsA = JSON.stringify(Object.keys(optionsA.breakpoints || {}));\n const breakpointsB = JSON.stringify(Object.keys(optionsB.breakpoints || {}));\n if (breakpointsA !== breakpointsB) return false;\n return optionsAKeys.every(key => {\n const valueA = optionsA[key];\n const valueB = optionsB[key];\n if (typeof valueA === 'function') return `${valueA}` === `${valueB}`;\n if (!isRecord(valueA) || !isRecord(valueB)) return valueA === valueB;\n return areOptionsEqual(valueA, valueB);\n });\n}\nfunction sortAndMapPluginToOptions(plugins) {\n return plugins.concat().sort((a, b) => a.name > b.name ? 1 : -1).map(plugin => plugin.options);\n}\nfunction arePluginsEqual(pluginsA, pluginsB) {\n if (pluginsA.length !== pluginsB.length) return false;\n const optionsA = sortAndMapPluginToOptions(pluginsA);\n const optionsB = sortAndMapPluginToOptions(pluginsB);\n return optionsA.every((optionA, index) => {\n const optionB = optionsB[index];\n return areOptionsEqual(optionA, optionB);\n });\n}\n\nexport { areOptionsEqual, arePluginsEqual, canUseDOM, sortAndMapPluginToOptions };\n//# sourceMappingURL=embla-carousel-reactive-utils.esm.js.map\n","function isNumber(subject) {\n return typeof subject === 'number';\n}\nfunction isString(subject) {\n return typeof subject === 'string';\n}\nfunction isBoolean(subject) {\n return typeof subject === 'boolean';\n}\nfunction isObject(subject) {\n return Object.prototype.toString.call(subject) === '[object Object]';\n}\nfunction mathAbs(n) {\n return Math.abs(n);\n}\nfunction mathSign(n) {\n return Math.sign(n);\n}\nfunction deltaAbs(valueB, valueA) {\n return mathAbs(valueB - valueA);\n}\nfunction factorAbs(valueB, valueA) {\n if (valueB === 0 || valueA === 0) return 0;\n if (mathAbs(valueB) <= mathAbs(valueA)) return 0;\n const diff = deltaAbs(mathAbs(valueB), mathAbs(valueA));\n return mathAbs(diff / valueB);\n}\nfunction roundToTwoDecimals(num) {\n return Math.round(num * 100) / 100;\n}\nfunction arrayKeys(array) {\n return objectKeys(array).map(Number);\n}\nfunction arrayLast(array) {\n return array[arrayLastIndex(array)];\n}\nfunction arrayLastIndex(array) {\n return Math.max(0, array.length - 1);\n}\nfunction arrayIsLastIndex(array, index) {\n return index === arrayLastIndex(array);\n}\nfunction arrayFromNumber(n, startAt = 0) {\n return Array.from(Array(n), (_, i) => startAt + i);\n}\nfunction objectKeys(object) {\n return Object.keys(object);\n}\nfunction objectsMergeDeep(objectA, objectB) {\n return [objectA, objectB].reduce((mergedObjects, currentObject) => {\n objectKeys(currentObject).forEach(key => {\n const valueA = mergedObjects[key];\n const valueB = currentObject[key];\n const areObjects = isObject(valueA) && isObject(valueB);\n mergedObjects[key] = areObjects ? objectsMergeDeep(valueA, valueB) : valueB;\n });\n return mergedObjects;\n }, {});\n}\nfunction isMouseEvent(evt, ownerWindow) {\n return typeof ownerWindow.MouseEvent !== 'undefined' && evt instanceof ownerWindow.MouseEvent;\n}\n\nfunction Alignment(align, viewSize) {\n const predefined = {\n start,\n center,\n end\n };\n function start() {\n return 0;\n }\n function center(n) {\n return end(n) / 2;\n }\n function end(n) {\n return viewSize - n;\n }\n function measure(n, index) {\n if (isString(align)) return predefined[align](n);\n return align(viewSize, n, index);\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction EventStore() {\n let listeners = [];\n function add(node, type, handler, options = {\n passive: true\n }) {\n let removeListener;\n if ('addEventListener' in node) {\n node.addEventListener(type, handler, options);\n removeListener = () => node.removeEventListener(type, handler, options);\n } else {\n const legacyMediaQueryList = node;\n legacyMediaQueryList.addListener(handler);\n removeListener = () => legacyMediaQueryList.removeListener(handler);\n }\n listeners.push(removeListener);\n return self;\n }\n function clear() {\n listeners = listeners.filter(remove => remove());\n }\n const self = {\n add,\n clear\n };\n return self;\n}\n\nfunction Animations(ownerDocument, ownerWindow, update, render) {\n const documentVisibleHandler = EventStore();\n const fixedTimeStep = 1000 / 60;\n let lastTimeStamp = null;\n let accumulatedTime = 0;\n let animationId = 0;\n function init() {\n documentVisibleHandler.add(ownerDocument, 'visibilitychange', () => {\n if (ownerDocument.hidden) reset();\n });\n }\n function destroy() {\n stop();\n documentVisibleHandler.clear();\n }\n function animate(timeStamp) {\n if (!animationId) return;\n if (!lastTimeStamp) {\n lastTimeStamp = timeStamp;\n update();\n update();\n }\n const timeElapsed = timeStamp - lastTimeStamp;\n lastTimeStamp = timeStamp;\n accumulatedTime += timeElapsed;\n while (accumulatedTime >= fixedTimeStep) {\n update();\n accumulatedTime -= fixedTimeStep;\n }\n const alpha = accumulatedTime / fixedTimeStep;\n render(alpha);\n if (animationId) {\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n }\n function start() {\n if (animationId) return;\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n function stop() {\n ownerWindow.cancelAnimationFrame(animationId);\n lastTimeStamp = null;\n accumulatedTime = 0;\n animationId = 0;\n }\n function reset() {\n lastTimeStamp = null;\n accumulatedTime = 0;\n }\n const self = {\n init,\n destroy,\n start,\n stop,\n update,\n render\n };\n return self;\n}\n\nfunction Axis(axis, contentDirection) {\n const isRightToLeft = contentDirection === 'rtl';\n const isVertical = axis === 'y';\n const scroll = isVertical ? 'y' : 'x';\n const cross = isVertical ? 'x' : 'y';\n const sign = !isVertical && isRightToLeft ? -1 : 1;\n const startEdge = getStartEdge();\n const endEdge = getEndEdge();\n function measureSize(nodeRect) {\n const {\n height,\n width\n } = nodeRect;\n return isVertical ? height : width;\n }\n function getStartEdge() {\n if (isVertical) return 'top';\n return isRightToLeft ? 'right' : 'left';\n }\n function getEndEdge() {\n if (isVertical) return 'bottom';\n return isRightToLeft ? 'left' : 'right';\n }\n function direction(n) {\n return n * sign;\n }\n const self = {\n scroll,\n cross,\n startEdge,\n endEdge,\n measureSize,\n direction\n };\n return self;\n}\n\nfunction Limit(min = 0, max = 0) {\n const length = mathAbs(min - max);\n function reachedMin(n) {\n return n < min;\n }\n function reachedMax(n) {\n return n > max;\n }\n function reachedAny(n) {\n return reachedMin(n) || reachedMax(n);\n }\n function constrain(n) {\n if (!reachedAny(n)) return n;\n return reachedMin(n) ? min : max;\n }\n function removeOffset(n) {\n if (!length) return n;\n return n - length * Math.ceil((n - max) / length);\n }\n const self = {\n length,\n max,\n min,\n constrain,\n reachedAny,\n reachedMax,\n reachedMin,\n removeOffset\n };\n return self;\n}\n\nfunction Counter(max, start, loop) {\n const {\n constrain\n } = Limit(0, max);\n const loopEnd = max + 1;\n let counter = withinLimit(start);\n function withinLimit(n) {\n return !loop ? constrain(n) : mathAbs((loopEnd + n) % loopEnd);\n }\n function get() {\n return counter;\n }\n function set(n) {\n counter = withinLimit(n);\n return self;\n }\n function add(n) {\n return clone().set(get() + n);\n }\n function clone() {\n return Counter(max, get(), loop);\n }\n const self = {\n get,\n set,\n add,\n clone\n };\n return self;\n}\n\nfunction DragHandler(axis, rootNode, ownerDocument, ownerWindow, target, dragTracker, location, animation, scrollTo, scrollBody, scrollTarget, index, eventHandler, percentOfView, dragFree, dragThreshold, skipSnaps, baseFriction, watchDrag) {\n const {\n cross: crossAxis,\n direction\n } = axis;\n const focusNodes = ['INPUT', 'SELECT', 'TEXTAREA'];\n const nonPassiveEvent = {\n passive: false\n };\n const initEvents = EventStore();\n const dragEvents = EventStore();\n const goToNextThreshold = Limit(50, 225).constrain(percentOfView.measure(20));\n const snapForceBoost = {\n mouse: 300,\n touch: 400\n };\n const freeForceBoost = {\n mouse: 500,\n touch: 600\n };\n const baseSpeed = dragFree ? 43 : 25;\n let isMoving = false;\n let startScroll = 0;\n let startCross = 0;\n let pointerIsDown = false;\n let preventScroll = false;\n let preventClick = false;\n let isMouse = false;\n function init(emblaApi) {\n if (!watchDrag) return;\n function downIfAllowed(evt) {\n if (isBoolean(watchDrag) || watchDrag(emblaApi, evt)) down(evt);\n }\n const node = rootNode;\n initEvents.add(node, 'dragstart', evt => evt.preventDefault(), nonPassiveEvent).add(node, 'touchmove', () => undefined, nonPassiveEvent).add(node, 'touchend', () => undefined).add(node, 'touchstart', downIfAllowed).add(node, 'mousedown', downIfAllowed).add(node, 'touchcancel', up).add(node, 'contextmenu', up).add(node, 'click', click, true);\n }\n function destroy() {\n initEvents.clear();\n dragEvents.clear();\n }\n function addDragEvents() {\n const node = isMouse ? ownerDocument : rootNode;\n dragEvents.add(node, 'touchmove', move, nonPassiveEvent).add(node, 'touchend', up).add(node, 'mousemove', move, nonPassiveEvent).add(node, 'mouseup', up);\n }\n function isFocusNode(node) {\n const nodeName = node.nodeName || '';\n return focusNodes.includes(nodeName);\n }\n function forceBoost() {\n const boost = dragFree ? freeForceBoost : snapForceBoost;\n const type = isMouse ? 'mouse' : 'touch';\n return boost[type];\n }\n function allowedForce(force, targetChanged) {\n const next = index.add(mathSign(force) * -1);\n const baseForce = scrollTarget.byDistance(force, !dragFree).distance;\n if (dragFree || mathAbs(force) < goToNextThreshold) return baseForce;\n if (skipSnaps && targetChanged) return baseForce * 0.5;\n return scrollTarget.byIndex(next.get(), 0).distance;\n }\n function down(evt) {\n const isMouseEvt = isMouseEvent(evt, ownerWindow);\n isMouse = isMouseEvt;\n preventClick = dragFree && isMouseEvt && !evt.buttons && isMoving;\n isMoving = deltaAbs(target.get(), location.get()) >= 2;\n if (isMouseEvt && evt.button !== 0) return;\n if (isFocusNode(evt.target)) return;\n pointerIsDown = true;\n dragTracker.pointerDown(evt);\n scrollBody.useFriction(0).useDuration(0);\n target.set(location);\n addDragEvents();\n startScroll = dragTracker.readPoint(evt);\n startCross = dragTracker.readPoint(evt, crossAxis);\n eventHandler.emit('pointerDown');\n }\n function move(evt) {\n const isTouchEvt = !isMouseEvent(evt, ownerWindow);\n if (isTouchEvt && evt.touches.length >= 2) return up(evt);\n const lastScroll = dragTracker.readPoint(evt);\n const lastCross = dragTracker.readPoint(evt, crossAxis);\n const diffScroll = deltaAbs(lastScroll, startScroll);\n const diffCross = deltaAbs(lastCross, startCross);\n if (!preventScroll && !isMouse) {\n if (!evt.cancelable) return up(evt);\n preventScroll = diffScroll > diffCross;\n if (!preventScroll) return up(evt);\n }\n const diff = dragTracker.pointerMove(evt);\n if (diffScroll > dragThreshold) preventClick = true;\n scrollBody.useFriction(0.3).useDuration(0.75);\n animation.start();\n target.add(direction(diff));\n evt.preventDefault();\n }\n function up(evt) {\n const currentLocation = scrollTarget.byDistance(0, false);\n const targetChanged = currentLocation.index !== index.get();\n const rawForce = dragTracker.pointerUp(evt) * forceBoost();\n const force = allowedForce(direction(rawForce), targetChanged);\n const forceFactor = factorAbs(rawForce, force);\n const speed = baseSpeed - 10 * forceFactor;\n const friction = baseFriction + forceFactor / 50;\n preventScroll = false;\n pointerIsDown = false;\n dragEvents.clear();\n scrollBody.useDuration(speed).useFriction(friction);\n scrollTo.distance(force, !dragFree);\n isMouse = false;\n eventHandler.emit('pointerUp');\n }\n function click(evt) {\n if (preventClick) {\n evt.stopPropagation();\n evt.preventDefault();\n preventClick = false;\n }\n }\n function pointerDown() {\n return pointerIsDown;\n }\n const self = {\n init,\n destroy,\n pointerDown\n };\n return self;\n}\n\nfunction DragTracker(axis, ownerWindow) {\n const logInterval = 170;\n let startEvent;\n let lastEvent;\n function readTime(evt) {\n return evt.timeStamp;\n }\n function readPoint(evt, evtAxis) {\n const property = evtAxis || axis.scroll;\n const coord = `client${property === 'x' ? 'X' : 'Y'}`;\n return (isMouseEvent(evt, ownerWindow) ? evt : evt.touches[0])[coord];\n }\n function pointerDown(evt) {\n startEvent = evt;\n lastEvent = evt;\n return readPoint(evt);\n }\n function pointerMove(evt) {\n const diff = readPoint(evt) - readPoint(lastEvent);\n const expired = readTime(evt) - readTime(startEvent) > logInterval;\n lastEvent = evt;\n if (expired) startEvent = evt;\n return diff;\n }\n function pointerUp(evt) {\n if (!startEvent || !lastEvent) return 0;\n const diffDrag = readPoint(lastEvent) - readPoint(startEvent);\n const diffTime = readTime(evt) - readTime(startEvent);\n const expired = readTime(evt) - readTime(lastEvent) > logInterval;\n const force = diffDrag / diffTime;\n const isFlick = diffTime && !expired && mathAbs(force) > 0.1;\n return isFlick ? force : 0;\n }\n const self = {\n pointerDown,\n pointerMove,\n pointerUp,\n readPoint\n };\n return self;\n}\n\nfunction NodeRects() {\n function measure(node) {\n const {\n offsetTop,\n offsetLeft,\n offsetWidth,\n offsetHeight\n } = node;\n const offset = {\n top: offsetTop,\n right: offsetLeft + offsetWidth,\n bottom: offsetTop + offsetHeight,\n left: offsetLeft,\n width: offsetWidth,\n height: offsetHeight\n };\n return offset;\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction PercentOfView(viewSize) {\n function measure(n) {\n return viewSize * (n / 100);\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction ResizeHandler(container, eventHandler, ownerWindow, slides, axis, watchResize, nodeRects) {\n const observeNodes = [container].concat(slides);\n let resizeObserver;\n let containerSize;\n let slideSizes = [];\n let destroyed = false;\n function readSize(node) {\n return axis.measureSize(nodeRects.measure(node));\n }\n function init(emblaApi) {\n if (!watchResize) return;\n containerSize = readSize(container);\n slideSizes = slides.map(readSize);\n function defaultCallback(entries) {\n for (const entry of entries) {\n if (destroyed) return;\n const isContainer = entry.target === container;\n const slideIndex = slides.indexOf(entry.target);\n const lastSize = isContainer ? containerSize : slideSizes[slideIndex];\n const newSize = readSize(isContainer ? container : slides[slideIndex]);\n const diffSize = mathAbs(newSize - lastSize);\n if (diffSize >= 0.5) {\n emblaApi.reInit();\n eventHandler.emit('resize');\n break;\n }\n }\n }\n resizeObserver = new ResizeObserver(entries => {\n if (isBoolean(watchResize) || watchResize(emblaApi, entries)) {\n defaultCallback(entries);\n }\n });\n ownerWindow.requestAnimationFrame(() => {\n observeNodes.forEach(node => resizeObserver.observe(node));\n });\n }\n function destroy() {\n destroyed = true;\n if (resizeObserver) resizeObserver.disconnect();\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction ScrollBody(location, offsetLocation, previousLocation, target, baseDuration, baseFriction) {\n let scrollVelocity = 0;\n let scrollDirection = 0;\n let scrollDuration = baseDuration;\n let scrollFriction = baseFriction;\n let rawLocation = location.get();\n let rawLocationPrevious = 0;\n function seek() {\n const displacement = target.get() - location.get();\n const isInstant = !scrollDuration;\n let scrollDistance = 0;\n if (isInstant) {\n scrollVelocity = 0;\n previousLocation.set(target);\n location.set(target);\n scrollDistance = displacement;\n } else {\n previousLocation.set(location);\n scrollVelocity += displacement / scrollDuration;\n scrollVelocity *= scrollFriction;\n rawLocation += scrollVelocity;\n location.add(scrollVelocity);\n scrollDistance = rawLocation - rawLocationPrevious;\n }\n scrollDirection = mathSign(scrollDistance);\n rawLocationPrevious = rawLocation;\n return self;\n }\n function settled() {\n const diff = target.get() - offsetLocation.get();\n return mathAbs(diff) < 0.001;\n }\n function duration() {\n return scrollDuration;\n }\n function direction() {\n return scrollDirection;\n }\n function velocity() {\n return scrollVelocity;\n }\n function useBaseDuration() {\n return useDuration(baseDuration);\n }\n function useBaseFriction() {\n return useFriction(baseFriction);\n }\n function useDuration(n) {\n scrollDuration = n;\n return self;\n }\n function useFriction(n) {\n scrollFriction = n;\n return self;\n }\n const self = {\n direction,\n duration,\n velocity,\n seek,\n settled,\n useBaseFriction,\n useBaseDuration,\n useFriction,\n useDuration\n };\n return self;\n}\n\nfunction ScrollBounds(limit, location, target, scrollBody, percentOfView) {\n const pullBackThreshold = percentOfView.measure(10);\n const edgeOffsetTolerance = percentOfView.measure(50);\n const frictionLimit = Limit(0.1, 0.99);\n let disabled = false;\n function shouldConstrain() {\n if (disabled) return false;\n if (!limit.reachedAny(target.get())) return false;\n if (!limit.reachedAny(location.get())) return false;\n return true;\n }\n function constrain(pointerDown) {\n if (!shouldConstrain()) return;\n const edge = limit.reachedMin(location.get()) ? 'min' : 'max';\n const diffToEdge = mathAbs(limit[edge] - location.get());\n const diffToTarget = target.get() - location.get();\n const friction = frictionLimit.constrain(diffToEdge / edgeOffsetTolerance);\n target.subtract(diffToTarget * friction);\n if (!pointerDown && mathAbs(diffToTarget) < pullBackThreshold) {\n target.set(limit.constrain(target.get()));\n scrollBody.useDuration(25).useBaseFriction();\n }\n }\n function toggleActive(active) {\n disabled = !active;\n }\n const self = {\n shouldConstrain,\n constrain,\n toggleActive\n };\n return self;\n}\n\nfunction ScrollContain(viewSize, contentSize, snapsAligned, containScroll, pixelTolerance) {\n const scrollBounds = Limit(-contentSize + viewSize, 0);\n const snapsBounded = measureBounded();\n const scrollContainLimit = findScrollContainLimit();\n const snapsContained = measureContained();\n function usePixelTolerance(bound, snap) {\n return deltaAbs(bound, snap) <= 1;\n }\n function findScrollContainLimit() {\n const startSnap = snapsBounded[0];\n const endSnap = arrayLast(snapsBounded);\n const min = snapsBounded.lastIndexOf(startSnap);\n const max = snapsBounded.indexOf(endSnap) + 1;\n return Limit(min, max);\n }\n function measureBounded() {\n return snapsAligned.map((snapAligned, index) => {\n const {\n min,\n max\n } = scrollBounds;\n const snap = scrollBounds.constrain(snapAligned);\n const isFirst = !index;\n const isLast = arrayIsLastIndex(snapsAligned, index);\n if (isFirst) return max;\n if (isLast) return min;\n if (usePixelTolerance(min, snap)) return min;\n if (usePixelTolerance(max, snap)) return max;\n return snap;\n }).map(scrollBound => parseFloat(scrollBound.toFixed(3)));\n }\n function measureContained() {\n if (contentSize <= viewSize + pixelTolerance) return [scrollBounds.max];\n if (containScroll === 'keepSnaps') return snapsBounded;\n const {\n min,\n max\n } = scrollContainLimit;\n return snapsBounded.slice(min, max);\n }\n const self = {\n snapsContained,\n scrollContainLimit\n };\n return self;\n}\n\nfunction ScrollLimit(contentSize, scrollSnaps, loop) {\n const max = scrollSnaps[0];\n const min = loop ? max - contentSize : arrayLast(scrollSnaps);\n const limit = Limit(min, max);\n const self = {\n limit\n };\n return self;\n}\n\nfunction ScrollLooper(contentSize, limit, location, vectors) {\n const jointSafety = 0.1;\n const min = limit.min + jointSafety;\n const max = limit.max + jointSafety;\n const {\n reachedMin,\n reachedMax\n } = Limit(min, max);\n function shouldLoop(direction) {\n if (direction === 1) return reachedMax(location.get());\n if (direction === -1) return reachedMin(location.get());\n return false;\n }\n function loop(direction) {\n if (!shouldLoop(direction)) return;\n const loopDistance = contentSize * (direction * -1);\n vectors.forEach(v => v.add(loopDistance));\n }\n const self = {\n loop\n };\n return self;\n}\n\nfunction ScrollProgress(limit) {\n const {\n max,\n length\n } = limit;\n function get(n) {\n const currentLocation = n - max;\n return length ? currentLocation / -length : 0;\n }\n const self = {\n get\n };\n return self;\n}\n\nfunction ScrollSnaps(axis, alignment, containerRect, slideRects, slidesToScroll) {\n const {\n startEdge,\n endEdge\n } = axis;\n const {\n groupSlides\n } = slidesToScroll;\n const alignments = measureSizes().map(alignment.measure);\n const snaps = measureUnaligned();\n const snapsAligned = measureAligned();\n function measureSizes() {\n return groupSlides(slideRects).map(rects => arrayLast(rects)[endEdge] - rects[0][startEdge]).map(mathAbs);\n }\n function measureUnaligned() {\n return slideRects.map(rect => containerRect[startEdge] - rect[startEdge]).map(snap => -mathAbs(snap));\n }\n function measureAligned() {\n return groupSlides(snaps).map(g => g[0]).map((snap, index) => snap + alignments[index]);\n }\n const self = {\n snaps,\n snapsAligned\n };\n return self;\n}\n\nfunction SlideRegistry(containSnaps, containScroll, scrollSnaps, scrollContainLimit, slidesToScroll, slideIndexes) {\n const {\n groupSlides\n } = slidesToScroll;\n const {\n min,\n max\n } = scrollContainLimit;\n const slideRegistry = createSlideRegistry();\n function createSlideRegistry() {\n const groupedSlideIndexes = groupSlides(slideIndexes);\n const doNotContain = !containSnaps || containScroll === 'keepSnaps';\n if (scrollSnaps.length === 1) return [slideIndexes];\n if (doNotContain) return groupedSlideIndexes;\n return groupedSlideIndexes.slice(min, max).map((group, index, groups) => {\n const isFirst = !index;\n const isLast = arrayIsLastIndex(groups, index);\n if (isFirst) {\n const range = arrayLast(groups[0]) + 1;\n return arrayFromNumber(range);\n }\n if (isLast) {\n const range = arrayLastIndex(slideIndexes) - arrayLast(groups)[0] + 1;\n return arrayFromNumber(range, arrayLast(groups)[0]);\n }\n return group;\n });\n }\n const self = {\n slideRegistry\n };\n return self;\n}\n\nfunction ScrollTarget(loop, scrollSnaps, contentSize, limit, targetVector) {\n const {\n reachedAny,\n removeOffset,\n constrain\n } = limit;\n function minDistance(distances) {\n return distances.concat().sort((a, b) => mathAbs(a) - mathAbs(b))[0];\n }\n function findTargetSnap(target) {\n const distance = loop ? removeOffset(target) : constrain(target);\n const ascDiffsToSnaps = scrollSnaps.map((snap, index) => ({\n diff: shortcut(snap - distance, 0),\n index\n })).sort((d1, d2) => mathAbs(d1.diff) - mathAbs(d2.diff));\n const {\n index\n } = ascDiffsToSnaps[0];\n return {\n index,\n distance\n };\n }\n function shortcut(target, direction) {\n const targets = [target, target + contentSize, target - contentSize];\n if (!loop) return target;\n if (!direction) return minDistance(targets);\n const matchingTargets = targets.filter(t => mathSign(t) === direction);\n if (matchingTargets.length) return minDistance(matchingTargets);\n return arrayLast(targets) - contentSize;\n }\n function byIndex(index, direction) {\n const diffToSnap = scrollSnaps[index] - targetVector.get();\n const distance = shortcut(diffToSnap, direction);\n return {\n index,\n distance\n };\n }\n function byDistance(distance, snap) {\n const target = targetVector.get() + distance;\n const {\n index,\n distance: targetSnapDistance\n } = findTargetSnap(target);\n const reachedBound = !loop && reachedAny(target);\n if (!snap || reachedBound) return {\n index,\n distance\n };\n const diffToSnap = scrollSnaps[index] - targetSnapDistance;\n const snapDistance = distance + shortcut(diffToSnap, 0);\n return {\n index,\n distance: snapDistance\n };\n }\n const self = {\n byDistance,\n byIndex,\n shortcut\n };\n return self;\n}\n\nfunction ScrollTo(animation, indexCurrent, indexPrevious, scrollBody, scrollTarget, targetVector, eventHandler) {\n function scrollTo(target) {\n const distanceDiff = target.distance;\n const indexDiff = target.index !== indexCurrent.get();\n targetVector.add(distanceDiff);\n if (distanceDiff) {\n if (scrollBody.duration()) {\n animation.start();\n } else {\n animation.update();\n animation.render(1);\n animation.update();\n }\n }\n if (indexDiff) {\n indexPrevious.set(indexCurrent.get());\n indexCurrent.set(target.index);\n eventHandler.emit('select');\n }\n }\n function distance(n, snap) {\n const target = scrollTarget.byDistance(n, snap);\n scrollTo(target);\n }\n function index(n, direction) {\n const targetIndex = indexCurrent.clone().set(n);\n const target = scrollTarget.byIndex(targetIndex.get(), direction);\n scrollTo(target);\n }\n const self = {\n distance,\n index\n };\n return self;\n}\n\nfunction SlideFocus(root, slides, slideRegistry, scrollTo, scrollBody, eventStore, eventHandler, watchFocus) {\n const focusListenerOptions = {\n passive: true,\n capture: true\n };\n let lastTabPressTime = 0;\n function init(emblaApi) {\n if (!watchFocus) return;\n function defaultCallback(index) {\n const nowTime = new Date().getTime();\n const diffTime = nowTime - lastTabPressTime;\n if (diffTime > 10) return;\n eventHandler.emit('slideFocusStart');\n root.scrollLeft = 0;\n const group = slideRegistry.findIndex(group => group.includes(index));\n if (!isNumber(group)) return;\n scrollBody.useDuration(0);\n scrollTo.index(group, 0);\n eventHandler.emit('slideFocus');\n }\n eventStore.add(document, 'keydown', registerTabPress, false);\n slides.forEach((slide, slideIndex) => {\n eventStore.add(slide, 'focus', evt => {\n if (isBoolean(watchFocus) || watchFocus(emblaApi, evt)) {\n defaultCallback(slideIndex);\n }\n }, focusListenerOptions);\n });\n }\n function registerTabPress(event) {\n if (event.code === 'Tab') lastTabPressTime = new Date().getTime();\n }\n const self = {\n init\n };\n return self;\n}\n\nfunction Vector1D(initialValue) {\n let value = initialValue;\n function get() {\n return value;\n }\n function set(n) {\n value = normalizeInput(n);\n }\n function add(n) {\n value += normalizeInput(n);\n }\n function subtract(n) {\n value -= normalizeInput(n);\n }\n function normalizeInput(n) {\n return isNumber(n) ? n : n.get();\n }\n const self = {\n get,\n set,\n add,\n subtract\n };\n return self;\n}\n\nfunction Translate(axis, container) {\n const translate = axis.scroll === 'x' ? x : y;\n const containerStyle = container.style;\n let previousTarget = null;\n let disabled = false;\n function x(n) {\n return `translate3d(${n}px,0px,0px)`;\n }\n function y(n) {\n return `translate3d(0px,${n}px,0px)`;\n }\n function to(target) {\n if (disabled) return;\n const newTarget = roundToTwoDecimals(axis.direction(target));\n if (newTarget === previousTarget) return;\n containerStyle.transform = translate(newTarget);\n previousTarget = newTarget;\n }\n function toggleActive(active) {\n disabled = !active;\n }\n function clear() {\n if (disabled) return;\n containerStyle.transform = '';\n if (!container.getAttribute('style')) container.removeAttribute('style');\n }\n const self = {\n clear,\n to,\n toggleActive\n };\n return self;\n}\n\nfunction SlideLooper(axis, viewSize, contentSize, slideSizes, slideSizesWithGaps, snaps, scrollSnaps, location, slides) {\n const roundingSafety = 0.5;\n const ascItems = arrayKeys(slideSizesWithGaps);\n const descItems = arrayKeys(slideSizesWithGaps).reverse();\n const loopPoints = startPoints().concat(endPoints());\n function removeSlideSizes(indexes, from) {\n return indexes.reduce((a, i) => {\n return a - slideSizesWithGaps[i];\n }, from);\n }\n function slidesInGap(indexes, gap) {\n return indexes.reduce((a, i) => {\n const remainingGap = removeSlideSizes(a, gap);\n return remainingGap > 0 ? a.concat([i]) : a;\n }, []);\n }\n function findSlideBounds(offset) {\n return snaps.map((snap, index) => ({\n start: snap - slideSizes[index] + roundingSafety + offset,\n end: snap + viewSize - roundingSafety + offset\n }));\n }\n function findLoopPoints(indexes, offset, isEndEdge) {\n const slideBounds = findSlideBounds(offset);\n return indexes.map(index => {\n const initial = isEndEdge ? 0 : -contentSize;\n const altered = isEndEdge ? contentSize : 0;\n const boundEdge = isEndEdge ? 'end' : 'start';\n const loopPoint = slideBounds[index][boundEdge];\n return {\n index,\n loopPoint,\n slideLocation: Vector1D(-1),\n translate: Translate(axis, slides[index]),\n target: () => location.get() > loopPoint ? initial : altered\n };\n });\n }\n function startPoints() {\n const gap = scrollSnaps[0];\n const indexes = slidesInGap(descItems, gap);\n return findLoopPoints(indexes, contentSize, false);\n }\n function endPoints() {\n const gap = viewSize - scrollSnaps[0] - 1;\n const indexes = slidesInGap(ascItems, gap);\n return findLoopPoints(indexes, -contentSize, true);\n }\n function canLoop() {\n return loopPoints.every(({\n index\n }) => {\n const otherIndexes = ascItems.filter(i => i !== index);\n return removeSlideSizes(otherIndexes, viewSize) <= 0.1;\n });\n }\n function loop() {\n loopPoints.forEach(loopPoint => {\n const {\n target,\n translate,\n slideLocation\n } = loopPoint;\n const shiftLocation = target();\n if (shiftLocation === slideLocation.get()) return;\n translate.to(shiftLocation);\n slideLocation.set(shiftLocation);\n });\n }\n function clear() {\n loopPoints.forEach(loopPoint => loopPoint.translate.clear());\n }\n const self = {\n canLoop,\n clear,\n loop,\n loopPoints\n };\n return self;\n}\n\nfunction SlidesHandler(container, eventHandler, watchSlides) {\n let mutationObserver;\n let destroyed = false;\n function init(emblaApi) {\n if (!watchSlides) return;\n function defaultCallback(mutations) {\n for (const mutation of mutations) {\n if (mutation.type === 'childList') {\n emblaApi.reInit();\n eventHandler.emit('slidesChanged');\n break;\n }\n }\n }\n mutationObserver = new MutationObserver(mutations => {\n if (destroyed) return;\n if (isBoolean(watchSlides) || watchSlides(emblaApi, mutations)) {\n defaultCallback(mutations);\n }\n });\n mutationObserver.observe(container, {\n childList: true\n });\n }\n function destroy() {\n if (mutationObserver) mutationObserver.disconnect();\n destroyed = true;\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction SlidesInView(container, slides, eventHandler, threshold) {\n const intersectionEntryMap = {};\n let inViewCache = null;\n let notInViewCache = null;\n let intersectionObserver;\n let destroyed = false;\n function init() {\n intersectionObserver = new IntersectionObserver(entries => {\n if (destroyed) return;\n entries.forEach(entry => {\n const index = slides.indexOf(entry.target);\n intersectionEntryMap[index] = entry;\n });\n inViewCache = null;\n notInViewCache = null;\n eventHandler.emit('slidesInView');\n }, {\n root: container.parentElement,\n threshold\n });\n slides.forEach(slide => intersectionObserver.observe(slide));\n }\n function destroy() {\n if (intersectionObserver) intersectionObserver.disconnect();\n destroyed = true;\n }\n function createInViewList(inView) {\n return objectKeys(intersectionEntryMap).reduce((list, slideIndex) => {\n const index = parseInt(slideIndex);\n const {\n isIntersecting\n } = intersectionEntryMap[index];\n const inViewMatch = inView && isIntersecting;\n const notInViewMatch = !inView && !isIntersecting;\n if (inViewMatch || notInViewMatch) list.push(index);\n return list;\n }, []);\n }\n function get(inView = true) {\n if (inView && inViewCache) return inViewCache;\n if (!inView && notInViewCache) return notInViewCache;\n const slideIndexes = createInViewList(inView);\n if (inView) inViewCache = slideIndexes;\n if (!inView) notInViewCache = slideIndexes;\n return slideIndexes;\n }\n const self = {\n init,\n destroy,\n get\n };\n return self;\n}\n\nfunction SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap, ownerWindow) {\n const {\n measureSize,\n startEdge,\n endEdge\n } = axis;\n const withEdgeGap = slideRects[0] && readEdgeGap;\n const startGap = measureStartGap();\n const endGap = measureEndGap();\n const slideSizes = slideRects.map(measureSize);\n const slideSizesWithGaps = measureWithGaps();\n function measureStartGap() {\n if (!withEdgeGap) return 0;\n const slideRect = slideRects[0];\n return mathAbs(containerRect[startEdge] - slideRect[startEdge]);\n }\n function measureEndGap() {\n if (!withEdgeGap) return 0;\n const style = ownerWindow.getComputedStyle(arrayLast(slides));\n return parseFloat(style.getPropertyValue(`margin-${endEdge}`));\n }\n function measureWithGaps() {\n return slideRects.map((rect, index, rects) => {\n const isFirst = !index;\n const isLast = arrayIsLastIndex(rects, index);\n if (isFirst) return slideSizes[index] + startGap;\n if (isLast) return slideSizes[index] + endGap;\n return rects[index + 1][startEdge] - rect[startEdge];\n }).map(mathAbs);\n }\n const self = {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n };\n return self;\n}\n\nfunction SlidesToScroll(axis, viewSize, slidesToScroll, loop, containerRect, slideRects, startGap, endGap, pixelTolerance) {\n const {\n startEdge,\n endEdge,\n direction\n } = axis;\n const groupByNumber = isNumber(slidesToScroll);\n function byNumber(array, groupSize) {\n return arrayKeys(array).filter(i => i % groupSize === 0).map(i => array.slice(i, i + groupSize));\n }\n function bySize(array) {\n if (!array.length) return [];\n return arrayKeys(array).reduce((groups, rectB, index) => {\n const rectA = arrayLast(groups) || 0;\n const isFirst = rectA === 0;\n const isLast = rectB === arrayLastIndex(array);\n const edgeA = containerRect[startEdge] - slideRects[rectA][startEdge];\n const edgeB = containerRect[startEdge] - slideRects[rectB][endEdge];\n const gapA = !loop && isFirst ? direction(startGap) : 0;\n const gapB = !loop && isLast ? direction(endGap) : 0;\n const chunkSize = mathAbs(edgeB - gapB - (edgeA + gapA));\n if (index && chunkSize > viewSize + pixelTolerance) groups.push(rectB);\n if (isLast) groups.push(array.length);\n return groups;\n }, []).map((currentSize, index, groups) => {\n const previousSize = Math.max(groups[index - 1] || 0);\n return array.slice(previousSize, currentSize);\n });\n }\n function groupSlides(array) {\n return groupByNumber ? byNumber(array, slidesToScroll) : bySize(array);\n }\n const self = {\n groupSlides\n };\n return self;\n}\n\nfunction Engine(root, container, slides, ownerDocument, ownerWindow, options, eventHandler) {\n // Options\n const {\n align,\n axis: scrollAxis,\n direction,\n startIndex,\n loop,\n duration,\n dragFree,\n dragThreshold,\n inViewThreshold,\n slidesToScroll: groupSlides,\n skipSnaps,\n containScroll,\n watchResize,\n watchSlides,\n watchDrag,\n watchFocus\n } = options;\n // Measurements\n const pixelTolerance = 2;\n const nodeRects = NodeRects();\n const containerRect = nodeRects.measure(container);\n const slideRects = slides.map(nodeRects.measure);\n const axis = Axis(scrollAxis, direction);\n const viewSize = axis.measureSize(containerRect);\n const percentOfView = PercentOfView(viewSize);\n const alignment = Alignment(align, viewSize);\n const containSnaps = !loop && !!containScroll;\n const readEdgeGap = loop || !!containScroll;\n const {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n } = SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap, ownerWindow);\n const slidesToScroll = SlidesToScroll(axis, viewSize, groupSlides, loop, containerRect, slideRects, startGap, endGap, pixelTolerance);\n const {\n snaps,\n snapsAligned\n } = ScrollSnaps(axis, alignment, containerRect, slideRects, slidesToScroll);\n const contentSize = -arrayLast(snaps) + arrayLast(slideSizesWithGaps);\n const {\n snapsContained,\n scrollContainLimit\n } = ScrollContain(viewSize, contentSize, snapsAligned, containScroll, pixelTolerance);\n const scrollSnaps = containSnaps ? snapsContained : snapsAligned;\n const {\n limit\n } = ScrollLimit(contentSize, scrollSnaps, loop);\n // Indexes\n const index = Counter(arrayLastIndex(scrollSnaps), startIndex, loop);\n const indexPrevious = index.clone();\n const slideIndexes = arrayKeys(slides);\n // Animation\n const update = ({\n dragHandler,\n scrollBody,\n scrollBounds,\n options: {\n loop\n }\n }) => {\n if (!loop) scrollBounds.constrain(dragHandler.pointerDown());\n scrollBody.seek();\n };\n const render = ({\n scrollBody,\n translate,\n location,\n offsetLocation,\n previousLocation,\n scrollLooper,\n slideLooper,\n dragHandler,\n animation,\n eventHandler,\n scrollBounds,\n options: {\n loop\n }\n }, alpha) => {\n const shouldSettle = scrollBody.settled();\n const withinBounds = !scrollBounds.shouldConstrain();\n const hasSettled = loop ? shouldSettle : shouldSettle && withinBounds;\n const hasSettledAndIdle = hasSettled && !dragHandler.pointerDown();\n if (hasSettledAndIdle) animation.stop();\n const interpolatedLocation = location.get() * alpha + previousLocation.get() * (1 - alpha);\n offsetLocation.set(interpolatedLocation);\n if (loop) {\n scrollLooper.loop(scrollBody.direction());\n slideLooper.loop();\n }\n translate.to(offsetLocation.get());\n if (hasSettledAndIdle) eventHandler.emit('settle');\n if (!hasSettled) eventHandler.emit('scroll');\n };\n const animation = Animations(ownerDocument, ownerWindow, () => update(engine), alpha => render(engine, alpha));\n // Shared\n const friction = 0.68;\n const startLocation = scrollSnaps[index.get()];\n const location = Vector1D(startLocation);\n const previousLocation = Vector1D(startLocation);\n const offsetLocation = Vector1D(startLocation);\n const target = Vector1D(startLocation);\n const scrollBody = ScrollBody(location, offsetLocation, previousLocation, target, duration, friction);\n const scrollTarget = ScrollTarget(loop, scrollSnaps, contentSize, limit, target);\n const scrollTo = ScrollTo(animation, index, indexPrevious, scrollBody, scrollTarget, target, eventHandler);\n const scrollProgress = ScrollProgress(limit);\n const eventStore = EventStore();\n const slidesInView = SlidesInView(container, slides, eventHandler, inViewThreshold);\n const {\n slideRegistry\n } = SlideRegistry(containSnaps, containScroll, scrollSnaps, scrollContainLimit, slidesToScroll, slideIndexes);\n const slideFocus = SlideFocus(root, slides, slideRegistry, scrollTo, scrollBody, eventStore, eventHandler, watchFocus);\n // Engine\n const engine = {\n ownerDocument,\n ownerWindow,\n eventHandler,\n containerRect,\n slideRects,\n animation,\n axis,\n dragHandler: DragHandler(axis, root, ownerDocument, ownerWindow, target, DragTracker(axis, ownerWindow), location, animation, scrollTo, scrollBody, scrollTarget, index, eventHandler, percentOfView, dragFree, dragThreshold, skipSnaps, friction, watchDrag),\n eventStore,\n percentOfView,\n index,\n indexPrevious,\n limit,\n location,\n offsetLocation,\n previousLocation,\n options,\n resizeHandler: ResizeHandler(container, eventHandler, ownerWindow, slides, axis, watchResize, nodeRects),\n scrollBody,\n scrollBounds: ScrollBounds(limit, offsetLocation, target, scrollBody, percentOfView),\n scrollLooper: ScrollLooper(contentSize, limit, offsetLocation, [location, offsetLocation, previousLocation, target]),\n scrollProgress,\n scrollSnapList: scrollSnaps.map(scrollProgress.get),\n scrollSnaps,\n scrollTarget,\n scrollTo,\n slideLooper: SlideLooper(axis, viewSize, contentSize, slideSizes, slideSizesWithGaps, snaps, scrollSnaps, offsetLocation, slides),\n slideFocus,\n slidesHandler: SlidesHandler(container, eventHandler, watchSlides),\n slidesInView,\n slideIndexes,\n slideRegistry,\n slidesToScroll,\n target,\n translate: Translate(axis, container)\n };\n return engine;\n}\n\nfunction EventHandler() {\n let listeners = {};\n let api;\n function init(emblaApi) {\n api = emblaApi;\n }\n function getListeners(evt) {\n return listeners[evt] || [];\n }\n function emit(evt) {\n getListeners(evt).forEach(e => e(api, evt));\n return self;\n }\n function on(evt, cb) {\n listeners[evt] = getListeners(evt).concat([cb]);\n return self;\n }\n function off(evt, cb) {\n listeners[evt] = getListeners(evt).filter(e => e !== cb);\n return self;\n }\n function clear() {\n listeners = {};\n }\n const self = {\n init,\n emit,\n off,\n on,\n clear\n };\n return self;\n}\n\nconst defaultOptions = {\n align: 'center',\n axis: 'x',\n container: null,\n slides: null,\n containScroll: 'trimSnaps',\n direction: 'ltr',\n slidesToScroll: 1,\n inViewThreshold: 0,\n breakpoints: {},\n dragFree: false,\n dragThreshold: 10,\n loop: false,\n skipSnaps: false,\n duration: 25,\n startIndex: 0,\n active: true,\n watchDrag: true,\n watchResize: true,\n watchSlides: true,\n watchFocus: true\n};\n\nfunction OptionsHandler(ownerWindow) {\n function mergeOptions(optionsA, optionsB) {\n return objectsMergeDeep(optionsA, optionsB || {});\n }\n function optionsAtMedia(options) {\n const optionsAtMedia = options.breakpoints || {};\n const matchedMediaOptions = objectKeys(optionsAtMedia).filter(media => ownerWindow.matchMedia(media).matches).map(media => optionsAtMedia[media]).reduce((a, mediaOption) => mergeOptions(a, mediaOption), {});\n return mergeOptions(options, matchedMediaOptions);\n }\n function optionsMediaQueries(optionsList) {\n return optionsList.map(options => objectKeys(options.breakpoints || {})).reduce((acc, mediaQueries) => acc.concat(mediaQueries), []).map(ownerWindow.matchMedia);\n }\n const self = {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n };\n return self;\n}\n\nfunction PluginsHandler(optionsHandler) {\n let activePlugins = [];\n function init(emblaApi, plugins) {\n activePlugins = plugins.filter(({\n options\n }) => optionsHandler.optionsAtMedia(options).active !== false);\n activePlugins.forEach(plugin => plugin.init(emblaApi, optionsHandler));\n return plugins.reduce((map, plugin) => Object.assign(map, {\n [plugin.name]: plugin\n }), {});\n }\n function destroy() {\n activePlugins = activePlugins.filter(plugin => plugin.destroy());\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction EmblaCarousel(root, userOptions, userPlugins) {\n const ownerDocument = root.ownerDocument;\n const ownerWindow = ownerDocument.defaultView;\n const optionsHandler = OptionsHandler(ownerWindow);\n const pluginsHandler = PluginsHandler(optionsHandler);\n const mediaHandlers = EventStore();\n const eventHandler = EventHandler();\n const {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n } = optionsHandler;\n const {\n on,\n off,\n emit\n } = eventHandler;\n const reInit = reActivate;\n let destroyed = false;\n let engine;\n let optionsBase = mergeOptions(defaultOptions, EmblaCarousel.globalOptions);\n let options = mergeOptions(optionsBase);\n let pluginList = [];\n let pluginApis;\n let container;\n let slides;\n function storeElements() {\n const {\n container: userContainer,\n slides: userSlides\n } = options;\n const customContainer = isString(userContainer) ? root.querySelector(userContainer) : userContainer;\n container = customContainer || root.children[0];\n const customSlides = isString(userSlides) ? container.querySelectorAll(userSlides) : userSlides;\n slides = [].slice.call(customSlides || container.children);\n }\n function createEngine(options) {\n const engine = Engine(root, container, slides, ownerDocument, ownerWindow, options, eventHandler);\n if (options.loop && !engine.slideLooper.canLoop()) {\n const optionsWithoutLoop = Object.assign({}, options, {\n loop: false\n });\n return createEngine(optionsWithoutLoop);\n }\n return engine;\n }\n function activate(withOptions, withPlugins) {\n if (destroyed) return;\n optionsBase = mergeOptions(optionsBase, withOptions);\n options = optionsAtMedia(optionsBase);\n pluginList = withPlugins || pluginList;\n storeElements();\n engine = createEngine(options);\n optionsMediaQueries([optionsBase, ...pluginList.map(({\n options\n }) => options)]).forEach(query => mediaHandlers.add(query, 'change', reActivate));\n if (!options.active) return;\n engine.translate.to(engine.location.get());\n engine.animation.init();\n engine.slidesInView.init();\n engine.slideFocus.init(self);\n engine.eventHandler.init(self);\n engine.resizeHandler.init(self);\n engine.slidesHandler.init(self);\n if (engine.options.loop) engine.slideLooper.loop();\n if (container.offsetParent && slides.length) engine.dragHandler.init(self);\n pluginApis = pluginsHandler.init(self, pluginList);\n }\n function reActivate(withOptions, withPlugins) {\n const startIndex = selectedScrollSnap();\n deActivate();\n activate(mergeOptions({\n startIndex\n }, withOptions), withPlugins);\n eventHandler.emit('reInit');\n }\n function deActivate() {\n engine.dragHandler.destroy();\n engine.eventStore.clear();\n engine.translate.clear();\n engine.slideLooper.clear();\n engine.resizeHandler.destroy();\n engine.slidesHandler.destroy();\n engine.slidesInView.destroy();\n engine.animation.destroy();\n pluginsHandler.destroy();\n mediaHandlers.clear();\n }\n function destroy() {\n if (destroyed) return;\n destroyed = true;\n mediaHandlers.clear();\n deActivate();\n eventHandler.emit('destroy');\n eventHandler.clear();\n }\n function scrollTo(index, jump, direction) {\n if (!options.active || destroyed) return;\n engine.scrollBody.useBaseFriction().useDuration(jump === true ? 0 : options.duration);\n engine.scrollTo.index(index, direction || 0);\n }\n function scrollNext(jump) {\n const next = engine.index.add(1).get();\n scrollTo(next, jump, -1);\n }\n function scrollPrev(jump) {\n const prev = engine.index.add(-1).get();\n scrollTo(prev, jump, 1);\n }\n function canScrollNext() {\n const next = engine.index.add(1).get();\n return next !== selectedScrollSnap();\n }\n function canScrollPrev() {\n const prev = engine.index.add(-1).get();\n return prev !== selectedScrollSnap();\n }\n function scrollSnapList() {\n return engine.scrollSnapList;\n }\n function scrollProgress() {\n return engine.scrollProgress.get(engine.offsetLocation.get());\n }\n function selectedScrollSnap() {\n return engine.index.get();\n }\n function previousScrollSnap() {\n return engine.indexPrevious.get();\n }\n function slidesInView() {\n return engine.slidesInView.get();\n }\n function slidesNotInView() {\n return engine.slidesInView.get(false);\n }\n function plugins() {\n return pluginApis;\n }\n function internalEngine() {\n return engine;\n }\n function rootNode() {\n return root;\n }\n function containerNode() {\n return container;\n }\n function slideNodes() {\n return slides;\n }\n const self = {\n canScrollNext,\n canScrollPrev,\n containerNode,\n internalEngine,\n destroy,\n off,\n on,\n emit,\n plugins,\n previousScrollSnap,\n reInit,\n rootNode,\n scrollNext,\n scrollPrev,\n scrollProgress,\n scrollSnapList,\n scrollTo,\n selectedScrollSnap,\n slideNodes,\n slidesInView,\n slidesNotInView\n };\n activate(userOptions, userPlugins);\n setTimeout(() => eventHandler.emit('init'), 0);\n return self;\n}\nEmblaCarousel.globalOptions = undefined;\n\nexport { EmblaCarousel as default };\n//# sourceMappingURL=embla-carousel.esm.js.map\n","import { useRef, useState, useCallback, useEffect } from 'react';\nimport { areOptionsEqual, arePluginsEqual, canUseDOM } from 'embla-carousel-reactive-utils';\nimport EmblaCarousel from 'embla-carousel';\n\nfunction useEmblaCarousel(options = {}, plugins = []) {\n const storedOptions = useRef(options);\n const storedPlugins = useRef(plugins);\n const [emblaApi, setEmblaApi] = useState();\n const [viewport, setViewport] = useState();\n const reInit = useCallback(() => {\n if (emblaApi) emblaApi.reInit(storedOptions.current, storedPlugins.current);\n }, [emblaApi]);\n useEffect(() => {\n if (areOptionsEqual(storedOptions.current, options)) return;\n storedOptions.current = options;\n reInit();\n }, [options, reInit]);\n useEffect(() => {\n if (arePluginsEqual(storedPlugins.current, plugins)) return;\n storedPlugins.current = plugins;\n reInit();\n }, [plugins, reInit]);\n useEffect(() => {\n if (canUseDOM() && viewport) {\n EmblaCarousel.globalOptions = useEmblaCarousel.globalOptions;\n const newEmblaApi = EmblaCarousel(viewport, storedOptions.current, storedPlugins.current);\n setEmblaApi(newEmblaApi);\n return () => newEmblaApi.destroy();\n } else {\n setEmblaApi(undefined);\n }\n }, [viewport, setEmblaApi]);\n return [setViewport, emblaApi];\n}\nuseEmblaCarousel.globalOptions = undefined;\n\nexport { useEmblaCarousel as default };\n//# sourceMappingURL=embla-carousel-react.esm.js.map\n","import React, { createContext } from 'react';\nimport type { CarouselProviderComponentProps } from './CarouselProviderProps.generated';\nimport { RenderNode } from '../..';\nimport useEmblaCarousel from 'embla-carousel-react';\nimport useNode from '../useNode';\n\nexport const carouselContext = createContext<any>(undefined);\nfunction CarouselProvider({ node }: CarouselProviderComponentProps) {\n node = useNode(node);\n const [emblaRef, emblaApi] = useEmblaCarousel(node.attributes as any);\n return (\n <carouselContext.Provider value={emblaApi}>\n <div className=\"carousel-provider\">\n <div className=\"embla\">\n <div className=\"embla__viewport\" ref={emblaRef}>\n {node.children && <RenderNode node={node.children} />}\n </div>\n </div>\n </div>\n </carouselContext.Provider>\n );\n}\n\nexport default React.memo(CarouselProvider);\n","import React, { useContext } from 'react';\nimport type { CarouselButtonsComponentProps } from './CarouselButtonsProps.generated';\nimport { carouselContext } from '../CarouselProvider/CarouselProvider';\nimport useNode from '../useNode';\n\nfunction CarouselButtons({ node }: CarouselButtonsComponentProps) {\n node = useNode(node);\n const emblaApi = useContext(carouselContext);\n const buttonTypes = node.attributes?.buttonType || [\n 'previous_button',\n 'next_button',\n ];\n\n return (\n <div className=\"embla__buttons\">\n {buttonTypes.includes('previous_button') && (\n <button\n onClick={() => emblaApi?.scrollPrev()}\n className=\"embla__button embla__button--prev\"\n >\n Previous\n </button>\n )}\n {buttonTypes.includes('next_button') && (\n <button\n onClick={() => emblaApi?.scrollNext()}\n className=\"embla__button embla__button--next\"\n >\n Next\n </button>\n )}\n {buttonTypes.includes('skip_button') && (\n <button\n onClick={() => emblaApi?.scrollTo(node.attributes?.skipNumber)}\n className=\"embla__button embla__button--skip\"\n >\n Skip\n </button>\n )}\n </div>\n );\n}\n\nexport default React.memo(CarouselButtons);\n","import React, { useContext, useEffect, useState } from 'react';\nimport type { CarouselDotsComponentProps } from './CarouselDotsProps.generated';\nimport { carouselContext } from '../CarouselProvider/CarouselProvider';\nimport useNode from '../useNode';\n\nfunction CarouselDots({ node }: CarouselDotsComponentProps) {\n node = useNode(node);\n const dotType = node.attributes?.dotType || 'normal_dot';\n const emblaApi = useContext(carouselContext);\n const [selectedIndex, setSelectedIndex] = useState(0);\n const [scrollSnaps, setScrollSnaps] = useState<number[]>([]);\n\n useEffect(() => {\n if (!emblaApi) return;\n setScrollSnaps(emblaApi.scrollSnapList());\n setSelectedIndex(emblaApi.selectedScrollSnap());\n emblaApi.on('select', () => {\n setSelectedIndex(emblaApi.selectedScrollSnap());\n });\n }, [emblaApi]);\n\n return (\n <div className={`embla__dots embla__dots--${dotType}`}>\n {scrollSnaps.map((snap, index) => (\n <button\n key={index}\n onClick={() => emblaApi?.scrollTo(snap)}\n className={`embla__dot ${selectedIndex === index ? 'embla__dot--selected' : ''}`}\n >\n {index === selectedIndex ? '●' : '○'}\n </button>\n ))}\n </div>\n );\n}\n\nexport default React.memo(CarouselDots);\n","import React from 'react';\nimport type { CarouselItemComponentProps } from './CarouselItemProps.generated';\nimport { RenderNode } from '../..';\nimport useNode from '../useNode';\n\nexport function CarouselItem({ node }: CarouselItemComponentProps) {\n node = useNode(node);\n return (\n <div className=\"embla__slide\" {...node.attributes}>\n {node.children && <RenderNode node={node.children} />}\n </div>\n );\n}\n\nexport default React.memo(CarouselItem);\n","import { ImagePropsGenerated } from '../build-components/Image/ImageProps.generated';\nimport type { NodeData } from '../types/Node';\n\nexport function extractImageStyle<T extends ImagePropsGenerated['attributes']>(\n node: NodeData<T>,\n) {\n const attributes = node.attributes;\n const style: React.CSSProperties = {};\n\n if (!attributes) return style;\n\n if (attributes.width !== undefined) style.width = attributes.width;\n if (attributes.height !== undefined) style.height = attributes.height;\n if (attributes.borderRadius !== undefined)\n style.borderRadius = attributes.borderRadius;\n\n // Map resizeMode to CSS object-fit\n if (attributes.resizeMode === 'cover') style.objectFit = 'cover';\n else if (attributes.resizeMode === 'contain') style.objectFit = 'contain';\n else if (attributes.resizeMode === 'stretch') style.objectFit = 'fill';\n else if (attributes.resizeMode === 'center') style.objectFit = 'none';\n\n return style;\n}\n","import React from 'react';\nimport type { ImageComponentProps } from './ImageProps.generated';\nimport useNode from '../useNode';\nimport { extractImageStyle } from '../../utils/extractImageStyle';\n\nfunction Image({ node }: ImageComponentProps) {\n node = useNode(node);\n return (\n <img\n key={node.key}\n src={node.attributes?.src}\n width={node.attributes?.width}\n height={node.attributes?.height}\n style={extractImageStyle(node)}\n alt=\"\"\n />\n );\n}\n\nexport default React.memo(Image);\n","import React from 'react';\nimport type { OnboardComponentProps } from './OnboardProps.generated';\nimport Carousel from '../Carousel/Carousel';\nimport useNode from '../useNode';\n\nfunction Onboard({ node }: OnboardComponentProps) {\n node = useNode(node);\n return <Carousel node={{ ...node, type: 'carousel' } as any} />;\n}\n\nexport default React.memo(Onboard);\n","/**\n * @license React\n * use-sync-external-store-shim.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n var value = getSnapshot(),\n _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n}\nvar shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n","/**\n * @license React\n * use-sync-external-store-shim.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n }\n function useSyncExternalStore$2(subscribe, getSnapshot) {\n didWarnOld18Alpha ||\n void 0 === React.startTransition ||\n ((didWarnOld18Alpha = !0),\n console.error(\n \"You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release.\"\n ));\n var value = getSnapshot();\n if (!didWarnUncachedGetSnapshot) {\n var cachedValue = getSnapshot();\n objectIs(value, cachedValue) ||\n (console.error(\n \"The result of getSnapshot should be cached to avoid an infinite loop\"\n ),\n (didWarnUncachedGetSnapshot = !0));\n }\n cachedValue = useState({\n inst: { value: value, getSnapshot: getSnapshot }\n });\n var inst = cachedValue[0].inst,\n forceUpdate = cachedValue[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n }\n function checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n }\n function useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = require(\"react\"),\n objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue,\n didWarnOld18Alpha = !1,\n didWarnUncachedGetSnapshot = !1,\n shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\n exports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\"),\n shim = require(\"use-sync-external-store/shim\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n};\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = require(\"react\"),\n shim = require(\"use-sync-external-store/shim\"),\n objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\n exports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n ) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot))\n return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n };\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);\n\nexport { createStore };\n","import React from 'react';\nimport useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector.js';\nimport { createStore } from 'zustand/vanilla';\n\nconst { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;\nconst identity = (arg) => arg;\nfunction useStoreWithEqualityFn(api, selector = identity, equalityFn) {\n const slice = useSyncExternalStoreWithSelector(\n api.subscribe,\n api.getState,\n api.getInitialState,\n selector,\n equalityFn\n );\n React.useDebugValue(slice);\n return slice;\n}\nconst createWithEqualityFnImpl = (createState, defaultEqualityFn) => {\n const api = createStore(createState);\n const useBoundStoreWithEqualityFn = (selector, equalityFn = defaultEqualityFn) => useStoreWithEqualityFn(api, selector, equalityFn);\n Object.assign(useBoundStoreWithEqualityFn, api);\n return useBoundStoreWithEqualityFn;\n};\nconst createWithEqualityFn = ((createState, defaultEqualityFn) => createState ? createWithEqualityFnImpl(createState, defaultEqualityFn) : createWithEqualityFnImpl);\n\nexport { createWithEqualityFn, useStoreWithEqualityFn };\n","const isIterable = (obj) => Symbol.iterator in obj;\nconst hasIterableEntries = (value) => (\n // HACK: avoid checking entries type\n \"entries\" in value\n);\nconst compareEntries = (valueA, valueB) => {\n const mapA = valueA instanceof Map ? valueA : new Map(valueA.entries());\n const mapB = valueB instanceof Map ? valueB : new Map(valueB.entries());\n if (mapA.size !== mapB.size) {\n return false;\n }\n for (const [key, value] of mapA) {\n if (!mapB.has(key) || !Object.is(value, mapB.get(key))) {\n return false;\n }\n }\n return true;\n};\nconst compareIterables = (valueA, valueB) => {\n const iteratorA = valueA[Symbol.iterator]();\n const iteratorB = valueB[Symbol.iterator]();\n let nextA = iteratorA.next();\n let nextB = iteratorB.next();\n while (!nextA.done && !nextB.done) {\n if (!Object.is(nextA.value, nextB.value)) {\n return false;\n }\n nextA = iteratorA.next();\n nextB = iteratorB.next();\n }\n return !!nextA.done && !!nextB.done;\n};\nfunction shallow(valueA, valueB) {\n if (Object.is(valueA, valueB)) {\n return true;\n }\n if (typeof valueA !== \"object\" || valueA === null || typeof valueB !== \"object\" || valueB === null) {\n return false;\n }\n if (Object.getPrototypeOf(valueA) !== Object.getPrototypeOf(valueB)) {\n return false;\n }\n if (isIterable(valueA) && isIterable(valueB)) {\n if (hasIterableEntries(valueA) && hasIterableEntries(valueB)) {\n return compareEntries(valueA, valueB);\n }\n return compareIterables(valueA, valueB);\n }\n return compareEntries(\n { entries: () => Object.entries(valueA) },\n { entries: () => Object.entries(valueB) }\n );\n}\n\nexport { shallow };\n","export interface AppConfig {\n theme: 'light' | 'dark';\n isRtl: boolean; //This could be device in future\n screenStyle: {\n light: { backgroundColor: string; color: string; seperatorColor?: string };\n dark: { backgroundColor: string; color: string; seperatorColor?: string };\n };\n localication: Localication;\n defaultLanguage?: string;\n baseSize: { width: number; height: number };\n}\n\nexport const defaultAppConfig: AppConfig = {\n theme: 'light',\n isRtl: false,\n screenStyle: {\n light: { backgroundColor: '#FDFDFD', color: '#161827' },\n dark: { backgroundColor: '#12131A', color: '#E9EBF9' },\n },\n localication: {},\n baseSize: { width: 375, height: 812 },\n};\n\nexport type Localication = {\n [key: string]: {\n [key: string]: string;\n };\n};\n","import { Device } from '../types/Device';\nimport devices from '../assets/devices.json';\n\nexport function getDevices(): Device[] {\n const deviceList = (devices as Device[]).slice();\n deviceList.sort((a, b) => {\n const ai = a.importance ?? 999;\n const bi = b.importance ?? 999;\n return ai - bi;\n });\n return deviceList;\n}\n\n//TODO: object instead of function\nexport function getDefaultDevice(): Device {\n return getDevices()[0];\n}\n","const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...args) => api.dispatch(...args), ...initial };\n};\nconst redux = reduxImpl;\n\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name) => {\n const api = trackedConnections.get(name);\n if (!api) return {};\n return Object.fromEntries(\n Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])\n );\n};\nconst extractConnectionInformation = (store, extensionConnector, options) => {\n if (store === void 0) {\n return {\n type: \"untracked\",\n connection: extensionConnector.connect(options)\n };\n }\n const existingConnection = trackedConnections.get(options.name);\n if (existingConnection) {\n return { type: \"tracked\", store, ...existingConnection };\n }\n const newConnection = {\n connection: extensionConnector.connect(options),\n stores: {}\n };\n trackedConnections.set(options.name, newConnection);\n return { type: \"tracked\", store, ...newConnection };\n};\nconst removeStoreFromTrackedConnections = (name, store) => {\n if (store === void 0) return;\n const connectionInfo = trackedConnections.get(name);\n if (!connectionInfo) return;\n delete connectionInfo.stores[store];\n if (Object.keys(connectionInfo.stores).length === 0) {\n trackedConnections.delete(name);\n }\n};\nconst findCallerName = (stack) => {\n var _a, _b;\n if (!stack) return void 0;\n const traceLines = stack.split(\"\\n\");\n const apiSetStateLineIndex = traceLines.findIndex(\n (traceLine) => traceLine.includes(\"api.setState\")\n );\n if (apiSetStateLineIndex < 0) return void 0;\n const callerLine = ((_a = traceLines[apiSetStateLineIndex + 1]) == null ? void 0 : _a.trim()) || \"\";\n return (_b = /.+ (.+) .+/.exec(callerLine)) == null ? void 0 : _b[1];\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (e) {\n }\n if (!extensionConnector) {\n return fn(set, get, api);\n }\n const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n let isRecording = true;\n api.setState = ((state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording) return r;\n const action = nameOrAction === void 0 ? {\n type: anonymousActionType || findCallerName(new Error().stack) || \"anonymous\"\n } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction;\n if (store === void 0) {\n connection == null ? void 0 : connection.send(action, get());\n return r;\n }\n connection == null ? void 0 : connection.send(\n {\n ...action,\n type: `${store}/${action.type}`\n },\n {\n ...getTrackedConnectionState(options.name),\n [store]: api.getState()\n }\n );\n return r;\n });\n api.devtools = {\n cleanup: () => {\n if (connection && typeof connection.unsubscribe === \"function\") {\n connection.unsubscribe();\n }\n removeStoreFromTrackedConnections(options.name, store);\n }\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n if (connectionInformation.type === \"untracked\") {\n connection == null ? void 0 : connection.init(initialState);\n } else {\n connectionInformation.stores[connectionInformation.store] = api;\n connection == null ? void 0 : connection.init(\n Object.fromEntries(\n Object.entries(connectionInformation.stores).map(([key, store2]) => [\n key,\n key === connectionInformation.store ? initialState : store2.getState()\n ])\n )\n );\n }\n if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...args) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && args[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...args);\n };\n }\n connection.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n if (store === void 0) {\n setStateFromDevtools(action.state);\n return;\n }\n if (Object.keys(action.state).length !== 1) {\n console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format.\n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n }\n const stateFromDevtools = action.state[store];\n if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n setStateFromDevtools(stateFromDevtools);\n }\n return;\n }\n if (!api.dispatchFromDevtools) return;\n if (typeof api.dispatch !== \"function\") return;\n api.dispatch(action);\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n if (store === void 0) {\n return connection == null ? void 0 : connection.init(api.getState());\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"COMMIT\":\n if (store === void 0) {\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n setStateFromDevtools(state[store]);\n connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n setStateFromDevtools(state[store]);\n }\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState) return;\n if (store === void 0) {\n setStateFromDevtools(lastComputedState);\n } else {\n setStateFromDevtools(lastComputedState[store]);\n }\n connection == null ? void 0 : connection.send(\n null,\n // FIXME no-any\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, fn) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0) fn(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = ((selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n });\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nfunction combine(initialState, create) {\n return (...args) => Object.assign({}, initialState, create(...args));\n}\n\nfunction createJSONStorage(getStorage, options) {\n let storage;\n try {\n storage = getStorage();\n } catch (e) {\n return;\n }\n const persistStorage = {\n getItem: (name) => {\n var _a;\n const parse = (str2) => {\n if (str2 === null) {\n return null;\n }\n return JSON.parse(str2, options == null ? void 0 : options.reviver);\n };\n const str = (_a = storage.getItem(name)) != null ? _a : null;\n if (str instanceof Promise) {\n return str.then(parse);\n }\n return parse(str);\n },\n setItem: (name, newValue) => storage.setItem(name, JSON.stringify(newValue, options == null ? void 0 : options.replacer)),\n removeItem: (name) => storage.removeItem(name)\n };\n return persistStorage;\n}\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst persistImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n storage: createJSONStorage(() => localStorage),\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage = options.storage;\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const setItem = () => {\n const state = options.partialize({ ...get() });\n return storage.setItem(options.name, {\n state,\n version: options.version\n });\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n return setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n return setItem();\n },\n get,\n api\n );\n api.getInitialState = () => configResult;\n let stateFromStorage;\n const hydrate = () => {\n var _a, _b;\n if (!storage) return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => {\n var _a2;\n return cb((_a2 = get()) != null ? _a2 : configResult);\n });\n const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n const migration = options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n if (migration instanceof Promise) {\n return migration.then((result) => [true, result]);\n }\n return [true, migration];\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return [false, deserializedStorageValue.state];\n }\n }\n return [false, void 0];\n }).then((migrationResult) => {\n var _a2;\n const [migrated, migratedState] = migrationResult;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n if (migrated) {\n return setItem();\n }\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n stateFromStorage = get();\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.storage) {\n storage = newOptions.storage;\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n if (!options.skipHydration) {\n hydrate();\n }\n return stateFromStorage || configResult;\n};\nconst persist = persistImpl;\n\nexport { combine, createJSONStorage, devtools, persist, redux, subscribeWithSelector };\n","import { createWithEqualityFn } from 'zustand/traditional';\nimport { shallow } from 'zustand/shallow';\nimport type { Device } from './types/Device';\nimport {\n defaultAppConfig,\n type AppConfig,\n type Localication,\n} from './types/PreviewConfig';\nimport { getDefaultDevice } from './utils/getDevices';\nimport { ScreenStyle } from './RenderPage';\nimport { createJSONStorage } from 'zustand/middleware';\nimport { Node } from './types/Node';\n\ntype RenderStore = {\n copiedNode: Node | null;\n setCopiedNode: (node: Node | null) => void;\n device: Device;\n setDevice: (device: Device) => void;\n appConfig: AppConfig;\n setAppConfig: (appConfig: AppConfig) => void;\n renderCount: number;\n forceRender: () => void;\n};\n\nexport const useRenderStore = createWithEqualityFn<RenderStore>()(\n (set) => ({\n copiedNode: null,\n setCopiedNode: (node) => set({ copiedNode: node }),\n renderCount: 0,\n forceRender: () => set((state) => ({ renderCount: state.renderCount + 1 })),\n device: getDefaultDevice(),\n setDevice: (device) => set({ device }),\n appConfig: defaultAppConfig,\n setAppConfig: (appConfig) => set({ appConfig }),\n persist: {\n name: 'render-store',\n partialize: (state: RenderStore) => ({\n copiedNode: state.copiedNode ?? null,\n }),\n storage: createJSONStorage(() => localStorage),\n },\n }),\n shallow,\n);\n","import React, {\n createContext,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport type { NodeData } from '../../types/Node';\nimport type { OnboardProviderComponentProps } from './OnboardProviderProps.generated';\nimport useEmblaCarousel from 'embla-carousel-react';\nimport RenderNode from '../RenderNode.generated';\nimport { useRenderStore } from '../../store';\nimport useNode from '../useNode';\n\nexport const onboardContext = createContext<any>(undefined);\nfunction OnboardProvider({ node }: OnboardProviderComponentProps) {\n node = useNode(node);\n const device = useRenderStore((s) => s.device);\n const [emblaRef, emblaApi] = useEmblaCarousel(node.attributes as any);\n const [selectedIndex, setSelectedIndex] = useState(0);\n\n const children = useMemo(() => {\n const onboardChild: NodeData = (node.children as NodeData[]).filter(\n (c) => c.type === 'Onboard',\n )[0];\n if (onboardChild?.type !== 'Onboard') {\n throw new Error('OnboardProvider at least has an Onboard child');\n }\n const onboardItems = onboardChild.children as NodeData[];\n\n const onboardButtons = (\n onboardItems[selectedIndex].children as NodeData[]\n ).filter((s) => (s as NodeData)?.type == 'OnboardButtons');\n const children: NodeData[] = node.children as NodeData[];\n return [...children, ...onboardButtons];\n }, [selectedIndex, node.children]);\n\n useEffect(() => {\n if (!emblaApi) return;\n setSelectedIndex(emblaApi.selectedScrollSnap());\n emblaApi.on('select', () => {\n setSelectedIndex(emblaApi.selectedScrollSnap());\n });\n }, [emblaApi]);\n\n /* useEffect(() => {\n if (theme !== (node.attributes as any)?.theme) {\n setWarning?.('Wrong theme');\n }\n }, [theme]);*/\n\n return (\n <onboardContext.Provider value={{ emblaApi, selectedIndex }}>\n <div\n className=\"carousel-provider\"\n style={{\n paddingTop:\n device?.insets?.[0] + (node.attributes as any)?.paddingTop,\n paddingRight:\n device?.insets?.[1] + (node.attributes as any)?.paddingRight,\n paddingBottom:\n device?.insets?.[2] + (node.attributes as any)?.paddingBottom,\n paddingLeft:\n device?.insets?.[3] + (node.attributes as any)?.paddingLeft,\n }}\n >\n <div className=\"embla\">\n <div className=\"embla__viewport\" ref={emblaRef}>\n {node.children && <RenderNode node={children} />}\n </div>\n </div>\n </div>\n </onboardContext.Provider>\n );\n}\n\nexport default React.memo(OnboardProvider);\n","import React, { useContext } from 'react';\nimport type { OnboardButtonComponentProps } from './OnboardButtonProps.generated';\nimport { onboardContext } from '../OnboardProvider/OnboardProvider';\nimport useNode from '../useNode';\nimport { useRenderStore } from '../../store';\n\nfunction OnboardButton({ node }: OnboardButtonComponentProps) {\n node = useNode(node);\n const { emblaApi } = useContext(onboardContext) ?? {};\n const { appConfig } = useRenderStore((s) => ({\n appConfig: s.appConfig,\n }));\n\n const labelRaw = node.attributes?.labelKey ?? '';\n const label =\n (appConfig.localication?.[appConfig.defaultLanguage ?? 'en']?.[\n labelRaw\n ] as string) ?? labelRaw;\n\n const flex = node.attributes?.flex ?? 1;\n const textColor = node.attributes?.button_text_color ?? '#FFFFFF';\n const backgroundColor = node.attributes?.button_background_color ?? '#0066FF';\n\n const handleClick = () => {\n const events = (node.attributes as any)?.events || [];\n let navigateHandled = false;\n for (const e of events) {\n if (e.type === 'Permission') {\n alert(`Permission requested: ${e.permission ?? 'unknown'}`);\n } else if (e.type === 'Navigate') {\n const eventTargetIndex = (e as any)?.targetIndex;\n if (typeof eventTargetIndex === 'number') {\n emblaApi?.scrollTo(eventTargetIndex);\n navigateHandled = true;\n }\n }\n }\n // Fallback: do nothing when there is no Navigate event\n };\n\n return (\n <button\n className=\"onboard__button\"\n onClick={handleClick}\n style={{\n flex,\n color: textColor,\n backgroundColor,\n border: 'none',\n borderRadius: 20,\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n }}\n >\n {label}\n </button>\n );\n}\n\nexport default React.memo(OnboardButton);\n","import React, { useContext, useEffect, useState } from 'react';\nimport type { Node } from '../../types/Node';\nimport type { OnboardButtonsComponentProps } from './OnboardButtonsProps.generated';\nimport { onboardContext } from '../OnboardProvider/OnboardProvider';\nimport RenderNode from '../RenderNode.generated';\nimport useNode from '../useNode';\nimport { useRenderStore } from '../../store';\n\nfunction OnboardButtons({ node }: OnboardButtonsComponentProps) {\n node = useNode(node);\n const { appConfig } = useRenderStore((s) => ({\n appConfig: s.appConfig,\n }));\n const seperatorColorDefault =\n appConfig.theme === 'light'\n ? appConfig.screenStyle.light.seperatorColor\n : appConfig.screenStyle.dark.seperatorColor;\n const ctx = useContext(onboardContext) ?? {};\n const [selectedIndex, setSelectedIndex] = useState(ctx.selectedIndex ?? 0);\n\n useEffect(() => {\n if (typeof ctx.selectedIndex === 'number') {\n setSelectedIndex(ctx.selectedIndex);\n }\n }, [ctx.selectedIndex]);\n\n // New condition logic: hide when condition is carousel-index and does not match\n const condition = (node.attributes as any)?.condition;\n const conditionVariable = (node.attributes as any)?.conditionVariable;\n if (condition === 'carousel-index' && typeof conditionVariable === 'number') {\n if (conditionVariable !== selectedIndex) return null;\n }\n\n const direction =\n node.attributes?.buttons_direction === 'column' ? 'column' : 'row';\n const seperatorColor =\n node.attributes?.seperatorColor ?? seperatorColorDefault;\n\n const renderChildren = () => {\n if (Array.isArray(node.children)) {\n return (node.children as Node[]).map((child, idx) => (\n <RenderNode key={idx} node={child} />\n ));\n }\n return <RenderNode node={node.children as Node} />;\n };\n\n return (\n <>\n <div\n className=\"onboard__separator\"\n style={{\n height: 1,\n backgroundColor: seperatorColor,\n width: '100%',\n }}\n />\n <div\n className=\"onboard__buttons\"\n style={{\n display: 'flex',\n flexDirection: direction as any,\n height: 40,\n gap: 12,\n alignItems: 'center',\n justifyContent: 'center',\n margin: '12px 24px',\n }}\n >\n {renderChildren()}\n </div>\n </>\n );\n}\n\nexport default React.memo(OnboardButtons);\n","import React from 'react';\nimport type { OnboardDotComponentProps } from './OnboardExpandingDotProps.generated';\nimport CarouselDots from '../CarouselDots/CarouselDots';\nimport useNode from '../useNode';\n\nfunction OnboardDot({ node }: OnboardDotComponentProps) {\n node = useNode(node);\n return <CarouselDots node={{ ...node, type: 'carouselDots' } as any} />;\n}\n\nexport default React.memo(OnboardDot);\n","import { useRenderStore } from '../store';\n\nfunction getBaseDimensions() {\n const currentState = useRenderStore.getState();\n let device = currentState.device;\n const [shortDimension, longDimension] =\n device.width < device.height\n ? [device.width, device.height]\n : [device.height, device.width];\n\n return {\n baseSize: currentState.appConfig.baseSize,\n shortDimension,\n longDimension,\n };\n}\nexport function scale(size: number) {\n const { baseSize, shortDimension } = getBaseDimensions();\n return (shortDimension / baseSize.width) * size;\n}\nexport function verticalScale(size: number) {\n const { baseSize, longDimension } = getBaseDimensions();\n return (longDimension / baseSize.height) * size;\n}\n\nexport const s = scale;\nexport const vs = verticalScale;\nexport const fs = verticalScale;\n\nexport function parseSize(value?: string | number) {\n if (value === undefined) return undefined;\n if (typeof value === 'number') {\n return value;\n }\n\n const raw = String(value).trim();\n const lower = raw.toLowerCase();\n\n // Handle explicit scalers via suffixes\n if (lower.endsWith('@s')) {\n const n = parseFloat(lower.slice(0, -2));\n return Number.isFinite(n) ? s(n) : raw;\n }\n if (lower.endsWith('@vs')) {\n const n = parseFloat(lower.slice(0, -3));\n return Number.isFinite(n) ? vs(n) : raw;\n }\n if (lower.endsWith('@f') || lower.endsWith('@fs')) {\n const cut = lower.endsWith('@f') ? -2 : -3;\n const n = parseFloat(lower.slice(0, cut));\n return Number.isFinite(n) ? fs(n) : raw;\n }\n\n // Handle px explicitly (treat as absolute, not scaled)\n if (lower.endsWith('px')) {\n const n = parseFloat(lower.replace('px', ''));\n return Number.isFinite(n) ? n : raw;\n }\n\n // Plain numeric strings fall back to provided scaler\n const numeric = parseFloat(lower);\n if (Number.isFinite(numeric)) {\n return numeric;\n }\n\n // Unknown format, return as-is\n return raw;\n}\n","import type { NodeData } from '../types/Node';\nimport type { TextPropsGenerated } from '../build-components/Text/TextProps.generated';\nimport { fs, parseSize } from '../size-matters';\nimport { useRenderStore } from '../store';\n\nexport function extractTextStyle<T extends TextPropsGenerated['attributes']>(\n node: NodeData<T>,\n) {\n const attributes = node.attributes;\n //TODO: it should be passed as a prop to the function (need a state)\n const {\n appConfig: { screenStyle, theme },\n } = useRenderStore.getState();\n const fallbackColor =\n theme === 'light' ? screenStyle.light.color : screenStyle.dark.color;\n\n const style: React.CSSProperties = {};\n\n if (!attributes) {\n style.fontSize = fs(14);\n style.color = fallbackColor;\n return style;\n }\n\n // Typography\n if (attributes.fontSize !== undefined) {\n const parsed = parseSize(attributes.fontSize);\n style.fontSize = parsed as React.CSSProperties['fontSize'];\n } else {\n style.fontSize = fs(14);\n }\n if (attributes.fontWeight) style.fontWeight = attributes.fontWeight;\n style.color = attributes.color ?? fallbackColor;\n if (attributes.textAlign)\n style.textAlign = attributes.textAlign as React.CSSProperties['textAlign'];\n\n // Spacing\n // Shorthand\n if (attributes.padding !== undefined) style.padding = attributes.padding;\n if (attributes.margin !== undefined) style.margin = attributes.margin;\n\n // Axis shorthands\n if (attributes.paddingHorizontal !== undefined) {\n const v = parseSize(attributes.paddingHorizontal);\n style.paddingLeft = v as React.CSSProperties['paddingLeft'];\n style.paddingRight = v as React.CSSProperties['paddingRight'];\n }\n if (attributes.paddingVertical !== undefined) {\n const v = parseSize(attributes.paddingVertical);\n style.paddingTop = v as React.CSSProperties['paddingTop'];\n style.paddingBottom = v as React.CSSProperties['paddingBottom'];\n }\n if (attributes.marginHorizontal !== undefined) {\n const v = parseSize(attributes.marginHorizontal);\n style.marginLeft = v as React.CSSProperties['marginLeft'];\n style.marginRight = v as React.CSSProperties['marginRight'];\n }\n if (attributes.marginVertical !== undefined) {\n const v = parseSize(attributes.marginVertical);\n style.marginTop = v as React.CSSProperties['marginTop'];\n style.marginBottom = v as React.CSSProperties['marginBottom'];\n }\n\n // Edges\n if (attributes.paddingTop !== undefined)\n style.paddingTop = parseSize(\n attributes.paddingTop,\n ) as React.CSSProperties['paddingTop'];\n if (attributes.paddingBottom !== undefined)\n style.paddingBottom = parseSize(\n attributes.paddingBottom,\n ) as React.CSSProperties['paddingBottom'];\n if (attributes.paddingLeft !== undefined)\n style.paddingLeft = parseSize(\n attributes.paddingLeft,\n ) as React.CSSProperties['paddingLeft'];\n if (attributes.paddingRight !== undefined)\n style.paddingRight = parseSize(\n attributes.paddingRight,\n ) as React.CSSProperties['paddingRight'];\n\n if (attributes.marginTop !== undefined)\n style.marginTop = parseSize(\n attributes.marginTop,\n ) as React.CSSProperties['marginTop'];\n if (attributes.marginBottom !== undefined)\n style.marginBottom = parseSize(\n attributes.marginBottom,\n ) as React.CSSProperties['marginBottom'];\n if (attributes.marginLeft !== undefined)\n style.marginLeft = parseSize(\n attributes.marginLeft,\n ) as React.CSSProperties['marginLeft'];\n if (attributes.marginRight !== undefined)\n style.marginRight = parseSize(\n attributes.marginRight,\n ) as React.CSSProperties['marginRight'];\n\n // Decor\n if (attributes.backgroundColor)\n style.backgroundColor = attributes.backgroundColor;\n if (attributes.borderRadius !== undefined)\n style.borderRadius =\n attributes.borderRadius as React.CSSProperties['borderRadius'];\n\n // Dimensions (rare for text but supported by schema)\n if (attributes.width !== undefined) style.width = attributes.width;\n if (attributes.height !== undefined) style.height = attributes.height;\n\n return style;\n}\n","import React from 'react';\nimport type { OnboardFooterComponentProps } from './OnboardFooterProps.generated';\nimport useNode from '../useNode';\nimport { useRenderStore } from '../../store';\nimport { parseSize } from '../../size-matters';\nimport { extractTextStyle } from '../../utils/extractTextStyle';\n\ntype Segment =\n | { type: 'text'; value: string }\n | {\n type: 'match';\n value: string;\n color?: string;\n page?: string;\n };\n\nfunction escapeRegExp(str: string) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction buildSegments(\n text: string,\n patterns: { value: string; color?: string; page?: string }[],\n): { segments: Segment[]; matchCount: number } {\n type RawMatch = {\n start: number;\n end: number;\n value: string;\n color?: string;\n page?: string;\n };\n\n const rawMatches: RawMatch[] = [];\n\n for (const p of patterns) {\n if (!p.value) continue;\n const re = new RegExp(escapeRegExp(p.value), 'gi');\n for (const m of text.matchAll(re)) {\n if (m.index == null) continue;\n const matched = m[0];\n if (!matched) continue;\n rawMatches.push({\n start: m.index,\n end: m.index + matched.length,\n value: matched,\n color: p.color,\n page: p.page,\n });\n }\n }\n\n if (rawMatches.length === 0) {\n return { segments: [{ type: 'text', value: text }], matchCount: 0 };\n }\n\n rawMatches.sort((a, b) => {\n if (a.start !== b.start) return a.start - b.start;\n const lenA = a.end - a.start;\n const lenB = b.end - b.start;\n return lenB - lenA;\n });\n\n const kept: RawMatch[] = [];\n let lastEnd = -1;\n for (const m of rawMatches) {\n if (m.start >= lastEnd) {\n kept.push(m);\n lastEnd = m.end;\n }\n }\n\n const segments: Segment[] = [];\n let cursor = 0;\n for (const { start, end, value, color, page } of kept) {\n if (start > cursor) {\n segments.push({ type: 'text', value: text.slice(cursor, start) });\n }\n segments.push({ type: 'match', value, color, page });\n cursor = end;\n }\n if (cursor < text.length) {\n segments.push({ type: 'text', value: text.slice(cursor) });\n }\n\n return { segments, matchCount: kept.length };\n}\n\nfunction OnboardFooter({ node }: OnboardFooterComponentProps) {\n node = useNode(node);\n const { appConfig } = useRenderStore((s) => ({\n appConfig: s.appConfig,\n }));\n const { localication, defaultLanguage } = appConfig;\n const t = (key?: string) =>\n key ? (localication?.[defaultLanguage ?? 'en']?.[key] ?? key) : '';\n\n const text = t(node?.attributes?.textLocalizationKey);\n const style: React.CSSProperties = extractTextStyle(node);\n\n const linkStyle = (color?: string): React.CSSProperties => ({\n color,\n cursor: color ? 'pointer' : undefined,\n });\n\n const paddingHorizontal = parseSize(node?.attributes?.paddingHorizontal);\n return (\n <div\n style={{\n ...style,\n paddingLeft: paddingHorizontal,\n paddingRight: paddingHorizontal,\n textAlign: 'center',\n }}\n >\n {!!text &&\n (() => {\n const firstText = t(node?.attributes?.linkedWordFirstLocalizationKey);\n const secondText = t(\n node?.attributes?.linkedWordSecondLocalizationKey,\n );\n const { segments, matchCount } = buildSegments(text, [\n {\n value: firstText,\n color: node?.attributes?.linkedWordFirstColor,\n page: (node?.attributes as any)?.linkedWordFirstPage,\n },\n {\n value: secondText,\n color: node?.attributes?.linkedWordSecondColor,\n page: (node?.attributes as any)?.linkedWordSecondPage,\n },\n ]);\n\n const textColor = node?.attributes?.color;\n\n const handleClick = (page?: string) => {\n if (!page) return;\n };\n\n return (\n <>\n <p style={{ color: textColor, alignItems: 'center' }}>\n {segments.map((seg, i) =>\n seg.type === 'text' ? (\n <span key={i}>{seg.value}</span>\n ) : (\n <span\n key={i}\n style={linkStyle(seg.color)}\n onClick={() => handleClick(seg.page)}\n >\n {seg.value}\n </span>\n ),\n )}\n </p>\n {matchCount === 0 && (\n <div>\n {node?.attributes?.linkedWordFirstLocalizationKey && (\n <span\n style={linkStyle(node?.attributes?.linkedWordFirstColor)}\n onClick={() =>\n handleClick(\n (node?.attributes as any)?.linkedWordFirstPage,\n )\n }\n >\n {firstText}\n </span>\n )}\n {node?.attributes?.linkedWordSecondLocalizationKey && (\n <span\n style={linkStyle(node?.attributes?.linkedWordSecondColor)}\n onClick={() =>\n handleClick(\n (node?.attributes as any)?.linkedWordSecondPage,\n )\n }\n >\n {secondText}\n </span>\n )}\n </div>\n )}\n </>\n );\n })()}\n </div>\n );\n}\n\nexport default React.memo(OnboardFooter);\n","(typeof document !== \"undefined\") && (typeof navigator !== \"undefined\") && (function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lottie = factory());\n})(this, (function () { 'use strict';\n\n var svgNS = 'http://www.w3.org/2000/svg';\n var locationHref = '';\n var _useWebWorker = false;\n var initialDefaultFrame = -999999;\n var setWebWorker = function setWebWorker(flag) {\n _useWebWorker = !!flag;\n };\n var getWebWorker = function getWebWorker() {\n return _useWebWorker;\n };\n var setLocationHref = function setLocationHref(value) {\n locationHref = value;\n };\n var getLocationHref = function getLocationHref() {\n return locationHref;\n };\n\n function createTag(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElement(type);\n }\n\n function extendPrototype(sources, destination) {\n var i;\n var len = sources.length;\n var sourcePrototype;\n for (i = 0; i < len; i += 1) {\n sourcePrototype = sources[i].prototype;\n for (var attr in sourcePrototype) {\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\n }\n }\n }\n function getDescriptor(object, prop) {\n return Object.getOwnPropertyDescriptor(object, prop);\n }\n function createProxyFunction(prototype) {\n function ProxyFunction() {}\n ProxyFunction.prototype = prototype;\n return ProxyFunction;\n }\n\n // import Howl from '../../3rd_party/howler';\n\n var audioControllerFactory = function () {\n function AudioController(audioFactory) {\n this.audios = [];\n this.audioFactory = audioFactory;\n this._volume = 1;\n this._isMuted = false;\n }\n AudioController.prototype = {\n addAudio: function addAudio(audio) {\n this.audios.push(audio);\n },\n pause: function pause() {\n var i;\n var len = this.audios.length;\n for (i = 0; i < len; i += 1) {\n this.audios[i].pause();\n }\n },\n resume: function resume() {\n var i;\n var len = this.audios.length;\n for (i = 0; i < len; i += 1) {\n this.audios[i].resume();\n }\n },\n setRate: function setRate(rateValue) {\n var i;\n var len = this.audios.length;\n for (i = 0; i < len; i += 1) {\n this.audios[i].setRate(rateValue);\n }\n },\n createAudio: function createAudio(assetPath) {\n if (this.audioFactory) {\n return this.audioFactory(assetPath);\n }\n if (window.Howl) {\n return new window.Howl({\n src: [assetPath]\n });\n }\n return {\n isPlaying: false,\n play: function play() {\n this.isPlaying = true;\n },\n seek: function seek() {\n this.isPlaying = false;\n },\n playing: function playing() {},\n rate: function rate() {},\n setVolume: function setVolume() {}\n };\n },\n setAudioFactory: function setAudioFactory(audioFactory) {\n this.audioFactory = audioFactory;\n },\n setVolume: function setVolume(value) {\n this._volume = value;\n this._updateVolume();\n },\n mute: function mute() {\n this._isMuted = true;\n this._updateVolume();\n },\n unmute: function unmute() {\n this._isMuted = false;\n this._updateVolume();\n },\n getVolume: function getVolume() {\n return this._volume;\n },\n _updateVolume: function _updateVolume() {\n var i;\n var len = this.audios.length;\n for (i = 0; i < len; i += 1) {\n this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\n }\n }\n };\n return function () {\n return new AudioController();\n };\n }();\n\n var createTypedArray = function () {\n function createRegularArray(type, len) {\n var i = 0;\n var arr = [];\n var value;\n switch (type) {\n case 'int16':\n case 'uint8c':\n value = 1;\n break;\n default:\n value = 1.1;\n break;\n }\n for (i = 0; i < len; i += 1) {\n arr.push(value);\n }\n return arr;\n }\n function createTypedArrayFactory(type, len) {\n if (type === 'float32') {\n return new Float32Array(len);\n }\n if (type === 'int16') {\n return new Int16Array(len);\n }\n if (type === 'uint8c') {\n return new Uint8ClampedArray(len);\n }\n return createRegularArray(type, len);\n }\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\n return createTypedArrayFactory;\n }\n return createRegularArray;\n }();\n function createSizedArray(len) {\n return Array.apply(null, {\n length: len\n });\n }\n\n function _typeof$6(o) { \"@babel/helpers - typeof\"; return _typeof$6 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$6(o); }\n var subframeEnabled = true;\n var expressionsPlugin = null;\n var expressionsInterfaces = null;\n var idPrefix$1 = '';\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n var _shouldRoundValues = false;\n var bmPow = Math.pow;\n var bmSqrt = Math.sqrt;\n var bmFloor = Math.floor;\n var bmMax = Math.max;\n var bmMin = Math.min;\n var BMMath = {};\n (function () {\n var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2'];\n var i;\n var len = propertyNames.length;\n for (i = 0; i < len; i += 1) {\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\n }\n })();\n function ProjectInterface$1() {\n return {};\n }\n BMMath.random = Math.random;\n BMMath.abs = function (val) {\n var tOfVal = _typeof$6(val);\n if (tOfVal === 'object' && val.length) {\n var absArr = createSizedArray(val.length);\n var i;\n var len = val.length;\n for (i = 0; i < len; i += 1) {\n absArr[i] = Math.abs(val[i]);\n }\n return absArr;\n }\n return Math.abs(val);\n };\n var defaultCurveSegments = 150;\n var degToRads = Math.PI / 180;\n var roundCorner = 0.5519;\n function roundValues(flag) {\n _shouldRoundValues = !!flag;\n }\n function bmRnd(value) {\n if (_shouldRoundValues) {\n return Math.round(value);\n }\n return value;\n }\n function styleDiv(element) {\n element.style.position = 'absolute';\n element.style.top = 0;\n element.style.left = 0;\n element.style.display = 'block';\n element.style.transformOrigin = '0 0';\n element.style.webkitTransformOrigin = '0 0';\n element.style.backfaceVisibility = 'visible';\n element.style.webkitBackfaceVisibility = 'visible';\n element.style.transformStyle = 'preserve-3d';\n element.style.webkitTransformStyle = 'preserve-3d';\n element.style.mozTransformStyle = 'preserve-3d';\n }\n function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\n this.type = type;\n this.currentTime = currentTime;\n this.totalTime = totalTime;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n function BMCompleteEvent(type, frameMultiplier) {\n this.type = type;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\n this.type = type;\n this.currentLoop = currentLoop;\n this.totalLoops = totalLoops;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n function BMSegmentStartEvent(type, firstFrame, totalFrames) {\n this.type = type;\n this.firstFrame = firstFrame;\n this.totalFrames = totalFrames;\n }\n function BMDestroyEvent(type, target) {\n this.type = type;\n this.target = target;\n }\n function BMRenderFrameErrorEvent(nativeError, currentTime) {\n this.type = 'renderFrameError';\n this.nativeError = nativeError;\n this.currentTime = currentTime;\n }\n function BMConfigErrorEvent(nativeError) {\n this.type = 'configError';\n this.nativeError = nativeError;\n }\n function BMAnimationConfigErrorEvent(type, nativeError) {\n this.type = type;\n this.nativeError = nativeError;\n }\n var createElementID = function () {\n var _count = 0;\n return function createID() {\n _count += 1;\n return idPrefix$1 + '__lottie_element_' + _count;\n };\n }();\n function HSVtoRGB(h, s, v) {\n var r;\n var g;\n var b;\n var i;\n var f;\n var p;\n var q;\n var t;\n i = Math.floor(h * 6);\n f = h * 6 - i;\n p = v * (1 - s);\n q = v * (1 - f * s);\n t = v * (1 - (1 - f) * s);\n switch (i % 6) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n case 5:\n r = v;\n g = p;\n b = q;\n break;\n default:\n break;\n }\n return [r, g, b];\n }\n function RGBtoHSV(r, g, b) {\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var d = max - min;\n var h;\n var s = max === 0 ? 0 : d / max;\n var v = max / 255;\n switch (max) {\n case min:\n h = 0;\n break;\n case r:\n h = g - b + d * (g < b ? 6 : 0);\n h /= 6 * d;\n break;\n case g:\n h = b - r + d * 2;\n h /= 6 * d;\n break;\n case b:\n h = r - g + d * 4;\n h /= 6 * d;\n break;\n default:\n break;\n }\n return [h, s, v];\n }\n function addSaturationToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[1] += offset;\n if (hsv[1] > 1) {\n hsv[1] = 1;\n } else if (hsv[1] <= 0) {\n hsv[1] = 0;\n }\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n function addBrightnessToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[2] += offset;\n if (hsv[2] > 1) {\n hsv[2] = 1;\n } else if (hsv[2] < 0) {\n hsv[2] = 0;\n }\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n function addHueToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[0] += offset / 360;\n if (hsv[0] > 1) {\n hsv[0] -= 1;\n } else if (hsv[0] < 0) {\n hsv[0] += 1;\n }\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n var rgbToHex = function () {\n var colorMap = [];\n var i;\n var hex;\n for (i = 0; i < 256; i += 1) {\n hex = i.toString(16);\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\n }\n return function (r, g, b) {\n if (r < 0) {\n r = 0;\n }\n if (g < 0) {\n g = 0;\n }\n if (b < 0) {\n b = 0;\n }\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\n };\n }();\n var setSubframeEnabled = function setSubframeEnabled(flag) {\n subframeEnabled = !!flag;\n };\n var getSubframeEnabled = function getSubframeEnabled() {\n return subframeEnabled;\n };\n var setExpressionsPlugin = function setExpressionsPlugin(value) {\n expressionsPlugin = value;\n };\n var getExpressionsPlugin = function getExpressionsPlugin() {\n return expressionsPlugin;\n };\n var setExpressionInterfaces = function setExpressionInterfaces(value) {\n expressionsInterfaces = value;\n };\n var getExpressionInterfaces = function getExpressionInterfaces() {\n return expressionsInterfaces;\n };\n var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\n defaultCurveSegments = value;\n };\n var getDefaultCurveSegments = function getDefaultCurveSegments() {\n return defaultCurveSegments;\n };\n var setIdPrefix = function setIdPrefix(value) {\n idPrefix$1 = value;\n };\n var getIdPrefix = function getIdPrefix() {\n return idPrefix$1;\n };\n\n function createNS(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElementNS(svgNS, type);\n }\n\n function _typeof$5(o) { \"@babel/helpers - typeof\"; return _typeof$5 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$5(o); }\n var dataManager = function () {\n var _counterId = 1;\n var processes = [];\n var workerFn;\n var workerInstance;\n var workerProxy = {\n onmessage: function onmessage() {},\n postMessage: function postMessage(path) {\n workerFn({\n data: path\n });\n }\n };\n var _workerSelf = {\n postMessage: function postMessage(data) {\n workerProxy.onmessage({\n data: data\n });\n }\n };\n function createWorker(fn) {\n if (window.Worker && window.Blob && getWebWorker()) {\n var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], {\n type: 'text/javascript'\n });\n // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\n var url = URL.createObjectURL(blob);\n return new Worker(url);\n }\n workerFn = fn;\n return workerProxy;\n }\n function setupWorker() {\n if (!workerInstance) {\n workerInstance = createWorker(function workerStart(e) {\n function dataFunctionManager() {\n function completeLayers(layers, comps) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n if ('ks' in layerData && !layerData.completed) {\n layerData.completed = true;\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k);\n } else {\n kLen = maskProps[j].pt.k.length;\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\n }\n if (maskProps[j].pt.k[k].e) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\n }\n }\n }\n }\n }\n if (layerData.ty === 0) {\n layerData.layers = findCompLayers(layerData.refId, comps);\n completeLayers(layerData.layers, comps);\n } else if (layerData.ty === 4) {\n completeShapes(layerData.shapes);\n } else if (layerData.ty === 5) {\n completeText(layerData);\n }\n }\n }\n }\n function completeChars(chars, assets) {\n if (chars) {\n var i = 0;\n var len = chars.length;\n for (i = 0; i < len; i += 1) {\n if (chars[i].t === 1) {\n // var compData = findComp(chars[i].data.refId, assets);\n chars[i].data.layers = findCompLayers(chars[i].data.refId, assets);\n // chars[i].data.ip = 0;\n // chars[i].data.op = 99999;\n // chars[i].data.st = 0;\n // chars[i].data.sr = 1;\n // chars[i].w = compData.w;\n // chars[i].data.ks = {\n // a: { k: [0, 0, 0], a: 0 },\n // p: { k: [0, -compData.h, 0], a: 0 },\n // r: { k: 0, a: 0 },\n // s: { k: [100, 100], a: 0 },\n // o: { k: 100, a: 0 },\n // };\n completeLayers(chars[i].data.layers, assets);\n }\n }\n }\n }\n function findComp(id, comps) {\n var i = 0;\n var len = comps.length;\n while (i < len) {\n if (comps[i].id === id) {\n return comps[i];\n }\n i += 1;\n }\n return null;\n }\n function findCompLayers(id, comps) {\n var comp = findComp(id, comps);\n if (comp) {\n if (!comp.layers.__used) {\n comp.layers.__used = true;\n return comp.layers;\n }\n return JSON.parse(JSON.stringify(comp.layers));\n }\n return null;\n }\n function completeShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n convertPathsToAbsoluteValues(arr[i].ks.k);\n } else {\n jLen = arr[i].ks.k.length;\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\n }\n if (arr[i].ks.k[j].e) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeShapes(arr[i].it);\n }\n }\n }\n function convertPathsToAbsoluteValues(path) {\n var i;\n var len = path.i.length;\n for (i = 0; i < len; i += 1) {\n path.i[i][0] += path.v[i][0];\n path.i[i][1] += path.v[i][1];\n path.o[i][0] += path.v[i][0];\n path.o[i][1] += path.v[i][1];\n }\n }\n function checkVersion(minimum, animVersionString) {\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\n if (minimum[0] > animVersion[0]) {\n return true;\n }\n if (animVersion[0] > minimum[0]) {\n return false;\n }\n if (minimum[1] > animVersion[1]) {\n return true;\n }\n if (animVersion[1] > minimum[1]) {\n return false;\n }\n if (minimum[2] > animVersion[2]) {\n return true;\n }\n if (animVersion[2] > minimum[2]) {\n return false;\n }\n return null;\n }\n var checkText = function () {\n var minimumVersion = [4, 4, 14];\n function updateTextLayer(textLayer) {\n var documentData = textLayer.t.d;\n textLayer.t.d = {\n k: [{\n s: documentData,\n t: 0\n }]\n };\n }\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n var checkChars = function () {\n var minimumVersion = [4, 7, 99];\n return function (animationData) {\n if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\n var i;\n var len = animationData.chars.length;\n for (i = 0; i < len; i += 1) {\n var charData = animationData.chars[i];\n if (charData.data && charData.data.shapes) {\n completeShapes(charData.data.shapes);\n charData.data.ip = 0;\n charData.data.op = 99999;\n charData.data.st = 0;\n charData.data.sr = 1;\n charData.data.ks = {\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n }\n };\n if (!animationData.chars[i].t) {\n charData.data.shapes.push({\n ty: 'no'\n });\n charData.data.shapes[0].it.push({\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n },\n sk: {\n k: 0,\n a: 0\n },\n sa: {\n k: 0,\n a: 0\n },\n ty: 'tr'\n });\n }\n }\n }\n }\n };\n }();\n var checkPathProperties = function () {\n var minimumVersion = [5, 7, 15];\n function updateTextLayer(textLayer) {\n var pathData = textLayer.t.p;\n if (typeof pathData.a === 'number') {\n pathData.a = {\n a: 0,\n k: pathData.a\n };\n }\n if (typeof pathData.p === 'number') {\n pathData.p = {\n a: 0,\n k: pathData.p\n };\n }\n if (typeof pathData.r === 'number') {\n pathData.r = {\n a: 0,\n k: pathData.r\n };\n }\n }\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n var checkColors = function () {\n var minimumVersion = [4, 1, 9];\n function iterateShapes(shapes) {\n var i;\n var len = shapes.length;\n var j;\n var jLen;\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n iterateShapes(shapes[i].it);\n } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\n if (shapes[i].c.k && shapes[i].c.k[0].i) {\n jLen = shapes[i].c.k.length;\n for (j = 0; j < jLen; j += 1) {\n if (shapes[i].c.k[j].s) {\n shapes[i].c.k[j].s[0] /= 255;\n shapes[i].c.k[j].s[1] /= 255;\n shapes[i].c.k[j].s[2] /= 255;\n shapes[i].c.k[j].s[3] /= 255;\n }\n if (shapes[i].c.k[j].e) {\n shapes[i].c.k[j].e[0] /= 255;\n shapes[i].c.k[j].e[1] /= 255;\n shapes[i].c.k[j].e[2] /= 255;\n shapes[i].c.k[j].e[3] /= 255;\n }\n }\n } else {\n shapes[i].c.k[0] /= 255;\n shapes[i].c.k[1] /= 255;\n shapes[i].c.k[2] /= 255;\n shapes[i].c.k[3] /= 255;\n }\n }\n }\n }\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 4) {\n iterateShapes(layers[i].shapes);\n }\n }\n }\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n var checkShapes = function () {\n var minimumVersion = [4, 4, 18];\n function completeClosingShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n arr[i].ks.k.c = arr[i].closed;\n } else {\n jLen = arr[i].ks.k.length;\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n arr[i].ks.k[j].s[0].c = arr[i].closed;\n }\n if (arr[i].ks.k[j].e) {\n arr[i].ks.k[j].e[0].c = arr[i].closed;\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeClosingShapes(arr[i].it);\n }\n }\n }\n function iterateLayers(layers) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n maskProps[j].pt.k.c = maskProps[j].cl;\n } else {\n kLen = maskProps[j].pt.k.length;\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\n }\n if (maskProps[j].pt.k[k].e) {\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\n }\n }\n }\n }\n }\n if (layerData.ty === 4) {\n completeClosingShapes(layerData.shapes);\n }\n }\n }\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n function completeData(animationData) {\n if (animationData.__complete) {\n return;\n }\n checkColors(animationData);\n checkText(animationData);\n checkChars(animationData);\n checkPathProperties(animationData);\n checkShapes(animationData);\n completeLayers(animationData.layers, animationData.assets);\n completeChars(animationData.chars, animationData.assets);\n animationData.__complete = true;\n }\n function completeText(data) {\n if (data.t.a.length === 0 && !('m' in data.t.p)) {\n // data.singleShape = true;\n }\n }\n var moduleOb = {};\n moduleOb.completeData = completeData;\n moduleOb.checkColors = checkColors;\n moduleOb.checkChars = checkChars;\n moduleOb.checkPathProperties = checkPathProperties;\n moduleOb.checkShapes = checkShapes;\n moduleOb.completeLayers = completeLayers;\n return moduleOb;\n }\n if (!_workerSelf.dataManager) {\n _workerSelf.dataManager = dataFunctionManager();\n }\n if (!_workerSelf.assetLoader) {\n _workerSelf.assetLoader = function () {\n function formatResponse(xhr) {\n // using typeof doubles the time of execution of this method,\n // so if available, it's better to use the header to validate the type\n var contentTypeHeader = xhr.getResponseHeader('content-type');\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\n return xhr.response;\n }\n if (xhr.response && _typeof$5(xhr.response) === 'object') {\n return xhr.response;\n }\n if (xhr.response && typeof xhr.response === 'string') {\n return JSON.parse(xhr.response);\n }\n if (xhr.responseText) {\n return JSON.parse(xhr.responseText);\n }\n return null;\n }\n function loadAsset(path, fullPath, callback, errorCallback) {\n var response;\n var xhr = new XMLHttpRequest();\n // set responseType after calling open or IE will break.\n try {\n // This crashes on Android WebView prior to KitKat\n xhr.responseType = 'json';\n } catch (err) {} // eslint-disable-line no-empty\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n response = formatResponse(xhr);\n callback(response);\n } else {\n try {\n response = formatResponse(xhr);\n callback(response);\n } catch (err) {\n if (errorCallback) {\n errorCallback(err);\n }\n }\n }\n }\n };\n try {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), path, true);\n } catch (error) {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), fullPath + '/' + path, true);\n }\n xhr.send();\n }\n return {\n load: loadAsset\n };\n }();\n }\n if (e.data.type === 'loadAnimation') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.dataManager.completeData(data);\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n } else if (e.data.type === 'complete') {\n var animation = e.data.animation;\n _workerSelf.dataManager.completeData(animation);\n _workerSelf.postMessage({\n id: e.data.id,\n payload: animation,\n status: 'success'\n });\n } else if (e.data.type === 'loadData') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n }\n });\n workerInstance.onmessage = function (event) {\n var data = event.data;\n var id = data.id;\n var process = processes[id];\n processes[id] = null;\n if (data.status === 'success') {\n process.onComplete(data.payload);\n } else if (process.onError) {\n process.onError();\n }\n };\n }\n }\n function createProcess(onComplete, onError) {\n _counterId += 1;\n var id = 'processId_' + _counterId;\n processes[id] = {\n onComplete: onComplete,\n onError: onError\n };\n return id;\n }\n function loadAnimation(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadAnimation',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n function loadData(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadData',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n function completeAnimation(anim, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'complete',\n animation: anim,\n id: processId\n });\n }\n return {\n loadAnimation: loadAnimation,\n loadData: loadData,\n completeAnimation: completeAnimation\n };\n }();\n\n var ImagePreloader = function () {\n var proxyImage = function () {\n var canvas = createTag('canvas');\n canvas.width = 1;\n canvas.height = 1;\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = 'rgba(0,0,0,0)';\n ctx.fillRect(0, 0, 1, 1);\n return canvas;\n }();\n function imageLoaded() {\n this.loadedAssets += 1;\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n function footageLoaded() {\n this.loadedFootagesCount += 1;\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n function getAssetsPath(assetData, assetsPath, originalPath) {\n var path = '';\n if (assetData.e) {\n path = assetData.p;\n } else if (assetsPath) {\n var imagePath = assetData.p;\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n path = assetsPath + imagePath;\n } else {\n path = originalPath;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n return path;\n }\n function testImageLoaded(img) {\n var _count = 0;\n var intervalId = setInterval(function () {\n var box = img.getBBox();\n if (box.width || _count > 500) {\n this._imageLoaded();\n clearInterval(intervalId);\n }\n _count += 1;\n }.bind(this), 50);\n }\n function createImageData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createNS('image');\n if (isSafari) {\n this.testImageLoaded(img);\n } else {\n img.addEventListener('load', this._imageLoaded, false);\n }\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n this._imageLoaded();\n }.bind(this), false);\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n if (this._elementHelper.append) {\n this._elementHelper.append(img);\n } else {\n this._elementHelper.appendChild(img);\n }\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n function createImgData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createTag('img');\n img.crossOrigin = 'anonymous';\n img.addEventListener('load', this._imageLoaded, false);\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n this._imageLoaded();\n }.bind(this), false);\n img.src = path;\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n function createFootageData(data) {\n var ob = {\n assetData: data\n };\n var path = getAssetsPath(data, this.assetsPath, this.path);\n dataManager.loadData(path, function (footageData) {\n ob.img = footageData;\n this._footageLoaded();\n }.bind(this), function () {\n ob.img = {};\n this._footageLoaded();\n }.bind(this));\n return ob;\n }\n function loadAssets(assets, cb) {\n this.imagesLoadedCb = cb;\n var i;\n var len = assets.length;\n for (i = 0; i < len; i += 1) {\n if (!assets[i].layers) {\n if (!assets[i].t || assets[i].t === 'seq') {\n this.totalImages += 1;\n this.images.push(this._createImageData(assets[i]));\n } else if (assets[i].t === 3) {\n this.totalFootages += 1;\n this.images.push(this.createFootageData(assets[i]));\n }\n }\n }\n }\n function setPath(path) {\n this.path = path || '';\n }\n function setAssetsPath(path) {\n this.assetsPath = path || '';\n }\n function getAsset(assetData) {\n var i = 0;\n var len = this.images.length;\n while (i < len) {\n if (this.images[i].assetData === assetData) {\n return this.images[i].img;\n }\n i += 1;\n }\n return null;\n }\n function destroy() {\n this.imagesLoadedCb = null;\n this.images.length = 0;\n }\n function loadedImages() {\n return this.totalImages === this.loadedAssets;\n }\n function loadedFootages() {\n return this.totalFootages === this.loadedFootagesCount;\n }\n function setCacheType(type, elementHelper) {\n if (type === 'svg') {\n this._elementHelper = elementHelper;\n this._createImageData = this.createImageData.bind(this);\n } else {\n this._createImageData = this.createImgData.bind(this);\n }\n }\n function ImagePreloaderFactory() {\n this._imageLoaded = imageLoaded.bind(this);\n this._footageLoaded = footageLoaded.bind(this);\n this.testImageLoaded = testImageLoaded.bind(this);\n this.createFootageData = createFootageData.bind(this);\n this.assetsPath = '';\n this.path = '';\n this.totalImages = 0;\n this.totalFootages = 0;\n this.loadedAssets = 0;\n this.loadedFootagesCount = 0;\n this.imagesLoadedCb = null;\n this.images = [];\n }\n ImagePreloaderFactory.prototype = {\n loadAssets: loadAssets,\n setAssetsPath: setAssetsPath,\n setPath: setPath,\n loadedImages: loadedImages,\n loadedFootages: loadedFootages,\n destroy: destroy,\n getAsset: getAsset,\n createImgData: createImgData,\n createImageData: createImageData,\n imageLoaded: imageLoaded,\n footageLoaded: footageLoaded,\n setCacheType: setCacheType\n };\n return ImagePreloaderFactory;\n }();\n\n function BaseEvent() {}\n BaseEvent.prototype = {\n triggerEvent: function triggerEvent(eventName, args) {\n if (this._cbs[eventName]) {\n var callbacks = this._cbs[eventName];\n for (var i = 0; i < callbacks.length; i += 1) {\n callbacks[i](args);\n }\n }\n },\n addEventListener: function addEventListener(eventName, callback) {\n if (!this._cbs[eventName]) {\n this._cbs[eventName] = [];\n }\n this._cbs[eventName].push(callback);\n return function () {\n this.removeEventListener(eventName, callback);\n }.bind(this);\n },\n removeEventListener: function removeEventListener(eventName, callback) {\n if (!callback) {\n this._cbs[eventName] = null;\n } else if (this._cbs[eventName]) {\n var i = 0;\n var len = this._cbs[eventName].length;\n while (i < len) {\n if (this._cbs[eventName][i] === callback) {\n this._cbs[eventName].splice(i, 1);\n i -= 1;\n len -= 1;\n }\n i += 1;\n }\n if (!this._cbs[eventName].length) {\n this._cbs[eventName] = null;\n }\n }\n }\n };\n\n var markerParser = function () {\n function parsePayloadLines(payload) {\n var lines = payload.split('\\r\\n');\n var keys = {};\n var line;\n var keysCount = 0;\n for (var i = 0; i < lines.length; i += 1) {\n line = lines[i].split(':');\n if (line.length === 2) {\n keys[line[0]] = line[1].trim();\n keysCount += 1;\n }\n }\n if (keysCount === 0) {\n throw new Error();\n }\n return keys;\n }\n return function (_markers) {\n var markers = [];\n for (var i = 0; i < _markers.length; i += 1) {\n var _marker = _markers[i];\n var markerData = {\n time: _marker.tm,\n duration: _marker.dr\n };\n try {\n markerData.payload = JSON.parse(_markers[i].cm);\n } catch (_) {\n try {\n markerData.payload = parsePayloadLines(_markers[i].cm);\n } catch (__) {\n markerData.payload = {\n name: _markers[i].cm\n };\n }\n }\n markers.push(markerData);\n }\n return markers;\n };\n }();\n\n var ProjectInterface = function () {\n function registerComposition(comp) {\n this.compositions.push(comp);\n }\n return function () {\n function _thisProjectFunction(name) {\n var i = 0;\n var len = this.compositions.length;\n while (i < len) {\n if (this.compositions[i].data && this.compositions[i].data.nm === name) {\n if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\n this.compositions[i].prepareFrame(this.currentFrame);\n }\n return this.compositions[i].compInterface;\n }\n i += 1;\n }\n return null;\n }\n _thisProjectFunction.compositions = [];\n _thisProjectFunction.currentFrame = 0;\n _thisProjectFunction.registerComposition = registerComposition;\n return _thisProjectFunction;\n };\n }();\n\n var renderers = {};\n var registerRenderer = function registerRenderer(key, value) {\n renderers[key] = value;\n };\n function getRenderer(key) {\n return renderers[key];\n }\n function getRegisteredRenderer() {\n // Returns canvas by default for compatibility\n if (renderers.canvas) {\n return 'canvas';\n }\n // Returns any renderer that is registered\n for (var key in renderers) {\n if (renderers[key]) {\n return key;\n }\n }\n return '';\n }\n\n function _typeof$4(o) { \"@babel/helpers - typeof\"; return _typeof$4 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$4(o); }\n var AnimationItem = function AnimationItem() {\n this._cbs = [];\n this.name = '';\n this.path = '';\n this.isLoaded = false;\n this.currentFrame = 0;\n this.currentRawFrame = 0;\n this.firstFrame = 0;\n this.totalFrames = 0;\n this.frameRate = 0;\n this.frameMult = 0;\n this.playSpeed = 1;\n this.playDirection = 1;\n this.playCount = 0;\n this.animationData = {};\n this.assets = [];\n this.isPaused = true;\n this.autoplay = false;\n this.loop = true;\n this.renderer = null;\n this.animationID = createElementID();\n this.assetsPath = '';\n this.timeCompleted = 0;\n this.segmentPos = 0;\n this.isSubframeEnabled = getSubframeEnabled();\n this.segments = [];\n this._idle = true;\n this._completedLoop = false;\n this.projectInterface = ProjectInterface();\n this.imagePreloader = new ImagePreloader();\n this.audioController = audioControllerFactory();\n this.markers = [];\n this.configAnimation = this.configAnimation.bind(this);\n this.onSetupError = this.onSetupError.bind(this);\n this.onSegmentComplete = this.onSegmentComplete.bind(this);\n this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0);\n this.expressionsPlugin = getExpressionsPlugin();\n };\n extendPrototype([BaseEvent], AnimationItem);\n AnimationItem.prototype.setParams = function (params) {\n if (params.wrapper || params.container) {\n this.wrapper = params.wrapper || params.container;\n }\n var animType = 'svg';\n if (params.animType) {\n animType = params.animType;\n } else if (params.renderer) {\n animType = params.renderer;\n }\n var RendererClass = getRenderer(animType);\n this.renderer = new RendererClass(this, params.rendererSettings);\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\n this.renderer.setProjectInterface(this.projectInterface);\n this.animType = animType;\n if (params.loop === '' || params.loop === null || params.loop === undefined || params.loop === true) {\n this.loop = true;\n } else if (params.loop === false) {\n this.loop = false;\n } else {\n this.loop = parseInt(params.loop, 10);\n }\n this.autoplay = 'autoplay' in params ? params.autoplay : true;\n this.name = params.name ? params.name : '';\n this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\n this.assetsPath = params.assetsPath;\n this.initialSegment = params.initialSegment;\n if (params.audioFactory) {\n this.audioController.setAudioFactory(params.audioFactory);\n }\n if (params.animationData) {\n this.setupAnimation(params.animationData);\n } else if (params.path) {\n if (params.path.lastIndexOf('\\\\') !== -1) {\n this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\n } else {\n this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\n }\n this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\n this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\n dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError);\n }\n };\n AnimationItem.prototype.onSetupError = function () {\n this.trigger('data_failed');\n };\n AnimationItem.prototype.setupAnimation = function (data) {\n dataManager.completeAnimation(data, this.configAnimation);\n };\n AnimationItem.prototype.setData = function (wrapper, animationData) {\n if (animationData) {\n if (_typeof$4(animationData) !== 'object') {\n animationData = JSON.parse(animationData);\n }\n }\n var params = {\n wrapper: wrapper,\n animationData: animationData\n };\n var wrapperAttributes = wrapper.attributes;\n params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : getRegisteredRenderer() || 'canvas';\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';\n if (loop === 'false') {\n params.loop = false;\n } else if (loop === 'true') {\n params.loop = true;\n } else if (loop !== '') {\n params.loop = parseInt(loop, 10);\n }\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;\n params.autoplay = autoplay !== 'false';\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';\n if (prerender === 'false') {\n params.prerender = false;\n }\n if (!params.path) {\n this.trigger('destroy');\n } else {\n this.setParams(params);\n }\n };\n AnimationItem.prototype.includeLayers = function (data) {\n if (data.op > this.animationData.op) {\n this.animationData.op = data.op;\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\n }\n var layers = this.animationData.layers;\n var i;\n var len = layers.length;\n var newLayers = data.layers;\n var j;\n var jLen = newLayers.length;\n for (j = 0; j < jLen; j += 1) {\n i = 0;\n while (i < len) {\n if (layers[i].id === newLayers[j].id) {\n layers[i] = newLayers[j];\n break;\n }\n i += 1;\n }\n }\n if (data.chars || data.fonts) {\n this.renderer.globalData.fontManager.addChars(data.chars);\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\n }\n if (data.assets) {\n len = data.assets.length;\n for (i = 0; i < len; i += 1) {\n this.animationData.assets.push(data.assets[i]);\n }\n }\n this.animationData.__complete = false;\n dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\n };\n AnimationItem.prototype.onSegmentComplete = function (data) {\n this.animationData = data;\n var expressionsPlugin = getExpressionsPlugin();\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n this.loadNextSegment();\n };\n AnimationItem.prototype.loadNextSegment = function () {\n var segments = this.animationData.segments;\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\n this.trigger('data_ready');\n this.timeCompleted = this.totalFrames;\n return;\n }\n var segment = segments.shift();\n this.timeCompleted = segment.time * this.frameRate;\n var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\n this.segmentPos += 1;\n dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\n this.trigger('data_failed');\n }.bind(this));\n };\n AnimationItem.prototype.loadSegments = function () {\n var segments = this.animationData.segments;\n if (!segments) {\n this.timeCompleted = this.totalFrames;\n }\n this.loadNextSegment();\n };\n AnimationItem.prototype.imagesLoaded = function () {\n this.trigger('loaded_images');\n this.checkLoaded();\n };\n AnimationItem.prototype.preloadImages = function () {\n this.imagePreloader.setAssetsPath(this.assetsPath);\n this.imagePreloader.setPath(this.path);\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\n };\n AnimationItem.prototype.configAnimation = function (animData) {\n if (!this.renderer) {\n return;\n }\n try {\n this.animationData = animData;\n if (this.initialSegment) {\n this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\n this.firstFrame = Math.round(this.initialSegment[0]);\n } else {\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\n this.firstFrame = Math.round(this.animationData.ip);\n }\n this.renderer.configAnimation(animData);\n if (!animData.assets) {\n animData.assets = [];\n }\n this.assets = this.animationData.assets;\n this.frameRate = this.animationData.fr;\n this.frameMult = this.animationData.fr / 1000;\n this.renderer.searchExtraCompositions(animData.assets);\n this.markers = markerParser(animData.markers || []);\n this.trigger('config_ready');\n this.preloadImages();\n this.loadSegments();\n this.updaFrameModifier();\n this.waitForFontsLoaded();\n if (this.isPaused) {\n this.audioController.pause();\n }\n } catch (error) {\n this.triggerConfigError(error);\n }\n };\n AnimationItem.prototype.waitForFontsLoaded = function () {\n if (!this.renderer) {\n return;\n }\n if (this.renderer.globalData.fontManager.isLoaded) {\n this.checkLoaded();\n } else {\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\n }\n };\n AnimationItem.prototype.checkLoaded = function () {\n if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') && this.imagePreloader.loadedFootages()) {\n this.isLoaded = true;\n var expressionsPlugin = getExpressionsPlugin();\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n this.renderer.initItems();\n setTimeout(function () {\n this.trigger('DOMLoaded');\n }.bind(this), 0);\n this.gotoFrame();\n if (this.autoplay) {\n this.play();\n }\n }\n };\n AnimationItem.prototype.resize = function (width, height) {\n // Adding this validation for backwards compatibility in case an event object was being passed down\n var _width = typeof width === 'number' ? width : undefined;\n var _height = typeof height === 'number' ? height : undefined;\n this.renderer.updateContainerSize(_width, _height);\n };\n AnimationItem.prototype.setSubframe = function (flag) {\n this.isSubframeEnabled = !!flag;\n };\n AnimationItem.prototype.gotoFrame = function () {\n this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\n\n if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\n this.currentFrame = this.timeCompleted;\n }\n this.trigger('enterFrame');\n this.renderFrame();\n this.trigger('drawnFrame');\n };\n AnimationItem.prototype.renderFrame = function () {\n if (this.isLoaded === false || !this.renderer) {\n return;\n }\n try {\n if (this.expressionsPlugin) {\n this.expressionsPlugin.resetFrame();\n }\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\n } catch (error) {\n this.triggerRenderFrameError(error);\n }\n };\n AnimationItem.prototype.play = function (name) {\n if (name && this.name !== name) {\n return;\n }\n if (this.isPaused === true) {\n this.isPaused = false;\n this.trigger('_play');\n this.audioController.resume();\n if (this._idle) {\n this._idle = false;\n this.trigger('_active');\n }\n }\n };\n AnimationItem.prototype.pause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n if (this.isPaused === false) {\n this.isPaused = true;\n this.trigger('_pause');\n this._idle = true;\n this.trigger('_idle');\n this.audioController.pause();\n }\n };\n AnimationItem.prototype.togglePause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n if (this.isPaused === true) {\n this.play();\n } else {\n this.pause();\n }\n };\n AnimationItem.prototype.stop = function (name) {\n if (name && this.name !== name) {\n return;\n }\n this.pause();\n this.playCount = 0;\n this._completedLoop = false;\n this.setCurrentRawFrameValue(0);\n };\n AnimationItem.prototype.getMarkerData = function (markerName) {\n var marker;\n for (var i = 0; i < this.markers.length; i += 1) {\n marker = this.markers[i];\n if (marker.payload && marker.payload.name === markerName) {\n return marker;\n }\n }\n return null;\n };\n AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n var numValue = Number(value);\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n if (marker) {\n this.goToAndStop(marker.time, true);\n }\n } else if (isFrame) {\n this.setCurrentRawFrameValue(value);\n } else {\n this.setCurrentRawFrameValue(value * this.frameModifier);\n }\n this.pause();\n };\n AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n var numValue = Number(value);\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n if (marker) {\n if (!marker.duration) {\n this.goToAndStop(marker.time, true);\n } else {\n this.playSegments([marker.time, marker.time + marker.duration], true);\n }\n }\n } else {\n this.goToAndStop(numValue, isFrame, name);\n }\n this.play();\n };\n AnimationItem.prototype.advanceTime = function (value) {\n if (this.isPaused === true || this.isLoaded === false) {\n return;\n }\n var nextValue = this.currentRawFrame + value * this.frameModifier;\n var _isComplete = false;\n // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\n // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\n if (!this.loop || this.playCount === this.loop) {\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\n _isComplete = true;\n nextValue = this.totalFrames - 1;\n }\n } else if (nextValue >= this.totalFrames) {\n this.playCount += 1;\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n this.setCurrentRawFrameValue(nextValue % this.totalFrames);\n this._completedLoop = true;\n this.trigger('loopComplete');\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n } else if (nextValue < 0) {\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\n // eslint-disable-line no-plusplus\n this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames);\n if (!this._completedLoop) {\n this._completedLoop = true;\n } else {\n this.trigger('loopComplete');\n }\n } else {\n _isComplete = true;\n nextValue = 0;\n }\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n if (_isComplete) {\n this.setCurrentRawFrameValue(nextValue);\n this.pause();\n this.trigger('complete');\n }\n };\n AnimationItem.prototype.adjustSegment = function (arr, offset) {\n this.playCount = 0;\n if (arr[1] < arr[0]) {\n if (this.frameModifier > 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(-1);\n }\n }\n this.totalFrames = arr[0] - arr[1];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[1];\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\n } else if (arr[1] > arr[0]) {\n if (this.frameModifier < 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(1);\n }\n }\n this.totalFrames = arr[1] - arr[0];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[0];\n this.setCurrentRawFrameValue(0.001 + offset);\n }\n this.trigger('segmentStart');\n };\n AnimationItem.prototype.setSegment = function (init, end) {\n var pendingFrame = -1;\n if (this.isPaused) {\n if (this.currentRawFrame + this.firstFrame < init) {\n pendingFrame = init;\n } else if (this.currentRawFrame + this.firstFrame > end) {\n pendingFrame = end - init;\n }\n }\n this.firstFrame = init;\n this.totalFrames = end - init;\n this.timeCompleted = this.totalFrames;\n if (pendingFrame !== -1) {\n this.goToAndStop(pendingFrame, true);\n }\n };\n AnimationItem.prototype.playSegments = function (arr, forceFlag) {\n if (forceFlag) {\n this.segments.length = 0;\n }\n if (_typeof$4(arr[0]) === 'object') {\n var i;\n var len = arr.length;\n for (i = 0; i < len; i += 1) {\n this.segments.push(arr[i]);\n }\n } else {\n this.segments.push(arr);\n }\n if (this.segments.length && forceFlag) {\n this.adjustSegment(this.segments.shift(), 0);\n }\n if (this.isPaused) {\n this.play();\n }\n };\n AnimationItem.prototype.resetSegments = function (forceFlag) {\n this.segments.length = 0;\n this.segments.push([this.animationData.ip, this.animationData.op]);\n if (forceFlag) {\n this.checkSegments(0);\n }\n };\n AnimationItem.prototype.checkSegments = function (offset) {\n if (this.segments.length) {\n this.adjustSegment(this.segments.shift(), offset);\n return true;\n }\n return false;\n };\n AnimationItem.prototype.destroy = function (name) {\n if (name && this.name !== name || !this.renderer) {\n return;\n }\n this.renderer.destroy();\n this.imagePreloader.destroy();\n this.trigger('destroy');\n this._cbs = null;\n this.onEnterFrame = null;\n this.onLoopComplete = null;\n this.onComplete = null;\n this.onSegmentStart = null;\n this.onDestroy = null;\n this.renderer = null;\n this.expressionsPlugin = null;\n this.imagePreloader = null;\n this.projectInterface = null;\n };\n AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\n this.currentRawFrame = value;\n this.gotoFrame();\n };\n AnimationItem.prototype.setSpeed = function (val) {\n this.playSpeed = val;\n this.updaFrameModifier();\n };\n AnimationItem.prototype.setDirection = function (val) {\n this.playDirection = val < 0 ? -1 : 1;\n this.updaFrameModifier();\n };\n AnimationItem.prototype.setLoop = function (isLooping) {\n this.loop = isLooping;\n };\n AnimationItem.prototype.setVolume = function (val, name) {\n if (name && this.name !== name) {\n return;\n }\n this.audioController.setVolume(val);\n };\n AnimationItem.prototype.getVolume = function () {\n return this.audioController.getVolume();\n };\n AnimationItem.prototype.mute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n this.audioController.mute();\n };\n AnimationItem.prototype.unmute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n this.audioController.unmute();\n };\n AnimationItem.prototype.updaFrameModifier = function () {\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\n this.audioController.setRate(this.playSpeed * this.playDirection);\n };\n AnimationItem.prototype.getPath = function () {\n return this.path;\n };\n AnimationItem.prototype.getAssetsPath = function (assetData) {\n var path = '';\n if (assetData.e) {\n path = assetData.p;\n } else if (this.assetsPath) {\n var imagePath = assetData.p;\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n path = this.assetsPath + imagePath;\n } else {\n path = this.path;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n return path;\n };\n AnimationItem.prototype.getAssetData = function (id) {\n var i = 0;\n var len = this.assets.length;\n while (i < len) {\n if (id === this.assets[i].id) {\n return this.assets[i];\n }\n i += 1;\n }\n return null;\n };\n AnimationItem.prototype.hide = function () {\n this.renderer.hide();\n };\n AnimationItem.prototype.show = function () {\n this.renderer.show();\n };\n AnimationItem.prototype.getDuration = function (isFrame) {\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\n };\n AnimationItem.prototype.updateDocumentData = function (path, documentData, index) {\n try {\n var element = this.renderer.getElementByPath(path);\n element.updateDocumentData(documentData, index);\n } catch (error) {\n // TODO: decide how to handle catch case\n }\n };\n AnimationItem.prototype.trigger = function (name) {\n if (this._cbs && this._cbs[name]) {\n switch (name) {\n case 'enterFrame':\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\n break;\n case 'drawnFrame':\n this.drawnFrameEvent.currentTime = this.currentFrame;\n this.drawnFrameEvent.totalTime = this.totalFrames;\n this.drawnFrameEvent.direction = this.frameModifier;\n this.triggerEvent(name, this.drawnFrameEvent);\n break;\n case 'loopComplete':\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n break;\n case 'complete':\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\n break;\n case 'segmentStart':\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n break;\n case 'destroy':\n this.triggerEvent(name, new BMDestroyEvent(name, this));\n break;\n default:\n this.triggerEvent(name);\n }\n }\n if (name === 'enterFrame' && this.onEnterFrame) {\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\n }\n if (name === 'loopComplete' && this.onLoopComplete) {\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n }\n if (name === 'complete' && this.onComplete) {\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\n }\n if (name === 'segmentStart' && this.onSegmentStart) {\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n }\n if (name === 'destroy' && this.onDestroy) {\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\n }\n };\n AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n AnimationItem.prototype.triggerConfigError = function (nativeError) {\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n var animationManager = function () {\n var moduleOb = {};\n var registeredAnimations = [];\n var initTime = 0;\n var len = 0;\n var playingAnimationsNum = 0;\n var _stopped = true;\n var _isFrozen = false;\n function removeElement(ev) {\n var i = 0;\n var animItem = ev.target;\n while (i < len) {\n if (registeredAnimations[i].animation === animItem) {\n registeredAnimations.splice(i, 1);\n i -= 1;\n len -= 1;\n if (!animItem.isPaused) {\n subtractPlayingCount();\n }\n }\n i += 1;\n }\n }\n function registerAnimation(element, animationData) {\n if (!element) {\n return null;\n }\n var i = 0;\n while (i < len) {\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\n return registeredAnimations[i].animation;\n }\n i += 1;\n }\n var animItem = new AnimationItem();\n setupAnimation(animItem, element);\n animItem.setData(element, animationData);\n return animItem;\n }\n function getRegisteredAnimations() {\n var i;\n var lenAnims = registeredAnimations.length;\n var animations = [];\n for (i = 0; i < lenAnims; i += 1) {\n animations.push(registeredAnimations[i].animation);\n }\n return animations;\n }\n function addPlayingCount() {\n playingAnimationsNum += 1;\n activate();\n }\n function subtractPlayingCount() {\n playingAnimationsNum -= 1;\n }\n function setupAnimation(animItem, element) {\n animItem.addEventListener('destroy', removeElement);\n animItem.addEventListener('_active', addPlayingCount);\n animItem.addEventListener('_idle', subtractPlayingCount);\n registeredAnimations.push({\n elem: element,\n animation: animItem\n });\n len += 1;\n }\n function loadAnimation(params) {\n var animItem = new AnimationItem();\n setupAnimation(animItem, null);\n animItem.setParams(params);\n return animItem;\n }\n function setSpeed(val, animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setSpeed(val, animation);\n }\n }\n function setDirection(val, animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setDirection(val, animation);\n }\n }\n function play(animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.play(animation);\n }\n }\n function resume(nowTime) {\n var elapsedTime = nowTime - initTime;\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.advanceTime(elapsedTime);\n }\n initTime = nowTime;\n if (playingAnimationsNum && !_isFrozen) {\n window.requestAnimationFrame(resume);\n } else {\n _stopped = true;\n }\n }\n function first(nowTime) {\n initTime = nowTime;\n window.requestAnimationFrame(resume);\n }\n function pause(animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.pause(animation);\n }\n }\n function goToAndStop(value, isFrame, animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\n }\n }\n function stop(animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.stop(animation);\n }\n }\n function togglePause(animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.togglePause(animation);\n }\n }\n function destroy(animation) {\n var i;\n for (i = len - 1; i >= 0; i -= 1) {\n registeredAnimations[i].animation.destroy(animation);\n }\n }\n function searchAnimations(animationData, standalone, renderer) {\n var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')), [].slice.call(document.getElementsByClassName('bodymovin')));\n var i;\n var lenAnims = animElements.length;\n for (i = 0; i < lenAnims; i += 1) {\n if (renderer) {\n animElements[i].setAttribute('data-bm-type', renderer);\n }\n registerAnimation(animElements[i], animationData);\n }\n if (standalone && lenAnims === 0) {\n if (!renderer) {\n renderer = 'svg';\n }\n var body = document.getElementsByTagName('body')[0];\n body.innerText = '';\n var div = createTag('div');\n div.style.width = '100%';\n div.style.height = '100%';\n div.setAttribute('data-bm-type', renderer);\n body.appendChild(div);\n registerAnimation(div, animationData);\n }\n }\n function resize() {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.resize();\n }\n }\n function activate() {\n if (!_isFrozen && playingAnimationsNum) {\n if (_stopped) {\n window.requestAnimationFrame(first);\n _stopped = false;\n }\n }\n }\n function freeze() {\n _isFrozen = true;\n }\n function unfreeze() {\n _isFrozen = false;\n activate();\n }\n function setVolume(val, animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setVolume(val, animation);\n }\n }\n function mute(animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.mute(animation);\n }\n }\n function unmute(animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.unmute(animation);\n }\n }\n moduleOb.registerAnimation = registerAnimation;\n moduleOb.loadAnimation = loadAnimation;\n moduleOb.setSpeed = setSpeed;\n moduleOb.setDirection = setDirection;\n moduleOb.play = play;\n moduleOb.pause = pause;\n moduleOb.stop = stop;\n moduleOb.togglePause = togglePause;\n moduleOb.searchAnimations = searchAnimations;\n moduleOb.resize = resize;\n // moduleOb.start = start;\n moduleOb.goToAndStop = goToAndStop;\n moduleOb.destroy = destroy;\n moduleOb.freeze = freeze;\n moduleOb.unfreeze = unfreeze;\n moduleOb.setVolume = setVolume;\n moduleOb.mute = mute;\n moduleOb.unmute = unmute;\n moduleOb.getRegisteredAnimations = getRegisteredAnimations;\n return moduleOb;\n }();\n\n /* eslint-disable */\n var BezierFactory = function () {\n /**\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n *\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\n * Usage:\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\n *\n */\n\n var ob = {};\n ob.getBezierEasing = getBezierEasing;\n var beziers = {};\n function getBezierEasing(a, b, c, d, nm) {\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\n if (beziers[str]) {\n return beziers[str];\n }\n var bezEasing = new BezierEasing([a, b, c, d]);\n beziers[str] = bezEasing;\n return bezEasing;\n }\n\n // These values are established by empiricism with tests (tradeoff: performance VS precision)\n var NEWTON_ITERATIONS = 4;\n var NEWTON_MIN_SLOPE = 0.001;\n var SUBDIVISION_PRECISION = 0.0000001;\n var SUBDIVISION_MAX_ITERATIONS = 10;\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n var float32ArraySupported = typeof Float32Array === 'function';\n function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n function C(aA1) {\n return 3.0 * aA1;\n }\n\n // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n }\n\n // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n function getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n }\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX,\n currentT,\n i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n return currentT;\n }\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) return aGuessT;\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n }\n\n /**\n * points is an array of [ mX1, mY1, mX2, mY2 ]\n */\n function BezierEasing(points) {\n this._p = points;\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n this._precomputed = false;\n this.get = this.get.bind(this);\n }\n BezierEasing.prototype = {\n get: function get(x) {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n if (!this._precomputed) this._precompute();\n if (mX1 === mY1 && mX2 === mY2) return x; // linear\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n if (x === 0) return 0;\n if (x === 1) return 1;\n return calcBezier(this._getTForX(x), mY1, mY2);\n },\n // Private part\n\n _precompute: function _precompute() {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n this._precomputed = true;\n if (mX1 !== mY1 || mX2 !== mY2) {\n this._calcSampleValues();\n }\n },\n _calcSampleValues: function _calcSampleValues() {\n var mX1 = this._p[0],\n mX2 = this._p[2];\n for (var i = 0; i < kSplineTableSize; ++i) {\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n },\n /**\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\n */\n _getTForX: function _getTForX(aX) {\n var mX1 = this._p[0],\n mX2 = this._p[2],\n mSampleValues = this._mSampleValues;\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n --currentSample;\n\n // Interpolate to provide an initial guess for t\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n }\n if (initialSlope === 0.0) {\n return guessForT;\n }\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n };\n return ob;\n }();\n\n var pooling = function () {\n function _double(arr) {\n return arr.concat(createSizedArray(arr.length));\n }\n return {\n \"double\": _double\n };\n }();\n\n var poolFactory = function () {\n return function (initialLength, _create, _release) {\n var _length = 0;\n var _maxLength = initialLength;\n var pool = createSizedArray(_maxLength);\n var ob = {\n newElement: newElement,\n release: release\n };\n function newElement() {\n var element;\n if (_length) {\n _length -= 1;\n element = pool[_length];\n } else {\n element = _create();\n }\n return element;\n }\n function release(element) {\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n if (_release) {\n _release(element);\n }\n pool[_length] = element;\n _length += 1;\n }\n return ob;\n };\n }();\n\n var bezierLengthPool = function () {\n function create() {\n return {\n addedLength: 0,\n percents: createTypedArray('float32', getDefaultCurveSegments()),\n lengths: createTypedArray('float32', getDefaultCurveSegments())\n };\n }\n return poolFactory(8, create);\n }();\n\n var segmentsLengthPool = function () {\n function create() {\n return {\n lengths: [],\n totalLength: 0\n };\n }\n function release(element) {\n var i;\n var len = element.lengths.length;\n for (i = 0; i < len; i += 1) {\n bezierLengthPool.release(element.lengths[i]);\n }\n element.lengths.length = 0;\n }\n return poolFactory(8, create, release);\n }();\n\n function bezFunction() {\n var math = Math;\n function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\n var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1;\n return det1 > -0.001 && det1 < 0.001;\n }\n function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\n if (z1 === 0 && z2 === 0 && z3 === 0) {\n return pointOnLine2D(x1, y1, x2, y2, x3, y3);\n }\n var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\n var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\n var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\n var diffDist;\n if (dist1 > dist2) {\n if (dist1 > dist3) {\n diffDist = dist1 - dist2 - dist3;\n } else {\n diffDist = dist3 - dist2 - dist1;\n }\n } else if (dist3 > dist2) {\n diffDist = dist3 - dist2 - dist1;\n } else {\n diffDist = dist2 - dist1 - dist3;\n }\n return diffDist > -0.0001 && diffDist < 0.0001;\n }\n var getBezierLength = function () {\n return function (pt1, pt2, pt3, pt4) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point = [];\n var lastPoint = [];\n var lengthData = bezierLengthPool.newElement();\n len = pt3.length;\n for (k = 0; k < curveSegments; k += 1) {\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n if (lastPoint[i] !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n lastPoint[i] = point[i];\n }\n if (ptDistance) {\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n }\n lengthData.percents[k] = perc;\n lengthData.lengths[k] = addedLength;\n }\n lengthData.addedLength = addedLength;\n return lengthData;\n };\n }();\n function getSegmentsLength(shapeData) {\n var segmentsLength = segmentsLengthPool.newElement();\n var closed = shapeData.c;\n var pathV = shapeData.v;\n var pathO = shapeData.o;\n var pathI = shapeData.i;\n var i;\n var len = shapeData._length;\n var lengths = segmentsLength.lengths;\n var totalLength = 0;\n for (i = 0; i < len - 1; i += 1) {\n lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\n totalLength += lengths[i].addedLength;\n }\n if (closed && len) {\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\n totalLength += lengths[i].addedLength;\n }\n segmentsLength.totalLength = totalLength;\n return segmentsLength;\n }\n function BezierData(length) {\n this.segmentLength = 0;\n this.points = new Array(length);\n }\n function PointData(partial, point) {\n this.partialLength = partial;\n this.point = point;\n }\n var buildBezierData = function () {\n var storedData = {};\n return function (pt1, pt2, pt3, pt4) {\n var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\n if (!storedData[bezierName]) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point;\n var lastPoint = null;\n if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\n curveSegments = 2;\n }\n var bezierData = new BezierData(curveSegments);\n len = pt3.length;\n for (k = 0; k < curveSegments; k += 1) {\n point = createSizedArray(len);\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n if (lastPoint !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n }\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n bezierData.points[k] = new PointData(ptDistance, point);\n lastPoint = point;\n }\n bezierData.segmentLength = addedLength;\n storedData[bezierName] = bezierData;\n }\n return storedData[bezierName];\n };\n }();\n function getDistancePerc(perc, bezierData) {\n var percents = bezierData.percents;\n var lengths = bezierData.lengths;\n var len = percents.length;\n var initPos = bmFloor((len - 1) * perc);\n var lengthPos = perc * bezierData.addedLength;\n var lPerc = 0;\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\n return percents[initPos];\n }\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\n var flag = true;\n while (flag) {\n if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\n flag = false;\n } else {\n initPos += dir;\n }\n if (initPos < 0 || initPos >= len - 1) {\n // FIX for TypedArrays that don't store floating point values with enough accuracy\n if (initPos === len - 1) {\n return percents[initPos];\n }\n flag = false;\n }\n }\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\n }\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\n var t1 = getDistancePerc(percent, bezierData);\n var u1 = 1 - t1;\n var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\n var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\n return [ptX, ptY];\n }\n var bezierSegmentPoints = createTypedArray('float32', 8);\n function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\n if (startPerc < 0) {\n startPerc = 0;\n } else if (startPerc > 1) {\n startPerc = 1;\n }\n var t0 = getDistancePerc(startPerc, bezierData);\n endPerc = endPerc > 1 ? 1 : endPerc;\n var t1 = getDistancePerc(endPerc, bezierData);\n var i;\n var len = pt1.length;\n var u0 = 1 - t0;\n var u1 = 1 - t1;\n var u0u0u0 = u0 * u0 * u0;\n var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\n var t0t0t0 = t0 * t0 * t0;\n //\n var u0u0u1 = u0 * u0 * u1;\n var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\n var t0t0t1 = t0 * t0 * t1;\n //\n var u0u1u1 = u0 * u1 * u1;\n var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\n var t0t1t1 = t0 * t1 * t1;\n //\n var u1u1u1 = u1 * u1 * u1;\n var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\n var t1t1t1 = t1 * t1 * t1;\n for (i = 0; i < len; i += 1) {\n bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n }\n return bezierSegmentPoints;\n }\n return {\n getSegmentsLength: getSegmentsLength,\n getNewSegment: getNewSegment,\n getPointInSegment: getPointInSegment,\n buildBezierData: buildBezierData,\n pointOnLine2D: pointOnLine2D,\n pointOnLine3D: pointOnLine3D\n };\n }\n var bez = bezFunction();\n\n var initFrame = initialDefaultFrame;\n var mathAbs = Math.abs;\n function interpolateValue(frameNum, caching) {\n var offsetTime = this.offsetTime;\n var newValue;\n if (this.propType === 'multidimensional') {\n newValue = createTypedArray('float32', this.pv.length);\n }\n var iterationIndex = caching.lastIndex;\n var i = iterationIndex;\n var len = this.keyframes.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n while (flag) {\n keyData = this.keyframes[i];\n nextKeyData = this.keyframes[i + 1];\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\n if (keyData.h) {\n keyData = nextKeyData;\n }\n iterationIndex = 0;\n break;\n }\n if (nextKeyData.t - offsetTime > frameNum) {\n iterationIndex = i;\n break;\n }\n if (i < len - 1) {\n i += 1;\n } else {\n iterationIndex = 0;\n flag = false;\n }\n }\n keyframeMetadata = this.keyframesMetadata[i] || {};\n var k;\n var kLen;\n var perc;\n var jLen;\n var j;\n var fnc;\n var nextKeyTime = nextKeyData.t - offsetTime;\n var keyTime = keyData.t - offsetTime;\n var endValue;\n if (keyData.to) {\n if (!keyframeMetadata.bezierData) {\n keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\n }\n var bezierData = keyframeMetadata.bezierData;\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\n kLen = bezierData.points[ind].point.length;\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[ind].point[k];\n }\n // caching._lastKeyframeIndex = -1;\n } else {\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\n keyframeMetadata.__fnct = fnc;\n }\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n var distanceInLine = bezierData.segmentLength * perc;\n var segmentPerc;\n var addedLength = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0;\n j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0;\n flag = true;\n jLen = bezierData.points.length;\n while (flag) {\n addedLength += bezierData.points[j].partialLength;\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n kLen = bezierData.points[j].point.length;\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k];\n }\n break;\n } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\n kLen = bezierData.points[j].point.length;\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\n }\n break;\n }\n if (j < jLen - 1) {\n j += 1;\n } else {\n flag = false;\n }\n }\n caching._lastPoint = j;\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\n caching._lastKeyframeIndex = i;\n }\n } else {\n var outX;\n var outY;\n var inX;\n var inY;\n var keyValue;\n len = keyData.s.length;\n endValue = nextKeyData.s || keyData.e;\n if (this.sh && keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n newValue[0] = endValue[0];\n newValue[1] = endValue[1];\n newValue[2] = endValue[2];\n } else if (frameNum <= keyTime) {\n newValue[0] = keyData.s[0];\n newValue[1] = keyData.s[1];\n newValue[2] = keyData.s[2];\n } else {\n var quatStart = createQuaternion(keyData.s);\n var quatEnd = createQuaternion(endValue);\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\n }\n } else {\n for (i = 0; i < len; i += 1) {\n if (keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n perc = 1;\n } else if (frameNum < keyTime) {\n perc = 0;\n } else {\n if (keyData.o.x.constructor === Array) {\n if (!keyframeMetadata.__fnct) {\n keyframeMetadata.__fnct = [];\n }\n if (!keyframeMetadata.__fnct[i]) {\n outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\n outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\n inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\n inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyframeMetadata.__fnct[i] = fnc;\n } else {\n fnc = keyframeMetadata.__fnct[i];\n }\n } else if (!keyframeMetadata.__fnct) {\n outX = keyData.o.x;\n outY = keyData.o.y;\n inX = keyData.i.x;\n inY = keyData.i.y;\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyData.keyframeMetadata = fnc;\n } else {\n fnc = keyframeMetadata.__fnct;\n }\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n }\n }\n endValue = nextKeyData.s || keyData.e;\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\n if (this.propType === 'multidimensional') {\n newValue[i] = keyValue;\n } else {\n newValue = keyValue;\n }\n }\n }\n }\n caching.lastIndex = iterationIndex;\n return newValue;\n }\n\n // based on @Toji's https://github.com/toji/gl-matrix/\n function slerp(a, b, t) {\n var out = [];\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n var bx = b[0];\n var by = b[1];\n var bz = b[2];\n var bw = b[3];\n var omega;\n var cosom;\n var sinom;\n var scale0;\n var scale1;\n cosom = ax * bx + ay * by + az * bz + aw * bw;\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n }\n if (1.0 - cosom > 0.000001) {\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n scale0 = 1.0 - t;\n scale1 = t;\n }\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n }\n function quaternionToEuler(out, quat) {\n var qx = quat[0];\n var qy = quat[1];\n var qz = quat[2];\n var qw = quat[3];\n var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\n var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\n var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\n out[0] = heading / degToRads;\n out[1] = attitude / degToRads;\n out[2] = bank / degToRads;\n }\n function createQuaternion(values) {\n var heading = values[0] * degToRads;\n var attitude = values[1] * degToRads;\n var bank = values[2] * degToRads;\n var c1 = Math.cos(heading / 2);\n var c2 = Math.cos(attitude / 2);\n var c3 = Math.cos(bank / 2);\n var s1 = Math.sin(heading / 2);\n var s2 = Math.sin(attitude / 2);\n var s3 = Math.sin(bank / 2);\n var w = c1 * c2 * c3 - s1 * s2 * s3;\n var x = s1 * s2 * c3 + c1 * c2 * s3;\n var y = s1 * c2 * c3 + c1 * s2 * s3;\n var z = c1 * s2 * c3 - s1 * c2 * s3;\n return [x, y, z, w];\n }\n function getValueAtCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n if (!(frameNum === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= endTime && frameNum >= endTime || this._caching.lastFrame < initTime && frameNum < initTime))) {\n if (this._caching.lastFrame >= frameNum) {\n this._caching._lastKeyframeIndex = -1;\n this._caching.lastIndex = 0;\n }\n var renderResult = this.interpolateValue(frameNum, this._caching);\n this.pv = renderResult;\n }\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n function setVValue(val) {\n var multipliedValue;\n if (this.propType === 'unidimensional') {\n multipliedValue = val * this.mult;\n if (mathAbs(this.v - multipliedValue) > 0.00001) {\n this.v = multipliedValue;\n this._mdf = true;\n }\n } else {\n var i = 0;\n var len = this.v.length;\n while (i < len) {\n multipliedValue = val[i] * this.mult;\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\n this.v[i] = multipliedValue;\n this._mdf = true;\n }\n i += 1;\n }\n }\n }\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\n return;\n }\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n this.lock = true;\n this._mdf = this._isFirstFrame;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = this.kf ? this.pv : this.data.k;\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n this.setVValue(finalValue);\n this._isFirstFrame = false;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n function ValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.mult = mult || 1;\n this.data = data;\n this.v = mult ? data.k * mult : data.k;\n this.pv = data.k;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.vel = 0;\n this.effectsSequence = [];\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n function MultiDimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n this.mult = mult || 1;\n this.data = data;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.frameId = -1;\n var i;\n var len = data.k.length;\n this.v = createTypedArray('float32', len);\n this.pv = createTypedArray('float32', len);\n this.vel = createTypedArray('float32', len);\n for (i = 0; i < len; i += 1) {\n this.v[i] = data.k[i] * this.mult;\n this.pv[i] = data.k[i];\n }\n this._isFirstFrame = true;\n this.effectsSequence = [];\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n function KeyframedValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.frameId = -1;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: 0,\n _lastKeyframeIndex: -1\n };\n this.k = true;\n this.kf = true;\n this.data = data;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.v = initFrame;\n this.pv = initFrame;\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.addEffect = addEffect;\n }\n function KeyframedMultidimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n var i;\n var len = data.k.length;\n var s;\n var e;\n var to;\n var ti;\n for (i = 0; i < len - 1; i += 1) {\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\n s = data.k[i].s;\n e = data.k[i + 1].s;\n to = data.k[i].to;\n ti = data.k[i].ti;\n if (s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1]) || s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2])) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\n if (s.length === 2 || s[2] === e[2] && to[2] === 0 && ti[2] === 0) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n }\n }\n }\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.data = data;\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.k = true;\n this.kf = true;\n this._isFirstFrame = true;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.frameId = -1;\n var arrLen = data.k[0].s.length;\n this.v = createTypedArray('float32', arrLen);\n this.pv = createTypedArray('float32', arrLen);\n for (i = 0; i < arrLen; i += 1) {\n this.v[i] = initFrame;\n this.pv[i] = initFrame;\n }\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: createTypedArray('float32', arrLen)\n };\n this.addEffect = addEffect;\n }\n var PropertyFactory = function () {\n function getProp(elem, data, type, mult, container) {\n if (data.sid) {\n data = elem.globalData.slotManager.getProp(data);\n }\n var p;\n if (!data.k.length) {\n p = new ValueProperty(elem, data, mult, container);\n } else if (typeof data.k[0] === 'number') {\n p = new MultiDimensionalProperty(elem, data, mult, container);\n } else {\n switch (type) {\n case 0:\n p = new KeyframedValueProperty(elem, data, mult, container);\n break;\n case 1:\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\n break;\n default:\n break;\n }\n }\n if (p.effectsSequence.length) {\n container.addDynamicProperty(p);\n }\n return p;\n }\n var ob = {\n getProp: getProp\n };\n return ob;\n }();\n\n function DynamicPropertyContainer() {}\n DynamicPropertyContainer.prototype = {\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n this.container.addDynamicProperty(this);\n this._isAnimated = true;\n }\n },\n iterateDynamicProperties: function iterateDynamicProperties() {\n this._mdf = false;\n var i;\n var len = this.dynamicProperties.length;\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n if (this.dynamicProperties[i]._mdf) {\n this._mdf = true;\n }\n }\n },\n initDynamicPropertyContainer: function initDynamicPropertyContainer(container) {\n this.container = container;\n this.dynamicProperties = [];\n this._mdf = false;\n this._isAnimated = false;\n }\n };\n\n var pointPool = function () {\n function create() {\n return createTypedArray('float32', 2);\n }\n return poolFactory(8, create);\n }();\n\n function ShapePath() {\n this.c = false;\n this._length = 0;\n this._maxLength = 8;\n this.v = createSizedArray(this._maxLength);\n this.o = createSizedArray(this._maxLength);\n this.i = createSizedArray(this._maxLength);\n }\n ShapePath.prototype.setPathData = function (closed, len) {\n this.c = closed;\n this.setLength(len);\n var i = 0;\n while (i < len) {\n this.v[i] = pointPool.newElement();\n this.o[i] = pointPool.newElement();\n this.i[i] = pointPool.newElement();\n i += 1;\n }\n };\n ShapePath.prototype.setLength = function (len) {\n while (this._maxLength < len) {\n this.doubleArrayLength();\n }\n this._length = len;\n };\n ShapePath.prototype.doubleArrayLength = function () {\n this.v = this.v.concat(createSizedArray(this._maxLength));\n this.i = this.i.concat(createSizedArray(this._maxLength));\n this.o = this.o.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n };\n ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\n var arr;\n this._length = Math.max(this._length, pos + 1);\n if (this._length >= this._maxLength) {\n this.doubleArrayLength();\n }\n switch (type) {\n case 'v':\n arr = this.v;\n break;\n case 'i':\n arr = this.i;\n break;\n case 'o':\n arr = this.o;\n break;\n default:\n arr = [];\n break;\n }\n if (!arr[pos] || arr[pos] && !replace) {\n arr[pos] = pointPool.newElement();\n }\n arr[pos][0] = x;\n arr[pos][1] = y;\n };\n ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\n this.setXYAt(vX, vY, 'v', pos, replace);\n this.setXYAt(oX, oY, 'o', pos, replace);\n this.setXYAt(iX, iY, 'i', pos, replace);\n };\n ShapePath.prototype.reverse = function () {\n var newPath = new ShapePath();\n newPath.setPathData(this.c, this._length);\n var vertices = this.v;\n var outPoints = this.o;\n var inPoints = this.i;\n var init = 0;\n if (this.c) {\n newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\n init = 1;\n }\n var cnt = this._length - 1;\n var len = this._length;\n var i;\n for (i = init; i < len; i += 1) {\n newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\n cnt -= 1;\n }\n return newPath;\n };\n ShapePath.prototype.length = function () {\n return this._length;\n };\n\n var shapePool = function () {\n function create() {\n return new ShapePath();\n }\n function release(shapePath) {\n var len = shapePath._length;\n var i;\n for (i = 0; i < len; i += 1) {\n pointPool.release(shapePath.v[i]);\n pointPool.release(shapePath.i[i]);\n pointPool.release(shapePath.o[i]);\n shapePath.v[i] = null;\n shapePath.i[i] = null;\n shapePath.o[i] = null;\n }\n shapePath._length = 0;\n shapePath.c = false;\n }\n function clone(shape) {\n var cloned = factory.newElement();\n var i;\n var len = shape._length === undefined ? shape.v.length : shape._length;\n cloned.setLength(len);\n cloned.c = shape.c;\n for (i = 0; i < len; i += 1) {\n cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\n }\n return cloned;\n }\n var factory = poolFactory(4, create, release);\n factory.clone = clone;\n return factory;\n }();\n\n function ShapeCollection() {\n this._length = 0;\n this._maxLength = 4;\n this.shapes = createSizedArray(this._maxLength);\n }\n ShapeCollection.prototype.addShape = function (shapeData) {\n if (this._length === this._maxLength) {\n this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n }\n this.shapes[this._length] = shapeData;\n this._length += 1;\n };\n ShapeCollection.prototype.releaseShapes = function () {\n var i;\n for (i = 0; i < this._length; i += 1) {\n shapePool.release(this.shapes[i]);\n }\n this._length = 0;\n };\n\n var shapeCollectionPool = function () {\n var ob = {\n newShapeCollection: newShapeCollection,\n release: release\n };\n var _length = 0;\n var _maxLength = 4;\n var pool = createSizedArray(_maxLength);\n function newShapeCollection() {\n var shapeCollection;\n if (_length) {\n _length -= 1;\n shapeCollection = pool[_length];\n } else {\n shapeCollection = new ShapeCollection();\n }\n return shapeCollection;\n }\n function release(shapeCollection) {\n var i;\n var len = shapeCollection._length;\n for (i = 0; i < len; i += 1) {\n shapePool.release(shapeCollection.shapes[i]);\n }\n shapeCollection._length = 0;\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n pool[_length] = shapeCollection;\n _length += 1;\n }\n return ob;\n }();\n\n var ShapePropertyFactory = function () {\n var initFrame = -999999;\n function interpolateShape(frameNum, previousValue, caching) {\n var iterationIndex = caching.lastIndex;\n var keyPropS;\n var keyPropE;\n var isHold;\n var j;\n var k;\n var jLen;\n var kLen;\n var perc;\n var vertexValue;\n var kf = this.keyframes;\n if (frameNum < kf[0].t - this.offsetTime) {\n keyPropS = kf[0].s[0];\n isHold = true;\n iterationIndex = 0;\n } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\n /* if(kf[kf.length - 1].s){\n keyPropS = kf[kf.length - 1].s[0];\n }else{\n keyPropS = kf[kf.length - 2].e[0];\n } */\n isHold = true;\n } else {\n var i = iterationIndex;\n var len = kf.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n while (flag) {\n keyData = kf[i];\n nextKeyData = kf[i + 1];\n if (nextKeyData.t - this.offsetTime > frameNum) {\n break;\n }\n if (i < len - 1) {\n i += 1;\n } else {\n flag = false;\n }\n }\n keyframeMetadata = this.keyframesMetadata[i] || {};\n isHold = keyData.h === 1;\n iterationIndex = i;\n if (!isHold) {\n if (frameNum >= nextKeyData.t - this.offsetTime) {\n perc = 1;\n } else if (frameNum < keyData.t - this.offsetTime) {\n perc = 0;\n } else {\n var fnc;\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\n keyframeMetadata.__fnct = fnc;\n }\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\n }\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\n }\n keyPropS = keyData.s[0];\n }\n jLen = previousValue._length;\n kLen = keyPropS.i[0].length;\n caching.lastIndex = iterationIndex;\n for (j = 0; j < jLen; j += 1) {\n for (k = 0; k < kLen; k += 1) {\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\n previousValue.i[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\n previousValue.o[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\n previousValue.v[j][k] = vertexValue;\n }\n }\n }\n function interpolateShapeCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n var lastFrame = this._caching.lastFrame;\n if (!(lastFrame !== initFrame && (lastFrame < initTime && frameNum < initTime || lastFrame > endTime && frameNum > endTime))) {\n /// /\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\n this.interpolateShape(frameNum, this.pv, this._caching);\n /// /\n }\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n function resetShape() {\n this.paths = this.localShapeCollection;\n }\n function shapesEqual(shape1, shape2) {\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\n return false;\n }\n var i;\n var len = shape1._length;\n for (i = 0; i < len; i += 1) {\n if (shape1.v[i][0] !== shape2.v[i][0] || shape1.v[i][1] !== shape2.v[i][1] || shape1.o[i][0] !== shape2.o[i][0] || shape1.o[i][1] !== shape2.o[i][1] || shape1.i[i][0] !== shape2.i[i][0] || shape1.i[i][1] !== shape2.i[i][1]) {\n return false;\n }\n }\n return true;\n }\n function setVValue(newPath) {\n if (!shapesEqual(this.v, newPath)) {\n this.v = shapePool.clone(newPath);\n this.localShapeCollection.releaseShapes();\n this.localShapeCollection.addShape(this.v);\n this._mdf = true;\n this.paths = this.localShapeCollection;\n }\n }\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n if (!this.effectsSequence.length) {\n this._mdf = false;\n return;\n }\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n this.lock = true;\n this._mdf = false;\n var finalValue;\n if (this.kf) {\n finalValue = this.pv;\n } else if (this.data.ks) {\n finalValue = this.data.ks.k;\n } else {\n finalValue = this.data.pt.k;\n }\n var i;\n var len = this.effectsSequence.length;\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n this.setVValue(finalValue);\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n function ShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.container = elem;\n this.elem = elem;\n this.data = data;\n this.k = false;\n this.kf = false;\n this._mdf = false;\n var pathData = type === 3 ? data.pt.k : data.ks.k;\n this.v = shapePool.clone(pathData);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.reset = resetShape;\n this.effectsSequence = [];\n }\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n ShapeProperty.prototype.interpolateShape = interpolateShape;\n ShapeProperty.prototype.getValue = processEffectsSequence;\n ShapeProperty.prototype.setVValue = setVValue;\n ShapeProperty.prototype.addEffect = addEffect;\n function KeyframedShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.elem = elem;\n this.container = elem;\n this.offsetTime = elem.data.st;\n this.keyframes = type === 3 ? data.pt.k : data.ks.k;\n this.keyframesMetadata = [];\n this.k = true;\n this.kf = true;\n var len = this.keyframes[0].s[0].i.length;\n this.v = shapePool.newElement();\n this.v.setPathData(this.keyframes[0].s[0].c, len);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.lastFrame = initFrame;\n this.reset = resetShape;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0\n };\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\n }\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\n KeyframedShapeProperty.prototype.setVValue = setVValue;\n KeyframedShapeProperty.prototype.addEffect = addEffect;\n var EllShapeProperty = function () {\n var cPoint = roundCorner;\n function EllShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 4);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.localShapeCollection.addShape(this.v);\n this.d = data.d;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertEllToPath();\n }\n }\n EllShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n if (this._mdf) {\n this.convertEllToPath();\n }\n },\n convertEllToPath: function convertEllToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var s0 = this.s.v[0] / 2;\n var s1 = this.s.v[1] / 2;\n var _cw = this.d !== 3;\n var _v = this.v;\n _v.v[0][0] = p0;\n _v.v[0][1] = p1 - s1;\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.v[1][1] = p1;\n _v.v[2][0] = p0;\n _v.v[2][1] = p1 + s1;\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.v[3][1] = p1;\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.i[0][1] = p1 - s1;\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.i[1][1] = p1 - s1 * cPoint;\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.i[2][1] = p1 + s1;\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.i[3][1] = p1 + s1 * cPoint;\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.o[0][1] = p1 - s1;\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.o[1][1] = p1 + s1 * cPoint;\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.o[2][1] = p1 + s1;\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.o[3][1] = p1 - s1 * cPoint;\n }\n };\n extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\n return EllShapePropertyFactory;\n }();\n var StarShapeProperty = function () {\n function StarShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 0);\n this.elem = elem;\n this.comp = elem.comp;\n this.data = data;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n if (data.sy === 1) {\n this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\n this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\n this.convertToPath = this.convertStarToPath;\n } else {\n this.convertToPath = this.convertPolygonToPath;\n }\n this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\n this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\n this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertToPath();\n }\n }\n StarShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n if (this._mdf) {\n this.convertToPath();\n }\n },\n convertStarToPath: function convertStarToPath() {\n var numPts = Math.floor(this.pt.v) * 2;\n var angle = Math.PI * 2 / numPts;\n /* this.v.v.length = numPts;\n this.v.i.length = numPts;\n this.v.o.length = numPts; */\n var longFlag = true;\n var longRad = this.or.v;\n var shortRad = this.ir.v;\n var longRound = this.os.v;\n var shortRound = this.is.v;\n var longPerimSegment = 2 * Math.PI * longRad / (numPts * 2);\n var shortPerimSegment = 2 * Math.PI * shortRad / (numPts * 2);\n var i;\n var rad;\n var roundness;\n var perimSegment;\n var currentAng = -Math.PI / 2;\n currentAng += this.r.v;\n var dir = this.data.d === 3 ? -1 : 1;\n this.v._length = 0;\n for (i = 0; i < numPts; i += 1) {\n rad = longFlag ? longRad : shortRad;\n roundness = longFlag ? longRound : shortRound;\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n\n /* this.v.v[i] = [x,y];\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\n this.v._length = numPts; */\n longFlag = !longFlag;\n currentAng += angle * dir;\n }\n },\n convertPolygonToPath: function convertPolygonToPath() {\n var numPts = Math.floor(this.pt.v);\n var angle = Math.PI * 2 / numPts;\n var rad = this.or.v;\n var roundness = this.os.v;\n var perimSegment = 2 * Math.PI * rad / (numPts * 4);\n var i;\n var currentAng = -Math.PI * 0.5;\n var dir = this.data.d === 3 ? -1 : 1;\n currentAng += this.r.v;\n this.v._length = 0;\n for (i = 0; i < numPts; i += 1) {\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n currentAng += angle * dir;\n }\n this.paths.length = 0;\n this.paths[0] = this.v;\n }\n };\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\n return StarShapePropertyFactory;\n }();\n var RectShapeProperty = function () {\n function RectShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.c = true;\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertRectToPath();\n }\n }\n RectShapePropertyFactory.prototype = {\n convertRectToPath: function convertRectToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var v0 = this.s.v[0] / 2;\n var v1 = this.s.v[1] / 2;\n var round = bmMin(v0, v1, this.r.v);\n var cPoint = round * (1 - roundCorner);\n this.v._length = 0;\n if (this.d === 2 || this.d === 1) {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\n }\n } else {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\n this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\n }\n }\n },\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n if (this._mdf) {\n this.convertRectToPath();\n }\n },\n reset: resetShape\n };\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\n return RectShapePropertyFactory;\n }();\n function getShapeProp(elem, data, type) {\n var prop;\n if (type === 3 || type === 4) {\n var dataProp = type === 3 ? data.pt : data.ks;\n var keys = dataProp.k;\n if (keys.length) {\n prop = new KeyframedShapeProperty(elem, data, type);\n } else {\n prop = new ShapeProperty(elem, data, type);\n }\n } else if (type === 5) {\n prop = new RectShapeProperty(elem, data);\n } else if (type === 6) {\n prop = new EllShapeProperty(elem, data);\n } else if (type === 7) {\n prop = new StarShapeProperty(elem, data);\n }\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n return prop;\n }\n function getConstructorFunction() {\n return ShapeProperty;\n }\n function getKeyframedConstructorFunction() {\n return KeyframedShapeProperty;\n }\n var ob = {};\n ob.getShapeProp = getShapeProp;\n ob.getConstructorFunction = getConstructorFunction;\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\n return ob;\n }();\n\n /*!\n Transformation Matrix v2.0\n (c) Epistemex 2014-2015\n www.epistemex.com\n By Ken Fyrstenberg\n Contributions by leeoniya.\n License: MIT, header required.\n */\n\n /**\n * 2D transformation matrix object initialized with identity matrix.\n *\n * The matrix can synchronize a canvas context by supplying the context\n * as an argument, or later apply current absolute transform to an\n * existing context.\n *\n * All values are handled as floating point values.\n *\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\n * @prop {number} a - scale x\n * @prop {number} b - shear y\n * @prop {number} c - shear x\n * @prop {number} d - scale y\n * @prop {number} e - translate x\n * @prop {number} f - translate y\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\n * @constructor\n */\n\n var Matrix = function () {\n var _cos = Math.cos;\n var _sin = Math.sin;\n var _tan = Math.tan;\n var _rnd = Math.round;\n function reset() {\n this.props[0] = 1;\n this.props[1] = 0;\n this.props[2] = 0;\n this.props[3] = 0;\n this.props[4] = 0;\n this.props[5] = 1;\n this.props[6] = 0;\n this.props[7] = 0;\n this.props[8] = 0;\n this.props[9] = 0;\n this.props[10] = 1;\n this.props[11] = 0;\n this.props[12] = 0;\n this.props[13] = 0;\n this.props[14] = 0;\n this.props[15] = 1;\n return this;\n }\n function rotate(angle) {\n if (angle === 0) {\n return this;\n }\n var mCos = _cos(angle);\n var mSin = _sin(angle);\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n function rotateX(angle) {\n if (angle === 0) {\n return this;\n }\n var mCos = _cos(angle);\n var mSin = _sin(angle);\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\n }\n function rotateY(angle) {\n if (angle === 0) {\n return this;\n }\n var mCos = _cos(angle);\n var mSin = _sin(angle);\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\n }\n function rotateZ(angle) {\n if (angle === 0) {\n return this;\n }\n var mCos = _cos(angle);\n var mSin = _sin(angle);\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n function shear(sx, sy) {\n return this._t(1, sy, sx, 1, 0, 0);\n }\n function skew(ax, ay) {\n return this.shear(_tan(ax), _tan(ay));\n }\n function skewFromAxis(ax, angle) {\n var mCos = _cos(angle);\n var mSin = _sin(angle);\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\n }\n function scale(sx, sy, sz) {\n if (!sz && sz !== 0) {\n sz = 1;\n }\n if (sx === 1 && sy === 1 && sz === 1) {\n return this;\n }\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\n }\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\n this.props[0] = a;\n this.props[1] = b;\n this.props[2] = c;\n this.props[3] = d;\n this.props[4] = e;\n this.props[5] = f;\n this.props[6] = g;\n this.props[7] = h;\n this.props[8] = i;\n this.props[9] = j;\n this.props[10] = k;\n this.props[11] = l;\n this.props[12] = m;\n this.props[13] = n;\n this.props[14] = o;\n this.props[15] = p;\n return this;\n }\n function translate(tx, ty, tz) {\n tz = tz || 0;\n if (tx !== 0 || ty !== 0 || tz !== 0) {\n return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\n }\n return this;\n }\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\n var _p = this.props;\n if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\n // NOTE: commenting this condition because TurboFan deoptimizes code when present\n // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\n _p[12] = _p[12] * a2 + _p[15] * m2;\n _p[13] = _p[13] * f2 + _p[15] * n2;\n _p[14] = _p[14] * k2 + _p[15] * o2;\n _p[15] *= p2;\n // }\n this._identityCalculated = false;\n return this;\n }\n var a1 = _p[0];\n var b1 = _p[1];\n var c1 = _p[2];\n var d1 = _p[3];\n var e1 = _p[4];\n var f1 = _p[5];\n var g1 = _p[6];\n var h1 = _p[7];\n var i1 = _p[8];\n var j1 = _p[9];\n var k1 = _p[10];\n var l1 = _p[11];\n var m1 = _p[12];\n var n1 = _p[13];\n var o1 = _p[14];\n var p1 = _p[15];\n\n /* matrix order (canvas compatible):\n * ace\n * bdf\n * 001\n */\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\n this._identityCalculated = false;\n return this;\n }\n function multiply(matrix) {\n var matrixProps = matrix.props;\n return this.transform(matrixProps[0], matrixProps[1], matrixProps[2], matrixProps[3], matrixProps[4], matrixProps[5], matrixProps[6], matrixProps[7], matrixProps[8], matrixProps[9], matrixProps[10], matrixProps[11], matrixProps[12], matrixProps[13], matrixProps[14], matrixProps[15]);\n }\n function isIdentity() {\n if (!this._identityCalculated) {\n this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\n this._identityCalculated = true;\n }\n return this._identity;\n }\n function equals(matr) {\n var i = 0;\n while (i < 16) {\n if (matr.props[i] !== this.props[i]) {\n return false;\n }\n i += 1;\n }\n return true;\n }\n function clone(matr) {\n var i;\n for (i = 0; i < 16; i += 1) {\n matr.props[i] = this.props[i];\n }\n return matr;\n }\n function cloneFromProps(props) {\n var i;\n for (i = 0; i < 16; i += 1) {\n this.props[i] = props[i];\n }\n }\n function applyToPoint(x, y, z) {\n return {\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]\n };\n /* return {\n x: x * me.a + y * me.c + me.e,\n y: x * me.b + y * me.d + me.f\n }; */\n }\n function applyToX(x, y, z) {\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\n }\n function applyToY(x, y, z) {\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\n }\n function applyToZ(x, y, z) {\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\n }\n function getInverseMatrix() {\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\n var a = this.props[5] / determinant;\n var b = -this.props[1] / determinant;\n var c = -this.props[4] / determinant;\n var d = this.props[0] / determinant;\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\n var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\n var inverseMatrix = new Matrix();\n inverseMatrix.props[0] = a;\n inverseMatrix.props[1] = b;\n inverseMatrix.props[4] = c;\n inverseMatrix.props[5] = d;\n inverseMatrix.props[12] = e;\n inverseMatrix.props[13] = f;\n return inverseMatrix;\n }\n function inversePoint(pt) {\n var inverseMatrix = this.getInverseMatrix();\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\n }\n function inversePoints(pts) {\n var i;\n var len = pts.length;\n var retPts = [];\n for (i = 0; i < len; i += 1) {\n retPts[i] = inversePoint(pts[i]);\n }\n return retPts;\n }\n function applyToTriplePoints(pt1, pt2, pt3) {\n var arr = createTypedArray('float32', 6);\n if (this.isIdentity()) {\n arr[0] = pt1[0];\n arr[1] = pt1[1];\n arr[2] = pt2[0];\n arr[3] = pt2[1];\n arr[4] = pt3[0];\n arr[5] = pt3[1];\n } else {\n var p0 = this.props[0];\n var p1 = this.props[1];\n var p4 = this.props[4];\n var p5 = this.props[5];\n var p12 = this.props[12];\n var p13 = this.props[13];\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\n }\n return arr;\n }\n function applyToPointArray(x, y, z) {\n var arr;\n if (this.isIdentity()) {\n arr = [x, y, z];\n } else {\n arr = [x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]];\n }\n return arr;\n }\n function applyToPointStringified(x, y) {\n if (this.isIdentity()) {\n return x + ',' + y;\n }\n var _p = this.props;\n return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\n }\n function toCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n /* if(this.isIdentity()) {\n return '';\n } */\n var i = 0;\n var props = this.props;\n var cssValue = 'matrix3d(';\n var v = 10000;\n while (i < 16) {\n cssValue += _rnd(props[i] * v) / v;\n cssValue += i === 15 ? ')' : ',';\n i += 1;\n }\n return cssValue;\n }\n function roundMatrixProperty(val) {\n var v = 10000;\n if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\n return _rnd(val * v) / v;\n }\n return val;\n }\n function to2dCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n /* if(this.isIdentity()) {\n return '';\n } */\n var props = this.props;\n var _a = roundMatrixProperty(props[0]);\n var _b = roundMatrixProperty(props[1]);\n var _c = roundMatrixProperty(props[4]);\n var _d = roundMatrixProperty(props[5]);\n var _e = roundMatrixProperty(props[12]);\n var _f = roundMatrixProperty(props[13]);\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\n }\n return function () {\n this.reset = reset;\n this.rotate = rotate;\n this.rotateX = rotateX;\n this.rotateY = rotateY;\n this.rotateZ = rotateZ;\n this.skew = skew;\n this.skewFromAxis = skewFromAxis;\n this.shear = shear;\n this.scale = scale;\n this.setTransform = setTransform;\n this.translate = translate;\n this.transform = transform;\n this.multiply = multiply;\n this.applyToPoint = applyToPoint;\n this.applyToX = applyToX;\n this.applyToY = applyToY;\n this.applyToZ = applyToZ;\n this.applyToPointArray = applyToPointArray;\n this.applyToTriplePoints = applyToTriplePoints;\n this.applyToPointStringified = applyToPointStringified;\n this.toCSS = toCSS;\n this.to2dCSS = to2dCSS;\n this.clone = clone;\n this.cloneFromProps = cloneFromProps;\n this.equals = equals;\n this.inversePoints = inversePoints;\n this.inversePoint = inversePoint;\n this.getInverseMatrix = getInverseMatrix;\n this._t = this.transform;\n this.isIdentity = isIdentity;\n this._identity = true;\n this._identityCalculated = false;\n this.props = createTypedArray('float32', 16);\n this.reset();\n };\n }();\n\n function _typeof$3(o) { \"@babel/helpers - typeof\"; return _typeof$3 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$3(o); }\n var lottie = {};\n var standalone = '__[STANDALONE]__';\n var animationData = '__[ANIMATIONDATA]__';\n var renderer = '';\n function setLocation(href) {\n setLocationHref(href);\n }\n function searchAnimations() {\n if (standalone === true) {\n animationManager.searchAnimations(animationData, standalone, renderer);\n } else {\n animationManager.searchAnimations();\n }\n }\n function setSubframeRendering(flag) {\n setSubframeEnabled(flag);\n }\n function setPrefix(prefix) {\n setIdPrefix(prefix);\n }\n function loadAnimation(params) {\n if (standalone === true) {\n params.animationData = JSON.parse(animationData);\n }\n return animationManager.loadAnimation(params);\n }\n function setQuality(value) {\n if (typeof value === 'string') {\n switch (value) {\n case 'high':\n setDefaultCurveSegments(200);\n break;\n default:\n case 'medium':\n setDefaultCurveSegments(50);\n break;\n case 'low':\n setDefaultCurveSegments(10);\n break;\n }\n } else if (!isNaN(value) && value > 1) {\n setDefaultCurveSegments(value);\n }\n if (getDefaultCurveSegments() >= 50) {\n roundValues(false);\n } else {\n roundValues(true);\n }\n }\n function inBrowser() {\n return typeof navigator !== 'undefined';\n }\n function installPlugin(type, plugin) {\n if (type === 'expressions') {\n setExpressionsPlugin(plugin);\n }\n }\n function getFactory(name) {\n switch (name) {\n case 'propertyFactory':\n return PropertyFactory;\n case 'shapePropertyFactory':\n return ShapePropertyFactory;\n case 'matrix':\n return Matrix;\n default:\n return null;\n }\n }\n lottie.play = animationManager.play;\n lottie.pause = animationManager.pause;\n lottie.setLocationHref = setLocation;\n lottie.togglePause = animationManager.togglePause;\n lottie.setSpeed = animationManager.setSpeed;\n lottie.setDirection = animationManager.setDirection;\n lottie.stop = animationManager.stop;\n lottie.searchAnimations = searchAnimations;\n lottie.registerAnimation = animationManager.registerAnimation;\n lottie.loadAnimation = loadAnimation;\n lottie.setSubframeRendering = setSubframeRendering;\n lottie.resize = animationManager.resize;\n // lottie.start = start;\n lottie.goToAndStop = animationManager.goToAndStop;\n lottie.destroy = animationManager.destroy;\n lottie.setQuality = setQuality;\n lottie.inBrowser = inBrowser;\n lottie.installPlugin = installPlugin;\n lottie.freeze = animationManager.freeze;\n lottie.unfreeze = animationManager.unfreeze;\n lottie.setVolume = animationManager.setVolume;\n lottie.mute = animationManager.mute;\n lottie.unmute = animationManager.unmute;\n lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\n lottie.useWebWorker = setWebWorker;\n lottie.setIDPrefix = setPrefix;\n lottie.__getFactory = getFactory;\n lottie.version = '5.13.0';\n function checkReady() {\n if (document.readyState === 'complete') {\n clearInterval(readyStateCheckInterval);\n searchAnimations();\n }\n }\n function getQueryVariable(variable) {\n var vars = queryString.split('&');\n for (var i = 0; i < vars.length; i += 1) {\n var pair = vars[i].split('=');\n if (decodeURIComponent(pair[0]) == variable) {\n // eslint-disable-line eqeqeq\n return decodeURIComponent(pair[1]);\n }\n }\n return null;\n }\n var queryString = '';\n if (standalone) {\n var scripts = document.getElementsByTagName('script');\n var index = scripts.length - 1;\n var myScript = scripts[index] || {\n src: ''\n };\n queryString = myScript.src ? myScript.src.replace(/^[^\\?]+\\??/, '') : ''; // eslint-disable-line no-useless-escape\n renderer = getQueryVariable('renderer');\n }\n var readyStateCheckInterval = setInterval(checkReady, 100);\n\n // this adds bodymovin to the window object for backwards compatibility\n try {\n if (!((typeof exports === \"undefined\" ? \"undefined\" : _typeof$3(exports)) === 'object' && typeof module !== 'undefined') && !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef\n ) {\n window.bodymovin = lottie;\n }\n } catch (err) {\n //\n }\n\n var ShapeModifiers = function () {\n var ob = {};\n var modifiers = {};\n ob.registerModifier = registerModifier;\n ob.getModifier = getModifier;\n function registerModifier(nm, factory) {\n if (!modifiers[nm]) {\n modifiers[nm] = factory;\n }\n }\n function getModifier(nm, elem, data) {\n return new modifiers[nm](elem, data);\n }\n return ob;\n }();\n function ShapeModifier() {}\n ShapeModifier.prototype.initModifierProperties = function () {};\n ShapeModifier.prototype.addShapeToModifier = function () {};\n ShapeModifier.prototype.addShape = function (data) {\n if (!this.closed) {\n // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\n data.sh.container.addDynamicProperty(data.sh);\n var shapeData = {\n shape: data.sh,\n data: data,\n localShapeCollection: shapeCollectionPool.newShapeCollection()\n };\n this.shapes.push(shapeData);\n this.addShapeToModifier(shapeData);\n if (this._isAnimated) {\n data.setAsAnimated();\n }\n }\n };\n ShapeModifier.prototype.init = function (elem, data) {\n this.shapes = [];\n this.elem = elem;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, data);\n this.frameId = initialDefaultFrame;\n this.closed = false;\n this.k = false;\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n ShapeModifier.prototype.processKeys = function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n extendPrototype([DynamicPropertyContainer], ShapeModifier);\n\n function TrimModifier() {}\n extendPrototype([ShapeModifier], TrimModifier);\n TrimModifier.prototype.initModifierProperties = function (elem, data) {\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\n this.sValue = 0;\n this.eValue = 0;\n this.getValue = this.processKeys;\n this.m = data.m;\n this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\n };\n TrimModifier.prototype.addShapeToModifier = function (shapeData) {\n shapeData.pathsData = [];\n };\n TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\n var segments = [];\n if (e <= 1) {\n segments.push({\n s: s,\n e: e\n });\n } else if (s >= 1) {\n segments.push({\n s: s - 1,\n e: e - 1\n });\n } else {\n segments.push({\n s: s,\n e: 1\n });\n segments.push({\n s: 0,\n e: e - 1\n });\n }\n var shapeSegments = [];\n var i;\n var len = segments.length;\n var segmentOb;\n for (i = 0; i < len; i += 1) {\n segmentOb = segments[i];\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\n var shapeS;\n var shapeE;\n if (segmentOb.s * totalModifierLength <= addedLength) {\n shapeS = 0;\n } else {\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\n }\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n shapeE = 1;\n } else {\n shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\n }\n shapeSegments.push([shapeS, shapeE]);\n }\n }\n if (!shapeSegments.length) {\n shapeSegments.push([0, 0]);\n }\n return shapeSegments;\n };\n TrimModifier.prototype.releasePathsData = function (pathsData) {\n var i;\n var len = pathsData.length;\n for (i = 0; i < len; i += 1) {\n segmentsLengthPool.release(pathsData[i]);\n }\n pathsData.length = 0;\n return pathsData;\n };\n TrimModifier.prototype.processShapes = function (_isFirstFrame) {\n var s;\n var e;\n if (this._mdf || _isFirstFrame) {\n var o = this.o.v % 360 / 360;\n if (o < 0) {\n o += 1;\n }\n if (this.s.v > 1) {\n s = 1 + o;\n } else if (this.s.v < 0) {\n s = 0 + o;\n } else {\n s = this.s.v + o;\n }\n if (this.e.v > 1) {\n e = 1 + o;\n } else if (this.e.v < 0) {\n e = 0 + o;\n } else {\n e = this.e.v + o;\n }\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n s = Math.round(s * 10000) * 0.0001;\n e = Math.round(e * 10000) * 0.0001;\n this.sValue = s;\n this.eValue = e;\n } else {\n s = this.sValue;\n e = this.eValue;\n }\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var pathsData;\n var pathData;\n var totalShapeLength;\n var totalModifierLength = 0;\n if (e === s) {\n for (i = 0; i < len; i += 1) {\n this.shapes[i].localShapeCollection.releaseShapes();\n this.shapes[i].shape._mdf = true;\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\n if (this._mdf) {\n this.shapes[i].pathsData.length = 0;\n }\n }\n } else if (!(e === 1 && s === 0 || e === 0 && s === 1)) {\n var segments = [];\n var shapeData;\n var localShapeCollection;\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\n shapeData.shape.paths = shapeData.localShapeCollection;\n } else {\n shapePaths = shapeData.shape.paths;\n jLen = shapePaths._length;\n totalShapeLength = 0;\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n totalShapeLength = shapeData.totalShapeLength;\n } else {\n pathsData = this.releasePathsData(shapeData.pathsData);\n for (j = 0; j < jLen; j += 1) {\n pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\n pathsData.push(pathData);\n totalShapeLength += pathData.totalLength;\n }\n shapeData.totalShapeLength = totalShapeLength;\n shapeData.pathsData = pathsData;\n }\n totalModifierLength += totalShapeLength;\n shapeData.shape._mdf = true;\n }\n }\n var shapeS = s;\n var shapeE = e;\n var addedLength = 0;\n var edges;\n for (i = len - 1; i >= 0; i -= 1) {\n shapeData = this.shapes[i];\n if (shapeData.shape._mdf) {\n localShapeCollection = shapeData.localShapeCollection;\n localShapeCollection.releaseShapes();\n // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\n if (this.m === 2 && len > 1) {\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\n addedLength += shapeData.totalShapeLength;\n } else {\n edges = [[shapeS, shapeE]];\n }\n jLen = edges.length;\n for (j = 0; j < jLen; j += 1) {\n shapeS = edges[j][0];\n shapeE = edges[j][1];\n segments.length = 0;\n if (shapeE <= 1) {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength * shapeE\n });\n } else if (shapeS >= 1) {\n segments.push({\n s: shapeData.totalShapeLength * (shapeS - 1),\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n } else {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength\n });\n segments.push({\n s: 0,\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n }\n var newShapesData = this.addShapes(shapeData, segments[0]);\n if (segments[0].s !== segments[0].e) {\n if (segments.length > 1) {\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\n if (lastShapeInCollection.c) {\n var lastShape = newShapesData.pop();\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1], lastShape);\n } else {\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1]);\n }\n }\n this.addPaths(newShapesData, localShapeCollection);\n }\n }\n shapeData.shape.paths = localShapeCollection;\n }\n }\n } else if (this._mdf) {\n for (i = 0; i < len; i += 1) {\n // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\n // Don't remove this even if it's losing cached info.\n this.shapes[i].pathsData.length = 0;\n this.shapes[i].shape._mdf = true;\n }\n }\n };\n TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\n var i;\n var len = newPaths.length;\n for (i = 0; i < len; i += 1) {\n localShapeCollection.addShape(newPaths[i]);\n }\n };\n TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\n if (newShape) {\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\n }\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\n };\n TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\n shapePath.setXYAt(points[1], points[5], 'o', pos);\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\n if (newShape) {\n shapePath.setXYAt(points[0], points[4], 'v', pos);\n }\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\n };\n TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\n var pathsData = shapeData.pathsData;\n var shapePaths = shapeData.shape.paths.shapes;\n var i;\n var len = shapeData.shape.paths._length;\n var j;\n var jLen;\n var addedLength = 0;\n var currentLengthData;\n var segmentCount;\n var lengths;\n var segment;\n var shapes = [];\n var initPos;\n var newShape = true;\n if (!shapePath) {\n shapePath = shapePool.newElement();\n segmentCount = 0;\n initPos = 0;\n } else {\n segmentCount = shapePath._length;\n initPos = shapePath._length;\n }\n shapes.push(shapePath);\n for (i = 0; i < len; i += 1) {\n lengths = pathsData[i].lengths;\n shapePath.c = shapePaths[i].c;\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\n for (j = 1; j < jLen; j += 1) {\n currentLengthData = lengths[j - 1];\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\n addedLength += currentLengthData.addedLength;\n shapePath.c = false;\n } else if (addedLength > shapeSegment.e) {\n shapePath.c = false;\n break;\n } else {\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n newShape = false;\n shapePath.c = false;\n }\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n }\n if (shapePaths[i].c && lengths.length) {\n currentLengthData = lengths[j - 1];\n if (addedLength <= shapeSegment.e) {\n var segmentLength = lengths[j - 1].addedLength;\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n newShape = false;\n shapePath.c = false;\n }\n } else {\n shapePath.c = false;\n }\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n if (shapePath._length) {\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\n shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\n }\n if (addedLength > shapeSegment.e) {\n break;\n }\n if (i < len - 1) {\n shapePath = shapePool.newElement();\n newShape = true;\n shapes.push(shapePath);\n segmentCount = 0;\n }\n }\n return shapes;\n };\n\n function PuckerAndBloatModifier() {}\n extendPrototype([ShapeModifier], PuckerAndBloatModifier);\n PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this._isAnimated = !!this.amount.effectsSequence.length;\n };\n PuckerAndBloatModifier.prototype.processPath = function (path, amount) {\n var percent = amount / 100;\n var centerPoint = [0, 0];\n var pathLength = path._length;\n var i = 0;\n for (i = 0; i < pathLength; i += 1) {\n centerPoint[0] += path.v[i][0];\n centerPoint[1] += path.v[i][1];\n }\n centerPoint[0] /= pathLength;\n centerPoint[1] /= pathLength;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n for (i = 0; i < pathLength; i += 1) {\n vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\n vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\n oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\n oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\n iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\n iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\n }\n return clonedPath;\n };\n PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\n }\n }\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n var TransformPropertyFactory = function () {\n var defaultVector = [0, 0];\n function applyToMatrix(mat) {\n var _mdf = this._mdf;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || _mdf;\n if (this.a) {\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n if (this.s) {\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n if (this.sk) {\n mat.skewFromAxis(-this.sk.v, this.sa.v);\n }\n if (this.r) {\n mat.rotate(-this.r.v);\n } else {\n mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n if (this.data.p.s) {\n if (this.data.p.z) {\n mat.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n mat.translate(this.px.v, this.py.v, 0);\n }\n } else {\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n function processKeys(forceRender) {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n if (this._isDirty) {\n this.precalculateMatrix();\n this._isDirty = false;\n }\n this.iterateDynamicProperties();\n if (this._mdf || forceRender) {\n var frameRate;\n this.v.cloneFromProps(this.pre.props);\n if (this.appliedTransformations < 1) {\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n if (this.appliedTransformations < 2) {\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n if (this.sk && this.appliedTransformations < 3) {\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\n }\n if (this.r && this.appliedTransformations < 4) {\n this.v.rotate(-this.r.v);\n } else if (!this.r && this.appliedTransformations < 4) {\n this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n if (this.autoOriented) {\n var v1;\n var v2;\n frameRate = this.elem.globalData.frameRate;\n if (this.p && this.p.keyframes && this.p.getValueAtTime) {\n if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\n } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\n v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0);\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\n } else {\n v1 = this.p.pv;\n v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\n }\n } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\n v1 = [];\n v2 = [];\n var px = this.px;\n var py = this.py;\n if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\n v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0);\n v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0);\n } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\n v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0);\n v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0);\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\n } else {\n v1 = [px.pv, py.pv];\n v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\n v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\n }\n } else {\n v2 = defaultVector;\n v1 = v2;\n }\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\n }\n if (this.data.p && this.data.p.s) {\n if (this.data.p.z) {\n this.v.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n this.v.translate(this.px.v, this.py.v, 0);\n }\n } else {\n this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n this.frameId = this.elem.globalData.frameId;\n }\n function precalculateMatrix() {\n this.appliedTransformations = 0;\n this.pre.reset();\n if (!this.a.effectsSequence.length) {\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n this.appliedTransformations = 1;\n } else {\n return;\n }\n if (!this.s.effectsSequence.length) {\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n this.appliedTransformations = 2;\n } else {\n return;\n }\n if (this.sk) {\n if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\n this.pre.skewFromAxis(-this.sk.v, this.sa.v);\n this.appliedTransformations = 3;\n } else {\n return;\n }\n }\n if (this.r) {\n if (!this.r.effectsSequence.length) {\n this.pre.rotate(-this.r.v);\n this.appliedTransformations = 4;\n }\n } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\n this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n this.appliedTransformations = 4;\n }\n }\n function autoOrient() {\n //\n // var prevP = this.getValueAtTime();\n }\n function addDynamicProperty(prop) {\n this._addDynamicProperty(prop);\n this.elem.addDynamicProperty(prop);\n this._isDirty = true;\n }\n function TransformProperty(elem, data, container) {\n this.elem = elem;\n this.frameId = -1;\n this.propType = 'transform';\n this.data = data;\n this.v = new Matrix();\n // Precalculated matrix with non animated properties\n this.pre = new Matrix();\n this.appliedTransformations = 0;\n this.initDynamicPropertyContainer(container || elem);\n if (data.p && data.p.s) {\n this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\n this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\n if (data.p.z) {\n this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\n }\n } else {\n this.p = PropertyFactory.getProp(elem, data.p || {\n k: [0, 0, 0]\n }, 1, 0, this);\n }\n if (data.rx) {\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\n if (data.or.k[0].ti) {\n var i;\n var len = data.or.k.length;\n for (i = 0; i < len; i += 1) {\n data.or.k[i].to = null;\n data.or.k[i].ti = null;\n }\n }\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this);\n // sh Indicates it needs to be capped between -180 and 180\n this.or.sh = true;\n } else {\n this.r = PropertyFactory.getProp(elem, data.r || {\n k: 0\n }, 0, degToRads, this);\n }\n if (data.sk) {\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\n }\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: [0, 0, 0]\n }, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: [100, 100, 100]\n }, 1, 0.01, this);\n // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\n if (data.o) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\n } else {\n this.o = {\n _mdf: false,\n v: 1\n };\n }\n this._isDirty = true;\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n }\n TransformProperty.prototype = {\n applyToMatrix: applyToMatrix,\n getValue: processKeys,\n precalculateMatrix: precalculateMatrix,\n autoOrient: autoOrient\n };\n extendPrototype([DynamicPropertyContainer], TransformProperty);\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\n function getTransformProperty(elem, data, container) {\n return new TransformProperty(elem, data, container);\n }\n return {\n getTransformProperty: getTransformProperty\n };\n }();\n\n function RepeaterModifier() {}\n extendPrototype([ShapeModifier], RepeaterModifier);\n RepeaterModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\n this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\n this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\n this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\n this.data = data;\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n this._isAnimated = !!this.dynamicProperties.length;\n this.pMatrix = new Matrix();\n this.rMatrix = new Matrix();\n this.sMatrix = new Matrix();\n this.tMatrix = new Matrix();\n this.matrix = new Matrix();\n };\n RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\n var dir = inv ? -1 : 1;\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n rMatrix.rotate(-transform.r.v * dir * perc);\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n };\n RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\n this.elem = elem;\n this.arr = arr;\n this.pos = pos;\n this.elemsData = elemsData;\n this._currentCopies = 0;\n this._elements = [];\n this._groups = [];\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, arr[pos]);\n while (pos > 0) {\n pos -= 1;\n // this._elements.unshift(arr.splice(pos,1)[0]);\n this._elements.unshift(arr[pos]);\n }\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n RepeaterModifier.prototype.resetElements = function (elements) {\n var i;\n var len = elements.length;\n for (i = 0; i < len; i += 1) {\n elements[i]._processed = false;\n if (elements[i].ty === 'gr') {\n this.resetElements(elements[i].it);\n }\n }\n };\n RepeaterModifier.prototype.cloneElements = function (elements) {\n var newElements = JSON.parse(JSON.stringify(elements));\n this.resetElements(newElements);\n return newElements;\n };\n RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\n var i;\n var len = elements.length;\n for (i = 0; i < len; i += 1) {\n elements[i]._render = renderFlag;\n if (elements[i].ty === 'gr') {\n this.changeGroupRender(elements[i].it, renderFlag);\n }\n }\n };\n RepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\n var items;\n var itemsTransform;\n var i;\n var dir;\n var cont;\n var hasReloaded = false;\n if (this._mdf || _isFirstFrame) {\n var copies = Math.ceil(this.c.v);\n if (this._groups.length < copies) {\n while (this._groups.length < copies) {\n var group = {\n it: this.cloneElements(this._elements),\n ty: 'gr'\n };\n group.it.push({\n a: {\n a: 0,\n ix: 1,\n k: [0, 0]\n },\n nm: 'Transform',\n o: {\n a: 0,\n ix: 7,\n k: 100\n },\n p: {\n a: 0,\n ix: 2,\n k: [0, 0]\n },\n r: {\n a: 1,\n ix: 6,\n k: [{\n s: 0,\n e: 0,\n t: 0\n }, {\n s: 0,\n e: 0,\n t: 1\n }]\n },\n s: {\n a: 0,\n ix: 3,\n k: [100, 100]\n },\n sa: {\n a: 0,\n ix: 5,\n k: 0\n },\n sk: {\n a: 0,\n ix: 4,\n k: 0\n },\n ty: 'tr'\n });\n this.arr.splice(0, 0, group);\n this._groups.splice(0, 0, group);\n this._currentCopies += 1;\n }\n this.elem.reloadShapes();\n hasReloaded = true;\n }\n cont = 0;\n var renderFlag;\n for (i = 0; i <= this._groups.length - 1; i += 1) {\n renderFlag = cont < copies;\n this._groups[i]._render = renderFlag;\n this.changeGroupRender(this._groups[i].it, renderFlag);\n if (!renderFlag) {\n var elems = this.elemsData[i].it;\n var transformData = elems[elems.length - 1];\n if (transformData.transform.op.v !== 0) {\n transformData.transform.op._mdf = true;\n transformData.transform.op.v = 0;\n } else {\n transformData.transform.op._mdf = false;\n }\n }\n cont += 1;\n }\n this._currentCopies = copies;\n /// /\n\n var offset = this.o.v;\n var offsetModulo = offset % 1;\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\n var pProps = this.pMatrix.props;\n var rProps = this.rMatrix.props;\n var sProps = this.sMatrix.props;\n this.pMatrix.reset();\n this.rMatrix.reset();\n this.sMatrix.reset();\n this.tMatrix.reset();\n this.matrix.reset();\n var iteration = 0;\n if (offset > 0) {\n while (iteration < roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n iteration += 1;\n }\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\n iteration += offsetModulo;\n }\n } else if (offset < 0) {\n while (iteration > roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\n iteration -= 1;\n }\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\n iteration -= offsetModulo;\n }\n }\n i = this.data.m === 1 ? 0 : this._currentCopies - 1;\n dir = this.data.m === 1 ? 1 : -1;\n cont = this._currentCopies;\n var j;\n var jLen;\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n jLen = itemsTransform.length;\n items[items.length - 1].transform.mProps._mdf = true;\n items[items.length - 1].transform.op._mdf = true;\n items[items.length - 1].transform.op.v = this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\n if (iteration !== 0) {\n if (i !== 0 && dir === 1 || i !== this._currentCopies - 1 && dir === -1) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n }\n this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\n this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\n this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n this.matrix.reset();\n } else {\n this.matrix.reset();\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n }\n iteration += 1;\n cont -= 1;\n i += dir;\n }\n } else {\n cont = this._currentCopies;\n i = 0;\n dir = 1;\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n items[items.length - 1].transform.mProps._mdf = false;\n items[items.length - 1].transform.op._mdf = false;\n cont -= 1;\n i += dir;\n }\n }\n return hasReloaded;\n };\n RepeaterModifier.prototype.addShape = function () {};\n\n function RoundCornersModifier() {}\n extendPrototype([ShapeModifier], RoundCornersModifier);\n RoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this._isAnimated = !!this.rd.effectsSequence.length;\n };\n RoundCornersModifier.prototype.processPath = function (path, round) {\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var i;\n var len = path._length;\n var currentV;\n var currentI;\n var currentO;\n var closerV;\n var distance;\n var newPosPerc;\n var index = 0;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n for (i = 0; i < len; i += 1) {\n currentV = path.v[i];\n currentO = path.o[i];\n currentI = path.i[i];\n if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\n if ((i === 0 || i === len - 1) && !path.c) {\n clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\n /* clonedPath.v[index] = currentV;\n clonedPath.o[index] = currentO;\n clonedPath.i[index] = currentI; */\n index += 1;\n } else {\n if (i === 0) {\n closerV = path.v[len - 1];\n } else {\n closerV = path.v[i - 1];\n }\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = iX;\n iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\n vY = iY;\n oX = vX - (vX - currentV[0]) * roundCorner;\n oY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n if (i === len - 1) {\n closerV = path.v[0];\n } else {\n closerV = path.v[i + 1];\n }\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = oX;\n oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\n vY = oY;\n iX = vX - (vX - currentV[0]) * roundCorner;\n iY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n }\n } else {\n clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\n index += 1;\n }\n }\n return clonedPath;\n };\n RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var rd = this.rd.v;\n if (rd !== 0) {\n var shapeData;\n var localShapeCollection;\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\n }\n }\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function floatEqual(a, b) {\n return Math.abs(a - b) * 100000 <= Math.min(Math.abs(a), Math.abs(b));\n }\n function floatZero(f) {\n return Math.abs(f) <= 0.00001;\n }\n function lerp(p0, p1, amount) {\n return p0 * (1 - amount) + p1 * amount;\n }\n function lerpPoint(p0, p1, amount) {\n return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\n }\n function quadRoots(a, b, c) {\n // no root\n if (a === 0) return [];\n var s = b * b - 4 * a * c;\n // Complex roots\n if (s < 0) return [];\n var singleRoot = -b / (2 * a);\n // 1 root\n if (s === 0) return [singleRoot];\n var delta = Math.sqrt(s) / (2 * a);\n // 2 roots\n return [singleRoot - delta, singleRoot + delta];\n }\n function polynomialCoefficients(p0, p1, p2, p3) {\n return [-p0 + 3 * p1 - 3 * p2 + p3, 3 * p0 - 6 * p1 + 3 * p2, -3 * p0 + 3 * p1, p0];\n }\n function singlePoint(p) {\n return new PolynomialBezier(p, p, p, p, false);\n }\n function PolynomialBezier(p0, p1, p2, p3, linearize) {\n if (linearize && pointEqual(p0, p1)) {\n p1 = lerpPoint(p0, p3, 1 / 3);\n }\n if (linearize && pointEqual(p2, p3)) {\n p2 = lerpPoint(p0, p3, 2 / 3);\n }\n var coeffx = polynomialCoefficients(p0[0], p1[0], p2[0], p3[0]);\n var coeffy = polynomialCoefficients(p0[1], p1[1], p2[1], p3[1]);\n this.a = [coeffx[0], coeffy[0]];\n this.b = [coeffx[1], coeffy[1]];\n this.c = [coeffx[2], coeffy[2]];\n this.d = [coeffx[3], coeffy[3]];\n this.points = [p0, p1, p2, p3];\n }\n PolynomialBezier.prototype.point = function (t) {\n return [((this.a[0] * t + this.b[0]) * t + this.c[0]) * t + this.d[0], ((this.a[1] * t + this.b[1]) * t + this.c[1]) * t + this.d[1]];\n };\n PolynomialBezier.prototype.derivative = function (t) {\n return [(3 * t * this.a[0] + 2 * this.b[0]) * t + this.c[0], (3 * t * this.a[1] + 2 * this.b[1]) * t + this.c[1]];\n };\n PolynomialBezier.prototype.tangentAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[1], p[0]);\n };\n PolynomialBezier.prototype.normalAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[0], p[1]);\n };\n PolynomialBezier.prototype.inflectionPoints = function () {\n var denom = this.a[1] * this.b[0] - this.a[0] * this.b[1];\n if (floatZero(denom)) return [];\n var tcusp = -0.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / denom;\n var square = tcusp * tcusp - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / denom;\n if (square < 0) return [];\n var root = Math.sqrt(square);\n if (floatZero(root)) {\n if (root > 0 && root < 1) return [tcusp];\n return [];\n }\n return [tcusp - root, tcusp + root].filter(function (r) {\n return r > 0 && r < 1;\n });\n };\n PolynomialBezier.prototype.split = function (t) {\n if (t <= 0) return [singlePoint(this.points[0]), this];\n if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])];\n var p10 = lerpPoint(this.points[0], this.points[1], t);\n var p11 = lerpPoint(this.points[1], this.points[2], t);\n var p12 = lerpPoint(this.points[2], this.points[3], t);\n var p20 = lerpPoint(p10, p11, t);\n var p21 = lerpPoint(p11, p12, t);\n var p3 = lerpPoint(p20, p21, t);\n return [new PolynomialBezier(this.points[0], p10, p20, p3, true), new PolynomialBezier(p3, p21, p12, this.points[3], true)];\n };\n function extrema(bez, comp) {\n var min = bez.points[0][comp];\n var max = bez.points[bez.points.length - 1][comp];\n if (min > max) {\n var e = max;\n max = min;\n min = e;\n }\n // Derivative roots to find min/max\n var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\n for (var i = 0; i < f.length; i += 1) {\n if (f[i] > 0 && f[i] < 1) {\n var val = bez.point(f[i])[comp];\n if (val < min) min = val;else if (val > max) max = val;\n }\n }\n return {\n min: min,\n max: max\n };\n }\n PolynomialBezier.prototype.bounds = function () {\n return {\n x: extrema(this, 0),\n y: extrema(this, 1)\n };\n };\n PolynomialBezier.prototype.boundingBox = function () {\n var bounds = this.bounds();\n return {\n left: bounds.x.min,\n right: bounds.x.max,\n top: bounds.y.min,\n bottom: bounds.y.max,\n width: bounds.x.max - bounds.x.min,\n height: bounds.y.max - bounds.y.min,\n cx: (bounds.x.max + bounds.x.min) / 2,\n cy: (bounds.y.max + bounds.y.min) / 2\n };\n };\n function intersectData(bez, t1, t2) {\n var box = bez.boundingBox();\n return {\n cx: box.cx,\n cy: box.cy,\n width: box.width,\n height: box.height,\n bez: bez,\n t: (t1 + t2) / 2,\n t1: t1,\n t2: t2\n };\n }\n function splitData(data) {\n var split = data.bez.split(0.5);\n return [intersectData(split[0], data.t1, data.t), intersectData(split[1], data.t, data.t2)];\n }\n function boxIntersect(b1, b2) {\n return Math.abs(b1.cx - b2.cx) * 2 < b1.width + b2.width && Math.abs(b1.cy - b2.cy) * 2 < b1.height + b2.height;\n }\n function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\n if (!boxIntersect(d1, d2)) return;\n if (depth >= maxRecursion || d1.width <= tolerance && d1.height <= tolerance && d2.width <= tolerance && d2.height <= tolerance) {\n intersections.push([d1.t, d2.t]);\n return;\n }\n var d1s = splitData(d1);\n var d2s = splitData(d2);\n intersectsImpl(d1s[0], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[0], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n }\n PolynomialBezier.prototype.intersections = function (other, tolerance, maxRecursion) {\n if (tolerance === undefined) tolerance = 2;\n if (maxRecursion === undefined) maxRecursion = 7;\n var intersections = [];\n intersectsImpl(intersectData(this, 0, 1), intersectData(other, 0, 1), 0, tolerance, intersections, maxRecursion);\n return intersections;\n };\n PolynomialBezier.shapeSegment = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[index], shapePath.o[index], shapePath.i[nextIndex], shapePath.v[nextIndex], true);\n };\n PolynomialBezier.shapeSegmentInverted = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[nextIndex], shapePath.i[nextIndex], shapePath.o[index], shapePath.v[index], true);\n };\n function crossProduct(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n }\n function lineIntersection(start1, end1, start2, end2) {\n var v1 = [start1[0], start1[1], 1];\n var v2 = [end1[0], end1[1], 1];\n var v3 = [start2[0], start2[1], 1];\n var v4 = [end2[0], end2[1], 1];\n var r = crossProduct(crossProduct(v1, v2), crossProduct(v3, v4));\n if (floatZero(r[2])) return null;\n return [r[0] / r[2], r[1] / r[2]];\n }\n function polarOffset(p, angle, length) {\n return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\n }\n function pointDistance(p1, p2) {\n return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\n }\n function pointEqual(p1, p2) {\n return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\n }\n\n function ZigZagModifier() {}\n extendPrototype([ShapeModifier], ZigZagModifier);\n ZigZagModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this);\n this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this.pointsType = PropertyFactory.getProp(elem, data.pt, 0, null, this);\n this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0;\n };\n function setPoint(outputBezier, point, angle, direction, amplitude, outAmplitude, inAmplitude) {\n var angO = angle - Math.PI / 2;\n var angI = angle + Math.PI / 2;\n var px = point[0] + Math.cos(angle) * direction * amplitude;\n var py = point[1] - Math.sin(angle) * direction * amplitude;\n outputBezier.setTripleAt(px, py, px + Math.cos(angO) * outAmplitude, py - Math.sin(angO) * outAmplitude, px + Math.cos(angI) * inAmplitude, py - Math.sin(angI) * inAmplitude, outputBezier.length());\n }\n function getPerpendicularVector(pt1, pt2) {\n var vector = [pt2[0] - pt1[0], pt2[1] - pt1[1]];\n var rot = -Math.PI * 0.5;\n var rotatedVector = [Math.cos(rot) * vector[0] - Math.sin(rot) * vector[1], Math.sin(rot) * vector[0] + Math.cos(rot) * vector[1]];\n return rotatedVector;\n }\n function getProjectingAngle(path, cur) {\n var prevIndex = cur === 0 ? path.length() - 1 : cur - 1;\n var nextIndex = (cur + 1) % path.length();\n var prevPoint = path.v[prevIndex];\n var nextPoint = path.v[nextIndex];\n var pVector = getPerpendicularVector(prevPoint, nextPoint);\n return Math.atan2(0, 1) - Math.atan2(pVector[1], pVector[0]);\n }\n function zigZagCorner(outputBezier, path, cur, amplitude, frequency, pointType, direction) {\n var angle = getProjectingAngle(path, cur);\n var point = path.v[cur % path._length];\n var prevPoint = path.v[cur === 0 ? path._length - 1 : cur - 1];\n var nextPoint = path.v[(cur + 1) % path._length];\n var prevDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - prevPoint[0], 2) + Math.pow(point[1] - prevPoint[1], 2)) : 0;\n var nextDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - nextPoint[0], 2) + Math.pow(point[1] - nextPoint[1], 2)) : 0;\n setPoint(outputBezier, path.v[cur % path._length], angle, direction, amplitude, nextDist / ((frequency + 1) * 2), prevDist / ((frequency + 1) * 2), pointType);\n }\n function zigZagSegment(outputBezier, segment, amplitude, frequency, pointType, direction) {\n for (var i = 0; i < frequency; i += 1) {\n var t = (i + 1) / (frequency + 1);\n var dist = pointType === 2 ? Math.sqrt(Math.pow(segment.points[3][0] - segment.points[0][0], 2) + Math.pow(segment.points[3][1] - segment.points[0][1], 2)) : 0;\n var angle = segment.normalAngle(t);\n var point = segment.point(t);\n setPoint(outputBezier, point, angle, direction, amplitude, dist / ((frequency + 1) * 2), dist / ((frequency + 1) * 2), pointType);\n direction = -direction;\n }\n return direction;\n }\n ZigZagModifier.prototype.processPath = function (path, amplitude, frequency, pointType) {\n var count = path._length;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n if (!path.c) {\n count -= 1;\n }\n if (count === 0) return clonedPath;\n var direction = -1;\n var segment = PolynomialBezier.shapeSegment(path, 0);\n zigZagCorner(clonedPath, path, 0, amplitude, frequency, pointType, direction);\n for (var i = 0; i < count; i += 1) {\n direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\n if (i === count - 1 && !path.c) {\n segment = null;\n } else {\n segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\n }\n zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\n }\n return clonedPath;\n };\n ZigZagModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amplitude = this.amplitude.v;\n var frequency = Math.max(0, Math.round(this.frequency.v));\n var pointType = this.pointsType.v;\n if (amplitude !== 0) {\n var shapeData;\n var localShapeCollection;\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));\n }\n }\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function linearOffset(p1, p2, amount) {\n var angle = Math.atan2(p2[0] - p1[0], p2[1] - p1[1]);\n return [polarOffset(p1, angle, amount), polarOffset(p2, angle, amount)];\n }\n function offsetSegment(segment, amount) {\n var p0;\n var p1a;\n var p1b;\n var p2b;\n var p2a;\n var p3;\n var e;\n e = linearOffset(segment.points[0], segment.points[1], amount);\n p0 = e[0];\n p1a = e[1];\n e = linearOffset(segment.points[1], segment.points[2], amount);\n p1b = e[0];\n p2b = e[1];\n e = linearOffset(segment.points[2], segment.points[3], amount);\n p2a = e[0];\n p3 = e[1];\n var p1 = lineIntersection(p0, p1a, p1b, p2b);\n if (p1 === null) p1 = p1a;\n var p2 = lineIntersection(p2a, p3, p1b, p2b);\n if (p2 === null) p2 = p2a;\n return new PolynomialBezier(p0, p1, p2, p3);\n }\n function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\n var p0 = seg1.points[3];\n var p1 = seg2.points[0];\n\n // Bevel\n if (lineJoin === 3) return p0;\n\n // Connected, they don't need a joint\n if (pointEqual(p0, p1)) return p0;\n\n // Round\n if (lineJoin === 2) {\n var angleOut = -seg1.tangentAngle(1);\n var angleIn = -seg2.tangentAngle(0) + Math.PI;\n var center = lineIntersection(p0, polarOffset(p0, angleOut + Math.PI / 2, 100), p1, polarOffset(p1, angleOut + Math.PI / 2, 100));\n var radius = center ? pointDistance(center, p0) : pointDistance(p0, p1) / 2;\n var tan = polarOffset(p0, angleOut, 2 * radius * roundCorner);\n outputBezier.setXYAt(tan[0], tan[1], 'o', outputBezier.length() - 1);\n tan = polarOffset(p1, angleIn, 2 * radius * roundCorner);\n outputBezier.setTripleAt(p1[0], p1[1], p1[0], p1[1], tan[0], tan[1], outputBezier.length());\n return p1;\n }\n\n // Miter\n var t0 = pointEqual(p0, seg1.points[2]) ? seg1.points[0] : seg1.points[2];\n var t1 = pointEqual(p1, seg2.points[1]) ? seg2.points[3] : seg2.points[1];\n var intersection = lineIntersection(t0, p0, p1, t1);\n if (intersection && pointDistance(intersection, p0) < miterLimit) {\n outputBezier.setTripleAt(intersection[0], intersection[1], intersection[0], intersection[1], intersection[0], intersection[1], outputBezier.length());\n return intersection;\n }\n return p0;\n }\n function getIntersection(a, b) {\n var intersect = a.intersections(b);\n if (intersect.length && floatEqual(intersect[0][0], 1)) intersect.shift();\n if (intersect.length) return intersect[0];\n return null;\n }\n function pruneSegmentIntersection(a, b) {\n var outa = a.slice();\n var outb = b.slice();\n var intersect = getIntersection(a[a.length - 1], b[0]);\n if (intersect) {\n outa[a.length - 1] = a[a.length - 1].split(intersect[0])[0];\n outb[0] = b[0].split(intersect[1])[1];\n }\n if (a.length > 1 && b.length > 1) {\n intersect = getIntersection(a[0], b[b.length - 1]);\n if (intersect) {\n return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\n }\n }\n return [outa, outb];\n }\n function pruneIntersections(segments) {\n var e;\n for (var i = 1; i < segments.length; i += 1) {\n e = pruneSegmentIntersection(segments[i - 1], segments[i]);\n segments[i - 1] = e[0];\n segments[i] = e[1];\n }\n if (segments.length > 1) {\n e = pruneSegmentIntersection(segments[segments.length - 1], segments[0]);\n segments[segments.length - 1] = e[0];\n segments[0] = e[1];\n }\n return segments;\n }\n function offsetSegmentSplit(segment, amount) {\n /*\n We split each bezier segment into smaller pieces based\n on inflection points, this ensures the control point\n polygon is convex.\n (A cubic bezier can have none, one, or two inflection points)\n */\n var flex = segment.inflectionPoints();\n var left;\n var right;\n var split;\n var mid;\n if (flex.length === 0) {\n return [offsetSegment(segment, amount)];\n }\n if (flex.length === 1 || floatEqual(flex[1], 1)) {\n split = segment.split(flex[0]);\n left = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(right, amount)];\n }\n split = segment.split(flex[0]);\n left = split[0];\n var t = (flex[1] - flex[0]) / (1 - flex[0]);\n split = split[1].split(t);\n mid = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(mid, amount), offsetSegment(right, amount)];\n }\n function OffsetPathModifier() {}\n extendPrototype([ShapeModifier], OffsetPathModifier);\n OffsetPathModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this.miterLimit = PropertyFactory.getProp(elem, data.ml, 0, null, this);\n this.lineJoin = data.lj;\n this._isAnimated = this.amount.effectsSequence.length !== 0;\n };\n OffsetPathModifier.prototype.processPath = function (inputBezier, amount, lineJoin, miterLimit) {\n var outputBezier = shapePool.newElement();\n outputBezier.c = inputBezier.c;\n var count = inputBezier.length();\n if (!inputBezier.c) {\n count -= 1;\n }\n var i;\n var j;\n var segment;\n var multiSegments = [];\n for (i = 0; i < count; i += 1) {\n segment = PolynomialBezier.shapeSegment(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n if (!inputBezier.c) {\n for (i = count - 1; i >= 0; i -= 1) {\n segment = PolynomialBezier.shapeSegmentInverted(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n }\n multiSegments = pruneIntersections(multiSegments);\n\n // Add bezier segments to the output and apply line joints\n var lastPoint = null;\n var lastSeg = null;\n for (i = 0; i < multiSegments.length; i += 1) {\n var multiSegment = multiSegments[i];\n if (lastSeg) lastPoint = joinLines(outputBezier, lastSeg, multiSegment[0], lineJoin, miterLimit);\n lastSeg = multiSegment[multiSegment.length - 1];\n for (j = 0; j < multiSegment.length; j += 1) {\n segment = multiSegment[j];\n if (lastPoint && pointEqual(segment.points[0], lastPoint)) {\n outputBezier.setXYAt(segment.points[1][0], segment.points[1][1], 'o', outputBezier.length() - 1);\n } else {\n outputBezier.setTripleAt(segment.points[0][0], segment.points[0][1], segment.points[1][0], segment.points[1][1], segment.points[0][0], segment.points[0][1], outputBezier.length());\n }\n outputBezier.setTripleAt(segment.points[3][0], segment.points[3][1], segment.points[3][0], segment.points[3][1], segment.points[2][0], segment.points[2][1], outputBezier.length());\n lastPoint = segment.points[3];\n }\n }\n if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\n return outputBezier;\n };\n OffsetPathModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n var miterLimit = this.miterLimit.v;\n var lineJoin = this.lineJoin;\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));\n }\n }\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function getFontProperties(fontData) {\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\n var fWeight = 'normal';\n var fStyle = 'normal';\n var len = styles.length;\n var styleName;\n for (var i = 0; i < len; i += 1) {\n styleName = styles[i].toLowerCase();\n switch (styleName) {\n case 'italic':\n fStyle = 'italic';\n break;\n case 'bold':\n fWeight = '700';\n break;\n case 'black':\n fWeight = '900';\n break;\n case 'medium':\n fWeight = '500';\n break;\n case 'regular':\n case 'normal':\n fWeight = '400';\n break;\n case 'light':\n case 'thin':\n fWeight = '200';\n break;\n default:\n break;\n }\n }\n return {\n style: fStyle,\n weight: fontData.fWeight || fWeight\n };\n }\n\n var FontManager = function () {\n var maxWaitingTime = 5000;\n var emptyChar = {\n w: 0,\n size: 0,\n shapes: [],\n data: {\n shapes: []\n }\n };\n var combinedCharacters = [];\n // Hindi characters\n combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\n var BLACK_FLAG_CODE_POINT = 127988;\n var CANCEL_TAG_CODE_POINT = 917631;\n var A_TAG_CODE_POINT = 917601;\n var Z_TAG_CODE_POINT = 917626;\n var VARIATION_SELECTOR_16_CODE_POINT = 65039;\n var ZERO_WIDTH_JOINER_CODE_POINT = 8205;\n var REGIONAL_CHARACTER_A_CODE_POINT = 127462;\n var REGIONAL_CHARACTER_Z_CODE_POINT = 127487;\n var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff'];\n function trimFontOptions(font) {\n var familyArray = font.split(',');\n var i;\n var len = familyArray.length;\n var enabledFamilies = [];\n for (i = 0; i < len; i += 1) {\n if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\n enabledFamilies.push(familyArray[i]);\n }\n }\n return enabledFamilies.join(',');\n }\n function setUpNode(font, family) {\n var parentNode = createTag('span');\n // Node is invisible to screen readers.\n parentNode.setAttribute('aria-hidden', true);\n parentNode.style.fontFamily = family;\n var node = createTag('span');\n // Characters that vary significantly among different fonts\n node.innerText = 'giItT1WQy@!-/#';\n // Visible - so we can measure it - but not on the screen\n parentNode.style.position = 'absolute';\n parentNode.style.left = '-10000px';\n parentNode.style.top = '-10000px';\n // Large font size makes even subtle changes obvious\n parentNode.style.fontSize = '300px';\n // Reset any font properties\n parentNode.style.fontVariant = 'normal';\n parentNode.style.fontStyle = 'normal';\n parentNode.style.fontWeight = 'normal';\n parentNode.style.letterSpacing = '0';\n parentNode.appendChild(node);\n document.body.appendChild(parentNode);\n\n // Remember width with no applied web font\n var width = node.offsetWidth;\n node.style.fontFamily = trimFontOptions(font) + ', ' + family;\n return {\n node: node,\n w: width,\n parent: parentNode\n };\n }\n function checkLoadedFonts() {\n var i;\n var len = this.fonts.length;\n var node;\n var w;\n var loadedCount = len;\n for (i = 0; i < len; i += 1) {\n if (this.fonts[i].loaded) {\n loadedCount -= 1;\n } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].monoCase.node;\n w = this.fonts[i].monoCase.w;\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].sansCase.node;\n w = this.fonts[i].sansCase.w;\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n }\n }\n if (this.fonts[i].loaded) {\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\n }\n }\n }\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\n setTimeout(this.checkLoadedFontsBinded, 20);\n } else {\n setTimeout(this.setIsLoadedBinded, 10);\n }\n }\n function createHelper(fontData, def) {\n var engine = document.body && def ? 'svg' : 'canvas';\n var helper;\n var fontProps = getFontProperties(fontData);\n if (engine === 'svg') {\n var tHelper = createNS('text');\n tHelper.style.fontSize = '100px';\n // tHelper.style.fontFamily = fontData.fFamily;\n tHelper.setAttribute('font-family', fontData.fFamily);\n tHelper.setAttribute('font-style', fontProps.style);\n tHelper.setAttribute('font-weight', fontProps.weight);\n tHelper.textContent = '1';\n if (fontData.fClass) {\n tHelper.style.fontFamily = 'inherit';\n tHelper.setAttribute('class', fontData.fClass);\n } else {\n tHelper.style.fontFamily = fontData.fFamily;\n }\n def.appendChild(tHelper);\n helper = tHelper;\n } else {\n var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d');\n tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily;\n helper = tCanvasHelper;\n }\n function measure(text) {\n if (engine === 'svg') {\n helper.textContent = text;\n return helper.getComputedTextLength();\n }\n return helper.measureText(text).width;\n }\n return {\n measureText: measure\n };\n }\n function addFonts(fontData, defs) {\n if (!fontData) {\n this.isLoaded = true;\n return;\n }\n if (this.chars) {\n this.isLoaded = true;\n this.fonts = fontData.list;\n return;\n }\n if (!document.body) {\n this.isLoaded = true;\n fontData.list.forEach(function (data) {\n data.helper = createHelper(data);\n data.cache = {};\n });\n this.fonts = fontData.list;\n return;\n }\n var fontArr = fontData.list;\n var i;\n var len = fontArr.length;\n var _pendingFonts = len;\n for (i = 0; i < len; i += 1) {\n var shouldLoadFont = true;\n var loadedSelector;\n var j;\n fontArr[i].loaded = false;\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\n if (!fontArr[i].fPath) {\n fontArr[i].loaded = true;\n _pendingFonts -= 1;\n } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\n loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\n if (loadedSelector.length > 0) {\n shouldLoadFont = false;\n }\n if (shouldLoadFont) {\n var s = createTag('style');\n s.setAttribute('f-forigin', fontArr[i].fOrigin);\n s.setAttribute('f-origin', fontArr[i].origin);\n s.setAttribute('f-family', fontArr[i].fFamily);\n s.type = 'text/css';\n s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\n defs.appendChild(s);\n }\n } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n if (shouldLoadFont) {\n var l = createTag('link');\n l.setAttribute('f-forigin', fontArr[i].fOrigin);\n l.setAttribute('f-origin', fontArr[i].origin);\n l.type = 'text/css';\n l.rel = 'stylesheet';\n l.href = fontArr[i].fPath;\n document.body.appendChild(l);\n }\n } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (fontArr[i].fPath === loadedSelector[j].src) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n if (shouldLoadFont) {\n var sc = createTag('link');\n sc.setAttribute('f-forigin', fontArr[i].fOrigin);\n sc.setAttribute('f-origin', fontArr[i].origin);\n sc.setAttribute('rel', 'stylesheet');\n sc.setAttribute('href', fontArr[i].fPath);\n defs.appendChild(sc);\n }\n }\n fontArr[i].helper = createHelper(fontArr[i], defs);\n fontArr[i].cache = {};\n this.fonts.push(fontArr[i]);\n }\n if (_pendingFonts === 0) {\n this.isLoaded = true;\n } else {\n // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\n // Adding this timeout seems to fix it\n setTimeout(this.checkLoadedFonts.bind(this), 100);\n }\n }\n function addChars(chars) {\n if (!chars) {\n return;\n }\n if (!this.chars) {\n this.chars = [];\n }\n var i;\n var len = chars.length;\n var j;\n var jLen = this.chars.length;\n var found;\n for (i = 0; i < len; i += 1) {\n j = 0;\n found = false;\n while (j < jLen) {\n if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\n found = true;\n }\n j += 1;\n }\n if (!found) {\n this.chars.push(chars[i]);\n jLen += 1;\n }\n }\n }\n function getCharData(_char, style, font) {\n var i = 0;\n var len = this.chars.length;\n while (i < len) {\n if (this.chars[i].ch === _char && this.chars[i].style === style && this.chars[i].fFamily === font) {\n return this.chars[i];\n }\n i += 1;\n }\n if ((typeof _char === 'string' && _char.charCodeAt(0) !== 13 || !_char) && console && console.warn // eslint-disable-line no-console\n && !this._warned) {\n this._warned = true;\n console.warn('Missing character from exported characters list: ', _char, style, font); // eslint-disable-line no-console\n }\n return emptyChar;\n }\n function measureText(_char2, fontName, size) {\n var fontData = this.getFontByName(fontName);\n // Using the char instead of char.charCodeAt(0)\n // to avoid collisions between equal chars\n var index = _char2;\n if (!fontData.cache[index]) {\n var tHelper = fontData.helper;\n if (_char2 === ' ') {\n var doubleSize = tHelper.measureText('|' + _char2 + '|');\n var singleSize = tHelper.measureText('||');\n fontData.cache[index] = (doubleSize - singleSize) / 100;\n } else {\n fontData.cache[index] = tHelper.measureText(_char2) / 100;\n }\n }\n return fontData.cache[index] * size;\n }\n function getFontByName(name) {\n var i = 0;\n var len = this.fonts.length;\n while (i < len) {\n if (this.fonts[i].fName === name) {\n return this.fonts[i];\n }\n i += 1;\n }\n return this.fonts[0];\n }\n function getCodePoint(string) {\n var codePoint = 0;\n var first = string.charCodeAt(0);\n if (first >= 0xD800 && first <= 0xDBFF) {\n var second = string.charCodeAt(1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n return codePoint;\n }\n\n // Skin tone modifiers\n function isModifier(firstCharCode, secondCharCode) {\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\n return surrogateModifiers.indexOf(sum) !== -1;\n }\n function isZeroWidthJoiner(charCode) {\n return charCode === ZERO_WIDTH_JOINER_CODE_POINT;\n }\n\n // This codepoint may change the appearance of the preceding character.\n // If that is a symbol, dingbat or emoji, U+FE0F forces it to be rendered\n // as a colorful image as compared to a monochrome text variant.\n function isVariationSelector(charCode) {\n return charCode === VARIATION_SELECTOR_16_CODE_POINT;\n }\n\n // The regional indicator symbols are a set of 26 alphabetic Unicode\n /// characters (A–Z) intended to be used to encode ISO 3166-1 alpha-2\n // two-letter country codes in a way that allows optional special treatment.\n function isRegionalCode(string) {\n var codePoint = getCodePoint(string);\n if (codePoint >= REGIONAL_CHARACTER_A_CODE_POINT && codePoint <= REGIONAL_CHARACTER_Z_CODE_POINT) {\n return true;\n }\n return false;\n }\n\n // Some Emoji implementations represent combinations of\n // two “regional indicator” letters as a single flag symbol.\n function isFlagEmoji(string) {\n return isRegionalCode(string.substr(0, 2)) && isRegionalCode(string.substr(2, 2));\n }\n function isCombinedCharacter(_char3) {\n return combinedCharacters.indexOf(_char3) !== -1;\n }\n\n // Regional flags start with a BLACK_FLAG_CODE_POINT\n // folowed by 5 chars in the TAG range\n // and end with a CANCEL_TAG_CODE_POINT\n function isRegionalFlag(text, index) {\n var codePoint = getCodePoint(text.substr(index, 2));\n if (codePoint !== BLACK_FLAG_CODE_POINT) {\n return false;\n }\n var count = 0;\n index += 2;\n while (count < 5) {\n codePoint = getCodePoint(text.substr(index, 2));\n if (codePoint < A_TAG_CODE_POINT || codePoint > Z_TAG_CODE_POINT) {\n return false;\n }\n count += 1;\n index += 2;\n }\n return getCodePoint(text.substr(index, 2)) === CANCEL_TAG_CODE_POINT;\n }\n function setIsLoaded() {\n this.isLoaded = true;\n }\n var Font = function Font() {\n this.fonts = [];\n this.chars = null;\n this.typekitLoaded = 0;\n this.isLoaded = false;\n this._warned = false;\n this.initTime = Date.now();\n this.setIsLoadedBinded = this.setIsLoaded.bind(this);\n this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\n };\n Font.isModifier = isModifier;\n Font.isZeroWidthJoiner = isZeroWidthJoiner;\n Font.isFlagEmoji = isFlagEmoji;\n Font.isRegionalCode = isRegionalCode;\n Font.isCombinedCharacter = isCombinedCharacter;\n Font.isRegionalFlag = isRegionalFlag;\n Font.isVariationSelector = isVariationSelector;\n Font.BLACK_FLAG_CODE_POINT = BLACK_FLAG_CODE_POINT;\n var fontPrototype = {\n addChars: addChars,\n addFonts: addFonts,\n getCharData: getCharData,\n getFontByName: getFontByName,\n measureText: measureText,\n checkLoadedFonts: checkLoadedFonts,\n setIsLoaded: setIsLoaded\n };\n Font.prototype = fontPrototype;\n return Font;\n }();\n\n function SlotManager(animationData) {\n this.animationData = animationData;\n }\n SlotManager.prototype.getProp = function (data) {\n if (this.animationData.slots && this.animationData.slots[data.sid]) {\n return Object.assign(data, this.animationData.slots[data.sid].p);\n }\n return data;\n };\n function slotFactory(animationData) {\n return new SlotManager(animationData);\n }\n\n function RenderableElement() {}\n RenderableElement.prototype = {\n initRenderable: function initRenderable() {\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n this.isInRange = false;\n // layer's display state\n this.hidden = false;\n // If layer's transparency equals 0, it can be hidden\n this.isTransparent = false;\n // list of animated components\n this.renderableComponents = [];\n },\n addRenderableComponent: function addRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) === -1) {\n this.renderableComponents.push(component);\n }\n },\n removeRenderableComponent: function removeRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) !== -1) {\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\n }\n },\n prepareRenderableFrame: function prepareRenderableFrame(num) {\n this.checkLayerLimits(num);\n },\n checkTransparency: function checkTransparency() {\n if (this.finalTransform.mProp.o.v <= 0) {\n if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\n this.isTransparent = true;\n this.hide();\n }\n } else if (this.isTransparent) {\n this.isTransparent = false;\n this.show();\n }\n },\n /**\n * @function\n * Initializes frame related properties.\n *\n * @param {number} num\n * current frame number in Layer's time\n *\n */\n checkLayerLimits: function checkLayerLimits(num) {\n if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\n if (this.isInRange !== true) {\n this.globalData._mdf = true;\n this._mdf = true;\n this.isInRange = true;\n this.show();\n }\n } else if (this.isInRange !== false) {\n this.globalData._mdf = true;\n this.isInRange = false;\n this.hide();\n }\n },\n renderRenderable: function renderRenderable() {\n var i;\n var len = this.renderableComponents.length;\n for (i = 0; i < len; i += 1) {\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\n }\n /* this.maskManager.renderFrame(this.finalTransform.mat);\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\n },\n sourceRectAtTime: function sourceRectAtTime() {\n return {\n top: 0,\n left: 0,\n width: 100,\n height: 100\n };\n },\n getLayerSize: function getLayerSize() {\n if (this.data.ty === 5) {\n return {\n w: this.data.textData.width,\n h: this.data.textData.height\n };\n }\n return {\n w: this.data.width,\n h: this.data.height\n };\n }\n };\n\n var getBlendMode = function () {\n var blendModeEnums = {\n 0: 'source-over',\n 1: 'multiply',\n 2: 'screen',\n 3: 'overlay',\n 4: 'darken',\n 5: 'lighten',\n 6: 'color-dodge',\n 7: 'color-burn',\n 8: 'hard-light',\n 9: 'soft-light',\n 10: 'difference',\n 11: 'exclusion',\n 12: 'hue',\n 13: 'saturation',\n 14: 'color',\n 15: 'luminosity'\n };\n return function (mode) {\n return blendModeEnums[mode] || '';\n };\n }();\n\n function SliderEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n function AngleEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n function ColorEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n function PointEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n function LayerIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n function MaskIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n function CheckboxEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n function NoValueEffect() {\n this.p = {};\n }\n\n function EffectsManager(data, element) {\n var effects = data.ef || [];\n this.effectElements = [];\n var i;\n var len = effects.length;\n var effectItem;\n for (i = 0; i < len; i += 1) {\n effectItem = new GroupEffect(effects[i], element);\n this.effectElements.push(effectItem);\n }\n }\n function GroupEffect(data, element) {\n this.init(data, element);\n }\n extendPrototype([DynamicPropertyContainer], GroupEffect);\n GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\n GroupEffect.prototype.init = function (data, element) {\n this.data = data;\n this.effectElements = [];\n this.initDynamicPropertyContainer(element);\n var i;\n var len = this.data.ef.length;\n var eff;\n var effects = this.data.ef;\n for (i = 0; i < len; i += 1) {\n eff = null;\n switch (effects[i].ty) {\n case 0:\n eff = new SliderEffect(effects[i], element, this);\n break;\n case 1:\n eff = new AngleEffect(effects[i], element, this);\n break;\n case 2:\n eff = new ColorEffect(effects[i], element, this);\n break;\n case 3:\n eff = new PointEffect(effects[i], element, this);\n break;\n case 4:\n case 7:\n eff = new CheckboxEffect(effects[i], element, this);\n break;\n case 10:\n eff = new LayerIndexEffect(effects[i], element, this);\n break;\n case 11:\n eff = new MaskIndexEffect(effects[i], element, this);\n break;\n case 5:\n eff = new EffectsManager(effects[i], element, this);\n break;\n // case 6:\n default:\n eff = new NoValueEffect(effects[i], element, this);\n break;\n }\n if (eff) {\n this.effectElements.push(eff);\n }\n }\n };\n\n function BaseElement() {}\n BaseElement.prototype = {\n checkMasks: function checkMasks() {\n if (!this.data.hasMask) {\n return false;\n }\n var i = 0;\n var len = this.data.masksProperties.length;\n while (i < len) {\n if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\n return true;\n }\n i += 1;\n }\n return false;\n },\n initExpressions: function initExpressions() {\n var expressionsInterfaces = getExpressionInterfaces();\n if (!expressionsInterfaces) {\n return;\n }\n var LayerExpressionInterface = expressionsInterfaces('layer');\n var EffectsExpressionInterface = expressionsInterfaces('effects');\n var ShapeExpressionInterface = expressionsInterfaces('shape');\n var TextExpressionInterface = expressionsInterfaces('text');\n var CompExpressionInterface = expressionsInterfaces('comp');\n this.layerInterface = LayerExpressionInterface(this);\n if (this.data.hasMask && this.maskManager) {\n this.layerInterface.registerMaskInterface(this.maskManager);\n }\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\n this.layerInterface.registerEffectsInterface(effectsInterface);\n if (this.data.ty === 0 || this.data.xt) {\n this.compInterface = CompExpressionInterface(this);\n } else if (this.data.ty === 4) {\n this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\n this.layerInterface.content = this.layerInterface.shapeInterface;\n } else if (this.data.ty === 5) {\n this.layerInterface.textInterface = TextExpressionInterface(this);\n this.layerInterface.text = this.layerInterface.textInterface;\n }\n },\n setBlendMode: function setBlendMode() {\n var blendModeValue = getBlendMode(this.data.bm);\n var elem = this.baseElement || this.layerElement;\n elem.style['mix-blend-mode'] = blendModeValue;\n },\n initBaseData: function initBaseData(data, globalData, comp) {\n this.globalData = globalData;\n this.comp = comp;\n this.data = data;\n this.layerId = createElementID();\n\n // Stretch factor for old animations missing this property.\n if (!this.data.sr) {\n this.data.sr = 1;\n }\n // effects manager\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\n },\n getType: function getType() {\n return this.type;\n },\n sourceRectAtTime: function sourceRectAtTime() {}\n };\n\n /**\n * @file\n * Handles element's layer frame update.\n * Checks layer in point and out point\n *\n */\n\n function FrameElement() {}\n FrameElement.prototype = {\n /**\n * @function\n * Initializes frame related properties.\n *\n */\n initFrame: function initFrame() {\n // set to true when inpoint is rendered\n this._isFirstFrame = false;\n // list of animated properties\n this.dynamicProperties = [];\n // If layer has been modified in current tick this will be true\n this._mdf = false;\n },\n /**\n * @function\n * Calculates all dynamic values\n *\n * @param {number} num\n * current frame number in Layer's time\n * @param {boolean} isVisible\n * if layers is currently in range\n *\n */\n prepareProperties: function prepareProperties(num, isVisible) {\n var i;\n var len = this.dynamicProperties.length;\n for (i = 0; i < len; i += 1) {\n if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\n this.dynamicProperties[i].getValue();\n if (this.dynamicProperties[i]._mdf) {\n this.globalData._mdf = true;\n this._mdf = true;\n }\n }\n }\n },\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n }\n }\n };\n\n function FootageElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.footageData = globalData.imageLoader.getAsset(this.assetData);\n this.initBaseData(data, globalData, comp);\n }\n FootageElement.prototype.prepareFrame = function () {};\n extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\n FootageElement.prototype.getBaseElement = function () {\n return null;\n };\n FootageElement.prototype.renderFrame = function () {};\n FootageElement.prototype.destroy = function () {};\n FootageElement.prototype.initExpressions = function () {\n var expressionsInterfaces = getExpressionInterfaces();\n if (!expressionsInterfaces) {\n return;\n }\n var FootageInterface = expressionsInterfaces('footage');\n this.layerInterface = FootageInterface(this);\n };\n FootageElement.prototype.getFootageData = function () {\n return this.footageData;\n };\n\n function AudioElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.initBaseData(data, globalData, comp);\n this._isPlaying = false;\n this._canPlay = false;\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.audio = this.globalData.audioController.createAudio(assetPath);\n this._currentTime = 0;\n this.globalData.audioController.addAudio(this);\n this._volumeMultiplier = 1;\n this._volume = 1;\n this._previousVolume = null;\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : {\n k: [100]\n }, 1, 0.01, this);\n }\n AudioElement.prototype.prepareFrame = function (num) {\n this.prepareRenderableFrame(num, true);\n this.prepareProperties(num, true);\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n this._currentTime = timeRemapped;\n } else {\n this._currentTime = num / this.data.sr;\n }\n this._volume = this.lv.v[0];\n var totalVolume = this._volume * this._volumeMultiplier;\n if (this._previousVolume !== totalVolume) {\n this._previousVolume = totalVolume;\n this.audio.volume(totalVolume);\n }\n };\n extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\n AudioElement.prototype.renderFrame = function () {\n if (this.isInRange && this._canPlay) {\n if (!this._isPlaying) {\n this.audio.play();\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n this._isPlaying = true;\n } else if (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1) {\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n }\n }\n };\n AudioElement.prototype.show = function () {\n // this.audio.play()\n };\n AudioElement.prototype.hide = function () {\n this.audio.pause();\n this._isPlaying = false;\n };\n AudioElement.prototype.pause = function () {\n this.audio.pause();\n this._isPlaying = false;\n this._canPlay = false;\n };\n AudioElement.prototype.resume = function () {\n this._canPlay = true;\n };\n AudioElement.prototype.setRate = function (rateValue) {\n this.audio.rate(rateValue);\n };\n AudioElement.prototype.volume = function (volumeValue) {\n this._volumeMultiplier = volumeValue;\n this._previousVolume = volumeValue * this._volume;\n this.audio.volume(this._previousVolume);\n };\n AudioElement.prototype.getBaseElement = function () {\n return null;\n };\n AudioElement.prototype.destroy = function () {};\n AudioElement.prototype.sourceRectAtTime = function () {};\n AudioElement.prototype.initExpressions = function () {};\n\n function BaseRenderer() {}\n BaseRenderer.prototype.checkLayers = function (num) {\n var i;\n var len = this.layers.length;\n var data;\n this.completeLayers = true;\n for (i = len - 1; i >= 0; i -= 1) {\n if (!this.elements[i]) {\n data = this.layers[i];\n if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) {\n this.buildItem(i);\n }\n }\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\n }\n this.checkPendingElements();\n };\n BaseRenderer.prototype.createItem = function (layer) {\n switch (layer.ty) {\n case 2:\n return this.createImage(layer);\n case 0:\n return this.createComp(layer);\n case 1:\n return this.createSolid(layer);\n case 3:\n return this.createNull(layer);\n case 4:\n return this.createShape(layer);\n case 5:\n return this.createText(layer);\n case 6:\n return this.createAudio(layer);\n case 13:\n return this.createCamera(layer);\n case 15:\n return this.createFootage(layer);\n default:\n return this.createNull(layer);\n }\n };\n BaseRenderer.prototype.createCamera = function () {\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\n };\n BaseRenderer.prototype.createAudio = function (data) {\n return new AudioElement(data, this.globalData, this);\n };\n BaseRenderer.prototype.createFootage = function (data) {\n return new FootageElement(data, this.globalData, this);\n };\n BaseRenderer.prototype.buildAllItems = function () {\n var i;\n var len = this.layers.length;\n for (i = 0; i < len; i += 1) {\n this.buildItem(i);\n }\n this.checkPendingElements();\n };\n BaseRenderer.prototype.includeLayers = function (newLayers) {\n this.completeLayers = false;\n var i;\n var len = newLayers.length;\n var j;\n var jLen = this.layers.length;\n for (i = 0; i < len; i += 1) {\n j = 0;\n while (j < jLen) {\n if (this.layers[j].id === newLayers[i].id) {\n this.layers[j] = newLayers[i];\n break;\n }\n j += 1;\n }\n }\n };\n BaseRenderer.prototype.setProjectInterface = function (pInterface) {\n this.globalData.projectInterface = pInterface;\n };\n BaseRenderer.prototype.initItems = function () {\n if (!this.globalData.progressiveLoad) {\n this.buildAllItems();\n }\n };\n BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\n var elements = this.elements;\n var layers = this.layers;\n var i = 0;\n var len = layers.length;\n while (i < len) {\n if (layers[i].ind == parentName) {\n // eslint-disable-line eqeqeq\n if (!elements[i] || elements[i] === true) {\n this.buildItem(i);\n this.addPendingElement(element);\n } else {\n hierarchy.push(elements[i]);\n elements[i].setAsParent();\n if (layers[i].parent !== undefined) {\n this.buildElementParenting(element, layers[i].parent, hierarchy);\n } else {\n element.setHierarchy(hierarchy);\n }\n }\n }\n i += 1;\n }\n };\n BaseRenderer.prototype.addPendingElement = function (element) {\n this.pendingElements.push(element);\n };\n BaseRenderer.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i]);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n BaseRenderer.prototype.getElementById = function (ind) {\n var i;\n var len = this.elements.length;\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.ind === ind) {\n return this.elements[i];\n }\n }\n return null;\n };\n BaseRenderer.prototype.getElementByPath = function (path) {\n var pathValue = path.shift();\n var element;\n if (typeof pathValue === 'number') {\n element = this.elements[pathValue];\n } else {\n var i;\n var len = this.elements.length;\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.nm === pathValue) {\n element = this.elements[i];\n break;\n }\n }\n }\n if (path.length === 0) {\n return element;\n }\n return element.getElementByPath(path);\n };\n BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\n this.globalData.fontManager = new FontManager();\n this.globalData.slotManager = slotFactory(animData);\n this.globalData.fontManager.addChars(animData.chars);\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\n this.globalData.imageLoader = this.animationItem.imagePreloader;\n this.globalData.audioController = this.animationItem.audioController;\n this.globalData.frameId = 0;\n this.globalData.frameRate = animData.fr;\n this.globalData.nm = animData.nm;\n this.globalData.compSize = {\n w: animData.w,\n h: animData.h\n };\n };\n\n var effectTypes = {\n TRANSFORM_EFFECT: 'transformEFfect'\n };\n\n function TransformElement() {}\n TransformElement.prototype = {\n initTransform: function initTransform() {\n var mat = new Matrix();\n this.finalTransform = {\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {\n o: 0\n },\n _matMdf: false,\n _localMatMdf: false,\n _opMdf: false,\n mat: mat,\n localMat: mat,\n localOpacity: 1\n };\n if (this.data.ao) {\n this.finalTransform.mProp.autoOriented = true;\n }\n\n // TODO: check TYPE 11: Guided elements\n if (this.data.ty !== 11) {\n // this.createElements();\n }\n },\n renderTransform: function renderTransform() {\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\n if (this.hierarchy) {\n var mat;\n var finalMat = this.finalTransform.mat;\n var i = 0;\n var len = this.hierarchy.length;\n // Checking if any of the transformation matrices in the hierarchy chain has changed.\n if (!this.finalTransform._matMdf) {\n while (i < len) {\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\n this.finalTransform._matMdf = true;\n break;\n }\n i += 1;\n }\n }\n if (this.finalTransform._matMdf) {\n mat = this.finalTransform.mProp.v.props;\n finalMat.cloneFromProps(mat);\n for (i = 0; i < len; i += 1) {\n finalMat.multiply(this.hierarchy[i].finalTransform.mProp.v);\n }\n }\n }\n if (!this.localTransforms || this.finalTransform._matMdf) {\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n }\n if (this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n }\n },\n renderLocalTransform: function renderLocalTransform() {\n if (this.localTransforms) {\n var i = 0;\n var len = this.localTransforms.length;\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n if (!this.finalTransform._localMatMdf || !this.finalTransform._opMdf) {\n while (i < len) {\n if (this.localTransforms[i]._mdf) {\n this.finalTransform._localMatMdf = true;\n }\n if (this.localTransforms[i]._opMdf && !this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n this.finalTransform._opMdf = true;\n }\n i += 1;\n }\n }\n if (this.finalTransform._localMatMdf) {\n var localMat = this.finalTransform.localMat;\n this.localTransforms[0].matrix.clone(localMat);\n for (i = 1; i < len; i += 1) {\n var lmat = this.localTransforms[i].matrix;\n localMat.multiply(lmat);\n }\n localMat.multiply(this.finalTransform.mat);\n }\n if (this.finalTransform._opMdf) {\n var localOp = this.finalTransform.localOpacity;\n for (i = 0; i < len; i += 1) {\n localOp *= this.localTransforms[i].opacity * 0.01;\n }\n this.finalTransform.localOpacity = localOp;\n }\n }\n },\n searchEffectTransforms: function searchEffectTransforms() {\n if (this.renderableEffectsManager) {\n var transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n if (transformEffects.length) {\n this.localTransforms = [];\n this.finalTransform.localMat = new Matrix();\n var i = 0;\n var len = transformEffects.length;\n for (i = 0; i < len; i += 1) {\n this.localTransforms.push(transformEffects[i]);\n }\n }\n }\n },\n globalToLocal: function globalToLocal(pt) {\n var transforms = [];\n transforms.push(this.finalTransform);\n var flag = true;\n var comp = this.comp;\n while (flag) {\n if (comp.finalTransform) {\n if (comp.data.hasMask) {\n transforms.splice(0, 0, comp.finalTransform);\n }\n comp = comp.comp;\n } else {\n flag = false;\n }\n }\n var i;\n var len = transforms.length;\n var ptNew;\n for (i = 0; i < len; i += 1) {\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0);\n // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\n }\n return pt;\n },\n mHelper: new Matrix()\n };\n\n function MaskElement(data, element, globalData) {\n this.data = data;\n this.element = element;\n this.globalData = globalData;\n this.storedData = [];\n this.masksProperties = this.data.masksProperties || [];\n this.maskElement = null;\n var defs = this.globalData.defs;\n var i;\n var len = this.masksProperties ? this.masksProperties.length : 0;\n this.viewData = createSizedArray(len);\n this.solidPath = '';\n var path;\n var properties = this.masksProperties;\n var count = 0;\n var currentMasks = [];\n var j;\n var jLen;\n var layerId = createElementID();\n var rect;\n var expansor;\n var feMorph;\n var x;\n var maskType = 'clipPath';\n var maskRef = 'clip-path';\n for (i = 0; i < len; i += 1) {\n if (properties[i].mode !== 'a' && properties[i].mode !== 'n' || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\n maskType = 'mask';\n maskRef = 'mask';\n }\n if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\n rect = createNS('rect');\n rect.setAttribute('fill', '#ffffff');\n rect.setAttribute('width', this.element.comp.data.w || 0);\n rect.setAttribute('height', this.element.comp.data.h || 0);\n currentMasks.push(rect);\n } else {\n rect = null;\n }\n path = createNS('path');\n if (properties[i].mode === 'n') {\n // TODO move this to a factory or to a constructor\n this.viewData[i] = {\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n elem: path,\n lastPath: ''\n };\n defs.appendChild(path);\n } else {\n count += 1;\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\n path.setAttribute('clip-rule', 'nonzero');\n var filterID;\n if (properties[i].x.k !== 0) {\n maskType = 'mask';\n maskRef = 'mask';\n x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\n filterID = createElementID();\n expansor = createNS('filter');\n expansor.setAttribute('id', filterID);\n feMorph = createNS('feMorphology');\n feMorph.setAttribute('operator', 'erode');\n feMorph.setAttribute('in', 'SourceGraphic');\n feMorph.setAttribute('radius', '0');\n expansor.appendChild(feMorph);\n defs.appendChild(expansor);\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\n } else {\n feMorph = null;\n x = null;\n }\n\n // TODO move this to a factory or to a constructor\n this.storedData[i] = {\n elem: path,\n x: x,\n expan: feMorph,\n lastPath: '',\n lastOperator: '',\n filterId: filterID,\n lastRadius: 0\n };\n if (properties[i].mode === 'i') {\n jLen = currentMasks.length;\n var g = createNS('g');\n for (j = 0; j < jLen; j += 1) {\n g.appendChild(currentMasks[j]);\n }\n var mask = createNS('mask');\n mask.setAttribute('mask-type', 'alpha');\n mask.setAttribute('id', layerId + '_' + count);\n mask.appendChild(path);\n defs.appendChild(mask);\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')');\n currentMasks.length = 0;\n currentMasks.push(g);\n } else {\n currentMasks.push(path);\n }\n if (properties[i].inv && !this.solidPath) {\n this.solidPath = this.createLayerSolidPath();\n }\n // TODO move this to a factory or to a constructor\n this.viewData[i] = {\n elem: path,\n lastPath: '',\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n invRect: rect\n };\n if (!this.viewData[i].prop.k) {\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n }\n }\n this.maskElement = createNS(maskType);\n len = currentMasks.length;\n for (i = 0; i < len; i += 1) {\n this.maskElement.appendChild(currentMasks[i]);\n }\n if (count > 0) {\n this.maskElement.setAttribute('id', layerId);\n this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')');\n defs.appendChild(this.maskElement);\n }\n if (this.viewData.length) {\n this.element.addRenderableComponent(this);\n }\n }\n MaskElement.prototype.getMaskProperty = function (pos) {\n return this.viewData[pos].prop;\n };\n MaskElement.prototype.renderFrame = function (isFirstFrame) {\n var finalMat = this.element.finalTransform.mat;\n var i;\n var len = this.masksProperties.length;\n for (i = 0; i < len; i += 1) {\n if (this.viewData[i].prop._mdf || isFirstFrame) {\n this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n if (this.viewData[i].op._mdf || isFirstFrame) {\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\n }\n if (this.masksProperties[i].mode !== 'n') {\n if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\n }\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\n var feMorph = this.storedData[i].expan;\n if (this.storedData[i].x.v < 0) {\n if (this.storedData[i].lastOperator !== 'erode') {\n this.storedData[i].lastOperator = 'erode';\n this.storedData[i].elem.setAttribute('filter', 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')');\n }\n feMorph.setAttribute('radius', -this.storedData[i].x.v);\n } else {\n if (this.storedData[i].lastOperator !== 'dilate') {\n this.storedData[i].lastOperator = 'dilate';\n this.storedData[i].elem.setAttribute('filter', null);\n }\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\n }\n }\n }\n }\n };\n MaskElement.prototype.getMaskelement = function () {\n return this.maskElement;\n };\n MaskElement.prototype.createLayerSolidPath = function () {\n var path = 'M0,0 ';\n path += ' h' + this.globalData.compSize.w;\n path += ' v' + this.globalData.compSize.h;\n path += ' h-' + this.globalData.compSize.w;\n path += ' v-' + this.globalData.compSize.h + ' ';\n return path;\n };\n MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\n var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n var i;\n var len;\n len = pathNodes._length;\n for (i = 1; i < len; i += 1) {\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\n }\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\n if (pathNodes.c && len > 1) {\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n }\n // pathNodes.__renderedString = pathString;\n\n if (viewData.lastPath !== pathString) {\n var pathShapeValue = '';\n if (viewData.elem) {\n if (pathNodes.c) {\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\n }\n viewData.elem.setAttribute('d', pathShapeValue);\n }\n viewData.lastPath = pathString;\n }\n };\n MaskElement.prototype.destroy = function () {\n this.element = null;\n this.globalData = null;\n this.maskElement = null;\n this.data = null;\n this.masksProperties = null;\n };\n\n var filtersFactory = function () {\n var ob = {};\n ob.createFilter = createFilter;\n ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\n function createFilter(filId, skipCoordinates) {\n var fil = createNS('filter');\n fil.setAttribute('id', filId);\n if (skipCoordinates !== true) {\n fil.setAttribute('filterUnits', 'objectBoundingBox');\n fil.setAttribute('x', '0%');\n fil.setAttribute('y', '0%');\n fil.setAttribute('width', '100%');\n fil.setAttribute('height', '100%');\n }\n return fil;\n }\n function createAlphaToLuminanceFilter() {\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');\n return feColorMatrix;\n }\n return ob;\n }();\n\n var featureSupport = function () {\n var ob = {\n maskType: true,\n svgLumaHidden: true,\n offscreenCanvas: typeof OffscreenCanvas !== 'undefined'\n };\n if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\n ob.maskType = false;\n }\n if (/firefox/i.test(navigator.userAgent)) {\n ob.svgLumaHidden = false;\n }\n return ob;\n }();\n\n var registeredEffects$1 = {};\n var idPrefix = 'filter_result_';\n function SVGEffects(elem) {\n var i;\n var source = 'SourceGraphic';\n var len = elem.data.ef ? elem.data.ef.length : 0;\n var filId = createElementID();\n var fil = filtersFactory.createFilter(filId, true);\n var count = 0;\n this.filters = [];\n var filterManager;\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n if (registeredEffects$1[type]) {\n var Effect = registeredEffects$1[type].effect;\n filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source);\n source = idPrefix + count;\n if (registeredEffects$1[type].countsAsEffect) {\n count += 1;\n }\n }\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n if (count) {\n elem.globalData.defs.appendChild(fil);\n elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n SVGEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n return effects;\n };\n function registerEffect$1(id, effect, countsAsEffect) {\n registeredEffects$1[id] = {\n effect: effect,\n countsAsEffect: countsAsEffect\n };\n }\n\n function SVGBaseElement() {}\n SVGBaseElement.prototype = {\n initRendererElement: function initRendererElement() {\n this.layerElement = createNS('g');\n },\n createContainerElements: function createContainerElements() {\n this.matteElement = createNS('g');\n this.transformedElement = this.layerElement;\n this.maskedElement = this.layerElement;\n this._sizeChanged = false;\n var layerElementParent = null;\n // If this layer acts as a mask for the following layer\n if (this.data.td) {\n this.matteMasks = {};\n var gg = createNS('g');\n gg.setAttribute('id', this.layerId);\n gg.appendChild(this.layerElement);\n layerElementParent = gg;\n this.globalData.defs.appendChild(gg);\n } else if (this.data.tt) {\n this.matteElement.appendChild(this.layerElement);\n layerElementParent = this.matteElement;\n this.baseElement = this.matteElement;\n } else {\n this.baseElement = this.layerElement;\n }\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n }\n // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\n if (this.data.ty === 0 && !this.data.hd) {\n var cp = createNS('clipPath');\n var pt = createNS('path');\n pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\n var clipId = createElementID();\n cp.setAttribute('id', clipId);\n cp.appendChild(pt);\n this.globalData.defs.appendChild(cp);\n if (this.checkMasks()) {\n var cpGroup = createNS('g');\n cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n cpGroup.appendChild(this.layerElement);\n this.transformedElement = cpGroup;\n if (layerElementParent) {\n layerElementParent.appendChild(this.transformedElement);\n } else {\n this.baseElement = this.transformedElement;\n }\n } else {\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n }\n }\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n if (this.finalTransform._localMatMdf) {\n this.transformedElement.setAttribute('transform', this.finalTransform.localMat.to2dCSS());\n }\n if (this.finalTransform._opMdf) {\n this.transformedElement.setAttribute('opacity', this.finalTransform.localOpacity);\n }\n },\n destroyBaseElement: function destroyBaseElement() {\n this.layerElement = null;\n this.matteElement = null;\n this.maskManager.destroy();\n },\n getBaseElement: function getBaseElement() {\n if (this.data.hd) {\n return null;\n }\n return this.baseElement;\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n this.renderableEffectsManager = new SVGEffects(this);\n this.searchEffectTransforms();\n },\n getMatte: function getMatte(matteType) {\n // This should not be a common case. But for backward compatibility, we'll create the matte object.\n // It solves animations that have two consecutive layers marked as matte masks.\n // Which is an undefined behavior in AE.\n if (!this.matteMasks) {\n this.matteMasks = {};\n }\n if (!this.matteMasks[matteType]) {\n var id = this.layerId + '_' + matteType;\n var filId;\n var fil;\n var useElement;\n var gg;\n if (matteType === 1 || matteType === 3) {\n var masker = createNS('mask');\n masker.setAttribute('id', id);\n masker.setAttribute('mask-type', matteType === 3 ? 'luminance' : 'alpha');\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n masker.appendChild(useElement);\n this.globalData.defs.appendChild(masker);\n if (!featureSupport.maskType && matteType === 1) {\n masker.setAttribute('mask-type', 'luminance');\n filId = createElementID();\n fil = filtersFactory.createFilter(filId);\n this.globalData.defs.appendChild(fil);\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n gg.appendChild(useElement);\n masker.appendChild(gg);\n gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n } else if (matteType === 2) {\n var maskGroup = createNS('mask');\n maskGroup.setAttribute('id', id);\n maskGroup.setAttribute('mask-type', 'alpha');\n var maskGrouper = createNS('g');\n maskGroup.appendChild(maskGrouper);\n filId = createElementID();\n fil = filtersFactory.createFilter(filId);\n /// /\n var feCTr = createNS('feComponentTransfer');\n feCTr.setAttribute('in', 'SourceGraphic');\n fil.appendChild(feCTr);\n var feFunc = createNS('feFuncA');\n feFunc.setAttribute('type', 'table');\n feFunc.setAttribute('tableValues', '1.0 0.0');\n feCTr.appendChild(feFunc);\n /// /\n this.globalData.defs.appendChild(fil);\n var alphaRect = createNS('rect');\n alphaRect.setAttribute('width', this.comp.data.w);\n alphaRect.setAttribute('height', this.comp.data.h);\n alphaRect.setAttribute('x', '0');\n alphaRect.setAttribute('y', '0');\n alphaRect.setAttribute('fill', '#ffffff');\n alphaRect.setAttribute('opacity', '0');\n maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n maskGrouper.appendChild(alphaRect);\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n maskGrouper.appendChild(useElement);\n if (!featureSupport.maskType) {\n maskGroup.setAttribute('mask-type', 'luminance');\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n maskGrouper.appendChild(alphaRect);\n gg.appendChild(this.layerElement);\n maskGrouper.appendChild(gg);\n }\n this.globalData.defs.appendChild(maskGroup);\n }\n this.matteMasks[matteType] = id;\n }\n return this.matteMasks[matteType];\n },\n setMatte: function setMatte(id) {\n if (!this.matteElement) {\n return;\n }\n this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n }\n };\n\n /**\n * @file\n * Handles AE's layer parenting property.\n *\n */\n\n function HierarchyElement() {}\n HierarchyElement.prototype = {\n /**\n * @function\n * Initializes hierarchy properties\n *\n */\n initHierarchy: function initHierarchy() {\n // element's parent list\n this.hierarchy = [];\n // if element is parent of another layer _isParent will be true\n this._isParent = false;\n this.checkParenting();\n },\n /**\n * @function\n * Sets layer's hierarchy.\n * @param {array} hierarch\n * layer's parent list\n *\n */\n setHierarchy: function setHierarchy(hierarchy) {\n this.hierarchy = hierarchy;\n },\n /**\n * @function\n * Sets layer as parent.\n *\n */\n setAsParent: function setAsParent() {\n this._isParent = true;\n },\n /**\n * @function\n * Searches layer's parenting chain\n *\n */\n checkParenting: function checkParenting() {\n if (this.data.parent !== undefined) {\n this.comp.buildElementParenting(this, this.data.parent, []);\n }\n }\n };\n\n function RenderableDOMElement() {}\n (function () {\n var _prototype = {\n initElement: function initElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n },\n hide: function hide() {\n // console.log('HIDE', this);\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'none';\n this.hidden = true;\n }\n },\n show: function show() {\n // console.log('SHOW', this);\n if (this.isInRange && !this.isTransparent) {\n if (!this.data.hd) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'block';\n }\n this.hidden = false;\n this._isFirstFrame = true;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.renderElement();\n this.renderInnerContent();\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n renderInnerContent: function renderInnerContent() {},\n prepareFrame: function prepareFrame(num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n this.checkTransparency();\n },\n destroy: function destroy() {\n this.innerElem = null;\n this.destroyBaseElement();\n }\n };\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\n })();\n\n function IImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n if (this.assetData && this.assetData.sid) {\n this.assetData = globalData.slotManager.getProp(this.assetData);\n }\n this.initElement(data, globalData, comp);\n this.sourceRect = {\n top: 0,\n left: 0,\n width: this.assetData.w,\n height: this.assetData.h\n };\n }\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\n IImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.innerElem = createNS('image');\n this.innerElem.setAttribute('width', this.assetData.w + 'px');\n this.innerElem.setAttribute('height', this.assetData.h + 'px');\n this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.innerElem);\n };\n IImageElement.prototype.sourceRectAtTime = function () {\n return this.sourceRect;\n };\n\n function ProcessedElement(element, position) {\n this.elem = element;\n this.pos = position;\n }\n\n function IShapeElement() {}\n IShapeElement.prototype = {\n addShapeToModifiers: function addShapeToModifiers(data) {\n var i;\n var len = this.shapeModifiers.length;\n for (i = 0; i < len; i += 1) {\n this.shapeModifiers[i].addShape(data);\n }\n },\n isShapeInAnimatedModifiers: function isShapeInAnimatedModifiers(data) {\n var i = 0;\n var len = this.shapeModifiers.length;\n while (i < len) {\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\n return true;\n }\n }\n return false;\n },\n renderModifiers: function renderModifiers() {\n if (!this.shapeModifiers.length) {\n return;\n }\n var i;\n var len = this.shapes.length;\n for (i = 0; i < len; i += 1) {\n this.shapes[i].sh.reset();\n }\n len = this.shapeModifiers.length;\n var shouldBreakProcess;\n for (i = len - 1; i >= 0; i -= 1) {\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame);\n // workaround to fix cases where a repeater resets the shape so the following processes get called twice\n // TODO: find a better solution for this\n if (shouldBreakProcess) {\n break;\n }\n }\n },\n searchProcessedElement: function searchProcessedElement(elem) {\n var elements = this.processedElements;\n var i = 0;\n var len = elements.length;\n while (i < len) {\n if (elements[i].elem === elem) {\n return elements[i].pos;\n }\n i += 1;\n }\n return 0;\n },\n addProcessedElement: function addProcessedElement(elem, pos) {\n var elements = this.processedElements;\n var i = elements.length;\n while (i) {\n i -= 1;\n if (elements[i].elem === elem) {\n elements[i].pos = pos;\n return;\n }\n }\n elements.push(new ProcessedElement(elem, pos));\n },\n prepareFrame: function prepareFrame(num) {\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n }\n };\n\n var lineCapEnum = {\n 1: 'butt',\n 2: 'round',\n 3: 'square'\n };\n var lineJoinEnum = {\n 1: 'miter',\n 2: 'round',\n 3: 'bevel'\n };\n\n function SVGShapeData(transformers, level, shape) {\n this.caches = [];\n this.styles = [];\n this.transformers = transformers;\n this.lStr = '';\n this.sh = shape;\n this.lvl = level;\n // TODO find if there are some cases where _isAnimated can be false.\n // For now, since shapes add up with other shapes. They have to be calculated every time.\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\n this._isAnimated = !!shape.k;\n // TODO: commenting this for now since all shapes are animated\n var i = 0;\n var len = transformers.length;\n while (i < len) {\n if (transformers[i].mProps.dynamicProperties.length) {\n this._isAnimated = true;\n break;\n }\n i += 1;\n }\n }\n SVGShapeData.prototype.setAsAnimated = function () {\n this._isAnimated = true;\n };\n\n function SVGStyleData(data, level) {\n this.data = data;\n this.type = data.ty;\n this.d = '';\n this.lvl = level;\n this._mdf = false;\n this.closed = data.hd === true;\n this.pElem = createNS('path');\n this.msElem = null;\n }\n SVGStyleData.prototype.reset = function () {\n this.d = '';\n this._mdf = false;\n };\n\n function DashProperty(elem, data, renderer, container) {\n this.elem = elem;\n this.frameId = -1;\n this.dataProps = createSizedArray(data.length);\n this.renderer = renderer;\n this.k = false;\n this.dashStr = '';\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\n this.dashoffset = createTypedArray('float32', 1);\n this.initDynamicPropertyContainer(container);\n var i;\n var len = data.length || 0;\n var prop;\n for (i = 0; i < len; i += 1) {\n prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\n this.k = prop.k || this.k;\n this.dataProps[i] = {\n n: data[i].n,\n p: prop\n };\n }\n if (!this.k) {\n this.getValue(true);\n }\n this._isAnimated = this.k;\n }\n DashProperty.prototype.getValue = function (forceRender) {\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\n return;\n }\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || forceRender;\n if (this._mdf) {\n var i = 0;\n var len = this.dataProps.length;\n if (this.renderer === 'svg') {\n this.dashStr = '';\n }\n for (i = 0; i < len; i += 1) {\n if (this.dataProps[i].n !== 'o') {\n if (this.renderer === 'svg') {\n this.dashStr += ' ' + this.dataProps[i].p.v;\n } else {\n this.dashArray[i] = this.dataProps[i].p.v;\n }\n } else {\n this.dashoffset[0] = this.dataProps[i].p.v;\n }\n }\n }\n };\n extendPrototype([DynamicPropertyContainer], DashProperty);\n\n function SVGStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n this._isAnimated = !!this._isAnimated;\n }\n extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\n\n function SVGFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n }\n extendPrototype([DynamicPropertyContainer], SVGFillStyleData);\n\n function SVGNoStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.style = styleOb;\n }\n extendPrototype([DynamicPropertyContainer], SVGNoStyleData);\n\n function GradientProperty(elem, data, container) {\n this.data = data;\n this.c = createTypedArray('uint8c', data.p * 4);\n var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4;\n this.o = createTypedArray('float32', cLength);\n this._cmdf = false;\n this._omdf = false;\n this._collapsable = this.checkCollapsable();\n this._hasOpacity = cLength;\n this.initDynamicPropertyContainer(container);\n this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\n this.k = this.prop.k;\n this.getValue(true);\n }\n GradientProperty.prototype.comparePoints = function (values, points) {\n var i = 0;\n var len = this.o.length / 2;\n var diff;\n while (i < len) {\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\n if (diff > 0.01) {\n return false;\n }\n i += 1;\n }\n return true;\n };\n GradientProperty.prototype.checkCollapsable = function () {\n if (this.o.length / 2 !== this.c.length / 4) {\n return false;\n }\n if (this.data.k.k[0].s) {\n var i = 0;\n var len = this.data.k.k.length;\n while (i < len) {\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n return false;\n }\n i += 1;\n }\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\n return false;\n }\n return true;\n };\n GradientProperty.prototype.getValue = function (forceRender) {\n this.prop.getValue();\n this._mdf = false;\n this._cmdf = false;\n this._omdf = false;\n if (this.prop._mdf || forceRender) {\n var i;\n var len = this.data.p * 4;\n var mult;\n var val;\n for (i = 0; i < len; i += 1) {\n mult = i % 4 === 0 ? 100 : 255;\n val = Math.round(this.prop.v[i] * mult);\n if (this.c[i] !== val) {\n this.c[i] = val;\n this._cmdf = !forceRender;\n }\n }\n if (this.o.length) {\n len = this.prop.v.length;\n for (i = this.data.p * 4; i < len; i += 1) {\n mult = i % 2 === 0 ? 100 : 1;\n val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\n if (this.o[i - this.data.p * 4] !== val) {\n this.o[i - this.data.p * 4] = val;\n this._omdf = !forceRender;\n }\n }\n }\n this._mdf = !forceRender;\n }\n };\n extendPrototype([DynamicPropertyContainer], GradientProperty);\n\n function SVGGradientFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.initGradientData(elem, data, styleOb);\n }\n SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\n this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\n this.h = PropertyFactory.getProp(elem, data.h || {\n k: 0\n }, 0, 0.01, this);\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: 0\n }, 0, degToRads, this);\n this.g = new GradientProperty(elem, data.g, this);\n this.style = styleOb;\n this.stops = [];\n this.setGradientData(styleOb.pElem, data);\n this.setGradientOpacity(data, styleOb);\n this._isAnimated = !!this._isAnimated;\n };\n SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\n var gradientId = createElementID();\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n gfill.setAttribute('id', gradientId);\n gfill.setAttribute('spreadMethod', 'pad');\n gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\n var stops = [];\n var stop;\n var j;\n var jLen;\n jLen = data.g.p * 4;\n for (j = 0; j < jLen; j += 4) {\n stop = createNS('stop');\n gfill.appendChild(stop);\n stops.push(stop);\n }\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\n this.gf = gfill;\n this.cst = stops;\n };\n SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\n if (this.g._hasOpacity && !this.g._collapsable) {\n var stop;\n var j;\n var jLen;\n var mask = createNS('mask');\n var maskElement = createNS('path');\n mask.appendChild(maskElement);\n var opacityId = createElementID();\n var maskId = createElementID();\n mask.setAttribute('id', maskId);\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n opFill.setAttribute('id', opacityId);\n opFill.setAttribute('spreadMethod', 'pad');\n opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\n var stops = this.stops;\n for (j = data.g.p * 4; j < jLen; j += 2) {\n stop = createNS('stop');\n stop.setAttribute('stop-color', 'rgb(255,255,255)');\n opFill.appendChild(stop);\n stops.push(stop);\n }\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\n if (data.ty === 'gs') {\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n if (data.lj === 1) {\n maskElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n this.of = opFill;\n this.ms = mask;\n this.ost = stops;\n this.maskId = maskId;\n styleOb.msElem = maskElement;\n }\n };\n extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\n\n function SVGGradientStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.initGradientData(elem, data, styleOb);\n this._isAnimated = !!this._isAnimated;\n }\n extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\n\n function ShapeGroupData() {\n this.it = [];\n this.prevViewData = [];\n this.gr = createNS('g');\n }\n\n function SVGTransformData(mProps, op, container) {\n this.transform = {\n mProps: mProps,\n op: op,\n container: container\n };\n this.elements = [];\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\n }\n\n var buildShapeString = function buildShapeString(pathNodes, length, closed, mat) {\n if (length === 0) {\n return '';\n }\n var _o = pathNodes.o;\n var _i = pathNodes.i;\n var _v = pathNodes.v;\n var i;\n var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n for (i = 1; i < length; i += 1) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\n }\n if (closed && length) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n shapeString += 'z';\n }\n return shapeString;\n };\n\n var SVGElementsRenderer = function () {\n var _identityMatrix = new Matrix();\n var _matrixHelper = new Matrix();\n var ob = {\n createRenderFunction: createRenderFunction\n };\n function createRenderFunction(data) {\n switch (data.ty) {\n case 'fl':\n return renderFill;\n case 'gf':\n return renderGradient;\n case 'gs':\n return renderGradientStroke;\n case 'st':\n return renderStroke;\n case 'sh':\n case 'el':\n case 'rc':\n case 'sr':\n return renderPath;\n case 'tr':\n return renderContentTransform;\n case 'no':\n return renderNoop;\n default:\n return null;\n }\n }\n function renderContentTransform(styleData, itemData, isFirstFrame) {\n if (isFirstFrame || itemData.transform.op._mdf) {\n itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\n }\n if (isFirstFrame || itemData.transform.mProps._mdf) {\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\n }\n }\n function renderNoop() {}\n function renderPath(styleData, itemData, isFirstFrame) {\n var j;\n var jLen;\n var pathStringTransformed;\n var redraw;\n var pathNodes;\n var l;\n var lLen = itemData.styles.length;\n var lvl = itemData.lvl;\n var paths;\n var mat;\n var iterations;\n var k;\n for (l = 0; l < lLen; l += 1) {\n redraw = itemData.sh._mdf || isFirstFrame;\n if (itemData.styles[l].lvl < lvl) {\n mat = _matrixHelper.reset();\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n while (!redraw && iterations > 0) {\n redraw = itemData.transformers[k].mProps._mdf || redraw;\n iterations -= 1;\n k -= 1;\n }\n if (redraw) {\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n while (iterations > 0) {\n mat.multiply(itemData.transformers[k].mProps.v);\n iterations -= 1;\n k -= 1;\n }\n }\n } else {\n mat = _identityMatrix;\n }\n paths = itemData.sh.paths;\n jLen = paths._length;\n if (redraw) {\n pathStringTransformed = '';\n for (j = 0; j < jLen; j += 1) {\n pathNodes = paths.shapes[j];\n if (pathNodes && pathNodes._length) {\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\n }\n }\n itemData.caches[l] = pathStringTransformed;\n } else {\n pathStringTransformed = itemData.caches[l];\n }\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\n }\n }\n function renderFill(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n if (itemData.c._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\n }\n }\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\n renderGradient(styleData, itemData, isFirstFrame);\n renderStroke(styleData, itemData, isFirstFrame);\n }\n function renderGradient(styleData, itemData, isFirstFrame) {\n var gfill = itemData.gf;\n var hasOpacity = itemData.g._hasOpacity;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n if (itemData.o._mdf || isFirstFrame) {\n var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\n itemData.style.pElem.setAttribute(attr, itemData.o.v);\n }\n if (itemData.s._mdf || isFirstFrame) {\n var attr1 = styleData.t === 1 ? 'x1' : 'cx';\n var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\n gfill.setAttribute(attr1, pt1[0]);\n gfill.setAttribute(attr2, pt1[1]);\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute(attr1, pt1[0]);\n itemData.of.setAttribute(attr2, pt1[1]);\n }\n }\n var stops;\n var i;\n var len;\n var stop;\n if (itemData.g._cmdf || isFirstFrame) {\n stops = itemData.cst;\n var cValues = itemData.g.c;\n len = stops.length;\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n stop.setAttribute('offset', cValues[i * 4] + '%');\n stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\n }\n }\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\n var oValues = itemData.g.o;\n if (itemData.g._collapsable) {\n stops = itemData.cst;\n } else {\n stops = itemData.ost;\n }\n len = stops.length;\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n if (!itemData.g._collapsable) {\n stop.setAttribute('offset', oValues[i * 2] + '%');\n }\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\n }\n }\n if (styleData.t === 1) {\n if (itemData.e._mdf || isFirstFrame) {\n gfill.setAttribute('x2', pt2[0]);\n gfill.setAttribute('y2', pt2[1]);\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('x2', pt2[0]);\n itemData.of.setAttribute('y2', pt2[1]);\n }\n }\n } else {\n var rad;\n if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n gfill.setAttribute('r', rad);\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('r', rad);\n }\n }\n if (itemData.s._mdf || itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\n if (!rad) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n }\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n gfill.setAttribute('fx', x);\n gfill.setAttribute('fy', y);\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('fx', x);\n itemData.of.setAttribute('fy', y);\n }\n }\n // gfill.setAttribute('fy','200');\n }\n }\n function renderStroke(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n var d = itemData.d;\n if (d && (d._mdf || isFirstFrame) && d.dashStr) {\n styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\n styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\n }\n if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\n styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\n }\n if (itemData.w._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\n if (styleElem.msElem) {\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\n }\n }\n }\n return ob;\n }();\n\n function SVGShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = [];\n // Full shape data\n this.shapesData = data.shapes;\n // List of styles that will be applied to shapes\n this.stylesList = [];\n // List of modifiers that will be applied to shapes\n this.shapeModifiers = [];\n // List of items in shape tree\n this.itemsData = [];\n // List of items in previous shape tree\n this.processedElements = [];\n // List of animated components\n this.animatedContents = [];\n this.initElement(data, globalData, comp);\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n this.prevViewData = [];\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n }\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\n SVGShapeElement.prototype.initSecondaryElement = function () {};\n SVGShapeElement.prototype.identityMatrix = new Matrix();\n SVGShapeElement.prototype.buildExpressionInterface = function () {};\n SVGShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n };\n\n /*\n This method searches for multiple shapes that affect a single element and one of them is animated\n */\n SVGShapeElement.prototype.filterUniqueShapes = function () {\n var i;\n var len = this.shapes.length;\n var shape;\n var j;\n var jLen = this.stylesList.length;\n var style;\n var tempShapes = [];\n var areAnimated = false;\n for (j = 0; j < jLen; j += 1) {\n style = this.stylesList[j];\n areAnimated = false;\n tempShapes.length = 0;\n for (i = 0; i < len; i += 1) {\n shape = this.shapes[i];\n if (shape.styles.indexOf(style) !== -1) {\n tempShapes.push(shape);\n areAnimated = shape._isAnimated || areAnimated;\n }\n }\n if (tempShapes.length > 1 && areAnimated) {\n this.setShapesAsAnimated(tempShapes);\n }\n }\n };\n SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\n var i;\n var len = shapes.length;\n for (i = 0; i < len; i += 1) {\n shapes[i].setAsAnimated();\n }\n };\n SVGShapeElement.prototype.createStyleElement = function (data, level) {\n // TODO: prevent drawing of hidden styles\n var elementData;\n var styleOb = new SVGStyleData(data, level);\n var pathElement = styleOb.pElem;\n if (data.ty === 'st') {\n elementData = new SVGStrokeStyleData(this, data, styleOb);\n } else if (data.ty === 'fl') {\n elementData = new SVGFillStyleData(this, data, styleOb);\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\n elementData = new GradientConstructor(this, data, styleOb);\n this.globalData.defs.appendChild(elementData.gf);\n if (elementData.maskId) {\n this.globalData.defs.appendChild(elementData.ms);\n this.globalData.defs.appendChild(elementData.of);\n pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')');\n }\n } else if (data.ty === 'no') {\n elementData = new SVGNoStyleData(this, data, styleOb);\n }\n if (data.ty === 'st' || data.ty === 'gs') {\n pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n pathElement.setAttribute('fill-opacity', '0');\n if (data.lj === 1) {\n pathElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n if (data.r === 2) {\n pathElement.setAttribute('fill-rule', 'evenodd');\n }\n if (data.ln) {\n pathElement.setAttribute('id', data.ln);\n }\n if (data.cl) {\n pathElement.setAttribute('class', data.cl);\n }\n if (data.bm) {\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n this.stylesList.push(styleOb);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n SVGShapeElement.prototype.createGroupElement = function (data) {\n var elementData = new ShapeGroupData();\n if (data.ln) {\n elementData.gr.setAttribute('id', data.ln);\n }\n if (data.cl) {\n elementData.gr.setAttribute('class', data.cl);\n }\n if (data.bm) {\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n return elementData;\n };\n SVGShapeElement.prototype.createTransformElement = function (data, container) {\n var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\n var ty = 4;\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\n var i = 0;\n var len = this.animatedContents.length;\n while (i < len) {\n if (this.animatedContents[i].element === element) {\n return;\n }\n i += 1;\n }\n this.animatedContents.push({\n fn: SVGElementsRenderer.createRenderFunction(data),\n element: element,\n data: data\n });\n };\n SVGShapeElement.prototype.setElementStyles = function (elementData) {\n var arr = elementData.styles;\n var j;\n var jLen = this.stylesList.length;\n for (j = 0; j < jLen; j += 1) {\n if (arr.indexOf(this.stylesList[j]) === -1 && !this.stylesList[j].closed) {\n arr.push(this.stylesList[j]);\n }\n }\n };\n SVGShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n len = this.dynamicProperties.length;\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n this.renderModifiers();\n };\n SVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\n var ownTransformers = [].concat(transformers);\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var currentTransform;\n var modifier;\n var processedPos;\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n if (!processedPos) {\n arr[i]._render = render;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], level);\n } else {\n itemsData[i].style.closed = arr[i].hd;\n }\n if (arr[i]._render) {\n if (itemsData[i].style.pElem.parentNode !== container) {\n container.appendChild(itemsData[i].style.pElem);\n }\n }\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\n if (arr[i]._render) {\n if (itemsData[i].gr.parentNode !== container) {\n container.appendChild(itemsData[i].gr);\n }\n }\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n itemsData[i] = this.createTransformElement(arr[i], container);\n }\n currentTransform = itemsData[i].transform;\n ownTransformers.push(currentTransform);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\n }\n this.setElementStyles(itemsData[i]);\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n render = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n ownModifiers.push(modifier);\n }\n this.addProcessedElement(arr[i], i + 1);\n }\n len = ownStyles.length;\n for (i = 0; i < len; i += 1) {\n ownStyles[i].closed = true;\n }\n len = ownModifiers.length;\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n SVGShapeElement.prototype.renderInnerContent = function () {\n this.renderModifiers();\n var i;\n var len = this.stylesList.length;\n for (i = 0; i < len; i += 1) {\n this.stylesList[i].reset();\n }\n this.renderShape();\n for (i = 0; i < len; i += 1) {\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\n if (this.stylesList[i].msElem) {\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d);\n // Adding M0 0 fixes same mask bug on all browsers\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\n }\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\n }\n }\n };\n SVGShapeElement.prototype.renderShape = function () {\n var i;\n var len = this.animatedContents.length;\n var animatedContent;\n for (i = 0; i < len; i += 1) {\n animatedContent = this.animatedContents[i];\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\n }\n }\n };\n SVGShapeElement.prototype.destroy = function () {\n this.destroyBaseElement();\n this.shapesData = null;\n this.itemsData = null;\n };\n\n function LetterProps(o, sw, sc, fc, m, p) {\n this.o = o;\n this.sw = sw;\n this.sc = sc;\n this.fc = fc;\n this.m = m;\n this.p = p;\n this._mdf = {\n o: true,\n sw: !!sw,\n sc: !!sc,\n fc: !!fc,\n m: true,\n p: true\n };\n }\n LetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\n this._mdf.o = false;\n this._mdf.sw = false;\n this._mdf.sc = false;\n this._mdf.fc = false;\n this._mdf.m = false;\n this._mdf.p = false;\n var updated = false;\n if (this.o !== o) {\n this.o = o;\n this._mdf.o = true;\n updated = true;\n }\n if (this.sw !== sw) {\n this.sw = sw;\n this._mdf.sw = true;\n updated = true;\n }\n if (this.sc !== sc) {\n this.sc = sc;\n this._mdf.sc = true;\n updated = true;\n }\n if (this.fc !== fc) {\n this.fc = fc;\n this._mdf.fc = true;\n updated = true;\n }\n if (this.m !== m) {\n this.m = m;\n this._mdf.m = true;\n updated = true;\n }\n if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\n this.p = p;\n this._mdf.p = true;\n updated = true;\n }\n return updated;\n };\n\n function TextProperty(elem, data) {\n this._frameId = initialDefaultFrame;\n this.pv = '';\n this.v = '';\n this.kf = false;\n this._isFirstFrame = true;\n this._mdf = false;\n if (data.d && data.d.sid) {\n data.d = elem.globalData.slotManager.getProp(data.d);\n }\n this.data = data;\n this.elem = elem;\n this.comp = this.elem.comp;\n this.keysIndex = 0;\n this.canResize = false;\n this.minimumFontSize = 1;\n this.effectsSequence = [];\n this.currentData = {\n ascent: 0,\n boxWidth: this.defaultBoxWidth,\n f: '',\n fStyle: '',\n fWeight: '',\n fc: '',\n j: '',\n justifyOffset: '',\n l: [],\n lh: 0,\n lineWidths: [],\n ls: '',\n of: '',\n s: '',\n sc: '',\n sw: 0,\n t: 0,\n tr: 0,\n sz: 0,\n ps: null,\n fillColorAnim: false,\n strokeColorAnim: false,\n strokeWidthAnim: false,\n yOffset: 0,\n finalSize: 0,\n finalText: [],\n finalLineHeight: 0,\n __complete: false\n };\n this.copyData(this.currentData, this.data.d.k[0].s);\n if (!this.searchProperty()) {\n this.completeTextData(this.currentData);\n }\n }\n TextProperty.prototype.defaultBoxWidth = [0, 0];\n TextProperty.prototype.copyData = function (obj, data) {\n for (var s in data) {\n if (Object.prototype.hasOwnProperty.call(data, s)) {\n obj[s] = data[s];\n }\n }\n return obj;\n };\n TextProperty.prototype.setCurrentData = function (data) {\n if (!data.__complete) {\n this.completeTextData(data);\n }\n this.currentData = data;\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\n this._mdf = true;\n };\n TextProperty.prototype.searchProperty = function () {\n return this.searchKeyframes();\n };\n TextProperty.prototype.searchKeyframes = function () {\n this.kf = this.data.d.k.length > 1;\n if (this.kf) {\n this.addEffect(this.getKeyframeValue.bind(this));\n }\n return this.kf;\n };\n TextProperty.prototype.addEffect = function (effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.elem.addDynamicProperty(this);\n };\n TextProperty.prototype.getValue = function (_finalValue) {\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n return;\n }\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\n var currentValue = this.currentData;\n var currentIndex = this.keysIndex;\n if (this.lock) {\n this.setCurrentData(this.currentData);\n return;\n }\n this.lock = true;\n this._mdf = false;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\n for (i = 0; i < len; i += 1) {\n // Checking if index changed to prevent creating a new object every time the expression updates.\n if (currentIndex !== this.keysIndex) {\n finalValue = this.effectsSequence[i](finalValue, finalValue.t);\n } else {\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\n }\n }\n if (currentValue !== finalValue) {\n this.setCurrentData(finalValue);\n }\n this.v = this.currentData;\n this.pv = this.v;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n };\n TextProperty.prototype.getKeyframeValue = function () {\n var textKeys = this.data.d.k;\n var frameNum = this.elem.comp.renderedFrame;\n var i = 0;\n var len = textKeys.length;\n while (i <= len - 1) {\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\n break;\n }\n i += 1;\n }\n if (this.keysIndex !== i) {\n this.keysIndex = i;\n }\n return this.data.d.k[this.keysIndex].s;\n };\n TextProperty.prototype.buildFinalText = function (text) {\n var charactersArray = [];\n var i = 0;\n var len = text.length;\n var charCode;\n var secondCharCode;\n var shouldCombine = false;\n var shouldCombineNext = false;\n var currentChars = '';\n while (i < len) {\n shouldCombine = shouldCombineNext;\n shouldCombineNext = false;\n charCode = text.charCodeAt(i);\n currentChars = text.charAt(i);\n if (FontManager.isCombinedCharacter(charCode)) {\n shouldCombine = true;\n // It's a potential surrogate pair (this is the High surrogate)\n } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n if (FontManager.isRegionalFlag(text, i)) {\n currentChars = text.substr(i, 14);\n } else {\n secondCharCode = text.charCodeAt(i + 1);\n // It's a surrogate pair (this is the Low surrogate)\n if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\n if (FontManager.isModifier(charCode, secondCharCode)) {\n currentChars = text.substr(i, 2);\n shouldCombine = true;\n } else if (FontManager.isFlagEmoji(text.substr(i, 4))) {\n currentChars = text.substr(i, 4);\n } else {\n currentChars = text.substr(i, 2);\n }\n }\n }\n } else if (charCode > 0xDBFF) {\n secondCharCode = text.charCodeAt(i + 1);\n if (FontManager.isVariationSelector(charCode)) {\n shouldCombine = true;\n }\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\n shouldCombine = true;\n shouldCombineNext = true;\n }\n if (shouldCombine) {\n charactersArray[charactersArray.length - 1] += currentChars;\n shouldCombine = false;\n } else {\n charactersArray.push(currentChars);\n }\n i += currentChars.length;\n }\n return charactersArray;\n };\n TextProperty.prototype.completeTextData = function (documentData) {\n documentData.__complete = true;\n var fontManager = this.elem.globalData.fontManager;\n var data = this.data;\n var letters = [];\n var i;\n var len;\n var newLineFlag;\n var index = 0;\n var val;\n var anchorGrouping = data.m.g;\n var currentSize = 0;\n var currentPos = 0;\n var currentLine = 0;\n var lineWidths = [];\n var lineWidth = 0;\n var maxLineWidth = 0;\n var j;\n var jLen;\n var fontData = fontManager.getFontByName(documentData.f);\n var charData;\n var cLength = 0;\n var fontProps = getFontProperties(fontData);\n documentData.fWeight = fontProps.weight;\n documentData.fStyle = fontProps.style;\n documentData.finalSize = documentData.s;\n documentData.finalText = this.buildFinalText(documentData.t);\n len = documentData.finalText.length;\n documentData.finalLineHeight = documentData.lh;\n var trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var charCode;\n if (documentData.sz) {\n var flag = true;\n var boxWidth = documentData.sz[0];\n var boxHeight = documentData.sz[1];\n var currentHeight;\n var finalText;\n while (flag) {\n finalText = this.buildFinalText(documentData.t);\n currentHeight = 0;\n lineWidth = 0;\n len = finalText.length;\n trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var lastSpaceIndex = -1;\n for (i = 0; i < len; i += 1) {\n charCode = finalText[i].charCodeAt(0);\n newLineFlag = false;\n if (finalText[i] === ' ') {\n lastSpaceIndex = i;\n } else if (charCode === 13 || charCode === 3) {\n lineWidth = 0;\n newLineFlag = true;\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n }\n if (fontManager.chars) {\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\n }\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\n if (lastSpaceIndex === -1) {\n len += 1;\n } else {\n i = lastSpaceIndex;\n }\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r');\n // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n lastSpaceIndex = -1;\n lineWidth = 0;\n } else {\n lineWidth += cLength;\n lineWidth += trackingOffset;\n }\n }\n currentHeight += fontData.ascent * documentData.finalSize / 100;\n if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\n documentData.finalSize -= 1;\n documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;\n } else {\n documentData.finalText = finalText;\n len = documentData.finalText.length;\n flag = false;\n }\n }\n }\n lineWidth = -trackingOffset;\n cLength = 0;\n var uncollapsedSpaces = 0;\n var currentChar;\n for (i = 0; i < len; i += 1) {\n newLineFlag = false;\n currentChar = documentData.finalText[i];\n charCode = currentChar.charCodeAt(0);\n if (charCode === 13 || charCode === 3) {\n uncollapsedSpaces = 0;\n lineWidths.push(lineWidth);\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidth = -2 * trackingOffset;\n val = '';\n newLineFlag = true;\n currentLine += 1;\n } else {\n val = currentChar;\n }\n if (fontManager.chars) {\n charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\n // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\n }\n\n //\n if (currentChar === ' ') {\n uncollapsedSpaces += cLength + trackingOffset;\n } else {\n lineWidth += cLength + trackingOffset + uncollapsedSpaces;\n uncollapsedSpaces = 0;\n }\n letters.push({\n l: cLength,\n an: cLength,\n add: currentSize,\n n: newLineFlag,\n anIndexes: [],\n val: val,\n line: currentLine,\n animatorJustifyOffset: 0\n });\n if (anchorGrouping == 2) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n if (val === '' || val === ' ' || i === len - 1) {\n if (val === '' || val === ' ') {\n currentSize -= cLength;\n }\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n index += 1;\n currentSize = 0;\n }\n } else if (anchorGrouping == 3) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n if (val === '' || i === len - 1) {\n if (val === '') {\n currentSize -= cLength;\n }\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n currentSize = 0;\n index += 1;\n }\n } else {\n letters[index].ind = index;\n letters[index].extra = 0;\n index += 1;\n }\n }\n documentData.l = letters;\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidths.push(lineWidth);\n if (documentData.sz) {\n documentData.boxWidth = documentData.sz[0];\n documentData.justifyOffset = 0;\n } else {\n documentData.boxWidth = maxLineWidth;\n switch (documentData.j) {\n case 1:\n documentData.justifyOffset = -documentData.boxWidth;\n break;\n case 2:\n documentData.justifyOffset = -documentData.boxWidth / 2;\n break;\n default:\n documentData.justifyOffset = 0;\n }\n }\n documentData.lineWidths = lineWidths;\n var animators = data.a;\n var animatorData;\n var letterData;\n jLen = animators.length;\n var based;\n var ind;\n var indexes = [];\n for (j = 0; j < jLen; j += 1) {\n animatorData = animators[j];\n if (animatorData.a.sc) {\n documentData.strokeColorAnim = true;\n }\n if (animatorData.a.sw) {\n documentData.strokeWidthAnim = true;\n }\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\n documentData.fillColorAnim = true;\n }\n ind = 0;\n based = animatorData.s.b;\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n letterData.anIndexes[j] = ind;\n if (based == 1 && letterData.val !== '' || based == 2 && letterData.val !== '' && letterData.val !== ' ' || based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1) || based == 4 && (letterData.n || i == len - 1)) {\n // eslint-disable-line eqeqeq\n if (animatorData.s.rn === 1) {\n indexes.push(ind);\n }\n ind += 1;\n }\n }\n data.a[j].s.totalChars = ind;\n var currentInd = -1;\n var newInd;\n if (animatorData.s.rn === 1) {\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n if (currentInd != letterData.anIndexes[j]) {\n // eslint-disable-line eqeqeq\n currentInd = letterData.anIndexes[j];\n newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\n }\n letterData.anIndexes[j] = newInd;\n }\n }\n }\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\n documentData.ls = documentData.ls || 0;\n documentData.ascent = fontData.ascent * documentData.finalSize / 100;\n };\n TextProperty.prototype.updateDocumentData = function (newData, index) {\n index = index === undefined ? this.keysIndex : index;\n var dData = this.copyData({}, this.data.d.k[index].s);\n dData = this.copyData(dData, newData);\n this.data.d.k[index].s = dData;\n this.recalculate(index);\n this.setCurrentData(dData);\n this.elem.addDynamicProperty(this);\n };\n TextProperty.prototype.recalculate = function (index) {\n var dData = this.data.d.k[index].s;\n dData.__complete = false;\n this.keysIndex = 0;\n this._isFirstFrame = true;\n this.getValue(dData);\n };\n TextProperty.prototype.canResizeFont = function (_canResize) {\n this.canResize = _canResize;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n TextProperty.prototype.setMinimumFontSize = function (_fontValue) {\n this.minimumFontSize = Math.floor(_fontValue) || 1;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n var TextSelectorProp = function () {\n var max = Math.max;\n var min = Math.min;\n var floor = Math.floor;\n function TextSelectorPropFactory(elem, data) {\n this._currentTextLength = -1;\n this.k = false;\n this.data = data;\n this.elem = elem;\n this.comp = elem.comp;\n this.finalS = 0;\n this.finalE = 0;\n this.initDynamicPropertyContainer(elem);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: 0\n }, 0, 0, this);\n if ('e' in data) {\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\n } else {\n this.e = {\n v: 100\n };\n }\n this.o = PropertyFactory.getProp(elem, data.o || {\n k: 0\n }, 0, 0, this);\n this.xe = PropertyFactory.getProp(elem, data.xe || {\n k: 0\n }, 0, 0, this);\n this.ne = PropertyFactory.getProp(elem, data.ne || {\n k: 0\n }, 0, 0, this);\n this.sm = PropertyFactory.getProp(elem, data.sm || {\n k: 100\n }, 0, 0, this);\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\n if (!this.dynamicProperties.length) {\n this.getValue();\n }\n }\n TextSelectorPropFactory.prototype = {\n getMult: function getMult(ind) {\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\n this.getValue();\n }\n var x1 = 0;\n var y1 = 0;\n var x2 = 1;\n var y2 = 1;\n if (this.ne.v > 0) {\n x1 = this.ne.v / 100.0;\n } else {\n y1 = -this.ne.v / 100.0;\n }\n if (this.xe.v > 0) {\n x2 = 1.0 - this.xe.v / 100.0;\n } else {\n y2 = 1.0 + this.xe.v / 100.0;\n }\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\n var mult = 0;\n var s = this.finalS;\n var e = this.finalE;\n var type = this.data.sh;\n if (type === 2) {\n if (e === s) {\n mult = ind >= e ? 1 : 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n mult = easer(mult);\n } else if (type === 3) {\n if (e === s) {\n mult = ind >= e ? 0 : 1;\n } else {\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n mult = easer(mult);\n } else if (type === 4) {\n if (e === s) {\n mult = 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n if (mult < 0.5) {\n mult *= 2;\n } else {\n mult = 1 - 2 * (mult - 0.5);\n }\n }\n mult = easer(mult);\n } else if (type === 5) {\n if (e === s) {\n mult = 0;\n } else {\n var tot = e - s;\n /* ind += 0.5;\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\n ind = min(max(0, ind + 0.5 - s), e - s);\n var x = -tot / 2 + ind;\n var a = tot / 2;\n mult = Math.sqrt(1 - x * x / (a * a));\n }\n mult = easer(mult);\n } else if (type === 6) {\n if (e === s) {\n mult = 0;\n } else {\n ind = min(max(0, ind + 0.5 - s), e - s);\n mult = (1 + Math.cos(Math.PI + Math.PI * 2 * ind / (e - s))) / 2; // eslint-disable-line\n }\n mult = easer(mult);\n } else {\n if (ind >= floor(s)) {\n if (ind - s < 0) {\n mult = max(0, min(min(e, 1) - (s - ind), 1));\n } else {\n mult = max(0, min(e - ind, 1));\n }\n }\n mult = easer(mult);\n }\n // Smoothness implementation.\n // The smoothness represents a reduced range of the original [0; 1] range.\n // if smoothness is 25%, the new range will be [0.375; 0.625]\n // Steps are:\n // - find the lower value of the new range (threshold)\n // - if multiplier is smaller than that value, floor it to 0\n // - if it is larger,\n // - subtract the threshold\n // - divide it by the smoothness (this will return the range to [0; 1])\n // Note: If it doesn't work on some scenarios, consider applying it before the easer.\n if (this.sm.v !== 100) {\n var smoothness = this.sm.v * 0.01;\n if (smoothness === 0) {\n smoothness = 0.00000001;\n }\n var threshold = 0.5 - smoothness * 0.5;\n if (mult < threshold) {\n mult = 0;\n } else {\n mult = (mult - threshold) / smoothness;\n if (mult > 1) {\n mult = 1;\n }\n }\n }\n return mult * this.a.v;\n },\n getValue: function getValue(newCharsFlag) {\n this.iterateDynamicProperties();\n this._mdf = newCharsFlag || this._mdf;\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\n if (newCharsFlag && this.data.r === 2) {\n this.e.v = this._currentTextLength;\n }\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\n var o = this.o.v / divisor;\n var s = this.s.v / divisor + o;\n var e = this.e.v / divisor + o;\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n this.finalS = s;\n this.finalE = e;\n }\n };\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\n function getTextSelectorProp(elem, data, arr) {\n return new TextSelectorPropFactory(elem, data, arr);\n }\n return {\n getTextSelectorProp: getTextSelectorProp\n };\n }();\n\n function TextAnimatorDataProperty(elem, animatorProps, container) {\n var defaultData = {\n propType: false\n };\n var getProp = PropertyFactory.getProp;\n var textAnimatorAnimatables = animatorProps.a;\n this.a = {\n r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\n rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\n ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\n sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\n sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\n s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\n a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\n o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\n p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\n sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\n sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\n fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\n fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\n fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\n fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\n t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData\n };\n this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\n this.s.t = animatorProps.s.t;\n }\n\n function TextAnimatorProperty(textData, renderType, elem) {\n this._isFirstFrame = true;\n this._hasMaskedPath = false;\n this._frameId = -1;\n this._textData = textData;\n this._renderType = renderType;\n this._elem = elem;\n this._animatorsData = createSizedArray(this._textData.a.length);\n this._pathData = {};\n this._moreOptions = {\n alignment: {}\n };\n this.renderedLetters = [];\n this.lettersChangedFlag = false;\n this.initDynamicPropertyContainer(elem);\n }\n TextAnimatorProperty.prototype.searchProperties = function () {\n var i;\n var len = this._textData.a.length;\n var animatorProps;\n var getProp = PropertyFactory.getProp;\n for (i = 0; i < len; i += 1) {\n animatorProps = this._textData.a[i];\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\n }\n if (this._textData.p && 'm' in this._textData.p) {\n this._pathData = {\n a: getProp(this._elem, this._textData.p.a, 0, 0, this),\n f: getProp(this._elem, this._textData.p.f, 0, 0, this),\n l: getProp(this._elem, this._textData.p.l, 0, 0, this),\n r: getProp(this._elem, this._textData.p.r, 0, 0, this),\n p: getProp(this._elem, this._textData.p.p, 0, 0, this),\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m)\n };\n this._hasMaskedPath = true;\n } else {\n this._hasMaskedPath = false;\n }\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\n };\n TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\n this.lettersChangedFlag = lettersChangedFlag;\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\n return;\n }\n this._isFirstFrame = false;\n var alignment = this._moreOptions.alignment.v;\n var animators = this._animatorsData;\n var textData = this._textData;\n var matrixHelper = this.mHelper;\n var renderType = this._renderType;\n var renderedLettersCount = this.renderedLetters.length;\n var xPos;\n var yPos;\n var i;\n var len;\n var letters = documentData.l;\n var pathInfo;\n var currentLength;\n var currentPoint;\n var segmentLength;\n var flag;\n var pointInd;\n var segmentInd;\n var prevPoint;\n var points;\n var segments;\n var partialLength;\n var totalLength;\n var perc;\n var tanAngle;\n var mask;\n if (this._hasMaskedPath) {\n mask = this._pathData.m;\n if (!this._pathData.n || this._pathData._mdf) {\n var paths = mask.v;\n if (this._pathData.r.v) {\n paths = paths.reverse();\n }\n // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\n pathInfo = {\n tLength: 0,\n segments: []\n };\n len = paths._length - 1;\n var bezierData;\n totalLength = 0;\n for (i = 0; i < len; i += 1) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[i + 1], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n i = len;\n if (mask.v.c) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[0], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n this._pathData.pi = pathInfo;\n }\n pathInfo = this._pathData.pi;\n currentLength = this._pathData.f.v;\n segmentInd = 0;\n pointInd = 1;\n segmentLength = 0;\n flag = true;\n segments = pathInfo.segments;\n if (currentLength < 0 && mask.v.c) {\n if (pathInfo.tLength < Math.abs(currentLength)) {\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\n }\n segmentInd = segments.length - 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n while (currentLength < 0) {\n currentLength += points[pointInd].partialLength;\n pointInd -= 1;\n if (pointInd < 0) {\n segmentInd -= 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n }\n }\n }\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n len = letters.length;\n xPos = 0;\n yPos = 0;\n var yOff = documentData.finalSize * 1.2 * 0.714;\n var firstLine = true;\n var animatorProps;\n var animatorSelector;\n var j;\n var jLen;\n var letterValue;\n jLen = animators.length;\n var mult;\n var ind = -1;\n var offf;\n var xPathPos;\n var yPathPos;\n var initPathPos = currentLength;\n var initSegmentInd = segmentInd;\n var initPointInd = pointInd;\n var currentLine = -1;\n var elemOpacity;\n var sc;\n var sw;\n var fc;\n var k;\n var letterSw;\n var letterSc;\n var letterFc;\n var letterM = '';\n var letterP = this.defaultPropsArray;\n var letterO;\n\n //\n if (documentData.j === 2 || documentData.j === 1) {\n var animatorJustifyOffset = 0;\n var animatorFirstCharOffset = 0;\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\n var lastIndex = 0;\n var isNewLine = true;\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n animatorJustifyOffset = 0;\n isNewLine = true;\n } else {\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n if (animatorProps.t.propType) {\n if (isNewLine && documentData.j === 2) {\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\n }\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n if (mult.length) {\n animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\n } else {\n animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\n }\n }\n }\n isNewLine = false;\n }\n }\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n }\n //\n\n for (i = 0; i < len; i += 1) {\n matrixHelper.reset();\n elemOpacity = 1;\n if (letters[i].n) {\n xPos = 0;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n currentLength = initPathPos;\n firstLine = false;\n if (this._hasMaskedPath) {\n segmentInd = initSegmentInd;\n pointInd = initPointInd;\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n segmentLength = 0;\n }\n letterM = '';\n letterFc = '';\n letterSw = '';\n letterO = '';\n letterP = this.defaultPropsArray;\n } else {\n if (this._hasMaskedPath) {\n if (currentLine !== letters[i].line) {\n switch (documentData.j) {\n case 1:\n currentLength += totalLength - documentData.lineWidths[letters[i].line];\n break;\n case 2:\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\n break;\n default:\n break;\n }\n currentLine = letters[i].line;\n }\n if (ind !== letters[i].ind) {\n if (letters[ind]) {\n currentLength += letters[ind].extra;\n }\n currentLength += letters[i].an / 2;\n ind = letters[i].ind;\n }\n currentLength += alignment[0] * letters[i].an * 0.005;\n var animatorOffset = 0;\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n if (mult.length) {\n animatorOffset += animatorProps.p.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.p.v[0] * mult;\n }\n }\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n if (mult.length) {\n animatorOffset += animatorProps.a.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.a.v[0] * mult;\n }\n }\n }\n flag = true;\n // Force alignment only works with a single line for now\n if (this._pathData.a.v) {\n currentLength = letters[0].an * 0.5 + (totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind / (len - 1);\n currentLength += this._pathData.f.v;\n }\n while (flag) {\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -(alignment[1] * yOff) * 0.01);\n flag = false;\n } else if (points) {\n segmentLength += currentPoint.partialLength;\n pointInd += 1;\n if (pointInd >= points.length) {\n pointInd = 0;\n segmentInd += 1;\n if (!segments[segmentInd]) {\n if (mask.v.c) {\n pointInd = 0;\n segmentInd = 0;\n points = segments[segmentInd].points;\n } else {\n segmentLength -= currentPoint.partialLength;\n points = null;\n }\n } else {\n points = segments[segmentInd].points;\n }\n }\n if (points) {\n prevPoint = currentPoint;\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n }\n }\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0);\n } else {\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0);\n\n // Grouping alignment\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\n }\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n if (animatorProps.t.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\n if (xPos !== 0 || documentData.j !== 0) {\n if (this._hasMaskedPath) {\n if (mult.length) {\n currentLength += animatorProps.t.v * mult[0];\n } else {\n currentLength += animatorProps.t.v * mult;\n }\n } else if (mult.length) {\n xPos += animatorProps.t.v * mult[0];\n } else {\n xPos += animatorProps.t.v * mult;\n }\n }\n }\n }\n if (documentData.strokeWidthAnim) {\n sw = documentData.sw || 0;\n }\n if (documentData.strokeColorAnim) {\n if (documentData.sc) {\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\n } else {\n sc = [0, 0, 0];\n }\n }\n if (documentData.fillColorAnim && documentData.fc) {\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\n }\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n if (mult.length) {\n matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\n } else {\n matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\n }\n }\n }\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n if (animatorProps.s.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n if (mult.length) {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1);\n } else {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1);\n }\n }\n }\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n if (animatorProps.sk.propType) {\n if (mult.length) {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\n } else {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\n }\n }\n if (animatorProps.r.propType) {\n if (mult.length) {\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\n } else {\n matrixHelper.rotateZ(-animatorProps.r.v * mult);\n }\n }\n if (animatorProps.ry.propType) {\n if (mult.length) {\n matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\n } else {\n matrixHelper.rotateY(animatorProps.ry.v * mult);\n }\n }\n if (animatorProps.rx.propType) {\n if (mult.length) {\n matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\n } else {\n matrixHelper.rotateX(animatorProps.rx.v * mult);\n }\n }\n if (animatorProps.o.propType) {\n if (mult.length) {\n elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0];\n } else {\n elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult;\n }\n }\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\n if (mult.length) {\n sw += animatorProps.sw.v * mult[0];\n } else {\n sw += animatorProps.sw.v * mult;\n }\n }\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\n } else {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\n }\n }\n }\n if (documentData.fillColorAnim && documentData.fc) {\n if (animatorProps.fc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\n } else {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\n }\n }\n }\n if (animatorProps.fh.propType) {\n if (mult.length) {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\n } else {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult);\n }\n }\n if (animatorProps.fs.propType) {\n if (mult.length) {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\n } else {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\n }\n }\n if (animatorProps.fb.propType) {\n if (mult.length) {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\n } else {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\n }\n }\n }\n }\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n if (this._hasMaskedPath) {\n if (mult.length) {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\n } else {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n } else if (mult.length) {\n matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\n } else {\n matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n }\n }\n if (documentData.strokeWidthAnim) {\n letterSw = sw < 0 ? 0 : sw;\n }\n if (documentData.strokeColorAnim) {\n letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\n }\n if (documentData.fillColorAnim && documentData.fc) {\n letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\n }\n if (this._hasMaskedPath) {\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\n if (this._pathData.p.v) {\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\n var rot = Math.atan(tanAngle) * 180 / Math.PI;\n if (currentPoint.point[0] < prevPoint.point[0]) {\n rot += 180;\n }\n matrixHelper.rotate(-rot * Math.PI / 180);\n }\n matrixHelper.translate(xPathPos, yPathPos, 0);\n currentLength -= alignment[0] * letters[i].an * 0.005;\n if (letters[i + 1] && ind !== letters[i + 1].ind) {\n currentLength += letters[i].an / 2;\n currentLength += documentData.tr * 0.001 * documentData.finalSize;\n }\n } else {\n matrixHelper.translate(xPos, yPos, 0);\n if (documentData.ps) {\n // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\n break;\n case 2:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\n break;\n default:\n break;\n }\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(offf, 0, 0);\n matrixHelper.translate(alignment[0] * letters[i].an * 0.005, alignment[1] * yOff * 0.01, 0);\n xPos += letters[i].l + documentData.tr * 0.001 * documentData.finalSize;\n }\n if (renderType === 'html') {\n letterM = matrixHelper.toCSS();\n } else if (renderType === 'svg') {\n letterM = matrixHelper.to2dCSS();\n } else {\n letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\n }\n letterO = elemOpacity;\n }\n if (renderedLettersCount <= i) {\n letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\n this.renderedLetters.push(letterValue);\n renderedLettersCount += 1;\n this.lettersChangedFlag = true;\n } else {\n letterValue = this.renderedLetters[i];\n this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\n }\n }\n };\n TextAnimatorProperty.prototype.getValue = function () {\n if (this._elem.globalData.frameId === this._frameId) {\n return;\n }\n this._frameId = this._elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n TextAnimatorProperty.prototype.mHelper = new Matrix();\n TextAnimatorProperty.prototype.defaultPropsArray = [];\n extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\n\n function ITextElement() {}\n ITextElement.prototype.initElement = function (data, globalData, comp) {\n this.lettersChangedFlag = true;\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n this.textAnimator.searchProperties(this.dynamicProperties);\n };\n ITextElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n };\n ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\n var j;\n var jLen = shapes.length;\n var pathNodes;\n var shapeStr = '';\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n pathNodes = shapes[j].ks.k;\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\n }\n }\n return shapeStr;\n };\n ITextElement.prototype.updateDocumentData = function (newData, index) {\n this.textProperty.updateDocumentData(newData, index);\n };\n ITextElement.prototype.canResizeFont = function (_canResize) {\n this.textProperty.canResizeFont(_canResize);\n };\n ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\n this.textProperty.setMinimumFontSize(_fontSize);\n };\n ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\n if (documentData.ps) {\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n matrixHelper.translate(0, -documentData.ls, 0);\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\n break;\n case 2:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\n break;\n default:\n break;\n }\n matrixHelper.translate(xPos, yPos, 0);\n };\n ITextElement.prototype.buildColor = function (colorData) {\n return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\n };\n ITextElement.prototype.emptyProp = new LetterProps();\n ITextElement.prototype.destroy = function () {};\n ITextElement.prototype.validateText = function () {\n if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\n this.buildNewText();\n this.textProperty._isFirstFrame = false;\n this.textProperty._mdf = false;\n }\n };\n\n var emptyShapeData = {\n shapes: []\n };\n function SVGTextLottieElement(data, globalData, comp) {\n this.textSpans = [];\n this.renderType = 'svg';\n this.initElement(data, globalData, comp);\n }\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\n SVGTextLottieElement.prototype.createContent = function () {\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\n this.textContainer = createNS('text');\n }\n };\n SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\n var i = 0;\n var len = textArray.length;\n var textContents = [];\n var currentTextContent = '';\n while (i < len) {\n if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\n textContents.push(currentTextContent);\n currentTextContent = '';\n } else {\n currentTextContent += textArray[i];\n }\n i += 1;\n }\n textContents.push(currentTextContent);\n return textContents;\n };\n SVGTextLottieElement.prototype.buildShapeData = function (data, scale) {\n // data should probably be cloned to apply scale separately to each instance of a text on different layers\n // but since text internal content gets only rendered once and then it's never rerendered,\n // it's probably safe not to clone data and reuse always the same instance even if the object is mutated.\n // Avoiding cloning is preferred since cloning each character shape data is expensive\n if (data.shapes && data.shapes.length) {\n var shape = data.shapes[0];\n if (shape.it) {\n var shapeItem = shape.it[shape.it.length - 1];\n if (shapeItem.s) {\n shapeItem.s.k[0] = scale;\n shapeItem.s.k[1] = scale;\n }\n }\n }\n return data;\n };\n SVGTextLottieElement.prototype.buildNewText = function () {\n this.addDynamicProperty(this);\n var i;\n var len;\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\n if (documentData.fc) {\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\n } else {\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\n }\n if (documentData.sc) {\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\n this.layerElement.setAttribute('stroke-width', documentData.sw);\n }\n this.layerElement.setAttribute('font-size', documentData.finalSize);\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n if (fontData.fClass) {\n this.layerElement.setAttribute('class', fontData.fClass);\n } else {\n this.layerElement.setAttribute('font-family', fontData.fFamily);\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n this.layerElement.setAttribute('font-style', fStyle);\n this.layerElement.setAttribute('font-weight', fWeight);\n }\n this.layerElement.setAttribute('aria-label', documentData.t);\n var letters = documentData.l || [];\n var usesGlyphs = !!this.globalData.fontManager.chars;\n len = letters.length;\n var tSpan;\n var matrixHelper = this.mHelper;\n var shapeStr = '';\n var singleShape = this.data.singleShape;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n if (singleShape && !usesGlyphs && !documentData.sz) {\n var tElement = this.textContainer;\n var justify = 'start';\n switch (documentData.j) {\n case 1:\n justify = 'end';\n break;\n case 2:\n justify = 'middle';\n break;\n default:\n justify = 'start';\n break;\n }\n tElement.setAttribute('text-anchor', justify);\n tElement.setAttribute('letter-spacing', trackingOffset);\n var textContent = this.buildTextContents(documentData.finalText);\n len = textContent.length;\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\n for (i = 0; i < len; i += 1) {\n tSpan = this.textSpans[i].span || createNS('tspan');\n tSpan.textContent = textContent[i];\n tSpan.setAttribute('x', 0);\n tSpan.setAttribute('y', yPos);\n tSpan.style.display = 'inherit';\n tElement.appendChild(tSpan);\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n glyph: null\n };\n }\n this.textSpans[i].span = tSpan;\n yPos += documentData.finalLineHeight;\n }\n this.layerElement.appendChild(tElement);\n } else {\n var cachedSpansLength = this.textSpans.length;\n var charData;\n for (i = 0; i < len; i += 1) {\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n childSpan: null,\n glyph: null\n };\n }\n if (!usesGlyphs || !singleShape || i === 0) {\n tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\n if (cachedSpansLength <= i) {\n tSpan.setAttribute('stroke-linecap', 'butt');\n tSpan.setAttribute('stroke-linejoin', 'round');\n tSpan.setAttribute('stroke-miterlimit', '4');\n this.textSpans[i].span = tSpan;\n if (usesGlyphs) {\n var childSpan = createNS('g');\n tSpan.appendChild(childSpan);\n this.textSpans[i].childSpan = childSpan;\n }\n this.textSpans[i].span = tSpan;\n this.layerElement.appendChild(tSpan);\n }\n tSpan.style.display = 'inherit';\n }\n matrixHelper.reset();\n if (singleShape) {\n if (letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n xPos += letters[i].l || 0;\n // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n xPos += trackingOffset;\n }\n if (usesGlyphs) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var glyphElement;\n // t === 1 means the character has been replaced with an animated shaped\n if (charData.t === 1) {\n glyphElement = new SVGCompElement(charData.data, this.globalData, this);\n } else {\n var data = emptyShapeData;\n if (charData.data && charData.data.shapes) {\n data = this.buildShapeData(charData.data, documentData.finalSize);\n }\n glyphElement = new SVGShapeElement(data, this.globalData, this);\n }\n if (this.textSpans[i].glyph) {\n var glyph = this.textSpans[i].glyph;\n this.textSpans[i].childSpan.removeChild(glyph.layerElement);\n glyph.destroy();\n }\n this.textSpans[i].glyph = glyphElement;\n glyphElement._debug = true;\n glyphElement.prepareFrame(0);\n glyphElement.renderFrame();\n this.textSpans[i].childSpan.appendChild(glyphElement.layerElement);\n // when using animated shapes, the layer will be scaled instead of replacing the internal scale\n // this might have issues with strokes and might need a different solution\n if (charData.t === 1) {\n this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')');\n }\n } else {\n if (singleShape) {\n tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\n }\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n }\n //\n }\n if (singleShape && tSpan) {\n tSpan.setAttribute('d', shapeStr);\n }\n }\n while (i < this.textSpans.length) {\n this.textSpans[i].span.style.display = 'none';\n i += 1;\n }\n this._sizeChanged = true;\n };\n SVGTextLottieElement.prototype.sourceRectAtTime = function () {\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\n this.renderInnerContent();\n if (this._sizeChanged) {\n this._sizeChanged = false;\n var textBox = this.layerElement.getBBox();\n this.bbox = {\n top: textBox.y,\n left: textBox.x,\n width: textBox.width,\n height: textBox.height\n };\n }\n return this.bbox;\n };\n SVGTextLottieElement.prototype.getValue = function () {\n var i;\n var len = this.textSpans.length;\n var glyphElement;\n this.renderedFrame = this.comp.renderedFrame;\n for (i = 0; i < len; i += 1) {\n glyphElement = this.textSpans[i].glyph;\n if (glyphElement) {\n glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\n if (glyphElement._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n SVGTextLottieElement.prototype.renderInnerContent = function () {\n this.validateText();\n if (!this.data.singleShape || this._mdf) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\n this._sizeChanged = true;\n var i;\n var len;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var glyphElement;\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n textSpan = this.textSpans[i].span;\n glyphElement = this.textSpans[i].glyph;\n if (glyphElement) {\n glyphElement.renderFrame();\n }\n if (renderedLetter._mdf.m) {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n if (renderedLetter._mdf.o) {\n textSpan.setAttribute('opacity', renderedLetter.o);\n }\n if (renderedLetter._mdf.sw) {\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\n }\n if (renderedLetter._mdf.sc) {\n textSpan.setAttribute('stroke', renderedLetter.sc);\n }\n if (renderedLetter._mdf.fc) {\n textSpan.setAttribute('fill', renderedLetter.fc);\n }\n }\n }\n }\n }\n };\n\n function ISolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n extendPrototype([IImageElement], ISolidElement);\n ISolidElement.prototype.createContent = function () {\n var rect = createNS('rect');\n /// /rect.style.width = this.data.sw;\n /// /rect.style.height = this.data.sh;\n /// /rect.style.fill = this.data.sc;\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.layerElement.appendChild(rect);\n };\n\n function NullElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initFrame();\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n }\n NullElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n NullElement.prototype.renderFrame = function () {};\n NullElement.prototype.getBaseElement = function () {\n return null;\n };\n NullElement.prototype.destroy = function () {};\n NullElement.prototype.sourceRectAtTime = function () {};\n NullElement.prototype.hide = function () {};\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\n\n function SVGRendererBase() {}\n extendPrototype([BaseRenderer], SVGRendererBase);\n SVGRendererBase.prototype.createNull = function (data) {\n return new NullElement(data, this.globalData, this);\n };\n SVGRendererBase.prototype.createShape = function (data) {\n return new SVGShapeElement(data, this.globalData, this);\n };\n SVGRendererBase.prototype.createText = function (data) {\n return new SVGTextLottieElement(data, this.globalData, this);\n };\n SVGRendererBase.prototype.createImage = function (data) {\n return new IImageElement(data, this.globalData, this);\n };\n SVGRendererBase.prototype.createSolid = function (data) {\n return new ISolidElement(data, this.globalData, this);\n };\n SVGRendererBase.prototype.configAnimation = function (animData) {\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n this.svgElement.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n if (this.renderConfig.viewBoxSize) {\n this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\n } else {\n this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\n }\n if (!this.renderConfig.viewBoxOnly) {\n this.svgElement.setAttribute('width', animData.w);\n this.svgElement.setAttribute('height', animData.h);\n this.svgElement.style.width = '100%';\n this.svgElement.style.height = '100%';\n this.svgElement.style.transform = 'translate3d(0,0,0)';\n this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\n }\n if (this.renderConfig.width) {\n this.svgElement.setAttribute('width', this.renderConfig.width);\n }\n if (this.renderConfig.height) {\n this.svgElement.setAttribute('height', this.renderConfig.height);\n }\n if (this.renderConfig.className) {\n this.svgElement.setAttribute('class', this.renderConfig.className);\n }\n if (this.renderConfig.id) {\n this.svgElement.setAttribute('id', this.renderConfig.id);\n }\n if (this.renderConfig.focusable !== undefined) {\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\n }\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio);\n // this.layerElement.style.transform = 'translate3d(0,0,0)';\n // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\n this.animationItem.wrapper.appendChild(this.svgElement);\n // Mask animation\n var defs = this.globalData.defs;\n this.setupGlobalData(animData, defs);\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.data = animData;\n var maskElement = createNS('clipPath');\n var rect = createNS('rect');\n rect.setAttribute('width', animData.w);\n rect.setAttribute('height', animData.h);\n rect.setAttribute('x', 0);\n rect.setAttribute('y', 0);\n var maskId = createElementID();\n maskElement.setAttribute('id', maskId);\n maskElement.appendChild(rect);\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')');\n defs.appendChild(maskElement);\n this.layers = animData.layers;\n this.elements = createSizedArray(animData.layers.length);\n };\n SVGRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n this.layerElement = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n SVGRendererBase.prototype.updateContainerSize = function () {};\n SVGRendererBase.prototype.findIndexByInd = function (ind) {\n var i = 0;\n var len = this.layers.length;\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ind === ind) {\n return i;\n }\n }\n return -1;\n };\n SVGRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n elements[pos] = true;\n var element = this.createItem(this.layers[pos]);\n elements[pos] = element;\n if (getExpressionsPlugin()) {\n if (this.layers[pos].ty === 0) {\n this.globalData.projectInterface.registerComposition(element);\n }\n element.initExpressions();\n }\n this.appendElementInPos(element, pos);\n if (this.layers[pos].tt) {\n var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\n if (elementIndex === -1) {\n return;\n }\n if (!this.elements[elementIndex] || this.elements[elementIndex] === true) {\n this.buildItem(elementIndex);\n this.addPendingElement(element);\n } else {\n var matteElement = elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[pos].tt);\n element.setMatte(matteMask);\n }\n }\n };\n SVGRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n if (element.data.tt) {\n var i = 0;\n var len = this.elements.length;\n while (i < len) {\n if (this.elements[i] === element) {\n var elementIndex = 'tp' in element.data ? this.findIndexByInd(element.data.tp) : i - 1;\n var matteElement = this.elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[i].tt);\n element.setMatte(matteMask);\n break;\n }\n i += 1;\n }\n }\n }\n };\n SVGRendererBase.prototype.renderFrame = function (num) {\n if (this.renderedFrame === num || this.destroyed) {\n return;\n }\n if (num === null) {\n num = this.renderedFrame;\n } else {\n this.renderedFrame = num;\n }\n // console.log('-------');\n // console.log('FRAME ',num);\n this.globalData.frameNum = num;\n this.globalData.frameId += 1;\n this.globalData.projectInterface.currentFrame = num;\n this.globalData._mdf = false;\n var i;\n var len = this.layers.length;\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n if (this.globalData._mdf) {\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n }\n };\n SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newElement = element.getBaseElement();\n if (!newElement) {\n return;\n }\n var i = 0;\n var nextElement;\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\n nextElement = this.elements[i].getBaseElement();\n }\n i += 1;\n }\n if (nextElement) {\n this.layerElement.insertBefore(newElement, nextElement);\n } else {\n this.layerElement.appendChild(newElement);\n }\n };\n SVGRendererBase.prototype.hide = function () {\n this.layerElement.style.display = 'none';\n };\n SVGRendererBase.prototype.show = function () {\n this.layerElement.style.display = 'block';\n };\n\n function ICompElement() {}\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\n ICompElement.prototype.initElement = function (data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initRenderable();\n this.initHierarchy();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n if (this.data.xt || !globalData.progressiveLoad) {\n this.buildAllItems();\n }\n this.hide();\n };\n\n /* ICompElement.prototype.hide = function(){\n if(!this.hidden){\n this.hideElement();\n var i,len = this.elements.length;\n for( i = 0; i < len; i+=1 ){\n if(this.elements[i]){\n this.elements[i].hide();\n }\n }\n }\n }; */\n\n ICompElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n if (!this.isInRange && !this.data.xt) {\n return;\n }\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n if (timeRemapped === this.data.op) {\n timeRemapped = this.data.op - 1;\n }\n this.renderedFrame = timeRemapped;\n } else {\n this.renderedFrame = num / this.data.sr;\n }\n var i;\n var len = this.elements.length;\n if (!this.completeLayers) {\n this.checkLayers(this.renderedFrame);\n }\n // This iteration needs to be backwards because of how expressions connect between each other\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\n if (this.elements[i]._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n ICompElement.prototype.renderInnerContent = function () {\n var i;\n var len = this.layers.length;\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n ICompElement.prototype.setElements = function (elems) {\n this.elements = elems;\n };\n ICompElement.prototype.getElements = function () {\n return this.elements;\n };\n ICompElement.prototype.destroyElements = function () {\n var i;\n var len = this.layers.length;\n for (i = 0; i < len; i += 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n };\n ICompElement.prototype.destroy = function () {\n this.destroyElements();\n this.destroyBaseElement();\n };\n\n function SVGCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = true;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\n SVGCompElement.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function SVGRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.svgElement = createNS('svg');\n var ariaLabel = '';\n if (config && config.title) {\n var titleElement = createNS('title');\n var titleId = createElementID();\n titleElement.setAttribute('id', titleId);\n titleElement.textContent = config.title;\n this.svgElement.appendChild(titleElement);\n ariaLabel += titleId;\n }\n if (config && config.description) {\n var descElement = createNS('desc');\n var descId = createElementID();\n descElement.setAttribute('id', descId);\n descElement.textContent = config.description;\n this.svgElement.appendChild(descElement);\n ariaLabel += ' ' + descId;\n }\n if (ariaLabel) {\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\n }\n var defs = createNS('defs');\n this.svgElement.appendChild(defs);\n var maskElement = createNS('g');\n this.svgElement.appendChild(maskElement);\n this.layerElement = maskElement;\n this.renderConfig = {\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n progressiveLoad: config && config.progressiveLoad || false,\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n viewBoxOnly: config && config.viewBoxOnly || false,\n viewBoxSize: config && config.viewBoxSize || false,\n className: config && config.className || '',\n id: config && config.id || '',\n focusable: config && config.focusable,\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '100%',\n height: config && config.filterSize && config.filterSize.height || '100%',\n x: config && config.filterSize && config.filterSize.x || '0%',\n y: config && config.filterSize && config.filterSize.y || '0%'\n },\n width: config && config.width,\n height: config && config.height,\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n defs: defs,\n renderConfig: this.renderConfig\n };\n this.elements = [];\n this.pendingElements = [];\n this.destroyed = false;\n this.rendererType = 'svg';\n }\n extendPrototype([SVGRendererBase], SVGRenderer);\n SVGRenderer.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function ShapeTransformManager() {\n this.sequences = {};\n this.sequenceList = [];\n this.transform_key_count = 0;\n }\n ShapeTransformManager.prototype = {\n addTransformSequence: function addTransformSequence(transforms) {\n var i;\n var len = transforms.length;\n var key = '_';\n for (i = 0; i < len; i += 1) {\n key += transforms[i].transform.key + '_';\n }\n var sequence = this.sequences[key];\n if (!sequence) {\n sequence = {\n transforms: [].concat(transforms),\n finalTransform: new Matrix(),\n _mdf: false\n };\n this.sequences[key] = sequence;\n this.sequenceList.push(sequence);\n }\n return sequence;\n },\n processSequence: function processSequence(sequence, isFirstFrame) {\n var i = 0;\n var len = sequence.transforms.length;\n var _mdf = isFirstFrame;\n while (i < len && !isFirstFrame) {\n if (sequence.transforms[i].transform.mProps._mdf) {\n _mdf = true;\n break;\n }\n i += 1;\n }\n if (_mdf) {\n sequence.finalTransform.reset();\n for (i = len - 1; i >= 0; i -= 1) {\n sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v);\n }\n }\n sequence._mdf = _mdf;\n },\n processSequences: function processSequences(isFirstFrame) {\n var i;\n var len = this.sequenceList.length;\n for (i = 0; i < len; i += 1) {\n this.processSequence(this.sequenceList[i], isFirstFrame);\n }\n },\n getNewKey: function getNewKey() {\n this.transform_key_count += 1;\n return '_' + this.transform_key_count;\n }\n };\n\n var lumaLoader = function lumaLoader() {\n var id = '__lottie_element_luma_buffer';\n var lumaBuffer = null;\n var lumaBufferCtx = null;\n var svg = null;\n\n // This alternate solution has a slight delay before the filter is applied, resulting in a flicker on the first frame.\n // Keeping this here for reference, and in the future, if offscreen canvas supports url filters, this can be used.\n // For now, neither of them work for offscreen canvas, so canvas workers can't support the luma track matte mask.\n // Naming it solution 2 to mark the extra comment lines.\n /*\n var svgString = [\n '<svg xmlns=\"http://www.w3.org/2000/svg\">',\n '<filter id=\"' + id + '\">',\n '<feColorMatrix type=\"matrix\" color-interpolation-filters=\"sRGB\" values=\"',\n '0.3, 0.3, 0.3, 0, 0, ',\n '0.3, 0.3, 0.3, 0, 0, ',\n '0.3, 0.3, 0.3, 0, 0, ',\n '0.3, 0.3, 0.3, 0, 0',\n '\"/>',\n '</filter>',\n '</svg>',\n ].join('');\n var blob = new Blob([svgString], { type: 'image/svg+xml' });\n var url = URL.createObjectURL(blob);\n */\n\n function createLumaSvgFilter() {\n var _svg = createNS('svg');\n var fil = createNS('filter');\n var matrix = createNS('feColorMatrix');\n fil.setAttribute('id', id);\n matrix.setAttribute('type', 'matrix');\n matrix.setAttribute('color-interpolation-filters', 'sRGB');\n matrix.setAttribute('values', '0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0');\n fil.appendChild(matrix);\n _svg.appendChild(fil);\n _svg.setAttribute('id', id + '_svg');\n if (featureSupport.svgLumaHidden) {\n _svg.style.display = 'none';\n }\n return _svg;\n }\n function loadLuma() {\n if (!lumaBuffer) {\n svg = createLumaSvgFilter();\n document.body.appendChild(svg);\n lumaBuffer = createTag('canvas');\n lumaBufferCtx = lumaBuffer.getContext('2d');\n // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n lumaBufferCtx.filter = 'url(#' + id + ')';\n lumaBufferCtx.fillStyle = 'rgba(0,0,0,0)';\n lumaBufferCtx.fillRect(0, 0, 1, 1);\n }\n }\n function getLuma(canvas) {\n if (!lumaBuffer) {\n loadLuma();\n }\n lumaBuffer.width = canvas.width;\n lumaBuffer.height = canvas.height;\n // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n lumaBufferCtx.filter = 'url(#' + id + ')';\n return lumaBuffer;\n }\n return {\n load: loadLuma,\n get: getLuma\n };\n };\n function createCanvas(width, height) {\n if (featureSupport.offscreenCanvas) {\n return new OffscreenCanvas(width, height);\n }\n var canvas = createTag('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n var assetLoader = function () {\n return {\n loadLumaCanvas: lumaLoader.load,\n getLumaCanvas: lumaLoader.get,\n createCanvas: createCanvas\n };\n }();\n\n var registeredEffects = {};\n function CVEffects(elem) {\n var i;\n var len = elem.data.ef ? elem.data.ef.length : 0;\n this.filters = [];\n var filterManager;\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n if (registeredEffects[type]) {\n var Effect = registeredEffects[type].effect;\n filterManager = new Effect(elem.effectsManager.effectElements[i], elem);\n }\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n CVEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n CVEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n return effects;\n };\n function registerEffect(id, effect) {\n registeredEffects[id] = {\n effect: effect\n };\n }\n\n function CVMaskElement(data, element) {\n this.data = data;\n this.element = element;\n this.masksProperties = this.data.masksProperties || [];\n this.viewData = createSizedArray(this.masksProperties.length);\n var i;\n var len = this.masksProperties.length;\n var hasMasks = false;\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n hasMasks = true;\n }\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\n }\n this.hasMasks = hasMasks;\n if (hasMasks) {\n this.element.addRenderableComponent(this);\n }\n }\n CVMaskElement.prototype.renderFrame = function () {\n if (!this.hasMasks) {\n return;\n }\n var transform = this.element.finalTransform.mat;\n var ctx = this.element.canvasContext;\n var i;\n var len = this.masksProperties.length;\n var pt;\n var pts;\n var data;\n ctx.beginPath();\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n if (this.masksProperties[i].inv) {\n ctx.moveTo(0, 0);\n ctx.lineTo(this.element.globalData.compSize.w, 0);\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\n ctx.lineTo(0, this.element.globalData.compSize.h);\n ctx.lineTo(0, 0);\n }\n data = this.viewData[i].v;\n pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\n ctx.moveTo(pt[0], pt[1]);\n var j;\n var jLen = data._length;\n for (j = 1; j < jLen; j += 1) {\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n }\n this.element.globalData.renderer.save(true);\n ctx.clip();\n };\n CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\n CVMaskElement.prototype.destroy = function () {\n this.element = null;\n };\n\n function CVBaseElement() {}\n var operationsMap = {\n 1: 'source-in',\n 2: 'source-out',\n 3: 'source-in',\n 4: 'source-out'\n };\n CVBaseElement.prototype = {\n createElements: function createElements() {},\n initRendererElement: function initRendererElement() {},\n createContainerElements: function createContainerElements() {\n // If the layer is masked we will use two buffers to store each different states of the drawing\n // This solution is not ideal for several reason. But unfortunately, because of the recursive\n // nature of the render tree, it's the only simple way to make sure one inner mask doesn't override an outer mask.\n // TODO: try to reduce the size of these buffers to the size of the composition contaning the layer\n // It might be challenging because the layer most likely is transformed in some way\n if (this.data.tt >= 1) {\n this.buffers = [];\n var canvasContext = this.globalData.canvasContext;\n var bufferCanvas = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas);\n var bufferCanvas2 = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas2);\n if (this.data.tt >= 3 && !document._isProxy) {\n assetLoader.loadLumaCanvas();\n }\n }\n this.canvasContext = this.globalData.canvasContext;\n this.transformCanvas = this.globalData.transformCanvas;\n this.renderableEffectsManager = new CVEffects(this);\n this.searchEffectTransforms();\n },\n createContent: function createContent() {},\n setBlendMode: function setBlendMode() {\n var globalData = this.globalData;\n if (globalData.blendMode !== this.data.bm) {\n globalData.blendMode = this.data.bm;\n var blendModeValue = getBlendMode(this.data.bm);\n globalData.canvasContext.globalCompositeOperation = blendModeValue;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new CVMaskElement(this.data, this);\n this.transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n },\n hideElement: function hideElement() {\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n this.hidden = true;\n }\n },\n showElement: function showElement() {\n if (this.isInRange && !this.isTransparent) {\n this.hidden = false;\n this._isFirstFrame = true;\n this.maskManager._isFirstFrame = true;\n }\n },\n clearCanvas: function clearCanvas(canvasContext) {\n canvasContext.clearRect(this.transformCanvas.tx, this.transformCanvas.ty, this.transformCanvas.w * this.transformCanvas.sx, this.transformCanvas.h * this.transformCanvas.sy);\n },\n prepareLayer: function prepareLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[0];\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx);\n // on the first buffer we store the current state of the global drawing\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n // The next four lines are to clear the canvas\n // TODO: Check if there is a way to clear the canvas without resetting the transform\n this.currentTransform = this.canvasContext.getTransform();\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform);\n }\n },\n exitLayer: function exitLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[1];\n // On the second buffer we store the current state of the global drawing\n // that only contains the content of this layer\n // (if it is a composition, it also includes the nested layers)\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx);\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n // We clear the canvas again\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform);\n // We draw the mask\n var mask = this.comp.getElementById('tp' in this.data ? this.data.tp : this.data.ind - 1);\n mask.renderFrame(true);\n // We draw the second buffer (that contains the content of this layer)\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n\n // If the mask is a Luma matte, we need to do two extra painting operations\n // the _isProxy check is to avoid drawing a fake canvas in workers that will throw an error\n if (this.data.tt >= 3 && !document._isProxy) {\n // We copy the painted mask to a buffer that has a color matrix filter applied to it\n // that applies the rgb values to the alpha channel\n var lumaBuffer = assetLoader.getLumaCanvas(this.canvasContext.canvas);\n var lumaBufferCtx = lumaBuffer.getContext('2d');\n lumaBufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n this.clearCanvas(this.canvasContext);\n // we repaint the context with the mask applied to it\n this.canvasContext.drawImage(lumaBuffer, 0, 0);\n }\n this.canvasContext.globalCompositeOperation = operationsMap[this.data.tt];\n this.canvasContext.drawImage(buffer, 0, 0);\n // We finally draw the first buffer (that contains the content of the global drawing)\n // We use destination-over to draw the global drawing below the current layer\n this.canvasContext.globalCompositeOperation = 'destination-over';\n this.canvasContext.drawImage(this.buffers[0], 0, 0);\n this.canvasContext.setTransform(this.currentTransform);\n // We reset the globalCompositeOperation to source-over, the standard type of operation\n this.canvasContext.globalCompositeOperation = 'source-over';\n }\n },\n renderFrame: function renderFrame(forceRender) {\n if (this.hidden || this.data.hd) {\n return;\n }\n if (this.data.td === 1 && !forceRender) {\n return;\n }\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.setBlendMode();\n var forceRealStack = this.data.ty === 0;\n this.prepareLayer();\n this.globalData.renderer.save(forceRealStack);\n this.globalData.renderer.ctxTransform(this.finalTransform.localMat.props);\n this.globalData.renderer.ctxOpacity(this.finalTransform.localOpacity);\n this.renderInnerContent();\n this.globalData.renderer.restore(forceRealStack);\n this.exitLayer();\n if (this.maskManager.hasMasks) {\n this.globalData.renderer.restore(true);\n }\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.canvasContext = null;\n this.data = null;\n this.globalData = null;\n this.maskManager.destroy();\n },\n mHelper: new Matrix()\n };\n CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\n CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\n\n function CVShapeData(element, data, styles, transformsManager) {\n this.styledShapes = [];\n this.tr = [0, 0, 0, 0, 0, 0];\n var ty = 4;\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\n var i;\n var len = styles.length;\n var styledShape;\n for (i = 0; i < len; i += 1) {\n if (!styles[i].closed) {\n styledShape = {\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\n trNodes: []\n };\n this.styledShapes.push(styledShape);\n styles[i].elements.push(styledShape);\n }\n }\n }\n CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\n\n function CVShapeElement(data, globalData, comp) {\n this.shapes = [];\n this.shapesData = data.shapes;\n this.stylesList = [];\n this.itemsData = [];\n this.prevViewData = [];\n this.shapeModifiers = [];\n this.processedElements = [];\n this.transformsManager = new ShapeTransformManager();\n this.initElement(data, globalData, comp);\n }\n extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\n CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\n CVShapeElement.prototype.transformHelper = {\n opacity: 1,\n _opMdf: false\n };\n CVShapeElement.prototype.dashResetter = [];\n CVShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n };\n CVShapeElement.prototype.createStyleElement = function (data, transforms) {\n var styleElem = {\n data: data,\n type: data.ty,\n preTransforms: this.transformsManager.addTransformSequence(transforms),\n transforms: [],\n elements: [],\n closed: data.hd === true\n };\n var elementData = {};\n if (data.ty === 'fl' || data.ty === 'st') {\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\n if (!elementData.c.k) {\n styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\n }\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\n elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\n elementData.h = PropertyFactory.getProp(this, data.h || {\n k: 0\n }, 0, 0.01, this);\n elementData.a = PropertyFactory.getProp(this, data.a || {\n k: 0\n }, 0, degToRads, this);\n elementData.g = new GradientProperty(this, data.g, this);\n }\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\n if (data.ty === 'st' || data.ty === 'gs') {\n styleElem.lc = lineCapEnum[data.lc || 2];\n styleElem.lj = lineJoinEnum[data.lj || 2];\n if (data.lj == 1) {\n // eslint-disable-line eqeqeq\n styleElem.ml = data.ml;\n }\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\n if (!elementData.w.k) {\n styleElem.wi = elementData.w.v;\n }\n if (data.d) {\n var d = new DashProperty(this, data.d, 'canvas', this);\n elementData.d = d;\n if (!elementData.d.k) {\n styleElem.da = elementData.d.dashArray;\n styleElem[\"do\"] = elementData.d.dashoffset[0];\n }\n }\n } else {\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\n }\n this.stylesList.push(styleElem);\n elementData.style = styleElem;\n return elementData;\n };\n CVShapeElement.prototype.createGroupElement = function () {\n var elementData = {\n it: [],\n prevViewData: []\n };\n return elementData;\n };\n CVShapeElement.prototype.createTransformElement = function (data) {\n var elementData = {\n transform: {\n opacity: 1,\n _opMdf: false,\n key: this.transformsManager.getNewKey(),\n op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\n mProps: TransformPropertyFactory.getTransformProperty(this, data, this)\n }\n };\n return elementData;\n };\n CVShapeElement.prototype.createShapeElement = function (data) {\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n return elementData;\n };\n CVShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n len = this.dynamicProperties.length;\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n };\n CVShapeElement.prototype.addTransformToStyleList = function (transform) {\n var i;\n var len = this.stylesList.length;\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.push(transform);\n }\n }\n };\n CVShapeElement.prototype.removeTransformFromStyleList = function () {\n var i;\n var len = this.stylesList.length;\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.pop();\n }\n }\n };\n CVShapeElement.prototype.closeStyles = function (styles) {\n var i;\n var len = styles.length;\n for (i = 0; i < len; i += 1) {\n styles[i].closed = true;\n }\n };\n CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var processedPos;\n var modifier;\n var currentTransform;\n var ownTransforms = [].concat(transforms);\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n if (!processedPos) {\n arr[i]._shouldRender = shouldRender;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\n } else {\n itemsData[i].style.closed = false;\n }\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n currentTransform = this.createTransformElement(arr[i]);\n itemsData[i] = currentTransform;\n }\n ownTransforms.push(itemsData[i]);\n this.addTransformToStyleList(itemsData[i]);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i]);\n }\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n shouldRender = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n ownModifiers.push(modifier);\n }\n this.addProcessedElement(arr[i], i + 1);\n }\n this.removeTransformFromStyleList();\n this.closeStyles(ownStyles);\n len = ownModifiers.length;\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n CVShapeElement.prototype.renderInnerContent = function () {\n this.transformHelper.opacity = 1;\n this.transformHelper._opMdf = false;\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\n };\n CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\n if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\n groupTransform.opacity = parentTransform.opacity;\n groupTransform.opacity *= groupTransform.op.v;\n groupTransform._opMdf = true;\n }\n };\n CVShapeElement.prototype.drawLayer = function () {\n var i;\n var len = this.stylesList.length;\n var j;\n var jLen;\n var k;\n var kLen;\n var elems;\n var nodes;\n var renderer = this.globalData.renderer;\n var ctx = this.globalData.canvasContext;\n var type;\n var currentStyle;\n for (i = 0; i < len; i += 1) {\n currentStyle = this.stylesList[i];\n type = currentStyle.type;\n\n // Skipping style when\n // Stroke width equals 0\n // style should not be rendered (extra unused repeaters)\n // current opacity equals 0\n // global opacity equals 0\n if (!((type === 'st' || type === 'gs') && currentStyle.wi === 0 || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\n renderer.save();\n elems = currentStyle.elements;\n if (type === 'st' || type === 'gs') {\n renderer.ctxStrokeStyle(type === 'st' ? currentStyle.co : currentStyle.grd);\n // ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\n renderer.ctxLineWidth(currentStyle.wi);\n // ctx.lineWidth = currentStyle.wi;\n renderer.ctxLineCap(currentStyle.lc);\n // ctx.lineCap = currentStyle.lc;\n renderer.ctxLineJoin(currentStyle.lj);\n // ctx.lineJoin = currentStyle.lj;\n renderer.ctxMiterLimit(currentStyle.ml || 0);\n // ctx.miterLimit = currentStyle.ml || 0;\n } else {\n renderer.ctxFillStyle(type === 'fl' ? currentStyle.co : currentStyle.grd);\n // ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\n }\n renderer.ctxOpacity(currentStyle.coOp);\n if (type !== 'st' && type !== 'gs') {\n ctx.beginPath();\n }\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\n jLen = elems.length;\n for (j = 0; j < jLen; j += 1) {\n if (type === 'st' || type === 'gs') {\n ctx.beginPath();\n if (currentStyle.da) {\n ctx.setLineDash(currentStyle.da);\n ctx.lineDashOffset = currentStyle[\"do\"];\n }\n }\n nodes = elems[j].trNodes;\n kLen = nodes.length;\n for (k = 0; k < kLen; k += 1) {\n if (nodes[k].t === 'm') {\n ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\n } else if (nodes[k].t === 'c') {\n ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\n } else {\n ctx.closePath();\n }\n }\n if (type === 'st' || type === 'gs') {\n // ctx.stroke();\n renderer.ctxStroke();\n if (currentStyle.da) {\n ctx.setLineDash(this.dashResetter);\n }\n }\n }\n if (type !== 'st' && type !== 'gs') {\n // ctx.fill(currentStyle.r);\n this.globalData.renderer.ctxFill(currentStyle.r);\n }\n renderer.restore();\n }\n }\n };\n CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\n var i;\n var len = items.length - 1;\n var groupTransform;\n groupTransform = parentTransform;\n for (i = len; i >= 0; i -= 1) {\n if (items[i].ty === 'tr') {\n groupTransform = data[i].transform;\n this.renderShapeTransform(parentTransform, groupTransform);\n } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\n this.renderPath(items[i], data[i]);\n } else if (items[i].ty === 'fl') {\n this.renderFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'st') {\n this.renderStroke(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\n this.renderGradientFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gr') {\n this.renderShape(groupTransform, items[i].it, data[i].it);\n } else if (items[i].ty === 'tm') {\n //\n }\n }\n if (isMain) {\n this.drawLayer();\n }\n };\n CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\n if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\n var shapeNodes = styledShape.trNodes;\n var paths = shape.paths;\n var i;\n var len;\n var j;\n var jLen = paths._length;\n shapeNodes.length = 0;\n var groupTransformMat = styledShape.transforms.finalTransform;\n for (j = 0; j < jLen; j += 1) {\n var pathNodes = paths.shapes[j];\n if (pathNodes && pathNodes.v) {\n len = pathNodes._length;\n for (i = 1; i < len; i += 1) {\n if (i === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\n });\n }\n if (len === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n if (pathNodes.c && len) {\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])\n });\n shapeNodes.push({\n t: 'z'\n });\n }\n }\n }\n styledShape.trNodes = shapeNodes;\n }\n };\n CVShapeElement.prototype.renderPath = function (pathData, itemData) {\n if (pathData.hd !== true && pathData._shouldRender) {\n var i;\n var len = itemData.styledShapes.length;\n for (i = 0; i < len; i += 1) {\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\n }\n }\n };\n CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n };\n CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var grd;\n if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) {\n var ctx = this.globalData.canvasContext;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n if (styleData.t === 1) {\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\n } else {\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\n }\n var i;\n var len = styleData.g.p;\n var cValues = itemData.g.c;\n var opacity = 1;\n for (i = 0; i < len; i += 1) {\n if (itemData.g._hasOpacity && itemData.g._collapsable) {\n opacity = itemData.g.o[i * 2 + 1];\n }\n grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\n }\n styleElem.grd = grd;\n }\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n };\n CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var d = itemData.d;\n if (d && (d._mdf || this._isFirstFrame)) {\n styleElem.da = d.dashArray;\n styleElem[\"do\"] = d.dashoffset[0];\n }\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n if (itemData.w._mdf || this._isFirstFrame) {\n styleElem.wi = itemData.w.v;\n }\n };\n CVShapeElement.prototype.destroy = function () {\n this.shapesData = null;\n this.globalData = null;\n this.canvasContext = null;\n this.stylesList.length = 0;\n this.itemsData.length = 0;\n };\n\n function CVTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.yOffset = 0;\n this.fillColorAnim = false;\n this.strokeColorAnim = false;\n this.strokeWidthAnim = false;\n this.stroke = false;\n this.fill = false;\n this.justifyOffset = 0;\n this.currentRender = null;\n this.renderType = 'canvas';\n this.values = {\n fill: 'rgba(0,0,0,0)',\n stroke: 'rgba(0,0,0,0)',\n sWidth: 0,\n fValue: ''\n };\n this.initElement(data, globalData, comp);\n }\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\n CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\n CVTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var hasFill = false;\n if (documentData.fc) {\n hasFill = true;\n this.values.fill = this.buildColor(documentData.fc);\n } else {\n this.values.fill = 'rgba(0,0,0,0)';\n }\n this.fill = hasFill;\n var hasStroke = false;\n if (documentData.sc) {\n hasStroke = true;\n this.values.stroke = this.buildColor(documentData.sc);\n this.values.sWidth = documentData.sw;\n }\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n var i;\n var len;\n var letters = documentData.l;\n var matrixHelper = this.mHelper;\n this.stroke = hasStroke;\n this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\n len = documentData.finalText.length;\n // this.tHelper.font = this.values.fValue;\n var charData;\n var shapeData;\n var k;\n var kLen;\n var shapes;\n var j;\n var jLen;\n var pathNodes;\n var commands;\n var pathArr;\n var singleShape = this.data.singleShape;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var cnt = 0;\n for (i = 0; i < len; i += 1) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n shapeData = charData && charData.data || {};\n matrixHelper.reset();\n if (singleShape && letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\n jLen = shapes.length;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n if (singleShape) {\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n }\n commands = createSizedArray(jLen - 1);\n var commandsCounter = 0;\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n kLen = shapes[j].ks.k.i.length;\n pathNodes = shapes[j].ks.k;\n pathArr = [];\n for (k = 1; k < kLen; k += 1) {\n if (k === 1) {\n pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n }\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\n }\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n commands[commandsCounter] = pathArr;\n commandsCounter += 1;\n }\n }\n if (singleShape) {\n xPos += letters[i].l;\n xPos += trackingOffset;\n }\n if (this.textSpans[cnt]) {\n this.textSpans[cnt].elem = commands;\n } else {\n this.textSpans[cnt] = {\n elem: commands\n };\n }\n cnt += 1;\n }\n };\n CVTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var ctx = this.canvasContext;\n ctx.font = this.values.fValue;\n this.globalData.renderer.ctxLineCap('butt');\n // ctx.lineCap = 'butt';\n this.globalData.renderer.ctxLineJoin('miter');\n // ctx.lineJoin = 'miter';\n this.globalData.renderer.ctxMiterLimit(4);\n // ctx.miterLimit = 4;\n\n if (!this.data.singleShape) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n }\n var i;\n var len;\n var j;\n var jLen;\n var k;\n var kLen;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var lastFill = null;\n var lastStroke = null;\n var lastStrokeW = null;\n var commands;\n var pathArr;\n var renderer = this.globalData.renderer;\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n if (renderedLetter) {\n renderer.save();\n renderer.ctxTransform(renderedLetter.p);\n renderer.ctxOpacity(renderedLetter.o);\n }\n if (this.fill) {\n if (renderedLetter && renderedLetter.fc) {\n if (lastFill !== renderedLetter.fc) {\n renderer.ctxFillStyle(renderedLetter.fc);\n lastFill = renderedLetter.fc;\n // ctx.fillStyle = renderedLetter.fc;\n }\n } else if (lastFill !== this.values.fill) {\n lastFill = this.values.fill;\n renderer.ctxFillStyle(this.values.fill);\n // ctx.fillStyle = this.values.fill;\n }\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n this.globalData.canvasContext.closePath();\n renderer.ctxFill();\n // this.globalData.canvasContext.fill();\n /// ctx.fillText(this.textSpans[i].val,0,0);\n }\n if (this.stroke) {\n if (renderedLetter && renderedLetter.sw) {\n if (lastStrokeW !== renderedLetter.sw) {\n lastStrokeW = renderedLetter.sw;\n renderer.ctxLineWidth(renderedLetter.sw);\n // ctx.lineWidth = renderedLetter.sw;\n }\n } else if (lastStrokeW !== this.values.sWidth) {\n lastStrokeW = this.values.sWidth;\n renderer.ctxLineWidth(this.values.sWidth);\n // ctx.lineWidth = this.values.sWidth;\n }\n if (renderedLetter && renderedLetter.sc) {\n if (lastStroke !== renderedLetter.sc) {\n lastStroke = renderedLetter.sc;\n renderer.ctxStrokeStyle(renderedLetter.sc);\n // ctx.strokeStyle = renderedLetter.sc;\n }\n } else if (lastStroke !== this.values.stroke) {\n lastStroke = this.values.stroke;\n renderer.ctxStrokeStyle(this.values.stroke);\n // ctx.strokeStyle = this.values.stroke;\n }\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n this.globalData.canvasContext.closePath();\n renderer.ctxStroke();\n // this.globalData.canvasContext.stroke();\n /// ctx.strokeText(letters[i].val,0,0);\n }\n if (renderedLetter) {\n this.globalData.renderer.restore();\n }\n }\n }\n };\n\n function CVImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.img = globalData.imageLoader.getAsset(this.assetData);\n this.initElement(data, globalData, comp);\n }\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\n CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n CVImageElement.prototype.createContent = function () {\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\n var canvas = createTag('canvas');\n canvas.width = this.assetData.w;\n canvas.height = this.assetData.h;\n var ctx = canvas.getContext('2d');\n var imgW = this.img.width;\n var imgH = this.img.height;\n var imgRel = imgW / imgH;\n var canvasRel = this.assetData.w / this.assetData.h;\n var widthCrop;\n var heightCrop;\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\n if (imgRel > canvasRel && par === 'xMidYMid slice' || imgRel < canvasRel && par !== 'xMidYMid slice') {\n heightCrop = imgH;\n widthCrop = heightCrop * canvasRel;\n } else {\n widthCrop = imgW;\n heightCrop = widthCrop / canvasRel;\n }\n ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\n this.img = canvas;\n }\n };\n CVImageElement.prototype.renderInnerContent = function () {\n this.canvasContext.drawImage(this.img, 0, 0);\n };\n CVImageElement.prototype.destroy = function () {\n this.img = null;\n };\n\n function CVSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\n CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n CVSolidElement.prototype.renderInnerContent = function () {\n // var ctx = this.canvasContext;\n this.globalData.renderer.ctxFillStyle(this.data.sc);\n // ctx.fillStyle = this.data.sc;\n this.globalData.renderer.ctxFillRect(0, 0, this.data.sw, this.data.sh);\n // ctx.fillRect(0, 0, this.data.sw, this.data.sh);\n //\n };\n\n function CanvasRendererBase() {}\n extendPrototype([BaseRenderer], CanvasRendererBase);\n CanvasRendererBase.prototype.createShape = function (data) {\n return new CVShapeElement(data, this.globalData, this);\n };\n CanvasRendererBase.prototype.createText = function (data) {\n return new CVTextElement(data, this.globalData, this);\n };\n CanvasRendererBase.prototype.createImage = function (data) {\n return new CVImageElement(data, this.globalData, this);\n };\n CanvasRendererBase.prototype.createSolid = function (data) {\n return new CVSolidElement(data, this.globalData, this);\n };\n CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n CanvasRendererBase.prototype.ctxTransform = function (props) {\n if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\n return;\n }\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\n };\n CanvasRendererBase.prototype.ctxOpacity = function (op) {\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\n };\n CanvasRendererBase.prototype.ctxFillStyle = function (value) {\n this.canvasContext.fillStyle = value;\n };\n CanvasRendererBase.prototype.ctxStrokeStyle = function (value) {\n this.canvasContext.strokeStyle = value;\n };\n CanvasRendererBase.prototype.ctxLineWidth = function (value) {\n this.canvasContext.lineWidth = value;\n };\n CanvasRendererBase.prototype.ctxLineCap = function (value) {\n this.canvasContext.lineCap = value;\n };\n CanvasRendererBase.prototype.ctxLineJoin = function (value) {\n this.canvasContext.lineJoin = value;\n };\n CanvasRendererBase.prototype.ctxMiterLimit = function (value) {\n this.canvasContext.miterLimit = value;\n };\n CanvasRendererBase.prototype.ctxFill = function (rule) {\n this.canvasContext.fill(rule);\n };\n CanvasRendererBase.prototype.ctxFillRect = function (x, y, w, h) {\n this.canvasContext.fillRect(x, y, w, h);\n };\n CanvasRendererBase.prototype.ctxStroke = function () {\n this.canvasContext.stroke();\n };\n CanvasRendererBase.prototype.reset = function () {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n this.contextData.reset();\n };\n CanvasRendererBase.prototype.save = function () {\n this.canvasContext.save();\n };\n CanvasRendererBase.prototype.restore = function (actionFlag) {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n if (actionFlag) {\n this.globalData.blendMode = 'source-over';\n }\n this.contextData.restore(actionFlag);\n };\n CanvasRendererBase.prototype.configAnimation = function (animData) {\n if (this.animationItem.wrapper) {\n this.animationItem.container = createTag('canvas');\n var containerStyle = this.animationItem.container.style;\n containerStyle.width = '100%';\n containerStyle.height = '100%';\n var origin = '0px 0px 0px';\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n containerStyle['-webkit-transform'] = origin;\n containerStyle.contentVisibility = this.renderConfig.contentVisibility;\n this.animationItem.wrapper.appendChild(this.animationItem.container);\n this.canvasContext = this.animationItem.container.getContext('2d');\n if (this.renderConfig.className) {\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\n }\n if (this.renderConfig.id) {\n this.animationItem.container.setAttribute('id', this.renderConfig.id);\n }\n } else {\n this.canvasContext = this.renderConfig.context;\n }\n this.contextData.setContext(this.canvasContext);\n this.data = animData;\n this.layers = animData.layers;\n this.transformCanvas = {\n w: animData.w,\n h: animData.h,\n sx: 0,\n sy: 0,\n tx: 0,\n ty: 0\n };\n this.setupGlobalData(animData, document.body);\n this.globalData.canvasContext = this.canvasContext;\n this.globalData.renderer = this;\n this.globalData.isDashed = false;\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.globalData.transformCanvas = this.transformCanvas;\n this.elements = createSizedArray(animData.layers.length);\n this.updateContainerSize();\n };\n CanvasRendererBase.prototype.updateContainerSize = function (width, height) {\n this.reset();\n var elementWidth;\n var elementHeight;\n if (width) {\n elementWidth = width;\n elementHeight = height;\n this.canvasContext.canvas.width = elementWidth;\n this.canvasContext.canvas.height = elementHeight;\n } else {\n if (this.animationItem.wrapper && this.animationItem.container) {\n elementWidth = this.animationItem.wrapper.offsetWidth;\n elementHeight = this.animationItem.wrapper.offsetHeight;\n } else {\n elementWidth = this.canvasContext.canvas.width;\n elementHeight = this.canvasContext.canvas.height;\n }\n this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\n this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;\n }\n var elementRel;\n var animationRel;\n if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\n var par = this.renderConfig.preserveAspectRatio.split(' ');\n var fillType = par[1] || 'meet';\n var pos = par[0] || 'xMidYMid';\n var xPos = pos.substr(0, 4);\n var yPos = pos.substr(4);\n elementRel = elementWidth / elementHeight;\n animationRel = this.transformCanvas.w / this.transformCanvas.h;\n if (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n } else {\n this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n }\n if (xPos === 'xMid' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2 * this.renderConfig.dpr;\n } else if (xPos === 'xMax' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.tx = 0;\n }\n if (yPos === 'YMid' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2 * this.renderConfig.dpr;\n } else if (yPos === 'YMax' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.ty = 0;\n }\n } else if (this.renderConfig.preserveAspectRatio === 'none') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n } else {\n this.transformCanvas.sx = this.renderConfig.dpr;\n this.transformCanvas.sy = this.renderConfig.dpr;\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n }\n this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\n /* var i, len = this.elements.length;\n for(i=0;i<len;i+=1){\n if(this.elements[i] && this.elements[i].data.ty === 0){\n this.elements[i].resize(this.globalData.transformCanvas);\n }\n } */\n this.ctxTransform(this.transformCanvas.props);\n this.canvasContext.beginPath();\n this.canvasContext.rect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n this.canvasContext.closePath();\n this.canvasContext.clip();\n this.renderFrame(this.renderedFrame, true);\n };\n CanvasRendererBase.prototype.destroy = function () {\n if (this.renderConfig.clearCanvas && this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n var i;\n var len = this.layers ? this.layers.length : 0;\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n this.elements.length = 0;\n this.globalData.canvasContext = null;\n this.animationItem.container = null;\n this.destroyed = true;\n };\n CanvasRendererBase.prototype.renderFrame = function (num, forceRender) {\n if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) {\n return;\n }\n this.renderedFrame = num;\n this.globalData.frameNum = num - this.animationItem._isFirstFrame;\n this.globalData.frameId += 1;\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\n this.globalData.projectInterface.currentFrame = num;\n\n // console.log('--------');\n // console.log('NEW: ',num);\n var i;\n var len = this.layers.length;\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n if (this.globalData._mdf) {\n if (this.renderConfig.clearCanvas === true) {\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n } else {\n this.save();\n }\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n if (this.renderConfig.clearCanvas !== true) {\n this.restore();\n }\n }\n };\n CanvasRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n var element = this.createItem(this.layers[pos], this, this.globalData);\n elements[pos] = element;\n element.initExpressions();\n /* if(this.layers[pos].ty === 0){\n element.resize(this.globalData.transformCanvas);\n } */\n };\n CanvasRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n CanvasRendererBase.prototype.hide = function () {\n this.animationItem.container.style.display = 'none';\n };\n CanvasRendererBase.prototype.show = function () {\n this.animationItem.container.style.display = 'block';\n };\n\n function CanvasContext() {\n this.opacity = -1;\n this.transform = createTypedArray('float32', 16);\n this.fillStyle = '';\n this.strokeStyle = '';\n this.lineWidth = '';\n this.lineCap = '';\n this.lineJoin = '';\n this.miterLimit = '';\n this.id = Math.random();\n }\n function CVContextData() {\n this.stack = [];\n this.cArrPos = 0;\n this.cTr = new Matrix();\n var i;\n var len = 15;\n for (i = 0; i < len; i += 1) {\n var canvasContext = new CanvasContext();\n this.stack[i] = canvasContext;\n }\n this._length = len;\n this.nativeContext = null;\n this.transformMat = new Matrix();\n this.currentOpacity = 1;\n //\n this.currentFillStyle = '';\n this.appliedFillStyle = '';\n //\n this.currentStrokeStyle = '';\n this.appliedStrokeStyle = '';\n //\n this.currentLineWidth = '';\n this.appliedLineWidth = '';\n //\n this.currentLineCap = '';\n this.appliedLineCap = '';\n //\n this.currentLineJoin = '';\n this.appliedLineJoin = '';\n //\n this.appliedMiterLimit = '';\n this.currentMiterLimit = '';\n }\n CVContextData.prototype.duplicate = function () {\n var newLength = this._length * 2;\n var i = 0;\n for (i = this._length; i < newLength; i += 1) {\n this.stack[i] = new CanvasContext();\n }\n this._length = newLength;\n };\n CVContextData.prototype.reset = function () {\n this.cArrPos = 0;\n this.cTr.reset();\n this.stack[this.cArrPos].opacity = 1;\n };\n CVContextData.prototype.restore = function (forceRestore) {\n this.cArrPos -= 1;\n var currentContext = this.stack[this.cArrPos];\n var transform = currentContext.transform;\n var i;\n var arr = this.cTr.props;\n for (i = 0; i < 16; i += 1) {\n arr[i] = transform[i];\n }\n if (forceRestore) {\n this.nativeContext.restore();\n var prevStack = this.stack[this.cArrPos + 1];\n this.appliedFillStyle = prevStack.fillStyle;\n this.appliedStrokeStyle = prevStack.strokeStyle;\n this.appliedLineWidth = prevStack.lineWidth;\n this.appliedLineCap = prevStack.lineCap;\n this.appliedLineJoin = prevStack.lineJoin;\n this.appliedMiterLimit = prevStack.miterLimit;\n }\n this.nativeContext.setTransform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]);\n if (forceRestore || currentContext.opacity !== -1 && this.currentOpacity !== currentContext.opacity) {\n this.nativeContext.globalAlpha = currentContext.opacity;\n this.currentOpacity = currentContext.opacity;\n }\n this.currentFillStyle = currentContext.fillStyle;\n this.currentStrokeStyle = currentContext.strokeStyle;\n this.currentLineWidth = currentContext.lineWidth;\n this.currentLineCap = currentContext.lineCap;\n this.currentLineJoin = currentContext.lineJoin;\n this.currentMiterLimit = currentContext.miterLimit;\n };\n CVContextData.prototype.save = function (saveOnNativeFlag) {\n if (saveOnNativeFlag) {\n this.nativeContext.save();\n }\n var props = this.cTr.props;\n if (this._length <= this.cArrPos) {\n this.duplicate();\n }\n var currentStack = this.stack[this.cArrPos];\n var i;\n for (i = 0; i < 16; i += 1) {\n currentStack.transform[i] = props[i];\n }\n this.cArrPos += 1;\n var newStack = this.stack[this.cArrPos];\n newStack.opacity = currentStack.opacity;\n newStack.fillStyle = currentStack.fillStyle;\n newStack.strokeStyle = currentStack.strokeStyle;\n newStack.lineWidth = currentStack.lineWidth;\n newStack.lineCap = currentStack.lineCap;\n newStack.lineJoin = currentStack.lineJoin;\n newStack.miterLimit = currentStack.miterLimit;\n };\n CVContextData.prototype.setOpacity = function (value) {\n this.stack[this.cArrPos].opacity = value;\n };\n CVContextData.prototype.setContext = function (value) {\n this.nativeContext = value;\n };\n CVContextData.prototype.fillStyle = function (value) {\n if (this.stack[this.cArrPos].fillStyle !== value) {\n this.currentFillStyle = value;\n this.stack[this.cArrPos].fillStyle = value;\n }\n };\n CVContextData.prototype.strokeStyle = function (value) {\n if (this.stack[this.cArrPos].strokeStyle !== value) {\n this.currentStrokeStyle = value;\n this.stack[this.cArrPos].strokeStyle = value;\n }\n };\n CVContextData.prototype.lineWidth = function (value) {\n if (this.stack[this.cArrPos].lineWidth !== value) {\n this.currentLineWidth = value;\n this.stack[this.cArrPos].lineWidth = value;\n }\n };\n CVContextData.prototype.lineCap = function (value) {\n if (this.stack[this.cArrPos].lineCap !== value) {\n this.currentLineCap = value;\n this.stack[this.cArrPos].lineCap = value;\n }\n };\n CVContextData.prototype.lineJoin = function (value) {\n if (this.stack[this.cArrPos].lineJoin !== value) {\n this.currentLineJoin = value;\n this.stack[this.cArrPos].lineJoin = value;\n }\n };\n CVContextData.prototype.miterLimit = function (value) {\n if (this.stack[this.cArrPos].miterLimit !== value) {\n this.currentMiterLimit = value;\n this.stack[this.cArrPos].miterLimit = value;\n }\n };\n CVContextData.prototype.transform = function (props) {\n this.transformMat.cloneFromProps(props);\n // Taking the last transform value from the stored stack of transforms\n var currentTransform = this.cTr;\n // Applying the last transform value after the new transform to respect the order of transformations\n this.transformMat.multiply(currentTransform);\n // Storing the new transformed value in the stored transform\n currentTransform.cloneFromProps(this.transformMat.props);\n var trProps = currentTransform.props;\n // Applying the new transform to the canvas\n this.nativeContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\n };\n CVContextData.prototype.opacity = function (op) {\n var currentOpacity = this.stack[this.cArrPos].opacity;\n currentOpacity *= op < 0 ? 0 : op;\n if (this.stack[this.cArrPos].opacity !== currentOpacity) {\n if (this.currentOpacity !== op) {\n this.nativeContext.globalAlpha = op;\n this.currentOpacity = op;\n }\n this.stack[this.cArrPos].opacity = currentOpacity;\n }\n };\n CVContextData.prototype.fill = function (rule) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n this.nativeContext.fill(rule);\n };\n CVContextData.prototype.fillRect = function (x, y, w, h) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n this.nativeContext.fillRect(x, y, w, h);\n };\n CVContextData.prototype.stroke = function () {\n if (this.appliedStrokeStyle !== this.currentStrokeStyle) {\n this.appliedStrokeStyle = this.currentStrokeStyle;\n this.nativeContext.strokeStyle = this.appliedStrokeStyle;\n }\n if (this.appliedLineWidth !== this.currentLineWidth) {\n this.appliedLineWidth = this.currentLineWidth;\n this.nativeContext.lineWidth = this.appliedLineWidth;\n }\n if (this.appliedLineCap !== this.currentLineCap) {\n this.appliedLineCap = this.currentLineCap;\n this.nativeContext.lineCap = this.appliedLineCap;\n }\n if (this.appliedLineJoin !== this.currentLineJoin) {\n this.appliedLineJoin = this.currentLineJoin;\n this.nativeContext.lineJoin = this.appliedLineJoin;\n }\n if (this.appliedMiterLimit !== this.currentMiterLimit) {\n this.appliedMiterLimit = this.currentMiterLimit;\n this.nativeContext.miterLimit = this.appliedMiterLimit;\n }\n this.nativeContext.stroke();\n };\n\n function CVCompElement(data, globalData, comp) {\n this.completeLayers = false;\n this.layers = data.layers;\n this.pendingElements = [];\n this.elements = createSizedArray(this.layers.length);\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\n CVCompElement.prototype.renderInnerContent = function () {\n var ctx = this.canvasContext;\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(this.data.w, 0);\n ctx.lineTo(this.data.w, this.data.h);\n ctx.lineTo(0, this.data.h);\n ctx.lineTo(0, 0);\n ctx.clip();\n var i;\n var len = this.layers.length;\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n CVCompElement.prototype.destroy = function () {\n var i;\n var len = this.layers.length;\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n this.layers = null;\n this.elements = null;\n };\n CVCompElement.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function CanvasRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.renderConfig = {\n clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\n context: config && config.context || null,\n progressiveLoad: config && config.progressiveLoad || false,\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n className: config && config.className || '',\n id: config && config.id || '',\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.renderConfig.dpr = config && config.dpr || 1;\n if (this.animationItem.wrapper) {\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\n }\n this.renderedFrame = -1;\n this.globalData = {\n frameNum: -1,\n _mdf: false,\n renderConfig: this.renderConfig,\n currentGlobalAlpha: -1\n };\n this.contextData = new CVContextData();\n this.elements = [];\n this.pendingElements = [];\n this.transformMat = new Matrix();\n this.completeLayers = false;\n this.rendererType = 'canvas';\n if (this.renderConfig.clearCanvas) {\n this.ctxTransform = this.contextData.transform.bind(this.contextData);\n this.ctxOpacity = this.contextData.opacity.bind(this.contextData);\n this.ctxFillStyle = this.contextData.fillStyle.bind(this.contextData);\n this.ctxStrokeStyle = this.contextData.strokeStyle.bind(this.contextData);\n this.ctxLineWidth = this.contextData.lineWidth.bind(this.contextData);\n this.ctxLineCap = this.contextData.lineCap.bind(this.contextData);\n this.ctxLineJoin = this.contextData.lineJoin.bind(this.contextData);\n this.ctxMiterLimit = this.contextData.miterLimit.bind(this.contextData);\n this.ctxFill = this.contextData.fill.bind(this.contextData);\n this.ctxFillRect = this.contextData.fillRect.bind(this.contextData);\n this.ctxStroke = this.contextData.stroke.bind(this.contextData);\n this.save = this.contextData.save.bind(this.contextData);\n }\n }\n extendPrototype([CanvasRendererBase], CanvasRenderer);\n CanvasRenderer.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function HBaseElement() {}\n HBaseElement.prototype = {\n checkBlendMode: function checkBlendMode() {},\n initRendererElement: function initRendererElement() {\n this.baseElement = createTag(this.data.tg || 'div');\n if (this.data.hasMask) {\n this.svgElement = createNS('svg');\n this.layerElement = createNS('g');\n this.maskedElement = this.layerElement;\n this.svgElement.appendChild(this.layerElement);\n this.baseElement.appendChild(this.svgElement);\n } else {\n this.layerElement = this.baseElement;\n }\n styleDiv(this.baseElement);\n },\n createContainerElements: function createContainerElements() {\n this.renderableEffectsManager = new CVEffects(this);\n this.transformedElement = this.baseElement;\n this.maskedElement = this.layerElement;\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n }\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\n if (this.finalTransform._matMdf) {\n var matrixValue = this.finalTransform.mat.toCSS();\n transformedElementStyle.transform = matrixValue;\n transformedElementStyle.webkitTransform = matrixValue;\n }\n if (this.finalTransform._opMdf) {\n transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n this.renderTransform();\n this.renderRenderable();\n this.renderElement();\n this.renderInnerContent();\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.layerElement = null;\n this.transformedElement = null;\n if (this.matteElement) {\n this.matteElement = null;\n }\n if (this.maskManager) {\n this.maskManager.destroy();\n this.maskManager = null;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n },\n addEffects: function addEffects() {},\n setMatte: function setMatte() {}\n };\n HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\n HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\n HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting;\n\n function HSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\n HSolidElement.prototype.createContent = function () {\n var rect;\n if (this.data.hasMask) {\n rect = createNS('rect');\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.svgElement.setAttribute('width', this.data.sw);\n this.svgElement.setAttribute('height', this.data.sh);\n } else {\n rect = createTag('div');\n rect.style.width = this.data.sw + 'px';\n rect.style.height = this.data.sh + 'px';\n rect.style.backgroundColor = this.data.sc;\n }\n this.layerElement.appendChild(rect);\n };\n\n function HShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = [];\n // Full shape data\n this.shapesData = data.shapes;\n // List of styles that will be applied to shapes\n this.stylesList = [];\n // List of modifiers that will be applied to shapes\n this.shapeModifiers = [];\n // List of items in shape tree\n this.itemsData = [];\n // List of items in previous shape tree\n this.processedElements = [];\n // List of animated components\n this.animatedContents = [];\n this.shapesContainer = createNS('g');\n this.initElement(data, globalData, comp);\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n this.prevViewData = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n }\n extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\n HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\n HShapeElement.prototype.createContent = function () {\n var cont;\n this.baseElement.style.fontSize = 0;\n if (this.data.hasMask) {\n this.layerElement.appendChild(this.shapesContainer);\n cont = this.svgElement;\n } else {\n cont = createNS('svg');\n var size = this.comp.data ? this.comp.data : this.globalData.compSize;\n cont.setAttribute('width', size.w);\n cont.setAttribute('height', size.h);\n cont.appendChild(this.shapesContainer);\n this.layerElement.appendChild(cont);\n }\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\n this.filterUniqueShapes();\n this.shapeCont = cont;\n };\n HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\n var i;\n var len = transformers.length;\n for (i = 0; i < len; i += 1) {\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\n }\n return point;\n };\n HShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\n var shape = item.sh.v;\n var transformers = item.transformers;\n var i;\n var len = shape._length;\n var vPoint;\n var oPoint;\n var nextIPoint;\n var nextVPoint;\n if (len <= 1) {\n return;\n }\n for (i = 0; i < len - 1; i += 1) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n if (shape.c) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n };\n HShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\n this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\n var bounds = this.shapeBoundingBox;\n boundingBox.x = bmMin(bounds.left, boundingBox.x);\n boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\n boundingBox.y = bmMin(bounds.top, boundingBox.y);\n boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\n };\n HShapeElement.prototype.shapeBoundingBox = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n HShapeElement.prototype.tempBoundingBox = {\n x: 0,\n xMax: 0,\n y: 0,\n yMax: 0,\n width: 0,\n height: 0\n };\n HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\n for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {\n // eslint-disable-line no-plusplus\n b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n c = 3 * p1[i] - 3 * p0[i];\n b |= 0; // eslint-disable-line no-bitwise\n a |= 0; // eslint-disable-line no-bitwise\n c |= 0; // eslint-disable-line no-bitwise\n\n if (a === 0 && b === 0) {\n //\n } else if (a === 0) {\n t = -c / b;\n if (t > 0 && t < 1) {\n bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\n }\n } else {\n b2ac = b * b - 4 * c * a;\n if (b2ac >= 0) {\n t1 = (-b + bmSqrt(b2ac)) / (2 * a);\n if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\n t2 = (-b - bmSqrt(b2ac)) / (2 * a);\n if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\n }\n }\n }\n this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\n this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\n this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\n this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\n };\n HShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\n return bmPow(1 - t, 3) * p0[i] + 3 * bmPow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * bmPow(t, 2) * p2[i] + bmPow(t, 3) * p3[i];\n };\n HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\n var i;\n var len = itemsData.length;\n for (i = 0; i < len; i += 1) {\n if (itemsData[i] && itemsData[i].sh) {\n this.calculateShapeBoundingBox(itemsData[i], boundingBox);\n } else if (itemsData[i] && itemsData[i].it) {\n this.calculateBoundingBox(itemsData[i].it, boundingBox);\n } else if (itemsData[i] && itemsData[i].style && itemsData[i].w) {\n this.expandStrokeBoundingBox(itemsData[i].w, boundingBox);\n }\n }\n };\n HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\n var width = 0;\n if (widthProperty.keyframes) {\n for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\n var kfw = widthProperty.keyframes[i].s;\n if (kfw > width) {\n width = kfw;\n }\n }\n width *= widthProperty.mult;\n } else {\n width = widthProperty.v * widthProperty.mult;\n }\n boundingBox.x -= width;\n boundingBox.xMax += width;\n boundingBox.y -= width;\n boundingBox.yMax += width;\n };\n HShapeElement.prototype.currentBoxContains = function (box) {\n return this.currentBBox.x <= box.x && this.currentBBox.y <= box.y && this.currentBBox.width + this.currentBBox.x >= box.x + box.width && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\n };\n HShapeElement.prototype.renderInnerContent = function () {\n this._renderShapeFrame();\n if (!this.hidden && (this._isFirstFrame || this._mdf)) {\n var tempBoundingBox = this.tempBoundingBox;\n var max = 999999;\n tempBoundingBox.x = max;\n tempBoundingBox.xMax = -max;\n tempBoundingBox.y = max;\n tempBoundingBox.yMax = -max;\n this.calculateBoundingBox(this.itemsData, tempBoundingBox);\n tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\n tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y;\n // var tempBoundingBox = this.shapeCont.getBBox();\n if (this.currentBoxContains(tempBoundingBox)) {\n return;\n }\n var changed = false;\n if (this.currentBBox.w !== tempBoundingBox.width) {\n this.currentBBox.w = tempBoundingBox.width;\n this.shapeCont.setAttribute('width', tempBoundingBox.width);\n changed = true;\n }\n if (this.currentBBox.h !== tempBoundingBox.height) {\n this.currentBBox.h = tempBoundingBox.height;\n this.shapeCont.setAttribute('height', tempBoundingBox.height);\n changed = true;\n }\n if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\n this.currentBBox.w = tempBoundingBox.width;\n this.currentBBox.h = tempBoundingBox.height;\n this.currentBBox.x = tempBoundingBox.x;\n this.currentBBox.y = tempBoundingBox.y;\n this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n var shapeStyle = this.shapeCont.style;\n var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n shapeStyle.transform = shapeTransform;\n shapeStyle.webkitTransform = shapeTransform;\n }\n }\n };\n\n function HTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.textPaths = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n this.renderType = 'svg';\n this.isMasked = false;\n this.initElement(data, globalData, comp);\n }\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\n HTextElement.prototype.createContent = function () {\n this.isMasked = this.checkMasks();\n if (this.isMasked) {\n this.renderType = 'svg';\n this.compW = this.comp.data.w;\n this.compH = this.comp.data.h;\n this.svgElement.setAttribute('width', this.compW);\n this.svgElement.setAttribute('height', this.compH);\n var g = createNS('g');\n this.maskedElement.appendChild(g);\n this.innerElem = g;\n } else {\n this.renderType = 'html';\n this.innerElem = this.layerElement;\n }\n this.checkParenting();\n };\n HTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var innerElemStyle = this.innerElem.style;\n var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\n innerElemStyle.fill = textColor;\n innerElemStyle.color = textColor;\n if (documentData.sc) {\n innerElemStyle.stroke = this.buildColor(documentData.sc);\n innerElemStyle.strokeWidth = documentData.sw + 'px';\n }\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n if (!this.globalData.fontManager.chars) {\n innerElemStyle.fontSize = documentData.finalSize + 'px';\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\n if (fontData.fClass) {\n this.innerElem.className = fontData.fClass;\n } else {\n innerElemStyle.fontFamily = fontData.fFamily;\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n innerElemStyle.fontStyle = fStyle;\n innerElemStyle.fontWeight = fWeight;\n }\n }\n var i;\n var len;\n var letters = documentData.l;\n len = letters.length;\n var tSpan;\n var tParent;\n var tCont;\n var matrixHelper = this.mHelper;\n var shapes;\n var shapeStr = '';\n var cnt = 0;\n for (i = 0; i < len; i += 1) {\n if (this.globalData.fontManager.chars) {\n if (!this.textPaths[cnt]) {\n tSpan = createNS('path');\n tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\n tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\n tSpan.setAttribute('stroke-miterlimit', '4');\n } else {\n tSpan = this.textPaths[cnt];\n }\n if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tCont = tParent.children[0];\n } else {\n tParent = createTag('div');\n tParent.style.lineHeight = 0;\n tCont = createNS('svg');\n tCont.appendChild(tSpan);\n styleDiv(tParent);\n }\n }\n } else if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tSpan = this.textPaths[cnt];\n } else {\n tParent = createTag('span');\n styleDiv(tParent);\n tSpan = createTag('span');\n styleDiv(tSpan);\n tParent.appendChild(tSpan);\n }\n } else {\n tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\n }\n // tSpan.setAttribute('visibility', 'hidden');\n if (this.globalData.fontManager.chars) {\n var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var shapeData;\n if (charData) {\n shapeData = charData.data;\n } else {\n shapeData = null;\n }\n matrixHelper.reset();\n if (shapeData && shapeData.shapes && shapeData.shapes.length) {\n shapes = shapeData.shapes[0].it;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n shapeStr = this.createPathShape(matrixHelper, shapes);\n tSpan.setAttribute('d', shapeStr);\n }\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent);\n if (shapeData && shapeData.shapes) {\n // document.body.appendChild is needed to get exact measure of shape\n document.body.appendChild(tCont);\n var boundingBox = tCont.getBBox();\n tCont.setAttribute('width', boundingBox.width + 2);\n tCont.setAttribute('height', boundingBox.height + 2);\n tCont.setAttribute('viewBox', boundingBox.x - 1 + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\n var tContStyle = tCont.style;\n var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\n tContStyle.transform = tContTranslation;\n tContStyle.webkitTransform = tContTranslation;\n letters[i].yOffset = boundingBox.y - 1;\n } else {\n tCont.setAttribute('width', 1);\n tCont.setAttribute('height', 1);\n }\n tParent.appendChild(tCont);\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } else {\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent);\n //\n var tStyle = tSpan.style;\n var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\n tStyle.transform = tSpanTranslation;\n tStyle.webkitTransform = tSpanTranslation;\n } else {\n this.innerElem.appendChild(tSpan);\n }\n }\n //\n if (!this.isMasked) {\n this.textSpans[cnt] = tParent;\n } else {\n this.textSpans[cnt] = tSpan;\n }\n this.textSpans[cnt].style.display = 'block';\n this.textPaths[cnt] = tSpan;\n cnt += 1;\n }\n while (cnt < this.textSpans.length) {\n this.textSpans[cnt].style.display = 'none';\n cnt += 1;\n }\n };\n HTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var svgStyle;\n if (this.data.singleShape) {\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\n return;\n }\n if (this.isMasked && this.finalTransform._matMdf) {\n // Todo Benchmark if using this is better than getBBox\n this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\n svgStyle = this.svgElement.style;\n var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\n svgStyle.transform = translation;\n svgStyle.webkitTransform = translation;\n }\n }\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\n return;\n }\n var i;\n var len;\n var count = 0;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var textPath;\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n count += 1;\n } else {\n textSpan = this.textSpans[i];\n textPath = this.textPaths[i];\n renderedLetter = renderedLetters[count];\n count += 1;\n if (renderedLetter._mdf.m) {\n if (!this.isMasked) {\n textSpan.style.webkitTransform = renderedLetter.m;\n textSpan.style.transform = renderedLetter.m;\n } else {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n }\n /// /textSpan.setAttribute('opacity',renderedLetter.o);\n textSpan.style.opacity = renderedLetter.o;\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\n textPath.setAttribute('stroke-width', renderedLetter.sw);\n }\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\n textPath.setAttribute('stroke', renderedLetter.sc);\n }\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\n textPath.setAttribute('fill', renderedLetter.fc);\n textPath.style.color = renderedLetter.fc;\n }\n }\n }\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\n var boundingBox = this.innerElem.getBBox();\n if (this.currentBBox.w !== boundingBox.width) {\n this.currentBBox.w = boundingBox.width;\n this.svgElement.setAttribute('width', boundingBox.width);\n }\n if (this.currentBBox.h !== boundingBox.height) {\n this.currentBBox.h = boundingBox.height;\n this.svgElement.setAttribute('height', boundingBox.height);\n }\n var margin = 1;\n if (this.currentBBox.w !== boundingBox.width + margin * 2 || this.currentBBox.h !== boundingBox.height + margin * 2 || this.currentBBox.x !== boundingBox.x - margin || this.currentBBox.y !== boundingBox.y - margin) {\n this.currentBBox.w = boundingBox.width + margin * 2;\n this.currentBBox.h = boundingBox.height + margin * 2;\n this.currentBBox.x = boundingBox.x - margin;\n this.currentBBox.y = boundingBox.y - margin;\n this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n svgStyle = this.svgElement.style;\n var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n svgStyle.transform = svgTransform;\n svgStyle.webkitTransform = svgTransform;\n }\n }\n };\n\n function HCameraElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initHierarchy();\n var getProp = PropertyFactory.getProp;\n this.pe = getProp(this, data.pe, 0, 0, this);\n if (data.ks.p.s) {\n this.px = getProp(this, data.ks.p.x, 1, 0, this);\n this.py = getProp(this, data.ks.p.y, 1, 0, this);\n this.pz = getProp(this, data.ks.p.z, 1, 0, this);\n } else {\n this.p = getProp(this, data.ks.p, 1, 0, this);\n }\n if (data.ks.a) {\n this.a = getProp(this, data.ks.a, 1, 0, this);\n }\n if (data.ks.or.k.length && data.ks.or.k[0].to) {\n var i;\n var len = data.ks.or.k.length;\n for (i = 0; i < len; i += 1) {\n data.ks.or.k[i].to = null;\n data.ks.or.k[i].ti = null;\n }\n }\n this.or = getProp(this, data.ks.or, 1, degToRads, this);\n this.or.sh = true;\n this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\n this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\n this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\n this.mat = new Matrix();\n this._prevMat = new Matrix();\n this._isFirstFrame = true;\n\n // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\n this.finalTransform = {\n mProp: this\n };\n }\n extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\n HCameraElement.prototype.setup = function () {\n var i;\n var len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n for (i = 0; i < len; i += 1) {\n // [perspectiveElem,container]\n comp = this.comp.threeDElements[i];\n if (comp.type === '3d') {\n perspectiveStyle = comp.perspectiveElem.style;\n containerStyle = comp.container.style;\n var perspective = this.pe.v + 'px';\n var origin = '0px 0px 0px';\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n perspectiveStyle.perspective = perspective;\n perspectiveStyle.webkitPerspective = perspective;\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n perspectiveStyle.transform = matrix;\n perspectiveStyle.webkitTransform = matrix;\n }\n }\n };\n HCameraElement.prototype.createElements = function () {};\n HCameraElement.prototype.hide = function () {};\n HCameraElement.prototype.renderFrame = function () {\n var _mdf = this._isFirstFrame;\n var i;\n var len;\n if (this.hierarchy) {\n len = this.hierarchy.length;\n for (i = 0; i < len; i += 1) {\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\n }\n }\n if (_mdf || this.pe._mdf || this.p && this.p._mdf || this.px && (this.px._mdf || this.py._mdf || this.pz._mdf) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || this.a && this.a._mdf) {\n this.mat.reset();\n if (this.hierarchy) {\n len = this.hierarchy.length - 1;\n for (i = len; i >= 0; i -= 1) {\n var mTransf = this.hierarchy[i].finalTransform.mProp;\n this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\n this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\n this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\n this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\n this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\n }\n }\n if (this.p) {\n this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\n } else {\n this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\n }\n if (this.a) {\n var diffVector;\n if (this.p) {\n diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\n } else {\n diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\n }\n var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2));\n // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\n var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\n var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\n var mRotationX = Math.atan2(lookDir[1], lookLengthOnXZ);\n var mRotationY = Math.atan2(lookDir[0], -lookDir[2]);\n this.mat.rotateY(mRotationY).rotateX(-mRotationX);\n }\n this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\n this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\n this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\n this.mat.translate(0, 0, this.pe.v);\n var hasMatrixChanged = !this._prevMat.equals(this.mat);\n if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\n len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n for (i = 0; i < len; i += 1) {\n comp = this.comp.threeDElements[i];\n if (comp.type === '3d') {\n if (hasMatrixChanged) {\n var matValue = this.mat.toCSS();\n containerStyle = comp.container.style;\n containerStyle.transform = matValue;\n containerStyle.webkitTransform = matValue;\n }\n if (this.pe._mdf) {\n perspectiveStyle = comp.perspectiveElem.style;\n perspectiveStyle.perspective = this.pe.v + 'px';\n perspectiveStyle.webkitPerspective = this.pe.v + 'px';\n }\n }\n }\n this.mat.clone(this._prevMat);\n }\n }\n this._isFirstFrame = false;\n };\n HCameraElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n HCameraElement.prototype.destroy = function () {};\n HCameraElement.prototype.getBaseElement = function () {\n return null;\n };\n\n function HImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.initElement(data, globalData, comp);\n }\n extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\n HImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n var img = new Image();\n if (this.data.hasMask) {\n this.imageElem = createNS('image');\n this.imageElem.setAttribute('width', this.assetData.w + 'px');\n this.imageElem.setAttribute('height', this.assetData.h + 'px');\n this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.imageElem);\n this.baseElement.setAttribute('width', this.assetData.w);\n this.baseElement.setAttribute('height', this.assetData.h);\n } else {\n this.layerElement.appendChild(img);\n }\n img.crossOrigin = 'anonymous';\n img.src = assetPath;\n if (this.data.ln) {\n this.baseElement.setAttribute('id', this.data.ln);\n }\n };\n\n function HybridRendererBase(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n }\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n extendPrototype([BaseRenderer], HybridRendererBase);\n HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\n HybridRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newDOMElement = element.getBaseElement();\n if (!newDOMElement) {\n return;\n }\n var layer = this.layers[pos];\n if (!layer.ddd || !this.supports3d) {\n if (this.threeDElements) {\n this.addTo3dContainer(newDOMElement, pos);\n } else {\n var i = 0;\n var nextDOMElement;\n var nextLayer;\n var tmpDOMElement;\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\n nextLayer = this.elements[i];\n tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\n nextDOMElement = tmpDOMElement || nextDOMElement;\n }\n i += 1;\n }\n if (nextDOMElement) {\n if (!layer.ddd || !this.supports3d) {\n this.layerElement.insertBefore(newDOMElement, nextDOMElement);\n }\n } else if (!layer.ddd || !this.supports3d) {\n this.layerElement.appendChild(newDOMElement);\n }\n }\n } else {\n this.addTo3dContainer(newDOMElement, pos);\n }\n };\n HybridRendererBase.prototype.createShape = function (data) {\n if (!this.supports3d) {\n return new SVGShapeElement(data, this.globalData, this);\n }\n return new HShapeElement(data, this.globalData, this);\n };\n HybridRendererBase.prototype.createText = function (data) {\n if (!this.supports3d) {\n return new SVGTextLottieElement(data, this.globalData, this);\n }\n return new HTextElement(data, this.globalData, this);\n };\n HybridRendererBase.prototype.createCamera = function (data) {\n this.camera = new HCameraElement(data, this.globalData, this);\n return this.camera;\n };\n HybridRendererBase.prototype.createImage = function (data) {\n if (!this.supports3d) {\n return new IImageElement(data, this.globalData, this);\n }\n return new HImageElement(data, this.globalData, this);\n };\n HybridRendererBase.prototype.createSolid = function (data) {\n if (!this.supports3d) {\n return new ISolidElement(data, this.globalData, this);\n }\n return new HSolidElement(data, this.globalData, this);\n };\n HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\n var i = 0;\n var len = this.threeDElements.length;\n while (i < len) {\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\n return this.threeDElements[i].perspectiveElem;\n }\n i += 1;\n }\n return null;\n };\n HybridRendererBase.prototype.createThreeDContainer = function (pos, type) {\n var perspectiveElem = createTag('div');\n var style;\n var containerStyle;\n styleDiv(perspectiveElem);\n var container = createTag('div');\n styleDiv(container);\n if (type === '3d') {\n style = perspectiveElem.style;\n style.width = this.globalData.compSize.w + 'px';\n style.height = this.globalData.compSize.h + 'px';\n var center = '50% 50%';\n style.webkitTransformOrigin = center;\n style.mozTransformOrigin = center;\n style.transformOrigin = center;\n containerStyle = container.style;\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n containerStyle.transform = matrix;\n containerStyle.webkitTransform = matrix;\n }\n perspectiveElem.appendChild(container);\n // this.resizerElem.appendChild(perspectiveElem);\n var threeDContainerData = {\n container: container,\n perspectiveElem: perspectiveElem,\n startPos: pos,\n endPos: pos,\n type: type\n };\n this.threeDElements.push(threeDContainerData);\n return threeDContainerData;\n };\n HybridRendererBase.prototype.build3dContainers = function () {\n var i;\n var len = this.layers.length;\n var lastThreeDContainerData;\n var currentContainer = '';\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ddd && this.layers[i].ty !== 3) {\n if (currentContainer !== '3d') {\n currentContainer = '3d';\n lastThreeDContainerData = this.createThreeDContainer(i, '3d');\n }\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n } else {\n if (currentContainer !== '2d') {\n currentContainer = '2d';\n lastThreeDContainerData = this.createThreeDContainer(i, '2d');\n }\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n }\n }\n len = this.threeDElements.length;\n for (i = len - 1; i >= 0; i -= 1) {\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\n }\n };\n HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\n var i = 0;\n var len = this.threeDElements.length;\n while (i < len) {\n if (pos <= this.threeDElements[i].endPos) {\n var j = this.threeDElements[i].startPos;\n var nextElement;\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n j += 1;\n }\n if (nextElement) {\n this.threeDElements[i].container.insertBefore(elem, nextElement);\n } else {\n this.threeDElements[i].container.appendChild(elem);\n }\n break;\n }\n i += 1;\n }\n };\n HybridRendererBase.prototype.configAnimation = function (animData) {\n var resizerElem = createTag('div');\n var wrapper = this.animationItem.wrapper;\n var style = resizerElem.style;\n style.width = animData.w + 'px';\n style.height = animData.h + 'px';\n this.resizerElem = resizerElem;\n styleDiv(resizerElem);\n style.transformStyle = 'flat';\n style.mozTransformStyle = 'flat';\n style.webkitTransformStyle = 'flat';\n if (this.renderConfig.className) {\n resizerElem.setAttribute('class', this.renderConfig.className);\n }\n wrapper.appendChild(resizerElem);\n style.overflow = 'hidden';\n var svg = createNS('svg');\n svg.setAttribute('width', '1');\n svg.setAttribute('height', '1');\n styleDiv(svg);\n this.resizerElem.appendChild(svg);\n var defs = createNS('defs');\n svg.appendChild(defs);\n this.data = animData;\n // Mask animation\n this.setupGlobalData(animData, svg);\n this.globalData.defs = defs;\n this.layers = animData.layers;\n this.layerElement = this.resizerElem;\n this.build3dContainers();\n this.updateContainerSize();\n };\n HybridRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n this.animationItem.container = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n HybridRendererBase.prototype.updateContainerSize = function () {\n var elementWidth = this.animationItem.wrapper.offsetWidth;\n var elementHeight = this.animationItem.wrapper.offsetHeight;\n var elementRel = elementWidth / elementHeight;\n var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\n var sx;\n var sy;\n var tx;\n var ty;\n if (animationRel > elementRel) {\n sx = elementWidth / this.globalData.compSize.w;\n sy = elementWidth / this.globalData.compSize.w;\n tx = 0;\n ty = (elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2;\n } else {\n sx = elementHeight / this.globalData.compSize.h;\n sy = elementHeight / this.globalData.compSize.h;\n tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\n ty = 0;\n }\n var style = this.resizerElem.style;\n style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\n style.transform = style.webkitTransform;\n };\n HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\n HybridRendererBase.prototype.hide = function () {\n this.resizerElem.style.display = 'none';\n };\n HybridRendererBase.prototype.show = function () {\n this.resizerElem.style.display = 'block';\n };\n HybridRendererBase.prototype.initItems = function () {\n this.buildAllItems();\n if (this.camera) {\n this.camera.setup();\n } else {\n var cWidth = this.globalData.compSize.w;\n var cHeight = this.globalData.compSize.h;\n var i;\n var len = this.threeDElements.length;\n for (i = 0; i < len; i += 1) {\n var style = this.threeDElements[i].perspectiveElem.style;\n style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\n style.perspective = style.webkitPerspective;\n }\n }\n };\n HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n var floatingContainer = createTag('div');\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n function HCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = !data.hasMask;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\n HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\n HCompElement.prototype.createContainerElements = function () {\n this._createBaseContainerElements();\n // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\n if (this.data.hasMask) {\n this.svgElement.setAttribute('width', this.data.w);\n this.svgElement.setAttribute('height', this.data.h);\n this.transformedElement = this.baseElement;\n } else {\n this.transformedElement = this.layerElement;\n }\n };\n HCompElement.prototype.addTo3dContainer = function (elem, pos) {\n var j = 0;\n var nextElement;\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n j += 1;\n }\n if (nextElement) {\n this.layerElement.insertBefore(elem, nextElement);\n } else {\n this.layerElement.appendChild(elem);\n }\n };\n HCompElement.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n return new HCompElement(data, this.globalData, this);\n };\n\n function HybridRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n },\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n extendPrototype([HybridRendererBase], HybridRenderer);\n HybridRenderer.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n return new HCompElement(data, this.globalData, this);\n };\n\n var CompExpressionInterface = function () {\n return function (comp) {\n function _thisLayerFunction(name) {\n var i = 0;\n var len = comp.layers.length;\n while (i < len) {\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\n return comp.elements[i].layerInterface;\n }\n i += 1;\n }\n return null;\n // return {active:false};\n }\n Object.defineProperty(_thisLayerFunction, '_name', {\n value: comp.data.nm\n });\n _thisLayerFunction.layer = _thisLayerFunction;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\n _thisLayerFunction.displayStartTime = 0;\n _thisLayerFunction.numLayers = comp.layers.length;\n return _thisLayerFunction;\n };\n }();\n\n function _typeof$2(o) { \"@babel/helpers - typeof\"; return _typeof$2 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$2(o); }\n /* eslint-disable */\n /*\n Copyright 2014 David Bau.\n\n Permission is hereby granted, free of charge, to any person obtaining\n a copy of this software and associated documentation files (the\n \"Software\"), to deal in the Software without restriction, including\n without limitation the rights to use, copy, modify, merge, publish,\n distribute, sublicense, and/or sell copies of the Software, and to\n permit persons to whom the Software is furnished to do so, subject to\n the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n */\n\n function seedRandom(pool, math) {\n //\n // The following constants are related to IEEE 754 limits.\n //\n var global = this,\n width = 256,\n // each RC4 output is 0 <= x < 256\n chunks = 6,\n // at least six RC4 outputs for each double\n digits = 52,\n // there are 52 significant digits in a double\n rngname = 'random',\n // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n //\n // seedrandom()\n // This is the seedrandom function described above.\n //\n function seedrandom(seed, options, callback) {\n var key = [];\n options = options === true ? {\n entropy: true\n } : options || {};\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function prng() {\n var n = arc4.g(chunks),\n // Start with a numerator n < 2 ^ 48\n d = startdenom,\n // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) {\n // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) {\n // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n prng.int32 = function () {\n return arc4.g(4) | 0;\n };\n prng.quick = function () {\n return arc4.g(4) / 0x100000000;\n };\n prng[\"double\"] = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback || function (prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) {\n copy(state, arc4);\n }\n // Only provide the .state method if requested via options.state.\n prng.state = function () {\n return copy(arc4, {});\n };\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) {\n math[rngname] = prng;\n return seed;\n }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(prng, shortseed, 'global' in options ? options.global : this == math, options.state);\n }\n math['seed' + rngname] = seedrandom;\n\n //\n // ARC4\n //\n // An ARC4 implementation. The constructor takes a key in the form of\n // an array of at most (width) integers that should be 0 <= x < (width).\n //\n // The g(count) method returns a pseudorandom integer that concatenates\n // the next (count) outputs from ARC4. Its return value is a number x\n // that is in the range 0 <= x < (width ^ count).\n //\n function ARC4(key) {\n var t,\n keylen = key.length,\n me = this,\n i = 0,\n j = me.i = me.j = 0,\n s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) {\n key = [keylen++];\n }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n me.g = function (count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t,\n r = 0,\n i = me.i,\n j = me.j,\n s = me.S;\n while (count--) {\n t = s[i = mask & i + 1];\n r = r * width + s[mask & (s[i] = s[j = mask & j + t]) + (s[j] = t)];\n }\n me.i = i;\n me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n };\n }\n\n //\n // copy()\n // Copies internal state of ARC4 to or from a plain object.\n //\n function copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n }\n\n //\n // flatten()\n // Converts an object tree to nested arrays of strings.\n //\n function flatten(obj, depth) {\n var result = [],\n typ = _typeof$2(obj),\n prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try {\n result.push(flatten(obj[prop], depth - 1));\n } catch (e) {}\n }\n }\n return result.length ? result : typ == 'string' ? obj : obj + '\\0';\n }\n\n //\n // mixkey()\n // Mixes a string seed into a key that is an array of integers, and\n // returns a shortened string seed that is equivalent to the result key.\n //\n function mixkey(seed, key) {\n var stringseed = seed + '',\n smear,\n j = 0;\n while (j < stringseed.length) {\n key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\n }\n return tostring(key);\n }\n\n //\n // autoseed()\n // Returns an object for autoseeding, using window.crypto and Node crypto\n // module if available.\n //\n function autoseed() {\n try {\n if (nodecrypto) {\n return tostring(nodecrypto.randomBytes(width));\n }\n var out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\n }\n }\n\n //\n // tostring()\n // Converts an array of charcodes to a string\n //\n function tostring(a) {\n return String.fromCharCode.apply(0, a);\n }\n\n //\n // When seedrandom.js is loaded, we immediately mix a few bits\n // from the built-in RNG into the entropy pool. Because we do\n // not want to interfere with deterministic PRNG state later,\n // seedrandom will not call math.random on its own again after\n // initialization.\n //\n mixkey(math.random(), pool);\n\n //\n // Nodejs and AMD support: export the implementation as a module using\n // either convention.\n //\n\n // End anonymous scope, and pass initial values.\n }\n ;\n function initialize$2(BMMath) {\n seedRandom([], BMMath);\n }\n\n var propTypes = {\n SHAPE: 'shape'\n };\n\n function _typeof$1(o) { \"@babel/helpers - typeof\"; return _typeof$1 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$1(o); }\n var ExpressionManager = function () {\n 'use strict';\n\n var ob = {};\n var Math = BMMath;\n var window = null;\n var document = null;\n var XMLHttpRequest = null;\n var fetch = null;\n var frames = null;\n var _lottieGlobal = {};\n initialize$2(BMMath);\n function resetFrame() {\n _lottieGlobal = {};\n }\n function $bm_isInstanceOfArray(arr) {\n return arr.constructor === Array || arr.constructor === Float32Array;\n }\n function isNumerable(tOfV, v) {\n return tOfV === 'number' || v instanceof Number || tOfV === 'boolean' || tOfV === 'string';\n }\n function $bm_neg(a) {\n var tOfA = _typeof$1(a);\n if (tOfA === 'number' || a instanceof Number || tOfA === 'boolean') {\n return -a;\n }\n if ($bm_isInstanceOfArray(a)) {\n var i;\n var lenA = a.length;\n var retArr = [];\n for (i = 0; i < lenA; i += 1) {\n retArr[i] = -a[i];\n }\n return retArr;\n }\n if (a.propType) {\n return a.v;\n }\n return -a;\n }\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\n function sum(a, b) {\n var tOfA = _typeof$1(a);\n var tOfB = _typeof$1(b);\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b) || tOfA === 'string' || tOfB === 'string') {\n return a + b;\n }\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] += b;\n return a;\n }\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a + b[0];\n return b;\n }\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] + b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n i += 1;\n }\n return retArr;\n }\n return 0;\n }\n var add = sum;\n function sub(a, b) {\n var tOfA = _typeof$1(a);\n var tOfB = _typeof$1(b);\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n if (tOfA === 'string') {\n a = parseInt(a, 10);\n }\n if (tOfB === 'string') {\n b = parseInt(b, 10);\n }\n return a - b;\n }\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] -= b;\n return a;\n }\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a - b[0];\n return b;\n }\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] - b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n i += 1;\n }\n return retArr;\n }\n return 0;\n }\n function mul(a, b) {\n var tOfA = _typeof$1(a);\n var tOfB = _typeof$1(b);\n var arr;\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a * b;\n }\n var i;\n var len;\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] * b;\n }\n return arr;\n }\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n for (i = 0; i < len; i += 1) {\n arr[i] = a * b[i];\n }\n return arr;\n }\n return 0;\n }\n function div(a, b) {\n var tOfA = _typeof$1(a);\n var tOfB = _typeof$1(b);\n var arr;\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a / b;\n }\n var i;\n var len;\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] / b;\n }\n return arr;\n }\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n for (i = 0; i < len; i += 1) {\n arr[i] = a / b[i];\n }\n return arr;\n }\n return 0;\n }\n function mod(a, b) {\n if (typeof a === 'string') {\n a = parseInt(a, 10);\n }\n if (typeof b === 'string') {\n b = parseInt(b, 10);\n }\n return a % b;\n }\n var $bm_sum = sum;\n var $bm_sub = sub;\n var $bm_mul = mul;\n var $bm_div = div;\n var $bm_mod = mod;\n function clamp(num, min, max) {\n if (min > max) {\n var mm = max;\n max = min;\n min = mm;\n }\n return Math.min(Math.max(num, min), max);\n }\n function radiansToDegrees(val) {\n return val / degToRads;\n }\n var radians_to_degrees = radiansToDegrees;\n function degreesToRadians(val) {\n return val * degToRads;\n }\n var degrees_to_radians = radiansToDegrees;\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\n function length(arr1, arr2) {\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\n arr2 = arr2 || 0;\n return Math.abs(arr1 - arr2);\n }\n if (!arr2) {\n arr2 = helperLengthArray;\n }\n var i;\n var len = Math.min(arr1.length, arr2.length);\n var addedLength = 0;\n for (i = 0; i < len; i += 1) {\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\n }\n return Math.sqrt(addedLength);\n }\n function normalize(vec) {\n return div(vec, length(vec));\n }\n function rgbToHsl(val) {\n var r = val[0];\n var g = val[1];\n var b = val[2];\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var s;\n var l = (max + min) / 2;\n if (max === min) {\n h = 0; // achromatic\n s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n return [h, s, l, val[3]];\n }\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n function hslToRgb(val) {\n var h = val[0];\n var s = val[1];\n var l = val[2];\n var r;\n var g;\n var b;\n if (s === 0) {\n r = l; // achromatic\n b = l; // achromatic\n g = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return [r, g, b, val[3]];\n }\n function linear(t, tMin, tMax, value1, value2) {\n if (value1 === undefined || value2 === undefined) {\n value1 = tMin;\n value2 = tMax;\n tMin = 0;\n tMax = 1;\n }\n if (tMax < tMin) {\n var _tMin = tMax;\n tMax = tMin;\n tMin = _tMin;\n }\n if (t <= tMin) {\n return value1;\n }\n if (t >= tMax) {\n return value2;\n }\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\n if (!value1.length) {\n return value1 + (value2 - value1) * perc;\n }\n var i;\n var len = value1.length;\n var arr = createTypedArray('float32', len);\n for (i = 0; i < len; i += 1) {\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\n }\n return arr;\n }\n function random(min, max) {\n if (max === undefined) {\n if (min === undefined) {\n min = 0;\n max = 1;\n } else {\n max = min;\n min = undefined;\n }\n }\n if (max.length) {\n var i;\n var len = max.length;\n if (!min) {\n min = createTypedArray('float32', len);\n }\n var arr = createTypedArray('float32', len);\n var rnd = BMMath.random();\n for (i = 0; i < len; i += 1) {\n arr[i] = min[i] + rnd * (max[i] - min[i]);\n }\n return arr;\n }\n if (min === undefined) {\n min = 0;\n }\n var rndm = BMMath.random();\n return min + rndm * (max - min);\n }\n function createPath(points, inTangents, outTangents, closed) {\n var i;\n var len = points.length;\n var path = shapePool.newElement();\n path.setPathData(!!closed, len);\n var arrPlaceholder = [0, 0];\n var inVertexPoint;\n var outVertexPoint;\n for (i = 0; i < len; i += 1) {\n inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder;\n outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder;\n path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\n }\n return path;\n }\n function initiateExpression(elem, data, property) {\n // Bail out if we don't want expressions\n function noOp(_value) {\n return _value;\n }\n if (!elem.globalData.renderConfig.runExpressions) {\n return noOp;\n }\n var val = data.x;\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\n var _needsRandom = val.indexOf('random') !== -1;\n var elemType = elem.data.ty;\n var transform;\n var $bm_transform;\n var content;\n var effect;\n var thisProperty = property;\n thisProperty._name = elem.data.nm;\n thisProperty.valueAtTime = thisProperty.getValueAtTime;\n Object.defineProperty(thisProperty, 'value', {\n get: function get() {\n return thisProperty.v;\n }\n });\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\n elem.comp.displayStartTime = 0;\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n var outPoint = elem.data.op / elem.comp.globalData.frameRate;\n var width = elem.data.sw ? elem.data.sw : 0;\n var height = elem.data.sh ? elem.data.sh : 0;\n var name = elem.data.nm;\n var loopIn;\n var loop_in;\n var loopOut;\n var loop_out;\n var smooth;\n var toWorld;\n var fromWorld;\n var fromComp;\n var toComp;\n var fromCompToSurface;\n var position;\n var rotation;\n var anchorPoint;\n var scale;\n var thisLayer;\n var thisComp;\n var mask;\n var valueAtTime;\n var velocityAtTime;\n var scoped_bm_rt;\n // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\n var numKeys = property.kf ? data.k.length : 0;\n var active = !this.data || this.data.hd !== true;\n var wiggle = function wiggle(freq, amp) {\n var iWiggle;\n var j;\n var lenWiggle = this.pv.length ? this.pv.length : 1;\n var addedAmps = createTypedArray('float32', lenWiggle);\n freq = 5;\n var iterations = Math.floor(time * freq);\n iWiggle = 0;\n j = 0;\n while (iWiggle < iterations) {\n // var rnd = BMMath.random();\n for (j = 0; j < lenWiggle; j += 1) {\n addedAmps[j] += -amp + amp * 2 * BMMath.random();\n // addedAmps[j] += -amp + amp*2*rnd;\n }\n iWiggle += 1;\n }\n // var rnd2 = BMMath.random();\n var periods = time * freq;\n var perc = periods - Math.floor(periods);\n var arr = createTypedArray('float32', lenWiggle);\n if (lenWiggle > 1) {\n for (j = 0; j < lenWiggle; j += 1) {\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc;\n // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\n }\n return arr;\n }\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\n }.bind(this);\n if (thisProperty.loopIn) {\n loopIn = thisProperty.loopIn.bind(thisProperty);\n loop_in = loopIn;\n }\n if (thisProperty.loopOut) {\n loopOut = thisProperty.loopOut.bind(thisProperty);\n loop_out = loopOut;\n }\n if (thisProperty.smooth) {\n smooth = thisProperty.smooth.bind(thisProperty);\n }\n function loopInDuration(type, duration) {\n return loopIn(type, duration, true);\n }\n function loopOutDuration(type, duration) {\n return loopOut(type, duration, true);\n }\n if (this.getValueAtTime) {\n valueAtTime = this.getValueAtTime.bind(this);\n }\n if (this.getVelocityAtTime) {\n velocityAtTime = this.getVelocityAtTime.bind(this);\n }\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\n function lookAt(elem1, elem2) {\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\n return [yaw, pitch, 0];\n }\n function easeOut(t, tMin, tMax, val1, val2) {\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\n }\n function easeIn(t, tMin, tMax, val1, val2) {\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\n }\n function ease(t, tMin, tMax, val1, val2) {\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\n }\n function applyEase(fn, t, tMin, tMax, val1, val2) {\n if (val1 === undefined) {\n val1 = tMin;\n val2 = tMax;\n } else {\n t = (t - tMin) / (tMax - tMin);\n }\n if (t > 1) {\n t = 1;\n } else if (t < 0) {\n t = 0;\n }\n var mult = fn(t);\n if ($bm_isInstanceOfArray(val1)) {\n var iKey;\n var lenKey = val1.length;\n var arr = createTypedArray('float32', lenKey);\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\n }\n return arr;\n }\n return (val2 - val1) * mult + val1;\n }\n function nearestKey(time) {\n var iKey;\n var lenKey = data.k.length;\n var index;\n var keyTime;\n if (!data.k.length || typeof data.k[0] === 'number') {\n index = 0;\n keyTime = 0;\n } else {\n index = -1;\n time *= elem.comp.globalData.frameRate;\n if (time < data.k[0].t) {\n index = 1;\n keyTime = data.k[0].t;\n } else {\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\n if (time === data.k[iKey].t) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n break;\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\n index = iKey + 2;\n keyTime = data.k[iKey + 1].t;\n } else {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n break;\n }\n }\n if (index === -1) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n }\n }\n var obKey = {};\n obKey.index = index;\n obKey.time = keyTime / elem.comp.globalData.frameRate;\n return obKey;\n }\n function key(ind) {\n var obKey;\n var iKey;\n var lenKey;\n if (!data.k.length || typeof data.k[0] === 'number') {\n throw new Error('The property has no keyframe at index ' + ind);\n }\n ind -= 1;\n obKey = {\n time: data.k[ind].t / elem.comp.globalData.frameRate,\n value: []\n };\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\n lenKey = arr.length;\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n obKey[iKey] = arr[iKey];\n obKey.value[iKey] = arr[iKey];\n }\n return obKey;\n }\n function framesToTime(fr, fps) {\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n return fr / fps;\n }\n function timeToFrames(t, fps) {\n if (!t && t !== 0) {\n t = time;\n }\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n return t * fps;\n }\n function seedRandom(seed) {\n BMMath.seedrandom(randSeed + seed);\n }\n function sourceRectAtTime() {\n return elem.sourceRectAtTime();\n }\n function substring(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substring(init);\n }\n return value.substring(init, end);\n }\n return '';\n }\n function substr(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substr(init);\n }\n return value.substr(init, end);\n }\n return '';\n }\n function posterizeTime(framesPerSecond) {\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\n value = valueAtTime(time);\n }\n var time;\n var velocity;\n var value;\n var text;\n var textIndex;\n var textTotal;\n var selectorValue;\n var index = elem.data.ind;\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n var parent;\n var randSeed = Math.floor(Math.random() * 1000000);\n var globalData = elem.globalData;\n function executeExpression(_value) {\n // globalData.pushExpression();\n value = _value;\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n return value;\n }\n if (this.propType === 'textSelector') {\n textIndex = this.textIndex;\n textTotal = this.textTotal;\n selectorValue = this.selectorValue;\n }\n if (!thisLayer) {\n text = elem.layerInterface.text;\n thisLayer = elem.layerInterface;\n thisComp = elem.comp.compInterface;\n toWorld = thisLayer.toWorld.bind(thisLayer);\n fromWorld = thisLayer.fromWorld.bind(thisLayer);\n fromComp = thisLayer.fromComp.bind(thisLayer);\n toComp = thisLayer.toComp.bind(thisLayer);\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\n fromCompToSurface = fromComp;\n }\n if (!transform) {\n transform = elem.layerInterface('ADBE Transform Group');\n $bm_transform = transform;\n if (transform) {\n anchorPoint = transform.anchorPoint;\n /* position = transform.position;\n rotation = transform.rotation;\n scale = transform.scale; */\n }\n }\n if (elemType === 4 && !content) {\n content = thisLayer('ADBE Root Vectors Group');\n }\n if (!effect) {\n effect = thisLayer(4);\n }\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n if (hasParent && !parent) {\n parent = elem.hierarchy[0].layerInterface;\n }\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\n if (_needsRandom) {\n seedRandom(randSeed + time);\n }\n if (needsVelocity) {\n velocity = velocityAtTime(time);\n }\n expression_function();\n this.frameExpressionId = elem.globalData.frameId;\n\n // TODO: Check if it's possible to return on ShapeInterface the .v value\n // Changed this to a ternary operation because Rollup failed compiling it correctly\n scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\n return scoped_bm_rt;\n }\n // Bundlers will see these as dead code and unless we reference them\n executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData];\n return executeExpression;\n }\n ob.initiateExpression = initiateExpression;\n ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath, _lottieGlobal];\n ob.resetFrame = resetFrame;\n return ob;\n }();\n\n var Expressions = function () {\n var ob = {};\n ob.initExpressions = initExpressions;\n ob.resetFrame = ExpressionManager.resetFrame;\n function initExpressions(animation) {\n var stackCount = 0;\n var registers = [];\n function pushExpression() {\n stackCount += 1;\n }\n function popExpression() {\n stackCount -= 1;\n if (stackCount === 0) {\n releaseInstances();\n }\n }\n function registerExpressionProperty(expression) {\n if (registers.indexOf(expression) === -1) {\n registers.push(expression);\n }\n }\n function releaseInstances() {\n var i;\n var len = registers.length;\n for (i = 0; i < len; i += 1) {\n registers[i].release();\n }\n registers.length = 0;\n }\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\n animation.renderer.globalData.pushExpression = pushExpression;\n animation.renderer.globalData.popExpression = popExpression;\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\n }\n return ob;\n }();\n\n var MaskManagerInterface = function () {\n function MaskInterface(mask, data) {\n this._mask = mask;\n this._data = data;\n }\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n get: function get() {\n if (this._mask.prop.k) {\n this._mask.prop.getValue();\n }\n return this._mask.prop;\n }\n });\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\n get: function get() {\n if (this._mask.op.k) {\n this._mask.op.getValue();\n }\n return this._mask.op.v * 100;\n }\n });\n var MaskManager = function MaskManager(maskManager) {\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\n var i;\n var len = maskManager.viewData.length;\n for (i = 0; i < len; i += 1) {\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\n }\n var maskFunction = function maskFunction(name) {\n i = 0;\n while (i < len) {\n if (maskManager.masksProperties[i].nm === name) {\n return _masksInterfaces[i];\n }\n i += 1;\n }\n return null;\n };\n return maskFunction;\n };\n return MaskManager;\n }();\n\n var ExpressionPropertyInterface = function () {\n var defaultUnidimensionalValue = {\n pv: 0,\n v: 0,\n mult: 1\n };\n var defaultMultidimensionalValue = {\n pv: [0, 0, 0],\n v: [0, 0, 0],\n mult: 1\n };\n function completeProperty(expressionValue, property, type) {\n Object.defineProperty(expressionValue, 'velocity', {\n get: function get() {\n return property.getVelocityAtTime(property.comp.currentFrame);\n }\n });\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\n expressionValue.key = function (pos) {\n if (!expressionValue.numKeys) {\n return 0;\n }\n var value = '';\n if ('s' in property.keyframes[pos - 1]) {\n value = property.keyframes[pos - 1].s;\n } else if ('e' in property.keyframes[pos - 2]) {\n value = property.keyframes[pos - 2].e;\n } else {\n value = property.keyframes[pos - 2].s;\n }\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\n valueProp.value = type === 'unidimensional' ? value[0] : value;\n return valueProp;\n };\n expressionValue.valueAtTime = property.getValueAtTime;\n expressionValue.speedAtTime = property.getSpeedAtTime;\n expressionValue.velocityAtTime = property.getVelocityAtTime;\n expressionValue.propertyGroup = property.propertyGroup;\n }\n function UnidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultUnidimensionalValue;\n }\n var mult = 1 / property.mult;\n var val = property.pv * mult;\n var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n val = property.v * mult;\n if (expressionValue.value !== val) {\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n expressionValue.value = val;\n expressionValue[0] = val;\n completeProperty(expressionValue, property, 'unidimensional');\n }\n return expressionValue;\n };\n }\n function MultidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultMultidimensionalValue;\n }\n var mult = 1 / property.mult;\n var len = property.data && property.data.l || property.pv.length;\n var expressionValue = createTypedArray('float32', len);\n var arrValue = createTypedArray('float32', len);\n expressionValue.value = arrValue;\n completeProperty(expressionValue, property, 'multidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n for (var i = 0; i < len; i += 1) {\n arrValue[i] = property.v[i] * mult;\n expressionValue[i] = arrValue[i];\n }\n return expressionValue;\n };\n }\n\n // TODO: try to avoid using this getter\n function defaultGetter() {\n return defaultUnidimensionalValue;\n }\n return function (property) {\n if (!property) {\n return defaultGetter;\n }\n if (property.propType === 'unidimensional') {\n return UnidimensionalPropertyInterface(property);\n }\n return MultidimensionalPropertyInterface(property);\n };\n }();\n\n var TransformExpressionInterface = function () {\n return function (transform) {\n function _thisFunction(name) {\n switch (name) {\n case 'scale':\n case 'Scale':\n case 'ADBE Scale':\n case 6:\n return _thisFunction.scale;\n case 'rotation':\n case 'Rotation':\n case 'ADBE Rotation':\n case 'ADBE Rotate Z':\n case 10:\n return _thisFunction.rotation;\n case 'ADBE Rotate X':\n return _thisFunction.xRotation;\n case 'ADBE Rotate Y':\n return _thisFunction.yRotation;\n case 'position':\n case 'Position':\n case 'ADBE Position':\n case 2:\n return _thisFunction.position;\n case 'ADBE Position_0':\n return _thisFunction.xPosition;\n case 'ADBE Position_1':\n return _thisFunction.yPosition;\n case 'ADBE Position_2':\n return _thisFunction.zPosition;\n case 'anchorPoint':\n case 'AnchorPoint':\n case 'Anchor Point':\n case 'ADBE AnchorPoint':\n case 1:\n return _thisFunction.anchorPoint;\n case 'opacity':\n case 'Opacity':\n case 11:\n return _thisFunction.opacity;\n default:\n return null;\n }\n }\n Object.defineProperty(_thisFunction, 'rotation', {\n get: ExpressionPropertyInterface(transform.r || transform.rz)\n });\n Object.defineProperty(_thisFunction, 'zRotation', {\n get: ExpressionPropertyInterface(transform.rz || transform.r)\n });\n Object.defineProperty(_thisFunction, 'xRotation', {\n get: ExpressionPropertyInterface(transform.rx)\n });\n Object.defineProperty(_thisFunction, 'yRotation', {\n get: ExpressionPropertyInterface(transform.ry)\n });\n Object.defineProperty(_thisFunction, 'scale', {\n get: ExpressionPropertyInterface(transform.s)\n });\n var _px;\n var _py;\n var _pz;\n var _transformFactory;\n if (transform.p) {\n _transformFactory = ExpressionPropertyInterface(transform.p);\n } else {\n _px = ExpressionPropertyInterface(transform.px);\n _py = ExpressionPropertyInterface(transform.py);\n if (transform.pz) {\n _pz = ExpressionPropertyInterface(transform.pz);\n }\n }\n Object.defineProperty(_thisFunction, 'position', {\n get: function get() {\n if (transform.p) {\n return _transformFactory();\n }\n return [_px(), _py(), _pz ? _pz() : 0];\n }\n });\n Object.defineProperty(_thisFunction, 'xPosition', {\n get: ExpressionPropertyInterface(transform.px)\n });\n Object.defineProperty(_thisFunction, 'yPosition', {\n get: ExpressionPropertyInterface(transform.py)\n });\n Object.defineProperty(_thisFunction, 'zPosition', {\n get: ExpressionPropertyInterface(transform.pz)\n });\n Object.defineProperty(_thisFunction, 'anchorPoint', {\n get: ExpressionPropertyInterface(transform.a)\n });\n Object.defineProperty(_thisFunction, 'opacity', {\n get: ExpressionPropertyInterface(transform.o)\n });\n Object.defineProperty(_thisFunction, 'skew', {\n get: ExpressionPropertyInterface(transform.sk)\n });\n Object.defineProperty(_thisFunction, 'skewAxis', {\n get: ExpressionPropertyInterface(transform.sa)\n });\n Object.defineProperty(_thisFunction, 'orientation', {\n get: ExpressionPropertyInterface(transform.or)\n });\n return _thisFunction;\n };\n }();\n\n var LayerExpressionInterface = function () {\n function getMatrix(time) {\n var toWorldMat = new Matrix();\n if (time !== undefined) {\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\n propMatrix.clone(toWorldMat);\n } else {\n var transformMat = this._elem.finalTransform.mProp;\n transformMat.applyToMatrix(toWorldMat);\n }\n return toWorldMat;\n }\n function toWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.applyPoint(toWorldMat, arr);\n }\n function toWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.applyPoint(toWorldMat, arr);\n }\n function fromWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.invertPoint(toWorldMat, arr);\n }\n function fromWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.invertPoint(toWorldMat, arr);\n }\n function applyPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\n }\n function invertPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n return matrix.inversePoint(arr);\n }\n function fromComp(arr) {\n var toWorldMat = new Matrix();\n toWorldMat.reset();\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\n }\n return toWorldMat.inversePoint(arr);\n }\n return toWorldMat.inversePoint(arr);\n }\n function sampleImage() {\n return [1, 1, 1, 1];\n }\n return function (elem) {\n var transformInterface;\n function _registerMaskInterface(maskManager) {\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\n }\n function _registerEffectsInterface(effects) {\n _thisLayerFunction.effect = effects;\n }\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Root Vectors Group':\n case 'Contents':\n case 2:\n return _thisLayerFunction.shapeInterface;\n case 1:\n case 6:\n case 'Transform':\n case 'transform':\n case 'ADBE Transform Group':\n return transformInterface;\n case 4:\n case 'ADBE Effect Parade':\n case 'effects':\n case 'Effects':\n return _thisLayerFunction.effect;\n case 'ADBE Text Properties':\n return _thisLayerFunction.textInterface;\n default:\n return null;\n }\n }\n _thisLayerFunction.getMatrix = getMatrix;\n _thisLayerFunction.invertPoint = invertPoint;\n _thisLayerFunction.applyPoint = applyPoint;\n _thisLayerFunction.toWorld = toWorld;\n _thisLayerFunction.toWorldVec = toWorldVec;\n _thisLayerFunction.fromWorld = fromWorld;\n _thisLayerFunction.fromWorldVec = fromWorldVec;\n _thisLayerFunction.toComp = toWorld;\n _thisLayerFunction.fromComp = fromComp;\n _thisLayerFunction.sampleImage = sampleImage;\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\n _thisLayerFunction._elem = elem;\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\n Object.defineProperties(_thisLayerFunction, {\n hasParent: {\n get: function get() {\n return elem.hierarchy.length;\n }\n },\n parent: {\n get: function get() {\n return elem.hierarchy[0].layerInterface;\n }\n },\n rotation: getDescriptor(transformInterface, 'rotation'),\n scale: getDescriptor(transformInterface, 'scale'),\n position: getDescriptor(transformInterface, 'position'),\n opacity: getDescriptor(transformInterface, 'opacity'),\n anchorPoint: anchorPointDescriptor,\n anchor_point: anchorPointDescriptor,\n transform: {\n get: function get() {\n return transformInterface;\n }\n },\n active: {\n get: function get() {\n return elem.isInRange;\n }\n }\n });\n _thisLayerFunction.startTime = elem.data.st;\n _thisLayerFunction.index = elem.data.ind;\n _thisLayerFunction.source = elem.data.refId;\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\n _thisLayerFunction._name = elem.data.nm;\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\n return _thisLayerFunction;\n };\n }();\n\n var propertyGroupFactory = function () {\n return function (interfaceFunction, parentPropertyGroup) {\n return function (val) {\n val = val === undefined ? 1 : val;\n if (val <= 0) {\n return interfaceFunction;\n }\n return parentPropertyGroup(val - 1);\n };\n };\n }();\n\n var PropertyInterface = function () {\n return function (propertyName, propertyGroup) {\n var interfaceFunction = {\n _name: propertyName\n };\n function _propertyGroup(val) {\n val = val === undefined ? 1 : val;\n if (val <= 0) {\n return interfaceFunction;\n }\n return propertyGroup(val - 1);\n }\n return _propertyGroup;\n };\n }();\n\n var EffectsExpressionInterface = function () {\n var ob = {\n createEffectsInterface: createEffectsInterface\n };\n function createEffectsInterface(elem, propertyGroup) {\n if (elem.effectsManager) {\n var effectElements = [];\n var effectsData = elem.data.ef;\n var i;\n var len = elem.effectsManager.effectElements.length;\n for (i = 0; i < len; i += 1) {\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\n }\n var effects = elem.data.ef || [];\n var groupInterface = function groupInterface(name) {\n i = 0;\n len = effects.length;\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n return effectElements[i];\n }\n i += 1;\n }\n return null;\n };\n Object.defineProperty(groupInterface, 'numProperties', {\n get: function get() {\n return effects.length;\n }\n });\n return groupInterface;\n }\n return null;\n }\n function createGroupInterface(data, elements, propertyGroup, elem) {\n function groupInterface(name) {\n var effects = data.ef;\n var i = 0;\n var len = effects.length;\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n if (effects[i].ty === 5) {\n return effectElements[i];\n }\n return effectElements[i]();\n }\n i += 1;\n }\n throw new Error();\n }\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\n var effectElements = [];\n var i;\n var len = data.ef.length;\n for (i = 0; i < len; i += 1) {\n if (data.ef[i].ty === 5) {\n effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\n } else {\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\n }\n }\n if (data.mn === 'ADBE Color Control') {\n Object.defineProperty(groupInterface, 'color', {\n get: function get() {\n return effectElements[0]();\n }\n });\n }\n Object.defineProperties(groupInterface, {\n numProperties: {\n get: function get() {\n return data.np;\n }\n },\n _name: {\n value: data.nm\n },\n propertyGroup: {\n value: _propertyGroup\n }\n });\n groupInterface.enabled = data.en !== 0;\n groupInterface.active = groupInterface.enabled;\n return groupInterface;\n }\n function createValueInterface(element, type, elem, propertyGroup) {\n var expressionProperty = ExpressionPropertyInterface(element.p);\n function interfaceFunction() {\n if (type === 10) {\n return elem.comp.compInterface(element.p.v);\n }\n return expressionProperty();\n }\n if (element.p.setGroupProperty) {\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\n }\n return interfaceFunction;\n }\n return ob;\n }();\n\n var ShapePathInterface = function () {\n return function pathInterfaceFactory(shape, view, propertyGroup) {\n var prop = view.sh;\n function interfaceFunction(val) {\n if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\n return interfaceFunction.path;\n }\n return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n path: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n return prop;\n }\n },\n shape: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n return prop;\n }\n },\n _name: {\n value: shape.nm\n },\n ix: {\n value: shape.ix\n },\n propertyIndex: {\n value: shape.ix\n },\n mn: {\n value: shape.mn\n },\n propertyGroup: {\n value: propertyGroup\n }\n });\n return interfaceFunction;\n };\n }();\n\n var ShapeExpressionInterface = function () {\n function iterateElements(shapes, view, propertyGroup) {\n var arr = [];\n var i;\n var len = shapes ? shapes.length : 0;\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'fl') {\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'st') {\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tm') {\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tr') {\n // arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\n } else if (shapes[i].ty === 'el') {\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sr') {\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sh') {\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rc') {\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rd') {\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rp') {\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'gf') {\n arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else {\n arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\n }\n }\n return arr;\n }\n function contentsInterfaceFactory(shape, view, propertyGroup) {\n var interfaces;\n var interfaceFunction = function _interfaceFunction(value) {\n var i = 0;\n var len = interfaces.length;\n while (i < len) {\n if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\n return interfaces[i];\n }\n i += 1;\n }\n if (typeof value === 'number') {\n return interfaces[value - 1];\n }\n return null;\n };\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\n interfaceFunction.numProperties = interfaces.length;\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.transform = transformInterface;\n interfaceFunction.propertyIndex = shape.cix;\n interfaceFunction._name = shape.nm;\n return interfaceFunction;\n }\n function groupInterfaceFactory(shape, view, propertyGroup) {\n var interfaceFunction = function _interfaceFunction(value) {\n switch (value) {\n case 'ADBE Vectors Group':\n case 'Contents':\n case 2:\n return interfaceFunction.content;\n // Not necessary for now. Keeping them here in case a new case appears\n // case 'ADBE Vector Transform Group':\n // case 3:\n default:\n return interfaceFunction.transform;\n }\n };\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.content = content;\n interfaceFunction.transform = transformInterface;\n Object.defineProperty(interfaceFunction, '_name', {\n get: function get() {\n return shape.nm;\n }\n });\n // interfaceFunction.content = interfaceFunction;\n interfaceFunction.numProperties = shape.np;\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.nm = shape.nm;\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n function fillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n return null;\n }\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Start Point' || val === 'start point') {\n return interfaceFunction.startPoint;\n }\n if (val === 'End Point' || val === 'end point') {\n return interfaceFunction.endPoint;\n }\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n return null;\n }\n Object.defineProperties(interfaceFunction, {\n startPoint: {\n get: ExpressionPropertyInterface(view.s)\n },\n endPoint: {\n get: ExpressionPropertyInterface(view.e)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n type: {\n get: function get() {\n return 'a';\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n function defaultInterfaceFactory() {\n function interfaceFunction() {\n return null;\n }\n return interfaceFunction;\n }\n function strokeInterfaceFactory(shape, view, propertyGroup) {\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\n function addPropertyToDashOb(i) {\n Object.defineProperty(dashOb, shape.d[i].nm, {\n get: ExpressionPropertyInterface(view.d.dataProps[i].p)\n });\n }\n var i;\n var len = shape.d ? shape.d.length : 0;\n var dashOb = {};\n for (i = 0; i < len; i += 1) {\n addPropertyToDashOb(i);\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\n }\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n if (val === 'Stroke Width' || val === 'stroke width') {\n return interfaceFunction.strokeWidth;\n }\n return null;\n }\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n strokeWidth: {\n get: ExpressionPropertyInterface(view.w)\n },\n dash: {\n get: function get() {\n return dashOb;\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\n return interfaceFunction;\n }\n function trimInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === shape.e.ix || val === 'End' || val === 'end') {\n return interfaceFunction.end;\n }\n if (val === shape.s.ix) {\n return interfaceFunction.start;\n }\n if (val === shape.o.ix) {\n return interfaceFunction.offset;\n }\n return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n interfaceFunction.propertyIndex = shape.ix;\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.propertyGroup = propertyGroup;\n Object.defineProperties(interfaceFunction, {\n start: {\n get: ExpressionPropertyInterface(view.s)\n },\n end: {\n get: ExpressionPropertyInterface(view.e)\n },\n offset: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n function transformInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.a.ix === value || value === 'Anchor Point') {\n return interfaceFunction.anchorPoint;\n }\n if (shape.o.ix === value || value === 'Opacity') {\n return interfaceFunction.opacity;\n }\n if (shape.p.ix === value || value === 'Position') {\n return interfaceFunction.position;\n }\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n return interfaceFunction.rotation;\n }\n if (shape.s.ix === value || value === 'Scale') {\n return interfaceFunction.scale;\n }\n if (shape.sk && shape.sk.ix === value || value === 'Skew') {\n return interfaceFunction.skew;\n }\n if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\n return interfaceFunction.skewAxis;\n }\n return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n if (view.transform.mProps.sk) {\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\n }\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n opacity: {\n get: ExpressionPropertyInterface(view.transform.mProps.o)\n },\n position: {\n get: ExpressionPropertyInterface(view.transform.mProps.p)\n },\n anchorPoint: {\n get: ExpressionPropertyInterface(view.transform.mProps.a)\n },\n scale: {\n get: ExpressionPropertyInterface(view.transform.mProps.s)\n },\n rotation: {\n get: ExpressionPropertyInterface(view.transform.mProps.r)\n },\n skew: {\n get: ExpressionPropertyInterface(view.transform.mProps.sk)\n },\n skewAxis: {\n get: ExpressionPropertyInterface(view.transform.mProps.sa)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.ty = 'tr';\n interfaceFunction.mn = shape.mn;\n interfaceFunction.propertyGroup = propertyGroup;\n return interfaceFunction;\n }\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n if (shape.s.ix === value) {\n return interfaceFunction.size;\n }\n return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n interfaceFunction.propertyIndex = shape.ix;\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n function starInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n if (shape.r.ix === value) {\n return interfaceFunction.rotation;\n }\n if (shape.pt.ix === value) {\n return interfaceFunction.points;\n }\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n return interfaceFunction.outerRadius;\n }\n if (shape.os.ix === value) {\n return interfaceFunction.outerRoundness;\n }\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n return interfaceFunction.innerRadius;\n }\n if (shape.is && shape.is.ix === value) {\n return interfaceFunction.innerRoundness;\n }\n return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n if (shape.ir) {\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\n }\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n rotation: {\n get: ExpressionPropertyInterface(prop.r)\n },\n points: {\n get: ExpressionPropertyInterface(prop.pt)\n },\n outerRadius: {\n get: ExpressionPropertyInterface(prop.or)\n },\n outerRoundness: {\n get: ExpressionPropertyInterface(prop.os)\n },\n innerRadius: {\n get: ExpressionPropertyInterface(prop.ir)\n },\n innerRoundness: {\n get: ExpressionPropertyInterface(prop.is)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n function rectInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n if (shape.r.ix === value) {\n return interfaceFunction.roundness;\n }\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n return interfaceFunction.size;\n }\n return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n roundness: {\n get: ExpressionPropertyInterface(prop.r)\n },\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n function roundedInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.r.ix === value || value === 'Round Corners 1') {\n return interfaceFunction.radius;\n }\n return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n radius: {\n get: ExpressionPropertyInterface(prop.rd)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.c.ix === value || value === 'Copies') {\n return interfaceFunction.copies;\n }\n if (shape.o.ix === value || value === 'Offset') {\n return interfaceFunction.offset;\n }\n return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n copies: {\n get: ExpressionPropertyInterface(prop.c)\n },\n offset: {\n get: ExpressionPropertyInterface(prop.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n return function (shapes, view, propertyGroup) {\n var interfaces;\n function _interfaceFunction(value) {\n if (typeof value === 'number') {\n value = value === undefined ? 1 : value;\n if (value === 0) {\n return propertyGroup;\n }\n return interfaces[value - 1];\n }\n var i = 0;\n var len = interfaces.length;\n while (i < len) {\n if (interfaces[i]._name === value) {\n return interfaces[i];\n }\n i += 1;\n }\n return null;\n }\n function parentGroupWrapper() {\n return propertyGroup;\n }\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\n _interfaceFunction.numProperties = interfaces.length;\n _interfaceFunction._name = 'Contents';\n return _interfaceFunction;\n };\n }();\n\n var TextExpressionInterface = function () {\n return function (elem) {\n var _sourceText;\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Text Document':\n return _thisLayerFunction.sourceText;\n default:\n return null;\n }\n }\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\n get: function get() {\n elem.textProperty.getValue();\n var stringValue = elem.textProperty.currentData.t;\n if (!_sourceText || stringValue !== _sourceText.value) {\n _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\n Object.defineProperty(_sourceText, 'style', {\n get: function get() {\n return {\n fillColor: elem.textProperty.currentData.fc\n };\n }\n });\n }\n return _sourceText;\n }\n });\n return _thisLayerFunction;\n };\n }();\n\n function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n var FootageInterface = function () {\n var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\n var currentPropertyName = '';\n var currentProperty = elem.getFootageData();\n function init() {\n currentPropertyName = '';\n currentProperty = elem.getFootageData();\n return searchProperty;\n }\n function searchProperty(value) {\n if (currentProperty[value]) {\n currentPropertyName = value;\n currentProperty = currentProperty[value];\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n return currentProperty;\n }\n var propertyNameIndex = value.indexOf(currentPropertyName);\n if (propertyNameIndex !== -1) {\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\n currentProperty = currentProperty[index];\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n return currentProperty;\n }\n return '';\n }\n return init;\n };\n var dataInterfaceFactory = function dataInterfaceFactory(elem) {\n function interfaceFunction(value) {\n if (value === 'Outline') {\n return interfaceFunction.outlineInterface();\n }\n return null;\n }\n interfaceFunction._name = 'Outline';\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\n return interfaceFunction;\n };\n return function (elem) {\n function _interfaceFunction(value) {\n if (value === 'Data') {\n return _interfaceFunction.dataInterface;\n }\n return null;\n }\n _interfaceFunction._name = 'Data';\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\n return _interfaceFunction;\n };\n }();\n\n var interfaces = {\n layer: LayerExpressionInterface,\n effects: EffectsExpressionInterface,\n comp: CompExpressionInterface,\n shape: ShapeExpressionInterface,\n text: TextExpressionInterface,\n footage: FootageInterface\n };\n function getInterface(type) {\n return interfaces[type] || null;\n }\n\n var expressionHelpers = function () {\n function searchExpressions(elem, data, prop) {\n if (data.x) {\n prop.k = true;\n prop.x = true;\n prop.initiateExpression = ExpressionManager.initiateExpression;\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\n }\n }\n function getValueAtTime(frameNum) {\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n if (frameNum !== this._cachingAtTime.lastFrame) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\n this._cachingAtTime.lastFrame = frameNum;\n }\n return this._cachingAtTime.value;\n }\n function getSpeedAtTime(frameNum) {\n var delta = -0.01;\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var speed = 0;\n if (v1.length) {\n var i;\n for (i = 0; i < v1.length; i += 1) {\n speed += Math.pow(v2[i] - v1[i], 2);\n }\n speed = Math.sqrt(speed) * 100;\n } else {\n speed = 0;\n }\n return speed;\n }\n function getVelocityAtTime(frameNum) {\n if (this.vel !== undefined) {\n return this.vel;\n }\n var delta = -0.001;\n // frameNum += this.elem.data.st;\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var velocity;\n if (v1.length) {\n velocity = createTypedArray('float32', v1.length);\n var i;\n for (i = 0; i < v1.length; i += 1) {\n // removing frameRate\n // if needed, don't add it here\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\n velocity[i] = (v2[i] - v1[i]) / delta;\n }\n } else {\n velocity = (v2 - v1) / delta;\n }\n return velocity;\n }\n function getStaticValueAtTime() {\n return this.pv;\n }\n function setGroupProperty(propertyGroup) {\n this.propertyGroup = propertyGroup;\n }\n return {\n searchExpressions: searchExpressions,\n getSpeedAtTime: getSpeedAtTime,\n getVelocityAtTime: getVelocityAtTime,\n getValueAtTime: getValueAtTime,\n getStaticValueAtTime: getStaticValueAtTime,\n setGroupProperty: setGroupProperty\n };\n }();\n\n function addPropertyDecorator() {\n function loopOut(type, duration, durationFlag) {\n if (!this.k || !this.keyframes) {\n return this.pv;\n }\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\n if (currentFrame <= lastKeyFrame) {\n return this.pv;\n }\n var cycleDuration;\n var firstKeyFrame;\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\n } else {\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\n }\n firstKeyFrame = lastKeyFrame - cycleDuration;\n }\n var i;\n var len;\n var ret;\n if (type === 'pingpong') {\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n if (iterations % 2 !== 0) {\n return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n for (i = 0; i < len; i += 1) {\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\n }\n return ret;\n }\n return (endV - initV) * repeats + current;\n } else if (type === 'continue') {\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\n if (this.pv.length) {\n ret = new Array(lastValue.length);\n len = ret.length;\n for (i = 0; i < len; i += 1) {\n ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\n }\n return ret;\n }\n return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\n }\n return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n function loopIn(type, duration, durationFlag) {\n if (!this.k) {\n return this.pv;\n }\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var firstKeyFrame = keyframes[0].t;\n if (currentFrame >= firstKeyFrame) {\n return this.pv;\n }\n var cycleDuration;\n var lastKeyFrame;\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n lastKeyFrame = keyframes[duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\n } else {\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\n }\n lastKeyFrame = firstKeyFrame + cycleDuration;\n }\n var i;\n var len;\n var ret;\n if (type === 'pingpong') {\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\n if (iterations % 2 === 0) {\n return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n for (i = 0; i < len; i += 1) {\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\n }\n return ret;\n }\n return current - (endV - initV) * repeats;\n } else if (type === 'continue') {\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\n if (this.pv.length) {\n ret = new Array(firstValue.length);\n len = ret.length;\n for (i = 0; i < len; i += 1) {\n ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\n }\n return ret;\n }\n return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\n }\n return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n function smooth(width, samples) {\n if (!this.k) {\n return this.pv;\n }\n width = (width || 0.4) * 0.5;\n samples = Math.floor(samples || 5);\n if (samples <= 1) {\n return this.pv;\n }\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\n var initFrame = currentTime - width;\n var endFrame = currentTime + width;\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\n var i = 0;\n var j = 0;\n var value;\n if (this.pv.length) {\n value = createTypedArray('float32', this.pv.length);\n } else {\n value = 0;\n }\n var sampleValue;\n while (i < samples) {\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] += sampleValue[j];\n }\n } else {\n value += sampleValue;\n }\n i += 1;\n }\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] /= samples;\n }\n } else {\n value /= samples;\n }\n return value;\n }\n function getTransformValueAtTime(time) {\n if (!this._transformCachingAtTime) {\n this._transformCachingAtTime = {\n v: new Matrix()\n };\n }\n /// /\n var matrix = this._transformCachingAtTime.v;\n matrix.cloneFromProps(this.pre.props);\n if (this.appliedTransformations < 1) {\n var anchor = this.a.getValueAtTime(time);\n matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult);\n }\n if (this.appliedTransformations < 2) {\n var scale = this.s.getValueAtTime(time);\n matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult);\n }\n if (this.sk && this.appliedTransformations < 3) {\n var skew = this.sk.getValueAtTime(time);\n var skewAxis = this.sa.getValueAtTime(time);\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\n }\n if (this.r && this.appliedTransformations < 4) {\n var rotation = this.r.getValueAtTime(time);\n matrix.rotate(-rotation * this.r.mult);\n } else if (!this.r && this.appliedTransformations < 4) {\n var rotationZ = this.rz.getValueAtTime(time);\n var rotationY = this.ry.getValueAtTime(time);\n var rotationX = this.rx.getValueAtTime(time);\n var orientation = this.or.getValueAtTime(time);\n matrix.rotateZ(-rotationZ * this.rz.mult).rotateY(rotationY * this.ry.mult).rotateX(rotationX * this.rx.mult).rotateZ(-orientation[2] * this.or.mult).rotateY(orientation[1] * this.or.mult).rotateX(orientation[0] * this.or.mult);\n }\n if (this.data.p && this.data.p.s) {\n var positionX = this.px.getValueAtTime(time);\n var positionY = this.py.getValueAtTime(time);\n if (this.data.p.z) {\n var positionZ = this.pz.getValueAtTime(time);\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult);\n } else {\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\n }\n } else {\n var position = this.p.getValueAtTime(time);\n matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult);\n }\n return matrix;\n /// /\n }\n function getTransformStaticValueAtTime() {\n return this.v.clone(new Matrix());\n }\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n var prop = getTransformProperty(elem, data, container);\n if (prop.dynamicProperties.length) {\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\n }\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n return prop;\n };\n var propertyGetProp = PropertyFactory.getProp;\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\n var prop = propertyGetProp(elem, data, type, mult, container);\n // prop.getVelocityAtTime = getVelocityAtTime;\n // prop.loopOut = loopOut;\n // prop.loopIn = loopIn;\n if (prop.kf) {\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\n }\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n prop.loopOut = loopOut;\n prop.loopIn = loopIn;\n prop.smooth = smooth;\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\n prop.numKeys = data.a === 1 ? data.k.length : 0;\n prop.propertyIndex = data.ix;\n var value = 0;\n if (type !== 0) {\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\n }\n prop._cachingAtTime = {\n lastFrame: initialDefaultFrame,\n lastIndex: 0,\n value: value\n };\n expressionHelpers.searchExpressions(elem, data, prop);\n if (prop.k) {\n container.addDynamicProperty(prop);\n }\n return prop;\n };\n function getShapeValueAtTime(frameNum) {\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\n if (!this._cachingAtTime) {\n this._cachingAtTime = {\n shapeValue: shapePool.clone(this.pv),\n lastIndex: 0,\n lastTime: initialDefaultFrame\n };\n }\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n if (frameNum !== this._cachingAtTime.lastTime) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\n this._cachingAtTime.lastTime = frameNum;\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\n }\n return this._cachingAtTime.shapeValue;\n }\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\n function ShapeExpressions() {}\n ShapeExpressions.prototype = {\n vertices: function vertices(prop, time) {\n if (this.k) {\n this.getValue();\n }\n var shapePath = this.v;\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n var i;\n var len = shapePath._length;\n var vertices = shapePath[prop];\n var points = shapePath.v;\n var arr = createSizedArray(len);\n for (i = 0; i < len; i += 1) {\n if (prop === 'i' || prop === 'o') {\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\n } else {\n arr[i] = [vertices[i][0], vertices[i][1]];\n }\n }\n return arr;\n },\n points: function points(time) {\n return this.vertices('v', time);\n },\n inTangents: function inTangents(time) {\n return this.vertices('i', time);\n },\n outTangents: function outTangents(time) {\n return this.vertices('o', time);\n },\n isClosed: function isClosed() {\n return this.v.c;\n },\n pointOnPath: function pointOnPath(perc, time) {\n var shapePath = this.v;\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n if (!this._segmentsLength) {\n this._segmentsLength = bez.getSegmentsLength(shapePath);\n }\n var segmentsLength = this._segmentsLength;\n var lengths = segmentsLength.lengths;\n var lengthPos = segmentsLength.totalLength * perc;\n var i = 0;\n var len = lengths.length;\n var accumulatedLength = 0;\n var pt;\n while (i < len) {\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\n var initIndex = i;\n var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1;\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\n pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\n break;\n } else {\n accumulatedLength += lengths[i].addedLength;\n }\n i += 1;\n }\n if (!pt) {\n pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\n }\n return pt;\n },\n vectorOnPath: function vectorOnPath(perc, time, vectorType) {\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\n if (perc == 1) {\n // eslint-disable-line eqeqeq\n perc = this.v.c;\n } else if (perc == 0) {\n // eslint-disable-line eqeqeq\n perc = 0.999;\n }\n var pt1 = this.pointOnPath(perc, time);\n var pt2 = this.pointOnPath(perc + 0.001, time);\n var xLength = pt2[0] - pt1[0];\n var yLength = pt2[1] - pt1[1];\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\n if (magnitude === 0) {\n return [0, 0];\n }\n var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\n return unitVector;\n },\n tangentOnPath: function tangentOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'tangent');\n },\n normalOnPath: function normalOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'normal');\n },\n setGroupProperty: expressionHelpers.setGroupProperty,\n getValueAtTime: expressionHelpers.getStaticValueAtTime\n };\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\n var prop = propertyGetShapeProp(elem, data, type, arr, trims);\n prop.propertyIndex = data.ix;\n prop.lock = false;\n if (type === 3) {\n expressionHelpers.searchExpressions(elem, data.pt, prop);\n } else if (type === 4) {\n expressionHelpers.searchExpressions(elem, data.ks, prop);\n }\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n return prop;\n };\n }\n function initialize$1() {\n addPropertyDecorator();\n }\n\n function addDecorator() {\n function searchExpressions() {\n if (this.data.d.x) {\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\n this.addEffect(this.getExpressionValue.bind(this));\n return true;\n }\n return null;\n }\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n var newValue = this.calculateExpression(text);\n if (currentValue.t !== newValue) {\n var newData = {};\n this.copyData(newData, currentValue);\n newData.t = newValue.toString();\n newData.__complete = false;\n return newData;\n }\n return currentValue;\n };\n TextProperty.prototype.searchProperty = function () {\n var isKeyframed = this.searchKeyframes();\n var hasExpressions = this.searchExpressions();\n this.kf = isKeyframed || hasExpressions;\n return this.kf;\n };\n TextProperty.prototype.searchExpressions = searchExpressions;\n }\n function initialize() {\n addDecorator();\n }\n\n function SVGComposableEffect() {}\n SVGComposableEffect.prototype = {\n createMergeNode: function createMergeNode(resultId, ins) {\n var feMerge = createNS('feMerge');\n feMerge.setAttribute('result', resultId);\n var feMergeNode;\n var i;\n for (i = 0; i < ins.length; i += 1) {\n feMergeNode = createNS('feMergeNode');\n feMergeNode.setAttribute('in', ins[i]);\n feMerge.appendChild(feMergeNode);\n feMerge.appendChild(feMergeNode);\n }\n return feMerge;\n }\n };\n\n var linearFilterValue = '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0';\n function SVGTintFilter(filter, filterManager, elem, id, source) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', linearFilterValue + ' 1 0');\n this.linearFilter = feColorMatrix;\n feColorMatrix.setAttribute('result', id + '_tint_1');\n filter.appendChild(feColorMatrix);\n feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id + '_tint_2');\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n var feMerge = this.createMergeNode(id, [source, id + '_tint_1', id + '_tint_2']);\n filter.appendChild(feMerge);\n }\n extendPrototype([SVGComposableEffect], SVGTintFilter);\n SVGTintFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var colorBlack = this.filterManager.effectElements[0].p.v;\n var colorWhite = this.filterManager.effectElements[1].p.v;\n var opacity = this.filterManager.effectElements[2].p.v / 100;\n this.linearFilter.setAttribute('values', linearFilterValue + ' ' + opacity + ' 0');\n this.matrixFilter.setAttribute('values', colorWhite[0] - colorBlack[0] + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 1 0');\n }\n };\n\n function SVGFillFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id);\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n }\n SVGFillFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color = this.filterManager.effectElements[2].p.v;\n var opacity = this.filterManager.effectElements[6].p.v;\n this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\n }\n };\n\n function SVGStrokeEffect(fil, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.elem = elem;\n this.paths = [];\n }\n SVGStrokeEffect.prototype.initialize = function () {\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n var path;\n var groupPath;\n var i;\n var len;\n if (this.filterManager.effectElements[1].p.v === 1) {\n len = this.elem.maskManager.masksProperties.length;\n i = 0;\n } else {\n i = this.filterManager.effectElements[0].p.v - 1;\n len = i + 1;\n }\n groupPath = createNS('g');\n groupPath.setAttribute('fill', 'none');\n groupPath.setAttribute('stroke-linecap', 'round');\n groupPath.setAttribute('stroke-dashoffset', 1);\n for (i; i < len; i += 1) {\n path = createNS('path');\n groupPath.appendChild(path);\n this.paths.push({\n p: path,\n m: i\n });\n }\n if (this.filterManager.effectElements[10].p.v === 3) {\n var mask = createNS('mask');\n var id = createElementID();\n mask.setAttribute('id', id);\n mask.setAttribute('mask-type', 'alpha');\n mask.appendChild(groupPath);\n this.elem.globalData.defs.appendChild(mask);\n var g = createNS('g');\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n while (elemChildren[0]) {\n g.appendChild(elemChildren[0]);\n }\n this.elem.layerElement.appendChild(g);\n this.masker = mask;\n groupPath.setAttribute('stroke', '#fff');\n } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (this.filterManager.effectElements[10].p.v === 2) {\n elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n while (elemChildren.length) {\n this.elem.layerElement.removeChild(elemChildren[0]);\n }\n }\n this.elem.layerElement.appendChild(groupPath);\n this.elem.layerElement.removeAttribute('mask');\n groupPath.setAttribute('stroke', '#fff');\n }\n this.initialized = true;\n this.pathMasker = groupPath;\n };\n SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\n if (!this.initialized) {\n this.initialize();\n }\n var i;\n var len = this.paths.length;\n var mask;\n var path;\n for (i = 0; i < len; i += 1) {\n if (this.paths[i].m !== -1) {\n mask = this.elem.maskManager.viewData[this.paths[i].m];\n path = this.paths[i].p;\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\n path.setAttribute('d', mask.lastPath);\n }\n if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\n var dasharrayValue;\n if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\n var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var l = path.getTotalLength();\n dasharrayValue = '0 0 0 ' + l * s + ' ';\n var lineLength = l * (e - s);\n var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n var units = Math.floor(lineLength / segment);\n var j;\n for (j = 0; j < units; j += 1) {\n dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\n }\n dasharrayValue += '0 ' + l * 10 + ' 0 0';\n } else {\n dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n }\n path.setAttribute('stroke-dasharray', dasharrayValue);\n }\n }\n }\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\n }\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\n }\n if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (forceRender || this.filterManager.effectElements[3].p._mdf) {\n var color = this.filterManager.effectElements[3].p.v;\n this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\n }\n }\n };\n\n function SVGTritoneFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\n filter.appendChild(feColorMatrix);\n var feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n this.matrixFilter = feComponentTransfer;\n var feFuncR = createNS('feFuncR');\n feFuncR.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncR);\n this.feFuncR = feFuncR;\n var feFuncG = createNS('feFuncG');\n feFuncG.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncG);\n this.feFuncG = feFuncG;\n var feFuncB = createNS('feFuncB');\n feFuncB.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncB);\n this.feFuncB = feFuncB;\n filter.appendChild(feComponentTransfer);\n }\n SVGTritoneFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color1 = this.filterManager.effectElements[0].p.v;\n var color2 = this.filterManager.effectElements[1].p.v;\n var color3 = this.filterManager.effectElements[2].p.v;\n var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\n var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\n var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\n this.feFuncR.setAttribute('tableValues', tableR);\n this.feFuncG.setAttribute('tableValues', tableG);\n this.feFuncB.setAttribute('tableValues', tableB);\n }\n };\n\n function SVGProLevelsFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var effectElements = this.filterManager.effectElements;\n var feComponentTransfer = createNS('feComponentTransfer');\n\n // Red\n if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\n this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\n }\n // Green\n if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\n this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\n }\n // Blue\n if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\n this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\n }\n // Alpha\n if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\n this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\n }\n // RGB\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n filter.appendChild(feComponentTransfer);\n }\n if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\n feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n filter.appendChild(feComponentTransfer);\n this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\n this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\n this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\n }\n }\n SVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\n var feFunc = createNS(type);\n feFunc.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFunc);\n return feFunc;\n };\n SVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\n var cnt = 0;\n var segments = 256;\n var perc;\n var min = Math.min(inputBlack, inputWhite);\n var max = Math.max(inputBlack, inputWhite);\n var table = Array.call(null, {\n length: segments\n });\n var colorValue;\n var pos = 0;\n var outputDelta = outputWhite - outputBlack;\n var inputDelta = inputWhite - inputBlack;\n while (cnt <= 256) {\n perc = cnt / 256;\n if (perc <= min) {\n colorValue = inputDelta < 0 ? outputWhite : outputBlack;\n } else if (perc >= max) {\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\n } else {\n colorValue = outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma);\n }\n table[pos] = colorValue;\n pos += 1;\n cnt += 256 / (segments - 1);\n }\n return table.join(' ');\n };\n SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var val;\n var effectElements = this.filterManager.effectElements;\n if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\n val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\n this.feFuncRComposed.setAttribute('tableValues', val);\n this.feFuncGComposed.setAttribute('tableValues', val);\n this.feFuncBComposed.setAttribute('tableValues', val);\n }\n if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\n val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\n this.feFuncR.setAttribute('tableValues', val);\n }\n if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\n val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\n this.feFuncG.setAttribute('tableValues', val);\n }\n if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\n val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\n this.feFuncB.setAttribute('tableValues', val);\n }\n if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\n val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\n this.feFuncA.setAttribute('tableValues', val);\n }\n }\n };\n\n function SVGDropShadowEffect(filter, filterManager, elem, id, source) {\n var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize;\n var filterSize = filterManager.data.fs || globalFilterSize;\n filter.setAttribute('x', filterSize.x || globalFilterSize.x);\n filter.setAttribute('y', filterSize.y || globalFilterSize.y);\n filter.setAttribute('width', filterSize.width || globalFilterSize.width);\n filter.setAttribute('height', filterSize.height || globalFilterSize.height);\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\n feGaussianBlur.setAttribute('result', id + '_drop_shadow_1');\n feGaussianBlur.setAttribute('stdDeviation', '0');\n this.feGaussianBlur = feGaussianBlur;\n filter.appendChild(feGaussianBlur);\n var feOffset = createNS('feOffset');\n feOffset.setAttribute('dx', '25');\n feOffset.setAttribute('dy', '0');\n feOffset.setAttribute('in', id + '_drop_shadow_1');\n feOffset.setAttribute('result', id + '_drop_shadow_2');\n this.feOffset = feOffset;\n filter.appendChild(feOffset);\n var feFlood = createNS('feFlood');\n feFlood.setAttribute('flood-color', '#00ff00');\n feFlood.setAttribute('flood-opacity', '1');\n feFlood.setAttribute('result', id + '_drop_shadow_3');\n this.feFlood = feFlood;\n filter.appendChild(feFlood);\n var feComposite = createNS('feComposite');\n feComposite.setAttribute('in', id + '_drop_shadow_3');\n feComposite.setAttribute('in2', id + '_drop_shadow_2');\n feComposite.setAttribute('operator', 'in');\n feComposite.setAttribute('result', id + '_drop_shadow_4');\n filter.appendChild(feComposite);\n var feMerge = this.createMergeNode(id, [id + '_drop_shadow_4', source]);\n filter.appendChild(feMerge);\n //\n }\n extendPrototype([SVGComposableEffect], SVGDropShadowEffect);\n SVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\n }\n if (forceRender || this.filterManager.effectElements[0].p._mdf) {\n var col = this.filterManager.effectElements[0].p.v;\n this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\n }\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\n }\n if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\n var distance = this.filterManager.effectElements[3].p.v;\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\n var x = distance * Math.cos(angle);\n var y = distance * Math.sin(angle);\n this.feOffset.setAttribute('dx', x);\n this.feOffset.setAttribute('dy', y);\n }\n }\n };\n\n var _svgMatteSymbols = [];\n function SVGMatte3Effect(filterElem, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.filterElem = filterElem;\n this.elem = elem;\n elem.matteElement = createNS('g');\n elem.matteElement.appendChild(elem.layerElement);\n elem.matteElement.appendChild(elem.transformedElement);\n elem.baseElement = elem.matteElement;\n }\n SVGMatte3Effect.prototype.findSymbol = function (mask) {\n var i = 0;\n var len = _svgMatteSymbols.length;\n while (i < len) {\n if (_svgMatteSymbols[i] === mask) {\n return _svgMatteSymbols[i];\n }\n i += 1;\n }\n return null;\n };\n SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\n var parentNode = mask.layerElement.parentNode;\n if (!parentNode) {\n return;\n }\n var children = parentNode.children;\n var i = 0;\n var len = children.length;\n while (i < len) {\n if (children[i] === mask.layerElement) {\n break;\n }\n i += 1;\n }\n var nextChild;\n if (i <= len - 2) {\n nextChild = children[i + 1];\n }\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n if (nextChild) {\n parentNode.insertBefore(useElem, nextChild);\n } else {\n parentNode.appendChild(useElem);\n }\n };\n SVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\n if (!this.findSymbol(mask)) {\n var symbolId = createElementID();\n var masker = createNS('mask');\n masker.setAttribute('id', mask.layerId);\n masker.setAttribute('mask-type', 'alpha');\n _svgMatteSymbols.push(mask);\n var defs = elem.globalData.defs;\n defs.appendChild(masker);\n var symbol = createNS('symbol');\n symbol.setAttribute('id', symbolId);\n this.replaceInParent(mask, symbolId);\n symbol.appendChild(mask.layerElement);\n defs.appendChild(symbol);\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n masker.appendChild(useElem);\n mask.data.hd = false;\n mask.show();\n }\n elem.setMatte(mask.layerId);\n };\n SVGMatte3Effect.prototype.initialize = function () {\n var ind = this.filterManager.effectElements[0].p.v;\n var elements = this.elem.comp.elements;\n var i = 0;\n var len = elements.length;\n while (i < len) {\n if (elements[i] && elements[i].data.ind === ind) {\n this.setElementAsMask(this.elem, elements[i]);\n }\n i += 1;\n }\n this.initialized = true;\n };\n SVGMatte3Effect.prototype.renderFrame = function () {\n if (!this.initialized) {\n this.initialize();\n }\n };\n\n function SVGGaussianBlurEffect(filter, filterManager, elem, id) {\n // Outset the filter region by 100% on all sides to accommodate blur expansion.\n filter.setAttribute('x', '-100%');\n filter.setAttribute('y', '-100%');\n filter.setAttribute('width', '300%');\n filter.setAttribute('height', '300%');\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('result', id);\n filter.appendChild(feGaussianBlur);\n this.feGaussianBlur = feGaussianBlur;\n }\n SVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n // Empirical value, matching AE's blur appearance.\n var kBlurrinessToSigma = 0.3;\n var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma;\n\n // Dimensions mapping:\n //\n // 1 -> horizontal & vertical\n // 2 -> horizontal only\n // 3 -> vertical only\n //\n var dimensions = this.filterManager.effectElements[1].p.v;\n var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\n var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY);\n\n // Repeat edges mapping:\n //\n // 0 -> off -> duplicate\n // 1 -> on -> wrap\n var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\n }\n };\n\n function TransformEffect() {}\n TransformEffect.prototype.init = function (effectsManager) {\n this.effectsManager = effectsManager;\n this.type = effectTypes.TRANSFORM_EFFECT;\n this.matrix = new Matrix();\n this.opacity = -1;\n this._mdf = false;\n this._opMdf = false;\n };\n TransformEffect.prototype.renderFrame = function (forceFrame) {\n this._opMdf = false;\n this._mdf = false;\n if (forceFrame || this.effectsManager._mdf) {\n var effectElements = this.effectsManager.effectElements;\n var anchor = effectElements[0].p.v;\n var position = effectElements[1].p.v;\n var isUniformScale = effectElements[2].p.v === 1;\n var scaleHeight = effectElements[3].p.v;\n var scaleWidth = isUniformScale ? scaleHeight : effectElements[4].p.v;\n var skew = effectElements[5].p.v;\n var skewAxis = effectElements[6].p.v;\n var rotation = effectElements[7].p.v;\n this.matrix.reset();\n this.matrix.translate(-anchor[0], -anchor[1], anchor[2]);\n this.matrix.scale(scaleWidth * 0.01, scaleHeight * 0.01, 1);\n this.matrix.rotate(-rotation * degToRads);\n this.matrix.skewFromAxis(-skew * degToRads, (skewAxis + 90) * degToRads);\n this.matrix.translate(position[0], position[1], 0);\n this._mdf = true;\n if (this.opacity !== effectElements[8].p.v) {\n this.opacity = effectElements[8].p.v;\n this._opMdf = true;\n }\n }\n };\n\n function SVGTransformEffect(_, filterManager) {\n this.init(filterManager);\n }\n extendPrototype([TransformEffect], SVGTransformEffect);\n\n function CVTransformEffect(effectsManager) {\n this.init(effectsManager);\n }\n extendPrototype([TransformEffect], CVTransformEffect);\n\n // Registering renderers\n registerRenderer('canvas', CanvasRenderer);\n registerRenderer('html', HybridRenderer);\n registerRenderer('svg', SVGRenderer);\n\n // Registering shape modifiers\n ShapeModifiers.registerModifier('tm', TrimModifier);\n ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\n ShapeModifiers.registerModifier('rp', RepeaterModifier);\n ShapeModifiers.registerModifier('rd', RoundCornersModifier);\n ShapeModifiers.registerModifier('zz', ZigZagModifier);\n ShapeModifiers.registerModifier('op', OffsetPathModifier);\n\n // Registering expression plugin\n setExpressionsPlugin(Expressions);\n setExpressionInterfaces(getInterface);\n initialize$1();\n initialize();\n\n // Registering svg effects\n registerEffect$1(20, SVGTintFilter, true);\n registerEffect$1(21, SVGFillFilter, true);\n registerEffect$1(22, SVGStrokeEffect, false);\n registerEffect$1(23, SVGTritoneFilter, true);\n registerEffect$1(24, SVGProLevelsFilter, true);\n registerEffect$1(25, SVGDropShadowEffect, true);\n registerEffect$1(28, SVGMatte3Effect, false);\n registerEffect$1(29, SVGGaussianBlurEffect, true);\n registerEffect$1(35, SVGTransformEffect, false);\n registerEffect(35, CVTransformEffect);\n\n return lottie;\n\n}));\n","import lottie from 'lottie-web';\nexport { default as LottiePlayer } from 'lottie-web';\nimport React, { useState, useRef, useEffect } from 'react';\n\nfunction _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nfunction _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nfunction _defineProperty(e, r, t) {\n return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = _objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var s = Object.getOwnPropertySymbols(e);\n for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nfunction _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.includes(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nfunction _slicedToArray(r, e) {\n return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;\n }\n}\n\nvar _excluded$1 = [\"animationData\", \"loop\", \"autoplay\", \"initialSegment\", \"onComplete\", \"onLoopComplete\", \"onEnterFrame\", \"onSegmentStart\", \"onConfigReady\", \"onDataReady\", \"onDataFailed\", \"onLoadedImages\", \"onDOMLoaded\", \"onDestroy\", \"lottieRef\", \"renderer\", \"name\", \"assetsPath\", \"rendererSettings\"];\nvar useLottie = function useLottie(props, style) {\n var animationData = props.animationData,\n loop = props.loop,\n autoplay = props.autoplay,\n initialSegment = props.initialSegment,\n onComplete = props.onComplete,\n onLoopComplete = props.onLoopComplete,\n onEnterFrame = props.onEnterFrame,\n onSegmentStart = props.onSegmentStart,\n onConfigReady = props.onConfigReady,\n onDataReady = props.onDataReady,\n onDataFailed = props.onDataFailed,\n onLoadedImages = props.onLoadedImages,\n onDOMLoaded = props.onDOMLoaded,\n onDestroy = props.onDestroy;\n props.lottieRef;\n props.renderer;\n props.name;\n props.assetsPath;\n props.rendererSettings;\n var rest = _objectWithoutProperties(props, _excluded$1);\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n animationLoaded = _useState2[0],\n setAnimationLoaded = _useState2[1];\n var animationInstanceRef = useRef();\n var animationContainer = useRef(null);\n /*\n ======================================\n INTERACTION METHODS\n ======================================\n */\n /**\n * Play\n */\n var play = function play() {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.play();\n };\n /**\n * Stop\n */\n var stop = function stop() {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.stop();\n };\n /**\n * Pause\n */\n var pause = function pause() {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.pause();\n };\n /**\n * Set animation speed\n * @param speed\n */\n var setSpeed = function setSpeed(speed) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setSpeed(speed);\n };\n /**\n * Got to frame and play\n * @param value\n * @param isFrame\n */\n var goToAndPlay = function goToAndPlay(value, isFrame) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.goToAndPlay(value, isFrame);\n };\n /**\n * Got to frame and stop\n * @param value\n * @param isFrame\n */\n var goToAndStop = function goToAndStop(value, isFrame) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.goToAndStop(value, isFrame);\n };\n /**\n * Set animation direction\n * @param direction\n */\n var setDirection = function setDirection(direction) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setDirection(direction);\n };\n /**\n * Play animation segments\n * @param segments\n * @param forceFlag\n */\n var playSegments = function playSegments(segments, forceFlag) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.playSegments(segments, forceFlag);\n };\n /**\n * Set sub frames\n * @param useSubFrames\n */\n var setSubframe = function setSubframe(useSubFrames) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setSubframe(useSubFrames);\n };\n /**\n * Get animation duration\n * @param inFrames\n */\n var getDuration = function getDuration(inFrames) {\n var _a;\n return (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.getDuration(inFrames);\n };\n /**\n * Destroy animation\n */\n var destroy = function destroy() {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n // Removing the reference to the animation so separate cleanups are skipped.\n // Without it the internal `lottie-react` instance throws exceptions as it already cleared itself on destroy.\n animationInstanceRef.current = undefined;\n };\n /*\n ======================================\n LOTTIE\n ======================================\n */\n /**\n * Load a new animation, and if it's the case, destroy the previous one\n * @param {Object} forcedConfigs\n */\n var loadAnimation = function loadAnimation() {\n var forcedConfigs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _a;\n // Return if the container ref is null\n if (!animationContainer.current) {\n return;\n }\n // Destroy any previous instance\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n // Build the animation configuration\n var config = _objectSpread2(_objectSpread2(_objectSpread2({}, props), forcedConfigs), {}, {\n container: animationContainer.current\n });\n // Save the animation instance\n animationInstanceRef.current = lottie.loadAnimation(config);\n setAnimationLoaded(!!animationInstanceRef.current);\n // Return a function that will clean up\n return function () {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n animationInstanceRef.current = undefined;\n };\n };\n /**\n * (Re)Initialize when animation data changed\n */\n useEffect(function () {\n var onUnmount = loadAnimation();\n // Clean up on unmount\n return function () {\n return onUnmount === null || onUnmount === void 0 ? void 0 : onUnmount();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [animationData, loop]);\n // Update the autoplay state\n useEffect(function () {\n if (!animationInstanceRef.current) {\n return;\n }\n animationInstanceRef.current.autoplay = !!autoplay;\n }, [autoplay]);\n // Update the initial segment state\n useEffect(function () {\n if (!animationInstanceRef.current) {\n return;\n }\n // When null should reset to default animation length\n if (!initialSegment) {\n animationInstanceRef.current.resetSegments(true);\n return;\n }\n // If it's not a valid segment, do nothing\n if (!Array.isArray(initialSegment) || !initialSegment.length) {\n return;\n }\n // If the current position it's not in the new segment\n // set the current position to start\n if (animationInstanceRef.current.currentRawFrame < initialSegment[0] || animationInstanceRef.current.currentRawFrame > initialSegment[1]) {\n animationInstanceRef.current.currentRawFrame = initialSegment[0];\n }\n // Update the segment\n animationInstanceRef.current.setSegment(initialSegment[0], initialSegment[1]);\n }, [initialSegment]);\n /*\n ======================================\n EVENTS\n ======================================\n */\n /**\n * Reinitialize listener on change\n */\n useEffect(function () {\n var partialListeners = [{\n name: \"complete\",\n handler: onComplete\n }, {\n name: \"loopComplete\",\n handler: onLoopComplete\n }, {\n name: \"enterFrame\",\n handler: onEnterFrame\n }, {\n name: \"segmentStart\",\n handler: onSegmentStart\n }, {\n name: \"config_ready\",\n handler: onConfigReady\n }, {\n name: \"data_ready\",\n handler: onDataReady\n }, {\n name: \"data_failed\",\n handler: onDataFailed\n }, {\n name: \"loaded_images\",\n handler: onLoadedImages\n }, {\n name: \"DOMLoaded\",\n handler: onDOMLoaded\n }, {\n name: \"destroy\",\n handler: onDestroy\n }];\n var listeners = partialListeners.filter(function (listener) {\n return listener.handler != null;\n });\n if (!listeners.length) {\n return;\n }\n var deregisterList = listeners.map(\n /**\n * Handle the process of adding an event listener\n * @param {Listener} listener\n * @return {Function} Function that deregister the listener\n */\n function (listener) {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener(listener.name, listener.handler);\n // Return a function to deregister this listener\n return function () {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener(listener.name, listener.handler);\n };\n });\n // Deregister listeners on unmount\n return function () {\n deregisterList.forEach(function (deregister) {\n return deregister();\n });\n };\n }, [onComplete, onLoopComplete, onEnterFrame, onSegmentStart, onConfigReady, onDataReady, onDataFailed, onLoadedImages, onDOMLoaded, onDestroy]);\n /**\n * Build the animation view\n */\n var View = /*#__PURE__*/React.createElement(\"div\", _objectSpread2({\n style: style,\n ref: animationContainer\n }, rest));\n return {\n View: View,\n play: play,\n stop: stop,\n pause: pause,\n setSpeed: setSpeed,\n goToAndStop: goToAndStop,\n goToAndPlay: goToAndPlay,\n setDirection: setDirection,\n playSegments: playSegments,\n setSubframe: setSubframe,\n getDuration: getDuration,\n destroy: destroy,\n animationContainerRef: animationContainer,\n animationLoaded: animationLoaded,\n animationItem: animationInstanceRef.current\n };\n};\n\n// helpers\nfunction getContainerVisibility(container) {\n var _container$getBoundin = container.getBoundingClientRect(),\n top = _container$getBoundin.top,\n height = _container$getBoundin.height;\n var current = window.innerHeight - top;\n var max = window.innerHeight + height;\n return current / max;\n}\nfunction getContainerCursorPosition(container, cursorX, cursorY) {\n var _container$getBoundin2 = container.getBoundingClientRect(),\n top = _container$getBoundin2.top,\n left = _container$getBoundin2.left,\n width = _container$getBoundin2.width,\n height = _container$getBoundin2.height;\n var x = (cursorX - left) / width;\n var y = (cursorY - top) / height;\n return {\n x: x,\n y: y\n };\n}\nvar useInitInteractivity = function useInitInteractivity(_ref) {\n var wrapperRef = _ref.wrapperRef,\n animationItem = _ref.animationItem,\n mode = _ref.mode,\n actions = _ref.actions;\n useEffect(function () {\n var wrapper = wrapperRef.current;\n if (!wrapper || !animationItem || !actions.length) {\n return;\n }\n animationItem.stop();\n var scrollModeHandler = function scrollModeHandler() {\n var assignedSegment = null;\n var scrollHandler = function scrollHandler() {\n var currentPercent = getContainerVisibility(wrapper);\n // Find the first action that satisfies the current position conditions\n var action = actions.find(function (_ref2) {\n var visibility = _ref2.visibility;\n return visibility && currentPercent >= visibility[0] && currentPercent <= visibility[1];\n });\n // Skip if no matching action was found!\n if (!action) {\n return;\n }\n if (action.type === \"seek\" && action.visibility && action.frames.length === 2) {\n // Seek: Go to a frame based on player scroll position action\n var frameToGo = action.frames[0] + Math.ceil((currentPercent - action.visibility[0]) / (action.visibility[1] - action.visibility[0]) * action.frames[1]);\n //! goToAndStop must be relative to the start of the current segment\n animationItem.goToAndStop(frameToGo - animationItem.firstFrame - 1, true);\n }\n if (action.type === \"loop\") {\n // Loop: Loop a given frames\n if (assignedSegment === null) {\n // if not playing any segments currently. play those segments and save to state\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n } else {\n // if playing any segments currently.\n //check if segments in state are equal to the frames selected by action\n if (assignedSegment !== action.frames) {\n // if they are not equal. new segments are to be loaded\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n } else if (animationItem.isPaused) {\n // if they are equal the play method must be called only if lottie is paused\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n }\n }\n }\n if (action.type === \"play\" && animationItem.isPaused) {\n // Play: Reset segments and continue playing full animation from current position\n animationItem.resetSegments(true);\n animationItem.play();\n }\n if (action.type === \"stop\") {\n // Stop: Stop playback\n animationItem.goToAndStop(action.frames[0] - animationItem.firstFrame - 1, true);\n }\n };\n document.addEventListener(\"scroll\", scrollHandler);\n return function () {\n document.removeEventListener(\"scroll\", scrollHandler);\n };\n };\n var cursorModeHandler = function cursorModeHandler() {\n var handleCursor = function handleCursor(_x, _y) {\n var x = _x;\n var y = _y;\n // Resolve cursor position if cursor is inside container\n if (x !== -1 && y !== -1) {\n // Get container cursor position\n var pos = getContainerCursorPosition(wrapper, x, y);\n // Use the resolved position\n x = pos.x;\n y = pos.y;\n }\n // Find the first action that satisfies the current position conditions\n var action = actions.find(function (_ref3) {\n var position = _ref3.position;\n if (position && Array.isArray(position.x) && Array.isArray(position.y)) {\n return x >= position.x[0] && x <= position.x[1] && y >= position.y[0] && y <= position.y[1];\n }\n if (position && !Number.isNaN(position.x) && !Number.isNaN(position.y)) {\n return x === position.x && y === position.y;\n }\n return false;\n });\n // Skip if no matching action was found!\n if (!action) {\n return;\n }\n // Process action types:\n if (action.type === \"seek\" && action.position && Array.isArray(action.position.x) && Array.isArray(action.position.y) && action.frames.length === 2) {\n // Seek: Go to a frame based on player scroll position action\n var xPercent = (x - action.position.x[0]) / (action.position.x[1] - action.position.x[0]);\n var yPercent = (y - action.position.y[0]) / (action.position.y[1] - action.position.y[0]);\n animationItem.playSegments(action.frames, true);\n animationItem.goToAndStop(Math.ceil((xPercent + yPercent) / 2 * (action.frames[1] - action.frames[0])), true);\n }\n if (action.type === \"loop\") {\n animationItem.playSegments(action.frames, true);\n }\n if (action.type === \"play\") {\n // Play: Reset segments and continue playing full animation from current position\n if (animationItem.isPaused) {\n animationItem.resetSegments(false);\n }\n animationItem.playSegments(action.frames);\n }\n if (action.type === \"stop\") {\n animationItem.goToAndStop(action.frames[0], true);\n }\n };\n var mouseMoveHandler = function mouseMoveHandler(ev) {\n handleCursor(ev.clientX, ev.clientY);\n };\n var mouseOutHandler = function mouseOutHandler() {\n handleCursor(-1, -1);\n };\n wrapper.addEventListener(\"mousemove\", mouseMoveHandler);\n wrapper.addEventListener(\"mouseout\", mouseOutHandler);\n return function () {\n wrapper.removeEventListener(\"mousemove\", mouseMoveHandler);\n wrapper.removeEventListener(\"mouseout\", mouseOutHandler);\n };\n };\n switch (mode) {\n case \"scroll\":\n return scrollModeHandler();\n case \"cursor\":\n return cursorModeHandler();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mode, animationItem]);\n};\nvar useLottieInteractivity = function useLottieInteractivity(_ref4) {\n var actions = _ref4.actions,\n mode = _ref4.mode,\n lottieObj = _ref4.lottieObj;\n var animationItem = lottieObj.animationItem,\n View = lottieObj.View,\n animationContainerRef = lottieObj.animationContainerRef;\n useInitInteractivity({\n actions: actions,\n animationItem: animationItem,\n mode: mode,\n wrapperRef: animationContainerRef\n });\n return View;\n};\n\nvar _excluded = [\"style\", \"interactivity\"];\nvar Lottie = function Lottie(props) {\n var _a, _b, _c;\n var style = props.style,\n interactivity = props.interactivity,\n lottieProps = _objectWithoutProperties(props, _excluded);\n /**\n * Initialize the 'useLottie' hook\n */\n var _useLottie = useLottie(lottieProps, style),\n View = _useLottie.View,\n play = _useLottie.play,\n stop = _useLottie.stop,\n pause = _useLottie.pause,\n setSpeed = _useLottie.setSpeed,\n goToAndStop = _useLottie.goToAndStop,\n goToAndPlay = _useLottie.goToAndPlay,\n setDirection = _useLottie.setDirection,\n playSegments = _useLottie.playSegments,\n setSubframe = _useLottie.setSubframe,\n getDuration = _useLottie.getDuration,\n destroy = _useLottie.destroy,\n animationContainerRef = _useLottie.animationContainerRef,\n animationLoaded = _useLottie.animationLoaded,\n animationItem = _useLottie.animationItem;\n /**\n * Make the hook variables/methods available through the provided 'lottieRef'\n */\n useEffect(function () {\n if (props.lottieRef) {\n props.lottieRef.current = {\n play: play,\n stop: stop,\n pause: pause,\n setSpeed: setSpeed,\n goToAndPlay: goToAndPlay,\n goToAndStop: goToAndStop,\n setDirection: setDirection,\n playSegments: playSegments,\n setSubframe: setSubframe,\n getDuration: getDuration,\n destroy: destroy,\n animationContainerRef: animationContainerRef,\n animationLoaded: animationLoaded,\n animationItem: animationItem\n };\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [(_a = props.lottieRef) === null || _a === void 0 ? void 0 : _a.current]);\n return useLottieInteractivity({\n lottieObj: {\n View: View,\n play: play,\n stop: stop,\n pause: pause,\n setSpeed: setSpeed,\n goToAndStop: goToAndStop,\n goToAndPlay: goToAndPlay,\n setDirection: setDirection,\n playSegments: playSegments,\n setSubframe: setSubframe,\n getDuration: getDuration,\n destroy: destroy,\n animationContainerRef: animationContainerRef,\n animationLoaded: animationLoaded,\n animationItem: animationItem\n },\n actions: (_b = interactivity === null || interactivity === void 0 ? void 0 : interactivity.actions) !== null && _b !== void 0 ? _b : [],\n mode: (_c = interactivity === null || interactivity === void 0 ? void 0 : interactivity.mode) !== null && _c !== void 0 ? _c : \"scroll\"\n });\n};\n\nexport { Lottie as default, useLottie, useLottieInteractivity };\n//# sourceMappingURL=index.es.js.map\n","import React, { useEffect, useState } from 'react';\nimport type { OnboardImageComponentProps } from './OnboardImageProps.generated';\nimport Image from '../Image/Image';\nimport useNode from '../useNode';\nimport Lottie from 'lottie-react';\n\nfunction OnboardImage({ node }: OnboardImageComponentProps) {\n node = useNode(node);\n const [lottie, setLottie] = useState<string | null>(null);\n\n useEffect(() => {\n if (node.attributes?.lottie) {\n fetch(node.attributes?.lottie)\n .then((res) => res.json())\n .then((data) => setLottie(data));\n }\n }, [node.attributes?.lottie]);\n\n if (node.attributes?.video_url) {\n return <video autoPlay muted loop src={node.attributes?.video_url} />;\n }\n\n if (node.attributes?.lottie) {\n if (lottie) {\n return <Lottie animationData={lottie} />;\n } else {\n return <div>Loading...</div>;\n }\n }\n\n return <Image node={{ ...node, type: 'image' } as any} />;\n}\n\nexport default React.memo(OnboardImage);\n","import React from 'react';\nimport type { OnboardItemComponentProps } from './OnboardItemProps.generated';\nimport useNode from '../useNode';\nimport { RenderNode } from '../..';\nimport { parseSize } from '../../size-matters';\n\nfunction OnboardItem({ node }: OnboardItemComponentProps) {\n node = useNode(node);\n const flexDirection = node.attributes?.flexDirection;\n const display = node.attributes?.display;\n const paddingHorizontal = parseSize(node.attributes?.paddingHorizontal);\n return (\n <div\n className=\"embla__slide\"\n style={{\n gap: parseSize(node.attributes?.gap),\n flexDirection,\n display,\n paddingRight: paddingHorizontal,\n paddingLeft: paddingHorizontal,\n }}\n >\n {node.children && <RenderNode node={node.children} />}\n </div>\n );\n}\n\nexport default React.memo(OnboardItem);\n","import React from 'react';\nimport type { TextComponentProps } from './TextProps.generated';\nimport useNode from '../useNode';\nimport { useRenderStore } from '../../store';\nimport { extractTextStyle } from '../../utils/extractTextStyle';\n\nfunction Text({ node }: TextComponentProps) {\n node = useNode(node);\n const { appConfig } = useRenderStore((s) => ({\n appConfig: s.appConfig,\n }));\n const { defaultLanguage, localication } = appConfig;\n const keyOrText: string = node.children as string;\n const style = extractTextStyle(node);\n\n return (\n <p style={style}>\n {localication?.[defaultLanguage ?? 'en']?.[keyOrText] ?? keyOrText}\n </p>\n );\n}\n\nexport default React.memo(Text);\n","import React from 'react';\nimport type { OnboardSubtitleComponentProps } from './OnboardSubtitleProps.generated';\nimport Text from '../Text/Text';\nimport useNode from '../useNode';\n\nfunction OnboardSubtitle({ node }: OnboardSubtitleComponentProps) {\n node = useNode(node);\n return <Text node={node} />;\n}\n\nexport default React.memo(OnboardSubtitle);\n","import React from 'react';\nimport type { OnboardTitleComponentProps } from './OnboardTitleProps.generated';\nimport Text from '../Text/Text';\nimport useNode from '../useNode';\n\nfunction OnboardTitle({ node }: OnboardTitleComponentProps) {\n node = useNode(node);\n return <Text node={node} />;\n}\n\nexport default React.memo(OnboardTitle);\n","import { ViewPropsGenerated } from '../build-components/View/ViewProps.generated';\nimport type { NodeData } from '../types/Node';\n\nexport function extractViewStyle<T extends ViewPropsGenerated['attributes']>(\n node: NodeData<T>,\n) {\n const attributes = node.attributes;\n const scrollable = attributes?.scrollable ?? false;\n const style: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n };\n if (!attributes) return style;\n if (scrollable) {\n if (attributes.flexDirection === 'row') {\n style.overflowX = 'auto';\n style.overflowY = 'hidden';\n style.maxWidth = '100%';\n style.maxHeight = '100%';\n } else {\n style.overflowY = 'auto';\n style.overflowX = 'hidden';\n style.maxHeight = '100%';\n style.maxWidth = '100%';\n }\n }\n if (attributes.flexDirection) style.flexDirection = attributes.flexDirection;\n if (attributes.alignItems)\n style.alignItems =\n attributes.alignItems as React.CSSProperties['alignItems'];\n if (attributes.justifyContent)\n style.justifyContent =\n attributes.justifyContent as React.CSSProperties['justifyContent'];\n if (attributes.gap !== undefined) style.gap = attributes.gap;\n if (attributes.padding !== undefined) style.padding = attributes.padding;\n if (attributes.margin !== undefined) style.margin = attributes.margin;\n if (attributes.backgroundColor)\n style.backgroundColor = attributes.backgroundColor;\n if (attributes.borderRadius !== undefined)\n style.borderRadius = attributes.borderRadius;\n if (attributes.width !== undefined) style.width = attributes.width;\n if (attributes.height !== undefined) style.height = attributes.height;\n return style;\n}\n","import React from 'react';\nimport type {\n ViewComponentProps,\n ViewPropsGenerated,\n} from './ViewProps.generated';\nimport RenderNode from '../RenderNode.generated';\nimport { Node } from '../../types/Node';\nimport useNode from '../useNode';\nimport { extractViewStyle } from '../../utils/extractViewStyle';\n\nexport function View({ node }: ViewComponentProps) {\n node = useNode(node);\n return (\n <div style={extractViewStyle(node)} className=\"scroll-container\">\n <RenderNode node={node.children as Node} />\n </div>\n );\n}\n\nexport default React.memo(View);\n","/* AUTO-GENERATED FILE - DO NOT EDIT */\nimport React from 'react';\n\nimport {\n Node,\n NodeData,\n isNodeArray,\n isNodeNullOrUndefined,\n isNodeString,\n} from '../index';\n\nimport { other } from './other';\n\n// Builder components\nimport Button from './Button/Button';\nimport Carousel from './Carousel/Carousel';\nimport CarouselButtons from './CarouselButtons/CarouselButtons';\nimport CarouselDots from './CarouselDots/CarouselDots';\nimport CarouselItem from './CarouselItem/CarouselItem';\nimport CarouselProvider from './CarouselProvider/CarouselProvider';\nimport Image from './Image/Image';\nimport Onboard from './Onboard/Onboard';\nimport OnboardButton from './OnboardButton/OnboardButton';\nimport OnboardButtons from './OnboardButtons/OnboardButtons';\nimport OnboardDot from './OnboardDot/OnboardDot';\nimport OnboardFooter from './OnboardFooter/OnboardFooter';\nimport OnboardImage from './OnboardImage/OnboardImage';\nimport OnboardItem from './OnboardItem/OnboardItem';\nimport OnboardProvider from './OnboardProvider/OnboardProvider';\nimport OnboardSubtitle from './OnboardSubtitle/OnboardSubtitle';\nimport OnboardTitle from './OnboardTitle/OnboardTitle';\nimport Text from './Text/Text';\nimport View from './View/View';\n\nfunction RenderNode({ node }: { node: Node }) {\n if (isNodeNullOrUndefined(node)) {\n return null;\n }\n if (isNodeString(node)) {\n return <Text node={{ children: node as string, type: 'text' }} />;\n }\n if (isNodeArray(node)) {\n return (\n <>\n {(node as Node[]).map((item: Node, index) => (\n <RenderNode key={index} node={item} />\n ))}\n </>\n );\n }\n\n const simpleNode = node as NodeData;\n switch (simpleNode?.type) {\n case 'button':\n return <Button node={simpleNode} />;\n case 'carousel':\n return <Carousel node={simpleNode} />;\n case 'carouselButtons':\n return <CarouselButtons node={simpleNode} />;\n case 'carouselDots':\n return <CarouselDots node={simpleNode} />;\n case 'carouselItem':\n return <CarouselItem node={simpleNode} />;\n case 'carouselProvider':\n return <CarouselProvider node={simpleNode} />;\n case 'image':\n return <Image node={simpleNode} />;\n case 'Onboard':\n return <Onboard node={simpleNode} />;\n case 'OnboardButton':\n return <OnboardButton node={simpleNode} />;\n case 'OnboardButtons':\n return <OnboardButtons node={simpleNode} />;\n case 'OnboardDot':\n return <OnboardDot node={simpleNode} />;\n case 'OnboardFooter':\n return <OnboardFooter node={simpleNode} />;\n case 'OnboardImage':\n return <OnboardImage node={simpleNode} />;\n case 'OnboardItem':\n return <OnboardItem node={simpleNode} />;\n case 'OnboardProvider':\n return <OnboardProvider node={simpleNode} />;\n case 'OnboardSubtitle':\n return <OnboardSubtitle node={simpleNode} />;\n case 'OnboardTitle':\n return <OnboardTitle node={simpleNode} />;\n case 'text':\n return <Text node={simpleNode} />;\n case 'view':\n return <View node={simpleNode} />;\n default:\n return other(simpleNode?.type, node);\n }\n}\n\nexport default React.memo(RenderNode);\n","/* AUTO-GENERATED FILE - DO NOT EDIT */\n\n// Export resolved patterns (after extends resolution)\nexport const patterns = [\n {\n schemaVersion: 1,\n allowUnknownAttributes: false,\n pattern: {\n type: 'button',\n children: 'string',\n attributes: {\n color: 'string',\n fontSize: 'number',\n fontWeight: [\n 'normal',\n 'bold',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n ],\n },\n },\n },\n {\n schemaVersion: 1,\n allowUnknownAttributes: false,\n pattern: { type: 'carousel', children: 'carouselItem', attributes: {} },\n },\n {\n schemaVersion: 1,\n allowUnknownAttributes: false,\n pattern: {\n type: 'carouselButtons',\n children: 'never',\n attributes: {\n buttonType: ['previous_button', 'next_button', 'skip_button'],\n skipNumber: 'number',\n },\n },\n },\n {\n schemaVersion: 1,\n allowUnknownAttributes: false,\n pattern: {\n type: 'carouselDots',\n children: 'never',\n attributes: {\n dotType: [\n 'expanding_dot',\n 'normal_dot',\n 'scaling_dot',\n 'sliding_border',\n 'sliding_dot',\n 'liquid_like',\n ],\n },\n },\n },\n {\n schemaVersion: 1,\n allowUnknownAttributes: false,\n pattern: { type: 'carouselItem', children: 'node', attributes: {} },\n },\n {\n schemaVersion: 1,\n allowUnknownAttributes: false,\n pattern: { type: 'carouselProvider', children: 'node', attributes: {} },\n },\n {\n schemaVersion: 1,\n allowUnknownAttributes: false,\n pattern: {\n type: 'image',\n children: 'never',\n attributes: {\n src: 'string',\n width: 'number',\n height: 'number',\n resizeMode: ['cover', 'contain', 'stretch', 'center'],\n borderRadius: 'number',\n },\n },\n },\n {\n schemaVersion: 1,\n allowUnknownAttributes: false,\n pattern: { type: 'Onboard', children: 'node', attributes: {} },\n },\n {\n schemaVersion: 1,\n allowUnknownAttributes: false,\n pattern: {\n type: 'OnboardButton',\n children: 'never',\n attributes: {\n labelKey: 'string',\n button_text_color: 'string',\n animation: [\n 'simple-animation',\n 'line-animation',\n 'blur',\n 'blur-animation',\n 'blur-line-animation',\n ],\n animation_color: 'string',\n button_background_color: 'string',\n flex: 'number',\n events: 'EventObject[]',\n },\n },\n types: {\n EventObject: {\n type: ['Permission', 'Navigate'],\n permission: ['att', 'notification', 'rating', 'GDPR', 'null'],\n navigate_to: 'string',\n targetIndex: 'number',\n },\n },\n },\n {\n schemaVersion: 1,\n allowUnknownAttributes: false,\n pattern: {\n type: 'OnboardButtons',\n children: 'node',\n attributes: {\n buttonType: ['previous_button', 'next_button', 'skip_button'],\n skipNumber: 'number',\n buttons_direction: ['row', 'column'],\n forIndex: 'number',\n seperatorColor: 'string',\n condition: ['carousel-index'],\n conditionVariable: 'number',\n },\n },\n },\n {\n schemaVersion: 1,\n allowUnknownAttributes: false,\n pattern: {\n type: 'OnboardDot',\n children: 'node',\n attributes: {\n dotType: [\n 'expanding_dot',\n 'normal_dot',\n 'scaling_dot',\n 'sliding_border',\n 'sliding_dot',\n 'liquid_like',\n ],\n inactive_dot_opacity: 'number',\n expanding_dot_width: 'number',\n dot_style: 'string',\n container_style: 'string',\n active_dot_color: 'string',\n },\n },\n },\n {\n schemaVersion: 1,\n allowUnknownAttributes: false,\n pattern: {\n type: 'OnboardFooter',\n children: 'node',\n attributes: {\n color: 'string',\n fontSize: 'number',\n fontWeight: [\n 'normal',\n 'bold',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n ],\n textAlign: ['left', 'center', 'right', 'justify'],\n scrollable: 'boolean',\n flexDirection: ['row', 'column'],\n alignItems: ['flex-start', 'center', 'flex-end', 'stretch', 'baseline'],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'string',\n padding: 'number',\n paddingHorizontal: 'string',\n paddingVertical: 'string',\n paddingTop: 'string',\n paddingBottom: 'string',\n paddingLeft: 'string',\n paddingRight: 'string',\n margin: 'string',\n marginHorizontal: 'string',\n marginVertical: 'string',\n marginTop: 'string',\n marginBottom: 'string',\n marginLeft: 'string',\n marginRight: 'string',\n backgroundColor: 'string',\n borderRadius: 'string',\n width: 'number',\n height: 'number',\n textLocalizationKey: 'string',\n linkedWordFirstLocalizationKey: 'string',\n linkedWordFirstColor: 'string',\n linkedWordFirstPage: 'string',\n linkedWordSecondLocalizationKey: 'string',\n linkedWordSecondColor: 'string',\n linkedWordSecondPage: 'string',\n },\n },\n defaults: { paddingHorizontal: '24@s' },\n types: {},\n },\n {\n schemaVersion: 1,\n allowUnknownAttributes: false,\n pattern: {\n type: 'OnboardImage',\n children: 'node',\n attributes: {\n src: 'string',\n width: 'number',\n height: 'number',\n resizeMode: ['cover', 'contain', 'stretch', 'center'],\n borderRadius: 'number',\n video_url: 'string',\n lottie: 'string',\n },\n },\n types: {},\n defaults: {},\n },\n {\n schemaVersion: 1,\n allowUnknownAttributes: false,\n pattern: {\n type: 'OnboardItem',\n children: 'node',\n attributes: {\n display: ['flex', 'block'],\n gap: 'string',\n flexDirection: ['row', 'column'],\n paddingHorizontal: 'string',\n },\n },\n defaults: {\n gap: '16@vs',\n display: 'flex',\n flexDirection: 'column',\n paddingHorizontal: '24@s',\n },\n },\n {\n schemaVersion: 1,\n allowUnknownAttributes: false,\n pattern: {\n type: 'OnboardProvider',\n children: 'node',\n attributes: {\n theme: 'string',\n use_safe_area_inset: 'boolean',\n paddingTop: 'number',\n paddingRight: 'number',\n paddingBottom: 'number',\n paddingLeft: 'number',\n },\n },\n defaults: {\n paddingTop: 0,\n paddingRight: 0,\n paddingBottom: 8,\n paddingLeft: 0,\n },\n },\n {\n schemaVersion: 1,\n allowUnknownAttributes: false,\n pattern: {\n type: 'OnboardSubtitle',\n children: 'node',\n attributes: {\n color: 'string',\n fontSize: 'number',\n fontWeight: [\n 'normal',\n 'bold',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n ],\n textAlign: ['left', 'center', 'right', 'justify'],\n scrollable: 'boolean',\n flexDirection: ['row', 'column'],\n alignItems: ['flex-start', 'center', 'flex-end', 'stretch', 'baseline'],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'string',\n padding: 'number',\n paddingHorizontal: 'string',\n paddingVertical: 'string',\n paddingTop: 'string',\n paddingBottom: 'string',\n paddingLeft: 'string',\n paddingRight: 'string',\n margin: 'string',\n marginHorizontal: 'string',\n marginVertical: 'string',\n marginTop: 'string',\n marginBottom: 'string',\n marginLeft: 'string',\n marginRight: 'string',\n backgroundColor: 'string',\n borderRadius: 'string',\n width: 'number',\n height: 'number',\n },\n },\n defaults: { fontSize: '14@fs', fontWeight: '600' },\n types: {},\n },\n {\n schemaVersion: 1,\n allowUnknownAttributes: false,\n pattern: {\n type: 'OnboardTitle',\n children: 'node',\n attributes: {\n color: 'string',\n fontSize: 'number',\n fontWeight: [\n 'normal',\n 'bold',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n ],\n textAlign: ['left', 'center', 'right', 'justify'],\n scrollable: 'boolean',\n flexDirection: ['row', 'column'],\n alignItems: ['flex-start', 'center', 'flex-end', 'stretch', 'baseline'],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'string',\n padding: 'number',\n paddingHorizontal: 'string',\n paddingVertical: 'string',\n paddingTop: 'string',\n paddingBottom: 'string',\n paddingLeft: 'string',\n paddingRight: 'string',\n margin: 'string',\n marginHorizontal: 'string',\n marginVertical: 'string',\n marginTop: 'string',\n marginBottom: 'string',\n marginLeft: 'string',\n marginRight: 'string',\n backgroundColor: 'string',\n borderRadius: 'string',\n width: 'number',\n height: 'number',\n },\n },\n defaults: { fontSize: '24@fs', fontWeight: '700', textAlign: 'center' },\n types: {},\n },\n {\n schemaVersion: 1,\n allowUnknownAttributes: false,\n pattern: {\n type: 'text',\n children: 'string',\n attributes: {\n scrollable: 'boolean',\n flexDirection: ['row', 'column'],\n alignItems: ['flex-start', 'center', 'flex-end', 'stretch', 'baseline'],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'string',\n padding: 'number',\n paddingHorizontal: 'string',\n paddingVertical: 'string',\n paddingTop: 'string',\n paddingBottom: 'string',\n paddingLeft: 'string',\n paddingRight: 'string',\n margin: 'string',\n marginHorizontal: 'string',\n marginVertical: 'string',\n marginTop: 'string',\n marginBottom: 'string',\n marginLeft: 'string',\n marginRight: 'string',\n backgroundColor: 'string',\n borderRadius: 'string',\n width: 'number',\n height: 'number',\n color: 'string',\n fontSize: 'number',\n fontWeight: [\n 'normal',\n 'bold',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n ],\n textAlign: ['left', 'center', 'right', 'justify'],\n },\n },\n types: {},\n defaults: {},\n },\n {\n schemaVersion: 1,\n allowUnknownAttributes: false,\n pattern: {\n type: 'view',\n children: ['node', 'array'],\n attributes: {\n scrollable: 'boolean',\n flexDirection: ['row', 'column'],\n alignItems: ['flex-start', 'center', 'flex-end', 'stretch', 'baseline'],\n justifyContent: [\n 'flex-start',\n 'center',\n 'flex-end',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ],\n gap: 'string',\n padding: 'number',\n paddingHorizontal: 'string',\n paddingVertical: 'string',\n paddingTop: 'string',\n paddingBottom: 'string',\n paddingLeft: 'string',\n paddingRight: 'string',\n margin: 'string',\n marginHorizontal: 'string',\n marginVertical: 'string',\n marginTop: 'string',\n marginBottom: 'string',\n marginLeft: 'string',\n marginRight: 'string',\n backgroundColor: 'string',\n borderRadius: 'string',\n width: 'number',\n height: 'number',\n },\n },\n },\n] as const;\n","/* AUTO-GENERATED FILE - DO NOT EDIT */\n\nexport { default as RenderNode } from './RenderNode.generated';\n\nexport { patterns } from './patterns.generated';\n\nexport const allcomponentNames = [\n 'button',\n 'carousel',\n 'carouselButtons',\n 'carouselDots',\n 'carouselItem',\n 'carouselProvider',\n 'image',\n 'Onboard',\n 'OnboardButton',\n 'OnboardButtons',\n 'OnboardDot',\n 'OnboardFooter',\n 'OnboardImage',\n 'OnboardItem',\n 'OnboardProvider',\n 'OnboardSubtitle',\n 'OnboardTitle',\n 'text',\n 'view',\n] as const;\n\nexport type {\n ButtonPropsGenerated,\n ButtonComponentProps,\n} from './Button/ButtonProps.generated';\nexport type {\n CarouselPropsGenerated,\n CarouselComponentProps,\n} from './Carousel/CarouselProps.generated';\nexport type {\n CarouselButtonsPropsGenerated,\n CarouselButtonsComponentProps,\n} from './CarouselButtons/CarouselButtonsProps.generated';\nexport type {\n CarouselDotsPropsGenerated,\n CarouselDotsComponentProps,\n} from './CarouselDots/CarouselDotsProps.generated';\nexport type {\n CarouselItemPropsGenerated,\n CarouselItemComponentProps,\n} from './CarouselItem/CarouselItemProps.generated';\nexport type {\n CarouselProviderPropsGenerated,\n CarouselProviderComponentProps,\n} from './CarouselProvider/CarouselProviderProps.generated';\nexport type {\n ImagePropsGenerated,\n ImageComponentProps,\n} from './Image/ImageProps.generated';\nexport type {\n OnboardPropsGenerated,\n OnboardComponentProps,\n} from './Onboard/OnboardProps.generated';\nexport type {\n OnboardButtonPropsGenerated,\n OnboardButtonComponentProps,\n} from './OnboardButton/OnboardButtonProps.generated';\nexport type {\n OnboardButtonsPropsGenerated,\n OnboardButtonsComponentProps,\n} from './OnboardButtons/OnboardButtonsProps.generated';\nexport type {\n OnboardDotPropsGenerated,\n OnboardDotComponentProps,\n} from './OnboardDot/OnboardDotProps.generated';\nexport type {\n OnboardFooterPropsGenerated,\n OnboardFooterComponentProps,\n} from './OnboardFooter/OnboardFooterProps.generated';\nexport type {\n OnboardImagePropsGenerated,\n OnboardImageComponentProps,\n} from './OnboardImage/OnboardImageProps.generated';\nexport type {\n OnboardItemPropsGenerated,\n OnboardItemComponentProps,\n} from './OnboardItem/OnboardItemProps.generated';\nexport type {\n OnboardProviderPropsGenerated,\n OnboardProviderComponentProps,\n} from './OnboardProvider/OnboardProviderProps.generated';\nexport type {\n OnboardSubtitlePropsGenerated,\n OnboardSubtitleComponentProps,\n} from './OnboardSubtitle/OnboardSubtitleProps.generated';\nexport type {\n OnboardTitlePropsGenerated,\n OnboardTitleComponentProps,\n} from './OnboardTitle/OnboardTitleProps.generated';\nexport type {\n TextPropsGenerated,\n TextComponentProps,\n} from './Text/TextProps.generated';\nexport type {\n ViewPropsGenerated,\n ViewComponentProps,\n} from './View/ViewProps.generated';\n","import { patterns as generatedPatterns } from '../build-components';\nimport type { NodeDefaultAttribute } from '../types/Node';\n\ntype Pattern = {\n schemaVersion: number;\n allowUnknownAttributes: boolean;\n extends: string;\n pattern: {\n type: string;\n children: unknown;\n attributes?: Record<string, string | string[]>;\n };\n defaults?: NodeDefaultAttribute;\n\n // Optional custom complex types referenced by attributes like \"X[]\" or \"X\"\n // Each entry maps a type name (e.g., \"EventObject\") to its field schema\n // where the inner record maps fieldName -> primitive type or enum options\n types?: Record<string, Record<string, string | string[]>>;\n // Optional defaults to be applied to node.attributes if not provided\n};\n\nconst patterns: Pattern[] = generatedPatterns as unknown as Pattern[];\n\n// Build a fast lookup map without normalization for direct access\nconst patternIndex: Map<string, Pattern> = new Map(\n patterns.map((p) => [p.pattern.type, p]),\n);\n\nexport function getPatternByType(type?: string | null): Pattern | undefined {\n if (typeof type !== 'string') return undefined;\n return patternIndex.get(type);\n}\n\nexport function getAttributeSchema(\n type?: string | null,\n): Record<string, string | string[]> | undefined {\n const p = getPatternByType(type);\n return p?.pattern.attributes;\n}\n\n/** Returns defaults block (if any) for a given component type */\nexport function getDefaultsForType(\n type?: string | null,\n): NodeDefaultAttribute | undefined {\n const p = getPatternByType(type);\n return p?.defaults as NodeDefaultAttribute | undefined;\n}\n\n/**\n * Returns the schema of a custom complex type declared under a component pattern's `types` block.\n * For example, OnboardButton.pattern.types.EventObject\n */\nexport function getTypeSchema(\n componentType?: string | null,\n typeName?: string | null,\n): Record<string, string | string[]> | undefined {\n if (!componentType || !typeName) return undefined;\n const p = getPatternByType(componentType);\n // Some JSON imports may not type-check \"types\" so we fallback to any access\n const types: Record<string, Record<string, string | string[]>> | undefined = (\n p as unknown as {\n types?: Record<string, Record<string, string | string[]>>;\n }\n )?.types;\n return types?.[typeName];\n}\n\n/** Utility: returns true if the type name refers to a primitive scalar */\nexport function isPrimitiveType(typeName: string): boolean {\n return (\n typeName === 'string' || typeName === 'number' || typeName === 'boolean'\n );\n}\n\n/** Utility: parse `X[]` forms and return the item type if present */\nexport function getArrayItemType(typeName: string): string | null {\n if (typeof typeName !== 'string') return null;\n return typeName.endsWith('[]') ? typeName.slice(0, -2) : null;\n}\n","import React from 'react';\nimport { Node, NodeData, NodeDefaultAttribute } from './types/Node';\nimport { isNodeString } from './utils/analyseNode';\nimport {\n getAttributeSchema,\n getTypeSchema,\n getArrayItemType,\n isPrimitiveType,\n} from './utils/patterns';\n\ntype AttributesEditorProps = {\n node: Node;\n onChange: (next: Node) => void;\n};\n\nfunction Field({\n name,\n type,\n value,\n onChange,\n componentType,\n}: {\n name: string;\n type: string | string[];\n value: any;\n onChange: (v: any) => void;\n // The current node's component type is needed to resolve custom type schemas\n componentType?: string;\n}) {\n // Render enum selector\n if (Array.isArray(type)) {\n return (\n <select\n value={value ?? ''}\n onChange={(e) => onChange(e.target.value)}\n className=\"input\"\n >\n <option value=\"\">(none)</option>\n {type.map((opt) => (\n <option key={opt} value={opt}>\n {opt}\n </option>\n ))}\n </select>\n );\n }\n\n // Arrays: detect X[] (including string[]/number[]/boolean[]/CustomType[])\n const itemType = typeof type === 'string' ? getArrayItemType(type) : null;\n if (itemType) {\n const arr: any[] = Array.isArray(value) ? value : [];\n\n // Primitive arrays with add/remove controls\n if (isPrimitiveType(itemType)) {\n return (\n <div style={{ display: 'grid', gap: 8 }}>\n {arr.map((item, idx) => (\n <div\n key={idx}\n style={{ display: 'flex', gap: 8, alignItems: 'center' }}\n >\n {itemType === 'number' ? (\n <input\n type=\"number\"\n value={item ?? ''}\n onChange={(e) => {\n const next = [...arr];\n next[idx] =\n e.target.value === ''\n ? undefined\n : Number(e.target.value);\n onChange(next);\n }}\n className=\"input\"\n style={{ flex: 1 }}\n />\n ) : itemType === 'boolean' ? (\n <input\n type=\"checkbox\"\n checked={Boolean(item)}\n onChange={(e) => {\n const next = [...arr];\n next[idx] = e.target.checked;\n onChange(next);\n }}\n />\n ) : (\n <input\n type=\"text\"\n value={item ?? ''}\n onChange={(e) => {\n const next = [...arr];\n next[idx] =\n e.target.value === '' ? undefined : e.target.value;\n onChange(next);\n }}\n className=\"input\"\n style={{ flex: 1 }}\n />\n )}\n <button\n type=\"button\"\n onClick={() => {\n const next = arr.filter((_, i) => i !== idx);\n onChange(next.length ? next : undefined);\n }}\n >\n remove\n </button>\n </div>\n ))}\n <div>\n <button\n type=\"button\"\n onClick={() => {\n const next = [\n ...arr,\n itemType === 'boolean'\n ? false\n : itemType === 'number'\n ? 0\n : '',\n ];\n onChange(next);\n }}\n >\n add\n </button>\n </div>\n </div>\n );\n }\n\n // Object arrays with nested editors\n const schema = getTypeSchema(componentType, itemType) ?? {};\n return (\n <div style={{ display: 'grid', gap: 8 }}>\n {arr.map((item, idx) => {\n const obj = (item ?? {}) as Record<string, unknown>;\n return (\n <div\n key={idx}\n style={{ border: '1px solid #ddd', borderRadius: 6, padding: 8 }}\n >\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: '1fr 1fr',\n gap: 8,\n }}\n >\n {Object.entries(schema).map(([fieldName, fieldType]) => (\n <React.Fragment key={fieldName}>\n <div style={{ alignSelf: 'center' }}>{fieldName}</div>\n <Field\n name={fieldName}\n type={fieldType}\n value={obj?.[fieldName as keyof typeof obj]}\n onChange={(val) => {\n const next = [...arr];\n const nextObj = { ...(obj ?? {}), [fieldName]: val };\n next[idx] = nextObj;\n onChange(next);\n }}\n componentType={componentType}\n />\n </React.Fragment>\n ))}\n </div>\n <div style={{ marginTop: 8 }}>\n <button\n type=\"button\"\n onClick={() => {\n const next = arr.filter((_, i) => i !== idx);\n onChange(next.length ? next : undefined);\n }}\n >\n remove\n </button>\n </div>\n </div>\n );\n })}\n <div>\n <button\n type=\"button\"\n onClick={() => {\n const empty: Record<string, unknown> = {};\n const next = [...arr, empty];\n onChange(next);\n }}\n >\n add\n </button>\n </div>\n </div>\n );\n }\n\n // Non-array complex object types defined under pattern `types`\n if (typeof type === 'string' && !isPrimitiveType(type)) {\n const schema = getTypeSchema(componentType, type);\n if (schema) {\n const obj = (value ?? {}) as Record<string, unknown>;\n return (\n <div\n style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 8 }}\n >\n {Object.entries(schema).map(([fieldName, fieldType]) => (\n <React.Fragment key={fieldName}>\n <div style={{ alignSelf: 'center' }}>{fieldName}</div>\n <Field\n name={fieldName}\n type={fieldType}\n value={obj?.[fieldName as keyof typeof obj]}\n onChange={(val) => {\n const nextObj = { ...(obj ?? {}), [fieldName]: val };\n onChange(nextObj);\n }}\n componentType={componentType}\n />\n </React.Fragment>\n ))}\n </div>\n );\n }\n }\n\n if (type === 'number') {\n return (\n <input\n type=\"number\"\n value={value ?? ''}\n onChange={(e) =>\n onChange(e.target.value === '' ? undefined : Number(e.target.value))\n }\n className=\"input\"\n />\n );\n }\n if (type === 'boolean') {\n return (\n <input\n type=\"checkbox\"\n checked={Boolean(value)}\n onChange={(e) => onChange(e.target.checked)}\n />\n );\n }\n // Legacy support: string[]\n if (type === 'string[]') {\n const arr: string[] = Array.isArray(value) ? value : [];\n return (\n <div style={{ display: 'grid', gap: 8 }}>\n {arr.map((item, idx) => (\n <div\n key={idx}\n style={{ display: 'flex', gap: 8, alignItems: 'center' }}\n >\n <input\n type=\"text\"\n value={item ?? ''}\n onChange={(e) => {\n const next = [...arr];\n next[idx] = e.target.value;\n onChange(next);\n }}\n className=\"input\"\n style={{ flex: 1 }}\n />\n <button\n type=\"button\"\n onClick={() => {\n const next = arr.filter((_, i) => i !== idx);\n onChange(next.length ? next : undefined);\n }}\n >\n remove\n </button>\n </div>\n ))}\n <div>\n <button\n type=\"button\"\n onClick={() => {\n const next = [...arr, ''];\n onChange(next);\n }}\n >\n add\n </button>\n </div>\n </div>\n );\n }\n return (\n <input\n type=\"text\"\n value={value ?? ''}\n onChange={(e) =>\n onChange(e.target.value === '' ? undefined : e.target.value)\n }\n className=\"input\"\n />\n );\n}\n\nexport function AttributesEditor({ node, onChange }: AttributesEditorProps) {\n if (!node || isNodeString(node)) return null;\n const data = node as NodeData<NodeDefaultAttribute>;\n const schema = getAttributeSchema(data?.type) ?? {};\n const attributes = (data?.attributes ?? {}) as NodeDefaultAttribute;\n\n const entries = Object.entries(schema);\n if (entries.length === 0) {\n return (\n <div style={{ padding: 8, opacity: 0.7 }}>No editable attributes</div>\n );\n }\n\n return (\n <div style={{}}>\n {entries.map(([name, type]) => (\n <React.Fragment key={name}>\n <p style={{ alignSelf: 'center', marginBottom: 4, fontWeight: 700 }}>\n {name}\n </p>\n <div style={{ marginBottom: 16 }}>\n <Field\n name={name}\n type={type}\n value={attributes?.[name]}\n onChange={(val) => {\n const next: NodeData<NodeDefaultAttribute> = {\n ...data,\n attributes: { ...(attributes ?? {}), [name]: val },\n };\n onChange(next);\n }}\n componentType={data?.type}\n />\n </div>\n </React.Fragment>\n ))}\n </div>\n );\n}\n\nexport default React.memo(AttributesEditor);\n","import { Node, NodeData } from '../types/Node';\nimport { Project, ProjectBase } from '../types/Project';\n\nexport function novaToJson(nova: ProjectBase<unknown>): Node {\n const layout = (nova.data as any).data?.layout;\n console.info('layout', layout);\n if (layout === 'onboard-layout') {\n return onboardNovaToJson(nova);\n }\n return null;\n}\n//@eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction onboardNovaToJson(nova: ProjectBase<unknown>): Node {\n const attributes =\n (nova?.data as any)?.data?.attributes ||\n (nova?.data as any)?.attributes ||\n {};\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const generalComponents = (attributes?.general_components || []) as any[];\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const pages = (attributes?.data || []) as any[];\n\n const dotsNode = mapDotsFromGeneralComponents(generalComponents);\n const footerNode = mapFooterFromGeneralComponents(generalComponents);\n const { carouselNode, providerLevelButtons } = buildCarouselFromPages(pages);\n\n const providerNode: NodeData = {\n type: 'OnboardProvider',\n isMain: true,\n key: (nova?.data as any)?.data?.key,\n children: [\n carouselNode,\n // Place dots above buttons in visual order\n ...(dotsNode ? [dotsNode] : []),\n ...(providerLevelButtons.length ? providerLevelButtons : []),\n ...(footerNode ? [footerNode] : []),\n ],\n attributes: {\n theme: (nova?.data as any)?.theme,\n // forward safe area inset preference; default to true when absent\n use_safe_area_inset:\n (attributes as any)?.use_safe_area_inset !== undefined\n ? (attributes as any)?.use_safe_area_inset\n : true,\n },\n };\n\n return providerNode;\n}\n//@eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction buildCarouselFromPages(pages: any[]): {\n carouselNode: NodeData;\n providerLevelButtons: Node[];\n} {\n const simplePages = pages.filter(\n (p) => p?.layout === 'simple-onboard-layout',\n );\n const pageKeyToIndex = new Map<string, number>();\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n simplePages.forEach((p: any, idx: number) => {\n const key = p?.attributes?.key;\n if (typeof key === 'string') pageKeyToIndex.set(key, idx);\n });\n\n const providerLevelButtons: Node[] = [];\n const items: Node[] = simplePages.map((page) =>\n buildCarouselItem(page, pageKeyToIndex, providerLevelButtons),\n );\n\n const carouselNode: NodeData = {\n type: 'Onboard',\n children: items as unknown as Node,\n };\n\n return { carouselNode, providerLevelButtons };\n}\n\nfunction buildCarouselItem(\n page: any,\n pageKeyToIndex: Map<string, number>,\n providerLevelButtons: Node[],\n): NodeData {\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const components = (page?.attributes?.components || []) as any[];\n const children: Node[] = [];\n\n // Resolve page index for condition mapping\n const currentKey = page?.attributes?.key as string | undefined;\n const pageIndex =\n typeof currentKey === 'string' && pageKeyToIndex.has(currentKey)\n ? pageKeyToIndex.get(currentKey)!\n : undefined;\n\n for (const comp of components) {\n if (comp?.layout === 'title-layout') {\n const title = comp?.attributes?.title_localization_key || '';\n const color = comp?.attributes?.title_color || undefined;\n const {\n fontSize: titleFontSize,\n textAlign: titleTextAlign,\n marginTop: titleMarginTop,\n fontWeight: titleFontWeight,\n } = extractTextStyleAttributesFromComponent(comp);\n children.push({\n type: 'OnboardTitle',\n attributes:\n color ||\n titleFontSize ||\n titleTextAlign ||\n titleMarginTop ||\n titleFontWeight\n ? {\n ...(color ? { color } : {}),\n ...(typeof titleFontSize === 'number'\n ? { fontSize: titleFontSize }\n : {}),\n ...(titleTextAlign ? { textAlign: titleTextAlign } : {}),\n ...(typeof titleMarginTop === 'number'\n ? { marginTop: titleMarginTop }\n : {}),\n ...(titleFontWeight ? { fontWeight: titleFontWeight } : {}),\n }\n : undefined,\n children: title,\n });\n } else if (comp?.layout === 'subtitle-layout') {\n const subtitle = comp?.attributes?.subtitle_localization_key || '';\n const color = comp?.attributes?.subtitle_color || undefined;\n const {\n fontSize: subtitleFontSize,\n textAlign: subtitleTextAlign,\n marginTop: subtitleMarginTop,\n fontWeight: subtitleFontWeight,\n } = extractTextStyleAttributesFromComponent(comp);\n children.push({\n type: 'OnboardSubtitle',\n attributes:\n color ||\n subtitleFontSize ||\n subtitleTextAlign ||\n subtitleMarginTop ||\n subtitleFontWeight\n ? {\n ...(color ? { color } : {}),\n ...(typeof subtitleFontSize === 'number'\n ? { fontSize: subtitleFontSize }\n : {}),\n ...(subtitleTextAlign ? { textAlign: subtitleTextAlign } : {}),\n ...(typeof subtitleMarginTop === 'number'\n ? { marginTop: subtitleMarginTop }\n : {}),\n ...(subtitleFontWeight\n ? { fontWeight: subtitleFontWeight }\n : {}),\n }\n : undefined,\n children: subtitle,\n });\n } else if (comp?.layout === 'image-layout') {\n const src = comp?.attributes?.image || comp?.attributes?.src || '';\n const rawHeight =\n comp?.attributes?.height ??\n comp?.attributes?.ios_height ??\n comp?.attributes?.android_height;\n const height =\n typeof rawHeight === 'string'\n ? Number.parseInt(rawHeight, 10)\n : typeof rawHeight === 'number'\n ? rawHeight\n : undefined;\n\n // derive resizeMode from is_bg_image and try to extract borderRadius from styles\n const isBgImage = Boolean(comp?.attributes?.is_bg_image);\n const imageStyle = extractViewStyleAttributesFromComponent(comp);\n // optional rich media\n const lottie = comp?.attributes?.lottie as string | undefined;\n const videoUrl = comp?.attributes?.video_url as string | undefined;\n\n if (src) {\n children.push({\n type: 'OnboardImage',\n attributes: {\n src,\n ...(height ? { height } : {}),\n resizeMode: isBgImage ? 'cover' : 'contain',\n ...(typeof imageStyle.borderRadius === 'number'\n ? { borderRadius: imageStyle.borderRadius }\n : {}),\n ...(typeof lottie === 'string' ? { lottie } : {}),\n ...(typeof videoUrl === 'string' ? { video_url: videoUrl } : {}),\n },\n children: undefined as unknown as Node,\n } as unknown as NodeData);\n }\n } else if (comp?.layout === 'Buttons') {\n const direction = comp?.attributes?.buttons_direction;\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const buttons = (comp?.attributes?.buttons || []) as any[];\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const buttonNodes: Node[] = [];\n for (const btn of buttons) {\n const attrs = btn?.attributes || {};\n const labelKey = attrs?.button_text_localization_key || '';\n const buttonTextColor = attrs?.button_text_color;\n const buttonBackgroundColor = attrs?.button_background_color;\n const animation = attrs?.animation as\n | 'simple-animation'\n | 'line-animation'\n | 'blur'\n | 'blur-animation'\n | 'blur-line-animation'\n | undefined;\n const animationColor = attrs?.animation_color as string | undefined;\n const flex = attrs?.flex ? Number(attrs.flex) : undefined;\n\n // Normalize events and compute Navigate target indices when resolvable\n let targetIndex: number | undefined = undefined;\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const actions = (attrs?.actions || []) as any[];\n const normalizedEvents: {\n type: 'Permission' | 'Navigate';\n permission?: string;\n navigate_to?: string | null;\n targetIndex?: number;\n }[] = [];\n for (const action of actions) {\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const events = (action?.attributes?.events || []) as any[];\n for (const e of events) {\n if (e?.layout === 'Permission') {\n const permission = e?.attributes?.permission as\n | string\n | undefined;\n normalizedEvents.push({ type: 'Permission', permission });\n } else if (e?.layout === 'Navigate') {\n const nextKey = e?.attributes?.next_page_key as\n | string\n | undefined;\n // If key exists among simple-onboard-layout pages, prefer index navigation\n const hasTarget =\n typeof nextKey === 'string' && pageKeyToIndex.has(nextKey);\n const navigate_to = hasTarget\n ? null\n : typeof nextKey === 'string'\n ? nextKey\n : null;\n normalizedEvents.push({\n type: 'Navigate',\n navigate_to,\n ...(hasTarget\n ? { targetIndex: pageKeyToIndex.get(nextKey!)! }\n : {}),\n });\n if (hasTarget) {\n targetIndex = pageKeyToIndex.get(nextKey!)!;\n }\n }\n }\n }\n\n buttonNodes.push({\n type: 'OnboardButton',\n attributes: {\n labelKey,\n ...(typeof buttonTextColor === 'string'\n ? { button_text_color: buttonTextColor }\n : {}),\n ...(typeof animation === 'string' ? { animation } : {}),\n ...(typeof animationColor === 'string'\n ? { animation_color: animationColor }\n : {}),\n ...(typeof buttonBackgroundColor === 'string'\n ? { button_background_color: buttonBackgroundColor }\n : {}),\n ...(typeof flex === 'number' ? { flex } : {}),\n ...(normalizedEvents.length ? { events: normalizedEvents } : {}),\n },\n children: undefined as unknown as Node,\n } as unknown as NodeData);\n }\n\n if (buttonNodes.length > 0) {\n // Place buttons at provider level with visibility conditioned by page index\n providerLevelButtons.push({\n type: 'OnboardButtons',\n attributes: {\n ...(direction ? { buttons_direction: direction } : {}),\n ...(typeof pageIndex === 'number'\n ? { condition: 'carousel-index', conditionVariable: pageIndex }\n : {}),\n },\n children: buttonNodes as unknown as Node,\n } as unknown as NodeData);\n }\n }\n }\n\n const pageKeyAttr = page?.attributes?.key;\n const resolvedKey =\n (typeof pageKeyAttr === 'string' && pageKeyAttr) ||\n (typeof page?.key === 'string' ? page.key : undefined);\n\n return {\n type: 'OnboardItem',\n ...(resolvedKey ? { key: resolvedKey } : {}),\n children,\n };\n}\n\n//@eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction extractTextStyleAttributesFromComponent(comp: any): {\n fontSize?: number;\n textAlign?: 'left' | 'center' | 'right' | 'justify';\n marginTop?: number;\n fontWeight?:\n | 'normal'\n | 'bold'\n | '100'\n | '200'\n | '300'\n | '400'\n | '500'\n | '600'\n | '700'\n | '800'\n | '900';\n} {\n const result: {\n fontSize?: number;\n textAlign?: 'left' | 'center' | 'right' | 'justify';\n marginTop?: number;\n fontWeight?:\n | 'normal'\n | 'bold'\n | '100'\n | '200'\n | '300'\n | '400'\n | '500'\n | '600'\n | '700'\n | '800'\n | '900';\n } = {};\n\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const stylesRoot = (comp?.attributes?.styles || []) as any[];\n if (!Array.isArray(stylesRoot) || stylesRoot.length === 0) return result;\n\n const allowedAligns = new Set(['left', 'center', 'right', 'justify']);\n const allowedWeights = new Set([\n 'normal',\n 'bold',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n ]);\n\n for (const s of stylesRoot) {\n if (s?.layout !== 'style-layout') continue;\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const nested = (s?.attributes?.styles || []) as any[];\n if (!Array.isArray(nested)) continue;\n for (const st of nested) {\n if (st?.layout !== 'Styles') continue;\n const type = st?.attributes?.type;\n if (type !== 'textStyle') continue;\n const style = st?.attributes?.style || {};\n\n const rawFontSize = style?.fontSize;\n if (typeof rawFontSize === 'number' && Number.isFinite(rawFontSize)) {\n result.fontSize = rawFontSize;\n } else if (typeof rawFontSize === 'string') {\n const n = Number.parseInt(rawFontSize, 10);\n if (Number.isFinite(n)) result.fontSize = n;\n }\n\n const align = style?.textAlign;\n if (typeof align === 'string' && allowedAligns.has(align)) {\n result.textAlign = align as typeof result.textAlign;\n }\n\n const rawMarginTop = style?.marginTop;\n if (typeof rawMarginTop === 'number' && Number.isFinite(rawMarginTop)) {\n result.marginTop = rawMarginTop;\n } else if (typeof rawMarginTop === 'string') {\n const n = Number.parseInt(rawMarginTop, 10);\n if (Number.isFinite(n)) result.marginTop = n;\n }\n\n const rawWeight = style?.fontWeight;\n let normalizedWeight: string | undefined;\n if (typeof rawWeight === 'number' && Number.isFinite(rawWeight)) {\n normalizedWeight = String(rawWeight);\n } else if (typeof rawWeight === 'string') {\n normalizedWeight = rawWeight;\n }\n if (normalizedWeight && allowedWeights.has(normalizedWeight)) {\n result.fontWeight = normalizedWeight as typeof result.fontWeight;\n }\n }\n }\n\n return result;\n}\n\n//@eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction extractViewStyleAttributesFromComponent(comp: any): {\n borderRadius?: number;\n} {\n const result: { borderRadius?: number } = {};\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const stylesRoot = (comp?.attributes?.styles || []) as any[];\n if (!Array.isArray(stylesRoot) || stylesRoot.length === 0) return result;\n for (const s of stylesRoot) {\n if (s?.layout !== 'style-layout') continue;\n //@eslint-disable-next-line @typescript-eslint/no-explicit-any\n const nested = (s?.attributes?.styles || []) as any[];\n if (!Array.isArray(nested)) continue;\n for (const st of nested) {\n if (st?.layout !== 'Styles') continue;\n const style = st?.attributes?.style || {};\n const rawBr = style?.borderRadius;\n if (typeof rawBr === 'number' && Number.isFinite(rawBr)) {\n result.borderRadius = rawBr;\n } else if (typeof rawBr === 'string') {\n const n = Number.parseInt(rawBr, 10);\n if (Number.isFinite(n)) result.borderRadius = n;\n }\n }\n }\n return result;\n}\n\nfunction mapDotsFromGeneralComponents(generalComponents: any[]): Node | null {\n const dots = generalComponents.find((gc) => gc?.layout === 'dots-layout');\n if (!dots) return null;\n const dotArray = dots?.attributes?.dot || [];\n const firstDot = dotArray?.[0];\n const dotType = firstDot?.layout as\n | 'expanding_dot'\n | 'normal_dot'\n | 'scaling_dot'\n | 'sliding_border'\n | 'sliding_dot'\n | 'liquid_like';\n const dotAttrs = (firstDot?.attributes || {}) as Record<string, unknown>;\n\n const parseNumber = (value: unknown): number | undefined => {\n if (typeof value === 'number') return value;\n if (typeof value === 'string' && value.trim().length > 0) {\n const n = Number(value);\n return Number.isFinite(n) ? n : undefined;\n }\n return undefined;\n };\n\n const inactiveDotOpacity = parseNumber(dotAttrs?.inactive_dot_opacity);\n const expandingDotWidth = parseNumber(dotAttrs?.expanding_dot_width);\n const dot_style =\n typeof dotAttrs?.dot_style === 'string'\n ? (dotAttrs.dot_style as string)\n : undefined;\n const container_style =\n typeof dotAttrs?.container_style === 'string'\n ? (dotAttrs.container_style as string)\n : undefined;\n const active_dot_color =\n typeof dotAttrs?.active_dot_color === 'string'\n ? (dotAttrs.active_dot_color as string)\n : undefined;\n\n const attributes: Record<string, unknown> = {};\n if (dotType) attributes.dotType = dotType;\n if (inactiveDotOpacity !== undefined)\n attributes.inactive_dot_opacity = inactiveDotOpacity;\n if (expandingDotWidth !== undefined)\n attributes.expanding_dot_width = expandingDotWidth;\n if (dot_style) attributes.dot_style = dot_style;\n if (container_style) attributes.container_style = container_style;\n if (active_dot_color) attributes.active_dot_color = active_dot_color;\n return {\n type: 'OnboardDot',\n attributes: Object.keys(attributes).length ? attributes : undefined,\n children: undefined as unknown as Node,\n } as unknown as NodeData;\n}\n\nfunction mapFooterFromGeneralComponents(generalComponents: any[]): Node | null {\n const footer = generalComponents.find((gc) => gc?.layout === 'footer-layout');\n if (!footer) return null;\n const texts = (footer?.attributes?.texts || []) as any[];\n const linkedWords: { text_key?: string; color?: string; page?: string }[] =\n [];\n let baseTextKey: string | undefined;\n let baseTextColor: string | undefined;\n\n for (const t of texts) {\n if (t?.layout === 'Text') {\n const textKey = t?.attributes?.text_localization_key || '';\n const color = t?.attributes?.text_color || undefined;\n if (!baseTextKey) baseTextKey = textKey;\n if (!baseTextColor && typeof color === 'string') baseTextColor = color;\n\n // Extract linked words if present\n const lws = (t?.attributes?.linkedwords || []) as any[];\n for (const w of lws) {\n if (w?.layout === 'LinkedWords') {\n const text_key = w?.attributes?.linked_word_localization_key as\n | string\n | undefined;\n const lwColor = w?.attributes?.linked_word_color as\n | string\n | undefined;\n const page = w?.attributes?.page as string | undefined;\n linkedWords.push({ text_key, color: lwColor, page });\n }\n }\n }\n }\n\n const attributes: Record<string, unknown> = { gap: 8 };\n if (baseTextKey) attributes.textLocalizationKey = baseTextKey;\n if (baseTextColor) attributes.textColor = baseTextColor;\n const first = linkedWords[0];\n const second = linkedWords[1];\n if (first) {\n if (first.text_key)\n attributes.linkedWordFirstLocalizationKey = first.text_key;\n if (first.color) attributes.linkedWordFirstColor = first.color;\n if (first.page) attributes.linkedWordFirstPage = first.page;\n }\n if (second) {\n if (second.text_key)\n attributes.linkedWordSecondLocalizationKey = second.text_key;\n if (second.color) attributes.linkedWordSecondColor = second.color;\n if (second.page) attributes.linkedWordSecondPage = second.page;\n }\n\n return {\n type: 'OnboardFooter',\n attributes,\n children: undefined as unknown as Node,\n } as NodeData;\n}\n","import { Project, ProjectBase } from '../../types/Project';\nimport simple1 from './simple-1.json';\nimport simple2 from './simple-2.json';\nimport carouselSample from './carousel-sample.json';\nimport vpnOnboard1 from './vpn-onboard-1.json';\nimport vpnOnboard2 from './vpn-onboard-2.json';\nimport vpnOnboard3 from './vpn-onboard-3.json';\nimport vpnOnboard4 from './vpn-onboard-4.json';\nimport vpnOnboard5 from './vpn-onboard-5.json';\nimport vpnOnboard6 from './vpn-onboard-6.json';\nimport { novaToJson } from '../../utils/novaToJson';\nimport { defaultAppConfig } from '../../types/PreviewConfig';\n\nexport function getSamples(): Project[] {\n const legacySamples = [\n {\n ...vpnOnboard1,\n appConfig: { ...defaultAppConfig, ...vpnOnboard1.appConfig },\n } as ProjectBase<unknown>,\n {\n ...vpnOnboard2,\n appConfig: { ...defaultAppConfig, ...vpnOnboard2.appConfig },\n } as ProjectBase<unknown>,\n {\n ...vpnOnboard3,\n appConfig: { ...defaultAppConfig, ...vpnOnboard3.appConfig },\n } as ProjectBase<unknown>,\n {\n ...vpnOnboard4,\n appConfig: { ...defaultAppConfig, ...vpnOnboard4.appConfig },\n } as ProjectBase<unknown>,\n {\n ...vpnOnboard5,\n appConfig: { ...defaultAppConfig, ...vpnOnboard5.appConfig },\n } as ProjectBase<unknown>,\n {\n ...vpnOnboard6,\n appConfig: { ...defaultAppConfig, ...vpnOnboard6.appConfig },\n } as ProjectBase<unknown>,\n ];\n legacySamples.forEach((sample) => {\n sample.data = novaToJson(sample);\n });\n\n return [\n simple1 as Project,\n simple2 as Project,\n carouselSample as Project,\n ...legacySamples,\n ];\n}\n\nexport function getBasicSamples(): Project[] {\n return [simple1 as Project, simple2 as Project, carouselSample as Project];\n}\n\nexport function getOnboardSamples(): Project[] {\n const legacySamples = [\n {\n ...vpnOnboard1,\n appConfig: { ...defaultAppConfig, ...vpnOnboard1.appConfig },\n } as ProjectBase<unknown>,\n {\n ...vpnOnboard2,\n appConfig: { ...defaultAppConfig, ...vpnOnboard2.appConfig },\n } as ProjectBase<unknown>,\n {\n ...vpnOnboard3,\n appConfig: { ...defaultAppConfig, ...vpnOnboard3.appConfig },\n } as ProjectBase<unknown>,\n {\n ...vpnOnboard4,\n appConfig: { ...defaultAppConfig, ...vpnOnboard4.appConfig },\n } as ProjectBase<unknown>,\n {\n ...vpnOnboard5,\n appConfig: { ...defaultAppConfig, ...vpnOnboard5.appConfig },\n } as ProjectBase<unknown>,\n {\n ...vpnOnboard6,\n appConfig: { ...defaultAppConfig, ...vpnOnboard6.appConfig },\n } as ProjectBase<unknown>,\n ];\n legacySamples.forEach((sample) => {\n sample.data = novaToJson(sample);\n });\n return legacySamples;\n}\n","import React from 'react';\nimport { useRenderStore } from './store';\n\ntype DeviceMockFrameProps = {\n children: React.ReactNode;\n};\n\nexport function DeviceMockFrame({ children }: DeviceMockFrameProps) {\n const { appConfig, device } = useRenderStore((s) => ({\n appConfig: s.appConfig,\n device: s.device,\n }));\n const isDark = appConfig.theme === 'dark';\n const [insetTop, insetRight, insetBottom, insetLeft] = device.insets ?? [\n 0, 0, 0, 0,\n ];\n\n // Determine bar heights from device properties with platform-aware fallbacks\n const statusBarHeight = insetTop || (device.platform === 'ios' ? 20 : 24);\n const navBarHeight = (() => {\n switch (device.navigationBarType) {\n case 'none':\n return 0;\n case 'homeIndicator':\n return insetBottom || 6; // minimal visual indicator on iOS\n case 'gesture':\n return insetBottom || 24;\n case 'threeButtons':\n return insetBottom || 48;\n case 'tabBar':\n return insetBottom || 49;\n default:\n return insetBottom || 0;\n }\n })();\n const statusBarColor = isDark\n ? 'rgba(255, 255, 255, 0.08)'\n : 'rgba(0, 0, 0, 0.06)';\n const navBarColor = isDark\n ? 'rgba(255, 255, 255, 0.06)'\n : 'rgba(0, 0, 0, 0.04)';\n\n return (\n <div className=\"stage-wrapper\" style={{ overflow: 'auto' }}>\n <div\n className=\"stage\"\n style={{\n width: device.width,\n height: device.height,\n minWidth: device.width,\n maxWidth: device.width,\n minHeight: device.height,\n maxHeight: device.height,\n overflow: 'hidden',\n position: 'relative',\n padding: 4,\n direction: appConfig.isRtl ? 'rtl' : 'ltr',\n backgroundColor:\n appConfig.theme === 'dark'\n ? appConfig.screenStyle.dark.backgroundColor\n : appConfig.screenStyle.light.backgroundColor,\n color:\n appConfig.theme === 'dark'\n ? appConfig.screenStyle.dark.color\n : appConfig.screenStyle.light.color,\n display: 'flex',\n flexDirection: 'column',\n borderRadius: device.radius ?? 0,\n }}\n >\n <div\n className=\"device-status-bar\"\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n height: statusBarHeight,\n backgroundColor: statusBarColor,\n flex: '0 0 auto',\n }}\n />\n <div\n className=\"device-content\"\n style={{\n flex: 1,\n overflow: 'hidden',\n position: 'relative',\n paddingLeft: insetLeft,\n paddingRight: insetRight,\n }}\n >\n {children}\n </div>\n <div\n className=\"device-navigation-bar\"\n style={{\n height: navBarHeight,\n backgroundColor: navBarColor,\n flex: '0 0 auto',\n }}\n />\n </div>\n </div>\n );\n}\n\nexport default DeviceMockFrame;\n","import { Localication } from './types/PreviewConfig';\nimport { TargetedScreenSize } from './types/TargetedScreenSize';\nimport { DeviceMockFrame } from './DeviceMockFrame';\nimport { Node } from './types/Node';\nimport { RenderNode } from './build-components';\nimport { Device } from './types/Device';\nimport { useEffect } from 'react';\nimport { useRenderStore } from './store';\nexport type ScreenStyle = {\n light: { backgroundColor: string; color: string; seperatorColor?: string };\n dark: { backgroundColor: string; color: string; seperatorColor?: string };\n};\ntype RenderPageProps = {\n data: Node;\n};\nexport function RenderPage({ data }: RenderPageProps) {\n const { device } = useRenderStore((s) => ({ device: s.device }));\n const screenPreviewHeight = 800;\n // The calculation is correct for maintaining the aspect ratio of the target screen size.\n // It scales the width proportionally to a fixed preview height.\n // width = (previewHeight * targetWidth) / targetHeight\n const height = screenPreviewHeight;\n const width = (height * device.width) / device.height;\n\n return (\n <DeviceMockFrame>\n <RenderNode node={data} />\n </DeviceMockFrame>\n );\n}\n","import { Node, NodeData } from '../types/Node';\n\nfunction isNodeData(value: Node): value is NodeData<Record<string, unknown>> {\n if (value === null || value === undefined) return false;\n if (Array.isArray(value)) return false;\n if (typeof value === 'string') return false;\n if (typeof value !== 'object') return false;\n return (\n 'type' in (value as Record<string, unknown>) &&\n 'children' in (value as Record<string, unknown>)\n );\n}\n\nexport function querySelector(node: Node, selector: string): NodeData[] {\n if (node === null || node === undefined) return [];\n if (!selector) return [];\n\n const isKeySearch = selector.startsWith('#');\n const keyToMatch = isKeySearch ? selector.slice(1) : undefined;\n\n const matches = (n: NodeData): boolean => {\n if (isKeySearch) return n.key === keyToMatch;\n return n.type === selector;\n };\n\n const result: NodeData[] = [];\n\n const visit = (current: Node) => {\n if (current === null || current === undefined) return;\n if (Array.isArray(current)) {\n for (const child of current) visit(child);\n return;\n }\n if (typeof current === 'string') return;\n if (isNodeData(current)) {\n if (matches(current)) result.push(current);\n visit(current.children);\n }\n };\n\n visit(node);\n return result;\n}\n","import { useMemo, useState } from 'react';\nimport { Device, getDevices, Node, copyNode } from '..';\nimport { useRenderStore } from '../store';\nimport { Breadcrumb, BreadcrumbItem } from './Breadcrumb';\n\nconst devices = getDevices();\n\ninterface EditorHeaderProps {\n onSaveProject?: () => void;\n current?: Node;\n editorData?: Node;\n setEditorData?: (data: Node) => void;\n}\n\ninterface DeviceButtonProps {\n device: Device;\n selectedDevice: Device | null;\n setSelectedDevice: (device: Device) => void;\n}\nexport function DeviceButton({\n device,\n selectedDevice,\n setSelectedDevice,\n}: DeviceButtonProps) {\n return (\n <button\n className={`editor-device-button ${selectedDevice === device ? 'editor-device-button--selected' : ''}`}\n onClick={() => setSelectedDevice(device)}\n >\n {device.name} <br />\n {device.width}x{device.height}\n </button>\n );\n}\n\nexport function EditorHeader({\n onSaveProject,\n current,\n editorData,\n setEditorData,\n}: EditorHeaderProps) {\n const [isDevicesModalOpen, setIsDevicesModalOpen] = useState(false);\n const copiedNode = useRenderStore((s) => s.copiedNode);\n const { device, setDevice } = useRenderStore((s) => ({\n device: s.device,\n setDevice: s.setDevice,\n }));\n\n function replaceNode(root: Node, target: Node, next: Node): Node {\n if (root === target) return next;\n if (root === null || root === undefined) return root;\n if (typeof root === 'string') return root;\n if (Array.isArray(root)) {\n let changed = false;\n const arr = root.map((item) => {\n const r = replaceNode(item, target, next);\n if (r !== item) changed = true;\n return r;\n });\n return changed ? arr : root;\n }\n const data = root as any;\n if ('children' in data) {\n const prev = data.children;\n const replaced = Array.isArray(prev)\n ? prev.map((c: Node) => replaceNode(c, target, next))\n : replaceNode(prev as Node, target, next);\n if (replaced !== prev) {\n data.children = replaced;\n return { ...data, children: replaced } as Node;\n }\n }\n return root;\n }\n const handleCopy = () => {\n if (current) copyNode(current);\n };\n const handlePaste = () => {\n if (!current || !editorData || !setEditorData) return;\n if (!copiedNode) return;\n const cloned = JSON.parse(JSON.stringify(copiedNode)) as Node;\n const updated = replaceNode(editorData, current, cloned);\n useRenderStore.setState({\n copiedNode: null,\n });\n useRenderStore.getState().forceRender();\n setEditorData(updated);\n };\n return (\n <div\n className=\"editor-header\"\n role=\"region\"\n aria-label=\"Editor utility header\"\n >\n <div className=\"editor-header__devices\">\n {devices.slice(0, 5).map((device: Device) => (\n <DeviceButton\n key={device.name}\n selectedDevice={device}\n setSelectedDevice={setDevice}\n device={device}\n />\n ))}\n <button\n className=\"editor-device-button\"\n aria-label=\"More devices\"\n onClick={() => setIsDevicesModalOpen(true)}\n >\n More devices\n </button>\n </div>\n <div className=\"editor-header__actions\">\n <button\n className=\"editor-button editor-save-button\"\n aria-label=\"Save project data\"\n onClick={() => onSaveProject && onSaveProject()}\n >\n Save\n </button>\n <button\n className=\"editor-button editor-save-previewconfig-button\"\n aria-label=\"Save previewConfig\"\n onClick={() => useRenderStore.getState().forceRender()}\n >\n Force Render\n </button>\n <button\n className=\"editor-button\"\n aria-label=\"Copy node\"\n onClick={handleCopy}\n >\n Copy\n </button>\n {copiedNode && (\n <button\n className=\"editor-button\"\n aria-label=\"Paste node\"\n onClick={handlePaste}\n >\n Paste\n </button>\n )}\n </div>\n {isDevicesModalOpen && (\n <div\n className=\"editor-modal\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"device-selector-title\"\n >\n <div\n className=\"editor-modal__overlay\"\n onClick={() => setIsDevicesModalOpen(false)}\n />\n <div className=\"editor-modal__content\">\n <div className=\"editor-modal__header\">\n <h3 id=\"device-selector-title\">Select a device</h3>\n <button\n className=\"editor-button\"\n aria-label=\"Close device selector\"\n onClick={() => setIsDevicesModalOpen(false)}\n >\n Close\n </button>\n </div>\n <div className=\"editor-device-grid\" role=\"list\">\n {devices.map((device: Device) => (\n <DeviceButton\n key={device.name}\n selectedDevice={device}\n setSelectedDevice={(d: Device) => {\n setDevice(d);\n setIsDevicesModalOpen(false);\n }}\n device={device}\n />\n ))}\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n","import { useEffect, useMemo, useState } from 'react';\nimport { AttributesEditor, Node, NodeData } from '..';\n\ninterface AttributesEditorPanelProps {\n current: Node;\n attributes: any;\n onChange: (data: Node) => void;\n setCurrent: (current: Node) => void;\n}\n\nexport function AttributesEditorPanel({\n current,\n attributes,\n onChange,\n setCurrent,\n}: AttributesEditorPanelProps) {\n if (!current) return null;\n\n function replaceNode(root: Node, target: Node, next: Node): Node {\n if (root === target) return next;\n if (root === null || root === undefined) return root;\n if (typeof root === 'string') return root;\n if (Array.isArray(root)) {\n let changed = false;\n const arr = root.map((item) => {\n const r = replaceNode(item, target, next);\n if (r !== item) changed = true;\n return r;\n });\n return changed ? arr : root;\n }\n const data = root as any;\n if ('children' in data) {\n const prev = data.children;\n const replaced = Array.isArray(prev)\n ? prev.map((c: Node) => replaceNode(c, target, next))\n : replaceNode(prev as Node, target, next);\n if (replaced !== prev) {\n data.children = replaced;\n return { ...data, children: replaced } as Node;\n }\n }\n return root;\n }\n const [draft, setDraft] = useState<Node>(current);\n const [isAllowedTopAccept, setIsAllowedTopAccept] = useState<boolean>(false);\n\n const isEqual = useMemo(() => {\n try {\n return JSON.stringify(current) === JSON.stringify(draft);\n } catch {\n return current === draft;\n }\n }, [current, draft]);\n\n useEffect(() => {\n setDraft(current);\n setIsAllowedTopAccept(false);\n }, [current, attributes]);\n\n useEffect(() => {\n setIsAllowedTopAccept(!isEqual);\n }, [isEqual]);\n\n return (\n <div style={{ padding: 12 }}>\n <h2>{(current as NodeData).type ?? current?.toString() ?? '?'}</h2>{' '}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n padding: '16px 0',\n }}\n >\n <h3 style={{ marginTop: 0, marginBottom: 0, flex: '1 1 auto' }}>\n Attributes\n </h3>\n <button\n disabled={!isAllowedTopAccept}\n onClick={() => {\n setDraft(current);\n setIsAllowedTopAccept(false);\n }}\n >\n Revert\n </button>\n <button\n disabled={!isAllowedTopAccept}\n onClick={() => {\n const root = attributes as Node;\n const updated = replaceNode(root, current, draft);\n onChange(updated);\n setIsAllowedTopAccept(false);\n setCurrent(draft);\n }}\n >\n Accept\n </button>\n </div>\n <AttributesEditor\n node={draft}\n onChange={(next: Node) => {\n setDraft(next);\n setIsAllowedTopAccept(true);\n }}\n />\n </div>\n );\n}\n","import { ReactNode } from 'react';\nexport type BreadcrumbItem = {\n label: string;\n to?: string;\n onClick?: () => void;\n};\n\ntype BreadcrumbProps = {\n items: BreadcrumbItem[];\n separator?: ReactNode;\n ariaLabel?: string;\n};\n\nexport function Breadcrumb({\n items,\n separator = '/',\n ariaLabel = 'Breadcrumb',\n}: BreadcrumbProps) {\n return (\n <nav className=\"breadcrumb\" aria-label={ariaLabel}>\n <ol className=\"breadcrumb__list\">\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n return (\n <li className=\"breadcrumb__item\" key={`${item.label}-${index}`}>\n {index > 0 && (\n <span className=\"breadcrumb__separator\" aria-hidden>\n {separator}\n </span>\n )}\n {isLast || !item.to ? (\n <span className=\"breadcrumb__current\" aria-current=\"page\">\n {item.label}\n </span>\n ) : (\n <p onClick={item.onClick} className=\"breadcrumb__link\">\n {item.label}\n </p>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n}\n","import { useMemo, useState } from 'react';\nimport {\n isNodeArray,\n isNodeNullOrUndefined,\n isNodeString,\n Node,\n NodeData,\n NodeDefaultAttribute,\n allcomponentNames,\n} from '..';\nimport { Breadcrumb } from './Breadcrumb';\nimport { getDefaultsForType, getPatternByType } from '../utils/patterns';\n\ntype BuilderEditorProps = {\n data: Node;\n setData: (data: Node) => void;\n current: Node;\n setCurrent: (current: Node) => void;\n};\n\ninterface BuilderEditorComponentProps {\n node: Node;\n onClick: (node: Node) => void;\n}\n\nfunction BuilderButton({ node, onClick }: { node: Node; onClick: () => void }) {\n if (isNodeNullOrUndefined(node)) {\n return <div className=\"builder__placeholder\">Null or undefined</div>;\n }\n if (isNodeString(node)) {\n return <div className=\"builder__text\">{node as string}</div>;\n }\n const nodeData = node as NodeData<NodeDefaultAttribute>;\n\n let extra = '';\n if (nodeData.attributes?.condition) {\n extra = ` (${nodeData.attributes.condition} ${nodeData.attributes.conditionVariable})`;\n }\n return (\n <a onClick={onClick} className=\"builder__button\">\n {nodeData.type} {extra}\n </a>\n );\n}\n\nfunction BuilderComponent({ node, onClick }: BuilderEditorComponentProps) {\n if (isNodeNullOrUndefined(node)) {\n return <div className=\"builder__placeholder\">Null or undefined</div>;\n }\n if (isNodeString(node)) {\n return (\n <div className=\"builder__text\">\n {node as string} (Please define a node)\n </div>\n );\n }\n\n if (isNodeArray(node)) {\n return (\n <div className=\"builder__list\">\n {(node as Node[]).map((item, index) => (\n <BuilderButton\n onClick={() => {\n onClick(item);\n }}\n key={index}\n node={item}\n />\n ))}\n </div>\n );\n }\n\n const nodeData = node as NodeData<NodeDefaultAttribute>;\n const children = nodeData.children\n ? isNodeArray(nodeData.children)\n ? (nodeData.children as Node[])\n : [nodeData.children]\n : null;\n\n return (\n <div className=\"builder__node\">\n <p className=\"builder__node-type\">{nodeData.type}</p>\n <div className=\"builder__children\">\n {children &&\n children.map((child, index) => (\n <BuilderButton\n onClick={() => {\n onClick(child);\n }}\n key={index}\n node={child}\n />\n ))}\n </div>\n </div>\n );\n}\n\nexport function Builder({\n data,\n setData,\n current,\n setCurrent,\n}: BuilderEditorProps) {\n const [crumbs, setCrumbs] = useState<string[]>(['root']);\n const breadcrumbItems = useMemo(\n () => crumbs.map((c, idx) => ({ label: c })),\n [crumbs],\n );\n\n function replaceNode(root: Node, target: Node, next: Node): Node {\n if (root === target) return next;\n if (root === null || root === undefined) return root;\n if (typeof root === 'string') return root;\n if (Array.isArray(root)) {\n let changed = false;\n const arr = root.map((item) => {\n const r = replaceNode(item, target, next);\n if (r !== item) changed = true;\n return r;\n });\n return changed ? arr : root;\n }\n const data = root as any;\n if ('children' in data) {\n const prev = data.children;\n const replaced = Array.isArray(prev)\n ? prev.map((c: Node) => replaceNode(c, target, next))\n : replaceNode(prev as Node, target, next);\n if (replaced !== prev) {\n data.children = replaced;\n return { ...data, children: replaced } as Node;\n }\n }\n return root;\n }\n\n function createDefaultNode(type: string): NodeData<NodeDefaultAttribute> {\n const pattern = getPatternByType(type)?.pattern;\n const defaults = getDefaultsForType(type) ?? {};\n let children: Node = '';\n const childrenSchema = pattern?.children as unknown;\n if (childrenSchema === 'never') {\n children = '';\n } else if (childrenSchema === 'string') {\n children = '';\n } else if (\n childrenSchema === 'node' ||\n (Array.isArray(childrenSchema) && childrenSchema.includes('node'))\n ) {\n children = [];\n } else if (typeof childrenSchema === 'string') {\n // Specific child type like 'carouselItem' – initialize as empty array to allow multiple\n children = [];\n } else {\n children = '';\n }\n return {\n type,\n children,\n attributes: { ...defaults },\n } as NodeData<NodeDefaultAttribute>;\n }\n\n function getAllowedChildTypes(parent: Node): string[] {\n if (\n isNodeNullOrUndefined(parent) ||\n isNodeString(parent) ||\n isNodeArray(parent)\n )\n return [];\n const parentData = parent as NodeData;\n const parentType = parentData.type;\n // Special rule: limit OnboardButtons to OnboardButton only\n if (parentType === 'OnboardButtons') return ['OnboardButton'];\n const childrenSchema = getPatternByType(parentType)?.pattern\n ?.children as unknown;\n if (!childrenSchema) return [];\n if (childrenSchema === 'never' || childrenSchema === 'string') return [];\n if (\n childrenSchema === 'node' ||\n (Array.isArray(childrenSchema) && childrenSchema.includes('node'))\n ) {\n return [...allcomponentNames];\n }\n if (typeof childrenSchema === 'string') {\n return [childrenSchema];\n }\n return [];\n }\n\n return (\n <div className=\"builder\">\n <Breadcrumb items={breadcrumbItems} />\n\n <div className=\"builder__current\">\n {crumbs[crumbs.length - 1] + ' ( ' + crumbs.length + '. level )'}\n </div>\n <BuilderComponent\n onClick={(node: Node) => {\n setCurrent(node);\n setCrumbs((crumbs) => [\n ...crumbs,\n typeof node === 'string'\n ? node\n : (node as NodeData<NodeDefaultAttribute>).type,\n ]);\n }}\n node={current}\n />\n {!isNodeNullOrUndefined(current) &&\n !isNodeString(current) &&\n !isNodeArray(current) &&\n (() => {\n const allowed = getAllowedChildTypes(current);\n if (allowed.length === 0) return null;\n return (\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n gap: 8,\n paddingTop: 12,\n }}\n >\n {allowed.map((t) => (\n <button\n key={t}\n className=\"editor-button\"\n onClick={() => {\n const parent = current as NodeData<NodeDefaultAttribute>;\n const nextChild = createDefaultNode(t);\n let nextChildren: Node;\n if (Array.isArray(parent.children)) {\n nextChildren = [\n ...(parent.children as Node[]),\n nextChild,\n ];\n } else if (\n parent.children === null ||\n parent.children === undefined ||\n typeof parent.children === 'string'\n ) {\n nextChildren = [nextChild];\n } else {\n nextChildren = [parent.children as Node, nextChild];\n }\n const updatedParent: NodeData<NodeDefaultAttribute> = {\n ...parent,\n children: nextChildren,\n };\n const updatedRoot = replaceNode(\n data,\n current,\n updatedParent,\n );\n setData(updatedRoot);\n setCurrent(updatedParent);\n }}\n >\n Add {t}\n </button>\n ))}\n </div>\n );\n })()}\n </div>\n );\n}\n","import { Node } from '../..';\nimport { Builder } from '../../components/Builder';\n\ntype BuilderTabProps = {\n data: Node;\n setData: (data: Node) => void;\n current: Node;\n setCurrent: (current: Node) => void;\n};\n\nexport function BuilderTab({\n data,\n setData,\n current,\n setCurrent,\n}: BuilderTabProps) {\n return (\n <div\n role=\"tabpanel\"\n className=\"editor-panel-builder editor-panel editor-panel--active\"\n aria-hidden={false}\n >\n <Builder\n data={data}\n setData={setData}\n current={current}\n setCurrent={setCurrent}\n />\n </div>\n );\n}\n","const r=(r,e,t,n,o)=>{if(!n)throw new Error(null!=o?o:`Invalid property path: ${e}\\nCouldn't access \"${t}\" in ${JSON.stringify(r)}`)},e=r=>\"object\"==typeof r&&null!==r&&!Array.isArray(r),t=r=>Array.isArray(r),n=(r,e)=>r.filter(((r,t)=>t!==e)),o=(r,e,o,a={})=>{const{remove:s=!1,createNew:l=!0,noError:f=!1}=a,u=r,c=\"string\"==typeof(y=e)?y:\"number\"==typeof y?String(y):y.reduce(((r,e)=>\"number\"==typeof e?`${r}[${e}]`:\"\"===r?e:`${r}.${e}`),\"\");var y;const p=Object.assign(Object.assign({},a),{remove:s,createNew:l,noError:f,fullData:u,fullPath:c}),m=Array.isArray(e)?e:(r=>Array.isArray(r)?r:r.split(/(\\.|\\[\\d+\\])/).filter((r=>\".\"!==r&&\"\"!==r)).map((r=>{const e=/\\[(\\d+)\\]/.exec(r);return e?Number(e[1]):r})).flat())(e).filter((r=>\"\"!==r));return t(r)&&s&&1===m.length?n(r,m[0]):i(r,m,o,p)},i=(o,l,f,u)=>{const c=e(o)?Object.assign({},o):null,y=t(o)?[...o]:null;if(0===l.length)return o;if(!c&&!y)throw new Error(\"Can't assign property -- invalid input object\");const{createNew:p,remove:m,noError:b,fullData:g,fullPath:h}=u,d=l[0];if(y&&\"string\"==typeof d)return y.map((r=>i(r,l,f,u)));if(1===l.length){if(c&&\"string\"==typeof d){const r=a(c,d,f,u);return null!=r?r:c}return y&&\"number\"==typeof d?(s(y,d,f,u),y):(r(g,h,d,b),o)}const v=c||y||[];if(m&&2===l.length&&\"number\"==typeof l[1]){const e=v[d],o=l[1];return t(e)?v[d]=n(e,o):r(g,h,d,b,\"Trying to remove an indexed item from an object that is not an array\"),v}const A=l.slice(1);if(d in o){if(w=v[d],!t(w)&&!e(w)){if(!p)return r(g,h,d,b),v;v[d]={}}return v[d]=i(v[d],A,f,u),v}var w;if(p){const r=\"number\"==typeof A[0]?[]:{};if(c)return v[d]=r,v[d]=i(v[d],A,f,u),v;if(y&&Array.isArray(v)){v.push(r);const e=v.length-1;return v[e]=i(v[e],A,f,u),v}}return r(g,h,d,b),v},a=(e,t,n,o)=>{const{remove:i,createNew:a,noError:s,insertAfter:l,insertBefore:f,fullData:u,fullPath:c}=o;if(void 0!==f||void 0!==l){const r=Object.entries(e);let o=1/0;return o=\"number\"==typeof f?f:\"number\"==typeof l?l:r.findIndex((([r,e])=>r===(null!=f?f:l))),l&&o++,r.splice(o,0,[t,n]),Object.fromEntries(r)}const y=t in e;i?y?delete e[t]:r(u,c,t,s):a||y?e[t]=n:r(u,c,t,s)},s=(e,t,n,o)=>{const{noError:i,fullData:a,fullPath:s,createNew:l,insert:f}=o;f&&e.splice(t,0,n),t in e?e[t]=n:l?e.push(n):r(a,s,t,i)};export{o as default};\n","const r=(n,o,i)=>{const a=Array.isArray(o)?o:t(o);if(0===a.length)return n;const c=a[0];if(Array.isArray(n)&&\"number\"!=typeof c)return n.map((t=>r(t,a,i)));if(\"object\"!=typeof n||null===n||!(c in n))return e(n,c,i);const f=n[c];return 1===a.length?f:r(f,a.slice(1),i)},t=r=>r.split(/(\\.|\\[\\d+\\])/).filter((r=>\".\"!==r&&\"\"!==r)).map((r=>{const t=/\\[(\\d+)\\]/.exec(r);return t?Number(t[1]):r})).flat(),e=(r,t,e)=>{if(void 0===e)throw new Error(`Unable to extract object property\\nLooking for property: ${t}\\nIn object: ${JSON.stringify(r)}`);return e};export{r as default};\n","import{jsxs as e,jsx as t,Fragment as n}from\"react/jsx-runtime\";import{createContext as r,useContext as o,useState as i,useRef as a,useEffect as l,useCallback as s,useMemo as c}from\"react\";import d from\"object-property-assigner\";export{default as assign}from\"object-property-assigner\";import u from\"object-property-extractor\";export{default as extract}from\"object-property-extractor\";function p(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&\"function\"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n}function g(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{s(r.next(e))}catch(e){i(e)}}function l(e){try{s(r.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,l)}s((r=r.apply(e,t||[])).next())}))}\"function\"==typeof SuppressedError&&SuppressedError;const m=({className:n,name:r,value:o,setValue:i,handleKeyPress:a,styles:l,textAreaRef:s})=>{if(\"string\"!=typeof o)return null;const c=\"\\n\"===o.slice(-1)?o+\".\":o;return e(\"div\",{style:{display:\"grid\"},children:[t(\"textarea\",{id:`${r}_textarea`,ref:s,style:Object.assign({height:\"auto\",gridArea:\"1 / 1 / 2 / 2\",overflowY:\"auto\",whiteSpace:\"pre-wrap\"},l),rows:1,className:n,name:`${r}_textarea`,value:o,onChange:e=>i(e.target.value),autoFocus:!0,onFocus:e=>{o.length<40&&e.target.select()},onKeyDown:a}),t(\"span\",{className:n,style:Object.assign({visibility:\"hidden\",height:\"auto\",gridArea:\"1 / 1 / 2 / 2\",color:\"red\",opacity:.9,whiteSpace:\"pre-wrap\",overflowY:\"auto\",border:\"1px solid transparent\"},l),children:c})]})},h=e=>null!==e&&\"object\"==typeof e,y=(e,t,n,r=\"\")=>{if(!n&&!r)return!0;switch(e){case\"collection\":if(n){if(n(t,r))return!0;if(!f(r,t,n))return!1}if(!n&&r&&!f(r,t))return!1;break;case\"value\":if(n&&!n(t,r))return!1;if(!n&&r&&!b(t,r))return!1}return!0},f=(e=\"\",t,n=b)=>{const r=t.value;return Object.entries(r).some((([o,i])=>{const a=[...t.path,o],l=Object.assign(Object.assign({},t),{key:o,path:a,level:t.level+1,value:i,size:a.length,parentData:r});return h(i)?f(e,l,n):n(l,e)}))},b=(e,t=\"\")=>{const{value:n}=e;if(null===n&&\"null\".includes(t.toLowerCase()))return!0;switch(typeof n){case\"string\":return n.toLowerCase().includes(t.toLowerCase());case\"number\":return!!String(n).includes(t);case\"boolean\":return n?\"true\".includes(t.toLowerCase())||\"1\"===t:\"false\".includes(t.toLowerCase())||\"0\"===t;default:return!1}},v=({key:e,path:t},n=\"\")=>!!b({value:e},n)||!!t.some((e=>b({value:e},n))),j=(e,t)=>(null!=t?t:\"\")+e.map((e=>\"\"===e?String.fromCharCode(0):e)).join(\".\"),E=e=>e.shiftKey?\"Shift\":e.metaKey?\"Meta\":e.ctrlKey?\"Control\":e.altKey?\"Alt\":void 0,w=(e,t,n)=>{const r=e.key,o=E(e);if(Array.isArray(t))return!!o&&t.includes(o);const{key:i,modifier:a}=t;return(\"stringLineBreak\"!==n||\"Enter\"!==r||\"Shift\"!==o||\"Enter\"!==i||!(null==a?void 0:a.includes(\"Shift\")))&&(r===i&&(a===o||Array.isArray(a)&&a.includes(o)))},D={key:\"Enter\"},C={confirm:D,cancel:{key:\"Escape\"},objectConfirm:Object.assign(Object.assign({},D),{modifier:[\"Meta\",\"Shift\",\"Control\"]}),objectLineBreak:D,stringConfirm:D,stringLineBreak:Object.assign(Object.assign({},D),{modifier:[\"Shift\"]}),numberConfirm:D,numberUp:{key:\"ArrowUp\"},numberDown:{key:\"ArrowDown\"},tabForward:{key:\"Tab\"},tabBack:{key:\"Tab\",modifier:\"Shift\"},booleanConfirm:D,booleanToggle:{key:\" \"},clipboardModifier:[\"Meta\",\"Control\"],collapseModifier:[\"Alt\"]},O=(e,t,n=\"next\",r)=>{const o=t.slice(0,t.length-1),i=t.slice(-1)[0];if(void 0===i)return null;const a=u(e,o),l=S(a);Array.isArray(a)||r(l,(({key:e,value:t})=>[e,t]));const s=l.findIndex((e=>e.key===i)),c=l[s+(\"next\"===n?1:-1)];return c?h(c.value)?0===Object.keys(c.value).length?O(e,[...o,c.key],n,r):k(e,[...o,c.key],n,r):[...o,c.key]:0===o.length?null:O(e,o,n,r)},k=(e,t,n=\"next\",r)=>{const o=u(e,t);if(!h(o))return t;const i=Array.isArray(o)?o.map(((e,t)=>t)):Object.keys(o);r(i,(e=>[e,o]));const a=\"next\"===n?i[0]:i[i.length-1];return k(e,[...t,a],n,r)},S=e=>Array.isArray(e)?e.map(((e,t)=>({index:t,value:e,key:t}))):Object.entries(e).map((([e,t],n)=>({key:e,value:t,index:n}))),N=(e,t)=>{var n,r,o,i;const a=e.current,l=null!==(n=null==a?void 0:a.selectionStart)&&void 0!==n?n:1/0,s=null!==(r=null==a?void 0:a.selectionEnd)&&void 0!==r?r:1/0,c=(null===(o=null==a?void 0:a.textContent)||void 0===o?void 0:o.slice(0,l))+t+(null===(i=null==a?void 0:a.textContent)||void 0===i?void 0:i.slice(s));return a.value=c,null==a||a.setSelectionRange(l+1,l+1),c},T=e=>{if(e!==x){if(Array.isArray(e))return e.map((e=>T(e)));if(e&&\"object\"==typeof e)for(const t in e)e[t]=T(e[t]);return e}},x=\"__undefined__\",A={displayName:\"Default\",fragments:{edit:\"rgb(42, 161, 152)\"},styles:{container:{backgroundColor:\"#f6f6f6\",fontFamily:\"monospace\"},collection:{},collectionInner:{},collectionElement:{},dropZone:{},property:\"#292929\",bracket:{color:\"rgb(0, 43, 54)\",fontWeight:\"bold\"},itemCount:{color:\"rgba(0, 0, 0, 0.3)\",fontStyle:\"italic\"},string:\"rgb(203, 75, 22)\",number:\"rgb(38, 139, 210)\",boolean:\"green\",null:{color:\"rgb(220, 50, 47)\",fontVariant:\"small-caps\",fontWeight:\"bold\"},input:[\"#292929\"],inputHighlight:\"#b3d8ff\",error:{fontSize:\"0.8em\",color:\"red\",fontWeight:\"bold\"},iconCollection:\"rgb(0, 43, 54)\",iconEdit:\"edit\",iconDelete:\"rgb(203, 75, 22)\",iconAdd:\"edit\",iconCopy:\"rgb(38, 139, 210)\",iconOk:\"green\",iconCancel:\"rgb(203, 75, 22)\"}},P=r({getStyles:()=>({}),icons:{}}),R=({theme:e=A,icons:n={},docRoot:r,children:o})=>{const i=I(e,r);return t(P.Provider,{value:{getStyles:(e,t)=>\"function\"==typeof i[e]?i[e](t):i[e],icons:n},children:o})},K=()=>o(P),I=(e,t)=>{var n,r,o,i;const a={},l=(Array.isArray(e)?e:[e]).map((e=>_(e)?V({fragments:{},styles:e},a):V(e,a))),s=V(A,{});Object.keys(s).forEach((e=>{const t=e;l.forEach((e=>{e[t]&&(s[t]=Object.assign(Object.assign({},s[t]),e[t]))}))}));const c=Object.assign({},s);return Object.entries(a).forEach((([e,t])=>{const n=e;c[n]=e=>{const r=t(e)||{};return Object.assign(Object.assign({},s[n]),r)}})),\"function\"!=typeof(null==c?void 0:c.inputHighlight)&&(null===(n=null==c?void 0:c.inputHighlight)||void 0===n?void 0:n.backgroundColor)&&t.style.setProperty(\"--jer-highlight-color\",null===(r=null==c?void 0:c.inputHighlight)||void 0===r?void 0:r.backgroundColor),\"function\"!=typeof(null==c?void 0:c.iconCopy)&&(null===(o=null==c?void 0:c.iconCopy)||void 0===o?void 0:o.color)&&t.style.setProperty(\"--jer-icon-copy-color\",null===(i=null==c?void 0:c.iconCopy)||void 0===i?void 0:i.color),c},V=(e,t)=>{const{fragments:n,styles:r}=e,o={};return Object.entries(r).forEach((([e,r])=>{const i=(Array.isArray(r)?r:[r]).reduce(((r,o)=>{var i,a;if(\"function\"==typeof o)return t[e]=o,Object.assign({},r);if(\"string\"==typeof o){const t=null!==(i=null==n?void 0:n[o])&&void 0!==i?i:o;return\"string\"==typeof t?Object.assign(Object.assign({},r),{[null!==(a=F[e])&&void 0!==a?a:\"color\"]:t}):Object.assign(Object.assign({},r),t)}return Object.assign(Object.assign({},r),o)}),{});o[e]=i})),o},_=e=>!(\"styles\"in e),F={container:\"backgroundColor\",collection:\"backgroundColor\",collectionInner:\"backgroundColor\",collectionElement:\"backgroundColor\",dropZone:\"borderColor\",inputHighlight:\"backgroundColor\"},L=r(null),z=({children:e,onEditEvent:n,onCollapse:r})=>{const[o,l]=i(null),[s,c]=i(null),[d,u]=i(null),[p,g]=i({path:null,pathString:null}),m=a(null),h=a(\"next\"),y=a(null);return t(L.Provider,{value:{collapseState:o,setCollapseState:e=>{l(e),r&&null!==e&&(Array.isArray(e)?e.forEach((e=>r(e))):r(e)),null!==e&&setTimeout((()=>l(null)),2e3)},getMatchingCollapseState:e=>{if(Array.isArray(o)){for(const t of o)if(B(e,t))return t;return null}return B(e,o)?o:null},currentlyEditingElement:s,setCurrentlyEditingElement:(e,t)=>{const r=\"string\"==typeof e||null===e?e:j(e,\"key\"===t?\"key_\":void 0);null!==s&&null!==r&&null!==m.current&&m.current(),c(r),n&&(Array.isArray(e)||null===e)&&n(e,\"key\"===t),m.current=\"function\"==typeof t?t:null},areChildrenBeingEdited:e=>null!==s&&s.includes(e),previouslyEditedElement:y.current,setPreviouslyEditedElement:e=>{y.current=e},tabDirection:h.current,setTabDirection:e=>{h.current=e},previousValue:d,setPreviousValue:u,dragSource:p,setDragSource:g},children:e})},M=()=>{const e=o(L);if(!e)throw new Error(\"Missing Context Provider\");return e},B=(e,t)=>{if(null===t)return!1;if(!t.includeChildren)return t.path.every(((t,n)=>e[n]===t))&&t.path.length===e.length;for(const[n,r]of t.path.entries())if(r!==e[n])return!1;return!0},W=\"**INVALID_FUNCTION**\",G=({nodeData:r,showStringQuotes:o=!0,stringTruncate:a=200,pathString:l,canEdit:s,setIsEditing:c,styles:d,translate:u,value:p,TextWrapper:g=({children:e})=>e})=>{const m=null!=p?p:r.value,[h,y]=i(!1),f=o?'\"':\"\",b=m.length>a,v=()=>{s?c(!0):y(!h)};return e(\"div\",{id:`${l}_display`,onDoubleClick:v,onClick:e=>{(e.getModifierState(\"Control\")||e.getModifierState(\"Meta\"))&&v()},className:\"jer-value-string\",style:d,children:[f,b?e(n,h?{children:[t(g,{children:e(\"span\",{children:[m,f]})}),e(\"span\",{className:\"jer-string-expansion jer-show-less\",onClick:()=>y(!1),children:[\" \",u(\"SHOW_LESS\",r)]})]}:{children:[e(g,{children:[t(\"span\",{children:m.slice(0,a-2).trimEnd()}),\" \"]}),t(\"span\",{className:\"jer-string-expansion jer-ellipsis\",onClick:()=>y(!0),children:\"...\"}),f]}):t(g,{children:`${m}${f}`})]})},Y=({styles:e,pathString:n,value:r,setValue:o,handleEdit:i,handleKeyboard:l,keyboardCommon:s})=>{const c=a(null);return t(m,{className:\"jer-input-text\",textAreaRef:c,name:n,value:r,setValue:o,handleKeyPress:e=>{l(e,Object.assign({stringConfirm:i,stringLineBreak:()=>{const e=N(c,\"\\n\");o(e)}},s))},styles:e})},H=n=>{var{isEditing:r,path:o,enumType:i}=n,a=p(n,[\"isEditing\",\"path\",\"enumType\"]);const{getStyles:l}=K(),s=j(o),{value:c,setValue:d,nodeData:u,handleEdit:g,handleKeyboard:m,keyboardCommon:h}=a;return r&&i?e(\"div\",{className:\"jer-select jer-select-enums\",children:[t(\"select\",{name:`${s}-value-select`,className:\"jer-select-inner\",onChange:e=>d(e.target.value),value:c,autoFocus:!0,onKeyDown:e=>{m(e,Object.assign({stringConfirm:g},h))},children:i.values.map((e=>t(\"option\",{value:e,children:e},e)))}),t(\"span\",{className:\"focus\"})]}):r?t(Y,Object.assign({styles:l(\"input\",u),pathString:s},a,{setValue:a.setValue})):t(G,Object.assign({pathString:s,styles:l(\"string\",u)},a))},U=({value:e,setValue:n,isEditing:r,path:o,setIsEditing:i,handleEdit:a,nodeData:l,handleKeyboard:s,keyboardCommon:c})=>{const{getStyles:d}=K();return r?t(\"input\",{className:\"jer-input-number\",type:\"text\",name:j(o),value:e,onChange:e=>n(e.target.value.replace(/[^0-9.-]/g,\"\")),autoFocus:!0,onFocus:e=>setTimeout((()=>e.target.select()),10),onKeyDown:t=>s(t,Object.assign({numberConfirm:a,numberUp:()=>n(Number(e)+1),numberDown:()=>n(Number(e)-1)},c)),style:Object.assign({width:String(e).length/1.5+2+\"em\"},d(\"input\",l))}):t(\"span\",{onDoubleClick:()=>i(!0),className:\"jer-value-number\",style:d(\"number\",l),children:e})},$=({value:e,setValue:n,isEditing:r,path:o,setIsEditing:i,handleEdit:a,nodeData:l,handleKeyboard:s,keyboardCommon:c})=>{const{getStyles:d}=K();return\"boolean\"!=typeof e?null:r?t(\"input\",{className:\"jer-input-boolean\",type:\"checkbox\",name:j(o),checked:e,onChange:()=>n(!e),onKeyDown:t=>{\" \"===t.key&&t.preventDefault(),s(t,Object.assign({booleanConfirm:a,booleanToggle:()=>n(!e)},c))},autoFocus:!0}):t(\"span\",{onDoubleClick:()=>i(!0),className:\"jer-value-boolean\",style:d(\"boolean\",l),children:String(e)})},Z=(e,t)=>{const n=a(void 0),r=a(t);l((()=>{r.current=t}),[t]);const o=e=>{r.current(e)};l((()=>{if(window.clearTimeout(n.current),e)return n.current=window.setTimeout((()=>{window.addEventListener(\"keydown\",o)}),100),()=>{window.clearTimeout(n.current),window.removeEventListener(\"keydown\",o)}}),[e])},X=({value:e,isEditing:n,setIsEditing:r,handleEdit:o,nodeData:i,handleKeyboard:a,keyboardCommon:l})=>{const{getStyles:s}=K();return Z(n,(e=>a(e,Object.assign({confirm:o},l)))),t(\"div\",{onDoubleClick:()=>r(!0),className:\"jer-value-null\",style:s(\"null\",i),children:String(e)})},J=({value:e})=>{let n=\"Error!\";switch(typeof e){case\"string\":e===W&&(n=\"Function\");break;case\"undefined\":n=\"Undefined\";break;case\"symbol\":n=\"Symbol\"}return t(\"span\",{className:\"jer-value-invalid\",children:n})},Q=({size:n,style:r,className:o})=>e(\"svg\",{viewBox:\"0 0 24 24\",fill:\"currentColor\",width:n,height:n,className:o,style:r,children:[t(\"path\",{d:\"M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4z\"}),t(\"path\",{d:\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"})]}),q=({size:n,style:r,className:o})=>e(\"svg\",{viewBox:\"0 0 24 24\",fill:\"currentColor\",width:n,height:n,className:o,style:r,transform:\"translate(0, 0.5)\",children:[t(\"path\",{d:\"M7 17.013l4.413-.015 9.632-9.54c.378-.378.586-.88.586-1.414s-.208-1.036-.586-1.414l-1.586-1.586c-.756-.756-2.075-.752-2.825-.003L7 12.583v4.43zM18.045 4.458l1.589 1.583-1.597 1.582-1.586-1.585 1.594-1.58zM9 13.417l6.03-5.973 1.586 1.586-6.029 5.971L9 15.006v-1.589z\"}),t(\"path\",{d:\"M5 21h14c1.103 0 2-.897 2-2v-8.668l-2 2V19H8.158c-.026 0-.053.01-.079.01-.033 0-.066-.009-.1-.01H5V5h6.847l2-2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2z\"})]}),ee=({size:e,style:n,className:r})=>t(\"svg\",{viewBox:\"0 0 24 24\",fill:\"currentColor\",width:e,height:e,className:r,style:n,children:t(\"path\",{d:\"M6 19a2 2 0 002 2h8a2 2 0 002-2V7H6v12m2.46-7.12l1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12M15.5 4l-1-1h-5l-1 1H5v2h14V4h-3.5z\"})}),te=({size:n,style:r,className:o})=>e(\"svg\",{fill:\"none\",stroke:\"currentColor\",strokeLinecap:\"round\",strokeLinejoin:\"round\",strokeWidth:2,viewBox:\"0 0 24 24\",width:n,height:n,className:o,style:r,children:[t(\"path\",{d:\"M9 2 H15 A1 1 0 0 1 16 3 V5 A1 1 0 0 1 15 6 H9 A1 1 0 0 1 8 5 V3 A1 1 0 0 1 9 2 z\"}),t(\"path\",{d:\"M8 4H6a2 2 0 00-2 2v14a2 2 0 002 2h12a2 2 0 002-2v-2M16 4h2a2 2 0 012 2v4M21 14H11\"}),t(\"path\",{d:\"M15 10l-4 4 4 4\"})]}),ne=({size:n,style:r,className:o})=>e(\"svg\",{fill:\"none\",stroke:\"currentColor\",strokeLinecap:\"round\",strokeLinejoin:\"round\",strokeWidth:2,viewBox:\"0 0 24 24\",width:n,height:n,className:o,style:r,children:[t(\"path\",{d:\"M22 11.08V12a10 10 0 11-5.93-9.14\"}),t(\"path\",{d:\"M22 4L12 14.01l-3-3\"})]}),re=({size:e,style:n,className:r})=>t(\"svg\",{baseProfile:\"tiny\",viewBox:\"0 0 24 24\",fill:\"currentColor\",width:e,height:e,className:r,style:n,children:t(\"path\",{d:\"M12 4c-4.411 0-8 3.589-8 8s3.589 8 8 8 8-3.589 8-8-3.589-8-8-8zm-5 8c0-.832.224-1.604.584-2.295l6.711 6.711A4.943 4.943 0 0112 17c-2.757 0-5-2.243-5-5zm9.416 2.295L9.705 7.584A4.943 4.943 0 0112 7c2.757 0 5 2.243 5 5 0 .832-.224 1.604-.584 2.295z\"})}),oe=({size:e,style:n,className:r})=>t(\"svg\",{viewBox:\"0 0 512 512\",fill:\"currentColor\",width:e,height:e,className:r,style:n,children:t(\"path\",{d:\"M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z\"})}),ie=({name:e,nodeData:r})=>{var o,i,a,l,s,c,d;const{getStyles:u,icons:p}=K(),g={size:\"1.4em\",className:\"jer-icon\"};switch(e){case\"add\":return null!==(o=null==p?void 0:p.add)&&void 0!==o?o:t(Q,Object.assign({},g,{style:u(\"iconAdd\",r)}));case\"edit\":return null!==(i=null==p?void 0:p.edit)&&void 0!==i?i:t(q,Object.assign({},g,{style:u(\"iconEdit\",r)}));case\"delete\":return null!==(a=null==p?void 0:p.delete)&&void 0!==a?a:t(ee,Object.assign({},g,{style:u(\"iconDelete\",r),size:\"1.45em\"}));case\"copy\":return null!==(l=null==p?void 0:p.copy)&&void 0!==l?l:t(te,Object.assign({},g,{style:u(\"iconCopy\",r),size:\"1.2em\"}));case\"ok\":return null!==(s=null==p?void 0:p.ok)&&void 0!==s?s:t(ne,Object.assign({},g,{style:Object.assign({fontSize:\"90%\"},u(\"iconOk\",r))}));case\"cancel\":return null!==(c=null==p?void 0:p.cancel)&&void 0!==c?c:t(re,Object.assign({},g,{style:Object.assign({fontSize:\"130%\"},u(\"iconCancel\",r))}));case\"chevron\":return null!==(d=null==p?void 0:p.chevron)&&void 0!==d?d:t(oe,{size:\"1em\",style:u(\"iconCollection\",r)});default:return t(n,{})}},ae=({startEdit:r,handleDelete:o,handleAdd:a,enableClipboard:l,type:s,customButtons:c,nodeData:d,translate:p,keyboardControls:g,handleKeyboard:m,editConfirmRef:h,getNewKeyOptions:y,jsonStringify:f,onEditEvent:b,showIconTooltips:v})=>{const{getStyles:j}=K(),w=p(\"KEY_NEW\",d),[D,C]=i(w),[O,k]=i(!1),{key:S,path:N,value:T}=d,x=Array.isArray(O),A=e=>{var t;if(b&&b(e?[...N,null]:null,e),!e)return void k(!1);const n=Object.keys(u(d.fullData,N)),r=y?null===(t=y(d))||void 0===t?void 0:t.filter((e=>!n.includes(e))):null;r&&C(\"\"),k(null==r||r)};return e(\"div\",{className:\"jer-edit-buttons\",style:{opacity:O?1:void 0},onClick:e=>e.stopPropagation(),children:[l&&t(\"div\",{onClick:e=>{var t;e.stopPropagation();let n,r,o=\"value\",i=\"\",a=null;if(l){const s=E(e);if(s&&g.clipboardModifier.includes(s)?(n=se(N),i=n,o=\"path\"):(n=T,i=\"object\"==typeof n?f(T):String(n)),!navigator.clipboard)return void(\"function\"==typeof l&&l({success:!1,value:n,stringValue:i,path:N,key:S,type:o,errorMessage:\"Can't access clipboard API\"}));null===(t=navigator.clipboard)||void 0===t||t.writeText(i).then((()=>r=!0)).catch((e=>{r=!1,a=e.message})).finally((()=>{\"function\"==typeof l&&l({success:r,errorMessage:a,value:n,stringValue:i,path:N,key:S,type:o})}))}},className:\"jer-copy-pulse\",title:v?p(\"TOOLTIP_COPY\",d):\"\",children:t(ie,{name:\"copy\",nodeData:d})}),r&&t(\"div\",{onClick:r,title:v?p(\"TOOLTIP_EDIT\",d):\"\",children:t(ie,{name:\"edit\",nodeData:d})}),o&&t(\"div\",{onClick:o,title:v?p(\"TOOLTIP_DELETE\",d):\"\",children:t(ie,{name:\"delete\",nodeData:d})}),a&&t(\"div\",{onClick:()=>{\"object\"===s?A(!0):a(\"\")},title:v?p(\"TOOLTIP_ADD\",d):\"\",children:t(ie,{name:\"add\",nodeData:d})}),null==c?void 0:c.map((({Element:e,onClick:n},r)=>t(\"div\",{onClick:e=>n&&n(d,e),children:t(e,{nodeData:d})},r))),O&&a&&\"object\"===s&&e(n,{children:[x?e(\"div\",{className:\"jer-select jer-select-keys\",children:[e(\"select\",{name:\"new-key-select\",className:\"jer-select-inner\",onChange:e=>{a(e.target.value),A(!1)},defaultValue:\"\",autoFocus:!0,onKeyDown:e=>{m(e,{cancel:()=>A(!1)})},children:[t(\"option\",{value:\"\",disabled:!0,children:O.length>0?p(\"KEY_SELECT\",d):p(\"NO_KEY_OPTIONS\",d)}),O.map((e=>t(\"option\",{value:e,children:e},e)))]}),t(\"span\",{className:\"focus\"})]}):t(\"input\",{className:\"jer-input-new-key\",type:\"text\",name:\"new-object-key\",value:D,onChange:e=>C(e.target.value),autoFocus:!0,onFocus:e=>e.target.select(),onKeyDown:e=>{m(e,{stringConfirm:()=>{a&&(A(!1),a(D),C(w))},cancel:()=>{A(!1),C(w)}})},style:j(\"input\",d)}),t(le,{onOk:()=>{x&&!D||(A(!1),a(D))},onCancel:()=>{A(!1)},nodeData:d,editConfirmRef:h,hideOk:x})]})]})},le=({onOk:n,onCancel:r,nodeData:o,editConfirmRef:i,hideOk:a=!1})=>e(\"div\",{className:\"jer-confirm-buttons\",children:[!a&&t(\"div\",{onClick:n,ref:i,children:t(ie,{name:\"ok\",nodeData:o})}),t(\"div\",{onClick:r,children:t(ie,{name:\"cancel\",nodeData:o})})]}),se=e=>e.reduce(((e,t)=>\"number\"==typeof t?`${e}[${t}]`:\"\"===e?t:`${e}.${t}`),\"\"),ce=[\"string\",\"number\",\"boolean\",\"null\",\"object\",\"array\"],de=({props:e,collapsed:t})=>{const{data:n,nodeData:r,parentData:o,onEdit:a,onError:l,showErrorMessages:c,restrictEditFilter:d,restrictDeleteFilter:u,restrictAddFilter:p,restrictDragFilter:g,translate:m,errorMessageTimeout:h}=e,{currentlyEditingElement:y,setCurrentlyEditingElement:f}=M(),[b,v]=i(null),E=Object.assign(Object.assign({},r),{collapsed:t}),{path:w,key:D,size:C}=E,O=j(w),k=!d(E),S=!u(E),N=!p(E),T=!g(E)&&S&&null===y,x=e=>{c&&(v(e),setTimeout((()=>v(null)),h)),console.warn(\"Error\",e)},A=s(((e,t)=>{x(e.message),l&&l({currentData:E.fullData,errorValue:t,currentValue:n,name:D,path:w,error:e})}),[l,c]),P=y===O,R=y===`key_${O}`,K=\"number\"==typeof w.slice(-1)[0],I={isEditing:P,isEditingKey:R,isArray:K,canEditKey:null!==o&&k&&N&&S&&!K},V=\"\"===D&&w.length>0?m(\"EMPTY_STRING\",E):null;return{pathString:O,nodeData:E,path:w,name:D,size:C,canEdit:k,canDelete:S,canAdd:N,canDrag:T,error:b,showError:x,onError:A,setError:v,handleEditKey:e=>{if(f(null),D===e)return;if(!o)return;const t=w.slice(0,-1);if(Object.keys(o).includes(e))return void A({code:\"KEY_EXISTS\",message:m(\"ERROR_KEY_EXISTS\",E)},e);const n=Object.fromEntries(Object.entries(o).map((([t,n])=>t===D?[e,n]:[t,n])));a(n,t).then((t=>{t&&A({code:\"UPDATE_ERROR\",message:t},e)}))},derivedValues:I,emptyStringKey:V}},ue=({canDrag:e,canDragOnto:n,path:r,nodeData:o,onMove:a,onError:l,translate:s})=>{const{getStyles:d}=K(),{dragSource:u,setDragSource:p}=M(),[g,m]=i(!1),h=j(r),y=c((()=>e?{onDragStart:e=>{e.stopPropagation(),p({path:r,pathString:h})},onDragEnd:e=>{e.stopPropagation(),p({path:null,pathString:null})}}:{}),[e,h]),f=c((()=>e=>n?{onDragOver:e=>{e.stopPropagation(),e.preventDefault()},onDrop:t=>{t.stopPropagation(),v(e),p({path:null,pathString:null}),m(!1)},onDragEnter:t=>{var n;t.stopPropagation(),h.startsWith(null!==(n=u.pathString)&&void 0!==n?n:\"\")||m(e)},onDragExit:e=>{e.stopPropagation(),m(!1)}}:{}),[u,n,h]),b=c((()=>n&&null!==u.pathString?t(\"div\",Object.assign({className:\"jer-drop-target-bottom\",style:{height:\"50%\",position:\"absolute\",width:\"100%\",top:\"50%\",zIndex:r.length}},f(\"below\"))):null),[u,n,r.length]),v=e=>{var t,n;const i=null===(t=u.path)||void 0===t?void 0:t.slice(-1)[0],c=null===(n=u.path)||void 0===n?void 0:n.slice(0,-1).join(\".\"),d=r.slice(0,-1).join(\"\"),{parentData:p}=o;\"string\"==typeof i&&p&&!Array.isArray(p)&&Object.keys(p).includes(i)&&i in p&&c!==d?l({code:\"KEY_EXISTS\",message:s(\"ERROR_KEY_EXISTS\",o)},i):a(u.path,r,e).then((e=>{e&&l({code:\"UPDATE_ERROR\",message:e},o.value)}))};return{dragSourceProps:y,getDropTargetProps:f,BottomDropTarget:b,DropTargetPadding:({position:e,nodeData:n})=>g===e?t(\"div\",{className:\"jer-drag-n-drop-padding\",style:d(\"dropZone\",n)}):null,handleDrop:v}},pe=(e,t,n,r)=>{var o,i,a;if(!t.current)return 0;const l=parseInt(null!==(o=getComputedStyle(n.current).getPropertyValue(\"line-height\"))&&void 0!==o?o:\"16px\"),s=(null!==(a=null===(i=t.current)||void 0===i?void 0:i.offsetWidth)&&void 0!==a?a:0)/(.5*l),c=r(e).replace(/\\\\n/g,\"\\n\").split(\"\\n\").map((e=>Math.ceil(e.length/s))).reduce(((e,t)=>e+t),0)*l;return Math.min(c+30,window.innerHeight-50)},ge=({isEditingKey:n,canEditKey:r,pathString:o,path:i,name:a,arrayIndexFromOne:l,handleKeyboard:s,handleEditKey:c,handleCancel:d,handleClick:u,keyValueArray:p,styles:g,getNextOrPrevious:m,emptyStringKey:h})=>{const{setCurrentlyEditingElement:y}=M(),f=\"number\"==typeof a?String(a+(l?1:0)):a;return n?t(\"input\",{className:\"jer-input-text jer-key-edit\",type:\"text\",name:o,defaultValue:f,autoFocus:!0,onFocus:e=>e.target.select(),onKeyDown:e=>s(e,{stringConfirm:()=>c(e.target.value),cancel:d,tabForward:()=>{if(c(e.target.value),p){const e=null==p?void 0:p[0][0];y(e?[...i,e]:m(\"next\"))}else y(i)},tabBack:()=>{c(e.target.value),y(m(\"prev\"))}}),style:{width:f.length/1.5+.5+\"em\"}}):e(\"span\",{className:\"jer-key-text\",style:Object.assign(Object.assign({},g),{minWidth:`${Math.min(f.length+1,5)}ch`,flexShrink:f.length>10?1:0}),onDoubleClick:()=>r&&y(i,\"key\"),onClick:u,children:[h?t(\"span\",{className:\"jer-empty-string\",children:h}):f,\"\"!==f||h?t(\"span\",{className:\"jer-key-colon\",children:\":\"}):null]})},me=n=>{const{data:r,parentData:o,onEdit:a,onDelete:d,onChange:u,onMove:p,enableClipboard:g,canDragOnto:m,restrictTypeSelection:h,searchFilter:f,searchText:b,showLabel:v,stringTruncate:j,showStringQuotes:E,arrayIndexFromOne:w,indent:D,translate:C,customNodeDefinitions:k,customNodeData:S,handleKeyboard:N,keyboardControls:T,sort:x,editConfirmRef:A,jsonStringify:P,showIconTooltips:R}=n,{getStyles:I}=K(),{setCurrentlyEditingElement:V,setCollapseState:_,previouslyEditedElement:F,setPreviouslyEditedElement:L,tabDirection:z,setTabDirection:B,previousValue:G,setPreviousValue:Y}=M(),[H,U]=i(\"function\"==typeof r?W:r),{pathString:$,nodeData:Z,path:X,name:J,canEdit:Q,canDelete:q,canDrag:ee,error:te,onError:ne,handleEditKey:re,emptyStringKey:oe,derivedValues:ie}=de({props:n}),{dragSourceProps:se,getDropTargetProps:pe,BottomDropTarget:me,DropTargetPadding:be}=ue({canDrag:ee,canDragOnto:m,path:X,nodeData:Z,onMove:p,onError:ne,translate:C}),[ve,je]=i(he(r,S)),Ee=s((e=>{if(!u)return void U(e);const t=u({currentData:Z.fullData,newValue:e,currentValue:H,name:J,path:X});U(t)}),[u]);l((()=>{U(\"function\"==typeof r?W:r),je(he(r,S))}),[r,te]);const{CustomNode:we,customNodeProps:De,hideKey:Ce,showEditTools:Oe=!0,showOnEdit:ke,showOnView:Se,passOriginalNode:Ne}=S,Te=[...ce,...k.filter((({showInTypesSelector:e=!1,name:t})=>e&&!!t)).map((({name:e})=>e))],xe=c((()=>{if(\"boolean\"==typeof h)return h?[]:Te;if(Array.isArray(h))return h;const e=h(Z);return\"boolean\"==typeof e?e?[]:Te:e}),[Z,h]),[Ae,Pe]=i(((e,t)=>{var n;if(\"string\"!=typeof e)return null;const r=t.filter((t=>t instanceof Object&&t.enum&&t.values.includes(e)&&t.matchPriority));return r.sort(((e,t)=>{var n,r;return(null!==(n=t.matchPriority)&&void 0!==n?n:0)-(null!==(r=e.matchPriority)&&void 0!==r?r:0)})),null!==(n=r[0])&&void 0!==n?n:null})(H,xe)),{isEditing:Re}=ie,Ke=y(\"value\",Z,f,b);if(Re&&(!Ke||!Q)){const e=O(Z.fullData,X,z,x);V(e||F)}if(!Ke)return null;const Ie=e=>{let t;if(V(null),Y(null),void 0===e||(e=>e&&\"object\"==typeof e&&\"type\"in e&&\"target\"in e&&\"preventDefault\"in e&&\"function\"==typeof e.preventDefault)(e))switch(ve){case\"object\":t={[C(\"DEFAULT_NEW_KEY\",Z)]:H};break;case\"array\":t=null!=H?H:[];break;case\"number\":{const e=Number(H);t=isNaN(e)?0:e;break}default:t=H}else t=e;a(t,X).then((e=>{e&&ne({code:\"UPDATE_ERROR\",message:e},t)}))},Ve=()=>{V(null),null===G?(U(r),Y(null)):a(G,X)},{isEditingKey:_e,canEditKey:Fe}=ie,Le=!Re&&te,ze=Re&&xe.length>1,Me=(\"invalid\"!==ve||we)&&!te&&Oe,Be=v&&!Ce,We=we&&(Re&&ke||!Re&&Se),Ge={value:H,parentData:o,setValue:Ee,isEditing:Re,canEdit:Q,setIsEditing:Q?()=>V(X):()=>{},handleEdit:Ie,handleCancel:Ve,path:X,stringTruncate:j,showStringQuotes:E,nodeData:Z,enumType:Ae,translate:C,handleKeyboard:N,keyboardCommon:{cancel:Ve,tabForward:()=>{B(\"next\"),L($);const e=O(Z.fullData,X,\"next\",x);e&&(Ie(),V(e))},tabBack:()=>{B(\"prev\"),L($);const e=O(Z.fullData,X,\"prev\",x);e&&(Ie(),V(e))}}},Ye={canEditKey:Fe,isEditingKey:_e,pathString:$,path:X,name:J,arrayIndexFromOne:w,handleKeyboard:N,handleEditKey:re,handleCancel:Ve,styles:I(\"property\",Z),getNextOrPrevious:e=>O(Z.fullData,X,e,x),emptyStringKey:oe},He=We?t(we,Object.assign({},n,{value:H,customNodeProps:De,setValue:Ee,handleEdit:Ie,handleCancel:Ve,handleKeyPress:e=>N(e,{stringConfirm:Ie,cancel:Ve}),isEditing:Re,setIsEditing:()=>V(X),getStyles:I,originalNode:Ne?ye(r,Ge):void 0,originalNodeKey:Ne?t(ge,Object.assign({},Ye)):void 0,canEdit:Q,keyboardCommon:Ge.keyboardCommon,onError:ne})):ye(r,Ge);return e(\"div\",Object.assign({className:\"jer-component jer-value-component\",style:{marginLeft:null!==o?D/2+\"em\":0,position:\"relative\"},draggable:ee},se,pe(\"above\"),{children:[me,t(be,{position:\"above\",nodeData:Z}),e(\"div\",{className:\"jer-value-main-row\",style:{flexWrap:J.length>10?\"wrap\":\"nowrap\"},children:[Be&&t(ge,Object.assign({},Ye)),e(\"div\",{className:\"jer-value-and-buttons\",children:[t(\"div\",{className:\"jer-input-component\",children:He}),Re?t(le,{onOk:Ie,onCancel:Ve,nodeData:Z,editConfirmRef:A}):Me&&t(ae,{startEdit:Q?()=>{Y(G),V(X,Ve)}:void 0,handleDelete:q?()=>{d(H,X).then((e=>{e&&ne({code:\"DELETE_ERROR\",message:e},H)}))}:void 0,enableClipboard:g,translate:C,customButtons:n.customButtons,nodeData:Z,handleKeyboard:N,keyboardControls:T,editConfirmRef:A,jsonStringify:P,showIconTooltips:R}),ze&&e(\"div\",{className:\"jer-select jer-select-types\",children:[t(\"select\",{name:`${J}-type-select`,className:\"jer-select-inner\",onChange:e=>(e=>{const t=k.find((t=>t.name===e));if(t)return a(t.defaultValue,X),je(e),Pe(null),V(null),void _({path:X,collapsed:!1,includeChildren:!1});const n=xe.find((t=>t instanceof Object&&t.enum===e));if(n)return\"string\"==typeof H&&n.values.includes(H)||a(n.values[0],X).then((e=>{e&&(ne({code:\"UPDATE_ERROR\",message:e},r),V(null))})),void Pe(n);const r=fe(H,e,C(\"DEFAULT_NEW_KEY\",Z),(null==S?void 0:S.CustomNode)?C(\"DEFAULT_STRING\",Z):void 0);[\"string\",\"number\",\"boolean\"].includes(e)||V(null),a(r,X).then((e=>{e?(ne({code:\"UPDATE_ERROR\",message:e},r),V(null)):Pe(null)}))})(e.target.value),value:Ae?Ae.enum:ve,children:xe.map((e=>e instanceof Object&&\"enum\"in e?t(\"option\",{value:e.enum,children:e.enum},e.enum):t(\"option\",{value:e,children:e},e)))}),t(\"span\",{className:\"focus\"})]}),Le&&t(\"span\",{className:\"jer-error-slug\",style:I(\"error\",Z),children:te})]})]}),t(be,{position:\"below\",nodeData:Z})]}))},he=(e,t)=>(null==t?void 0:t.CustomNode)&&(null==t?void 0:t.name)&&t.showInTypesSelector?t.name:\"string\"==typeof e?\"string\":\"number\"==typeof e?\"number\":\"boolean\"==typeof e?\"boolean\":null===e?\"null\":\"invalid\",ye=(e,n)=>{const r=he(e),{value:o}=n;switch(r){case\"string\":return t(H,Object.assign({},n,{value:o}));case\"number\":return t(U,Object.assign({},n,{value:o}));case\"boolean\":return t($,Object.assign({},n,{value:o}));case\"null\":return t(X,Object.assign({},n));default:return t(J,Object.assign({},n))}},fe=(e,t,n,r)=>{switch(t){case\"string\":return null!=r?r:String(e);case\"number\":{const t=Number(e);return isNaN(t)?0:t}case\"boolean\":return!!e;case\"null\":return null;case\"object\":return{[n]:e};case\"array\":return[e];default:return String(e)}},be=(e=[],t)=>{const n=e.filter((({condition:e})=>e(t)));if(0===n.length)return{};const r=n[0],{element:o,wrapperElement:i,customNodeProps:a,wrapperProps:l,hideKey:s=!1,showEditTools:c=!0,showOnEdit:d=!1,showOnView:u=!0,showCollectionWrapper:g=!0}=r,m=p(r,[\"element\",\"wrapperElement\",\"customNodeProps\",\"wrapperProps\",\"hideKey\",\"showEditTools\",\"showOnEdit\",\"showOnView\",\"showCollectionWrapper\"]);return Object.assign({CustomNode:o,CustomWrapper:i,customNodeProps:a,wrapperProps:l,hideKey:s,showEditTools:c,showOnEdit:d,showOnView:u,showCollectionWrapper:g},m)},ve=r=>{const{getStyles:o}=K(),{collapseState:c,setCollapseState:d,getMatchingCollapseState:u,currentlyEditingElement:p,setCurrentlyEditingElement:f,areChildrenBeingEdited:b,previousValue:v,setPreviousValue:j}=M(),{mainContainerRef:w,data:D,nodeData:C,parentData:k,showCollectionCount:S,onEdit:T,onAdd:x,onDelete:A,canDragOnto:P,collapseFilter:R,collapseAnimationTime:I,onMove:V,enableClipboard:_,onEditEvent:F,showIconTooltips:L,searchFilter:z,searchText:B,indent:W,sort:G,showArrayIndices:Y,arrayIndexFromOne:H,defaultValue:U,newKeyOptions:$,translate:Z,customNodeDefinitions:X,customNodeData:J,jsonParse:Q,jsonStringify:q,TextEditor:ee,keyboardControls:te,handleKeyboard:ne,insertAtTop:re,onCollapse:oe,editConfirmRef:se,collapseClickZones:ce}=r,[he,ye]=i(q(D)),fe=R(C),{contentRef:je,isAnimating:Ee,maxHeight:we,collapsed:De,animateCollapse:Ce,cssTransitionValue:Oe}=((e,t,n,r,o)=>{const[l,c]=i(n?0:void 0),[d,u]=i(n),p=a(!1),g=a(null),m=a(0),h=a(0),y=t/1e3+\"s\",f=s((n=>{var i,a;if(d!==n){switch(window.clearTimeout(h.current),p.current=!0,n){case!0:{const e=null!==(a=null===(i=g.current)||void 0===i?void 0:i.offsetHeight)&&void 0!==a?a:0;m.current=e,c(e),setTimeout((()=>{c(0)}),5);break}case!1:c(m.current||pe(e,g,r,o))}u(!d),h.current=window.setTimeout((()=>{p.current=!1,n||c(void 0)}),t)}}),[t,d,e,r,o]);return{contentRef:g,isAnimating:p.current,animateCollapse:f,maxHeight:l,collapsed:d,cssTransitionValue:y}})(D,I,fe,w,q),{pathString:ke,nodeData:Se,path:Ne,name:Te,size:xe,canEdit:Ae,canDelete:Pe,canAdd:Re,canDrag:Ke,error:Ie,setError:Ve,onError:_e,handleEditKey:Fe,emptyStringKey:Le,derivedValues:ze}=de({props:r,collapsed:De}),{dragSourceProps:Me,getDropTargetProps:Be,BottomDropTarget:We,DropTargetPadding:Ge}=ue({canDrag:Ke,canDragOnto:P,path:Ne,nodeData:Se,onMove:V,onError:_e,translate:Z}),Ye=a(!fe),{isEditing:He,isEditingKey:Ue,isArray:$e,canEditKey:Ze}=ze;l((()=>{ye(q(D))}),[D,q]),l((()=>{const e=R(Se)&&!He;Ye.current=!e,Ce(e)}),[R]),l((()=>{if(null!==c){const e=u(Ne);e&&(Ye.current=!0,Ce(e.collapsed))}}),[c]);const Xe=a(null),Je=s(((e,t)=>{if(\"function\"!=typeof U)return U;const n=U(e,t);return void 0!==n?n:null}),[U]),Qe=s((e=>$?\"function\"!=typeof $?$:$(e):null),[$]),{CustomNode:qe,customNodeProps:et,CustomWrapper:tt,wrapperProps:nt={},hideKey:rt,showEditTools:ot=!0,showOnEdit:it,showOnView:at,showCollectionWrapper:lt=!0}=J,st=b(ke);st&&De&&Ce(!1);if(!(y(\"collection\",Se,z,B)||0===Se.level)&&!st)return null;const ct=Array.isArray(D)?\"array\":\"object\",dt=\"array\"===ct?{open:\"[\",close:\"]\"}:{open:\"{\",close:\"}\"},ut=e=>{if(\"Tab\"!==e.key||e.getModifierState(\"Shift\"))ne(e,{objectConfirm:gt,cancel:ht});else{e.preventDefault();const t=N(Xe,\"\\t\");ye(t)}},pt=e=>{e.stopPropagation();const t=E(e);if(t&&te.collapseModifier.includes(t))return Ye.current=!0,void d({collapsed:!De,path:Ne,includeChildren:!0});p&&p.includes(ke)||(Ye.current=!0,d(null),oe&&oe({path:Ne,collapsed:!De,includeChildren:!1}),Ce(!De))},gt=()=>{try{const e=Q(he);if(f(null),j(null),Ve(null),q(e)===q(D))return;T(e,Ne).then((t=>{t&&_e({code:\"UPDATE_ERROR\",message:t},e)}))}catch(e){_e({code:\"INVALID_JSON\",message:Z(\"ERROR_INVALID_JSON\",Se)},he)}},mt=Ne.length>0?()=>{A(D,Ne).then((e=>{e&&_e({code:\"DELETE_ERROR\",message:e},D)}))}:void 0,ht=()=>{f(null),null===v?(Ve(null),ye(q(D)),j(null)):T(v,Ne)},yt=\"when-closed\"===S?De:S,ft=!He&&ot,bt=(Y||!$e)&&!rt&&void 0!==Te,vt=qe&&(He&&it||!He&&at),jt=Object.entries(D).map((([e,t])=>[\"array\"===ct?Number(e):e,t]));\"object\"===ct&&G(jt,(e=>e));const Et=Ye.current?He?e(\"div\",{className:\"jer-collection-text-edit\",children:[ee?t(ee,{value:he,onChange:ye,onKeyDown:e=>ne(e,{objectConfirm:gt,cancel:ht})}):t(m,{textAreaRef:Xe,className:\"jer-collection-text-area\",name:ke,value:he,setValue:ye,handleKeyPress:ut,styles:o(\"input\",Se)}),t(\"div\",{className:\"jer-collection-input-button-row\",children:t(le,{onOk:gt,onCancel:ht,nodeData:Se,editConfirmRef:se})})]}):jt.map((([e,n],i)=>{const a={key:e,value:n,path:[...Ne,e],level:Ne.length+1,index:i,size:h(n)?Object.keys(n).length:null,parentData:D,fullData:Se.fullData},l=be(X,a);return t(\"div\",{className:\"jer-collection-element\",style:o(\"collectionElement\",a),children:h(n)&&!(null==l?void 0:l.renderCollectionAsValue)?t(ve,Object.assign({},r,{data:n,parentData:D,nodeData:a,showCollectionCount:S,canDragOnto:Ae,customNodeData:l}),e):t(me,Object.assign({},r,{data:n,parentData:D,nodeData:a,canDragOnto:Ae,showLabel:\"object\"===ct||Y,customNodeData:l}),e)},e)})):null,wt=!!lt&&(De&&!st);wt||(Ye.current=!0);const Dt=Object.assign(Object.assign({},r),{data:D,value:D,parentData:k,nodeData:Se,setValue:e=>g(void 0,void 0,void 0,(function*(){return yield T(e,Ne)})),handleEdit:gt,handleCancel:ht,handleKeyPress:ut,isEditing:He,setIsEditing:()=>f(Ne),getStyles:o,canDragOnto:Ae,canEdit:Ae,keyboardCommon:{},onError:_e}),Ct=vt?t(qe,Object.assign({customNodeProps:et},Dt,{children:Et})):Et,Ot=ft&&t(ae,{startEdit:Ae?()=>{Ye.current=!0,j(null),f(Ne)}:void 0,handleAdd:Re?e=>{Ce(!1);const t=Je(Se,e);if(\"array\"===ct){const e=re.array?0:D.length,n=re.array?{insert:!0}:{};x(t,[...Ne,e],n).then((e=>{e&&_e({code:\"ADD_ERROR\",message:e},t)}))}else if(e in D)_e({code:\"KEY_EXISTS\",message:Z(\"ERROR_KEY_EXISTS\",Se)},e);else{const n=re.object?{insertBefore:0}:{};x(t,[...Ne,e],n).then((e=>{e&&_e({code:\"ADD_ERROR\",message:e},t)}))}}:void 0,handleDelete:Pe?mt:void 0,enableClipboard:_,type:ct,nodeData:Se,translate:Z,customButtons:r.customButtons,keyboardControls:te,handleKeyboard:ne,getNewKeyOptions:Qe,editConfirmRef:se,jsonStringify:q,onEditEvent:F,showIconTooltips:L}),kt={canEditKey:Ze,isEditingKey:Ue,pathString:ke,path:Ne,name:Te,arrayIndexFromOne:H,handleKeyboard:ne,handleEditKey:Fe,handleCancel:ht,keyValueArray:jt,styles:o(\"property\",Se),getNextOrPrevious:e=>O(Se.fullData,Ne,e,G),handleClick:ce.includes(\"property\")?pt:e=>e.stopPropagation(),emptyStringKey:Le},St=e(\"div\",Object.assign({className:\"jer-component jer-collection-component\",style:Object.assign(Object.assign({marginLeft:(0===Ne.length?0:W/2)+\"em\"},o(\"collection\",Se)),{position:\"relative\"}),draggable:Ke},Me,Be(\"above\"),{children:[t(\"div\",{className:\"jer-clickzone\",style:{width:W/2+1+\"em\",zIndex:10+2*Se.level},onClick:ce.includes(\"left\")?pt:void 0}),!He&&We,t(Ge,{position:\"above\",nodeData:Se}),lt?e(\"div\",{className:\"jer-collection-header-row\",style:{position:\"relative\"},onClick:ce.includes(\"header\")?pt:void 0,children:[e(\"div\",{className:\"jer-collection-name\",children:[t(\"div\",{className:\"jer-collapse-icon jer-accordion-icon\"+(De?\" jer-rotate-90\":\"\"),style:{zIndex:11+2*Se.level,transition:Oe},onClick:pt,children:t(ie,{name:\"chevron\",rotate:De,nodeData:Se})}),bt&&t(ge,Object.assign({},kt)),!He&&t(\"span\",{className:\"jer-brackets jer-bracket-open\",style:o(\"bracket\",Se),children:dt.open})]}),!He&&yt&&t(\"div\",{className:\"jer-collection-item-count\"+(yt?\" jer-visible\":\" jer-hidden\"),style:Object.assign(Object.assign({},o(\"itemCount\",Se)),{transition:Oe}),children:1===xe?Z(\"ITEM_SINGLE\",Object.assign(Object.assign({},Se),{size:1}),1):Z(\"ITEMS_MULTIPLE\",Se,xe)}),t(\"div\",{className:\"jer-brackets\"+(wt?\" jer-visible\":\" jer-hidden\"),style:Object.assign(Object.assign({},o(\"bracket\",Se)),{transition:Oe}),children:dt.close}),Ot]}):rt?t(n,{}):e(\"div\",{className:\"jer-collection-header-row\",style:{position:\"relative\"},children:[t(ge,Object.assign({},kt)),Ot]}),e(\"div\",{className:\"jer-collection-inner\",style:Object.assign(Object.assign({overflowY:wt||Ee?\"clip\":\"visible\",maxHeight:st?void 0:we},o(\"collectionInner\",Se)),{transition:Oe}),ref:je,children:[Ct,t(\"div\",{className:He?\"jer-collection-error-row\":\"jer-collection-error-row-edit\",children:Ie&&t(\"span\",{className:\"jer-error-slug\",style:o(\"error\",Se),children:Ie})}),!He&<&&t(\"div\",{className:\"jer-brackets jer-bracket-outside\",style:Object.assign(Object.assign({},o(\"bracket\",Se)),{marginLeft:(W<3?-1:W<6?-.5:0)+\"em\"}),children:dt.close})]}),t(Ge,{position:\"below\",nodeData:Se})]}));return tt?t(tt,Object.assign({customNodeProps:nt},Dt,{children:St})):St},je={ITEM_SINGLE:\"{{count}} item\",ITEMS_MULTIPLE:\"{{count}} items\",KEY_NEW:\"Enter new key\",KEY_SELECT:\"Select key\",NO_KEY_OPTIONS:\"No key options\",ERROR_KEY_EXISTS:\"Key already exists\",ERROR_INVALID_JSON:\"Invalid JSON\",ERROR_UPDATE:\"Update unsuccessful\",ERROR_DELETE:\"Delete unsuccessful\",ERROR_ADD:\"Adding node unsuccessful\",DEFAULT_STRING:\"New data!\",DEFAULT_NEW_KEY:\"key\",SHOW_LESS:\"(Show less)\",EMPTY_STRING:\"<empty string>\",TOOLTIP_COPY:\"Copy to clipboard\",TOOLTIP_EDIT:\"Edit\",TOOLTIP_DELETE:\"Delete\",TOOLTIP_ADD:\"Add\"},Ee=(e,t)=>(n,r,o)=>((e,t,n,r,o)=>{if(t[r]){const e=t[r](n);if(null!==e)return e}const i=r in e?e[r]:je[r];return void 0===o?i:null==i?void 0:i.replace(\"{{count}}\",String(o))})(e,t,r,n,o);var we=[],De=[];!function(e,t){if(e&&\"undefined\"!=typeof document){var n,r=!0===t.prepend?\"prepend\":\"append\",o=!0===t.singleTag,i=\"string\"==typeof t.container?document.querySelector(t.container):document.getElementsByTagName(\"head\")[0];if(o){var a=we.indexOf(i);-1===a&&(a=we.push(i)-1,De[a]={}),n=De[a]&&De[a][r]?De[a][r]:De[a][r]=l()}else n=l();65279===e.charCodeAt(0)&&(e=e.substring(1)),n.styleSheet?n.styleSheet.cssText+=e:n.appendChild(document.createTextNode(e))}function l(){var e=document.createElement(\"style\");if(e.setAttribute(\"type\",\"text/css\"),t.attributes)for(var n=Object.keys(t.attributes),o=0;o<n.length;o++)e.setAttribute(n[o],t.attributes[n[o]]);var a=\"prepend\"===r?\"afterbegin\":\"beforeend\";return i.insertAdjacentElement(a,e),e}}(':root{--jer-select-border:#b6b6b6;--jer-select-focus:#777;--jer-select-arrow:#777;--jer-form-border:1px solid #ededf0;--jer-form-border-focus:1px solid #e2e2e2;--jer-highlight-color:#b3d8ff}.jer-visible{opacity:1}.jer-hidden{opacity:0}.jer-select select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;color:#000;cursor:inherit;font-family:inherit;font-size:.8em;line-height:inherit;margin:0;outline:none;padding:0 1em 0 0;z-index:1}select::-ms-expand{display:none}.jer-select{align-items:center;background-color:#fff;background-image:linear-gradient(0deg,#f9f9f9,#fff 33%);border:1px solid var(--jer-select-border);border-radius:.25em;cursor:pointer;display:grid;grid-template-areas:\"select\";line-height:1.1;max-width:15ch;min-width:12ch;padding:.25em .5em;position:relative}.jer-select select,.jer-select:after{grid-area:select}.jer-select:not(.jer-select--multiple):after{background-color:var(--jer-select-arrow);clip-path:polygon(100% 0,0 0,50% 100%);content:\"\";height:.5em;justify-self:end;width:.8em}select:focus+.focus{border:1px solid var(--jer-select-focus);border-radius:inherit;bottom:-1px;left:-1px;position:absolute;right:-1px;top:-1px}.jer-select-inner{text-overflow:ellipsis;width:100%}.jer-editor-container{border-radius:.5em;font-size:16px;line-height:1;padding:1em 1em 1em 2em;position:relative;text-align:left}.jer-editor-container textarea{border:var(--jer-form-border);border-radius:.3em;color:var(--jer-input-color);outline:none}.jer-editor-container textarea:focus{border:var(--jer-form-border-focus)}.jer-editor-container input{border:var(--jer-form-border);border-radius:.3em;font-family:inherit;outline:none}.jer-editor-container input:focus{border:var(--jer-form-border-focus)}.jer-editor-container ::selection{background-color:var(--jer-highlight-color)}.jer-collection-header-row,.jer-value-main-row{align-items:center;display:flex;gap:.3em;min-height:1.7em}.jer-collection-header-row{display:flex;flex-wrap:wrap}.jer-collapse-icon{left:-1.2em;position:absolute;top:.35em}.jer-collection-inner{position:relative}.jer-collection-text-edit{align-items:flex-start;display:flex;flex-direction:column;gap:.3em;line-height:1.1em}.jer-collection-text-area{font-family:inherit;font-size:.85em;max-height:40em;overflow:hidden;padding:.2em .5em 0;resize:both}.jer-collection-input-button-row{display:flex;font-size:150%;justify-content:flex-end;margin-top:.4em;width:100%}.jer-collection-error-row{bottom:.5em;position:absolute}.jer-error-slug{margin-left:1em}.jer-value-component{position:relative}.jer-value-main-row{display:flex;gap:0}.jer-value-and-buttons{align-items:center;display:flex;justify-content:flex-start;padding-left:.5em}.jer-value-error-row{position:absolute}.jer-value-string{line-height:1.3em;overflow-wrap:anywhere;white-space:pre-wrap;word-break:break-word}.jer-string-expansion{cursor:pointer;filter:saturate(50%);opacity:.6}.jer-show-less{font-size:80%}.jer-hyperlink{text-decoration:underline}.jer-input-text{font-family:inherit;font-size:.9em;height:1.4em;line-height:1.2em;margin:0;min-width:6em;overflow:hidden;padding:.25em .5em .2em;resize:none}.jer-input-boolean{margin-left:.3em;margin-right:.3em;transform:scale(1.5)}.jer-key-text{line-height:1.1em;white-space:pre-wrap;word-break:break-word}.jer-key-edit{font-size:inherit;font-size:.9em;padding:0 .3em}.jer-value-invalid{font-style:italic;opacity:.5}.jer-input-number{font-size:90%;min-width:3em}.jer-confirm-buttons,.jer-edit-buttons{align-items:center;cursor:pointer;display:flex;height:1em}.jer-input-buttons{gap:.4em}.jer-edit-buttons{gap:.4em;margin-left:.5em;opacity:0}.jer-confirm-buttons{gap:.2em;margin-left:.4em}.jer-edit-buttons:hover{opacity:1;position:relative}.jer-collection-header-row:hover>.jer-edit-buttons,.jer-value-and-buttons:hover>.jer-edit-buttons,.jer-value-main-row:hover>.jer-edit-buttons{opacity:1}.jer-copy-pulse{position:relative;transition:.3s}.jer-copy-pulse:hover{opacity:.85;transform:scale(1.2);transition:.3s}.jer-copy-pulse:after{border-radius:50%;box-shadow:0 0 15px 5px var(--jer-icon-copy-color);content:\"\";display:block;height:100%;left:0;opacity:0;position:absolute;top:0;transition:all .5s;width:100%}.jer-copy-pulse:active:after{border-radius:4em;box-shadow:0 0 0 0 var(--jer-icon-copy-color);left:0;opacity:1;position:absolute;top:0;transition:0s}.jer-copy-pulse:active{top:.07em}.jer-rotate-90{transform:rotate(-90deg)}.jer-icon:hover{opacity:.85;transform:scale(1.2);transition:.3s}.jer-empty-string{font-size:90%;font-style:italic}.jer-drag-n-drop-padding{border:1px dashed #e0e0e0;border-radius:.3em;height:.5em}.jer-clickzone{height:calc(100% - .8em);left:-1em;position:absolute;top:1.2em}',{});const Ce=({data:e,setData:n,rootName:r=\"root\",onUpdate:o=()=>{},onEdit:d=o,onDelete:u=o,onAdd:p=o,onChange:m,onError:y,onEditEvent:f,showErrorMessages:b=!0,enableClipboard:v=!0,indent:E=2,collapse:D=!1,collapseAnimationTime:O=300,showCollectionCount:k=!0,restrictEdit:S=!1,restrictDelete:N=!1,restrictAdd:x=!1,restrictTypeSelection:A=!1,restrictDrag:P=!0,viewOnly:R,searchFilter:I,searchText:V,searchDebounceTime:_=350,keySort:F=!1,showArrayIndices:L=!0,arrayIndexFromOne:z=!1,showStringQuotes:B=!0,showIconTooltips:W=!1,defaultValue:G=null,newKeyOptions:Y,minWidth:H=250,maxWidth:U=\"min(600px, 90vw)\",rootFontSize:$,stringTruncate:Z=250,translations:X={},className:J,id:Q,customText:q={},customNodeDefinitions:ee=[],customButtons:te=[],jsonParse:ne=JSON.parse,jsonStringify:re=(e,t)=>JSON.stringify(e,t,2),TextEditor:oe,errorMessageTimeout:ie=2500,keyboardControls:ae={},externalTriggers:le,insertAtTop:se=!1,onCollapse:ce,collapseClickZones:de=[\"header\",\"left\"]})=>{const{getStyles:ue}=K(),{setCurrentlyEditingElement:pe}=M(),ge=c((()=>Se(D)),[D]),he=c((()=>Ee(X,q)),[X,q]),[ye,fe]=i(V),[je,we]=(({setData:e,data:t})=>{const[n,r]=i(e?void 0:t),o=s((t=>{e?e(t):r(t)}),[e]);return l((()=>{e||r(t)}),[t]),[e?t:n,o]})({setData:n,data:e}),De=a(null);l((()=>{pe(null);const e=setTimeout((()=>fe(V)),_);return()=>clearTimeout(e)}),[V,_]);const Ce={key:r,path:[],level:0,index:0,value:je,size:\"object\"==typeof je&&null!==je?Object.keys(je).length:1,parentData:null,fullData:je},Oe=(e,t)=>g(void 0,void 0,void 0,(function*(){const n=yield e(t);if(!0===n||void 0===n)return void we(t.newData);const r=Te(n)?n:[\"error\",n],[o,i]=r;if(\"error\"===o)return we(t.currentData),!1===i?he(\"ERROR_UPDATE\",Ce):String(i);we(i)})),Ae=c((()=>Se(S,R)),[S,R]),Pe=c((()=>Se(N,R)),[N,R]),Re=c((()=>Se(x,R)),[x,R]),Ke=c((()=>Se(P,R)),[P,R]),Ie=c((()=>Ne(I)),[I]),Ve=c((()=>(e=>{const t=Object.assign({},C);for(const n of Object.keys(C)){const r=n;if(e[r]){const o=e[r],i=[\"clipboardModifier\",\"collapseModifier\"].includes(n)?Array.isArray(o)?o:[o]:\"string\"==typeof o?{key:o}:o;t[r]=i,[\"stringConfirm\",\"numberConfirm\",\"booleanConfirm\"].forEach((n=>{!e[n]&&e.confirm&&(t[n]=t.confirm)}))}}return t})(ae)),[ae]),_e=s(((e,t)=>((e,t,n)=>{const r=Object.entries(t);for(const[t,o]of r)if(w(n,e[t],t)){n.preventDefault(),o();break}})(Ve,t,e)),[Ve]),Fe=c((()=>{const e=xe(ee,\"stringifyReplacer\");return t=>re(t,e)}),[ee,re]),Le=c((()=>{const e=xe(ee,\"parseReviver\");return t=>{const n=ne(t,e);return T(n)}}),[ee,ne]),ze=a(null);((e,t)=>{const{setCurrentlyEditingElement:n,currentlyEditingElement:r,setCollapseState:o}=M();l((()=>{if(!e)return;const{collapse:i,edit:a}=e;i&&o(i);const l=!(null==a?void 0:a.path)||j(a.path)===r;switch(null==a?void 0:a.action){case\"accept\":l&&(t.current&&t.current.click(),n(null));break;case\"cancel\":l&&n(null);break;default:(null==a?void 0:a.path)&&n(a.path)}}),[e])})(le,ze);const Me=s(((e,t)=>{!1!==F&&(\"function\"!=typeof F?e.sort(((e,n)=>{const r=t(e)[0],o=t(n)[0];return r<o?-1:r>o?1:0})):e.sort(((e,n)=>F(t(e),t(n)))))}),[F]),Be=be(ee,Ce),We={mainContainerRef:De,name:r,nodeData:Ce,onEdit:(e,t)=>g(void 0,void 0,void 0,(function*(){const{currentData:n,newData:r,currentValue:o,newValue:i}=ke(je,t,e,\"update\");if(o!==i)return yield Oe(d,{currentData:n,newData:r,currentValue:o,newValue:i,name:t.slice(-1)[0],path:t})})),onDelete:(e,t)=>g(void 0,void 0,void 0,(function*(){const{currentData:n,newData:r,currentValue:o,newValue:i}=ke(je,t,e,\"delete\");return yield Oe(u,{currentData:n,newData:r,currentValue:o,newValue:i,name:t.slice(-1)[0],path:t})})),onAdd:(e,t,n)=>g(void 0,void 0,void 0,(function*(){const{currentData:r,newData:o,currentValue:i,newValue:a}=ke(je,t,e,\"add\",n);return yield Oe(p,{currentData:r,newData:o,currentValue:i,newValue:a,name:t.slice(-1)[0],path:t})})),onChange:m,onError:y,onEditEvent:f,showErrorMessages:b,onMove:(e,t,n)=>g(void 0,void 0,void 0,(function*(){if(null===e)return;const{currentData:r,newData:o,currentValue:i}=ke(je,e,\"\",\"delete\"),a=e.slice(-1)[0],l=t.slice(0,-1),s=t.slice(-1)[0];let c=\"number\"==typeof s?\"above\"===n?s:s+1:\"number\"==typeof a?`arr_${a}`:a;e.slice(0,-1).join(\".\")===t.slice(0,-1).join(\".\")&&\"number\"==typeof a&&\"number\"==typeof c&&a<c&&(c-=1);const u=\"number\"==typeof c?{insert:!0}:\"above\"===n?{insertBefore:s}:{insertAfter:s},{newData:p,newValue:g}=ke(o,[...l,c],i,\"add\",u);return yield Oe(d,{currentData:r,newData:p,currentValue:i,newValue:g,name:t.slice(-1)[0],path:t})})),showCollectionCount:k,collapseFilter:ge,collapseAnimationTime:O,restrictEditFilter:Ae,restrictDeleteFilter:Pe,restrictAddFilter:Re,restrictTypeSelection:A,restrictDragFilter:Ke,canDragOnto:!1,searchFilter:Ie,searchText:ye,enableClipboard:v,keySort:F,sort:Me,showArrayIndices:L,arrayIndexFromOne:z,showStringQuotes:B,showIconTooltips:W,indent:E,defaultValue:G,newKeyOptions:Y,stringTruncate:Z,translate:he,customNodeDefinitions:ee,customNodeData:Be,customButtons:te,parentData:null,jsonParse:Le,jsonStringify:Fe,TextEditor:oe,errorMessageTimeout:ie,handleKeyboard:_e,keyboardControls:Ve,insertAtTop:{object:!0===se||\"object\"===se,array:!0===se||\"array\"===se},onCollapse:ce,editConfirmRef:ze,collapseClickZones:de},Ge=Object.assign(Object.assign({},ue(\"container\",Ce)),{minWidth:H,maxWidth:U});return Ge.fontSize=null!=$?$:Ge.fontSize,t(\"div\",{id:Q,ref:De,className:`jer-editor-container ${null!=J?J:\"\"}`,style:Ge,children:h(je)&&!Be.renderCollectionAsValue?t(ve,Object.assign({data:je},We)):t(me,Object.assign({data:je,showLabel:!0},We))})},Oe=e=>{var n;const[r,o]=i();return l((()=>{const e=document.documentElement;o(e)}),[]),r?t(R,{theme:null!==(n=e.theme)&&void 0!==n?n:A,icons:e.icons,docRoot:r,children:t(z,{onEditEvent:e.onEditEvent,onCollapse:e.onCollapse,children:t(Ce,Object.assign({},e))})}):null},ke=(e,t,n,r,o={})=>{if(0===t.length)return{currentData:e,newData:n,currentValue:e,newValue:n};const i=Object.assign({remove:\"delete\"===r},o),a=\"add\"!==r?u(e,t):void 0;return{currentData:e,newData:d(e,t,n,i),currentValue:a,newValue:\"delete\"!==r?n:void 0}},Se=(e,t)=>t?()=>!0:\"boolean\"==typeof e?()=>e:\"number\"==typeof e?({level:t})=>t>=e:e,Ne=e=>{if(void 0!==e)return\"value\"===e?b:\"key\"===e?v:\"all\"===e?(e,t)=>b(e,t)||v(e,t):e},Te=e=>Array.isArray(e)&&2===e.length&&[\"error\",\"value\"].includes(e[0]),xe=(e,t)=>{const n=\"stringifyReplacer\"===t?[e=>void 0===e?x:e]:[];if(n.push(...e.map((e=>e[t])).filter((e=>!!e))),0!==n.length)return(e,t)=>{let r=t;for(const e of n)r=e(r);return r}},Ae=e=>{var n;const{value:r,setIsEditing:o,getStyles:i,nodeData:a}=e,l=i(\"string\",a);return t(\"div\",{onDoubleClick:()=>o(!0),onClick:e=>{(e.getModifierState(\"Control\")||e.getModifierState(\"Meta\"))&&o(!0)},className:\"jer-value-string jer-hyperlink\",style:l,children:t(\"a\",{href:r,target:\"_blank\",rel:\"noreferrer\",style:{color:null!==(n=l.color)&&void 0!==n?n:void 0},children:t(G,Object.assign({},e,{pathString:j(a.path),styles:l,value:a.value}))})})},Pe={condition:({value:e})=>\"string\"==typeof e&&/^https?:\\/\\/.+\\..+$/.test(e),element:Ae,showOnView:!0,showOnEdit:!1},Re={displayName:\"Github Dark\",styles:{container:{backgroundColor:\"#0d1117\",color:\"white\"},dropZone:\"rgba(165, 214, 255, 0.17)\",property:\"#E6EDF3\",bracket:\"#56d364\",itemCount:\"#8B949E\",string:\"#A5D6FF\",number:\"#D2A8FF\",boolean:{color:\"#FF7B72\",fontSize:\"90%\",fontWeight:\"bold\"},null:\"green\",iconCollection:\"#D2A8FF\",iconEdit:\"#D2A8FF\",iconDelete:\"rgb(203, 75, 22)\",iconAdd:\"rgb(203, 75, 22)\",iconCopy:\"#A5D6FF\",iconOk:\"#56d364\",iconCancel:\"rgb(203, 75, 22)\"}},Ke={displayName:\"Github Light\",styles:{container:\"white\",property:\"#1F2328\",bracket:\"#00802e\",itemCount:\"#8B949E\",string:\"#0A3069\",number:\"#953800\",boolean:{color:\"#CF222E\",fontSize:\"90%\",fontWeight:\"bold\"},null:\"#FF7B72\",iconCollection:\"#8250DF\",iconEdit:\"#8250DF\",iconDelete:\"rgb(203, 75, 22)\",iconAdd:\"#8250DF\",iconCopy:\"#57606A\"}},Ie={displayName:\"Black & White\",fragments:{lightText:{color:\"white\"},midGrey:\"#5c5c5c\"},styles:{container:[\"lightText\",{backgroundColor:\"black\"}],dropZone:\"#e0e0e029\",property:\"lightText\",bracket:\"midGrey\",itemCount:\"#4a4a4a\",string:\"#a8a8a8\",number:\"#666666\",boolean:{color:\"#848484\",fontStyle:\"italic\"},null:\"#333333\",iconCollection:\"midGrey\",iconEdit:\"midGrey\",iconDelete:\"midGrey\",iconAdd:\"midGrey\",iconCopy:\"midGrey\",iconOk:\"midGrey\",iconCancel:\"midGrey\"}},Ve={fragments:{midGrey:\"#a3a3a3\"},displayName:\"White & Black\",styles:{container:\"white\",property:\"black\",bracket:\"midGrey\",itemCount:\"#b5b5b5\",string:\"#575757\",number:\"#999999\",boolean:{color:\"#7b7b7b\",fontStyle:\"italic\"},null:\"#cccccc\",iconCollection:\"midGrey\",iconEdit:\"midGrey\",iconDelete:\"midGrey\",iconAdd:\"midGrey\",iconCopy:\"midGrey\",iconOk:\"midGrey\",iconCancel:\"midGrey\"}},_e={displayName:\"Candy Wrapper\",fragments:{minty:{backgroundColor:\"#F1FAEE\"},pale:{color:\"#A8DADC\"},mid:{color:\"#457B9D\"},dark:{color:\"#1D3557\"},pop:{color:\"#E63946\"},darkBlue:{color:\"#2B2D42\"}},styles:{container:\"minty\",property:\"pop\",dropZone:\"#eb121217\",bracket:\"dark\",itemCount:\"pale\",string:\"mid\",number:[\"darkBlue\",{fontSize:\"85%\"}],boolean:[\"mid\",{fontStyle:\"italic\",fontWeight:\"bold\",fontSize:\"80%\"}],null:[\"#cccccc\",{fontWeight:\"bold\"}],input:{border:\"1px solid rgb(115, 194, 198)\"},iconCollection:\"#1D3557\",iconEdit:\"#457B9D\",iconDelete:\"#E63946\",iconAdd:\"#2B2D42\",iconCopy:\"#1D3557\",iconCancel:\"#E63946\"}},Fe={displayName:\"Psychedelic\",fragments:{pale:{color:\"#A8DADC\"},fluroYellow:\"rgb(242, 228, 21)\",fluroGreen:\"rgb(68, 255, 62)\",hotPink:\"#f7379a\"},styles:{container:{backgroundColor:\"unset\",background:\"linear-gradient(90deg, hsla(333, 100%, 53%, 1) 0%, hsla(33, 94%, 57%, 1) 100%)\",color:\"black\"},dropZone:\"fluroYellow\",property:\"black\",bracket:\"fluroYellow\",itemCount:[\"pale\",{opacity:.7}],string:\"white\",number:[\"#33d9ff\",{fontSize:\"90%\",fontWeight:\"bold\"}],boolean:[\"fluroGreen\",{fontWeight:\"bold\",fontSize:\"80%\"}],null:[\"black\",{fontWeight:\"bold\",opacity:.3,backgroundColor:\"rgb(255, 255, 255, 0.5)\",padding:\"0 0.4em\",borderRadius:\"0.4em\"}],iconCollection:\"fluroYellow\",iconEdit:[\"black\"],iconDelete:[\"white\",{opacity:.5}],iconAdd:[\"white\",{opacity:.5}],iconCopy:\"rgb(32, 84, 242)\",iconOk:\"fluroGreen\",iconCancel:\"hotPink\"}};export{Q as IconAdd,re as IconCancel,oe as IconChevron,te as IconCopy,ee as IconDelete,q as IconEdit,ne as IconOk,Oe as JsonEditor,Ae as LinkCustomComponent,Pe as LinkCustomNodeDefinition,G as StringDisplay,Y as StringEdit,_e as candyWrapperTheme,A as defaultTheme,Re as githubDarkTheme,Ke as githubLightTheme,h as isCollection,b as matchNode,v as matchNodeKey,Ie as monoDarkTheme,Ve as monoLightTheme,Fe as psychedelicTheme,ce as standardDataTypes,j as toPathString,Z as useKeyboardListener};\n","import { JsonEditor } from 'json-edit-react';\nimport { Localication, TargetedScreenSize } from '../..';\nimport { useRenderStore } from '../../store';\n\ntype PreviewTabProps = {};\n\nexport function PreviewTab({}: PreviewTabProps) {\n const { appConfig, setAppConfig } = useRenderStore((s) => ({\n appConfig: s.appConfig,\n setAppConfig: s.setAppConfig,\n }));\n return (\n <div\n role=\"tabpanel\"\n className=\"editor-panel editor-panel--active\"\n aria-hidden={false}\n >\n <div style={{ padding: 12 }}>\n <div\n style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 12 }}\n >\n <div>Default Language</div>\n <select\n value={appConfig.defaultLanguage ?? 'en'}\n onChange={(e) => {\n setAppConfig({\n ...appConfig,\n defaultLanguage: e.target.value,\n });\n }}\n >\n {Object.keys(appConfig.localication ?? {}).map((language) => (\n <option key={language} value={language}>\n {language}\n </option>\n ))}\n </select>\n </div>\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(2, minmax(0, 1fr))',\n gap: 12,\n marginTop: 8,\n }}\n >\n <div>Light Background Color</div>\n <input\n type=\"color\"\n value={appConfig.screenStyle?.light.backgroundColor ?? '#FDFDFD'}\n onChange={(e) => {\n const next = {\n ...appConfig.screenStyle,\n light: {\n ...(appConfig.screenStyle?.light ?? {\n color: '#161827',\n }),\n backgroundColor: e.target.value,\n },\n };\n\n setAppConfig({\n ...appConfig,\n screenStyle: next,\n });\n }}\n className=\"input input--color\"\n />\n <div>Light Color</div>\n <input\n type=\"color\"\n value={appConfig.screenStyle?.light.color ?? '#161827'}\n onChange={(e) => {\n const next = {\n ...appConfig.screenStyle,\n light: {\n ...(appConfig.screenStyle?.light ?? {\n backgroundColor: '#FDFDFD',\n }),\n color: e.target.value,\n },\n };\n\n setAppConfig({\n ...appConfig,\n screenStyle: next,\n });\n }}\n className=\"input input--color\"\n />\n <div>Dark Background Color</div>\n <input\n type=\"color\"\n value={appConfig.screenStyle?.dark.backgroundColor ?? '#12131A'}\n onChange={(e) => {\n const next = {\n ...appConfig.screenStyle,\n dark: {\n ...(appConfig.screenStyle?.dark ?? {\n color: '#E9EBF9',\n }),\n backgroundColor: e.target.value,\n },\n };\n\n setAppConfig({\n ...appConfig,\n screenStyle: next,\n });\n }}\n className=\"input input--color\"\n />\n <div>Dark Color</div>\n <input\n type=\"color\"\n value={appConfig.screenStyle?.dark.color ?? '#E9EBF9'}\n onChange={(e) => {\n const next = {\n ...appConfig.screenStyle,\n dark: {\n ...(appConfig.screenStyle?.dark ?? {\n backgroundColor: '#12131A',\n }),\n color: e.target.value,\n },\n };\n setAppConfig({\n ...appConfig,\n screenStyle: next,\n });\n }}\n className=\"input input--color\"\n />\n </div>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n marginTop: 8,\n }}\n >\n <div>Dark Mode</div>\n <input\n type=\"checkbox\"\n checked={appConfig.theme === 'dark'}\n onChange={(e) => {\n const nextTheme = e.target.checked ? 'dark' : 'light';\n\n setAppConfig({\n ...appConfig,\n theme: nextTheme,\n });\n }}\n />\n </div>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n marginTop: 8,\n }}\n >\n <div>Is RTL</div>\n <input\n type=\"checkbox\"\n checked={appConfig.isRtl ?? false}\n onChange={(e) => {\n setAppConfig({\n ...appConfig,\n isRtl: e.target.checked,\n });\n }}\n />\n </div>\n <div style={{ marginTop: 8 }}>\n <JsonEditor\n rootName=\"localication\"\n data={appConfig.localication ?? {}}\n setData={(data) => {\n setAppConfig({\n ...appConfig,\n localication: data as Localication,\n });\n }}\n />\n </div>\n </div>\n </div>\n );\n}\n","import { JsonEditor } from 'json-edit-react';\nimport { Node } from '../..';\n\ntype DebugTabProps = {\n data: Node;\n setData: (data: Node) => void;\n};\n\nexport function DebugTab({ data, setData }: DebugTabProps) {\n return (\n <div\n role=\"tabpanel\"\n className=\"editor-panel editor-panel--active editor-panels-debug\"\n aria-hidden={false}\n >\n <div style={{ flex: '1 1 auto', minHeight: 0, overflow: 'auto' }}>\n <JsonEditor data={data as any} setData={setData as any} />\n </div>\n </div>\n );\n}\n","import { useEffect, useState } from 'react';\nimport { Node, RenderPage, Project } from '..';\nimport { EditorHeader } from '../components/EditorHeader';\nimport { AttributesEditorPanel } from '../components/AttributesEditorPanel';\nimport { BuilderTab } from './tabs/BuilderTab';\nimport { PreviewTab } from './tabs/PreviewTab';\nimport { DebugTab } from './tabs/DebugTab';\nimport { AppConfig, defaultAppConfig } from '../types/PreviewConfig';\nimport { useRenderStore } from '../store';\n\ntype Tab = 'builder' | 'preview' | 'debug';\n\ntype ProjectPageProps = {\n project: Project;\n onSaveProject: (project: Project) => void;\n appConfig?: AppConfig;\n};\n\nexport function ProjectPage({\n project,\n appConfig = defaultAppConfig,\n onSaveProject,\n}: ProjectPageProps) {\n const [current, setCurrent] = useState<Node>(project.data);\n const [editorData, setEditorData] = useState<Node>(project.data);\n const [tab, setTab] = useState<Tab>('builder');\n\n useEffect(() => {\n useRenderStore.getState().setAppConfig(appConfig);\n }, [appConfig]);\n\n return (\n <div className=\"container-full\">\n <EditorHeader\n onSaveProject={() => {\n onSaveProject({\n ...project,\n data: editorData,\n });\n }}\n current={current}\n editorData={editorData}\n setEditorData={setEditorData}\n />\n <div className=\"editor-container\">\n <div className=\"split-left\">\n <div>\n <div\n className=\"editor-tabs\"\n role=\"tablist\"\n aria-label=\"Editor tabs\"\n >\n <button\n className={`editor-tab ${tab === 'builder' ? 'editor-tab--active' : ''}`}\n role=\"tab\"\n aria-selected={tab === 'builder'}\n onClick={() => setTab('builder')}\n >\n Builder\n </button>\n <button\n className={`editor-tab ${tab === 'preview' ? 'editor-tab--active' : ''}`}\n role=\"tab\"\n aria-selected={tab === 'preview'}\n onClick={() => setTab('preview')}\n >\n Preview Config\n </button>\n <button\n className={`editor-tab ${tab === 'debug' ? 'editor-tab--active' : ''}`}\n role=\"tab\"\n aria-selected={tab === 'debug'}\n onClick={() => setTab('debug')}\n >\n Debug\n </button>\n </div>\n\n {tab === 'builder' && (\n <BuilderTab\n data={editorData}\n setData={setEditorData}\n current={current}\n setCurrent={setCurrent}\n />\n )}\n\n {tab === 'preview' && <PreviewTab />}\n\n {tab === 'debug' && (\n <DebugTab data={editorData} setData={setEditorData} />\n )}\n </div>\n </div>\n <div className=\"split-right\">\n <div className=\"split-right-background\" />\n <RenderPage data={editorData} />\n </div>\n <div className=\"split-third\">\n <AttributesEditorPanel\n current={current}\n attributes={editorData}\n onChange={(data) => {\n setEditorData(data);\n }}\n setCurrent={setCurrent}\n />\n </div>\n </div>\n </div>\n );\n}\n","import { useRenderStore } from '../store';\nimport { Node } from '../types/Node';\n\nexport function copyNode(node: Node) {\n const { setCopiedNode } = useRenderStore.getState();\n setCopiedNode(node);\n}\n"],"names":["isNodeNullOrUndefined","node","isNodeString","isNodeArray","Array","isEmptyObject","Object","keys","length","analyseNode","valid","message","nodeArray","value","recordData","children","other","type","useNode","defaults","getDefaultsForType","mergedAttributes","attributes","Button","String","Button$1","React","memo","isCarouselItem","isArray","Carousel","_jsx","className","map","item","index","RenderNode","Carousel$1","isObject","subject","prototype","toString","call","isRecord","canUseDOM","window","document","createElement","areOptionsEqual","optionsA","optionsB","optionsAKeys","optionsBKeys","JSON","stringify","breakpoints","every","key","valueA","valueB","sortAndMapPluginToOptions","plugins","concat","sort","a","b","name","plugin","options","arePluginsEqual","pluginsA","pluginsB","optionA","isNumber","isString","isBoolean","mathAbs","n","Math","abs","mathSign","sign","deltaAbs","factorAbs","diff","roundToTwoDecimals","num","round","arrayKeys","array","objectKeys","Number","arrayLast","arrayLastIndex","max","arrayIsLastIndex","arrayFromNumber","startAt","from","_","i","object","objectsMergeDeep","objectA","objectB","reduce","mergedObjects","currentObject","forEach","areObjects","isMouseEvent","evt","ownerWindow","MouseEvent","Alignment","align","viewSize","predefined","start","center","end","self","measure","EventStore","listeners","add","handler","passive","removeListener","addEventListener","removeEventListener","legacyMediaQueryList","addListener","push","clear","filter","remove","Animations","ownerDocument","update","render","documentVisibleHandler","fixedTimeStep","lastTimeStamp","accumulatedTime","animationId","animate","timeStamp","timeElapsed","requestAnimationFrame","stop","cancelAnimationFrame","init","hidden","destroy","Axis","axis","contentDirection","isRightToLeft","isVertical","scroll","cross","startEdge","endEdge","measureSize","nodeRect","height","width","direction","Limit","min","reachedMin","reachedMax","reachedAny","constrain","removeOffset","ceil","Counter","loop","loopEnd","counter","withinLimit","get","clone","set","DragHandler","rootNode","target","dragTracker","location","animation","scrollTo","scrollBody","scrollTarget","eventHandler","percentOfView","dragFree","dragThreshold","skipSnaps","baseFriction","watchDrag","crossAxis","focusNodes","nonPassiveEvent","initEvents","dragEvents","goToNextThreshold","snapForceBoost","mouse","touch","freeForceBoost","baseSpeed","isMoving","startScroll","startCross","pointerIsDown","preventScroll","preventClick","isMouse","move","touches","up","lastScroll","readPoint","lastCross","diffScroll","diffCross","cancelable","pointerMove","useFriction","useDuration","preventDefault","targetChanged","byDistance","rawForce","pointerUp","force","next","baseForce","distance","byIndex","allowedForce","forceFactor","speed","friction","emit","click","stopPropagation","emblaApi","downIfAllowed","isMouseEvt","buttons","button","nodeName","includes","isFocusNode","pointerDown","addDragEvents","down","DragTracker","startEvent","lastEvent","readTime","evtAxis","coord","expired","diffDrag","diffTime","NodeRects","offsetTop","offsetLeft","offsetWidth","offsetHeight","top","right","bottom","left","PercentOfView","ResizeHandler","container","slides","watchResize","nodeRects","observeNodes","resizeObserver","containerSize","slideSizes","destroyed","readSize","ResizeObserver","entries","entry","isContainer","slideIndex","indexOf","lastSize","reInit","defaultCallback","observe","disconnect","ScrollBody","offsetLocation","previousLocation","baseDuration","scrollVelocity","scrollDirection","scrollDuration","scrollFriction","rawLocation","rawLocationPrevious","duration","velocity","seek","displacement","scrollDistance","settled","useBaseFriction","useBaseDuration","ScrollBounds","limit","pullBackThreshold","edgeOffsetTolerance","frictionLimit","disabled","shouldConstrain","edge","diffToEdge","diffToTarget","subtract","toggleActive","active","ScrollContain","contentSize","snapsAligned","containScroll","pixelTolerance","scrollBounds","snapsBounded","snapAligned","snap","isFirst","isLast","usePixelTolerance","scrollBound","parseFloat","toFixed","scrollContainLimit","startSnap","endSnap","lastIndexOf","findScrollContainLimit","bound","snapsContained","slice","measureContained","ScrollLimit","scrollSnaps","ScrollLooper","vectors","shouldLoop","loopDistance","v","ScrollProgress","ScrollSnaps","alignment","containerRect","slideRects","slidesToScroll","groupSlides","alignments","rects","snaps","rect","g","SlideRegistry","containSnaps","slideIndexes","slideRegistry","groupedSlideIndexes","doNotContain","group","groups","createSlideRegistry","ScrollTarget","targetVector","minDistance","distances","shortcut","targets","matchingTargets","t","targetSnapDistance","ascDiffsToSnaps","d1","d2","findTargetSnap","reachedBound","ScrollTo","indexCurrent","indexPrevious","distanceDiff","indexDiff","targetIndex","SlideFocus","root","eventStore","watchFocus","focusListenerOptions","capture","lastTabPressTime","registerTabPress","event","code","Date","getTime","slide","scrollLeft","findIndex","Vector1D","initialValue","normalizeInput","Translate","translate","containerStyle","style","previousTarget","transform","getAttribute","removeAttribute","to","newTarget","SlideLooper","slideSizesWithGaps","ascItems","descItems","reverse","loopPoints","gap","findLoopPoints","slidesInGap","startPoints","endPoints","removeSlideSizes","indexes","offset","isEndEdge","slideBounds","findSlideBounds","initial","altered","boundEdge","loopPoint","slideLocation","canLoop","otherIndexes","shiftLocation","SlidesHandler","watchSlides","mutationObserver","MutationObserver","mutations","mutation","childList","SlidesInView","threshold","intersectionEntryMap","intersectionObserver","inViewCache","notInViewCache","IntersectionObserver","parentElement","inView","list","parseInt","isIntersecting","createInViewList","SlideSizes","readEdgeGap","withEdgeGap","startGap","slideRect","measureStartGap","endGap","getComputedStyle","getPropertyValue","measureEndGap","SlidesToScroll","groupByNumber","groupSize","byNumber","rectB","rectA","edgeA","edgeB","gapA","chunkSize","currentSize","previousSize","bySize","Engine","scrollAxis","startIndex","inViewThreshold","dragHandler","engine","alpha","scrollLooper","slideLooper","shouldSettle","withinBounds","hasSettled","hasSettledAndIdle","interpolatedLocation","startLocation","scrollProgress","slidesInView","slideFocus","resizeHandler","scrollSnapList","slidesHandler","EventHandler","api","getListeners","e","off","cb","on","defaultOptions","OptionsHandler","mergeOptions","optionsAtMedia","matchedMediaOptions","media","matchMedia","matches","mediaOption","optionsMediaQueries","optionsList","acc","mediaQueries","PluginsHandler","optionsHandler","activePlugins","assign","EmblaCarousel","userOptions","userPlugins","defaultView","pluginsHandler","mediaHandlers","reActivate","pluginApis","optionsBase","globalOptions","pluginList","createEngine","activate","withOptions","withPlugins","userContainer","userSlides","customContainer","querySelector","customSlides","querySelectorAll","storeElements","query","offsetParent","selectedScrollSnap","deActivate","jump","canScrollNext","canScrollPrev","containerNode","internalEngine","previousScrollSnap","scrollNext","scrollPrev","slideNodes","slidesNotInView","setTimeout","useEmblaCarousel","storedOptions","useRef","storedPlugins","setEmblaApi","useState","viewport","setViewport","useCallback","current","useEffect","newEmblaApi","undefined","carouselContext","createContext","CarouselProvider","emblaRef","Provider","ref","CarouselProvider$1","CarouselButtons","useContext","buttonTypes","buttonType","_jsxs","onClick","skipNumber","CarouselButtons$1","CarouselDots","dotType","selectedIndex","setSelectedIndex","setScrollSnaps","CarouselDots$1","CarouselItem","CarouselItem$1","extractImageStyle","borderRadius","resizeMode","objectFit","Image","src","alt","Image$2","Onboard","Onboard$1","require$$0","objectIs","is","x","y","useLayoutEffect","useDebugValue","checkIfSnapshotChanged","inst","latestGetSnapshot","getSnapshot","nextValue","error","shim","subscribe","_useState","forceUpdate","useSyncExternalStoreShim_production","useSyncExternalStore","process","env","NODE_ENV","__REACT_DEVTOOLS_GLOBAL_HOOK__","registerInternalModuleStart","Error","didWarnOld18Alpha","didWarnUncachedGetSnapshot","startTransition","console","cachedValue","useSyncExternalStoreShim_development","registerInternalModuleStop","shimModule","exports","require$$1","useMemo","withSelector_production","useSyncExternalStoreWithSelector","getServerSnapshot","selector","isEqual","instRef","hasValue","memoizedSelector","nextSnapshot","hasMemo","memoizedSnapshot","currentSelection","memoizedSelection","nextSelection","maybeGetServerSnapshot","withSelector_development","withSelectorModule","createStoreImpl","createState","state","Set","setState","partial","replace","nextState","previousState","listener","getState","getInitialState","initialState","delete","createStore","useSyncExternalStoreExports","identity","arg","useStoreWithEqualityFn","equalityFn","createWithEqualityFnImpl","defaultEqualityFn","useBoundStoreWithEqualityFn","createWithEqualityFn","isIterable","obj","Symbol","iterator","hasIterableEntries","compareEntries","mapA","Map","mapB","size","has","compareIterables","iteratorA","iteratorB","nextA","nextB","done","shallow","getPrototypeOf","defaultAppConfig","theme","isRtl","screenStyle","light","backgroundColor","color","dark","localication","baseSize","getDevices","deviceList","devices","importance","getDefaultDevice","createJSONStorage","getStorage","storage","persistStorage","getItem","_a","parse","str2","str","Promise","then","setItem","newValue","removeItem","useRenderStore","copiedNode","setCopiedNode","renderCount","forceRender","device","setDevice","appConfig","setAppConfig","persist","partialize","localStorage","onboardContext","OnboardProvider","s","onboardChild","c","onboardButtons","paddingTop","insets","paddingRight","paddingBottom","paddingLeft","OnboardProvider$1","OnboardButton","labelRaw","labelKey","label","defaultLanguage","flex","textColor","button_text_color","button_background_color","events","alert","permission","eventTargetIndex","border","display","alignItems","justifyContent","cursor","OnboardButton$1","OnboardButtons","seperatorColorDefault","seperatorColor","ctx","condition","conditionVariable","buttons_direction","flexDirection","margin","child","idx","OnboardButtons$1","OnboardDot","OnboardDot$1","getBaseDimensions","currentState","shortDimension","longDimension","scale","verticalScale","vs","fs","parseSize","raw","trim","lower","toLowerCase","endsWith","isFinite","cut","numeric","extractTextStyle","fallbackColor","fontSize","parsed","fontWeight","textAlign","padding","paddingHorizontal","paddingVertical","marginHorizontal","marginLeft","marginRight","marginVertical","marginTop","marginBottom","escapeRegExp","buildSegments","text","patterns","rawMatches","p","re","RegExp","m","matchAll","matched","page","segments","matchCount","lenA","kept","lastEnd","OnboardFooter","textLocalizationKey","linkStyle","firstText","linkedWordFirstLocalizationKey","secondText","linkedWordSecondLocalizationKey","linkedWordFirstColor","linkedWordFirstPage","linkedWordSecondColor","linkedWordSecondPage","_Fragment","seg","OnboardFooter$1","factory","navigator","svgNS","locationHref","_useWebWorker","initialDefaultFrame","setWebWorker","flag","getWebWorker","setLocationHref","getLocationHref","createTag","extendPrototype","sources","destination","sourcePrototype","len","attr","hasOwnProperty","getDescriptor","prop","getOwnPropertyDescriptor","createProxyFunction","ProxyFunction","audioControllerFactory","AudioController","audioFactory","this","audios","_volume","_isMuted","addAudio","audio","pause","resume","setRate","rateValue","createAudio","assetPath","Howl","isPlaying","play","playing","rate","setVolume","setAudioFactory","_updateVolume","mute","unmute","getVolume","volume","createTypedArray","createRegularArray","arr","Uint8ClampedArray","Float32Array","Int16Array","createSizedArray","apply","_typeof$6","o","constructor","subframeEnabled","expressionsPlugin","expressionsInterfaces","idPrefix$1","isSafari","test","userAgent","bmPow","pow","bmSqrt","sqrt","bmFloor","floor","bmMax","bmMin","BMMath","propertyNames","random","val","absArr","defaultCurveSegments","degToRads","PI","roundCorner","styleDiv","element","position","transformOrigin","webkitTransformOrigin","backfaceVisibility","webkitBackfaceVisibility","transformStyle","webkitTransformStyle","mozTransformStyle","BMEnterFrameEvent","currentTime","totalTime","frameMultiplier","BMCompleteEvent","BMCompleteLoopEvent","totalLoops","currentLoop","BMSegmentStartEvent","firstFrame","totalFrames","BMDestroyEvent","BMRenderFrameErrorEvent","nativeError","BMConfigErrorEvent","createElementID","_count","HSVtoRGB","h","r","f","q","RGBtoHSV","d","addSaturationToRGB","hsv","addBrightnessToRGB","addHueToRGB","rgbToHex","hex","colorMap","setSubframeEnabled","getSubframeEnabled","setExpressionsPlugin","getExpressionsPlugin","setExpressionInterfaces","getExpressionInterfaces","setDefaultCurveSegments","getDefaultCurveSegments","setIdPrefix","createNS","createElementNS","_typeof$5","dataManager","workerFn","workerInstance","_counterId","processes","workerProxy","onmessage","postMessage","path","data","_workerSelf","setupWorker","fn","Worker","Blob","blob","url","URL","createObjectURL","createWorker","completeLayers","layers","comps","layerData","j","jLen","k","kLen","completed","hasMask","maskProps","masksProperties","pt","convertPathsToAbsoluteValues","ty","findCompLayers","refId","completeShapes","shapes","completeText","id","comp","findComp","__used","ks","it","checkVersion","minimum","animVersionString","animVersion","split","minimumVersion","checkText","updateTextLayer","textLayer","documentData","iterateLayers","animationData","assets","checkChars","chars","charData","ip","op","st","sr","sk","sa","checkPathProperties","pathData","checkColors","iterateShapes","checkShapes","completeClosingShapes","closed","cl","moduleOb","__complete","completeChars","dataFunctionManager","assetLoader","formatResponse","xhr","contentTypeHeader","getResponseHeader","responseType","response","responseText","load","fullPath","callback","errorCallback","XMLHttpRequest","err","onreadystatechange","readyState","status","open","join","send","completeData","payload","onComplete","onError","createProcess","loadAnimation","processId","origin","pathname","loadData","completeAnimation","anim","ImagePreloader","proxyImage","canvas","getContext","fillStyle","fillRect","imageLoaded","loadedAssets","totalImages","loadedFootagesCount","totalFootages","imagesLoadedCb","footageLoaded","getAssetsPath","assetData","assetsPath","originalPath","imagePath","u","testImageLoaded","img","intervalId","setInterval","getBBox","_imageLoaded","clearInterval","bind","createFootageData","ob","footageData","_footageLoaded","ImagePreloaderFactory","images","loadAssets","_createImageData","setAssetsPath","setPath","loadedImages","loadedFootages","getAsset","createImgData","crossOrigin","createImageData","setAttributeNS","_elementHelper","append","appendChild","setCacheType","elementHelper","BaseEvent","triggerEvent","eventName","args","_cbs","callbacks","splice","markerParser","parsePayloadLines","line","lines","keysCount","_markers","markers","_marker","markerData","time","tm","dr","cm","__","ProjectInterface","registerComposition","compositions","_thisProjectFunction","nm","prepareFrame","xt","currentFrame","compInterface","renderers","registerRenderer","getRenderer","getRegisteredRenderer","_typeof$4","AnimationItem","isLoaded","currentRawFrame","frameRate","frameMult","playSpeed","playDirection","playCount","isPaused","autoplay","renderer","animationID","timeCompleted","segmentPos","isSubframeEnabled","_idle","_completedLoop","projectInterface","imagePreloader","audioController","configAnimation","onSetupError","onSegmentComplete","drawnFrameEvent","setParams","params","wrapper","animType","RendererClass","rendererSettings","globalData","defs","setProjectInterface","autoloadSegments","initialSegment","setupAnimation","substr","fileName","trigger","setData","wrapperAttributes","getNamedItem","prerender","includeLayers","newLayers","fonts","fontManager","addChars","addFonts","initExpressions","loadNextSegment","segment","shift","segmentPath","loadSegments","imagesLoaded","checkLoaded","preloadImages","animData","fr","searchExtraCompositions","updaFrameModifier","waitForFontsLoaded","triggerConfigError","rendererType","initItems","gotoFrame","resize","_width","_height","updateContainerSize","setSubframe","renderFrame","resetFrame","triggerRenderFrameError","togglePause","setCurrentRawFrameValue","getMarkerData","markerName","marker","goToAndStop","isFrame","numValue","isNaN","frameModifier","goToAndPlay","playSegments","advanceTime","_isComplete","checkSegments","adjustSegment","setSpeed","setDirection","setSegment","pendingFrame","forceFlag","resetSegments","onEnterFrame","onLoopComplete","onSegmentStart","onDestroy","setLoop","isLooping","getPath","getAssetData","hide","show","getDuration","updateDocumentData","getElementByPath","animationManager","registeredAnimations","initTime","playingAnimationsNum","_stopped","_isFrozen","removeElement","ev","animItem","subtractPlayingCount","registerAnimation","elem","addPlayingCount","nowTime","elapsedTime","first","searchAnimations","standalone","animElements","getElementsByClassName","lenAnims","setAttribute","body","getElementsByTagName","innerText","div","freeze","unfreeze","getRegisteredAnimations","animations","BezierFactory","beziers","bezEasing","BezierEasing","kSplineTableSize","kSampleStepSize","float32ArraySupported","A","aA1","aA2","B","C","calcBezier","aT","getSlope","points","_p","_mSampleValues","_precomputed","mX1","mY1","mX2","mY2","_precompute","_getTForX","_calcSampleValues","aX","mSampleValues","intervalStart","currentSample","lastSample","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","pooling","double","poolFactory","initialLength","_create","_release","_length","_maxLength","pool","newElement","release","bezierLengthPool","addedLength","percents","lengths","segmentsLengthPool","totalLength","bezFunction","math","pointOnLine2D","x1","y1","x2","y2","x3","y3","det1","getBezierLength","pt1","pt2","pt3","pt4","ptCoord","perc","ptDistance","curveSegments","point","lastPoint","lengthData","BezierData","segmentLength","PointData","partialLength","storedData","buildBezierData","bezierName","bezierData","getDistancePerc","initPos","lengthPos","lPerc","dir","bezierSegmentPoints","getSegmentsLength","shapeData","segmentsLength","pathV","pathO","pathI","getNewSegment","startPerc","endPerc","t0","t1","u0","u1","u0u0u0","t0u0u0_3","t0t0u0_3","t0t0t0","u0u0u1","t0u0u1_3","t0t0u1_3","t0t0t1","u0u1u1","t0u1u1_3","t0t1u1_3","t0t1t1","u1u1u1","t1u1u1_3","t1t1u1_3","t1t1t1","getPointInSegment","percent","pointOnLine3D","z1","z2","z3","diffDist","dist1","dist2","dist3","bez","initFrame","interpolateValue","frameNum","caching","offsetTime","propType","pv","keyData","nextKeyData","keyframeMetadata","fnc","iterationIndex","lastIndex","keyframes","keyframesMetadata","endValue","nextKeyTime","keyTime","ti","ind","__fnct","getBezierEasing","segmentPerc","distanceInLine","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","outX","outY","inX","inY","keyValue","sh","quaternionToEuler","slerp","createQuaternion","omega","cosom","sinom","scale0","scale1","out","ax","ay","az","aw","bx","by","bz","bw","acos","sin","quat","qx","qy","qz","qw","heading","atan2","attitude","asin","bank","values","c1","cos","c2","c3","s1","s2","s3","getValueAtCurrentTime","renderedFrame","endTime","_caching","renderResult","setVValue","multipliedValue","mult","_mdf","processEffectsSequence","frameId","effectsSequence","lock","_isFirstFrame","finalValue","kf","addEffect","effectFunction","addDynamicProperty","ValueProperty","vel","getValue","MultiDimensionalProperty","KeyframedValueProperty","KeyframedMultidimensionalProperty","arrLen","PropertyFactory","getProp","sid","slotManager","DynamicPropertyContainer","dynamicProperties","_isAnimated","iterateDynamicProperties","initDynamicPropertyContainer","pointPool","ShapePath","setPathData","setLength","doubleArrayLength","setXYAt","pos","setTripleAt","vX","vY","oX","oY","iX","iY","newPath","vertices","outPoints","inPoints","cnt","shapePool","shapePath","shape","cloned","ShapeCollection","addShape","releaseShapes","shapeCollectionPool","newShapeCollection","shapeCollection","ShapePropertyFactory","interpolateShape","previousValue","keyPropS","keyPropE","isHold","vertexValue","interpolateShapeCurrentTime","resetShape","paths","localShapeCollection","shape1","shape2","shapesEqual","ShapeProperty","reset","KeyframedShapeProperty","EllShapeProperty","cPoint","EllShapePropertyFactory","convertEllToPath","p0","p1","s0","_cw","_v","StarShapeProperty","StarShapePropertyFactory","sy","ir","convertToPath","convertStarToPath","convertPolygonToPath","or","os","rad","roundness","perimSegment","numPts","angle","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","currentAng","ox","oy","RectShapeProperty","RectShapePropertyFactory","convertRectToPath","v0","v1","Matrix","_cos","_sin","_tan","tan","_rnd","props","rotate","mCos","mSin","_t","rotateX","rotateY","rotateZ","shear","sx","skew","skewFromAxis","sz","setTransform","l","tx","tz","a2","b2","e2","f2","g2","h2","i2","j2","k2","l2","m2","n2","o2","p2","_identityCalculated","a1","b1","e1","f1","g1","h1","i1","j1","k1","l1","m1","n1","o1","multiply","matrix","matrixProps","isIdentity","_identity","equals","matr","cloneFromProps","applyToPoint","z","applyToX","applyToY","applyToZ","getInverseMatrix","determinant","inverseMatrix","inversePoint","applyToPointArray","inversePoints","pts","retPts","applyToTriplePoints","p4","p5","p12","p13","applyToPointStringified","toCSS","cssValue","roundMatrixProperty","to2dCSS","_typeof$3","lottie","setLocation","href","setSubframeRendering","setPrefix","prefix","setQuality","inBrowser","installPlugin","getFactory","checkReady","readyStateCheckInterval","getQueryVariable","variable","vars","queryString","pair","decodeURIComponent","useWebWorker","setIDPrefix","__getFactory","version","scripts","myScript","bodymovin","ShapeModifiers","modifiers","registerModifier","getModifier","ShapeModifier","TrimModifier","PuckerAndBloatModifier","initModifierProperties","addShapeToModifier","setAsAnimated","processKeys","sValue","eValue","pathsData","calculateShapeEdges","shapeLength","totalModifierLength","segmentOb","shapeSegments","shapeS","shapeE","releasePathsData","processShapes","shapePaths","_s","totalShapeLength","edges","newShapesData","addShapes","lastShape","pop","addPaths","newPaths","addSegment","newShape","addSegmentFromArray","shapeSegment","currentLengthData","segmentCount","amount","processPath","centerPoint","pathLength","clonedPath","TransformPropertyFactory","defaultVector","TransformProperty","pre","appliedTransformations","px","py","pz","rx","ry","rz","_isDirty","applyToMatrix","mat","precalculateMatrix","autoOriented","v2","getValueAtTime","autoOrient","_addDynamicProperty","getTransformProperty","RepeaterModifier","RoundCornersModifier","floatEqual","floatZero","lerp","lerpPoint","quadRoots","singleRoot","delta","polynomialCoefficients","p3","singlePoint","PolynomialBezier","linearize","pointEqual","coeffx","coeffy","extrema","intersectData","t2","box","boundingBox","cx","cy","splitData","boxIntersect","intersectsImpl","depth","tolerance","intersections","maxRecursion","d1s","d2s","crossProduct","lineIntersection","start1","end1","start2","end2","v3","v4","polarOffset","pointDistance","hypot","ZigZagModifier","setPoint","outputBezier","amplitude","outAmplitude","inAmplitude","angO","angI","getPerpendicularVector","vector","rot","getProjectingAngle","cur","prevIndex","nextIndex","pVector","zigZagCorner","frequency","pointType","prevPoint","nextPoint","prevDist","nextDist","zigZagSegment","dist","normalAngle","linearOffset","offsetSegment","p1a","p1b","p2b","p2a","joinLines","seg1","seg2","lineJoin","miterLimit","angleOut","tangentAngle","angleIn","radius","intersection","getIntersection","intersect","pruneSegmentIntersection","outa","outb","pruneIntersections","offsetSegmentSplit","mid","inflectionPoints","OffsetPathModifier","getFontProperties","fontData","styles","fStyle","fWeight","weight","tr","so","eo","pMatrix","rMatrix","sMatrix","tMatrix","applyTransforms","inv","scaleX","scaleY","elemsData","_currentCopies","_elements","_groups","unshift","resetElements","elements","_processed","cloneElements","newElements","changeGroupRender","renderFlag","_render","items","itemsTransform","cont","hasReloaded","copies","ix","reloadShapes","elems","transformData","offsetModulo","roundOffset","pProps","rProps","sProps","iteration","mProps","rd","currentV","currentI","currentO","closerV","newPosPerc","derivative","denom","tcusp","square","p10","p11","p20","p21","bounds","shapeSegmentInverted","pointsType","count","ml","lj","inputBezier","multiSegments","lastSeg","multiSegment","FontManager","emptyChar","w","combinedCharacters","BLACK_FLAG_CODE_POINT","surrogateModifiers","setUpNode","font","family","parentNode","fontFamily","fontVariant","fontStyle","letterSpacing","familyArray","enabledFamilies","trimFontOptions","parent","createHelper","def","helper","fontProps","tHelper","fFamily","textContent","fClass","tCanvasHelper","OffscreenCanvas","measureText","getComputedTextLength","getCodePoint","string","codePoint","charCodeAt","second","isRegionalCode","Font","typekitLoaded","_warned","now","setIsLoadedBinded","setIsLoaded","checkLoadedFontsBinded","checkLoadedFonts","isModifier","firstCharCode","secondCharCode","sum","isZeroWidthJoiner","charCode","isFlagEmoji","isCombinedCharacter","_char3","isRegionalFlag","isVariationSelector","fontPrototype","found","ch","cache","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","loaded","monoCase","sansCase","fPath","fOrigin","rel","sc","getCharData","_char","warn","getFontByName","fName","_char2","fontName","doubleSize","singleSize","loadedCount","removeChild","SlotManager","slotFactory","RenderableElement","slots","initRenderable","isInRange","isTransparent","renderableComponents","addRenderableComponent","component","removeRenderableComponent","prepareRenderableFrame","checkLayerLimits","checkTransparency","finalTransform","mProp","renderConfig","hideOnTransparent","renderRenderable","sourceRectAtTime","getLayerSize","textData","getBlendMode","blendModeEnums","mode","SliderEffect","AngleEffect","ColorEffect","PointEffect","LayerIndexEffect","MaskIndexEffect","CheckboxEffect","NoValueEffect","EffectsManager","effects","ef","effectElements","effectItem","GroupEffect","BaseElement","FrameElement","FootageElement","imageLoader","initBaseData","AudioElement","_isPlaying","_canPlay","_currentTime","_volumeMultiplier","_previousVolume","_placeholder","lv","au","BaseRenderer","eff","checkMasks","LayerExpressionInterface","EffectsExpressionInterface","ShapeExpressionInterface","TextExpressionInterface","CompExpressionInterface","layerInterface","maskManager","registerMaskInterface","effectsInterface","createEffectsInterface","registerEffectsInterface","shapeInterface","shapesData","itemsData","content","textInterface","setBlendMode","blendModeValue","bm","baseElement","layerElement","layerId","effectsManager","getType","prepareProperties","isVisible","_isParent","getBaseElement","FootageInterface","getFootageData","timeRemapped","totalVolume","volumeValue","checkLayers","buildItem","checkPendingElements","createItem","layer","createImage","createComp","createSolid","createNull","createShape","createText","createCamera","createFootage","buildAllItems","pInterface","progressiveLoad","buildElementParenting","parentName","hierarchy","setAsParent","setHierarchy","addPendingElement","pendingElements","getElementById","pathValue","setupGlobalData","fontsContainer","animationItem","compSize","effectTypes","TRANSFORM_EFFECT","TransformElement","MaskElement","maskElement","viewData","solidPath","expansor","feMorph","properties","currentMasks","maskType","maskRef","getShapeProp","lastPath","filterID","expan","lastOperator","filterId","lastRadius","mask","createLayerSolidPath","invRect","drawPath","maskedElement","initTransform","_matMdf","_localMatMdf","_opMdf","localMat","localOpacity","ao","renderTransform","finalMat","localTransforms","renderLocalTransform","lmat","localOp","opacity","searchEffectTransforms","renderableEffectsManager","transformEffects","getEffects","globalToLocal","transforms","ptNew","mHelper","getMaskProperty","isFirstFrame","getMaskelement","pathNodes","pathString","pathShapeValue","filtersFactory","filId","skipCoordinates","fil","feColorMatrix","featureSupport","svgLumaHidden","offscreenCanvas","registeredEffects$1","idPrefix","SVGEffects","filterManager","source","createFilter","filters","Effect","effect","countsAsEffect","registerEffect$1","SVGBaseElement","HierarchyElement","RenderableDOMElement","IImageElement","initElement","sourceRect","ProcessedElement","IShapeElement","initRendererElement","createContainerElements","matteElement","transformedElement","_sizeChanged","layerElementParent","td","matteMasks","gg","tt","ln","hd","cp","clipId","cpGroup","renderElement","destroyBaseElement","createRenderableComponents","getMatte","matteType","useElement","masker","createAlphaToLuminanceFilter","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","setMatte","initHierarchy","checkParenting","createContent","renderInnerContent","innerElem","pr","imagePreserveAspectRatio","addShapeToModifiers","shapeModifiers","isShapeInAnimatedModifiers","isAnimatedWithShape","renderModifiers","searchProcessedElement","processedElements","addProcessedElement","lineCapEnum","lineJoinEnum","SVGShapeData","transformers","level","caches","lStr","lvl","SVGStyleData","pElem","msElem","DashProperty","dataProps","dashStr","dashArray","dashoffset","SVGStrokeStyleData","styleOb","SVGFillStyleData","SVGNoStyleData","GradientProperty","cLength","_cmdf","_omdf","_collapsable","checkCollapsable","_hasOpacity","SVGGradientFillStyleData","initGradientData","SVGGradientStrokeStyleData","ShapeGroupData","prevViewData","gr","SVGTransformData","comparePoints","stops","setGradientData","setGradientOpacity","pathElement","gradientId","gfill","gf","cst","opacityId","maskId","opFill","lc","of","ms","ost","buildShapeString","_o","_i","shapeString","SVGElementsRenderer","_identityMatrix","_matrixHelper","createRenderFunction","renderFill","renderGradient","renderGradientStroke","renderStroke","renderPath","renderContentTransform","renderNoop","styleData","itemData","pathStringTransformed","redraw","iterations","lLen","styleElem","hasOpacity","attr1","attr2","cValues","oValues","ang","SVGShapeElement","stylesList","animatedContents","LetterProps","sw","fc","TextProperty","_frameId","keysIndex","canResize","minimumFontSize","currentData","ascent","boxWidth","defaultBoxWidth","justifyOffset","lh","lineWidths","ls","ps","fillColorAnim","strokeColorAnim","strokeWidthAnim","yOffset","finalSize","finalText","finalLineHeight","copyData","searchProperty","completeTextData","initSecondaryElement","identityMatrix","buildExpressionInterface","searchShapes","filterUniqueShapes","tempShapes","areAnimated","setShapesAsAnimated","createStyleElement","elementData","addToAnimatedContents","createGroupElement","createTransformElement","transformProperty","createShapeElement","ownTransformers","setElementStyles","currentTransform","modifier","processedPos","ownStyles","ownModifiers","renderShape","animatedContent","updated","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentValue","currentIndex","textKeys","buildFinalText","charactersArray","shouldCombine","shouldCombineNext","currentChars","charAt","newLineFlag","letters","anchorGrouping","currentPos","currentLine","lineWidth","maxLineWidth","trackingOffset","currentHeight","boxHeight","lastSpaceIndex","currentChar","uncollapsedSpaces","an","anIndexes","animatorJustifyOffset","extra","animatorData","letterData","based","animators","fh","fb","rn","totalChars","newInd","currentInd","newData","dData","recalculate","canResizeFont","_canResize","setMinimumFontSize","_fontValue","TextSelectorProp","TextSelectorPropFactory","_currentTextLength","finalS","finalE","xe","ne","sm","getMult","textProperty","easer","tot","smoothness","newCharsFlag","divisor","getTextSelectorProp","TextAnimatorDataProperty","animatorProps","defaultData","textAnimatorAnimatables","TextAnimatorProperty","renderType","_hasMaskedPath","_textData","_renderType","_elem","_animatorsData","_pathData","_moreOptions","renderedLetters","lettersChangedFlag","ITextElement","searchProperties","getMeasures","xPos","yPos","pathInfo","currentLength","currentPoint","pointInd","segmentInd","tanAngle","matrixHelper","renderedLettersCount","tLength","pi","letterValue","yOff","firstLine","offf","xPathPos","yPathPos","elemOpacity","letterSw","letterSc","letterFc","letterO","initPathPos","initSegmentInd","initPointInd","letterM","letterP","defaultPropsArray","animatorFirstCharOffset","justifyOffsetMult","isNewLine","animatorOffset","atan","textAnimator","createPathShape","shapeStr","_fontSize","applyTextPropertiesToMatrix","lineNumber","buildColor","colorData","emptyProp","validateText","buildNewText","emptyShapeData","SVGTextLottieElement","textSpans","ISolidElement","NullElement","SVGRendererBase","ICompElement","SVGCompElement","supports3d","SVGRenderer","config","svgElement","ariaLabel","title","titleElement","titleId","description","descElement","descId","preserveAspectRatio","contentVisibility","viewBoxOnly","viewBoxSize","focusable","filterSize","runExpressions","ShapeTransformManager","sequences","sequenceList","transform_key_count","singleShape","textContainer","buildTextContents","textArray","textContents","currentTextContent","fromCharCode","buildShapeData","shapeItem","tSpan","usesGlyphs","cachedSpansLength","span","childSpan","glyph","glyphElement","_debug","tElement","justify","textBox","bbox","renderedLetter","textSpan","findIndexByInd","appendElementInPos","elementIndex","tp","matteMask","nextElement","insertBefore","setElements","getElements","destroyElements","addTransformSequence","sequence","processSequence","processSequences","getNewKey","lumaLoader","lumaBuffer","lumaBufferCtx","svg","loadLuma","_svg","createCanvas","loadLumaCanvas","getLumaCanvas","registeredEffects","CVEffects","registerEffect","CVMaskElement","hasMasks","CVBaseElement","canvasContext","beginPath","moveTo","lineTo","bezierCurveTo","save","clip","operationsMap","CVShapeData","transformsManager","styledShapes","styledShape","trNodes","CVShapeElement","CVTextElement","stroke","fill","currentRender","sWidth","fValue","CVImageElement","CVSolidElement","CanvasRendererBase","CanvasContext","strokeStyle","lineCap","CVContextData","stack","cArrPos","cTr","nativeContext","transformMat","currentOpacity","currentFillStyle","appliedFillStyle","currentStrokeStyle","appliedStrokeStyle","currentLineWidth","appliedLineWidth","currentLineCap","appliedLineCap","currentLineJoin","appliedLineJoin","appliedMiterLimit","currentMiterLimit","CVCompElement","CanvasRenderer","clearCanvas","context","dpr","devicePixelRatio","currentGlobalAlpha","contextData","ctxTransform","ctxOpacity","ctxFillStyle","ctxStrokeStyle","ctxLineWidth","ctxLineCap","ctxLineJoin","ctxMiterLimit","ctxFill","ctxFillRect","ctxStroke","HBaseElement","HSolidElement","HShapeElement","shapesContainer","currentBBox","HTextElement","textPaths","isMasked","HCameraElement","pe","_prevMat","HImageElement","HybridRendererBase","threeDElements","camera","HCompElement","HybridRenderer","createElements","buffers","bufferCanvas","bufferCanvas2","_isProxy","transformCanvas","blendMode","globalCompositeOperation","hideElement","showElement","clearRect","prepareLayer","bufferCtx","drawImage","getTransform","exitLayer","buffer","forceRealStack","restore","transformHelper","dashResetter","preTransforms","co","wi","da","addTransformToStyleList","removeTransformFromStyleList","closeStyles","shouldRender","ownTransforms","_shouldRender","renderShapeTransform","parentTransform","groupTransform","drawLayer","nodes","currentStyle","coOp","grd","setLineDash","lineDashOffset","closePath","isMain","renderGradientFill","renderStyledShape","shapeNodes","groupTransformMat","createLinearGradient","createRadialGradient","addColorStop","hasFill","hasStroke","commands","pathArr","commandsCounter","lastFill","lastStroke","lastStrokeW","widthCrop","heightCrop","imgW","imgH","imgRel","canvasRel","par","globalAlpha","rule","actionFlag","mozTransformOrigin","setContext","isDashed","elementWidth","elementHeight","elementRel","animationRel","fillType","duplicate","newLength","forceRestore","currentContext","prevStack","saveOnNativeFlag","currentStack","newStack","setOpacity","trProps","checkBlendMode","tg","transformedElementStyle","matrixValue","webkitTransform","addEffects","_renderShapeFrame","shapeCont","getTransformedPoint","calculateShapeBoundingBox","vPoint","oPoint","nextIPoint","nextVPoint","checkBounds","getBoundsOfCurve","shapeBoundingBox","xMax","yMax","tempBoundingBox","b2ac","calculateF","calculateBoundingBox","expandStrokeBoundingBox","widthProperty","kfw","currentBoxContains","changed","shapeStyle","shapeTransform","compW","compH","innerElemStyle","strokeWidth","lineHeight","tParent","tCont","tContStyle","tContTranslation","tStyle","tSpanTranslation","svgStyle","translation","textPath","svgTransform","setup","perspectiveStyle","perspectiveElem","perspective","webkitPerspective","mTransf","diffVector","mag","lookDir","lookLengthOnXZ","mRotationX","mRotationY","hasMatrixChanged","matValue","imageElem","newDOMElement","ddd","addTo3dContainer","nextDOMElement","nextLayer","getThreeDContainerByPos","startPos","endPos","createThreeDContainer","threeDContainerData","build3dContainers","lastThreeDContainerData","currentContainer","resizerElem","overflow","cWidth","cHeight","floatingContainer","_createBaseContainerElements","_thisLayerFunction","defineProperty","pixelAspect","frameDuration","displayStartTime","numLayers","_typeof$2","seedRandom","global","rngname","startdenom","significance","ARC4","keylen","me","S","copy","flatten","result","typ","mixkey","seed","smear","stringseed","tostring","shortseed","entropy","Uint8Array","crypto","msCrypto","getRandomValues","browser","screen","autoseed","arc4","prng","int32","quick","pass","is_math_call","initialize$2","propTypes","SHAPE","_typeof$1","ExpressionManager","fetch","frames","_lottieGlobal","$bm_isInstanceOfArray","isNumerable","tOfV","$bm_neg","tOfA","retArr","easeInBez","easeOutBez","easeInOutBez","tOfB","lenB","sub","mul","mod","$bm_sum","$bm_sub","$bm_mul","$bm_div","$bm_mod","clamp","mm","radiansToDegrees","radians_to_degrees","degreesToRadians","degrees_to_radians","helperLengthArray","arr1","arr2","normalize","vec","rgbToHsl","hue2rgb","hslToRgb","linear","tMin","tMax","value1","value2","_tMin","rnd","createPath","inTangents","outTangents","inVertexPoint","outVertexPoint","arrPlaceholder","initiateExpression","property","noOp","_value","needsVelocity","_needsRandom","elemType","$bm_transform","thisProperty","_name","valueAtTime","inPoint","outPoint","loopIn","loop_in","loopOut","loop_out","smooth","toWorld","fromWorld","fromComp","toComp","fromCompToSurface","rotation","anchorPoint","thisLayer","thisComp","velocityAtTime","scoped_bm_rt","expression_function","eval","numKeys","wiggle","freq","amp","iWiggle","lenWiggle","addedAmps","periods","loopInDuration","loopOutDuration","getVelocityAtTime","textIndex","textTotal","selectorValue","lookAt","elem1","elem2","fVec","pitch","easeOut","val1","val2","applyEase","easeIn","ease","iKey","lenKey","nearestKey","obKey","framesToTime","fps","timeToFrames","seedrandom","randSeed","substring","posterizeTime","framesPerSecond","hasParent","executeExpression","frameExpressionId","__preventDeadCodeRemoval","Expressions","stackCount","registers","pushExpression","popExpression","releaseInstances","registerExpressionProperty","expression","MaskManagerInterface","MaskInterface","_mask","_data","_masksInterfaces","ExpressionPropertyInterface","defaultUnidimensionalValue","defaultMultidimensionalValue","completeProperty","expressionValue","valueProp","speedAtTime","getSpeedAtTime","propertyGroup","defaultGetter","UnidimensionalPropertyInterface","arrValue","MultidimensionalPropertyInterface","TransformExpressionInterface","_thisFunction","xRotation","yRotation","xPosition","yPosition","zPosition","_px","_py","_pz","_transformFactory","getMatrix","toWorldMat","toWorldVec","applyPoint","fromWorldVec","invertPoint","sampleImage","transformInterface","anchorPointDescriptor","defineProperties","anchor_point","startTime","propertyGroupFactory","interfaceFunction","parentPropertyGroup","PropertyInterface","propertyName","effectsData","createGroupInterface","groupInterface","mn","_propertyGroup","createValueInterface","numProperties","np","enabled","en","expressionProperty","setGroupProperty","ShapePathInterface","view","propertyIndex","iterateElements","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","gradientFillInterfaceFactory","defaultInterfaceFactory","interfaces","transformInterfaceFactory","cix","contentsInterfaceFactory","startPoint","endPoint","_dashPropertyGroup","dashOb","addPropertyToDashOb","dash","skewAxis","outerRadius","outerRoundness","innerRoundness","innerRadius","_interfaceFunction","_sourceText","sourceText","stringValue","fillColor","_typeof","dataInterfaceFactory","outlineInterface","currentPropertyName","currentProperty","propertyNameIndex","outlineInterfaceFactory","dataInterface","footage","getInterface","expressionHelpers","searchExpressions","_cachingAtTime","getStaticValueAtTime","addPropertyDecorator","durationFlag","cycleDuration","firstKeyFrame","ret","lastKeyFrame","initV","endV","repeats","lastValue","nextLastValue","firstValue","nextFirstValue","samples","sampleValue","sampleFrequency","getTransformValueAtTime","_transformCachingAtTime","anchor","rotationZ","rotationY","rotationX","orientation","positionX","positionY","positionZ","getTransformStaticValueAtTime","propertyGetProp","ShapePropertyConstructorFunction","getConstructorFunction","KeyframedShapePropertyConstructorFunction","getKeyframedConstructorFunction","ShapeExpressions","isClosed","pointOnPath","_segmentsLength","accumulatedLength","initIndex","endIndex","vectorOnPath","vectorType","xLength","yLength","magnitude","tangentOnPath","normalOnPath","shapeValue","lastTime","propertyGetShapeProp","trims","initialize$1","addDecorator","getExpressionValue","calculateExpression","isKeyframed","hasExpressions","initialize","SVGComposableEffect","createMergeNode","resultId","ins","feMergeNode","feMerge","linearFilterValue","SVGTintFilter","linearFilter","matrixFilter","SVGFillFilter","SVGStrokeEffect","initialized","SVGTritoneFilter","feComponentTransfer","feFuncR","feFuncG","feFuncB","SVGProLevelsFilter","createFeFunc","feFuncA","feFuncRComposed","feFuncGComposed","feFuncBComposed","SVGDropShadowEffect","globalFilterSize","feGaussianBlur","feOffset","feFlood","feComposite","colorBlack","colorWhite","groupPath","elemChildren","childNodes","pathMasker","dasharrayValue","getTotalLength","lineLength","units","color1","color2","color3","tableR","tableG","tableB","getTableValue","inputBlack","inputWhite","gamma","outputBlack","outputWhite","colorValue","table","outputDelta","inputDelta","col","_svgMatteSymbols","SVGMatte3Effect","filterElem","SVGGaussianBlurEffect","TransformEffect","SVGTransformEffect","CVTransformEffect","findSymbol","replaceInParent","symbolId","nextChild","useElem","setElementAsMask","symbol","sigma","dimensions","sigmaX","sigmaY","edgeMode","forceFrame","isUniformScale","scaleHeight","scaleWidth","module","_arrayLikeToArray","_arrayWithHoles","_defineProperty","_toPropertyKey","enumerable","configurable","writable","_iterableToArrayLimit","return","_nonIterableRest","TypeError","ownKeys","getOwnPropertySymbols","_objectSpread2","arguments","getOwnPropertyDescriptors","_objectWithoutProperties","_objectWithoutPropertiesLoose","propertyIsEnumerable","_slicedToArray","_unsupportedIterableToArray","_toPrimitive","toPrimitive","_excluded$1","useLottie","onConfigReady","onDataReady","onDataFailed","onLoadedImages","onDOMLoaded","lottieRef","rest","_useState2","animationLoaded","setAnimationLoaded","animationInstanceRef","animationContainer","onUnmount","forcedConfigs","deregisterList","deregister","View","useSubFrames","inFrames","animationContainerRef","getContainerVisibility","_container$getBoundin","getBoundingClientRect","innerHeight","getContainerCursorPosition","cursorX","cursorY","_container$getBoundin2","useInitInteractivity","_ref","wrapperRef","actions","handleCursor","mouseMoveHandler","mouseOutHandler","assignedSegment","scrollHandler","currentPercent","action","find","_ref2","visibility","frameToGo","_x","_y","_ref3","xPercent","yPercent","clientX","clientY","useLottieInteractivity","_ref4","lottieObj","_excluded","Lottie","_b","_c","interactivity","lottieProps","_useLottie","OnboardImage","setLottie","res","json","video_url","autoPlay","muted","OnboardImage$1","OnboardItem","OnboardItem$1","Text","keyOrText","Text$1","OnboardSubtitle","OnboardSubtitle$1","OnboardTitle","OnboardTitle$1","extractViewStyle","scrollable","overflowX","overflowY","maxWidth","maxHeight","View$1","simpleNode","RenderNode$1","schemaVersion","allowUnknownAttributes","pattern","animation_color","types","EventObject","navigate_to","forIndex","inactive_dot_opacity","expanding_dot_width","dot_style","container_style","active_dot_color","use_safe_area_inset","allcomponentNames","generatedPatterns","patternIndex","getPatternByType","getAttributeSchema","getTypeSchema","componentType","typeName","isPrimitiveType","getArrayItemType","Field","onChange","opt","itemType","checked","Boolean","schema","gridTemplateColumns","fieldName","fieldType","Fragment","alignSelf","nextObj","AttributesEditor","AttributesEditor$1","novaToJson","nova","layout","info","onboardNovaToJson","generalComponents","general_components","pages","dotsNode","mapDotsFromGeneralComponents","footerNode","mapFooterFromGeneralComponents","carouselNode","providerLevelButtons","buildCarouselFromPages","simplePages","pageKeyToIndex","buildCarouselItem","components","currentKey","pageIndex","title_localization_key","title_color","titleFontSize","titleTextAlign","titleMarginTop","titleFontWeight","extractTextStyleAttributesFromComponent","subtitle","subtitle_localization_key","subtitle_color","subtitleFontSize","subtitleTextAlign","subtitleMarginTop","subtitleFontWeight","image","rawHeight","ios_height","android_height","isBgImage","is_bg_image","imageStyle","extractViewStyleAttributesFromComponent","videoUrl","buttonNodes","btn","attrs","button_text_localization_key","buttonTextColor","buttonBackgroundColor","animationColor","normalizedEvents","nextKey","next_page_key","hasTarget","pageKeyAttr","resolvedKey","stylesRoot","allowedAligns","allowedWeights","nested","rawFontSize","rawMarginTop","rawWeight","normalizedWeight","rawBr","dots","gc","dotArray","dot","firstDot","dotAttrs","parseNumber","inactiveDotOpacity","expandingDotWidth","footer","texts","linkedWords","baseTextKey","baseTextColor","textKey","text_localization_key","text_color","lws","linkedwords","text_key","linked_word_localization_key","lwColor","linked_word_color","getSamples","legacySamples","vpnOnboard1","vpnOnboard2","vpnOnboard3","vpnOnboard4","vpnOnboard5","vpnOnboard6","sample","simple1","simple2","carouselSample","getBasicSamples","getOnboardSamples","DeviceMockFrame","isDark","insetTop","insetRight","insetBottom","insetLeft","statusBarHeight","platform","navBarHeight","navigationBarType","statusBarColor","navBarColor","minWidth","minHeight","RenderPage","isNodeData","isKeySearch","startsWith","keyToMatch","visit","DeviceButton","selectedDevice","setSelectedDevice","EditorHeader","onSaveProject","editorData","setEditorData","isDevicesModalOpen","setIsDevicesModalOpen","replaceNode","prev","replaced","role","copyNode","AttributesEditorPanel","setCurrent","draft","setDraft","isAllowedTopAccept","setIsAllowedTopAccept","Breadcrumb","separator","BuilderButton","nodeData","BuilderComponent","Builder","crumbs","setCrumbs","breadcrumbItems","allowed","parentType","childrenSchema","getAllowedChildTypes","flexWrap","createDefaultNode","nextChildren","updatedParent","updatedRoot","BuilderTab","createNew","noError","fullData","exec","flat","insertAfter","fromEntries","insert","throw","SuppressedError","setValue","handleKeyPress","textAreaRef","gridArea","whiteSpace","rows","autoFocus","onFocus","select","onKeyDown","some","parentData","E","shiftKey","metaKey","ctrlKey","altKey","D","confirm","cancel","objectConfirm","objectLineBreak","stringConfirm","stringLineBreak","numberConfirm","numberUp","numberDown","tabForward","tabBack","booleanConfirm","booleanToggle","clipboardModifier","collapseModifier","O","N","selectionStart","selectionEnd","setSelectionRange","T","displayName","fragments","edit","collection","collectionInner","collectionElement","dropZone","bracket","itemCount","number","boolean","null","input","inputHighlight","iconCollection","iconEdit","iconDelete","iconAdd","iconCopy","iconOk","iconCancel","P","getStyles","icons","R","docRoot","I","K","V","setProperty","F","L","onEditEvent","onCollapse","collapseState","setCollapseState","getMatchingCollapseState","currentlyEditingElement","setCurrentlyEditingElement","areChildrenBeingEdited","previouslyEditedElement","setPreviouslyEditedElement","tabDirection","setTabDirection","setPreviousValue","dragSource","setDragSource","M","includeChildren","W","G","showStringQuotes","stringTruncate","canEdit","setIsEditing","TextWrapper","onDoubleClick","getModifierState","trimEnd","Y","handleEdit","handleKeyboard","keyboardCommon","H","isEditing","enumType","U","$","Z","clearTimeout","X","J","Q","viewBox","ee","te","strokeLinecap","strokeLinejoin","baseProfile","oe","ie","ok","chevron","ae","startEdit","handleDelete","handleAdd","enableClipboard","customButtons","keyboardControls","editConfirmRef","getNewKeyOptions","jsonStringify","showIconTooltips","se","clipboard","success","errorMessage","writeText","catch","finally","Element","defaultValue","le","onOk","onCancel","hideOk","ce","de","collapsed","onEdit","showErrorMessages","restrictEditFilter","restrictDeleteFilter","restrictAddFilter","restrictDragFilter","errorMessageTimeout","errorValue","isEditingKey","canEditKey","canDelete","canAdd","canDrag","showError","setError","handleEditKey","derivedValues","emptyStringKey","ue","canDragOnto","onMove","onDragStart","onDragEnd","onDragOver","onDrop","onDragEnter","onDragExit","zIndex","dragSourceProps","getDropTargetProps","BottomDropTarget","DropTargetPadding","handleDrop","ge","arrayIndexFromOne","handleCancel","handleClick","keyValueArray","getNextOrPrevious","flexShrink","onDelete","restrictTypeSelection","searchFilter","searchText","showLabel","indent","customNodeDefinitions","customNodeData","be","ve","je","he","Ee","CustomNode","we","customNodeProps","De","hideKey","Ce","showEditTools","Oe","showOnEdit","ke","showOnView","Se","passOriginalNode","Ne","Te","showInTypesSelector","Ae","Pe","enum","matchPriority","Re","Ke","Ie","Ve","_e","Fe","Le","ze","Me","Be","We","Ge","Ye","He","originalNode","ye","originalNodeKey","draggable","fe","wrapperElement","wrapperProps","showCollectionWrapper","CustomWrapper","mainContainerRef","showCollectionCount","onAdd","collapseFilter","collapseAnimationTime","showArrayIndices","newKeyOptions","jsonParse","TextEditor","insertAtTop","collapseClickZones","contentRef","isAnimating","animateCollapse","cssTransitionValue","Ue","$e","Ze","Xe","Je","Qe","qe","et","nt","rt","ot","at","lt","ct","dt","close","ut","gt","ht","mt","yt","ft","bt","vt","jt","Et","renderCollectionAsValue","wt","Dt","Ct","Ot","kt","St","transition","ITEM_SINGLE","ITEMS_MULTIPLE","KEY_NEW","KEY_SELECT","NO_KEY_OPTIONS","ERROR_KEY_EXISTS","ERROR_INVALID_JSON","ERROR_UPDATE","ERROR_DELETE","ERROR_ADD","DEFAULT_STRING","DEFAULT_NEW_KEY","SHOW_LESS","EMPTY_STRING","TOOLTIP_COPY","TOOLTIP_EDIT","TOOLTIP_DELETE","TOOLTIP_ADD","prepend","singleTag","styleSheet","cssText","createTextNode","insertAdjacentElement","rootName","onUpdate","collapse","restrictEdit","restrictDelete","restrictAdd","restrictDrag","viewOnly","searchDebounceTime","keySort","rootFontSize","translations","customText","externalTriggers","documentElement","PreviewTab","language","nextTheme","JsonEditor","DebugTab","ProjectPage","project","tab","setTab"],"mappings":"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","x_google_ignoreList":[6,7,8,16,17,18,19,20,21,22,23,24,27,36,37,60,61,62]}
|