@developer_tribe/react-builder 0.1.32 → 1.0.1

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.
Files changed (86) hide show
  1. package/dist/DeviceMockFrame.d.ts +1 -17
  2. package/dist/RenderPage.d.ts +1 -9
  3. package/dist/build-components/index.d.ts +1 -0
  4. package/dist/components/AttributesEditorPanel.d.ts +9 -0
  5. package/dist/components/Breadcrumb.d.ts +13 -0
  6. package/dist/components/Builder.d.ts +9 -0
  7. package/dist/components/EditorHeader.d.ts +15 -0
  8. package/dist/index.cjs.js +6 -5
  9. package/dist/index.cjs.js.map +1 -0
  10. package/dist/index.d.ts +8 -4
  11. package/dist/index.esm.js +6 -5
  12. package/dist/index.esm.js.map +1 -0
  13. package/dist/pages/ProjectPage.d.ts +11 -0
  14. package/dist/pages/tabs/BuilderTab.d.ts +9 -0
  15. package/dist/pages/tabs/DebugTab.d.ts +7 -0
  16. package/dist/pages/tabs/PreviewTab.d.ts +3 -0
  17. package/dist/store.d.ts +17 -18
  18. package/dist/styles.css +1 -1
  19. package/dist/types/PreviewConfig.d.ts +6 -3
  20. package/dist/types/Project.d.ts +12 -2
  21. package/dist/utils/copyNode.d.ts +2 -0
  22. package/dist/utils/logger.d.ts +11 -0
  23. package/dist/utils/useLogRender.d.ts +1 -0
  24. package/package.json +16 -9
  25. package/scripts/prebuild/utils/createBuildComponentsIndex.js +15 -1
  26. package/src/AttributesEditor.tsx +2 -0
  27. package/src/DeviceMockFrame.tsx +22 -31
  28. package/src/RenderPage.tsx +5 -42
  29. package/src/assets/images/android.svg +43 -0
  30. package/src/assets/images/apple.svg +16 -0
  31. package/src/assets/images/background.jpg +0 -0
  32. package/src/assets/samples/carousel-sample.json +2 -3
  33. package/src/assets/samples/getSamples.ts +49 -12
  34. package/src/assets/samples/simple-1.json +1 -2
  35. package/src/assets/samples/simple-2.json +1 -2
  36. package/src/assets/samples/vpn-onboard-1.json +1 -2
  37. package/src/assets/samples/vpn-onboard-2.json +1 -2
  38. package/src/assets/samples/vpn-onboard-3.json +1 -2
  39. package/src/assets/samples/vpn-onboard-4.json +1 -2
  40. package/src/assets/samples/vpn-onboard-5.json +1 -2
  41. package/src/assets/samples/vpn-onboard-6.json +1 -2
  42. package/src/build-components/Button/Button.tsx +2 -0
  43. package/src/build-components/Carousel/Carousel.tsx +2 -0
  44. package/src/build-components/CarouselButtons/CarouselButtons.tsx +2 -0
  45. package/src/build-components/CarouselDots/CarouselDots.tsx +2 -0
  46. package/src/build-components/CarouselItem/CarouselItem.tsx +2 -0
  47. package/src/build-components/Image/Image.tsx +2 -0
  48. package/src/build-components/Onboard/Onboard.tsx +2 -0
  49. package/src/build-components/OnboardButton/OnboardButton.tsx +7 -4
  50. package/src/build-components/OnboardButtons/OnboardButtons.tsx +7 -7
  51. package/src/build-components/OnboardDot/OnboardDot.tsx +2 -0
  52. package/src/build-components/OnboardFooter/OnboardFooter.tsx +5 -3
  53. package/src/build-components/OnboardImage/OnboardImage.tsx +2 -0
  54. package/src/build-components/OnboardItem/OnboardItem.tsx +2 -0
  55. package/src/build-components/OnboardProvider/OnboardProvider.tsx +2 -0
  56. package/src/build-components/OnboardSubtitle/OnboardSubtitle.tsx +2 -0
  57. package/src/build-components/OnboardTitle/OnboardTitle.tsx +2 -0
  58. package/src/build-components/Text/Text.tsx +5 -3
  59. package/src/build-components/View/View.tsx +2 -0
  60. package/src/build-components/index.ts +22 -0
  61. package/src/components/AttributesEditorPanel.tsx +112 -0
  62. package/src/components/Breadcrumb.tsx +48 -0
  63. package/src/components/Builder.tsx +272 -0
  64. package/src/components/EditorHeader.tsx +186 -0
  65. package/src/index.ts +8 -4
  66. package/src/pages/ProjectPage.tsx +152 -0
  67. package/src/pages/tabs/BuilderTab.tsx +33 -0
  68. package/src/pages/tabs/DebugTab.tsx +23 -0
  69. package/src/pages/tabs/PreviewTab.tsx +194 -0
  70. package/src/size-matters/index.ts +5 -1
  71. package/src/store.ts +60 -38
  72. package/src/styles/_mixins.scss +21 -0
  73. package/src/styles/_variables.scss +27 -0
  74. package/src/styles/builder.scss +60 -0
  75. package/src/styles/components.scss +88 -0
  76. package/src/styles/editor.scss +174 -0
  77. package/src/styles/global.scss +200 -0
  78. package/src/styles/index.scss +7 -0
  79. package/src/styles/pages.scss +2 -0
  80. package/src/types/PreviewConfig.ts +14 -5
  81. package/src/types/Project.ts +15 -2
  82. package/src/utils/copyNode.ts +7 -0
  83. package/src/utils/extractTextStyle.ts +4 -2
  84. package/src/utils/getDevices.ts +1 -0
  85. package/src/utils/logger.ts +76 -0
  86. package/src/utils/useLogRender.ts +13 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../src/utils/analyseNode.ts","../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/utils/logger.ts","../src/utils/useLogRender.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","../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","/**\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';\nimport type { LogEntry, LogLevel } from './types/Project';\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 // Logging\n logs: LogEntry[];\n logLevel: LogLevel;\n setLogLevel: (level: LogLevel) => void;\n addLog: (\n entry: Omit<LogEntry, 'id' | 'timestamp'> & {\n id?: string;\n timestamp?: number;\n },\n ) => void;\n clearLogs: () => 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 // Logging defaults\n logs: [],\n logLevel: 'INFO',\n setLogLevel: (level) => set({ logLevel: level }),\n addLog: (entry) =>\n set((state) => {\n const now = Date.now();\n const id =\n entry.id ?? `${now}-${Math.random().toString(36).slice(2, 8)}`;\n const timestamp = entry.timestamp ?? now;\n const newEntry: LogEntry = {\n id,\n timestamp,\n level: entry.level,\n source: entry.source,\n message: entry.message,\n payload: entry.payload,\n };\n return { logs: [...state.logs, newEntry] };\n }),\n clearLogs: () => set({ logs: [] }),\n persist: {\n name: 'render-store',\n partialize: (state: RenderStore) => ({\n copiedNode: state.copiedNode ?? null,\n logLevel: state.logLevel,\n }),\n storage: createJSONStorage(() => localStorage),\n },\n }),\n shallow,\n);\n","import { useRenderStore } from '../store';\nimport type { LogLevel, LogSource } from '../types/Project';\n\nconst levelPriority: Record<Exclude<LogLevel, 'NONE'>, number> = {\n ERROR: 0,\n WARN: 1,\n INFO: 2,\n VERBOSE: 3,\n};\n\nfunction shouldLog(currentLevel: LogLevel, level: LogLevel): boolean {\n if (currentLevel === 'NONE' || level === 'NONE') return false;\n const curr = levelPriority[currentLevel as Exclude<LogLevel, 'NONE'>];\n const incoming = levelPriority[level as Exclude<LogLevel, 'NONE'>];\n return incoming <= curr;\n}\n\nfunction consoleLog(\n level: LogLevel,\n source: LogSource,\n message: string,\n payload?: unknown,\n) {\n const prefix = `[${source}] ${message}`;\n switch (level) {\n case 'ERROR':\n // eslint-disable-next-line no-console\n console.error(prefix, payload);\n break;\n case 'WARN':\n // eslint-disable-next-line no-console\n console.warn(prefix, payload);\n break;\n case 'INFO':\n // eslint-disable-next-line no-console\n console.info(prefix, payload);\n break;\n case 'VERBOSE':\n // eslint-disable-next-line no-console\n console.debug(prefix, payload);\n break;\n default:\n break;\n }\n}\n\nexport const logger = {\n setLevel(level: LogLevel) {\n useRenderStore.getState().setLogLevel(level);\n // eslint-disable-next-line no-console\n console.info(`[Logger] level set to ${level}`);\n },\n log(level: LogLevel, source: LogSource, message: string, payload?: unknown) {\n const { logLevel, addLog } = useRenderStore.getState();\n if (!shouldLog(logLevel, level)) return;\n addLog({ level, source, message, payload });\n consoleLog(level, source, message, payload);\n },\n verbose(source: LogSource, message: string, payload?: unknown) {\n this.log('VERBOSE', source, message, payload);\n },\n info(source: LogSource, message: string, payload?: unknown) {\n this.log('INFO', source, message, payload);\n },\n warn(source: LogSource, message: string, payload?: unknown) {\n this.log('WARN', source, message, payload);\n },\n error(source: LogSource, message: string, payload?: unknown) {\n this.log('ERROR', source, message, payload);\n },\n clear() {\n useRenderStore.getState().clearLogs();\n },\n};\n\nexport type { LogLevel };\n","import { useEffect } from 'react';\nimport { logger } from './logger';\n\nexport function useLogRender(sourceName: string, payload?: unknown) {\n useEffect(() => {\n logger.verbose(sourceName, 'rendered', payload);\n return () => {\n logger.verbose(sourceName, 'unmount');\n };\n // We intentionally log once per mount/update cycle only for rendered\n // eslint-disable-next-line react-hooks/exhaustive-deps\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';\nimport { useLogRender } from '../../utils/useLogRender';\n\nfunction Button({ node }: ButtonComponentProps) {\n useLogRender('Button');\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';\nimport { useLogRender } from '../../utils/useLogRender';\n\nfunction Carousel({ node }: CarouselComponentProps) {\n useLogRender('Carousel');\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';\nimport { useLogRender } from '../../utils/useLogRender';\n\nfunction CarouselButtons({ node }: CarouselButtonsComponentProps) {\n useLogRender('CarouselButtons');\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';\nimport { useLogRender } from '../../utils/useLogRender';\n\nfunction CarouselDots({ node }: CarouselDotsComponentProps) {\n useLogRender('CarouselDots');\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';\nimport { useLogRender } from '../../utils/useLogRender';\n\nexport function CarouselItem({ node }: CarouselItemComponentProps) {\n useLogRender('CarouselItem');\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';\nimport { useLogRender } from '../../utils/useLogRender';\n\nfunction Image({ node }: ImageComponentProps) {\n useLogRender('Image');\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';\nimport { useLogRender } from '../../utils/useLogRender';\n\nfunction Onboard({ node }: OnboardComponentProps) {\n useLogRender('Onboard');\n node = useNode(node);\n return <Carousel node={{ ...node, type: 'carousel' } as any} />;\n}\n\nexport default React.memo(Onboard);\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';\nimport { useLogRender } from '../../utils/useLogRender';\n\nexport const onboardContext = createContext<any>(undefined);\nfunction OnboardProvider({ node }: OnboardProviderComponentProps) {\n useLogRender('OnboardProvider');\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';\nimport { useLogRender } from '../../utils/useLogRender';\n\nfunction OnboardButton({ node }: OnboardButtonComponentProps) {\n useLogRender('OnboardButton');\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';\nimport { useLogRender } from '../../utils/useLogRender';\n\nfunction OnboardButtons({ node }: OnboardButtonsComponentProps) {\n useLogRender('OnboardButtons');\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';\nimport { useLogRender } from '../../utils/useLogRender';\n\nfunction OnboardDot({ node }: OnboardDotComponentProps) {\n useLogRender('OnboardDot');\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';\nimport { useLogRender } from '../../utils/useLogRender';\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 useLogRender('OnboardFooter');\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';\nimport { useLogRender } from '../../utils/useLogRender';\n\nfunction OnboardImage({ node }: OnboardImageComponentProps) {\n useLogRender('OnboardImage');\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';\nimport { useLogRender } from '../../utils/useLogRender';\n\nfunction OnboardItem({ node }: OnboardItemComponentProps) {\n useLogRender('OnboardItem');\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';\nimport { useLogRender } from '../../utils/useLogRender';\n\nfunction Text({ node }: TextComponentProps) {\n useLogRender('Text');\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';\nimport { useLogRender } from '../../utils/useLogRender';\n\nfunction OnboardSubtitle({ node }: OnboardSubtitleComponentProps) {\n useLogRender('OnboardSubtitle');\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';\nimport { useLogRender } from '../../utils/useLogRender';\n\nfunction OnboardTitle({ node }: OnboardTitleComponentProps) {\n useLogRender('OnboardTitle');\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';\nimport { useLogRender } from '../../utils/useLogRender';\n\nexport function View({ node }: ViewComponentProps) {\n useLogRender('View');\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 { useLogRender } from './utils/useLogRender';\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 useLogRender('AttributesEditor');\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';\nimport { useLogRender } from './utils/useLogRender';\n\ntype DeviceMockFrameProps = {\n children: React.ReactNode;\n};\n\nexport function DeviceMockFrame({ children }: DeviceMockFrameProps) {\n useLogRender('DeviceMockFrame');\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 { DeviceMockFrame } from './DeviceMockFrame';\nimport { Node } from './types/Node';\nimport { RenderNode } from './build-components';\nimport { useRenderStore } from './store';\nimport { useLogRender } from './utils/useLogRender';\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 useLogRender('RenderPage');\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';\nimport { useLogRender } from '../utils/useLogRender';\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 useLogRender('EditorHeader');\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 '..';\nimport { useLogRender } from '../utils/useLogRender';\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 useLogRender('AttributesEditorPanel');\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';\nimport { useLogRender } from '../utils/useLogRender';\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 useLogRender('Breadcrumb');\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 { useLogRender } from '../utils/useLogRender';\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 useLogRender('Builder');\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 { useLogRender } from '../../utils/useLogRender';\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 useLogRender('BuilderTab');\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&&lt&&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 { useLogRender } from '../../utils/useLogRender';\nimport { useRenderStore } from '../../store';\n\ntype PreviewTabProps = {};\n\nexport function PreviewTab({}: PreviewTabProps) {\n useLogRender('PreviewTab');\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 '../..';\nimport { useLogRender } from '../../utils/useLogRender';\n\ntype DebugTabProps = {\n data: Node;\n setData: (data: Node) => void;\n};\n\nexport function DebugTab({ data, setData }: DebugTabProps) {\n useLogRender('DebugTab');\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';\nimport { logger } from '../utils/logger';\nimport { useLogRender } from '../utils/useLogRender';\nimport type { LogLevel } from '../types/Project';\n\nexport type Tab = 'builder' | 'preview' | 'debug';\n\nexport type ProjectPageProps = {\n project: Project;\n onSaveProject: (project: Project) => void;\n appConfig?: AppConfig;\n logLevel?: LogLevel;\n};\n\nexport function ProjectPage({\n project,\n appConfig = defaultAppConfig,\n onSaveProject,\n logLevel,\n}: ProjectPageProps) {\n useLogRender('ProjectPage');\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 logger.info('ProjectPage', 'mount', { projectName: project.name });\n useRenderStore.getState().setAppConfig(appConfig);\n logger.verbose('ProjectPage', 'appConfig applied', appConfig);\n return () => {\n logger.info('ProjectPage', 'unmount');\n };\n }, [appConfig, project.name]);\n\n useEffect(() => {\n if (!logLevel) return;\n logger.setLevel(logLevel);\n }, [logLevel]);\n\n return (\n <div className=\"container-full\">\n <EditorHeader\n onSaveProject={() => {\n logger.info('ProjectPage', 'save project', { name: project.name });\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={() => {\n setTab('builder');\n logger.info('ProjectPage', 'tab change', { to: 'builder' });\n }}\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={() => {\n setTab('preview');\n logger.info('ProjectPage', 'tab change', { to: 'preview' });\n }}\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={() => {\n setTab('debug');\n logger.info('ProjectPage', 'tab change', { to: 'debug' });\n }}\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 let nodeKey: string | undefined = undefined;\n if (\n data &&\n typeof data === 'object' &&\n !Array.isArray(data) &&\n 'key' in (data as any)\n ) {\n nodeKey = (data as any).key as string | undefined;\n }\n logger.verbose(\n 'ProjectPage',\n 'attributes change',\n nodeKey ? { nodeKey } : undefined,\n );\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","React","require$$0","objectIs","is","x","y","useState","useEffect","useLayoutEffect","useDebugValue","checkIfSnapshotChanged","inst","latestGetSnapshot","getSnapshot","nextValue","error","shim","window","document","createElement","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","useRef","useMemo","withSelector_production","useSyncExternalStoreWithSelector","getServerSnapshot","selector","isEqual","instRef","current","hasValue","memoizedSelector","nextSnapshot","hasMemo","memoizedSnapshot","currentSelection","memoizedSelection","nextSelection","maybeGetServerSnapshot","withSelector_development","withSelectorModule","createStoreImpl","createState","state","listeners","Set","setState","partial","replace","nextState","previousState","assign","forEach","listener","getState","api","getInitialState","initialState","add","delete","createStore","useSyncExternalStoreExports","identity","arg","useStoreWithEqualityFn","equalityFn","slice","createWithEqualityFnImpl","defaultEqualityFn","useBoundStoreWithEqualityFn","createWithEqualityFn","isIterable","obj","Symbol","iterator","hasIterableEntries","compareEntries","valueA","valueB","mapA","Map","entries","mapB","size","key","has","get","compareIterables","iteratorA","iteratorB","nextA","next","nextB","done","shallow","getPrototypeOf","defaultAppConfig","theme","isRtl","screenStyle","light","backgroundColor","color","dark","localication","baseSize","width","height","getDevices","deviceList","devices","sort","a","b","importance","getDefaultDevice","createJSONStorage","getStorage","options","storage","e","persistStorage","getItem","name","_a","parse","str2","JSON","str","Promise","then","setItem","newValue","stringify","removeItem","useRenderStore","set","copiedNode","setCopiedNode","renderCount","forceRender","device","setDevice","appConfig","setAppConfig","logs","logLevel","setLogLevel","level","addLog","entry","now","Date","newEntry","id","Math","random","toString","timestamp","source","payload","clearLogs","persist","partialize","localStorage","levelPriority","ERROR","WARN","INFO","VERBOSE","shouldLog","currentLevel","curr","consoleLog","prefix","warn","info","debug","logger","setLevel","log","verbose","this","clear","useLogRender","sourceName","other","type","useNode","defaults","getDefaultsForType","mergedAttributes","attributes","Button","String","Button$1","memo","isCarouselItem","isArray","Carousel","_jsx","className","map","item","index","RenderNode","Carousel$1","isObject","subject","prototype","call","isRecord","canUseDOM","areOptionsEqual","optionsA","optionsB","optionsAKeys","optionsBKeys","breakpoints","every","sortAndMapPluginToOptions","plugins","concat","plugin","arePluginsEqual","pluginsA","pluginsB","optionA","isNumber","isString","isBoolean","mathAbs","n","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","areObjects","isMouseEvent","evt","ownerWindow","MouseEvent","Alignment","align","viewSize","predefined","start","center","end","self","measure","EventStore","handler","passive","removeListener","addEventListener","removeEventListener","legacyMediaQueryList","addListener","push","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","direction","Limit","min","reachedMin","reachedMax","reachedAny","constrain","removeOffset","ceil","Counter","loop","loopEnd","counter","withinLimit","clone","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","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","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","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","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","getListeners","off","cb","on","defaultOptions","OptionsHandler","mergeOptions","optionsAtMedia","matchedMediaOptions","media","matchMedia","matches","mediaOption","optionsMediaQueries","optionsList","acc","mediaQueries","PluginsHandler","optionsHandler","activePlugins","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","storedPlugins","setEmblaApi","viewport","setViewport","useCallback","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","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","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","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","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","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","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","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","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","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","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","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","projectName","nodeKey"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,12,21,22,23,38,39,62,63,64]}