{"version":3,"file":"app.CNmeuLuJ.mjs","sources":["../../node_modules/@gef1/dax-gefw-host/dist/es/index.mjs","../../node_modules/axios/index.js","../../node_modules/belfius.geui.client.ui-react/dist/components/action-button.js","../../node_modules/belfius.geui.client.ui-react/dist/components/chat-action-button-group.js","../../node_modules/belfius.geui.client.ui-react/dist/components/chat-action-button.js","../../node_modules/belfius.geui.client.ui-react/dist/components/chat-scroll-button.js","../../node_modules/belfius.geui.client.ui-react/dist/components/icon-button.js","../../node_modules/belfius.geui.client.ui-react/dist/components/chat-input.js","../../node_modules/belfius.geui.client.ui-react/dist/components/chat-list.js","../../node_modules/belfius.geui.client.ui-react/dist/components/chat-list-item.js","../../node_modules/belfius.geui.client.ui-react/dist/components/date-picker.js","../../node_modules/belfius.geui.client.ui-react/dist/components/divider.js","../../node_modules/belfius.geui.client.ui-react/dist/components/icon.js","../../node_modules/belfius.geui.client.ui-react/dist/components/markdown.js","../../node_modules/belfius.geui.client.ui-react/dist/components/chat-carousel-card.js","../../node_modules/belfius.geui.client.ui-react/dist/components/chat-carousel-custom-card.js","../../node_modules/belfius.geui.client.ui-react/dist/components/chat-carousel.js","../../node_modules/belfius.geui.client.ui-react/dist/components/chat-carousel-item.js","../../node_modules/belfius.geui.client.ui-react/dist/components/chat-image.js","../../node_modules/belfius.geui.client.ui-react/dist/components/notice.js","../../node_modules/belfius.geui.client.ui-react/dist/components/body-text.js","../../node_modules/belfius.geui.client.ui-react/dist/components/title-text.js","../../node_modules/belfius.geui.client.ui-react/dist/components/chat-bubble.js","../../node_modules/belfius.geui.client.ui-react/dist/components/padder.js","../../node_modules/belfius.geui.client.ui-react/dist/components/alert.js","../src/constants/application.constants.ts","../src/constants/datalayer.constants.ts","../../node_modules/react-use-websocket/dist/lib/constants.js","../../node_modules/react-use-websocket/dist/lib/globals.js","../../node_modules/react-use-websocket/dist/lib/socket-io.js","../../node_modules/react-use-websocket/dist/lib/heartbeat.js","../../node_modules/react-use-websocket/dist/lib/manage-subscribers.js","../../node_modules/react-use-websocket/dist/lib/util.js","../../node_modules/react-use-websocket/dist/lib/attach-listener.js","../../node_modules/react-use-websocket/dist/lib/attach-shared-listeners.js","../../node_modules/react-use-websocket/dist/lib/create-or-join.js","../../node_modules/react-use-websocket/dist/lib/get-url.js","../../node_modules/react-use-websocket/dist/lib/proxy.js","../../node_modules/react-use-websocket/dist/lib/use-websocket.js","../../node_modules/react-use-websocket/dist/lib/use-socket-io.js","../../node_modules/react-use-websocket/dist/lib/use-event-source.js","../../node_modules/react-use-websocket/dist/index.js","../src/constants/error.constants.ts","../src/constants/urls.constants.ts","../src/contexts/datepicker/datepicker-context.ts","../src/contexts/datalayer-context.ts","../src/contexts/flowcontext-context.ts","../src/contexts/mobile-bridge-context.ts","../src/contexts/navigation-context.ts","../src/contexts/pubsub-context.ts","../src/contexts/websocket-factory-context.ts","../src/hooks/use-bot.ts","../src/__generated__/pa-api.ts","../src/utils/common.utils.ts","../src/utils/component.utils.ts","../../node_modules/date-fns/esm/_lib/toInteger/index.js","../../node_modules/date-fns/esm/_lib/requiredArgs/index.js","../../node_modules/date-fns/esm/toDate/index.js","../../node_modules/date-fns/esm/addDays/index.js","../../node_modules/date-fns/esm/addMilliseconds/index.js","../../node_modules/date-fns/esm/_lib/defaultOptions/index.js","../../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","../../node_modules/date-fns/esm/startOfDay/index.js","../../node_modules/date-fns/esm/addSeconds/index.js","../../node_modules/date-fns/esm/isSameDay/index.js","../../node_modules/date-fns/esm/isDate/index.js","../../node_modules/date-fns/esm/isValid/index.js","../../node_modules/date-fns/esm/subMilliseconds/index.js","../../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","../../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","../../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","../../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","../../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","../../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","../../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","../../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","../../node_modules/date-fns/esm/_lib/getUTCWeek/index.js","../../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","../../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","../../node_modules/date-fns/esm/_lib/format/formatters/index.js","../../node_modules/date-fns/esm/_lib/format/longFormatters/index.js","../../node_modules/date-fns/esm/_lib/protectedTokens/index.js","../../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","../../node_modules/date-fns/esm/locale/en-US/index.js","../../node_modules/date-fns/esm/format/index.js","../../node_modules/date-fns/esm/getHours/index.js","../../node_modules/date-fns/esm/isBefore/index.js","../../node_modules/date-fns/esm/isToday/index.js","../../node_modules/date-fns/esm/subDays/index.js","../../node_modules/date-fns/esm/isYesterday/index.js","../../node_modules/date-fns/esm/startOfToday/index.js","../../node_modules/date-fns/esm/subSeconds/index.js","../src/utils/dates/dates.utils.ts","../src/utils/files.utils.ts","../../node_modules/date-fns/esm/locale/fr/_lib/formatDistance/index.js","../../node_modules/date-fns/esm/locale/fr/_lib/formatLong/index.js","../../node_modules/date-fns/esm/locale/fr/_lib/formatRelative/index.js","../../node_modules/date-fns/esm/locale/fr/_lib/localize/index.js","../../node_modules/date-fns/esm/locale/fr/_lib/match/index.js","../../node_modules/date-fns/esm/locale/fr/index.js","../../node_modules/date-fns/esm/locale/nl/_lib/formatDistance/index.js","../../node_modules/date-fns/esm/locale/nl/_lib/formatLong/index.js","../../node_modules/date-fns/esm/locale/nl/_lib/formatRelative/index.js","../../node_modules/date-fns/esm/locale/nl/_lib/localize/index.js","../../node_modules/date-fns/esm/locale/nl/_lib/match/index.js","../../node_modules/date-fns/esm/locale/nl/index.js","../src/utils/locale.utils.ts","../src/utils/mappers.ts","../src/utils/text/text.utils.ts","../src/utils/unhandledCase.ts","../src/hooks/use-messages.ts","../src/hooks/use-chat.ts","../src/hooks/use-dax-navigation.ts","../../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../../node_modules/@babel/runtime/helpers/typeof.js","../../node_modules/date-fns/_lib/requiredArgs/index.js","../../node_modules/date-fns/isDate/index.js","../../node_modules/date-fns/toDate/index.js","../../node_modules/date-fns/isValid/index.js","../../node_modules/date-fns/_lib/toInteger/index.js","../../node_modules/date-fns/addMilliseconds/index.js","../../node_modules/date-fns/subMilliseconds/index.js","../../node_modules/date-fns/_lib/getUTCDayOfYear/index.js","../../node_modules/date-fns/_lib/startOfUTCISOWeek/index.js","../../node_modules/date-fns/_lib/getUTCISOWeekYear/index.js","../../node_modules/date-fns/_lib/startOfUTCISOWeekYear/index.js","../../node_modules/date-fns/_lib/getUTCISOWeek/index.js","../../node_modules/date-fns/_lib/defaultOptions/index.js","../../node_modules/date-fns/_lib/startOfUTCWeek/index.js","../../node_modules/date-fns/_lib/getUTCWeekYear/index.js","../../node_modules/date-fns/_lib/startOfUTCWeekYear/index.js","../../node_modules/date-fns/_lib/getUTCWeek/index.js","../../node_modules/date-fns/_lib/addLeadingZeros/index.js","../../node_modules/date-fns/_lib/format/lightFormatters/index.js","../../node_modules/date-fns/_lib/format/formatters/index.js","../../node_modules/date-fns/_lib/format/longFormatters/index.js","../../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds/index.js","../../node_modules/date-fns/_lib/protectedTokens/index.js","../../node_modules/date-fns/locale/en-US/_lib/formatDistance/index.js","../../node_modules/date-fns/locale/_lib/buildFormatLongFn/index.js","../../node_modules/date-fns/locale/en-US/_lib/formatLong/index.js","../../node_modules/date-fns/locale/en-US/_lib/formatRelative/index.js","../../node_modules/date-fns/locale/_lib/buildLocalizeFn/index.js","../../node_modules/date-fns/locale/en-US/_lib/localize/index.js","../../node_modules/date-fns/locale/_lib/buildMatchFn/index.js","../../node_modules/date-fns/locale/_lib/buildMatchPatternFn/index.js","../../node_modules/date-fns/locale/en-US/_lib/match/index.js","../../node_modules/date-fns/locale/en-US/index.js","../../node_modules/date-fns/_lib/defaultLocale/index.js","../../node_modules/date-fns/format/index.js","../../node_modules/date-fns-tz/esm/_lib/tzIntlTimeZoneName/index.js","../../node_modules/date-fns-tz/esm/_lib/tzTokenizeDate/index.js","../../node_modules/date-fns-tz/esm/_lib/newDateUTC/index.js","../../node_modules/date-fns-tz/esm/_lib/tzParseTimezone/index.js","../../node_modules/date-fns-tz/esm/format/formatters/index.js","../../node_modules/date-fns-tz/esm/_lib/tzPattern/index.js","../../node_modules/date-fns-tz/esm/toDate/index.js","../../node_modules/date-fns-tz/esm/format/index.js","../../node_modules/date-fns/_lib/assign/index.js","../../node_modules/date-fns/_lib/cloneObject/index.js","../../node_modules/date-fns-tz/esm/utcToZonedTime/index.js","../../node_modules/date-fns-tz/esm/formatInTimeZone/index.js","../src/hooks/use-history.ts","../src/assets/icons/broken_image.svg","../src/hooks/use-image-with-fallback.ts","../src/hooks/use-intersection.ts","../src/hooks/use-menu.ts","../src/hooks/use-timeout.ts","../src/components/confirmation/menu-confirmation.tsx","../src/components/action-menu/menu-actions.tsx","../src/components/chat-input/chat-input-container.tsx","../../node_modules/react-swipeable/es/index.js","../../node_modules/lottie-web/build/player/lottie.js","../../node_modules/lottie-react/build/index.es.js","../src/components/chat-elements/loader/loader.tsx","../src/components/chat-elements/avatars/avatar-container/avatar-container.tsx","../src/components/chat-elements/status-message/status-message.tsx","../src/components/chat-elements/history/history-date-label/history-date-label.tsx","../src/components/chat-elements/avatars/kore-avatar/kore-avatar-icon.tsx","../src/components/chat-elements/avatars/initials-avatar/initials-avatar.tsx","../src/components/chat-elements/avatars/avatar.tsx","../src/components/icons/arrow-up-icon.tsx","../src/components/icons/small-close-icon.tsx","../src/components/icons/small-warning-icon.tsx","../src/components/chat-elements/timestamp/timestamp.tsx","../src/components/chat-elements/avatar-and-timestamp/avatar-and-timestamp.tsx","../../node_modules/markdown-to-jsx/dist/index.modern.js","../src/components/chat-elements/pa-markdown/pa-markdown.tsx","../src/components/chat-elements/bubble/bubble.tsx","../src/constants/button.constants.ts","../src/components/chat-elements/chat-button/chat-button.tsx","../src/components/chat-elements/buttons-group/buttons-group.tsx","../src/components/chat-elements/carousel/carousel-element.tsx","../src/components/chat-elements/custom-carousel/chat-custom-carousel-element.tsx","../src/components/chat-elements/image/image-element.tsx","../src/components/chat-elements/list/list-item/list-item.tsx","../src/components/chat-elements/list/list-container.tsx","../src/components/chat-elements/markdown/markdownElement.tsx","../src/components/chat-elements/rounded-buttons/rounded-buttons.tsx","../src/components/chat-elements/separator/separator.tsx","../src/components/chat-elements/chat-element.tsx","../src/components/chat-elements/history/history-part/history-part.tsx","../src/components/chat-elements/history/history-list/history-list.tsx","../src/components/chat-elements/typing-animation/typing-animation.tsx","../src/components/chat-window/chat-window.tsx","../src/components/chat/chat.tsx","../src/components/chat-elements/date-picker/date-picker-element.tsx","../src/components/chat-elements/pull-down-label/pull-down-label.tsx","../src/components/chat-header/chat-header-menu/menu-item/menu-item.tsx","../src/components/chat-header/chat-header-menu/chat-header-menu.tsx","../src/components/chat-header/chat-header.tsx","../src/components/floating-button/floating-button.tsx","../src/components/menu-and-fab/menu-and-fab.tsx","../src/components/tagging/flow.tsx","../src/components/tagging/screen.tsx","../src/contexts/datepicker/datepicker.provider.tsx","../src/contexts/app-context.tsx","../src/components/errors/error-content/error-content.tsx","../src/components/errors/error-page.tsx","../src/pages/chat/bdn-chat.page.tsx","../src/pages/chat/mobile-chat.page.tsx","../src/pages/welcome/welcome.page.tsx","../src/pages/home/home.page.tsx","../src/pages/dev/dev.page.tsx","../src/pages/chat-unavailable/chat-unavailable.page.tsx","../src/pages/dev-login/dev-login.page.tsx","../src/routes.tsx","../src/app.tsx"],"sourcesContent":["function Be(t, e) {\n return function() {\n return t.apply(e, arguments);\n };\n}\nconst { toString: ft } = Object.prototype, { getPrototypeOf: de } = Object, K = /* @__PURE__ */ ((t) => (e) => {\n const n = ft.call(e);\n return t[n] || (t[n] = n.slice(8, -1).toLowerCase());\n})(/* @__PURE__ */ Object.create(null)), N = (t) => (t = t.toLowerCase(), (e) => K(e) === t), G = (t) => (e) => typeof e === t, { isArray: k } = Array, j = G(\"undefined\");\nfunction ht(t) {\n return t !== null && !j(t) && t.constructor !== null && !j(t.constructor) && C(t.constructor.isBuffer) && t.constructor.isBuffer(t);\n}\nconst ve = N(\"ArrayBuffer\");\nfunction pt(t) {\n let e;\n return typeof ArrayBuffer < \"u\" && ArrayBuffer.isView ? e = ArrayBuffer.isView(t) : e = t && t.buffer && ve(t.buffer), e;\n}\nconst mt = G(\"string\"), C = G(\"function\"), je = G(\"number\"), X = (t) => t !== null && typeof t == \"object\", bt = (t) => t === !0 || t === !1, W = (t) => {\n if (K(t) !== \"object\")\n return !1;\n const e = de(t);\n return (e === null || e === Object.prototype || Object.getPrototypeOf(e) === null) && !(Symbol.toStringTag in t) && !(Symbol.iterator in t);\n}, yt = N(\"Date\"), wt = N(\"File\"), Et = N(\"Blob\"), Rt = N(\"FileList\"), gt = (t) => X(t) && C(t.pipe), St = (t) => {\n let e;\n return t && (typeof FormData == \"function\" && t instanceof FormData || C(t.append) && ((e = K(t)) === \"formdata\" || // detect form-data instance\n e === \"object\" && C(t.toString) && t.toString() === \"[object FormData]\"));\n}, Tt = N(\"URLSearchParams\"), [Ot, At, xt, Ct] = [\"ReadableStream\", \"Request\", \"Response\", \"Headers\"].map(N), Nt = (t) => t.trim ? t.trim() : t.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\");\nfunction q(t, e, { allOwnKeys: n = !1 } = {}) {\n if (t === null || typeof t > \"u\")\n return;\n let s, r;\n if (typeof t != \"object\" && (t = [t]), k(t))\n for (s = 0, r = t.length; s < r; s++)\n e.call(null, t[s], s, t);\n else {\n const o = n ? Object.getOwnPropertyNames(t) : Object.keys(t), i = o.length;\n let c;\n for (s = 0; s < i; s++)\n c = o[s], e.call(null, t[c], c, t);\n }\n}\nfunction qe(t, e) {\n e = e.toLowerCase();\n const n = Object.keys(t);\n let s = n.length, r;\n for (; s-- > 0; )\n if (r = n[s], e === r.toLowerCase())\n return r;\n return null;\n}\nconst F = typeof globalThis < \"u\" ? globalThis : typeof self < \"u\" ? self : typeof window < \"u\" ? window : global, Me = (t) => !j(t) && t !== F;\nfunction re() {\n const { caseless: t } = Me(this) && this || {}, e = {}, n = (s, r) => {\n const o = t && qe(e, r) || r;\n W(e[o]) && W(s) ? e[o] = re(e[o], s) : W(s) ? e[o] = re({}, s) : k(s) ? e[o] = s.slice() : e[o] = s;\n };\n for (let s = 0, r = arguments.length; s < r; s++)\n arguments[s] && q(arguments[s], n);\n return e;\n}\nconst Lt = (t, e, n, { allOwnKeys: s } = {}) => (q(e, (r, o) => {\n n && C(r) ? t[o] = Be(r, n) : t[o] = r;\n}, { allOwnKeys: s }), t), Ut = (t) => (t.charCodeAt(0) === 65279 && (t = t.slice(1)), t), Pt = (t, e, n, s) => {\n t.prototype = Object.create(e.prototype, s), t.prototype.constructor = t, Object.defineProperty(t, \"super\", {\n value: e.prototype\n }), n && Object.assign(t.prototype, n);\n}, It = (t, e, n, s) => {\n let r, o, i;\n const c = {};\n if (e = e || {}, t == null) return e;\n do {\n for (r = Object.getOwnPropertyNames(t), o = r.length; o-- > 0; )\n i = r[o], (!s || s(i, t, e)) && !c[i] && (e[i] = t[i], c[i] = !0);\n t = n !== !1 && de(t);\n } while (t && (!n || n(t, e)) && t !== Object.prototype);\n return e;\n}, Ft = (t, e, n) => {\n t = String(t), (n === void 0 || n > t.length) && (n = t.length), n -= e.length;\n const s = t.indexOf(e, n);\n return s !== -1 && s === n;\n}, Dt = (t) => {\n if (!t) return null;\n if (k(t)) return t;\n let e = t.length;\n if (!je(e)) return null;\n const n = new Array(e);\n for (; e-- > 0; )\n n[e] = t[e];\n return n;\n}, _t = /* @__PURE__ */ ((t) => (e) => t && e instanceof t)(typeof Uint8Array < \"u\" && de(Uint8Array)), kt = (t, e) => {\n const s = (t && t[Symbol.iterator]).call(t);\n let r;\n for (; (r = s.next()) && !r.done; ) {\n const o = r.value;\n e.call(t, o[0], o[1]);\n }\n}, Bt = (t, e) => {\n let n;\n const s = [];\n for (; (n = t.exec(e)) !== null; )\n s.push(n);\n return s;\n}, vt = N(\"HTMLFormElement\"), jt = (t) => t.toLowerCase().replace(\n /[-_\\s]([a-z\\d])(\\w*)/g,\n function(n, s, r) {\n return s.toUpperCase() + r;\n }\n), ye = (({ hasOwnProperty: t }) => (e, n) => t.call(e, n))(Object.prototype), qt = N(\"RegExp\"), He = (t, e) => {\n const n = Object.getOwnPropertyDescriptors(t), s = {};\n q(n, (r, o) => {\n let i;\n (i = e(r, o, t)) !== !1 && (s[o] = i || r);\n }), Object.defineProperties(t, s);\n}, Mt = (t) => {\n He(t, (e, n) => {\n if (C(t) && [\"arguments\", \"caller\", \"callee\"].indexOf(n) !== -1)\n return !1;\n const s = t[n];\n if (C(s)) {\n if (e.enumerable = !1, \"writable\" in e) {\n e.writable = !1;\n return;\n }\n e.set || (e.set = () => {\n throw Error(\"Can not rewrite read-only method '\" + n + \"'\");\n });\n }\n });\n}, Ht = (t, e) => {\n const n = {}, s = (r) => {\n r.forEach((o) => {\n n[o] = !0;\n });\n };\n return k(t) ? s(t) : s(String(t).split(e)), n;\n}, Wt = () => {\n}, $t = (t, e) => t != null && Number.isFinite(t = +t) ? t : e, ee = \"abcdefghijklmnopqrstuvwxyz\", we = \"0123456789\", We = {\n DIGIT: we,\n ALPHA: ee,\n ALPHA_DIGIT: ee + ee.toUpperCase() + we\n}, Vt = (t = 16, e = We.ALPHA_DIGIT) => {\n let n = \"\";\n const { length: s } = e;\n for (; t--; )\n n += e[Math.random() * s | 0];\n return n;\n};\nfunction zt(t) {\n return !!(t && C(t.append) && t[Symbol.toStringTag] === \"FormData\" && t[Symbol.iterator]);\n}\nconst Jt = (t) => {\n const e = new Array(10), n = (s, r) => {\n if (X(s)) {\n if (e.indexOf(s) >= 0)\n return;\n if (!(\"toJSON\" in s)) {\n e[r] = s;\n const o = k(s) ? [] : {};\n return q(s, (i, c) => {\n const d = n(i, r + 1);\n !j(d) && (o[c] = d);\n }), e[r] = void 0, o;\n }\n }\n return s;\n };\n return n(t, 0);\n}, Kt = N(\"AsyncFunction\"), Gt = (t) => t && (X(t) || C(t)) && C(t.then) && C(t.catch), $e = ((t, e) => t ? setImmediate : e ? ((n, s) => (F.addEventListener(\"message\", ({ source: r, data: o }) => {\n r === F && o === n && s.length && s.shift()();\n}, !1), (r) => {\n s.push(r), F.postMessage(n, \"*\");\n}))(`axios@${Math.random()}`, []) : (n) => setTimeout(n))(\n typeof setImmediate == \"function\",\n C(F.postMessage)\n), Xt = typeof queueMicrotask < \"u\" ? queueMicrotask.bind(F) : typeof process < \"u\" && process.nextTick || $e, a = {\n isArray: k,\n isArrayBuffer: ve,\n isBuffer: ht,\n isFormData: St,\n isArrayBufferView: pt,\n isString: mt,\n isNumber: je,\n isBoolean: bt,\n isObject: X,\n isPlainObject: W,\n isReadableStream: Ot,\n isRequest: At,\n isResponse: xt,\n isHeaders: Ct,\n isUndefined: j,\n isDate: yt,\n isFile: wt,\n isBlob: Et,\n isRegExp: qt,\n isFunction: C,\n isStream: gt,\n isURLSearchParams: Tt,\n isTypedArray: _t,\n isFileList: Rt,\n forEach: q,\n merge: re,\n extend: Lt,\n trim: Nt,\n stripBOM: Ut,\n inherits: Pt,\n toFlatObject: It,\n kindOf: K,\n kindOfTest: N,\n endsWith: Ft,\n toArray: Dt,\n forEachEntry: kt,\n matchAll: Bt,\n isHTMLForm: vt,\n hasOwnProperty: ye,\n hasOwnProp: ye,\n // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors: He,\n freezeMethods: Mt,\n toObjectSet: Ht,\n toCamelCase: jt,\n noop: Wt,\n toFiniteNumber: $t,\n findKey: qe,\n global: F,\n isContextDefined: Me,\n ALPHABET: We,\n generateString: Vt,\n isSpecCompliantForm: zt,\n toJSONObject: Jt,\n isAsyncFn: Kt,\n isThenable: Gt,\n setImmediate: $e,\n asap: Xt\n};\nfunction b(t, e, n, s, r) {\n Error.call(this), Error.captureStackTrace ? Error.captureStackTrace(this, this.constructor) : this.stack = new Error().stack, this.message = t, this.name = \"AxiosError\", e && (this.code = e), n && (this.config = n), s && (this.request = s), r && (this.response = r, this.status = r.status ? r.status : null);\n}\na.inherits(b, Error, {\n toJSON: function() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: a.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\nconst Ve = b.prototype, ze = {};\n[\n \"ERR_BAD_OPTION_VALUE\",\n \"ERR_BAD_OPTION\",\n \"ECONNABORTED\",\n \"ETIMEDOUT\",\n \"ERR_NETWORK\",\n \"ERR_FR_TOO_MANY_REDIRECTS\",\n \"ERR_DEPRECATED\",\n \"ERR_BAD_RESPONSE\",\n \"ERR_BAD_REQUEST\",\n \"ERR_CANCELED\",\n \"ERR_NOT_SUPPORT\",\n \"ERR_INVALID_URL\"\n // eslint-disable-next-line func-names\n].forEach((t) => {\n ze[t] = { value: t };\n});\nObject.defineProperties(b, ze);\nObject.defineProperty(Ve, \"isAxiosError\", { value: !0 });\nb.from = (t, e, n, s, r, o) => {\n const i = Object.create(Ve);\n return a.toFlatObject(t, i, function(d) {\n return d !== Error.prototype;\n }, (c) => c !== \"isAxiosError\"), b.call(i, t.message, e, n, s, r), i.cause = t, i.name = t.name, o && Object.assign(i, o), i;\n};\nconst Qt = null;\nfunction oe(t) {\n return a.isPlainObject(t) || a.isArray(t);\n}\nfunction Je(t) {\n return a.endsWith(t, \"[]\") ? t.slice(0, -2) : t;\n}\nfunction Ee(t, e, n) {\n return t ? t.concat(e).map(function(r, o) {\n return r = Je(r), !n && o ? \"[\" + r + \"]\" : r;\n }).join(n ? \".\" : \"\") : e;\n}\nfunction Zt(t) {\n return a.isArray(t) && !t.some(oe);\n}\nconst Yt = a.toFlatObject(a, {}, null, function(e) {\n return /^is[A-Z]/.test(e);\n});\nfunction Q(t, e, n) {\n if (!a.isObject(t))\n throw new TypeError(\"target must be an object\");\n e = e || new FormData(), n = a.toFlatObject(n, {\n metaTokens: !0,\n dots: !1,\n indexes: !1\n }, !1, function(m, p) {\n return !a.isUndefined(p[m]);\n });\n const s = n.metaTokens, r = n.visitor || u, o = n.dots, i = n.indexes, d = (n.Blob || typeof Blob < \"u\" && Blob) && a.isSpecCompliantForm(e);\n if (!a.isFunction(r))\n throw new TypeError(\"visitor must be a function\");\n function l(f) {\n if (f === null) return \"\";\n if (a.isDate(f))\n return f.toISOString();\n if (!d && a.isBlob(f))\n throw new b(\"Blob is not supported. Use a Buffer instead.\");\n return a.isArrayBuffer(f) || a.isTypedArray(f) ? d && typeof Blob == \"function\" ? new Blob([f]) : Buffer.from(f) : f;\n }\n function u(f, m, p) {\n let E = f;\n if (f && !p && typeof f == \"object\") {\n if (a.endsWith(m, \"{}\"))\n m = s ? m : m.slice(0, -2), f = JSON.stringify(f);\n else if (a.isArray(f) && Zt(f) || (a.isFileList(f) || a.endsWith(m, \"[]\")) && (E = a.toArray(f)))\n return m = Je(m), E.forEach(function(T, U) {\n !(a.isUndefined(T) || T === null) && e.append(\n // eslint-disable-next-line no-nested-ternary\n i === !0 ? Ee([m], U, o) : i === null ? m : m + \"[]\",\n l(T)\n );\n }), !1;\n }\n return oe(f) ? !0 : (e.append(Ee(p, m, o), l(f)), !1);\n }\n const h = [], y = Object.assign(Yt, {\n defaultVisitor: u,\n convertValue: l,\n isVisitable: oe\n });\n function w(f, m) {\n if (!a.isUndefined(f)) {\n if (h.indexOf(f) !== -1)\n throw Error(\"Circular reference detected in \" + m.join(\".\"));\n h.push(f), a.forEach(f, function(E, S) {\n (!(a.isUndefined(E) || E === null) && r.call(\n e,\n E,\n a.isString(S) ? S.trim() : S,\n m,\n y\n )) === !0 && w(E, m ? m.concat(S) : [S]);\n }), h.pop();\n }\n }\n if (!a.isObject(t))\n throw new TypeError(\"data must be an object\");\n return w(t), e;\n}\nfunction Re(t) {\n const e = {\n \"!\": \"%21\",\n \"'\": \"%27\",\n \"(\": \"%28\",\n \")\": \"%29\",\n \"~\": \"%7E\",\n \"%20\": \"+\",\n \"%00\": \"\\0\"\n };\n return encodeURIComponent(t).replace(/[!'()~]|%20|%00/g, function(s) {\n return e[s];\n });\n}\nfunction fe(t, e) {\n this._pairs = [], t && Q(t, this, e);\n}\nconst Ke = fe.prototype;\nKe.append = function(e, n) {\n this._pairs.push([e, n]);\n};\nKe.toString = function(e) {\n const n = e ? function(s) {\n return e.call(this, s, Re);\n } : Re;\n return this._pairs.map(function(r) {\n return n(r[0]) + \"=\" + n(r[1]);\n }, \"\").join(\"&\");\n};\nfunction en(t) {\n return encodeURIComponent(t).replace(/%3A/gi, \":\").replace(/%24/g, \"$\").replace(/%2C/gi, \",\").replace(/%20/g, \"+\").replace(/%5B/gi, \"[\").replace(/%5D/gi, \"]\");\n}\nfunction Ge(t, e, n) {\n if (!e)\n return t;\n const s = n && n.encode || en;\n a.isFunction(n) && (n = {\n serialize: n\n });\n const r = n && n.serialize;\n let o;\n if (r ? o = r(e, n) : o = a.isURLSearchParams(e) ? e.toString() : new fe(e, n).toString(s), o) {\n const i = t.indexOf(\"#\");\n i !== -1 && (t = t.slice(0, i)), t += (t.indexOf(\"?\") === -1 ? \"?\" : \"&\") + o;\n }\n return t;\n}\nclass ge {\n constructor() {\n this.handlers = [];\n }\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(e, n, s) {\n return this.handlers.push({\n fulfilled: e,\n rejected: n,\n synchronous: s ? s.synchronous : !1,\n runWhen: s ? s.runWhen : null\n }), this.handlers.length - 1;\n }\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(e) {\n this.handlers[e] && (this.handlers[e] = null);\n }\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n this.handlers && (this.handlers = []);\n }\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(e) {\n a.forEach(this.handlers, function(s) {\n s !== null && e(s);\n });\n }\n}\nconst Xe = {\n silentJSONParsing: !0,\n forcedJSONParsing: !0,\n clarifyTimeoutError: !1\n}, tn = typeof URLSearchParams < \"u\" ? URLSearchParams : fe, nn = typeof FormData < \"u\" ? FormData : null, sn = typeof Blob < \"u\" ? Blob : null, rn = {\n isBrowser: !0,\n classes: {\n URLSearchParams: tn,\n FormData: nn,\n Blob: sn\n },\n protocols: [\"http\", \"https\", \"file\", \"blob\", \"url\", \"data\"]\n}, he = typeof window < \"u\" && typeof document < \"u\", ie = typeof navigator == \"object\" && navigator || void 0, on = he && (!ie || [\"ReactNative\", \"NativeScript\", \"NS\"].indexOf(ie.product) < 0), an = typeof WorkerGlobalScope < \"u\" && // eslint-disable-next-line no-undef\nself instanceof WorkerGlobalScope && typeof self.importScripts == \"function\", cn = he && window.location.href || \"http://localhost\", ln = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n hasBrowserEnv: he,\n hasStandardBrowserEnv: on,\n hasStandardBrowserWebWorkerEnv: an,\n navigator: ie,\n origin: cn\n}, Symbol.toStringTag, { value: \"Module\" })), O = {\n ...ln,\n ...rn\n};\nfunction un(t, e) {\n return Q(t, new O.classes.URLSearchParams(), Object.assign({\n visitor: function(n, s, r, o) {\n return O.isNode && a.isBuffer(n) ? (this.append(s, n.toString(\"base64\")), !1) : o.defaultVisitor.apply(this, arguments);\n }\n }, e));\n}\nfunction dn(t) {\n return a.matchAll(/\\w+|\\[(\\w*)]/g, t).map((e) => e[0] === \"[]\" ? \"\" : e[1] || e[0]);\n}\nfunction fn(t) {\n const e = {}, n = Object.keys(t);\n let s;\n const r = n.length;\n let o;\n for (s = 0; s < r; s++)\n o = n[s], e[o] = t[o];\n return e;\n}\nfunction Qe(t) {\n function e(n, s, r, o) {\n let i = n[o++];\n if (i === \"__proto__\") return !0;\n const c = Number.isFinite(+i), d = o >= n.length;\n return i = !i && a.isArray(r) ? r.length : i, d ? (a.hasOwnProp(r, i) ? r[i] = [r[i], s] : r[i] = s, !c) : ((!r[i] || !a.isObject(r[i])) && (r[i] = []), e(n, s, r[i], o) && a.isArray(r[i]) && (r[i] = fn(r[i])), !c);\n }\n if (a.isFormData(t) && a.isFunction(t.entries)) {\n const n = {};\n return a.forEachEntry(t, (s, r) => {\n e(dn(s), r, n, 0);\n }), n;\n }\n return null;\n}\nfunction hn(t, e, n) {\n if (a.isString(t))\n try {\n return (0, JSON.parse)(t), a.trim(t);\n } catch (s) {\n if (s.name !== \"SyntaxError\")\n throw s;\n }\n return (n || JSON.stringify)(t);\n}\nconst M = {\n transitional: Xe,\n adapter: [\"xhr\", \"http\", \"fetch\"],\n transformRequest: [function(e, n) {\n const s = n.getContentType() || \"\", r = s.indexOf(\"application/json\") > -1, o = a.isObject(e);\n if (o && a.isHTMLForm(e) && (e = new FormData(e)), a.isFormData(e))\n return r ? JSON.stringify(Qe(e)) : e;\n if (a.isArrayBuffer(e) || a.isBuffer(e) || a.isStream(e) || a.isFile(e) || a.isBlob(e) || a.isReadableStream(e))\n return e;\n if (a.isArrayBufferView(e))\n return e.buffer;\n if (a.isURLSearchParams(e))\n return n.setContentType(\"application/x-www-form-urlencoded;charset=utf-8\", !1), e.toString();\n let c;\n if (o) {\n if (s.indexOf(\"application/x-www-form-urlencoded\") > -1)\n return un(e, this.formSerializer).toString();\n if ((c = a.isFileList(e)) || s.indexOf(\"multipart/form-data\") > -1) {\n const d = this.env && this.env.FormData;\n return Q(\n c ? { \"files[]\": e } : e,\n d && new d(),\n this.formSerializer\n );\n }\n }\n return o || r ? (n.setContentType(\"application/json\", !1), hn(e)) : e;\n }],\n transformResponse: [function(e) {\n const n = this.transitional || M.transitional, s = n && n.forcedJSONParsing, r = this.responseType === \"json\";\n if (a.isResponse(e) || a.isReadableStream(e))\n return e;\n if (e && a.isString(e) && (s && !this.responseType || r)) {\n const i = !(n && n.silentJSONParsing) && r;\n try {\n return JSON.parse(e);\n } catch (c) {\n if (i)\n throw c.name === \"SyntaxError\" ? b.from(c, b.ERR_BAD_RESPONSE, this, null, this.response) : c;\n }\n }\n return e;\n }],\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n xsrfCookieName: \"XSRF-TOKEN\",\n xsrfHeaderName: \"X-XSRF-TOKEN\",\n maxContentLength: -1,\n maxBodyLength: -1,\n env: {\n FormData: O.classes.FormData,\n Blob: O.classes.Blob\n },\n validateStatus: function(e) {\n return e >= 200 && e < 300;\n },\n headers: {\n common: {\n Accept: \"application/json, text/plain, */*\",\n \"Content-Type\": void 0\n }\n }\n};\na.forEach([\"delete\", \"get\", \"head\", \"post\", \"put\", \"patch\"], (t) => {\n M.headers[t] = {};\n});\nconst pn = a.toObjectSet([\n \"age\",\n \"authorization\",\n \"content-length\",\n \"content-type\",\n \"etag\",\n \"expires\",\n \"from\",\n \"host\",\n \"if-modified-since\",\n \"if-unmodified-since\",\n \"last-modified\",\n \"location\",\n \"max-forwards\",\n \"proxy-authorization\",\n \"referer\",\n \"retry-after\",\n \"user-agent\"\n]), mn = (t) => {\n const e = {};\n let n, s, r;\n return t && t.split(`\n`).forEach(function(i) {\n r = i.indexOf(\":\"), n = i.substring(0, r).trim().toLowerCase(), s = i.substring(r + 1).trim(), !(!n || e[n] && pn[n]) && (n === \"set-cookie\" ? e[n] ? e[n].push(s) : e[n] = [s] : e[n] = e[n] ? e[n] + \", \" + s : s);\n }), e;\n}, Se = Symbol(\"internals\");\nfunction v(t) {\n return t && String(t).trim().toLowerCase();\n}\nfunction $(t) {\n return t === !1 || t == null ? t : a.isArray(t) ? t.map($) : String(t);\n}\nfunction bn(t) {\n const e = /* @__PURE__ */ Object.create(null), n = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let s;\n for (; s = n.exec(t); )\n e[s[1]] = s[2];\n return e;\n}\nconst yn = (t) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(t.trim());\nfunction te(t, e, n, s, r) {\n if (a.isFunction(s))\n return s.call(this, e, n);\n if (r && (e = n), !!a.isString(e)) {\n if (a.isString(s))\n return e.indexOf(s) !== -1;\n if (a.isRegExp(s))\n return s.test(e);\n }\n}\nfunction wn(t) {\n return t.trim().toLowerCase().replace(/([a-z\\d])(\\w*)/g, (e, n, s) => n.toUpperCase() + s);\n}\nfunction En(t, e) {\n const n = a.toCamelCase(\" \" + e);\n [\"get\", \"set\", \"has\"].forEach((s) => {\n Object.defineProperty(t, s + n, {\n value: function(r, o, i) {\n return this[s].call(this, e, r, o, i);\n },\n configurable: !0\n });\n });\n}\nclass x {\n constructor(e) {\n e && this.set(e);\n }\n set(e, n, s) {\n const r = this;\n function o(c, d, l) {\n const u = v(d);\n if (!u)\n throw new Error(\"header name must be a non-empty string\");\n const h = a.findKey(r, u);\n (!h || r[h] === void 0 || l === !0 || l === void 0 && r[h] !== !1) && (r[h || d] = $(c));\n }\n const i = (c, d) => a.forEach(c, (l, u) => o(l, u, d));\n if (a.isPlainObject(e) || e instanceof this.constructor)\n i(e, n);\n else if (a.isString(e) && (e = e.trim()) && !yn(e))\n i(mn(e), n);\n else if (a.isHeaders(e))\n for (const [c, d] of e.entries())\n o(d, c, s);\n else\n e != null && o(n, e, s);\n return this;\n }\n get(e, n) {\n if (e = v(e), e) {\n const s = a.findKey(this, e);\n if (s) {\n const r = this[s];\n if (!n)\n return r;\n if (n === !0)\n return bn(r);\n if (a.isFunction(n))\n return n.call(this, r, s);\n if (a.isRegExp(n))\n return n.exec(r);\n throw new TypeError(\"parser must be boolean|regexp|function\");\n }\n }\n }\n has(e, n) {\n if (e = v(e), e) {\n const s = a.findKey(this, e);\n return !!(s && this[s] !== void 0 && (!n || te(this, this[s], s, n)));\n }\n return !1;\n }\n delete(e, n) {\n const s = this;\n let r = !1;\n function o(i) {\n if (i = v(i), i) {\n const c = a.findKey(s, i);\n c && (!n || te(s, s[c], c, n)) && (delete s[c], r = !0);\n }\n }\n return a.isArray(e) ? e.forEach(o) : o(e), r;\n }\n clear(e) {\n const n = Object.keys(this);\n let s = n.length, r = !1;\n for (; s--; ) {\n const o = n[s];\n (!e || te(this, this[o], o, e, !0)) && (delete this[o], r = !0);\n }\n return r;\n }\n normalize(e) {\n const n = this, s = {};\n return a.forEach(this, (r, o) => {\n const i = a.findKey(s, o);\n if (i) {\n n[i] = $(r), delete n[o];\n return;\n }\n const c = e ? wn(o) : String(o).trim();\n c !== o && delete n[o], n[c] = $(r), s[c] = !0;\n }), this;\n }\n concat(...e) {\n return this.constructor.concat(this, ...e);\n }\n toJSON(e) {\n const n = /* @__PURE__ */ Object.create(null);\n return a.forEach(this, (s, r) => {\n s != null && s !== !1 && (n[r] = e && a.isArray(s) ? s.join(\", \") : s);\n }), n;\n }\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n toString() {\n return Object.entries(this.toJSON()).map(([e, n]) => e + \": \" + n).join(`\n`);\n }\n get [Symbol.toStringTag]() {\n return \"AxiosHeaders\";\n }\n static from(e) {\n return e instanceof this ? e : new this(e);\n }\n static concat(e, ...n) {\n const s = new this(e);\n return n.forEach((r) => s.set(r)), s;\n }\n static accessor(e) {\n const s = (this[Se] = this[Se] = {\n accessors: {}\n }).accessors, r = this.prototype;\n function o(i) {\n const c = v(i);\n s[c] || (En(r, i), s[c] = !0);\n }\n return a.isArray(e) ? e.forEach(o) : o(e), this;\n }\n}\nx.accessor([\"Content-Type\", \"Content-Length\", \"Accept\", \"Accept-Encoding\", \"User-Agent\", \"Authorization\"]);\na.reduceDescriptors(x.prototype, ({ value: t }, e) => {\n let n = e[0].toUpperCase() + e.slice(1);\n return {\n get: () => t,\n set(s) {\n this[n] = s;\n }\n };\n});\na.freezeMethods(x);\nfunction ne(t, e) {\n const n = this || M, s = e || n, r = x.from(s.headers);\n let o = s.data;\n return a.forEach(t, function(c) {\n o = c.call(n, o, r.normalize(), e ? e.status : void 0);\n }), r.normalize(), o;\n}\nfunction Ze(t) {\n return !!(t && t.__CANCEL__);\n}\nfunction B(t, e, n) {\n b.call(this, t ?? \"canceled\", b.ERR_CANCELED, e, n), this.name = \"CanceledError\";\n}\na.inherits(B, b, {\n __CANCEL__: !0\n});\nfunction Ye(t, e, n) {\n const s = n.config.validateStatus;\n !n.status || !s || s(n.status) ? t(n) : e(new b(\n \"Request failed with status code \" + n.status,\n [b.ERR_BAD_REQUEST, b.ERR_BAD_RESPONSE][Math.floor(n.status / 100) - 4],\n n.config,\n n.request,\n n\n ));\n}\nfunction Rn(t) {\n const e = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(t);\n return e && e[1] || \"\";\n}\nfunction gn(t, e) {\n t = t || 10;\n const n = new Array(t), s = new Array(t);\n let r = 0, o = 0, i;\n return e = e !== void 0 ? e : 1e3, function(d) {\n const l = Date.now(), u = s[o];\n i || (i = l), n[r] = d, s[r] = l;\n let h = o, y = 0;\n for (; h !== r; )\n y += n[h++], h = h % t;\n if (r = (r + 1) % t, r === o && (o = (o + 1) % t), l - i < e)\n return;\n const w = u && l - u;\n return w ? Math.round(y * 1e3 / w) : void 0;\n };\n}\nfunction Sn(t, e) {\n let n = 0, s = 1e3 / e, r, o;\n const i = (l, u = Date.now()) => {\n n = u, r = null, o && (clearTimeout(o), o = null), t.apply(null, l);\n };\n return [(...l) => {\n const u = Date.now(), h = u - n;\n h >= s ? i(l, u) : (r = l, o || (o = setTimeout(() => {\n o = null, i(r);\n }, s - h)));\n }, () => r && i(r)];\n}\nconst z = (t, e, n = 3) => {\n let s = 0;\n const r = gn(50, 250);\n return Sn((o) => {\n const i = o.loaded, c = o.lengthComputable ? o.total : void 0, d = i - s, l = r(d), u = i <= c;\n s = i;\n const h = {\n loaded: i,\n total: c,\n progress: c ? i / c : void 0,\n bytes: d,\n rate: l || void 0,\n estimated: l && c && u ? (c - i) / l : void 0,\n event: o,\n lengthComputable: c != null,\n [e ? \"download\" : \"upload\"]: !0\n };\n t(h);\n }, n);\n}, Te = (t, e) => {\n const n = t != null;\n return [(s) => e[0]({\n lengthComputable: n,\n total: t,\n loaded: s\n }), e[1]];\n}, Oe = (t) => (...e) => a.asap(() => t(...e)), Tn = O.hasStandardBrowserEnv ? /* @__PURE__ */ ((t, e) => (n) => (n = new URL(n, O.origin), t.protocol === n.protocol && t.host === n.host && (e || t.port === n.port)))(\n new URL(O.origin),\n O.navigator && /(msie|trident)/i.test(O.navigator.userAgent)\n) : () => !0, On = O.hasStandardBrowserEnv ? (\n // Standard browser envs support document.cookie\n {\n write(t, e, n, s, r, o) {\n const i = [t + \"=\" + encodeURIComponent(e)];\n a.isNumber(n) && i.push(\"expires=\" + new Date(n).toGMTString()), a.isString(s) && i.push(\"path=\" + s), a.isString(r) && i.push(\"domain=\" + r), o === !0 && i.push(\"secure\"), document.cookie = i.join(\"; \");\n },\n read(t) {\n const e = document.cookie.match(new RegExp(\"(^|;\\\\s*)(\" + t + \")=([^;]*)\"));\n return e ? decodeURIComponent(e[3]) : null;\n },\n remove(t) {\n this.write(t, \"\", Date.now() - 864e5);\n }\n }\n) : (\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {\n },\n read() {\n return null;\n },\n remove() {\n }\n }\n);\nfunction An(t) {\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(t);\n}\nfunction xn(t, e) {\n return e ? t.replace(/\\/?\\/$/, \"\") + \"/\" + e.replace(/^\\/+/, \"\") : t;\n}\nfunction et(t, e) {\n return t && !An(e) ? xn(t, e) : e;\n}\nconst Ae = (t) => t instanceof x ? { ...t } : t;\nfunction _(t, e) {\n e = e || {};\n const n = {};\n function s(l, u, h, y) {\n return a.isPlainObject(l) && a.isPlainObject(u) ? a.merge.call({ caseless: y }, l, u) : a.isPlainObject(u) ? a.merge({}, u) : a.isArray(u) ? u.slice() : u;\n }\n function r(l, u, h, y) {\n if (a.isUndefined(u)) {\n if (!a.isUndefined(l))\n return s(void 0, l, h, y);\n } else return s(l, u, h, y);\n }\n function o(l, u) {\n if (!a.isUndefined(u))\n return s(void 0, u);\n }\n function i(l, u) {\n if (a.isUndefined(u)) {\n if (!a.isUndefined(l))\n return s(void 0, l);\n } else return s(void 0, u);\n }\n function c(l, u, h) {\n if (h in e)\n return s(l, u);\n if (h in t)\n return s(void 0, l);\n }\n const d = {\n url: o,\n method: o,\n data: o,\n baseURL: i,\n transformRequest: i,\n transformResponse: i,\n paramsSerializer: i,\n timeout: i,\n timeoutMessage: i,\n withCredentials: i,\n withXSRFToken: i,\n adapter: i,\n responseType: i,\n xsrfCookieName: i,\n xsrfHeaderName: i,\n onUploadProgress: i,\n onDownloadProgress: i,\n decompress: i,\n maxContentLength: i,\n maxBodyLength: i,\n beforeRedirect: i,\n transport: i,\n httpAgent: i,\n httpsAgent: i,\n cancelToken: i,\n socketPath: i,\n responseEncoding: i,\n validateStatus: c,\n headers: (l, u, h) => r(Ae(l), Ae(u), h, !0)\n };\n return a.forEach(Object.keys(Object.assign({}, t, e)), function(u) {\n const h = d[u] || r, y = h(t[u], e[u], u);\n a.isUndefined(y) && h !== c || (n[u] = y);\n }), n;\n}\nconst tt = (t) => {\n const e = _({}, t);\n let { data: n, withXSRFToken: s, xsrfHeaderName: r, xsrfCookieName: o, headers: i, auth: c } = e;\n e.headers = i = x.from(i), e.url = Ge(et(e.baseURL, e.url), t.params, t.paramsSerializer), c && i.set(\n \"Authorization\",\n \"Basic \" + btoa((c.username || \"\") + \":\" + (c.password ? unescape(encodeURIComponent(c.password)) : \"\"))\n );\n let d;\n if (a.isFormData(n)) {\n if (O.hasStandardBrowserEnv || O.hasStandardBrowserWebWorkerEnv)\n i.setContentType(void 0);\n else if ((d = i.getContentType()) !== !1) {\n const [l, ...u] = d ? d.split(\";\").map((h) => h.trim()).filter(Boolean) : [];\n i.setContentType([l || \"multipart/form-data\", ...u].join(\"; \"));\n }\n }\n if (O.hasStandardBrowserEnv && (s && a.isFunction(s) && (s = s(e)), s || s !== !1 && Tn(e.url))) {\n const l = r && o && On.read(o);\n l && i.set(r, l);\n }\n return e;\n}, Cn = typeof XMLHttpRequest < \"u\", Nn = Cn && function(t) {\n return new Promise(function(n, s) {\n const r = tt(t);\n let o = r.data;\n const i = x.from(r.headers).normalize();\n let { responseType: c, onUploadProgress: d, onDownloadProgress: l } = r, u, h, y, w, f;\n function m() {\n w && w(), f && f(), r.cancelToken && r.cancelToken.unsubscribe(u), r.signal && r.signal.removeEventListener(\"abort\", u);\n }\n let p = new XMLHttpRequest();\n p.open(r.method.toUpperCase(), r.url, !0), p.timeout = r.timeout;\n function E() {\n if (!p)\n return;\n const T = x.from(\n \"getAllResponseHeaders\" in p && p.getAllResponseHeaders()\n ), A = {\n data: !c || c === \"text\" || c === \"json\" ? p.responseText : p.response,\n status: p.status,\n statusText: p.statusText,\n headers: T,\n config: t,\n request: p\n };\n Ye(function(I) {\n n(I), m();\n }, function(I) {\n s(I), m();\n }, A), p = null;\n }\n \"onloadend\" in p ? p.onloadend = E : p.onreadystatechange = function() {\n !p || p.readyState !== 4 || p.status === 0 && !(p.responseURL && p.responseURL.indexOf(\"file:\") === 0) || setTimeout(E);\n }, p.onabort = function() {\n p && (s(new b(\"Request aborted\", b.ECONNABORTED, t, p)), p = null);\n }, p.onerror = function() {\n s(new b(\"Network Error\", b.ERR_NETWORK, t, p)), p = null;\n }, p.ontimeout = function() {\n let U = r.timeout ? \"timeout of \" + r.timeout + \"ms exceeded\" : \"timeout exceeded\";\n const A = r.transitional || Xe;\n r.timeoutErrorMessage && (U = r.timeoutErrorMessage), s(new b(\n U,\n A.clarifyTimeoutError ? b.ETIMEDOUT : b.ECONNABORTED,\n t,\n p\n )), p = null;\n }, o === void 0 && i.setContentType(null), \"setRequestHeader\" in p && a.forEach(i.toJSON(), function(U, A) {\n p.setRequestHeader(A, U);\n }), a.isUndefined(r.withCredentials) || (p.withCredentials = !!r.withCredentials), c && c !== \"json\" && (p.responseType = r.responseType), l && ([y, f] = z(l, !0), p.addEventListener(\"progress\", y)), d && p.upload && ([h, w] = z(d), p.upload.addEventListener(\"progress\", h), p.upload.addEventListener(\"loadend\", w)), (r.cancelToken || r.signal) && (u = (T) => {\n p && (s(!T || T.type ? new B(null, t, p) : T), p.abort(), p = null);\n }, r.cancelToken && r.cancelToken.subscribe(u), r.signal && (r.signal.aborted ? u() : r.signal.addEventListener(\"abort\", u)));\n const S = Rn(r.url);\n if (S && O.protocols.indexOf(S) === -1) {\n s(new b(\"Unsupported protocol \" + S + \":\", b.ERR_BAD_REQUEST, t));\n return;\n }\n p.send(o || null);\n });\n}, Ln = (t, e) => {\n const { length: n } = t = t ? t.filter(Boolean) : [];\n if (e || n) {\n let s = new AbortController(), r;\n const o = function(l) {\n if (!r) {\n r = !0, c();\n const u = l instanceof Error ? l : this.reason;\n s.abort(u instanceof b ? u : new B(u instanceof Error ? u.message : u));\n }\n };\n let i = e && setTimeout(() => {\n i = null, o(new b(`timeout ${e} of ms exceeded`, b.ETIMEDOUT));\n }, e);\n const c = () => {\n t && (i && clearTimeout(i), i = null, t.forEach((l) => {\n l.unsubscribe ? l.unsubscribe(o) : l.removeEventListener(\"abort\", o);\n }), t = null);\n };\n t.forEach((l) => l.addEventListener(\"abort\", o));\n const { signal: d } = s;\n return d.unsubscribe = () => a.asap(c), d;\n }\n}, Un = function* (t, e) {\n let n = t.byteLength;\n if (n < e) {\n yield t;\n return;\n }\n let s = 0, r;\n for (; s < n; )\n r = s + e, yield t.slice(s, r), s = r;\n}, Pn = async function* (t, e) {\n for await (const n of In(t))\n yield* Un(n, e);\n}, In = async function* (t) {\n if (t[Symbol.asyncIterator]) {\n yield* t;\n return;\n }\n const e = t.getReader();\n try {\n for (; ; ) {\n const { done: n, value: s } = await e.read();\n if (n)\n break;\n yield s;\n }\n } finally {\n await e.cancel();\n }\n}, xe = (t, e, n, s) => {\n const r = Pn(t, e);\n let o = 0, i, c = (d) => {\n i || (i = !0, s && s(d));\n };\n return new ReadableStream({\n async pull(d) {\n try {\n const { done: l, value: u } = await r.next();\n if (l) {\n c(), d.close();\n return;\n }\n let h = u.byteLength;\n if (n) {\n let y = o += h;\n n(y);\n }\n d.enqueue(new Uint8Array(u));\n } catch (l) {\n throw c(l), l;\n }\n },\n cancel(d) {\n return c(d), r.return();\n }\n }, {\n highWaterMark: 2\n });\n}, Z = typeof fetch == \"function\" && typeof Request == \"function\" && typeof Response == \"function\", nt = Z && typeof ReadableStream == \"function\", Fn = Z && (typeof TextEncoder == \"function\" ? /* @__PURE__ */ ((t) => (e) => t.encode(e))(new TextEncoder()) : async (t) => new Uint8Array(await new Response(t).arrayBuffer())), st = (t, ...e) => {\n try {\n return !!t(...e);\n } catch {\n return !1;\n }\n}, Dn = nt && st(() => {\n let t = !1;\n const e = new Request(O.origin, {\n body: new ReadableStream(),\n method: \"POST\",\n get duplex() {\n return t = !0, \"half\";\n }\n }).headers.has(\"Content-Type\");\n return t && !e;\n}), Ce = 64 * 1024, ae = nt && st(() => a.isReadableStream(new Response(\"\").body)), J = {\n stream: ae && ((t) => t.body)\n};\nZ && ((t) => {\n [\"text\", \"arrayBuffer\", \"blob\", \"formData\", \"stream\"].forEach((e) => {\n !J[e] && (J[e] = a.isFunction(t[e]) ? (n) => n[e]() : (n, s) => {\n throw new b(`Response type '${e}' is not supported`, b.ERR_NOT_SUPPORT, s);\n });\n });\n})(new Response());\nconst _n = async (t) => {\n if (t == null)\n return 0;\n if (a.isBlob(t))\n return t.size;\n if (a.isSpecCompliantForm(t))\n return (await new Request(O.origin, {\n method: \"POST\",\n body: t\n }).arrayBuffer()).byteLength;\n if (a.isArrayBufferView(t) || a.isArrayBuffer(t))\n return t.byteLength;\n if (a.isURLSearchParams(t) && (t = t + \"\"), a.isString(t))\n return (await Fn(t)).byteLength;\n}, kn = async (t, e) => {\n const n = a.toFiniteNumber(t.getContentLength());\n return n ?? _n(e);\n}, Bn = Z && (async (t) => {\n let {\n url: e,\n method: n,\n data: s,\n signal: r,\n cancelToken: o,\n timeout: i,\n onDownloadProgress: c,\n onUploadProgress: d,\n responseType: l,\n headers: u,\n withCredentials: h = \"same-origin\",\n fetchOptions: y\n } = tt(t);\n l = l ? (l + \"\").toLowerCase() : \"text\";\n let w = Ln([r, o && o.toAbortSignal()], i), f;\n const m = w && w.unsubscribe && (() => {\n w.unsubscribe();\n });\n let p;\n try {\n if (d && Dn && n !== \"get\" && n !== \"head\" && (p = await kn(u, s)) !== 0) {\n let A = new Request(e, {\n method: \"POST\",\n body: s,\n duplex: \"half\"\n }), P;\n if (a.isFormData(s) && (P = A.headers.get(\"content-type\")) && u.setContentType(P), A.body) {\n const [I, H] = Te(\n p,\n z(Oe(d))\n );\n s = xe(A.body, Ce, I, H);\n }\n }\n a.isString(h) || (h = h ? \"include\" : \"omit\");\n const E = \"credentials\" in Request.prototype;\n f = new Request(e, {\n ...y,\n signal: w,\n method: n.toUpperCase(),\n headers: u.normalize().toJSON(),\n body: s,\n duplex: \"half\",\n credentials: E ? h : void 0\n });\n let S = await fetch(f);\n const T = ae && (l === \"stream\" || l === \"response\");\n if (ae && (c || T && m)) {\n const A = {};\n [\"status\", \"statusText\", \"headers\"].forEach((be) => {\n A[be] = S[be];\n });\n const P = a.toFiniteNumber(S.headers.get(\"content-length\")), [I, H] = c && Te(\n P,\n z(Oe(c), !0)\n ) || [];\n S = new Response(\n xe(S.body, Ce, I, () => {\n H && H(), m && m();\n }),\n A\n );\n }\n l = l || \"text\";\n let U = await J[a.findKey(J, l) || \"text\"](S, t);\n return !T && m && m(), await new Promise((A, P) => {\n Ye(A, P, {\n data: U,\n headers: x.from(S.headers),\n status: S.status,\n statusText: S.statusText,\n config: t,\n request: f\n });\n });\n } catch (E) {\n throw m && m(), E && E.name === \"TypeError\" && /fetch/i.test(E.message) ? Object.assign(\n new b(\"Network Error\", b.ERR_NETWORK, t, f),\n {\n cause: E.cause || E\n }\n ) : b.from(E, E && E.code, t, f);\n }\n}), ce = {\n http: Qt,\n xhr: Nn,\n fetch: Bn\n};\na.forEach(ce, (t, e) => {\n if (t) {\n try {\n Object.defineProperty(t, \"name\", { value: e });\n } catch {\n }\n Object.defineProperty(t, \"adapterName\", { value: e });\n }\n});\nconst Ne = (t) => `- ${t}`, vn = (t) => a.isFunction(t) || t === null || t === !1, rt = {\n getAdapter: (t) => {\n t = a.isArray(t) ? t : [t];\n const { length: e } = t;\n let n, s;\n const r = {};\n for (let o = 0; o < e; o++) {\n n = t[o];\n let i;\n if (s = n, !vn(n) && (s = ce[(i = String(n)).toLowerCase()], s === void 0))\n throw new b(`Unknown adapter '${i}'`);\n if (s)\n break;\n r[i || \"#\" + o] = s;\n }\n if (!s) {\n const o = Object.entries(r).map(\n ([c, d]) => `adapter ${c} ` + (d === !1 ? \"is not supported by the environment\" : \"is not available in the build\")\n );\n let i = e ? o.length > 1 ? `since :\n` + o.map(Ne).join(`\n`) : \" \" + Ne(o[0]) : \"as no adapter specified\";\n throw new b(\n \"There is no suitable adapter to dispatch the request \" + i,\n \"ERR_NOT_SUPPORT\"\n );\n }\n return s;\n },\n adapters: ce\n};\nfunction se(t) {\n if (t.cancelToken && t.cancelToken.throwIfRequested(), t.signal && t.signal.aborted)\n throw new B(null, t);\n}\nfunction Le(t) {\n return se(t), t.headers = x.from(t.headers), t.data = ne.call(\n t,\n t.transformRequest\n ), [\"post\", \"put\", \"patch\"].indexOf(t.method) !== -1 && t.headers.setContentType(\"application/x-www-form-urlencoded\", !1), rt.getAdapter(t.adapter || M.adapter)(t).then(function(s) {\n return se(t), s.data = ne.call(\n t,\n t.transformResponse,\n s\n ), s.headers = x.from(s.headers), s;\n }, function(s) {\n return Ze(s) || (se(t), s && s.response && (s.response.data = ne.call(\n t,\n t.transformResponse,\n s.response\n ), s.response.headers = x.from(s.response.headers))), Promise.reject(s);\n });\n}\nconst ot = \"1.7.8\", Y = {};\n[\"object\", \"boolean\", \"number\", \"function\", \"string\", \"symbol\"].forEach((t, e) => {\n Y[t] = function(s) {\n return typeof s === t || \"a\" + (e < 1 ? \"n \" : \" \") + t;\n };\n});\nconst Ue = {};\nY.transitional = function(e, n, s) {\n function r(o, i) {\n return \"[Axios v\" + ot + \"] Transitional option '\" + o + \"'\" + i + (s ? \". \" + s : \"\");\n }\n return (o, i, c) => {\n if (e === !1)\n throw new b(\n r(i, \" has been removed\" + (n ? \" in \" + n : \"\")),\n b.ERR_DEPRECATED\n );\n return n && !Ue[i] && (Ue[i] = !0, console.warn(\n r(\n i,\n \" has been deprecated since v\" + n + \" and will be removed in the near future\"\n )\n )), e ? e(o, i, c) : !0;\n };\n};\nY.spelling = function(e) {\n return (n, s) => (console.warn(`${s} is likely a misspelling of ${e}`), !0);\n};\nfunction jn(t, e, n) {\n if (typeof t != \"object\")\n throw new b(\"options must be an object\", b.ERR_BAD_OPTION_VALUE);\n const s = Object.keys(t);\n let r = s.length;\n for (; r-- > 0; ) {\n const o = s[r], i = e[o];\n if (i) {\n const c = t[o], d = c === void 0 || i(c, o, t);\n if (d !== !0)\n throw new b(\"option \" + o + \" must be \" + d, b.ERR_BAD_OPTION_VALUE);\n continue;\n }\n if (n !== !0)\n throw new b(\"Unknown option \" + o, b.ERR_BAD_OPTION);\n }\n}\nconst V = {\n assertOptions: jn,\n validators: Y\n}, L = V.validators;\nclass D {\n constructor(e) {\n this.defaults = e, this.interceptors = {\n request: new ge(),\n response: new ge()\n };\n }\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(e, n) {\n try {\n return await this._request(e, n);\n } catch (s) {\n if (s instanceof Error) {\n let r = {};\n Error.captureStackTrace ? Error.captureStackTrace(r) : r = new Error();\n const o = r.stack ? r.stack.replace(/^.+\\n/, \"\") : \"\";\n try {\n s.stack ? o && !String(s.stack).endsWith(o.replace(/^.+\\n.+\\n/, \"\")) && (s.stack += `\n` + o) : s.stack = o;\n } catch {\n }\n }\n throw s;\n }\n }\n _request(e, n) {\n typeof e == \"string\" ? (n = n || {}, n.url = e) : n = e || {}, n = _(this.defaults, n);\n const { transitional: s, paramsSerializer: r, headers: o } = n;\n s !== void 0 && V.assertOptions(s, {\n silentJSONParsing: L.transitional(L.boolean),\n forcedJSONParsing: L.transitional(L.boolean),\n clarifyTimeoutError: L.transitional(L.boolean)\n }, !1), r != null && (a.isFunction(r) ? n.paramsSerializer = {\n serialize: r\n } : V.assertOptions(r, {\n encode: L.function,\n serialize: L.function\n }, !0)), V.assertOptions(n, {\n baseUrl: L.spelling(\"baseURL\"),\n withXsrfToken: L.spelling(\"withXSRFToken\")\n }, !0), n.method = (n.method || this.defaults.method || \"get\").toLowerCase();\n let i = o && a.merge(\n o.common,\n o[n.method]\n );\n o && a.forEach(\n [\"delete\", \"get\", \"head\", \"post\", \"put\", \"patch\", \"common\"],\n (f) => {\n delete o[f];\n }\n ), n.headers = x.concat(i, o);\n const c = [];\n let d = !0;\n this.interceptors.request.forEach(function(m) {\n typeof m.runWhen == \"function\" && m.runWhen(n) === !1 || (d = d && m.synchronous, c.unshift(m.fulfilled, m.rejected));\n });\n const l = [];\n this.interceptors.response.forEach(function(m) {\n l.push(m.fulfilled, m.rejected);\n });\n let u, h = 0, y;\n if (!d) {\n const f = [Le.bind(this), void 0];\n for (f.unshift.apply(f, c), f.push.apply(f, l), y = f.length, u = Promise.resolve(n); h < y; )\n u = u.then(f[h++], f[h++]);\n return u;\n }\n y = c.length;\n let w = n;\n for (h = 0; h < y; ) {\n const f = c[h++], m = c[h++];\n try {\n w = f(w);\n } catch (p) {\n m.call(this, p);\n break;\n }\n }\n try {\n u = Le.call(this, w);\n } catch (f) {\n return Promise.reject(f);\n }\n for (h = 0, y = l.length; h < y; )\n u = u.then(l[h++], l[h++]);\n return u;\n }\n getUri(e) {\n e = _(this.defaults, e);\n const n = et(e.baseURL, e.url);\n return Ge(n, e.params, e.paramsSerializer);\n }\n}\na.forEach([\"delete\", \"get\", \"head\", \"options\"], function(e) {\n D.prototype[e] = function(n, s) {\n return this.request(_(s || {}, {\n method: e,\n url: n,\n data: (s || {}).data\n }));\n };\n});\na.forEach([\"post\", \"put\", \"patch\"], function(e) {\n function n(s) {\n return function(o, i, c) {\n return this.request(_(c || {}, {\n method: e,\n headers: s ? {\n \"Content-Type\": \"multipart/form-data\"\n } : {},\n url: o,\n data: i\n }));\n };\n }\n D.prototype[e] = n(), D.prototype[e + \"Form\"] = n(!0);\n});\nclass pe {\n constructor(e) {\n if (typeof e != \"function\")\n throw new TypeError(\"executor must be a function.\");\n let n;\n this.promise = new Promise(function(o) {\n n = o;\n });\n const s = this;\n this.promise.then((r) => {\n if (!s._listeners) return;\n let o = s._listeners.length;\n for (; o-- > 0; )\n s._listeners[o](r);\n s._listeners = null;\n }), this.promise.then = (r) => {\n let o;\n const i = new Promise((c) => {\n s.subscribe(c), o = c;\n }).then(r);\n return i.cancel = function() {\n s.unsubscribe(o);\n }, i;\n }, e(function(o, i, c) {\n s.reason || (s.reason = new B(o, i, c), n(s.reason));\n });\n }\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason)\n throw this.reason;\n }\n /**\n * Subscribe to the cancel signal\n */\n subscribe(e) {\n if (this.reason) {\n e(this.reason);\n return;\n }\n this._listeners ? this._listeners.push(e) : this._listeners = [e];\n }\n /**\n * Unsubscribe from the cancel signal\n */\n unsubscribe(e) {\n if (!this._listeners)\n return;\n const n = this._listeners.indexOf(e);\n n !== -1 && this._listeners.splice(n, 1);\n }\n toAbortSignal() {\n const e = new AbortController(), n = (s) => {\n e.abort(s);\n };\n return this.subscribe(n), e.signal.unsubscribe = () => this.unsubscribe(n), e.signal;\n }\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let e;\n return {\n token: new pe(function(r) {\n e = r;\n }),\n cancel: e\n };\n }\n}\nfunction qn(t) {\n return function(n) {\n return t.apply(null, n);\n };\n}\nfunction Mn(t) {\n return a.isObject(t) && t.isAxiosError === !0;\n}\nconst le = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511\n};\nObject.entries(le).forEach(([t, e]) => {\n le[e] = t;\n});\nfunction it(t) {\n const e = new D(t), n = Be(D.prototype.request, e);\n return a.extend(n, D.prototype, e, { allOwnKeys: !0 }), a.extend(n, e, null, { allOwnKeys: !0 }), n.create = function(r) {\n return it(_(t, r));\n }, n;\n}\nconst g = it(M);\ng.Axios = D;\ng.CanceledError = B;\ng.CancelToken = pe;\ng.isCancel = Ze;\ng.VERSION = ot;\ng.toFormData = Q;\ng.AxiosError = b;\ng.Cancel = g.CanceledError;\ng.all = function(e) {\n return Promise.all(e);\n};\ng.spread = qn;\ng.isAxiosError = Mn;\ng.mergeConfig = _;\ng.AxiosHeaders = x;\ng.formToJSON = (t) => Qe(a.isHTMLForm(t) ? new FormData(t) : t);\ng.getAdapter = rt.getAdapter;\ng.HttpStatusCode = le;\ng.default = g;\nfunction Pe(...t) {\n return t.filter((e) => e).join(\"/\");\n}\nclass at {\n #e = null;\n #t;\n constructor({ baseUrl: e, fetcher: n }) {\n this.#t = n, this.#e = e;\n }\n get path() {\n return this.#e;\n }\n get fullPath() {\n return Pe(this.#t.fullPath, this.#e);\n }\n get baseUrl() {\n return this.#e ? new URL(...[this.#e, this.#t.baseUrl].filter((e) => e)).href : this.#t.baseUrl ?? null;\n }\n set baseUrl(e) {\n this.#e = e;\n }\n get context() {\n return this.#t.context;\n }\n get apiFetcher() {\n return this.#t;\n }\n get session() {\n return this.context.session;\n }\n async fetch(e) {\n return this.apiFetcher.fetch({\n ...e,\n url: Pe(this.#e, e.url)\n });\n }\n}\nclass Hn extends at {\n constructor({ fetcher: e }) {\n super({ baseUrl: \"core\", fetcher: e });\n }\n sessions = new Wn(this);\n}\nclass Wn extends at {\n constructor(e) {\n super({ baseUrl: \"sessions\", fetcher: e });\n }\n async create(e = {}) {\n const n = await this.fetch({\n url: \"create\",\n data: { otp: e.otp }\n });\n return this.session.update({\n sessionId: n.data.sessionId,\n expiresAt: new Date(n.data.expiresAt),\n anonymousSession: n.data?.anonymousSession ?? n.data.sessionId?.startsWith(\"0\") ?? !0\n });\n }\n async refresh() {\n const e = await this.fetch({\n url: \"refresh\"\n });\n return this.session.update({\n sessionId: e.data.sessionId,\n expiresAt: new Date(e.data.expiresAt)\n }), e.data.sessionId;\n }\n async remove(e) {\n await this.fetch({\n url: \"remove\",\n headers: e ? {\n \"x-id\": e\n } : void 0\n }), this.session.update({\n sessionId: null,\n anonymousSession: !0,\n expiresAt: null\n });\n }\n}\nclass ct {\n observers = [];\n notifyObservers() {\n this.observers.forEach((e) => e(this.data()));\n }\n subscribe(e) {\n return this.observers.push(e), () => {\n const n = this.observers.indexOf(e);\n if (n >= 0)\n this.observers.splice(n, 1);\n else\n throw new Error(\"Observer was already unsubscribed\");\n };\n }\n}\nconst Ie = \"en-BE\";\nfunction Fe() {\n return typeof window < \"u\" ? window.navigator?.language ?? Ie : Ie;\n}\nclass ue extends ct {\n #e = !0;\n #t = Fe();\n #n = null;\n #s = null;\n observers = [];\n constructor(e) {\n super(), e && this.update(e, !1);\n }\n /**\n * Update the state and notify subscribers\n */\n update(e, n = !0) {\n return \"anonymousSession\" in e && (this.#e = e?.anonymousSession ?? !0), \"sessionId\" in e && (this.#n = e?.sessionId ?? null), \"locale\" in e && (this.#t = e.locale ?? Fe()), n && this.notifyObservers(), this.data();\n }\n /**\n * Returns a copy of the current state data\n */\n data() {\n return {\n anonymousSession: this.#e,\n locale: this.#t,\n sessionId: this.#n,\n expiresAt: this.#s\n };\n }\n get sessionId() {\n return this.#n;\n }\n get locale() {\n return this.#t;\n }\n /**\n * The locale of the session.\n * Note: This changes the locale on the client only and thus for further calls to the backend. It does not change\n * what is stored on the active session in the backend. Until a new one is created or this one refreshed\n * @param value\n */\n set locale(e) {\n this.update({ locale: e });\n }\n get anonymousSession() {\n return this.#e;\n }\n get expiresAt() {\n return this.#s;\n }\n // Informational properties\n get isExpired() {\n return this.expiresAt && (/* @__PURE__ */ new Date()).getTime() > this.expiresAt.getTime();\n }\n get isValidSession() {\n return !!this.sessionId && !this.isExpired;\n }\n}\nconst $n = {\n default: {\n LOCAL: \"http://localhost:8080/api/\",\n TST: \"https://tst-dax.digital.belfius.be/\",\n GTU: \"https://gtu-dax.digital.belfius.be/\",\n UAT: \"https://uat-dax.digital.belfius.be/\",\n PRD: \"https://dax.digital.belfius.be/\"\n },\n mobile: {\n LOCAL: \"http://localhost:8080/api/\",\n TST: \"https://tst-dax-mobile.digital.belfius.be/\",\n GTU: \"https://gtu-dax-mobile.digital.belfius.be/\",\n UAT: \"https://uat-dax-mobile.digital.belfius.be/\",\n PRD: \"https://dax-mobile.digital.belfius.be/\"\n }\n};\nclass Vn {\n #e = null;\n // @ts-ignore (typescript fails to realize we really are always setting a #ctx via setContext in the constructor)\n #t;\n constructor({ baseUrl: e, ctx: n } = {}) {\n e && (this.#e = e), this.setContext(n);\n }\n get context() {\n return this.#t;\n }\n setContext(e) {\n this.#t = e?.session && e?.environment ? e : {\n session: e?.session ?? this.#t?.session ?? new ue(),\n environment: e?.environment ?? \"GTU\",\n devMode: e?.devMode\n };\n }\n set baseUrl(e) {\n this.#e = e;\n }\n get baseUrl() {\n return this.#e ?? $n.default[this.#t.environment];\n }\n authenticate(e) {\n throw new Error(\"Method not implemented.\");\n }\n}\nclass me extends Error {\n code;\n request;\n status;\n statusText;\n detail;\n headers;\n constructor(e, { cause: n, stack: s } = {}) {\n const r = e.request.url, o = e?.detail?.errors?.[0], i = e.status == 520 ? \"GEUS Error\" : e.status === 440 ? \"Session error/expired\" : e.statusText, c = [\n `${e.status ? `[${e.status}] ${i}` : e.code === \"timeout\" ? \"Timeout\" : e.code ?? \"Unknown error\"} on ${r}`,\n o ? `[${o.module}]: ${[o.description, `${o.returnCode}/${o.subReturnCode}`].filter((d) => d).join(\" \")}` : null\n ].filter((d) => d).join(`\n`);\n super(c), this.request = e.request, e.status && (this.status = e.status), this.statusText = i, e.detail && (this.detail = e.detail), e.headers && (this.headers = e.headers), this.code = e.code || \"unknown\", n && (this.cause = n), s ? this.stack = s : this.stack = [\n this.message.split(`\n`)[0],\n \"Errors: \",\n ...this.detail?.errors?.map(\n (d) => [\n ` ${d.module}/${d.location}`,\n ` ${d.returnCode}/${d.subReturnCode} ${d.description ?? \"\"}`,\n d[\"technical-text\"] ? ` ${d[\"technical-text\"]}` : null,\n \" \"\n ].filter((l) => l).join(`\n`)\n ) ?? [],\n ...this.detail?.traceId ? [\"\", `TraceId: ${this.detail?.traceId}`] : []\n ].join(`\n`), Object.setPrototypeOf(this, me.prototype);\n }\n}\nconst De = Symbol(\"RETRIED_REQUEST\");\nclass zn extends Vn {\n #e = g.create();\n authCallback = null;\n #t;\n constructor({ authCallback: e, ...n } = {}) {\n super(n), this.authCallback = e ?? null, this.#t = new Hn({ fetcher: this });\n }\n async fetch(e) {\n const {\n headers: n,\n data: s,\n suppressWaitPointer: r,\n // Only used by the mobile bridge\n url: o,\n version: i,\n ...c\n } = e, d = this.#e.getUri({\n baseURL: this.baseUrl || void 0,\n url: o\n }), l = this.context.session, u = l?.sessionId, h = l?.locale, y = {\n ...h ? {\n \"accept-language\": h\n } : {},\n ...u ? {\n \"x-id\": u\n } : {},\n \"x-api-version\": i || 1,\n ...n\n };\n try {\n const w = await this.#e.post(d, s || {}, {\n headers: y,\n ...c\n });\n return {\n data: w.data,\n headers: w.headers,\n // Need to typecast because of string|undefined differences\n status: w.status,\n statusText: w.statusText,\n request: e\n };\n } catch (w) {\n const f = w, m = new me(\n {\n request: e,\n ...f.code ? {\n code: f.code === \"ECONNABORTED\" ? \"timeout\" : f.status === 440 || // DAX return a session not found or session expired\n !(f.status === 401 && !u) ? \"no-session\" : f.code\n } : {},\n ...f.response ? {\n status: f.response.status,\n statusText: f.response.statusText,\n headers: f.response.headers\n // Need to typecast because of string|undefined differences\n } : f.status ? {\n status: f.status,\n statusText: f.message\n } : {},\n ...f.response?.headers?.[\"content-type\"] === \"application/problem+json\" && f.response?.data?.errors ? {\n detail: f.response.data\n } : {}\n },\n { cause: w }\n );\n if (m.code === \"no-session\" && this.authCallback && !e[De])\n return e[De] = !0, await this.authenticate({ refresh: !0 }), this.fetch(e);\n throw m;\n }\n }\n /** Track any ongoing authenticate attempts, to avoid multiple simultaneous requests */\n #n;\n async _doAuthenticate() {\n if (this.authCallback) {\n const e = await Promise.resolve(this.authCallback(this.context));\n return await this.#t.sessions.create({\n sessionId: this.context.session?.sessionId || void 0,\n ...e || {}\n });\n } else\n return await this.#t.sessions.create({\n sessionId: this.context.session?.sessionId || void 0\n });\n }\n async authenticate({ refresh: e } = {}) {\n return !e && this.context.session?.sessionId ? this.context.session.data() : (this.#n || (this.#n = this._doAuthenticate().finally(() => {\n this.#n = void 0;\n })), this.#n);\n }\n}\nclass _e extends ct {\n #e = !1;\n #t;\n #n;\n constructor(e) {\n super(), e && this.update(e, !1);\n }\n /**\n * Update the state and notify subscribers\n */\n update(e, n = !0) {\n return \"enabled\" in e && (this.#e = e?.enabled ?? !0), \"localApiBase\" in e && (this.#t = e?.localApiBase), \"corsProxy\" in e && (this.#n = e?.corsProxy), n && this.notifyObservers(), this.data();\n }\n /**\n * Returns a copy of the current state data\n */\n data() {\n return {\n enabled: this.#e\n };\n }\n get enabled() {\n return this.#e;\n }\n set enabled(e) {\n this.update({ enabled: e });\n }\n get corsProxy() {\n return this.#n;\n }\n set corsProxy(e) {\n this.update({ corsProxy: e });\n }\n get localApiBase() {\n return this.#t;\n }\n set localApiBase(e) {\n this.update({ localApiBase: e });\n }\n}\nclass Jn {\n constructor(e) {\n this.container = e.container, this.environment = e.environment, e.session instanceof ue ? this.session = e.session : this.session = new ue(e.session), e.devMode instanceof _e ? this.devMode = e.devMode : e.devMode && (this.devMode = new _e(e.devMode)), e.apiFetcher && e.apiFetcher.fetch ? (this.apiFetcher = e.apiFetcher, this.apiFetcher.setContext?.(this)) : this.apiFetcher = new zn({\n baseUrl: e.apiFetcher?.baseUrl ?? null,\n ctx: this\n });\n }\n container;\n apiFetcher;\n environment;\n session;\n devMode;\n}\nconst R = () => {\n}, ke = () => Promise.reject(new Error(\"not implemented\")), os = {\n storeSessionVariable: R,\n clearSessionContext: R,\n storeFlowContextVariable: R,\n clearFlowContextVariables: R\n};\nvar Kn = /* @__PURE__ */ ((t) => (t.BANK = \"bank\", t.INSURANCE = \"insurance\", t))(Kn || {});\nclass lt extends Jn {\n constructor(e) {\n super(e), this.flowId = e.flowId, this.pubSub = e.pubSub, this.context = e.context || {}, this.clientSessionData = e.clientSessionData, this.webSocketFactory = e.webSocketFactory, this.datalayer = e.datalayer, this.navigation = e.navigation, this.loadUILib = e.loadUILib ?? !0;\n }\n flowId;\n pubSub;\n context;\n clientSessionData;\n webSocketFactory;\n datalayer;\n navigation;\n loadUILib;\n}\nclass ut extends lt {\n static type = \"BDN\";\n type = ut.type;\n constructor(e) {\n super(e);\n }\n}\nclass dt extends lt {\n static type = \"Hybrid\";\n type = dt.type;\n constructor(e) {\n super(e), this.mobileBridge = e.mobileBridge;\n }\n mobileBridge;\n}\nvar Gn = /* @__PURE__ */ ((t) => (t.ADMINISTRATIVE_TRANSACTION = \"ADMTRA\", t.CONSULTATION = \"CONS\", t.FINANCIAL_TRANSACTION = \"FINTRA\", t.PURCHASE = \"PURCH\", t.SIMULATION = \"SIMUGEN\", t.TECHNICAL = \"TECH\", t))(Gn || {}), Xn = /* @__PURE__ */ ((t) => (t.AUTHENTICATION = \"AUTH\", t.CONFIRMATION = \"CONFIRM\", t.CONTROL = \"CONTROL\", t.DETAIL = \"DETAIL\", t.ERROR = \"ERROR\", t.HELP = \"HELP\", t.INFO = \"INFO\", t.INPUT = \"INPUT\", t.NO_TAG = \"NOTAG\", t.PRODUCT_LIST = \"PRODLIST\", t.RESULT = \"RESULT\", t.SELECTION = \"SELECTION\", t.SIGN = \"SIGN\", t.TECHNICAL = \"TECH\", t.TRANSACTION_LIST = \"TRANSLIST\", t))(Xn || {});\nconst is = {\n setFlow: R,\n setScreen: R,\n addEvent: R\n};\nvar Qn = /* @__PURE__ */ ((t) => (t.TITLE_CLICKED = \"mobileHeaderTitleClicked\", t.LEFT_ICON_CLICKED = \"mobileHeaderLeftIconClicked\", t.RIGHT_ICON_CLICKED = \"mobileHeaderRightIconClicked\", t.OVERFLOW_MENU_CLICKED = \"mobileHeaderOverflowMenuClicked\", t))(Qn || {}), Zn = /* @__PURE__ */ ((t) => (t.BACK = \"e40b\", t.TRASHCAN = \"e45e\", t.INFO = \"e60f\", t.CLOSE = \"e613\", t.CLOSE_CONFIRM = \"e426\", t.SEARCH = \"e61a\", t.OVERFLOW = \"e42c\", t.SHARE = \"e558\", t))(Zn || {}), Yn = /* @__PURE__ */ ((t) => (t.DEFAULT = \"\", t.FLOW = \"flow\", t.FLOW_INVERTED = \"flowInverted\", t.TRANSPARENT_DARK = \"transparentDark\", t.TRANSPARENT_LIGHT = \"transparentLight\", t))(Yn || {});\nconst as = {\n available() {\n return !1;\n },\n removeIcons: R,\n setTitleWithSubtitle: R,\n setLeftIcon: R,\n setRightIcon: R,\n setOverflowMenu: R,\n setHeaderStyle: R,\n getHeaderHeight: ke,\n closeHybridFlow: R,\n closeHybridFlowAndRedirect: R,\n closeHybridAndNativeFlow: R,\n closeHybridFlowWithResultId: R,\n openWebView: R,\n openNewWebView: R,\n requestUpload: ke,\n enableScrollableHostView: R,\n disableScrollableHostView: R\n}, es = \"TPUploadDocuments\", ts = \"TPUploadDocumentsResult\", ns = (t, e) => t.requestUpload(e), ss = (t, e) => new Promise((n, s) => {\n const r = (o, i) => {\n n({\n state: typeof i.state == \"boolean\" && i.state || typeof i.state == \"string\" && /(Y|true)/i.test(i.state)\n }), t.unsubscribe(r);\n };\n t.subscribe(r, ts), t.publish(es, e);\n});\nfunction cs(t, e, n) {\n return t.available() ? ns(t, n) : ss(e, n);\n}\nclass rs {\n #e = null;\n #t = [];\n constructor(e, n) {\n this.#e = this.createWebSocket(e, n);\n }\n close(e, n) {\n this.#e?.close(e, n);\n }\n sendMessage(e) {\n const n = JSON.stringify(e);\n !this.#e || this.#e.readyState === WebSocket.CONNECTING ? this.#t.push(n) : this.#e.send(n);\n }\n createWebSocket(e, n) {\n const s = new WebSocket(e);\n return s.addEventListener(\"open\", () => {\n this.#t.forEach((r) => {\n s.send(r);\n }), this.#t = [];\n }), n.onOpen && s.addEventListener(\"open\", () => {\n n.onOpen();\n }), n.onError && s.addEventListener(\"error\", () => {\n n.onError();\n }), s.addEventListener(\"close\", (r) => {\n r.wasClean ? n.onClose && n.onClose(r.code, r.reason) : (this.#e = null, setTimeout(() => {\n this.#e = this.createWebSocket(e, n);\n }, 1e3));\n }), n.onMessage && s.addEventListener(\"message\", (r) => {\n if (typeof r.data == \"string\") {\n let o;\n try {\n o = JSON.parse(r.data);\n } catch {\n o = r.data;\n }\n n.onMessage(o);\n } else\n n.onMessage(r.data);\n }), s;\n }\n}\nclass ls {\n createWebSocket(e, n, s) {\n return new rs(n, s);\n }\n}\nexport {\n ut as BdnHostContext,\n Kn as BotType,\n ls as BrowserWebSocketFactory,\n rs as BrowserWebSocketProxy,\n Gn as FlowType,\n Yn as HeaderStyle,\n dt as HybridHostContext,\n Qn as MobileHeaderMessage,\n Zn as NamedHeaderIcon,\n Xn as ScreenType,\n os as mockClientSessionData,\n is as mockDatalayer,\n as as mockMobileBridge,\n cs as uploadDocumentsDelegation\n};\n//# sourceMappingURL=index.mjs.map\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Component, createRef } from 'react';\nconst ActionButtonAttributes = {\n \"className\": {\n \"attr\": \"class\",\n \"type\": \"string\"\n },\n \"text\": {\n \"type\": \"string\",\n \"attr\": \"text\"\n },\n \"type\": {\n \"type\": \"string\",\n \"attr\": \"type\"\n },\n \"size\": {\n \"type\": \"string\",\n \"attr\": \"size\"\n },\n \"textIcon\": {\n \"type\": \"string\",\n \"attr\": \"text-icon\"\n },\n \"leftIcon\": {\n \"type\": \"string\",\n \"attr\": \"left-icon\"\n },\n \"rightIcon\": {\n \"type\": \"string\",\n \"attr\": \"right-icon\"\n },\n \"name\": {\n \"type\": \"string\",\n \"attr\": \"name\"\n },\n \"flavor\": {\n \"type\": \"string\",\n \"attr\": \"flavor\"\n },\n \"transactional\": {\n \"type\": \"boolean\",\n \"attr\": \"transactional\"\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"attr\": \"disabled\"\n },\n \"hidden\": {\n \"type\": \"boolean\",\n \"attr\": \"hidden\"\n },\n \"title\": {\n \"type\": \"string\",\n \"attr\": \"title\"\n },\n \"slot\": {\n \"type\": \"string\",\n \"attr\": \"slot\"\n }\n};\nconst ActionButtonProperties = {};\n/**\n * Creates an action button\n * @see {@link https://geui-tst-ww-ffe.belwired.net/belfius/docs/#/components/controls/buttons/action-button Documentation}\n */\nexport class ActionButton extends Component {\n ref = createRef();\n render() {\n const attrProps = {};\n for (const key in this.props) {\n // @ts-ignore\n const value = this.props[key];\n const attr = ActionButtonAttributes[key];\n const propType = ActionButtonProperties[key];\n if (propType)\n continue; // skip, not set by attr\n if (attr) {\n if (attr.type === 'boolean') {\n if (value)\n attrProps[attr.attr] = '';\n }\n else {\n attrProps[attr.attr] = value;\n }\n }\n else { // unrecognized property\n // @ts-ignore\n attrProps[key] = this.props[key]; // Just pass along, unrecognized property\n }\n }\n return (_jsx(\"geui-action-button\", { ref: this.ref, ...attrProps }));\n }\n // Event handlers \n // @ts-ignore\n onActivatedHandler = (event) => { if (this.props['onActivated']) {\n event.target.dispatchEvent(new CustomEvent('geui:genericEvent', { bubbles: true, cancelable: true, composed: true, detail: { name: 'activated', params: { ...event.detail, source: this.props.id, widgetType: 'ActionButton' } } }));\n this.props['onActivated'](event);\n } };\n // @ts-ignore\n onGenericEventHandler = (...args) => this.props.onGenericEvent?.(...args);\n // Lifecycle\n componentDidUpdate(prevProps) {\n if (this.ref.current) {\n }\n }\n componentDidMount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.addEventListener('geui:activated', this.onActivatedHandler);\n el.addEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n componentWillUnmount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.removeEventListener('geui:activated', this.onActivatedHandler);\n el.removeEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n /**\n * Activates the button. The button must be enabled to allow activation.\n *\n * This has the same effect as clicking the button, and fires a `geui:activated` event.\n */\n activate() {\n return this.ref.current?.activate?.();\n }\n /**\n * Disables the button.\n */\n disable() {\n return this.ref.current?.disable?.();\n }\n /**\n * Enables the button.\n */\n enable() {\n return this.ref.current?.enable?.();\n }\n /**\n * Shows the component.\n */\n show() {\n return this.ref.current?.show?.();\n }\n /**\n * Hides the component.\n */\n hide() {\n return this.ref.current?.hide?.();\n }\n}\n//# sourceMappingURL=action-button.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Component, createRef } from 'react';\nconst ChatActionButtonGroupAttributes = {\n \"className\": {\n \"attr\": \"class\",\n \"type\": \"string\"\n },\n \"hidden\": {\n \"type\": \"boolean\",\n \"attr\": \"hidden\"\n },\n \"title\": {\n \"type\": \"string\",\n \"attr\": \"title\"\n },\n \"slot\": {\n \"type\": \"string\",\n \"attr\": \"slot\"\n }\n};\nconst ChatActionButtonGroupProperties = {\n \"disabled\": \"boolean\"\n};\n/**\n * This component groups ChatActionButton components together; all ChatActionButton must be placed inside a ChatActionButtonGroup, else they will not render.\n *\n *\n *\n * The ChatActionButtonGroup can then in turn be placed inside a ChatBubble or ChatCarouselItem; these will attach the buttongroup accordingly.\n *\n *\n *\n * The ChatActionButtonGroup also provides an easy means to enable/disable all buttons at once.\n *\n * Slots:\n * - _default_: Slotted ChatActionButton components will be reassigned automatically to a dedicated slot; all other elements will be ignored.\n *\n * @see {@link https://geui-tst-ww-ffe.belwired.net/belfius/docs/#/components/controls/buttons/chat-action-button-group Documentation}\n */\nexport class ChatActionButtonGroup extends Component {\n ref = createRef();\n render() {\n const attrProps = {};\n for (const key in this.props) {\n // @ts-ignore\n const value = this.props[key];\n const attr = ChatActionButtonGroupAttributes[key];\n const propType = ChatActionButtonGroupProperties[key];\n if (propType)\n continue; // skip, not set by attr\n if (attr) {\n if (attr.type === 'boolean') {\n if (value)\n attrProps[attr.attr] = '';\n }\n else {\n attrProps[attr.attr] = value;\n }\n }\n else { // unrecognized property\n // @ts-ignore\n attrProps[key] = this.props[key]; // Just pass along, unrecognized property\n }\n }\n return (_jsx(\"geui-chat-action-button-group\", { ref: this.ref, ...attrProps, children: this.props.children }));\n }\n // Event handlers \n // @ts-ignore\n onGenericEventHandler = (...args) => this.props.onGenericEvent?.(...args);\n // Lifecycle\n componentDidUpdate(prevProps) {\n if (this.ref.current) {\n // @ts-ignore\n if (this.props[\"disabled\"] !== prevProps[\"disabled\"])\n this.ref.current[\"disabled\"] = this.props[\"disabled\"];\n }\n }\n componentDidMount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.addEventListener('geui:genericEvent', this.onGenericEventHandler);\n if (this.props.hasOwnProperty(\"disabled\"))\n this.ref.current[\"disabled\"] = this.props[\"disabled\"];\n }\n }\n componentWillUnmount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.removeEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n /**\n * Disables all contained buttons.\n */\n disable() {\n return this.ref.current?.disable?.();\n }\n /**\n * Enables all contained buttons.\n */\n enable() {\n return this.ref.current?.enable?.();\n }\n /**\n * Shows the component.\n */\n show() {\n return this.ref.current?.show?.();\n }\n /**\n * Hides the component.\n */\n hide() {\n return this.ref.current?.hide?.();\n }\n}\n//# sourceMappingURL=chat-action-button-group.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Component, createRef } from 'react';\nconst ChatActionButtonAttributes = {\n \"className\": {\n \"attr\": \"class\",\n \"type\": \"string\"\n },\n \"text\": {\n \"type\": \"string\",\n \"attr\": \"text\"\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"attr\": \"disabled\"\n },\n \"hidden\": {\n \"type\": \"boolean\",\n \"attr\": \"hidden\"\n },\n \"title\": {\n \"type\": \"string\",\n \"attr\": \"title\"\n },\n \"slot\": {\n \"type\": \"string\",\n \"attr\": \"slot\"\n }\n};\nconst ChatActionButtonProperties = {};\n/**\n * An action button designed specifically for the Personal Assistance project.\n *\n * This button must be slotted inside a `ChatActionButtonGroup` in order for it to work.\n * @see {@link https://geui-tst-ww-ffe.belwired.net/belfius/docs/#/components/controls/buttons/chat-action-button Documentation}\n */\nexport class ChatActionButton extends Component {\n ref = createRef();\n render() {\n const attrProps = {};\n for (const key in this.props) {\n // @ts-ignore\n const value = this.props[key];\n const attr = ChatActionButtonAttributes[key];\n const propType = ChatActionButtonProperties[key];\n if (propType)\n continue; // skip, not set by attr\n if (attr) {\n if (attr.type === 'boolean') {\n if (value)\n attrProps[attr.attr] = '';\n }\n else {\n attrProps[attr.attr] = value;\n }\n }\n else { // unrecognized property\n // @ts-ignore\n attrProps[key] = this.props[key]; // Just pass along, unrecognized property\n }\n }\n return (_jsx(\"geui-chat-action-button\", { ref: this.ref, ...attrProps }));\n }\n // Event handlers \n // @ts-ignore\n onActivatedHandler = (event) => { if (this.props['onActivated']) {\n event.target.dispatchEvent(new CustomEvent('geui:genericEvent', { bubbles: true, cancelable: true, composed: true, detail: { name: 'activated', params: { ...event.detail, source: this.props.id, widgetType: 'ChatActionButton' } } }));\n this.props['onActivated'](event);\n } };\n // @ts-ignore\n onGenericEventHandler = (...args) => this.props.onGenericEvent?.(...args);\n // Lifecycle\n componentDidUpdate(prevProps) {\n if (this.ref.current) {\n }\n }\n componentDidMount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.addEventListener('geui:activated', this.onActivatedHandler);\n el.addEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n componentWillUnmount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.removeEventListener('geui:activated', this.onActivatedHandler);\n el.removeEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n /**\n * Activates the button. The button must be enabled to allow activation.\n *\n * This has the same effect as clicking the button, and fires a `geui:activated` event.\n */\n activate() {\n return this.ref.current?.activate?.();\n }\n /**\n * Disables the button.\n */\n disable() {\n return this.ref.current?.disable?.();\n }\n /**\n * Enables the button.\n */\n enable() {\n return this.ref.current?.enable?.();\n }\n /**\n * Shows the component.\n */\n show() {\n return this.ref.current?.show?.();\n }\n /**\n * Hides the component.\n */\n hide() {\n return this.ref.current?.hide?.();\n }\n}\n//# sourceMappingURL=chat-action-button.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Component, createRef } from 'react';\nconst ChatScrollButtonAttributes = {\n \"className\": {\n \"attr\": \"class\",\n \"type\": \"string\"\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"attr\": \"disabled\"\n },\n \"label\": {\n \"type\": \"string\",\n \"attr\": \"label\"\n },\n \"hidden\": {\n \"type\": \"boolean\",\n \"attr\": \"hidden\"\n },\n \"title\": {\n \"type\": \"string\",\n \"attr\": \"title\"\n },\n \"slot\": {\n \"type\": \"string\",\n \"attr\": \"slot\"\n }\n};\nconst ChatScrollButtonProperties = {};\n/**\n * A custom icon button designed specifically for the Personal Assistance project.\n *\n *\n *\n * It is meant to scroll back down to the latest message when viewing the chat history.\n *\n * The button should be positioned on the lower right side of the screen, just above the ChatInput.\n * @see {@link https://geui-tst-ww-ffe.belwired.net/belfius/docs/#/components/controls/buttons/chat-scroll-button Documentation}\n */\nexport class ChatScrollButton extends Component {\n ref = createRef();\n render() {\n const attrProps = {};\n for (const key in this.props) {\n // @ts-ignore\n const value = this.props[key];\n const attr = ChatScrollButtonAttributes[key];\n const propType = ChatScrollButtonProperties[key];\n if (propType)\n continue; // skip, not set by attr\n if (attr) {\n if (attr.type === 'boolean') {\n if (value)\n attrProps[attr.attr] = '';\n }\n else {\n attrProps[attr.attr] = value;\n }\n }\n else { // unrecognized property\n // @ts-ignore\n attrProps[key] = this.props[key]; // Just pass along, unrecognized property\n }\n }\n return (_jsx(\"geui-chat-scroll-button\", { ref: this.ref, ...attrProps }));\n }\n // Event handlers \n // @ts-ignore\n onActivatedHandler = (event) => { if (this.props['onActivated']) {\n event.target.dispatchEvent(new CustomEvent('geui:genericEvent', { bubbles: true, cancelable: true, composed: true, detail: { name: 'activated', params: { ...event.detail, source: this.props.id, widgetType: 'ChatScrollButton' } } }));\n this.props['onActivated'](event);\n } };\n // @ts-ignore\n onGenericEventHandler = (...args) => this.props.onGenericEvent?.(...args);\n // Lifecycle\n componentDidUpdate(prevProps) {\n if (this.ref.current) {\n }\n }\n componentDidMount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.addEventListener('geui:activated', this.onActivatedHandler);\n el.addEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n componentWillUnmount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.removeEventListener('geui:activated', this.onActivatedHandler);\n el.removeEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n /**\n * Activates the button. The button must be enabled to allow activation.\n *\n * This has the same effect as clicking the button, and fires a `geui:activated` event.\n */\n activate() {\n return this.ref.current?.activate?.();\n }\n /**\n * Disables the button.\n */\n disable() {\n return this.ref.current?.disable?.();\n }\n /**\n * Enables the button.\n */\n enable() {\n return this.ref.current?.enable?.();\n }\n /**\n * Shows the component.\n */\n show() {\n return this.ref.current?.show?.();\n }\n /**\n * Hides the component.\n */\n hide() {\n return this.ref.current?.hide?.();\n }\n}\n//# sourceMappingURL=chat-scroll-button.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Component, createRef } from 'react';\nconst IconButtonAttributes = {\n \"className\": {\n \"attr\": \"class\",\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\",\n \"attr\": \"type\"\n },\n \"size\": {\n \"type\": \"string\",\n \"attr\": \"size\"\n },\n \"ariaLabel\": {\n \"type\": \"string\",\n \"attr\": \"aria-label\"\n },\n \"name\": {\n \"type\": \"string\",\n \"attr\": \"name\"\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"attr\": \"disabled\"\n },\n \"hidden\": {\n \"type\": \"boolean\",\n \"attr\": \"hidden\"\n },\n \"title\": {\n \"type\": \"string\",\n \"attr\": \"title\"\n },\n \"slot\": {\n \"type\": \"string\",\n \"attr\": \"slot\"\n }\n};\nconst IconButtonProperties = {};\n/**\n * shows a clickable iconbutton\n * @see {@link https://geui-tst-ww-ffe.belwired.net/belfius/docs/#/components/controls/buttons/icon-button Documentation}\n */\nexport class IconButton extends Component {\n ref = createRef();\n render() {\n const attrProps = {};\n for (const key in this.props) {\n // @ts-ignore\n const value = this.props[key];\n const attr = IconButtonAttributes[key];\n const propType = IconButtonProperties[key];\n if (propType)\n continue; // skip, not set by attr\n if (attr) {\n if (attr.type === 'boolean') {\n if (value)\n attrProps[attr.attr] = '';\n }\n else {\n attrProps[attr.attr] = value;\n }\n }\n else { // unrecognized property\n // @ts-ignore\n attrProps[key] = this.props[key]; // Just pass along, unrecognized property\n }\n }\n return (_jsx(\"geui-icon-button\", { ref: this.ref, ...attrProps }));\n }\n // Event handlers \n // @ts-ignore\n onActivatedHandler = (event) => { if (this.props['onActivated']) {\n event.target.dispatchEvent(new CustomEvent('geui:genericEvent', { bubbles: true, cancelable: true, composed: true, detail: { name: 'activated', params: { ...event.detail, source: this.props.id, widgetType: 'IconButton' } } }));\n this.props['onActivated'](event);\n } };\n // @ts-ignore\n onGenericEventHandler = (...args) => this.props.onGenericEvent?.(...args);\n // Lifecycle\n componentDidUpdate(prevProps) {\n if (this.ref.current) {\n }\n }\n componentDidMount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.addEventListener('geui:activated', this.onActivatedHandler);\n el.addEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n componentWillUnmount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.removeEventListener('geui:activated', this.onActivatedHandler);\n el.removeEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n /**\n * Activates the button. The button must be enabled to allow activation.\n *\n * This has the same effect as clicking the button, and fires a `geui:activated` event.\n */\n activate() {\n return this.ref.current?.activate?.();\n }\n /**\n * Disables the button.\n */\n disable() {\n return this.ref.current?.disable?.();\n }\n /**\n * Enables the button.\n */\n enable() {\n return this.ref.current?.enable?.();\n }\n /**\n * Shows the component.\n */\n show() {\n return this.ref.current?.show?.();\n }\n /**\n * Hides the component.\n */\n hide() {\n return this.ref.current?.hide?.();\n }\n}\n//# sourceMappingURL=icon-button.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Component, createRef } from 'react';\nconst ChatInputAttributes = {\n \"className\": {\n \"attr\": \"class\",\n \"type\": \"string\"\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"attr\": \"disabled\"\n },\n \"maxLength\": {\n \"type\": \"string\",\n \"attr\": \"maxlength\"\n },\n \"placeholder\": {\n \"type\": \"string\",\n \"attr\": \"placeholder\"\n },\n \"upload\": {\n \"type\": \"boolean\",\n \"attr\": \"upload\"\n },\n \"value\": {\n \"type\": \"string\",\n \"attr\": \"value\"\n },\n \"hidden\": {\n \"type\": \"boolean\",\n \"attr\": \"hidden\"\n },\n \"title\": {\n \"type\": \"string\",\n \"attr\": \"title\"\n },\n \"slot\": {\n \"type\": \"string\",\n \"attr\": \"slot\"\n }\n};\nconst ChatInputProperties = {};\n/**\n * An input field tailored for use in a chat application.\n *\n *\n *\n * Entered text will wrap into multiple lines, expanding the height of the field.\n *\n * The maximum height can be limited with CSS (`max-height`).\n *\n *\n *\n * The send button will appear as soon as text is present in the input field.\n *\n *\n *\n * An optional upload icon button is also available to allow uploading files.\n * @see {@link https://geui-tst-ww-ffe.belwired.net/belfius/docs/#/components/controls/inputs/chat-input Documentation}\n */\nexport class ChatInput extends Component {\n ref = createRef();\n render() {\n const attrProps = {};\n for (const key in this.props) {\n // @ts-ignore\n const value = this.props[key];\n const attr = ChatInputAttributes[key];\n const propType = ChatInputProperties[key];\n if (propType)\n continue; // skip, not set by attr\n if (attr) {\n if (attr.type === 'boolean') {\n if (value)\n attrProps[attr.attr] = '';\n }\n else {\n attrProps[attr.attr] = value;\n }\n }\n else { // unrecognized property\n // @ts-ignore\n attrProps[key] = this.props[key]; // Just pass along, unrecognized property\n }\n }\n return (_jsx(\"geui-chat-input\", { ref: this.ref, ...attrProps }));\n }\n // Event handlers \n // @ts-ignore\n onChatMessageHandler = (event) => { if (this.props['onChatMessage']) {\n event.target.dispatchEvent(new CustomEvent('geui:genericEvent', { bubbles: true, cancelable: true, composed: true, detail: { name: 'chatMessage', params: { ...event.detail, source: this.props.id, widgetType: 'ChatInput' } } }));\n this.props['onChatMessage'](event);\n } };\n // @ts-ignore\n onChatTypingHandler = (event) => { if (this.props['onChatTyping']) {\n event.target.dispatchEvent(new CustomEvent('geui:genericEvent', { bubbles: true, cancelable: true, composed: true, detail: { name: 'chatTyping', params: { ...event.detail, source: this.props.id, widgetType: 'ChatInput' } } }));\n this.props['onChatTyping'](event);\n } };\n // @ts-ignore\n onGenericEventHandler = (...args) => this.props.onGenericEvent?.(...args);\n // Lifecycle\n componentDidUpdate(prevProps) {\n if (this.ref.current) {\n }\n }\n componentDidMount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.addEventListener('geui:chatMessage', this.onChatMessageHandler);\n el.addEventListener('geui:chatTyping', this.onChatTypingHandler);\n el.addEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n componentWillUnmount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.removeEventListener('geui:chatMessage', this.onChatMessageHandler);\n el.removeEventListener('geui:chatTyping', this.onChatTypingHandler);\n el.removeEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n /**\n * Shows the component.\n */\n show() {\n return this.ref.current?.show?.();\n }\n /**\n * Hides the component.\n */\n hide() {\n return this.ref.current?.hide?.();\n }\n}\n//# sourceMappingURL=chat-input.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Component, createRef } from 'react';\nconst ChatListAttributes = {\n \"className\": {\n \"attr\": \"class\",\n \"type\": \"string\"\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"attr\": \"disabled\"\n },\n \"hidden\": {\n \"type\": \"boolean\",\n \"attr\": \"hidden\"\n },\n \"title\": {\n \"type\": \"string\",\n \"attr\": \"title\"\n },\n \"slot\": {\n \"type\": \"string\",\n \"attr\": \"slot\"\n }\n};\nconst ChatListProperties = {};\n/**\n * The ChatList component presents a list of ChatListItems, which can be activated unless disabled at item level or list level.\n *\n * Slots:\n * - _default_: `ChatListItem` components can be slotted to form the contents of the list.\n *\n * @see {@link https://geui-tst-ww-ffe.belwired.net/belfius/docs/#/components/controls/internal-navigation/chat-list/index Documentation}\n */\nexport class ChatList extends Component {\n ref = createRef();\n render() {\n const attrProps = {};\n for (const key in this.props) {\n // @ts-ignore\n const value = this.props[key];\n const attr = ChatListAttributes[key];\n const propType = ChatListProperties[key];\n if (propType)\n continue; // skip, not set by attr\n if (attr) {\n if (attr.type === 'boolean') {\n if (value)\n attrProps[attr.attr] = '';\n }\n else {\n attrProps[attr.attr] = value;\n }\n }\n else { // unrecognized property\n // @ts-ignore\n attrProps[key] = this.props[key]; // Just pass along, unrecognized property\n }\n }\n return (_jsx(\"geui-chat-list\", { ref: this.ref, ...attrProps, children: this.props.children }));\n }\n // Event handlers \n // @ts-ignore\n onGenericEventHandler = (...args) => this.props.onGenericEvent?.(...args);\n // Lifecycle\n componentDidUpdate(prevProps) {\n if (this.ref.current) {\n }\n }\n componentDidMount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.addEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n componentWillUnmount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.removeEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n /**\n * Disables all items in the list.\n */\n disable() {\n return this.ref.current?.disable?.();\n }\n /**\n * Enables all items in the list, unless they are individually disabled as well.\n */\n enable() {\n return this.ref.current?.enable?.();\n }\n /**\n * Shows the component.\n */\n show() {\n return this.ref.current?.show?.();\n }\n /**\n * Hides the component.\n */\n hide() {\n return this.ref.current?.hide?.();\n }\n}\n//# sourceMappingURL=chat-list.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Component, createRef } from 'react';\nconst ChatListItemAttributes = {\n \"className\": {\n \"attr\": \"class\",\n \"type\": \"string\"\n },\n \"titleText\": {\n \"type\": \"string\",\n \"attr\": \"title-text\"\n },\n \"descriptionText\": {\n \"type\": \"string\",\n \"attr\": \"description-text\"\n },\n \"linkText\": {\n \"type\": \"string\",\n \"attr\": \"link-text\"\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"attr\": \"disabled\"\n },\n \"hidden\": {\n \"type\": \"boolean\",\n \"attr\": \"hidden\"\n },\n \"title\": {\n \"type\": \"string\",\n \"attr\": \"title\"\n },\n \"slot\": {\n \"type\": \"string\",\n \"attr\": \"slot\"\n }\n};\nconst ChatListItemProperties = {};\n/**\n * The ChatListItem component presents an item for a ChatList component.\n *\n * As such it can only be used as a direct child to a ChatList.\n *\n *\n *\n * It features a title, a description and a link as contents, all optional.\n *\n * It also provides a slot for a Squircle or similar.\n *\n *\n *\n * Note that the link is presentational only; the whole item is clickable.\n *\n * Slots:\n * - _default_: A `Squircle` component (or similar) can be slotted and will take place on the left side.,Only one instance should be slotted.\n *\n * @see {@link https://geui-tst-ww-ffe.belwired.net/belfius/docs/#/components/controls/internal-navigation/chat-list/item Documentation}\n */\nexport class ChatListItem extends Component {\n ref = createRef();\n render() {\n const attrProps = {};\n for (const key in this.props) {\n // @ts-ignore\n const value = this.props[key];\n const attr = ChatListItemAttributes[key];\n const propType = ChatListItemProperties[key];\n if (propType)\n continue; // skip, not set by attr\n if (attr) {\n if (attr.type === 'boolean') {\n if (value)\n attrProps[attr.attr] = '';\n }\n else {\n attrProps[attr.attr] = value;\n }\n }\n else { // unrecognized property\n // @ts-ignore\n attrProps[key] = this.props[key]; // Just pass along, unrecognized property\n }\n }\n return (_jsx(\"geui-chat-list-item\", { ref: this.ref, ...attrProps, children: this.props.children }));\n }\n // Event handlers \n // @ts-ignore\n onActivatedHandler = (event) => { if (this.props['onActivated']) {\n event.target.dispatchEvent(new CustomEvent('geui:genericEvent', { bubbles: true, cancelable: true, composed: true, detail: { name: 'activated', params: { ...event.detail, source: this.props.id, widgetType: 'ChatListItem' } } }));\n this.props['onActivated'](event);\n } };\n // @ts-ignore\n onGenericEventHandler = (...args) => this.props.onGenericEvent?.(...args);\n // Lifecycle\n componentDidUpdate(prevProps) {\n if (this.ref.current) {\n }\n }\n componentDidMount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.addEventListener('geui:activated', this.onActivatedHandler);\n el.addEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n componentWillUnmount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.removeEventListener('geui:activated', this.onActivatedHandler);\n el.removeEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n /**\n * Activates the item.\n *\n * It must be enabled to allow activation.\n *\n *\n *\n * This has the same effect as clicking it, and fires a `geui:activated` event.\n */\n activate() {\n return this.ref.current?.activate?.();\n }\n /**\n * Disables the item.\n */\n disable() {\n return this.ref.current?.disable?.();\n }\n /**\n * Enables the item.\n *\n *\n *\n * Note that the item can still be disabled at ChatList level.\n */\n enable() {\n return this.ref.current?.enable?.();\n }\n /**\n * Shows the component.\n */\n show() {\n return this.ref.current?.show?.();\n }\n /**\n * Hides the component.\n */\n hide() {\n return this.ref.current?.hide?.();\n }\n}\n//# sourceMappingURL=chat-list-item.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Component, createRef } from 'react';\nconst DatePickerAttributes = {\n \"className\": {\n \"attr\": \"class\",\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\",\n \"attr\": \"value\"\n },\n \"startDate\": {\n \"type\": \"string\",\n \"attr\": \"start-date\"\n },\n \"endDate\": {\n \"type\": \"string\",\n \"attr\": \"end-date\"\n },\n \"disabledDates\": {\n \"type\": \"string\",\n \"attr\": \"disabled-dates\"\n },\n \"disabledDays\": {\n \"type\": \"string\",\n \"attr\": \"disabled-days\"\n },\n \"disabledWeekDays\": {\n \"type\": \"string\",\n \"attr\": \"disabled-week-days\"\n },\n \"disabledMonths\": {\n \"type\": \"string\",\n \"attr\": \"disabled-months\"\n },\n \"actionButtons\": {\n \"type\": \"boolean\",\n \"attr\": \"action-buttons\"\n },\n \"hidden\": {\n \"type\": \"boolean\",\n \"attr\": \"hidden\"\n },\n \"title\": {\n \"type\": \"string\",\n \"attr\": \"title\"\n },\n \"slot\": {\n \"type\": \"string\",\n \"attr\": \"slot\"\n }\n};\nconst DatePickerProperties = {};\n/**\n * A picker component to choose a date. This picker serves as a companion component for another control such as an input or a button.\n *\n *\n *\n * It can be configured with a variety of properties to limit valid dates, such as:\n *\n *\n *\n * - `startDate` and `endDate` to set a range\n *\n * - `disabledDates` to disable specific dates\n *\n * - `disabledDays` to disable certain days of the month recurrently\n *\n * - `disabledWeekDays` to disable certain days of the week recurrently\n *\n * - `disabledMonths` to disable entire months recurrently\n *\n *\n *\n * _Cancel_ and _Confirm_ buttons can also be shown optionally. These can be used to control when to commit to a chosen value.\n *\n *\n *\n * #### General notes\n *\n *\n *\n * - All `Date` instances used by the DatePicker will have their time part `HH:mm:ss.sssZ` discarded.\n *\n * - All `Date` instances use local time.\n *\n * - The component only provides the actual picker content. The way how it is to be framed and placed on a page (centered dialog, anchored popover, embedded, ...) is up to the implementer, as requirements may vary between use-cases or associated components.\n * @see {@link https://geui-tst-ww-ffe.belwired.net/belfius/docs/#/components/controls/pickers/date-picker Documentation}\n */\nexport class DatePicker extends Component {\n ref = createRef();\n render() {\n const attrProps = {};\n for (const key in this.props) {\n // @ts-ignore\n const value = this.props[key];\n const attr = DatePickerAttributes[key];\n const propType = DatePickerProperties[key];\n if (propType)\n continue; // skip, not set by attr\n if (attr) {\n if (attr.type === 'boolean') {\n if (value)\n attrProps[attr.attr] = '';\n }\n else {\n attrProps[attr.attr] = value;\n }\n }\n else { // unrecognized property\n // @ts-ignore\n attrProps[key] = this.props[key]; // Just pass along, unrecognized property\n }\n }\n return (_jsx(\"geui-date-picker\", { ref: this.ref, ...attrProps }));\n }\n // Event handlers \n // @ts-ignore\n onValueChangedHandler = (event) => { if (this.props['onValueChanged']) {\n event.target.dispatchEvent(new CustomEvent('geui:genericEvent', { bubbles: true, cancelable: true, composed: true, detail: { name: 'valueChanged', params: { ...event.detail, source: this.props.id, widgetType: 'DatePicker' } } }));\n this.props['onValueChanged'](event);\n } };\n // @ts-ignore\n onCanceledHandler = (event) => { if (this.props['onCanceled']) {\n event.target.dispatchEvent(new CustomEvent('geui:genericEvent', { bubbles: true, cancelable: true, composed: true, detail: { name: 'canceled', params: { ...event.detail, source: this.props.id, widgetType: 'DatePicker' } } }));\n this.props['onCanceled'](event);\n } };\n // @ts-ignore\n onConfirmedHandler = (event) => { if (this.props['onConfirmed']) {\n event.target.dispatchEvent(new CustomEvent('geui:genericEvent', { bubbles: true, cancelable: true, composed: true, detail: { name: 'confirmed', params: { ...event.detail, source: this.props.id, widgetType: 'DatePicker' } } }));\n this.props['onConfirmed'](event);\n } };\n // @ts-ignore\n onGenericEventHandler = (...args) => this.props.onGenericEvent?.(...args);\n // Lifecycle\n componentDidUpdate(prevProps) {\n if (this.ref.current) {\n }\n }\n componentDidMount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.addEventListener('geui:valueChanged', this.onValueChangedHandler);\n el.addEventListener('geui:canceled', this.onCanceledHandler);\n el.addEventListener('geui:confirmed', this.onConfirmedHandler);\n el.addEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n componentWillUnmount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.removeEventListener('geui:valueChanged', this.onValueChangedHandler);\n el.removeEventListener('geui:canceled', this.onCanceledHandler);\n el.removeEventListener('geui:confirmed', this.onConfirmedHandler);\n el.removeEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n /**\n * Brings today's month into view.\n */\n showToday() {\n return this.ref.current?.showToday?.();\n }\n /**\n * Brings the current value's month into view, if available.\n */\n showValue() {\n return this.ref.current?.showValue?.();\n }\n /**\n * Brings the given date's month into view.\n */\n showMonth(date) {\n return this.ref.current?.showMonth?.(date);\n }\n /**\n * Shows the component.\n */\n show() {\n return this.ref.current?.show?.();\n }\n /**\n * Hides the component.\n */\n hide() {\n return this.ref.current?.hide?.();\n }\n}\n//# sourceMappingURL=date-picker.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Component, createRef } from 'react';\nconst DividerAttributes = {\n \"className\": {\n \"attr\": \"class\",\n \"type\": \"string\"\n },\n \"spacing\": {\n \"type\": \"boolean\",\n \"attr\": \"spacing\"\n },\n \"color\": {\n \"type\": \"string\",\n \"attr\": \"color\"\n },\n \"leftDecoration\": {\n \"type\": \"string\",\n \"attr\": \"left-decoration\"\n },\n \"rightDecoration\": {\n \"type\": \"string\",\n \"attr\": \"right-decoration\"\n },\n \"text\": {\n \"type\": \"string\",\n \"attr\": \"text\"\n },\n \"textColor\": {\n \"type\": \"string\",\n \"attr\": \"text-color\"\n },\n \"hidden\": {\n \"type\": \"boolean\",\n \"attr\": \"hidden\"\n },\n \"title\": {\n \"type\": \"string\",\n \"attr\": \"title\"\n },\n \"slot\": {\n \"type\": \"string\",\n \"attr\": \"slot\"\n }\n};\nconst DividerProperties = {};\n/**\n * Displays a horizontal divider, with optional decorations and/or text.\n * @see {@link https://geui-tst-ww-ffe.belwired.net/belfius/docs/#/components/presentational/basic/divider Documentation}\n */\nexport class Divider extends Component {\n ref = createRef();\n render() {\n const attrProps = {};\n for (const key in this.props) {\n // @ts-ignore\n const value = this.props[key];\n const attr = DividerAttributes[key];\n const propType = DividerProperties[key];\n if (propType)\n continue; // skip, not set by attr\n if (attr) {\n if (attr.type === 'boolean') {\n if (value)\n attrProps[attr.attr] = '';\n }\n else {\n attrProps[attr.attr] = value;\n }\n }\n else { // unrecognized property\n // @ts-ignore\n attrProps[key] = this.props[key]; // Just pass along, unrecognized property\n }\n }\n return (_jsx(\"geui-divider\", { ref: this.ref, ...attrProps }));\n }\n // Event handlers \n // @ts-ignore\n onGenericEventHandler = (...args) => this.props.onGenericEvent?.(...args);\n // Lifecycle\n componentDidUpdate(prevProps) {\n if (this.ref.current) {\n }\n }\n componentDidMount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.addEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n componentWillUnmount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.removeEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n /**\n * Shows the component.\n */\n show() {\n return this.ref.current?.show?.();\n }\n /**\n * Hides the component.\n */\n hide() {\n return this.ref.current?.hide?.();\n }\n}\n//# sourceMappingURL=divider.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Component, createRef } from 'react';\nconst IconAttributes = {\n \"className\": {\n \"attr\": \"class\",\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\",\n \"attr\": \"name\"\n },\n \"size\": {\n \"type\": \"string\",\n \"attr\": \"size\"\n },\n \"ariaLabel\": {\n \"type\": \"string\",\n \"attr\": \"aria-label\"\n },\n \"type\": {\n \"type\": \"string\",\n \"attr\": \"type\"\n },\n \"hidden\": {\n \"type\": \"boolean\",\n \"attr\": \"hidden\"\n },\n \"title\": {\n \"type\": \"string\",\n \"attr\": \"title\"\n },\n \"slot\": {\n \"type\": \"string\",\n \"attr\": \"slot\"\n }\n};\nconst IconProperties = {};\n/**\n * Displays pre-defined icons. All possible icons can be found under **resources**\n * @see {@link https://geui-tst-ww-ffe.belwired.net/belfius/docs/#/components/presentational/basic/icon Documentation}\n */\nexport class Icon extends Component {\n ref = createRef();\n render() {\n const attrProps = {};\n for (const key in this.props) {\n // @ts-ignore\n const value = this.props[key];\n const attr = IconAttributes[key];\n const propType = IconProperties[key];\n if (propType)\n continue; // skip, not set by attr\n if (attr) {\n if (attr.type === 'boolean') {\n if (value)\n attrProps[attr.attr] = '';\n }\n else {\n attrProps[attr.attr] = value;\n }\n }\n else { // unrecognized property\n // @ts-ignore\n attrProps[key] = this.props[key]; // Just pass along, unrecognized property\n }\n }\n return (_jsx(\"geui-icon\", { ref: this.ref, ...attrProps }));\n }\n // Event handlers \n // @ts-ignore\n onGenericEventHandler = (...args) => this.props.onGenericEvent?.(...args);\n // Lifecycle\n componentDidUpdate(prevProps) {\n if (this.ref.current) {\n }\n }\n componentDidMount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.addEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n componentWillUnmount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.removeEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n /**\n * Shows the component.\n */\n show() {\n return this.ref.current?.show?.();\n }\n /**\n * Hides the component.\n */\n hide() {\n return this.ref.current?.hide?.();\n }\n}\n//# sourceMappingURL=icon.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Component, createRef } from 'react';\nconst MarkdownAttributes = {\n \"className\": {\n \"attr\": \"class\",\n \"type\": \"string\"\n },\n \"inline\": {\n \"type\": \"boolean\",\n \"attr\": \"inline\"\n },\n \"clippedMargins\": {\n \"type\": \"boolean\",\n \"attr\": \"clipped-margins\"\n },\n \"adaptive\": {\n \"type\": \"boolean\",\n \"attr\": \"adaptive\"\n },\n \"content\": {\n \"type\": \"string\",\n \"attr\": \"content\"\n },\n \"hidden\": {\n \"type\": \"boolean\",\n \"attr\": \"hidden\"\n },\n \"title\": {\n \"type\": \"string\",\n \"attr\": \"title\"\n },\n \"slot\": {\n \"type\": \"string\",\n \"attr\": \"slot\"\n }\n};\nconst MarkdownProperties = {};\n/**\n * A component that takes in markdown content and renders it out as styled HTML.\n *\n *\n *\n * _« Note: The examples won't fully work correctly here as this documentation also uses markdown and interferes with them.\n *\n * Copy their markup into the playground for a proper presentation. »_\n *\n * Slots:\n * - _default_: The markdown content to render.,The slotted content will be ignored when the `content` property is also used.,,Be aware that there are some limitations when markdown is provided as slotted content!,In particular, basic links in the form of `` cannot be used as they will be parsed by the browser as element tags and result in faulty content.,Links in the form of `[text](url)` should be used instead.,These limitations don't apply when the `content` property is used.\n *\n * @see {@link https://geui-tst-ww-ffe.belwired.net/belfius/docs/#/components/presentational/content/markdown Documentation}\n */\nexport class Markdown extends Component {\n ref = createRef();\n render() {\n const attrProps = {};\n for (const key in this.props) {\n // @ts-ignore\n const value = this.props[key];\n const attr = MarkdownAttributes[key];\n const propType = MarkdownProperties[key];\n if (propType)\n continue; // skip, not set by attr\n if (attr) {\n if (attr.type === 'boolean') {\n if (value)\n attrProps[attr.attr] = '';\n }\n else {\n attrProps[attr.attr] = value;\n }\n }\n else { // unrecognized property\n // @ts-ignore\n attrProps[key] = this.props[key]; // Just pass along, unrecognized property\n }\n }\n return (_jsx(\"geui-markdown\", { ref: this.ref, ...attrProps, children: this.props.children }));\n }\n // Event handlers \n // @ts-ignore\n onGenericEventHandler = (...args) => this.props.onGenericEvent?.(...args);\n // Lifecycle\n componentDidUpdate(prevProps) {\n if (this.ref.current) {\n }\n }\n componentDidMount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.addEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n componentWillUnmount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.removeEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n /**\n * Shows the component.\n */\n show() {\n return this.ref.current?.show?.();\n }\n /**\n * Hides the component.\n */\n hide() {\n return this.ref.current?.hide?.();\n }\n}\n//# sourceMappingURL=markdown.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Component, createRef } from 'react';\nconst ChatCarouselCardAttributes = {\n \"className\": {\n \"attr\": \"class\",\n \"type\": \"string\"\n },\n \"titleText\": {\n \"type\": \"string\",\n \"attr\": \"title-text\"\n },\n \"descriptionText\": {\n \"type\": \"string\",\n \"attr\": \"description-text\"\n },\n \"linkText\": {\n \"type\": \"string\",\n \"attr\": \"link-text\"\n },\n \"imageSrc\": {\n \"type\": \"string\",\n \"attr\": \"image-src\"\n },\n \"hidden\": {\n \"type\": \"boolean\",\n \"attr\": \"hidden\"\n },\n \"title\": {\n \"type\": \"string\",\n \"attr\": \"title\"\n },\n \"slot\": {\n \"type\": \"string\",\n \"attr\": \"slot\"\n }\n};\nconst ChatCarouselCardProperties = {};\n/**\n * This component is one of the possible contents to be used inside the ChatCarouselItem component.\n *\n *\n *\n * It feaures an optional image as heading, or a slotted PaymentCard component for more specific payment tailored cards.\n *\n * Furthermore its common content consists of a title, a description and a link, all optional.\n *\n *\n *\n * The ChatCarouselCard also supports slotting in ChatActionButtonGroup components to add actions to the card.\n *\n * Similar to ChatBubble components, these will appear at the bottom.\n *\n * Slots:\n * - _default_: - `ChatActionButtonGroup` components can be slotted and will be positioned at the bottom of the card automatically.,,- A `PaymentCard` component can be slotted and will will take place as the heading.,This will override any configured `imageSrc` value. ,Note: The component is designed to host only one `PaymentCard` component instance.,Slotting more will create a stacked effect and is not currently supported.\n *\n * @see {@link https://geui-tst-ww-ffe.belwired.net/belfius/docs/#/components/presentational/images/chat-carousel-card Documentation}\n */\nexport class ChatCarouselCard extends Component {\n ref = createRef();\n render() {\n const attrProps = {};\n for (const key in this.props) {\n // @ts-ignore\n const value = this.props[key];\n const attr = ChatCarouselCardAttributes[key];\n const propType = ChatCarouselCardProperties[key];\n if (propType)\n continue; // skip, not set by attr\n if (attr) {\n if (attr.type === 'boolean') {\n if (value)\n attrProps[attr.attr] = '';\n }\n else {\n attrProps[attr.attr] = value;\n }\n }\n else { // unrecognized property\n // @ts-ignore\n attrProps[key] = this.props[key]; // Just pass along, unrecognized property\n }\n }\n return (_jsx(\"geui-chat-carousel-card\", { ref: this.ref, ...attrProps, children: this.props.children }));\n }\n // Event handlers \n // @ts-ignore\n onClickedHandler = (event) => { if (this.props['onClicked']) {\n event.target.dispatchEvent(new CustomEvent('geui:genericEvent', { bubbles: true, cancelable: true, composed: true, detail: { name: 'clicked', params: { ...event.detail, source: this.props.id, widgetType: 'ChatCarouselCard' } } }));\n this.props['onClicked'](event);\n } };\n // @ts-ignore\n onGenericEventHandler = (...args) => this.props.onGenericEvent?.(...args);\n // Lifecycle\n componentDidUpdate(prevProps) {\n if (this.ref.current) {\n }\n }\n componentDidMount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.addEventListener('geui:clicked', this.onClickedHandler);\n el.addEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n componentWillUnmount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.removeEventListener('geui:clicked', this.onClickedHandler);\n el.removeEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n /**\n * Shows the component.\n */\n show() {\n return this.ref.current?.show?.();\n }\n /**\n * Hides the component.\n */\n hide() {\n return this.ref.current?.hide?.();\n }\n}\n//# sourceMappingURL=chat-carousel-card.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Component, createRef } from 'react';\nconst ChatCarouselCustomCardAttributes = {\n \"className\": {\n \"attr\": \"class\",\n \"type\": \"string\"\n },\n \"icon\": {\n \"type\": \"string\",\n \"attr\": \"icon\"\n },\n \"iconPressed\": {\n \"type\": \"string\",\n \"attr\": \"icon-pressed\"\n },\n \"src\": {\n \"type\": \"string\",\n \"attr\": \"src\"\n },\n \"text\": {\n \"type\": \"string\",\n \"attr\": \"text\"\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"attr\": \"disabled\"\n },\n \"hidden\": {\n \"type\": \"boolean\",\n \"attr\": \"hidden\"\n },\n \"title\": {\n \"type\": \"string\",\n \"attr\": \"title\"\n },\n \"slot\": {\n \"type\": \"string\",\n \"attr\": \"slot\"\n }\n};\nconst ChatCarouselCustomCardProperties = {};\n/**\n * This component is one of the possible contents to be used inside the ChatCarouselItem component.\n *\n *\n *\n * The whole card functions as a button and can be disabled.\n *\n *\n *\n * It contains an icon and up to 4 lines of text, to explain the intention of the card.\n * @see {@link https://geui-tst-ww-ffe.belwired.net/belfius/docs/#/components/presentational/images/chat-carousel-custom-card Documentation}\n */\nexport class ChatCarouselCustomCard extends Component {\n ref = createRef();\n render() {\n const attrProps = {};\n for (const key in this.props) {\n // @ts-ignore\n const value = this.props[key];\n const attr = ChatCarouselCustomCardAttributes[key];\n const propType = ChatCarouselCustomCardProperties[key];\n if (propType)\n continue; // skip, not set by attr\n if (attr) {\n if (attr.type === 'boolean') {\n if (value)\n attrProps[attr.attr] = '';\n }\n else {\n attrProps[attr.attr] = value;\n }\n }\n else { // unrecognized property\n // @ts-ignore\n attrProps[key] = this.props[key]; // Just pass along, unrecognized property\n }\n }\n return (_jsx(\"geui-chat-carousel-custom-card\", { ref: this.ref, ...attrProps }));\n }\n // Event handlers \n // @ts-ignore\n onActivatedHandler = (event) => { if (this.props['onActivated']) {\n event.target.dispatchEvent(new CustomEvent('geui:genericEvent', { bubbles: true, cancelable: true, composed: true, detail: { name: 'activated', params: { ...event.detail, source: this.props.id, widgetType: 'ChatCarouselCustomCard' } } }));\n this.props['onActivated'](event);\n } };\n // @ts-ignore\n onGenericEventHandler = (...args) => this.props.onGenericEvent?.(...args);\n // Lifecycle\n componentDidUpdate(prevProps) {\n if (this.ref.current) {\n }\n }\n componentDidMount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.addEventListener('geui:activated', this.onActivatedHandler);\n el.addEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n componentWillUnmount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.removeEventListener('geui:activated', this.onActivatedHandler);\n el.removeEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n /**\n * Activates the card.\n *\n * The card must be enabled to allow activation.\n *\n *\n *\n * This has the same effect as clicking the card, and fires a `geui:activated` event.\n */\n activate() {\n return this.ref.current?.activate?.();\n }\n /**\n * Disables the card.\n */\n disable() {\n return this.ref.current?.disable?.();\n }\n /**\n * Enables the card.\n */\n enable() {\n return this.ref.current?.enable?.();\n }\n /**\n * Shows the component.\n */\n show() {\n return this.ref.current?.show?.();\n }\n /**\n * Hides the component.\n */\n hide() {\n return this.ref.current?.hide?.();\n }\n}\n//# sourceMappingURL=chat-carousel-custom-card.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Component, createRef } from 'react';\nconst ChatCarouselAttributes = {\n \"className\": {\n \"attr\": \"class\",\n \"type\": \"string\"\n },\n \"a11yLabel\": {\n \"type\": \"string\",\n \"attr\": \"a11y-label\"\n },\n \"hidden\": {\n \"type\": \"boolean\",\n \"attr\": \"hidden\"\n },\n \"title\": {\n \"type\": \"string\",\n \"attr\": \"title\"\n },\n \"slot\": {\n \"type\": \"string\",\n \"attr\": \"slot\"\n }\n};\nconst ChatCarouselProperties = {};\n/**\n * This carousel component presents a set of items side by side, navigatable by swiping or using buttons otherwise.\n *\n * It functions for both the normal as well as the custom carousel used in the Personal Assistance project.\n *\n *\n *\n * All carousel content is contained in CardCarouselItem instances. Possible content is currently either\n *\n * ChatCarouselCard components (normal carousel) or ChatCarouselCustomCard components (custom carousel).\n *\n * These components should obviously not be mixed among items.\n *\n * Slots:\n * - _default_: The ChatCarousel expects either ChatCarouselCard elements or ChatCarouselFlowCard elements as its children.\n *\n * @see {@link https://geui-tst-ww-ffe.belwired.net/belfius/docs/#/components/presentational/images/chat-carousel/index Documentation}\n */\nexport class ChatCarousel extends Component {\n ref = createRef();\n render() {\n const attrProps = {};\n for (const key in this.props) {\n // @ts-ignore\n const value = this.props[key];\n const attr = ChatCarouselAttributes[key];\n const propType = ChatCarouselProperties[key];\n if (propType)\n continue; // skip, not set by attr\n if (attr) {\n if (attr.type === 'boolean') {\n if (value)\n attrProps[attr.attr] = '';\n }\n else {\n attrProps[attr.attr] = value;\n }\n }\n else { // unrecognized property\n // @ts-ignore\n attrProps[key] = this.props[key]; // Just pass along, unrecognized property\n }\n }\n return (_jsx(\"geui-chat-carousel\", { ref: this.ref, ...attrProps, children: this.props.children }));\n }\n // Event handlers \n // @ts-ignore\n onGenericEventHandler = (...args) => this.props.onGenericEvent?.(...args);\n // Lifecycle\n componentDidUpdate(prevProps) {\n if (this.ref.current) {\n }\n }\n componentDidMount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.addEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n componentWillUnmount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.removeEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n /**\n * Shows the component.\n */\n show() {\n return this.ref.current?.show?.();\n }\n /**\n * Hides the component.\n */\n hide() {\n return this.ref.current?.hide?.();\n }\n}\n//# sourceMappingURL=chat-carousel.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Component, createRef } from 'react';\nconst ChatCarouselItemAttributes = {\n \"className\": {\n \"attr\": \"class\",\n \"type\": \"string\"\n },\n \"hidden\": {\n \"type\": \"boolean\",\n \"attr\": \"hidden\"\n },\n \"title\": {\n \"type\": \"string\",\n \"attr\": \"title\"\n },\n \"slot\": {\n \"type\": \"string\",\n \"attr\": \"slot\"\n }\n};\nconst ChatCarouselItemProperties = {};\n/**\n * This component represents an item of the ChatCarousel and acts as a container for further content.\n *\n * Currently this is either a ChatCarouselCard component or ChatCarouselCustomCard component.\n *\n * Don't mix different content across items however, the ChatCarousel expects items to be consistent (dimensions in particular).\n *\n * Slots:\n * - _default_: Any content to place inside the item.,,Currently this should be a ChatCarouselCard or ChatCarouselCustomCard instance.\n *\n * @see {@link https://geui-tst-ww-ffe.belwired.net/belfius/docs/#/components/presentational/images/chat-carousel/item Documentation}\n */\nexport class ChatCarouselItem extends Component {\n ref = createRef();\n render() {\n const attrProps = {};\n for (const key in this.props) {\n // @ts-ignore\n const value = this.props[key];\n const attr = ChatCarouselItemAttributes[key];\n const propType = ChatCarouselItemProperties[key];\n if (propType)\n continue; // skip, not set by attr\n if (attr) {\n if (attr.type === 'boolean') {\n if (value)\n attrProps[attr.attr] = '';\n }\n else {\n attrProps[attr.attr] = value;\n }\n }\n else { // unrecognized property\n // @ts-ignore\n attrProps[key] = this.props[key]; // Just pass along, unrecognized property\n }\n }\n return (_jsx(\"geui-chat-carousel-item\", { ref: this.ref, ...attrProps, children: this.props.children }));\n }\n // Event handlers \n // @ts-ignore\n onGenericEventHandler = (...args) => this.props.onGenericEvent?.(...args);\n // Lifecycle\n componentDidUpdate(prevProps) {\n if (this.ref.current) {\n }\n }\n componentDidMount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.addEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n componentWillUnmount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.removeEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n /**\n * Shows the component.\n */\n show() {\n return this.ref.current?.show?.();\n }\n /**\n * Hides the component.\n */\n hide() {\n return this.ref.current?.hide?.();\n }\n}\n//# sourceMappingURL=chat-carousel-item.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Component, createRef } from 'react';\nconst ChatImageAttributes = {\n \"className\": {\n \"attr\": \"class\",\n \"type\": \"string\"\n },\n \"src\": {\n \"type\": \"string\",\n \"attr\": \"src\"\n },\n \"label\": {\n \"type\": \"string\",\n \"attr\": \"label\"\n },\n \"hidden\": {\n \"type\": \"boolean\",\n \"attr\": \"hidden\"\n },\n \"title\": {\n \"type\": \"string\",\n \"attr\": \"title\"\n },\n \"slot\": {\n \"type\": \"string\",\n \"attr\": \"slot\"\n }\n};\nconst ChatImageProperties = {};\n/**\n * The ChatImage component allows for placing an image in a chat conversation.\n *\n * It needs to be slotted inside a ChatBubble as content.\n * @see {@link https://geui-tst-ww-ffe.belwired.net/belfius/docs/#/components/presentational/images/chat-image Documentation}\n */\nexport class ChatImage extends Component {\n ref = createRef();\n render() {\n const attrProps = {};\n for (const key in this.props) {\n // @ts-ignore\n const value = this.props[key];\n const attr = ChatImageAttributes[key];\n const propType = ChatImageProperties[key];\n if (propType)\n continue; // skip, not set by attr\n if (attr) {\n if (attr.type === 'boolean') {\n if (value)\n attrProps[attr.attr] = '';\n }\n else {\n attrProps[attr.attr] = value;\n }\n }\n else { // unrecognized property\n // @ts-ignore\n attrProps[key] = this.props[key]; // Just pass along, unrecognized property\n }\n }\n return (_jsx(\"geui-chat-image\", { ref: this.ref, ...attrProps }));\n }\n // Event handlers \n // @ts-ignore\n onGenericEventHandler = (...args) => this.props.onGenericEvent?.(...args);\n // Lifecycle\n componentDidUpdate(prevProps) {\n if (this.ref.current) {\n }\n }\n componentDidMount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.addEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n componentWillUnmount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.removeEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n /**\n * Shows the component.\n */\n show() {\n return this.ref.current?.show?.();\n }\n /**\n * Hides the component.\n */\n hide() {\n return this.ref.current?.hide?.();\n }\n}\n//# sourceMappingURL=chat-image.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Component, createRef } from 'react';\nconst NoticeAttributes = {\n \"className\": {\n \"attr\": \"class\",\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\",\n \"attr\": \"type\"\n },\n \"heading\": {\n \"type\": \"string\",\n \"attr\": \"heading\"\n },\n \"content\": {\n \"type\": \"string\",\n \"attr\": \"content\"\n },\n \"cta\": {\n \"type\": \"string\",\n \"attr\": \"cta\"\n },\n \"closable\": {\n \"type\": \"boolean\",\n \"attr\": \"closable\"\n },\n \"minimizable\": {\n \"type\": \"boolean\",\n \"attr\": \"minimizable\"\n },\n \"minimized\": {\n \"type\": \"boolean\",\n \"attr\": \"minimized\"\n },\n \"hidden\": {\n \"type\": \"boolean\",\n \"attr\": \"hidden\"\n },\n \"title\": {\n \"type\": \"string\",\n \"attr\": \"title\"\n },\n \"slot\": {\n \"type\": \"string\",\n \"attr\": \"slot\"\n }\n};\nconst NoticeProperties = {};\n/**\n * Used to display notifications.\n * @see {@link https://geui-tst-ww-ffe.belwired.net/belfius/docs/#/components/presentational/information/notice Documentation}\n */\nexport class Notice extends Component {\n ref = createRef();\n render() {\n const attrProps = {};\n for (const key in this.props) {\n // @ts-ignore\n const value = this.props[key];\n const attr = NoticeAttributes[key];\n const propType = NoticeProperties[key];\n if (propType)\n continue; // skip, not set by attr\n if (attr) {\n if (attr.type === 'boolean') {\n if (value)\n attrProps[attr.attr] = '';\n }\n else {\n attrProps[attr.attr] = value;\n }\n }\n else { // unrecognized property\n // @ts-ignore\n attrProps[key] = this.props[key]; // Just pass along, unrecognized property\n }\n }\n return (_jsx(\"geui-notice\", { ref: this.ref, ...attrProps }));\n }\n // Event handlers \n // @ts-ignore\n onDeactivatedHandler = (event) => { if (this.props['onDeactivated']) {\n event.target.dispatchEvent(new CustomEvent('geui:genericEvent', { bubbles: true, cancelable: true, composed: true, detail: { name: 'deactivated', params: { ...event.detail, source: this.props.id, widgetType: 'Notice' } } }));\n this.props['onDeactivated'](event);\n } };\n // @ts-ignore\n onClickedHandler = (event) => { if (this.props['onClicked']) {\n event.target.dispatchEvent(new CustomEvent('geui:genericEvent', { bubbles: true, cancelable: true, composed: true, detail: { name: 'clicked', params: { ...event.detail, source: this.props.id, widgetType: 'Notice' } } }));\n this.props['onClicked'](event);\n } };\n // @ts-ignore\n onGenericEventHandler = (...args) => this.props.onGenericEvent?.(...args);\n // Lifecycle\n componentDidUpdate(prevProps) {\n if (this.ref.current) {\n }\n }\n componentDidMount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.addEventListener('geui:deactivated', this.onDeactivatedHandler);\n el.addEventListener('geui:clicked', this.onClickedHandler);\n el.addEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n componentWillUnmount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.removeEventListener('geui:deactivated', this.onDeactivatedHandler);\n el.removeEventListener('geui:clicked', this.onClickedHandler);\n el.removeEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n /**\n * Shows the component.\n */\n show() {\n return this.ref.current?.show?.();\n }\n /**\n * Hides the component.\n */\n hide() {\n return this.ref.current?.hide?.();\n }\n}\n//# sourceMappingURL=notice.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Component, createRef } from 'react';\nconst BodyTextAttributes = {\n \"className\": {\n \"attr\": \"class\",\n \"type\": \"string\"\n },\n \"size\": {\n \"type\": \"string\",\n \"attr\": \"size\"\n },\n \"adaptive\": {\n \"type\": \"boolean\",\n \"attr\": \"adaptive\"\n },\n \"accent\": {\n \"type\": \"boolean\",\n \"attr\": \"accent\"\n },\n \"variant\": {\n \"type\": \"string\",\n \"attr\": \"variant\"\n },\n \"strikethrough\": {\n \"type\": \"boolean\",\n \"attr\": \"strikethrough\"\n },\n \"hidden\": {\n \"type\": \"boolean\",\n \"attr\": \"hidden\"\n },\n \"title\": {\n \"type\": \"string\",\n \"attr\": \"title\"\n },\n \"slot\": {\n \"type\": \"string\",\n \"attr\": \"slot\"\n }\n};\nconst BodyTextProperties = {};\n/**\n * Shows generic text on a page\n *\n * Slots:\n * - _default_: Any provided content is used as the label content.\n\nNote that this includes non-text content as well, but no further accommodations are provided for such content. Other components might be more suitable for this.\n *\n * @see {@link https://geui-tst-ww-ffe.belwired.net/belfius/docs/#/components/presentational/texts/body-text Documentation}\n */\nexport class BodyText extends Component {\n ref = createRef();\n render() {\n const attrProps = {};\n for (const key in this.props) {\n // @ts-ignore\n const value = this.props[key];\n const attr = BodyTextAttributes[key];\n const propType = BodyTextProperties[key];\n if (propType)\n continue; // skip, not set by attr\n if (attr) {\n if (attr.type === 'boolean') {\n if (value)\n attrProps[attr.attr] = '';\n }\n else {\n attrProps[attr.attr] = value;\n }\n }\n else { // unrecognized property\n // @ts-ignore\n attrProps[key] = this.props[key]; // Just pass along, unrecognized property\n }\n }\n return (_jsx(\"geui-body-text\", { ref: this.ref, ...attrProps, children: this.props.children }));\n }\n // Event handlers \n // @ts-ignore\n onGenericEventHandler = (...args) => this.props.onGenericEvent?.(...args);\n // Lifecycle\n componentDidUpdate(prevProps) {\n if (this.ref.current) {\n }\n }\n componentDidMount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.addEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n componentWillUnmount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.removeEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n /**\n * Shows the component.\n */\n show() {\n return this.ref.current?.show?.();\n }\n /**\n * Hides the component.\n */\n hide() {\n return this.ref.current?.hide?.();\n }\n}\n//# sourceMappingURL=body-text.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Component, createRef } from 'react';\nconst TitleTextAttributes = {\n \"className\": {\n \"attr\": \"class\",\n \"type\": \"string\"\n },\n \"size\": {\n \"type\": \"string\",\n \"attr\": \"size\"\n },\n \"variant\": {\n \"type\": \"string\",\n \"attr\": \"variant\"\n },\n \"adaptive\": {\n \"type\": \"boolean\",\n \"attr\": \"adaptive\"\n },\n \"hidden\": {\n \"type\": \"boolean\",\n \"attr\": \"hidden\"\n },\n \"title\": {\n \"type\": \"string\",\n \"attr\": \"title\"\n },\n \"slot\": {\n \"type\": \"string\",\n \"attr\": \"slot\"\n }\n};\nconst TitleTextProperties = {};\n/**\n * This widget can be used to show content titles in different sizes.\n *\n * Slots:\n * - _default_: Any provided content is used as the title content.\n\nNote that this includes non-text content as well, but no further accommodations are provided for such content. Other components might be more suitable for this.\n *\n * @see {@link https://geui-tst-ww-ffe.belwired.net/belfius/docs/#/components/presentational/texts/title-text Documentation}\n */\nexport class TitleText extends Component {\n ref = createRef();\n render() {\n const attrProps = {};\n for (const key in this.props) {\n // @ts-ignore\n const value = this.props[key];\n const attr = TitleTextAttributes[key];\n const propType = TitleTextProperties[key];\n if (propType)\n continue; // skip, not set by attr\n if (attr) {\n if (attr.type === 'boolean') {\n if (value)\n attrProps[attr.attr] = '';\n }\n else {\n attrProps[attr.attr] = value;\n }\n }\n else { // unrecognized property\n // @ts-ignore\n attrProps[key] = this.props[key]; // Just pass along, unrecognized property\n }\n }\n return (_jsx(\"geui-title-text\", { ref: this.ref, ...attrProps, children: this.props.children }));\n }\n // Event handlers \n // @ts-ignore\n onGenericEventHandler = (...args) => this.props.onGenericEvent?.(...args);\n // Lifecycle\n componentDidUpdate(prevProps) {\n if (this.ref.current) {\n }\n }\n componentDidMount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.addEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n componentWillUnmount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.removeEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n /**\n * Shows the component.\n */\n show() {\n return this.ref.current?.show?.();\n }\n /**\n * Hides the component.\n */\n hide() {\n return this.ref.current?.hide?.();\n }\n}\n//# sourceMappingURL=title-text.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Component, createRef } from 'react';\nconst ChatBubbleAttributes = {\n \"className\": {\n \"attr\": \"class\",\n \"type\": \"string\"\n },\n \"variant\": {\n \"type\": \"string\",\n \"attr\": \"variant\"\n },\n \"preserveBreaks\": {\n \"type\": \"boolean\",\n \"attr\": \"preserve-breaks\"\n },\n \"hidden\": {\n \"type\": \"boolean\",\n \"attr\": \"hidden\"\n },\n \"title\": {\n \"type\": \"string\",\n \"attr\": \"title\"\n },\n \"slot\": {\n \"type\": \"string\",\n \"attr\": \"slot\"\n }\n};\nconst ChatBubbleProperties = {};\n/**\n * A content bubble to be used in a chat conversation. Can contain any content as message, but also provides default typography for plain text.\n *\n *\n *\n * The ChatBubble also supports ChatActionButtonGroup components to group ChatActionButton components at the bottom.\n *\n * Slots:\n * - _default_: Any content to present this chat bubble's message; can be plain text.,,As a special case, ChatActionButtonGroup components can also be slotted. These will be positioned at the bottom of the bubble automatically.\n *\n * @see {@link https://geui-tst-ww-ffe.belwired.net/belfius/docs/#/components/structural/containers/content/chat-bubble Documentation}\n */\nexport class ChatBubble extends Component {\n ref = createRef();\n render() {\n const attrProps = {};\n for (const key in this.props) {\n // @ts-ignore\n const value = this.props[key];\n const attr = ChatBubbleAttributes[key];\n const propType = ChatBubbleProperties[key];\n if (propType)\n continue; // skip, not set by attr\n if (attr) {\n if (attr.type === 'boolean') {\n if (value)\n attrProps[attr.attr] = '';\n }\n else {\n attrProps[attr.attr] = value;\n }\n }\n else { // unrecognized property\n // @ts-ignore\n attrProps[key] = this.props[key]; // Just pass along, unrecognized property\n }\n }\n return (_jsx(\"geui-chat-bubble\", { ref: this.ref, ...attrProps, children: this.props.children }));\n }\n // Event handlers \n // @ts-ignore\n onGenericEventHandler = (...args) => this.props.onGenericEvent?.(...args);\n // Lifecycle\n componentDidUpdate(prevProps) {\n if (this.ref.current) {\n }\n }\n componentDidMount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.addEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n componentWillUnmount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.removeEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n /**\n * Shows the component.\n */\n show() {\n return this.ref.current?.show?.();\n }\n /**\n * Hides the component.\n */\n hide() {\n return this.ref.current?.hide?.();\n }\n}\n//# sourceMappingURL=chat-bubble.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Component, createRef } from 'react';\nconst PadderAttributes = {\n \"className\": {\n \"attr\": \"class\",\n \"type\": \"string\"\n },\n \"size\": {\n \"type\": \"string\",\n \"attr\": \"size\"\n },\n \"sizeHorizontal\": {\n \"type\": \"string\",\n \"attr\": \"size-horizontal\"\n },\n \"sizeVertical\": {\n \"type\": \"string\",\n \"attr\": \"size-vertical\"\n },\n \"sizeLeft\": {\n \"type\": \"string\",\n \"attr\": \"size-left\"\n },\n \"sizeRight\": {\n \"type\": \"string\",\n \"attr\": \"size-right\"\n },\n \"sizeTop\": {\n \"type\": \"string\",\n \"attr\": \"size-top\"\n },\n \"sizeBottom\": {\n \"type\": \"string\",\n \"attr\": \"size-bottom\"\n },\n \"hidden\": {\n \"type\": \"boolean\",\n \"attr\": \"hidden\"\n },\n \"title\": {\n \"type\": \"string\",\n \"attr\": \"title\"\n },\n \"slot\": {\n \"type\": \"string\",\n \"attr\": \"slot\"\n }\n};\nconst PadderProperties = {};\n/**\n * Adds padding around its slotted content\n *\n * Slots:\n * - _default_: All content is slotted here (no name provided).\n *\n * @see {@link https://geui-tst-ww-ffe.belwired.net/belfius/docs/#/components/structural/containers/spacing/padder Documentation}\n */\nexport class Padder extends Component {\n ref = createRef();\n render() {\n const attrProps = {};\n for (const key in this.props) {\n // @ts-ignore\n const value = this.props[key];\n const attr = PadderAttributes[key];\n const propType = PadderProperties[key];\n if (propType)\n continue; // skip, not set by attr\n if (attr) {\n if (attr.type === 'boolean') {\n if (value)\n attrProps[attr.attr] = '';\n }\n else {\n attrProps[attr.attr] = value;\n }\n }\n else { // unrecognized property\n // @ts-ignore\n attrProps[key] = this.props[key]; // Just pass along, unrecognized property\n }\n }\n return (_jsx(\"geui-padder\", { ref: this.ref, ...attrProps, children: this.props.children }));\n }\n // Event handlers \n // @ts-ignore\n onGenericEventHandler = (...args) => this.props.onGenericEvent?.(...args);\n // Lifecycle\n componentDidUpdate(prevProps) {\n if (this.ref.current) {\n }\n }\n componentDidMount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.addEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n componentWillUnmount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.removeEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n /**\n * Shows the component.\n */\n show() {\n return this.ref.current?.show?.();\n }\n /**\n * Hides the component.\n */\n hide() {\n return this.ref.current?.hide?.();\n }\n}\n//# sourceMappingURL=padder.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Component, createRef } from 'react';\nconst AlertAttributes = {\n \"className\": {\n \"attr\": \"class\",\n \"type\": \"string\"\n },\n \"open\": {\n \"type\": \"boolean\",\n \"attr\": \"open\"\n },\n \"titleText\": {\n \"type\": \"string\",\n \"attr\": \"title-text\"\n },\n \"contentText\": {\n \"type\": \"string\",\n \"attr\": \"content-text\"\n },\n \"hidden\": {\n \"type\": \"boolean\",\n \"attr\": \"hidden\"\n },\n \"title\": {\n \"type\": \"string\",\n \"attr\": \"title\"\n },\n \"slot\": {\n \"type\": \"string\",\n \"attr\": \"slot\"\n }\n};\nconst AlertProperties = {};\n/**\n * This component represents a styled custom 'alert' in the form of a centered modal dialog.\n *\n *\n *\n * It has a title as well as some content, either as a basic text string, or something slotted.\n *\n * It also allows for an arbitrary number of action buttons in a separate slot.\n *\n *\n *\n * Keep in mind however that alerts should only contain essential actionable information and always remain to the point; they are expected to be short!\n *\n * Slots:\n * - content: Contents in this slot will be used as the alert's content. This will override any value passed to `contentText`.\n * - buttons: Action Buttons in this slot will be used as the alert's buttons at the bottom.,,There should be at least 1 button, representing the alert's actionable intent. Otherwise the alert is misused.\n *\n * @see {@link https://geui-tst-ww-ffe.belwired.net/belfius/docs/#/components/structural/panes/alert Documentation}\n */\nexport class Alert extends Component {\n ref = createRef();\n render() {\n const attrProps = {};\n for (const key in this.props) {\n // @ts-ignore\n const value = this.props[key];\n const attr = AlertAttributes[key];\n const propType = AlertProperties[key];\n if (propType)\n continue; // skip, not set by attr\n if (attr) {\n if (attr.type === 'boolean') {\n if (value)\n attrProps[attr.attr] = '';\n }\n else {\n attrProps[attr.attr] = value;\n }\n }\n else { // unrecognized property\n // @ts-ignore\n attrProps[key] = this.props[key]; // Just pass along, unrecognized property\n }\n }\n return (_jsx(\"geui-alert\", { ref: this.ref, ...attrProps, children: this.props.children }));\n }\n // Event handlers \n // @ts-ignore\n onClosedHandler = (event) => { if (this.props['onClosed']) {\n event.target.dispatchEvent(new CustomEvent('geui:genericEvent', { bubbles: true, cancelable: true, composed: true, detail: { name: 'closed', params: { ...event.detail, source: this.props.id, widgetType: 'Alert' } } }));\n this.props['onClosed'](event);\n } };\n // @ts-ignore\n onGenericEventHandler = (...args) => this.props.onGenericEvent?.(...args);\n // Lifecycle\n componentDidUpdate(prevProps) {\n if (this.ref.current) {\n }\n }\n componentDidMount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.addEventListener('geui:closed', this.onClosedHandler);\n el.addEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n componentWillUnmount() {\n if (this.ref?.current) {\n const el = this.ref.current;\n el.removeEventListener('geui:closed', this.onClosedHandler);\n el.removeEventListener('geui:genericEvent', this.onGenericEventHandler);\n }\n }\n /**\n * Closes the alert.\n */\n close() {\n return this.ref.current?.close?.();\n }\n /**\n * Shows the component.\n */\n show() {\n return this.ref.current?.show?.();\n }\n /**\n * Hides the component.\n */\n hide() {\n return this.ref.current?.hide?.();\n }\n}\n//# sourceMappingURL=alert.js.map","export const INITIAL_PAGE_SIZE = 40;\nexport const MAX_DAYS = 180;\nexport const PAGE_SIZE = 20;\nexport const DISPLAY_NUDGE_DELAY = 10000;\nexport const URL_APP_KEY_PATTERN = \"appkey=\";\n\n/**\n * Maximum character number handle by Kore in a single message with our current settings\n * Good to know, business wanted at first a 5000 limit, this const might be updated in the future with Kore settings\n */\nexport const MAX_MESSAGE_LENGTH = \"1199\";\n\n/**\n * Defines the assets container on where images are stored (in GEFK)\n */\nexport const ASSETS_CONTAINER = \"convai\";\n\nexport const WEB_APP_READY_EVENT_NAME = \"webAppIsReady\";\n","export enum DatalayerEvents {\r\n START_MYBO = \"startMyBo\",\r\n CLOSE_PA = \"closePA\",\r\n CLOSE_MYBO = \"closeMyBo\",\r\n FAB_CLICKED = \"FABClicked\",\r\n}\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isEventSourceSupported = exports.isReactNative = exports.ReadyState = exports.DEFAULT_HEARTBEAT = exports.UNPARSABLE_JSON_OBJECT = exports.DEFAULT_RECONNECT_INTERVAL_MS = exports.DEFAULT_RECONNECT_LIMIT = exports.SOCKET_IO_PING_CODE = exports.SOCKET_IO_PATH = exports.SOCKET_IO_PING_INTERVAL = exports.DEFAULT_EVENT_SOURCE_OPTIONS = exports.EMPTY_EVENT_HANDLERS = exports.DEFAULT_OPTIONS = void 0;\nvar MILLISECONDS = 1;\nvar SECONDS = 1000 * MILLISECONDS;\nexports.DEFAULT_OPTIONS = {};\nexports.EMPTY_EVENT_HANDLERS = {};\nexports.DEFAULT_EVENT_SOURCE_OPTIONS = {\n withCredentials: false,\n events: exports.EMPTY_EVENT_HANDLERS,\n};\nexports.SOCKET_IO_PING_INTERVAL = 25 * SECONDS;\nexports.SOCKET_IO_PATH = '/socket.io/?EIO=3&transport=websocket';\nexports.SOCKET_IO_PING_CODE = '2';\nexports.DEFAULT_RECONNECT_LIMIT = 20;\nexports.DEFAULT_RECONNECT_INTERVAL_MS = 5000;\nexports.UNPARSABLE_JSON_OBJECT = {};\nexports.DEFAULT_HEARTBEAT = {\n message: 'ping',\n timeout: 60000,\n interval: 25000,\n};\nvar ReadyState;\n(function (ReadyState) {\n ReadyState[ReadyState[\"UNINSTANTIATED\"] = -1] = \"UNINSTANTIATED\";\n ReadyState[ReadyState[\"CONNECTING\"] = 0] = \"CONNECTING\";\n ReadyState[ReadyState[\"OPEN\"] = 1] = \"OPEN\";\n ReadyState[ReadyState[\"CLOSING\"] = 2] = \"CLOSING\";\n ReadyState[ReadyState[\"CLOSED\"] = 3] = \"CLOSED\";\n})(ReadyState || (exports.ReadyState = ReadyState = {}));\nvar eventSourceSupported = function () {\n try {\n return 'EventSource' in globalThis;\n }\n catch (e) {\n return false;\n }\n};\nexports.isReactNative = typeof navigator !== 'undefined' && navigator.product === 'ReactNative';\nexports.isEventSourceSupported = !exports.isReactNative && eventSourceSupported();\n//# sourceMappingURL=constants.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resetWebSockets = exports.sharedWebSockets = void 0;\nexports.sharedWebSockets = {};\nvar resetWebSockets = function (url) {\n if (url && exports.sharedWebSockets.hasOwnProperty(url)) {\n delete exports.sharedWebSockets[url];\n }\n else {\n for (var url_1 in exports.sharedWebSockets) {\n if (exports.sharedWebSockets.hasOwnProperty(url_1)) {\n delete exports.sharedWebSockets[url_1];\n }\n }\n }\n};\nexports.resetWebSockets = resetWebSockets;\n//# sourceMappingURL=globals.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setUpSocketIOPing = exports.appendQueryParams = exports.parseSocketIOUrl = void 0;\nvar constants_1 = require(\"./constants\");\nvar parseSocketIOUrl = function (url) {\n if (url) {\n var isSecure = /^https|wss/.test(url);\n var strippedProtocol = url.replace(/^(https?|wss?)(:\\/\\/)?/, '');\n var removedFinalBackSlack = strippedProtocol.replace(/\\/$/, '');\n var protocol = isSecure ? 'wss' : 'ws';\n return \"\".concat(protocol, \"://\").concat(removedFinalBackSlack).concat(constants_1.SOCKET_IO_PATH);\n }\n else if (url === '') {\n var isSecure = /^https/.test(window.location.protocol);\n var protocol = isSecure ? 'wss' : 'ws';\n var port = window.location.port ? \":\".concat(window.location.port) : '';\n return \"\".concat(protocol, \"://\").concat(window.location.hostname).concat(port).concat(constants_1.SOCKET_IO_PATH);\n }\n return url;\n};\nexports.parseSocketIOUrl = parseSocketIOUrl;\nvar appendQueryParams = function (url, params) {\n if (params === void 0) { params = {}; }\n var hasParamsRegex = /\\?([\\w]+=[\\w]+)/;\n var alreadyHasParams = hasParamsRegex.test(url);\n var stringified = \"\".concat(Object.entries(params).reduce(function (next, _a) {\n var key = _a[0], value = _a[1];\n return next + \"\".concat(key, \"=\").concat(value, \"&\");\n }, '').slice(0, -1));\n return \"\".concat(url).concat(alreadyHasParams ? '&' : '?').concat(stringified);\n};\nexports.appendQueryParams = appendQueryParams;\nvar setUpSocketIOPing = function (sendMessage, interval) {\n if (interval === void 0) { interval = constants_1.SOCKET_IO_PING_INTERVAL; }\n var ping = function () { return sendMessage(constants_1.SOCKET_IO_PING_CODE); };\n return window.setInterval(ping, interval);\n};\nexports.setUpSocketIOPing = setUpSocketIOPing;\n//# sourceMappingURL=socket-io.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.heartbeat = heartbeat;\nvar constants_1 = require(\"./constants\");\nfunction heartbeat(ws, lastMessageTime, options) {\n var _a = options || {}, _b = _a.interval, interval = _b === void 0 ? constants_1.DEFAULT_HEARTBEAT.interval : _b, _c = _a.timeout, timeout = _c === void 0 ? constants_1.DEFAULT_HEARTBEAT.timeout : _c, _d = _a.message, message = _d === void 0 ? constants_1.DEFAULT_HEARTBEAT.message : _d;\n var heartbeatInterval = setInterval(function () {\n if (lastMessageTime.current + timeout <= Date.now()) {\n console.warn(\"Heartbeat timed out, closing connection, last message was seen \".concat(Date.now() - lastMessageTime.current, \"ms ago\"));\n ws.close();\n }\n else {\n if (lastMessageTime.current + interval <= Date.now()) {\n try {\n if (typeof message === 'function') {\n ws.send(message());\n }\n else {\n ws.send(message);\n }\n }\n catch (err) {\n console.error(\"Heartbeat failed, closing connection\", err instanceof Error ? err.message : err);\n ws.close();\n }\n }\n }\n }, interval);\n ws.addEventListener(\"close\", function () {\n clearInterval(heartbeatInterval);\n });\n return function () { };\n}\n//# sourceMappingURL=heartbeat.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resetSubscribers = exports.removeSubscriber = exports.addSubscriber = exports.hasSubscribers = exports.getSubscribers = void 0;\nvar subscribers = {};\nvar EMPTY_LIST = [];\nvar getSubscribers = function (url) {\n if ((0, exports.hasSubscribers)(url)) {\n return Array.from(subscribers[url]);\n }\n return EMPTY_LIST;\n};\nexports.getSubscribers = getSubscribers;\nvar hasSubscribers = function (url) {\n var _a;\n return ((_a = subscribers[url]) === null || _a === void 0 ? void 0 : _a.size) > 0;\n};\nexports.hasSubscribers = hasSubscribers;\nvar addSubscriber = function (url, subscriber) {\n subscribers[url] = subscribers[url] || new Set();\n subscribers[url].add(subscriber);\n};\nexports.addSubscriber = addSubscriber;\nvar removeSubscriber = function (url, subscriber) {\n subscribers[url].delete(subscriber);\n};\nexports.removeSubscriber = removeSubscriber;\nvar resetSubscribers = function (url) {\n if (url && subscribers.hasOwnProperty(url)) {\n delete subscribers[url];\n }\n else {\n for (var url_1 in subscribers) {\n if (subscribers.hasOwnProperty(url_1)) {\n delete subscribers[url_1];\n }\n }\n }\n};\nexports.resetSubscribers = resetSubscribers;\n//# sourceMappingURL=manage-subscribers.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assertIsWebSocket = assertIsWebSocket;\nexports.resetGlobalState = resetGlobalState;\nvar globals_1 = require(\"./globals\");\nvar manage_subscribers_1 = require(\"./manage-subscribers\");\nfunction assertIsWebSocket(webSocketInstance, skip) {\n if (!skip && webSocketInstance instanceof WebSocket === false)\n throw new Error('');\n}\n;\nfunction resetGlobalState(url) {\n (0, manage_subscribers_1.resetSubscribers)(url);\n (0, globals_1.resetWebSockets)(url);\n}\n;\n//# sourceMappingURL=util.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.attachListeners = void 0;\nvar socket_io_1 = require(\"./socket-io\");\nvar heartbeat_1 = require(\"./heartbeat\");\nvar constants_1 = require(\"./constants\");\nvar util_1 = require(\"./util\");\nvar bindMessageHandler = function (webSocketInstance, optionsRef, setLastMessage, lastMessageTime) {\n webSocketInstance.onmessage = function (message) {\n var _a;\n optionsRef.current.onMessage && optionsRef.current.onMessage(message);\n if (typeof (lastMessageTime === null || lastMessageTime === void 0 ? void 0 : lastMessageTime.current) === 'number') {\n lastMessageTime.current = Date.now();\n }\n if (typeof optionsRef.current.filter === 'function' && optionsRef.current.filter(message) !== true) {\n return;\n }\n if (optionsRef.current.heartbeat &&\n typeof optionsRef.current.heartbeat !== \"boolean\" &&\n ((_a = optionsRef.current.heartbeat) === null || _a === void 0 ? void 0 : _a.returnMessage) === message.data) {\n return;\n }\n setLastMessage(message);\n };\n};\nvar bindOpenHandler = function (webSocketInstance, optionsRef, setReadyState, reconnectCount, lastMessageTime) {\n webSocketInstance.onopen = function (event) {\n optionsRef.current.onOpen && optionsRef.current.onOpen(event);\n reconnectCount.current = 0;\n setReadyState(constants_1.ReadyState.OPEN);\n //start heart beat here\n if (optionsRef.current.heartbeat && webSocketInstance instanceof WebSocket) {\n var heartbeatOptions = typeof optionsRef.current.heartbeat === \"boolean\"\n ? undefined\n : optionsRef.current.heartbeat;\n lastMessageTime.current = Date.now();\n (0, heartbeat_1.heartbeat)(webSocketInstance, lastMessageTime, heartbeatOptions);\n }\n };\n};\nvar bindCloseHandler = function (webSocketInstance, optionsRef, setReadyState, reconnect, reconnectCount) {\n if (constants_1.isEventSourceSupported && webSocketInstance instanceof EventSource) {\n return function () { };\n }\n (0, util_1.assertIsWebSocket)(webSocketInstance, optionsRef.current.skipAssert);\n var reconnectTimeout;\n webSocketInstance.onclose = function (event) {\n var _a;\n optionsRef.current.onClose && optionsRef.current.onClose(event);\n setReadyState(constants_1.ReadyState.CLOSED);\n if (optionsRef.current.shouldReconnect && optionsRef.current.shouldReconnect(event)) {\n var reconnectAttempts = (_a = optionsRef.current.reconnectAttempts) !== null && _a !== void 0 ? _a : constants_1.DEFAULT_RECONNECT_LIMIT;\n if (reconnectCount.current < reconnectAttempts) {\n var nextReconnectInterval = typeof optionsRef.current.reconnectInterval === 'function' ?\n optionsRef.current.reconnectInterval(reconnectCount.current) :\n optionsRef.current.reconnectInterval;\n reconnectTimeout = window.setTimeout(function () {\n reconnectCount.current++;\n reconnect();\n }, nextReconnectInterval !== null && nextReconnectInterval !== void 0 ? nextReconnectInterval : constants_1.DEFAULT_RECONNECT_INTERVAL_MS);\n }\n else {\n optionsRef.current.onReconnectStop && optionsRef.current.onReconnectStop(reconnectAttempts);\n console.warn(\"Max reconnect attempts of \".concat(reconnectAttempts, \" exceeded\"));\n }\n }\n };\n return function () { return reconnectTimeout && window.clearTimeout(reconnectTimeout); };\n};\nvar bindErrorHandler = function (webSocketInstance, optionsRef, setReadyState, reconnect, reconnectCount) {\n var reconnectTimeout;\n webSocketInstance.onerror = function (error) {\n var _a;\n optionsRef.current.onError && optionsRef.current.onError(error);\n if (constants_1.isEventSourceSupported && webSocketInstance instanceof EventSource) {\n optionsRef.current.onClose && optionsRef.current.onClose(__assign(__assign({}, error), { code: 1006, reason: \"An error occurred with the EventSource: \".concat(error), wasClean: false }));\n setReadyState(constants_1.ReadyState.CLOSED);\n webSocketInstance.close();\n }\n if (optionsRef.current.retryOnError) {\n if (reconnectCount.current < ((_a = optionsRef.current.reconnectAttempts) !== null && _a !== void 0 ? _a : constants_1.DEFAULT_RECONNECT_LIMIT)) {\n var nextReconnectInterval = typeof optionsRef.current.reconnectInterval === 'function' ?\n optionsRef.current.reconnectInterval(reconnectCount.current) :\n optionsRef.current.reconnectInterval;\n reconnectTimeout = window.setTimeout(function () {\n reconnectCount.current++;\n reconnect();\n }, nextReconnectInterval !== null && nextReconnectInterval !== void 0 ? nextReconnectInterval : constants_1.DEFAULT_RECONNECT_INTERVAL_MS);\n }\n else {\n optionsRef.current.onReconnectStop && optionsRef.current.onReconnectStop(optionsRef.current.reconnectAttempts);\n console.warn(\"Max reconnect attempts of \".concat(optionsRef.current.reconnectAttempts, \" exceeded\"));\n }\n }\n };\n return function () { return reconnectTimeout && window.clearTimeout(reconnectTimeout); };\n};\nvar attachListeners = function (webSocketInstance, setters, optionsRef, reconnect, reconnectCount, lastMessageTime, sendMessage) {\n var setLastMessage = setters.setLastMessage, setReadyState = setters.setReadyState;\n var interval;\n var cancelReconnectOnClose;\n var cancelReconnectOnError;\n if (optionsRef.current.fromSocketIO) {\n interval = (0, socket_io_1.setUpSocketIOPing)(sendMessage);\n }\n bindMessageHandler(webSocketInstance, optionsRef, setLastMessage, lastMessageTime);\n bindOpenHandler(webSocketInstance, optionsRef, setReadyState, reconnectCount, lastMessageTime);\n cancelReconnectOnClose = bindCloseHandler(webSocketInstance, optionsRef, setReadyState, reconnect, reconnectCount);\n cancelReconnectOnError = bindErrorHandler(webSocketInstance, optionsRef, setReadyState, reconnect, reconnectCount);\n return function () {\n setReadyState(constants_1.ReadyState.CLOSING);\n cancelReconnectOnClose();\n cancelReconnectOnError();\n webSocketInstance.close();\n if (interval)\n clearInterval(interval);\n };\n};\nexports.attachListeners = attachListeners;\n//# sourceMappingURL=attach-listener.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.attachSharedListeners = void 0;\nvar globals_1 = require(\"./globals\");\nvar constants_1 = require(\"./constants\");\nvar manage_subscribers_1 = require(\"./manage-subscribers\");\nvar socket_io_1 = require(\"./socket-io\");\nvar heartbeat_1 = require(\"./heartbeat\");\nvar bindMessageHandler = function (webSocketInstance, url, heartbeatOptions) {\n webSocketInstance.onmessage = function (message) {\n (0, manage_subscribers_1.getSubscribers)(url).forEach(function (subscriber) {\n var _a;\n if (subscriber.optionsRef.current.onMessage) {\n subscriber.optionsRef.current.onMessage(message);\n }\n if (typeof ((_a = subscriber === null || subscriber === void 0 ? void 0 : subscriber.lastMessageTime) === null || _a === void 0 ? void 0 : _a.current) === 'number') {\n subscriber.lastMessageTime.current = Date.now();\n }\n if (typeof subscriber.optionsRef.current.filter === 'function' &&\n subscriber.optionsRef.current.filter(message) !== true) {\n return;\n }\n if (heartbeatOptions &&\n typeof heartbeatOptions !== \"boolean\" &&\n (heartbeatOptions === null || heartbeatOptions === void 0 ? void 0 : heartbeatOptions.returnMessage) === message.data)\n return;\n subscriber.setLastMessage(message);\n });\n };\n};\nvar bindOpenHandler = function (webSocketInstance, url, heartbeatOptions) {\n webSocketInstance.onopen = function (event) {\n (0, manage_subscribers_1.getSubscribers)(url).forEach(function (subscriber) {\n subscriber.reconnectCount.current = 0;\n if (subscriber.optionsRef.current.onOpen) {\n subscriber.optionsRef.current.onOpen(event);\n }\n subscriber.setReadyState(constants_1.ReadyState.OPEN);\n var onMessageCb;\n if (heartbeatOptions && webSocketInstance instanceof WebSocket) {\n subscriber.lastMessageTime.current = Date.now();\n (0, heartbeat_1.heartbeat)(webSocketInstance, subscriber.lastMessageTime, typeof heartbeatOptions === 'boolean' ? undefined : heartbeatOptions);\n }\n });\n };\n};\nvar bindCloseHandler = function (webSocketInstance, url) {\n if (webSocketInstance instanceof WebSocket) {\n webSocketInstance.onclose = function (event) {\n (0, manage_subscribers_1.getSubscribers)(url).forEach(function (subscriber) {\n if (subscriber.optionsRef.current.onClose) {\n subscriber.optionsRef.current.onClose(event);\n }\n subscriber.setReadyState(constants_1.ReadyState.CLOSED);\n });\n delete globals_1.sharedWebSockets[url];\n (0, manage_subscribers_1.getSubscribers)(url).forEach(function (subscriber) {\n var _a;\n if (subscriber.optionsRef.current.shouldReconnect &&\n subscriber.optionsRef.current.shouldReconnect(event)) {\n var reconnectAttempts = (_a = subscriber.optionsRef.current.reconnectAttempts) !== null && _a !== void 0 ? _a : constants_1.DEFAULT_RECONNECT_LIMIT;\n if (subscriber.reconnectCount.current < reconnectAttempts) {\n var nextReconnectInterval = typeof subscriber.optionsRef.current.reconnectInterval === 'function' ?\n subscriber.optionsRef.current.reconnectInterval(subscriber.reconnectCount.current) :\n subscriber.optionsRef.current.reconnectInterval;\n setTimeout(function () {\n subscriber.reconnectCount.current++;\n subscriber.reconnect.current();\n }, nextReconnectInterval !== null && nextReconnectInterval !== void 0 ? nextReconnectInterval : constants_1.DEFAULT_RECONNECT_INTERVAL_MS);\n }\n else {\n subscriber.optionsRef.current.onReconnectStop && subscriber.optionsRef.current.onReconnectStop(subscriber.optionsRef.current.reconnectAttempts);\n console.warn(\"Max reconnect attempts of \".concat(reconnectAttempts, \" exceeded\"));\n }\n }\n });\n };\n }\n};\nvar bindErrorHandler = function (webSocketInstance, url) {\n webSocketInstance.onerror = function (error) {\n (0, manage_subscribers_1.getSubscribers)(url).forEach(function (subscriber) {\n if (subscriber.optionsRef.current.onError) {\n subscriber.optionsRef.current.onError(error);\n }\n if (constants_1.isEventSourceSupported && webSocketInstance instanceof EventSource) {\n subscriber.optionsRef.current.onClose && subscriber.optionsRef.current.onClose(__assign(__assign({}, error), { code: 1006, reason: \"An error occurred with the EventSource: \".concat(error), wasClean: false }));\n subscriber.setReadyState(constants_1.ReadyState.CLOSED);\n }\n });\n if (constants_1.isEventSourceSupported && webSocketInstance instanceof EventSource) {\n webSocketInstance.close();\n }\n };\n};\nvar attachSharedListeners = function (webSocketInstance, url, optionsRef, sendMessage) {\n var interval;\n if (optionsRef.current.fromSocketIO) {\n interval = (0, socket_io_1.setUpSocketIOPing)(sendMessage);\n }\n bindMessageHandler(webSocketInstance, url, optionsRef.current.heartbeat);\n bindCloseHandler(webSocketInstance, url);\n bindOpenHandler(webSocketInstance, url, optionsRef.current.heartbeat);\n bindErrorHandler(webSocketInstance, url);\n return function () {\n if (interval)\n clearInterval(interval);\n };\n};\nexports.attachSharedListeners = attachSharedListeners;\n//# sourceMappingURL=attach-shared-listeners.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createOrJoinSocket = void 0;\nvar globals_1 = require(\"./globals\");\nvar constants_1 = require(\"./constants\");\nvar attach_listener_1 = require(\"./attach-listener\");\nvar attach_shared_listeners_1 = require(\"./attach-shared-listeners\");\nvar manage_subscribers_1 = require(\"./manage-subscribers\");\n//TODO ensure that all onClose callbacks are called\nvar cleanSubscribers = function (url, subscriber, optionsRef, setReadyState, clearSocketIoPingInterval) {\n return function () {\n (0, manage_subscribers_1.removeSubscriber)(url, subscriber);\n if (!(0, manage_subscribers_1.hasSubscribers)(url)) {\n try {\n var socketLike = globals_1.sharedWebSockets[url];\n if (socketLike instanceof WebSocket) {\n socketLike.onclose = function (event) {\n if (optionsRef.current.onClose) {\n optionsRef.current.onClose(event);\n }\n setReadyState(constants_1.ReadyState.CLOSED);\n };\n }\n socketLike.close();\n }\n catch (e) {\n }\n if (clearSocketIoPingInterval)\n clearSocketIoPingInterval();\n delete globals_1.sharedWebSockets[url];\n }\n };\n};\nvar createOrJoinSocket = function (webSocketRef, url, setReadyState, optionsRef, setLastMessage, startRef, reconnectCount, lastMessageTime, sendMessage) {\n if (!constants_1.isEventSourceSupported && optionsRef.current.eventSourceOptions) {\n if (constants_1.isReactNative) {\n throw new Error('EventSource is not supported in ReactNative');\n }\n else {\n throw new Error('EventSource is not supported');\n }\n }\n if (optionsRef.current.share) {\n var clearSocketIoPingInterval = null;\n if (globals_1.sharedWebSockets[url] === undefined) {\n globals_1.sharedWebSockets[url] = optionsRef.current.eventSourceOptions ?\n new EventSource(url, optionsRef.current.eventSourceOptions) :\n new WebSocket(url, optionsRef.current.protocols);\n webSocketRef.current = globals_1.sharedWebSockets[url];\n setReadyState(constants_1.ReadyState.CONNECTING);\n clearSocketIoPingInterval = (0, attach_shared_listeners_1.attachSharedListeners)(globals_1.sharedWebSockets[url], url, optionsRef, sendMessage);\n }\n else {\n webSocketRef.current = globals_1.sharedWebSockets[url];\n setReadyState(globals_1.sharedWebSockets[url].readyState);\n }\n var subscriber = {\n setLastMessage: setLastMessage,\n setReadyState: setReadyState,\n optionsRef: optionsRef,\n reconnectCount: reconnectCount,\n lastMessageTime: lastMessageTime,\n reconnect: startRef,\n };\n (0, manage_subscribers_1.addSubscriber)(url, subscriber);\n return cleanSubscribers(url, subscriber, optionsRef, setReadyState, clearSocketIoPingInterval);\n }\n else {\n webSocketRef.current = optionsRef.current.eventSourceOptions ?\n new EventSource(url, optionsRef.current.eventSourceOptions) :\n new WebSocket(url, optionsRef.current.protocols);\n setReadyState(constants_1.ReadyState.CONNECTING);\n if (!webSocketRef.current) {\n throw new Error('WebSocket failed to be created');\n }\n return (0, attach_listener_1.attachListeners)(webSocketRef.current, {\n setLastMessage: setLastMessage,\n setReadyState: setReadyState\n }, optionsRef, startRef.current, reconnectCount, lastMessageTime, sendMessage);\n }\n};\nexports.createOrJoinSocket = createOrJoinSocket;\n//# sourceMappingURL=create-or-join.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getUrl = void 0;\nvar socket_io_1 = require(\"./socket-io\");\nvar constants_1 = require(\"./constants\");\nvar waitFor = function (duration) { return new Promise(function (resolve) { return window.setTimeout(resolve, duration); }); };\nvar getUrl = function (url_1, optionsRef_1) {\n var args_1 = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args_1[_i - 2] = arguments[_i];\n }\n return __awaiter(void 0, __spreadArray([url_1, optionsRef_1], args_1, true), void 0, function (url, optionsRef, retriedAttempts) {\n var convertedUrl, e_1, reconnectLimit, nextReconnectInterval, parsedUrl, parsedWithQueryParams;\n var _a, _b, _c;\n if (retriedAttempts === void 0) { retriedAttempts = 0; }\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n if (!(typeof url === 'function')) return [3 /*break*/, 10];\n _d.label = 1;\n case 1:\n _d.trys.push([1, 3, , 9]);\n return [4 /*yield*/, url()];\n case 2:\n convertedUrl = _d.sent();\n return [3 /*break*/, 9];\n case 3:\n e_1 = _d.sent();\n if (!optionsRef.current.retryOnError) return [3 /*break*/, 7];\n reconnectLimit = (_a = optionsRef.current.reconnectAttempts) !== null && _a !== void 0 ? _a : constants_1.DEFAULT_RECONNECT_LIMIT;\n if (!(retriedAttempts < reconnectLimit)) return [3 /*break*/, 5];\n nextReconnectInterval = typeof optionsRef.current.reconnectInterval === 'function' ?\n optionsRef.current.reconnectInterval(retriedAttempts) :\n optionsRef.current.reconnectInterval;\n return [4 /*yield*/, waitFor(nextReconnectInterval !== null && nextReconnectInterval !== void 0 ? nextReconnectInterval : constants_1.DEFAULT_RECONNECT_INTERVAL_MS)];\n case 4:\n _d.sent();\n return [2 /*return*/, (0, exports.getUrl)(url, optionsRef, retriedAttempts + 1)];\n case 5:\n (_c = (_b = optionsRef.current).onReconnectStop) === null || _c === void 0 ? void 0 : _c.call(_b, retriedAttempts);\n return [2 /*return*/, null];\n case 6: return [3 /*break*/, 8];\n case 7: return [2 /*return*/, null];\n case 8: return [3 /*break*/, 9];\n case 9: return [3 /*break*/, 11];\n case 10:\n convertedUrl = url;\n _d.label = 11;\n case 11:\n parsedUrl = optionsRef.current.fromSocketIO ?\n (0, socket_io_1.parseSocketIOUrl)(convertedUrl) :\n convertedUrl;\n parsedWithQueryParams = optionsRef.current.queryParams ?\n (0, socket_io_1.appendQueryParams)(parsedUrl, optionsRef.current.queryParams) :\n parsedUrl;\n return [2 /*return*/, parsedWithQueryParams];\n }\n });\n });\n};\nexports.getUrl = getUrl;\n//# sourceMappingURL=get-url.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.websocketWrapper = void 0;\nvar websocketWrapper = function (webSocket, start) {\n return new Proxy(webSocket, {\n get: function (obj, key) {\n var val = obj[key];\n if (key === 'reconnect')\n return start;\n if (typeof val === 'function') {\n console.error('Calling methods directly on the websocket is not supported at this moment. You must use the methods returned by useWebSocket.');\n //Prevent error thrown by invoking a non-function\n return function () { };\n }\n else {\n return val;\n }\n },\n set: function (obj, key, val) {\n if (/^on/.test(key)) {\n console.warn('The websocket\\'s event handlers should be defined through the options object passed into useWebSocket.');\n return false;\n }\n else {\n obj[key] = val;\n return true;\n }\n },\n });\n};\nexports.websocketWrapper = websocketWrapper;\nexports.default = exports.websocketWrapper;\n//# sourceMappingURL=proxy.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useWebSocket = void 0;\nvar react_1 = require(\"react\");\nvar react_dom_1 = require(\"react-dom\");\nvar constants_1 = require(\"./constants\");\nvar create_or_join_1 = require(\"./create-or-join\");\nvar get_url_1 = require(\"./get-url\");\nvar proxy_1 = __importDefault(require(\"./proxy\"));\nvar util_1 = require(\"./util\");\nvar useWebSocket = function (url, options, connect) {\n if (options === void 0) { options = constants_1.DEFAULT_OPTIONS; }\n if (connect === void 0) { connect = true; }\n var _a = (0, react_1.useState)(null), lastMessage = _a[0], setLastMessage = _a[1];\n var _b = (0, react_1.useState)({}), readyState = _b[0], setReadyState = _b[1];\n var lastJsonMessage = (0, react_1.useMemo)(function () {\n if (lastMessage) {\n try {\n return JSON.parse(lastMessage.data);\n }\n catch (e) {\n return constants_1.UNPARSABLE_JSON_OBJECT;\n }\n }\n return null;\n }, [lastMessage]);\n var convertedUrl = (0, react_1.useRef)(null);\n var webSocketRef = (0, react_1.useRef)(null);\n var startRef = (0, react_1.useRef)(function () { return void 0; });\n var reconnectCount = (0, react_1.useRef)(0);\n var lastMessageTime = (0, react_1.useRef)(Date.now());\n var messageQueue = (0, react_1.useRef)([]);\n var webSocketProxy = (0, react_1.useRef)(null);\n var optionsCache = (0, react_1.useRef)(options);\n optionsCache.current = options;\n var readyStateFromUrl = convertedUrl.current && readyState[convertedUrl.current] !== undefined ?\n readyState[convertedUrl.current] :\n url !== null && connect === true ?\n constants_1.ReadyState.CONNECTING :\n constants_1.ReadyState.UNINSTANTIATED;\n var stringifiedQueryParams = options.queryParams ? JSON.stringify(options.queryParams) : null;\n var sendMessage = (0, react_1.useCallback)(function (message, keep) {\n var _a;\n if (keep === void 0) { keep = true; }\n if (constants_1.isEventSourceSupported && webSocketRef.current instanceof EventSource) {\n console.warn('Unable to send a message from an eventSource');\n return;\n }\n if (((_a = webSocketRef.current) === null || _a === void 0 ? void 0 : _a.readyState) === constants_1.ReadyState.OPEN) {\n (0, util_1.assertIsWebSocket)(webSocketRef.current, optionsCache.current.skipAssert);\n webSocketRef.current.send(message);\n }\n else if (keep) {\n messageQueue.current.push(message);\n }\n }, []);\n var sendJsonMessage = (0, react_1.useCallback)(function (message, keep) {\n if (keep === void 0) { keep = true; }\n sendMessage(JSON.stringify(message), keep);\n }, [sendMessage]);\n var getWebSocket = (0, react_1.useCallback)(function () {\n if (optionsCache.current.share !== true || (constants_1.isEventSourceSupported && webSocketRef.current instanceof EventSource)) {\n return webSocketRef.current;\n }\n if (webSocketProxy.current === null && webSocketRef.current) {\n (0, util_1.assertIsWebSocket)(webSocketRef.current, optionsCache.current.skipAssert);\n webSocketProxy.current = (0, proxy_1.default)(webSocketRef.current, startRef);\n }\n return webSocketProxy.current;\n }, []);\n (0, react_1.useEffect)(function () {\n if (url !== null && connect === true) {\n var removeListeners_1;\n var expectClose_1 = false;\n var createOrJoin_1 = true;\n var start_1 = function () { return __awaiter(void 0, void 0, void 0, function () {\n var _a, protectedSetLastMessage, protectedSetReadyState;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = convertedUrl;\n return [4 /*yield*/, (0, get_url_1.getUrl)(url, optionsCache)];\n case 1:\n _a.current = _b.sent();\n if (convertedUrl.current === null) {\n console.error('Failed to get a valid URL. WebSocket connection aborted.');\n convertedUrl.current = 'ABORTED';\n (0, react_dom_1.flushSync)(function () { return setReadyState(function (prev) { return (__assign(__assign({}, prev), { ABORTED: constants_1.ReadyState.CLOSED })); }); });\n return [2 /*return*/];\n }\n protectedSetLastMessage = function (message) {\n if (!expectClose_1) {\n (0, react_dom_1.flushSync)(function () { return setLastMessage(message); });\n }\n };\n protectedSetReadyState = function (state) {\n if (!expectClose_1) {\n (0, react_dom_1.flushSync)(function () { return setReadyState(function (prev) {\n var _a;\n return (__assign(__assign({}, prev), (convertedUrl.current && (_a = {}, _a[convertedUrl.current] = state, _a))));\n }); });\n }\n };\n if (createOrJoin_1) {\n removeListeners_1 = (0, create_or_join_1.createOrJoinSocket)(webSocketRef, convertedUrl.current, protectedSetReadyState, optionsCache, protectedSetLastMessage, startRef, reconnectCount, lastMessageTime, sendMessage);\n }\n return [2 /*return*/];\n }\n });\n }); };\n startRef.current = function () {\n if (!expectClose_1) {\n if (webSocketProxy.current)\n webSocketProxy.current = null;\n removeListeners_1 === null || removeListeners_1 === void 0 ? void 0 : removeListeners_1();\n start_1();\n }\n };\n start_1();\n return function () {\n expectClose_1 = true;\n createOrJoin_1 = false;\n if (webSocketProxy.current)\n webSocketProxy.current = null;\n removeListeners_1 === null || removeListeners_1 === void 0 ? void 0 : removeListeners_1();\n setLastMessage(null);\n };\n }\n else if (url === null || connect === false) {\n reconnectCount.current = 0; // reset reconnection attempts\n setReadyState(function (prev) {\n var _a;\n return (__assign(__assign({}, prev), (convertedUrl.current && (_a = {}, _a[convertedUrl.current] = constants_1.ReadyState.CLOSED, _a))));\n });\n }\n }, [url, connect, stringifiedQueryParams, sendMessage]);\n (0, react_1.useEffect)(function () {\n if (readyStateFromUrl === constants_1.ReadyState.OPEN) {\n messageQueue.current.splice(0).forEach(function (message) {\n sendMessage(message);\n });\n }\n }, [readyStateFromUrl]);\n return {\n sendMessage: sendMessage,\n sendJsonMessage: sendJsonMessage,\n lastMessage: lastMessage,\n lastJsonMessage: lastJsonMessage,\n readyState: readyStateFromUrl,\n getWebSocket: getWebSocket,\n };\n};\nexports.useWebSocket = useWebSocket;\n//# sourceMappingURL=use-websocket.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useSocketIO = void 0;\nvar react_1 = require(\"react\");\nvar use_websocket_1 = require(\"./use-websocket\");\nvar constants_1 = require(\"./constants\");\nvar emptyEvent = {\n type: 'empty',\n payload: null,\n};\nvar getSocketData = function (event) {\n if (!event || !event.data) {\n return emptyEvent;\n }\n var match = event.data.match(/\\[.*]/);\n if (!match) {\n return emptyEvent;\n }\n var data = JSON.parse(match);\n if (!Array.isArray(data) || !data[1]) {\n return emptyEvent;\n }\n return {\n type: data[0],\n payload: data[1],\n };\n};\nvar useSocketIO = function (url, options, connect) {\n if (options === void 0) { options = constants_1.DEFAULT_OPTIONS; }\n if (connect === void 0) { connect = true; }\n var optionsWithSocketIO = (0, react_1.useMemo)(function () { return (__assign(__assign({}, options), { fromSocketIO: true })); }, []);\n var _a = (0, use_websocket_1.useWebSocket)(url, optionsWithSocketIO, connect), sendMessage = _a.sendMessage, sendJsonMessage = _a.sendJsonMessage, lastMessage = _a.lastMessage, readyState = _a.readyState, getWebSocket = _a.getWebSocket;\n var socketIOLastMessage = (0, react_1.useMemo)(function () {\n return getSocketData(lastMessage);\n }, [lastMessage]);\n return {\n sendMessage: sendMessage,\n sendJsonMessage: sendJsonMessage,\n lastMessage: socketIOLastMessage,\n lastJsonMessage: socketIOLastMessage,\n readyState: readyState,\n getWebSocket: getWebSocket,\n };\n};\nexports.useSocketIO = useSocketIO;\n//# sourceMappingURL=use-socket-io.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useEventSource = void 0;\nvar react_1 = require(\"react\");\nvar use_websocket_1 = require(\"./use-websocket\");\nvar constants_1 = require(\"./constants\");\nvar useEventSource = function (url, _a, connect) {\n if (_a === void 0) { _a = constants_1.DEFAULT_EVENT_SOURCE_OPTIONS; }\n var withCredentials = _a.withCredentials, events = _a.events, options = __rest(_a, [\"withCredentials\", \"events\"]);\n if (connect === void 0) { connect = true; }\n var optionsWithEventSource = __assign(__assign({}, options), { eventSourceOptions: {\n withCredentials: withCredentials,\n } });\n var eventsRef = (0, react_1.useRef)(constants_1.EMPTY_EVENT_HANDLERS);\n if (events) {\n eventsRef.current = events;\n }\n var _b = (0, use_websocket_1.useWebSocket)(url, optionsWithEventSource, connect), lastMessage = _b.lastMessage, readyState = _b.readyState, getWebSocket = _b.getWebSocket;\n (0, react_1.useEffect)(function () {\n if (lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.type) {\n Object.entries(eventsRef.current).forEach(function (_a) {\n var type = _a[0], handler = _a[1];\n if (type === lastMessage.type) {\n handler(lastMessage);\n }\n });\n }\n }, [lastMessage]);\n return {\n lastEvent: lastMessage,\n readyState: readyState,\n getEventSource: getWebSocket,\n };\n};\nexports.useEventSource = useEventSource;\n//# sourceMappingURL=use-event-source.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resetGlobalState = exports.useEventSource = exports.ReadyState = exports.useSocketIO = exports.default = void 0;\nvar use_websocket_1 = require(\"./lib/use-websocket\");\nObject.defineProperty(exports, \"default\", { enumerable: true, get: function () { return use_websocket_1.useWebSocket; } });\nvar use_socket_io_1 = require(\"./lib/use-socket-io\");\nObject.defineProperty(exports, \"useSocketIO\", { enumerable: true, get: function () { return use_socket_io_1.useSocketIO; } });\nvar constants_1 = require(\"./lib/constants\");\nObject.defineProperty(exports, \"ReadyState\", { enumerable: true, get: function () { return constants_1.ReadyState; } });\nvar use_event_source_1 = require(\"./lib/use-event-source\");\nObject.defineProperty(exports, \"useEventSource\", { enumerable: true, get: function () { return use_event_source_1.useEventSource; } });\nvar util_1 = require(\"./lib/util\");\nObject.defineProperty(exports, \"resetGlobalState\", { enumerable: true, get: function () { return util_1.resetGlobalState; } });\n//# sourceMappingURL=index.js.map","import {ErrorTranslation} from \"@gef1/dax-client-sdk\";\nimport { ReadyState } from \"react-use-websocket\";\n\nexport const DEFAULT_ERROR_TRANSLATION: ErrorTranslation = {\n \"description\": \"Something went wrong\",\n \"severity\": \"E\",\n \"technical-text\": \"\",\n};\n\nexport const CONNECTION_STATUSES = {\n [ReadyState.CONNECTING]: \"Connecting\",\n [ReadyState.OPEN]: \"Open\",\n [ReadyState.CLOSING]: \"Closing\",\n [ReadyState.CLOSED]: \"Closed\",\n [ReadyState.UNINSTANTIATED]: \"Uninstantiated\",\n};\n","export const BELFIUS_CONTACT_PAGE_URL = \"https://belfius.be/retail/nl/contact/index.aspx\";\nexport const SMART_SEARCH_URL = \"https://www.belfius.be/webapps/nl/zoeken?universe=retail\";\n","import { createContext, useContext } from \"react\";\n\nimport { DatePickerData } from \"@/types\";\n\nexport interface DatePickerOptions {\n onConfirmed: (date: Date) => void;\n datePickerData: DatePickerData;\n}\n\nexport interface DatePickerContextProps {\n openDatePicker: (opts: DatePickerOptions) => void;\n}\n\nexport const DatePickerContext = createContext({ openDatePicker: () => {} });\n\nexport const useDatePicker = () => {\n return useContext(DatePickerContext);\n};\n","import { BdnHostContext, HybridHostContext, mockDatalayer } from \"@gef1/dax-gefw-host\";\nimport { useHost } from \"@gef1/dax-react-sdk\";\nimport { useMemo } from \"react\";\n\nlet warned = false;\nexport const useDatalayer = ()=>{\n const host = useHost();\n\n const datalayer = useMemo(()=>{\n if(!host.datalayer){\n if(!warned){ console.warn(\"Mock data layer used\"); warned = true; }\n return mockDatalayer;\n }else{\n return host.datalayer;\n }\n },[host.datalayer]);\n\n return datalayer;\n};","import type { BdnHostContext, Context,HybridHostContext } from \"@gef1/dax-gefw-host\";\nimport { useHost } from \"@gef1/dax-react-sdk\";\nimport { useMemo } from \"react\";\n\nconst commonBots = [{\n id: \"MYBO_HOME\",\n properties: {\n minimizable: false,\n botType: \"insurance\",\n }\n},\n\n{\n id: \"MYBO_FAMILY\",\n properties: {\n minimizable: false,\n botType: \"insurance\",\n }\n}];\nconst mockContexts = {\n nl: {\n pa: {\n showFPAButton: true,\n showNudge: true,\n isHomePage: true,\n botIds: [\n {\n id: \"PABank_NL\",\n properties: {\n minimizable: true,\n botType: \"bank\",\n }\n },\n ...commonBots\n ]\n }\n },\n\n fr: {\n pa: {\n showFPAButton: true,\n showNudge: true,\n isHomePage: true,\n botIds: [\n {\n id: \"PABank_FR\",\n properties: {\n minimizable: true,\n botType: \"bank\",\n }\n },\n ...commonBots,\n ]\n }\n }\n} as {[locale: string]: Context};\n\n// Only exported for the sake of testing\nexport let getMockContext = (locale: string)=>{\n let mockCtx = JSON.parse(JSON.stringify(mockContexts[locale]??mockContexts[\"nl\"]));\n getMockContext = ()=>mockCtx;\n return mockCtx;\n};\n\nexport const useFlowContext = () => {\n const host = useHost();\n\n const context = useMemo(()=>{\n if(!host.context){\n return getMockContext(host.session.locale?.split('-')[0] ?? \"nl\");\n }else{\n return host.context;\n }\n },[host.context]);\n\n return context;\n};","import { HybridHostContext, mockMobileBridge } from \"@gef1/dax-gefw-host\";\nimport { useHost } from \"@gef1/dax-react-sdk\";\nimport { useMemo } from \"react\";\n\nlet warned = false;\nexport const useMobileBridge = () => {\n const host = useHost();\n\n const mobileBridge = useMemo(()=>{\n if(!host.mobileBridge){\n if(!warned){ console.debug(\"Host has no mobile bridge, using mocked implementation\"); warned = true; }\n return mockMobileBridge;\n }else{\n return host.mobileBridge;\n }\n },[host.mobileBridge]);\n\n return mobileBridge;\n}\n","import { useHost } from \"@gef1/dax-react-sdk\";\n\nexport const useNavigation = () => {\n const host = useHost();\n return host.navigation;\n}\n","import { useHost } from \"@gef1/dax-react-sdk\";\n\nexport const usePubSub = () => {\n const host = useHost();\n return host.pubSub;\n}\n","import { BdnHostContext, HybridHostContext, BrowserWebSocketFactory } from \"@gef1/dax-gefw-host\";\nimport { useHost } from \"@gef1/dax-react-sdk\";\nimport { useMemo } from \"react\";\n\nlet browserWebsocket : BrowserWebSocketFactory | undefined;\nexport const useWebSocketFactory = () => {\n const host = useHost();\n\n const webSocketFactory = useMemo(()=>{\n if(!host.webSocketFactory){\n if(!browserWebsocket){ browserWebsocket = new BrowserWebSocketFactory();}\n return browserWebsocket;\n }else{\n return host.webSocketFactory;\n }\n },[host.webSocketFactory]);\n\n return webSocketFactory;\n}\n\n","import { Context } from \"@gef1/dax-gefw-host\";\nimport { useFlowContext } from \"@/contexts\";\nimport { BotType } from \"@/menus\";\n\nexport const useBotDefinition = () => {\n const context: Context = useFlowContext();\n\n const getBotDefinition = (botId: string): { id: string; properties: Record & { botType?: BotType } } | undefined => {\n return context.pa?.botIds.find((value: { id: string }) => {\n return value.id === botId;\n });\n };\n\n return { getBotDefinition };\n};\n","/* eslint-disable */\n/* tslint:disable */\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\n/** The standardized Problem JSON as defined in RFC 7807. */\nexport interface ErrorObject {\n /**\n * An absolute URI that identifies the problem type.\n * @format uri\n * @example \"about:blank\"\n */\n type: string;\n /**\n * A short summary of the problem type, written in English and readable for engineers.\n * @example \"Invalid input parameters.\"\n */\n title: string;\n /**\n * The HTTP status code of the problem / error.\n * @example \"400\"\n */\n status: string;\n /**\n * A detailed description human-readable exlanation to this occurence of the problem.\n * @example \"Please check the detailed information and reasons of parameter invalidation.\"\n */\n detail?: string;\n /** A list of errors. */\n errors?: {\n /**\n * The module where the error occurs.\n * @example \"MODULE\"\n */\n module: string;\n /**\n * The return code of the error.\n * @example \"1234\"\n */\n returnCode: string;\n /**\n * The subReturnCode of the error.\n * @example \"000000\"\n */\n subReturnCode?: string;\n /**\n * The severity of the error.\n * W = Warning\n * I = Information\n * E = Error\n * F = Fatal\n * @example \"E\"\n */\n severity: \"W\" | \"I\" | \"E\" | \"F\";\n }[];\n}\n\n/** Initialization object to request a new chat */\nexport interface InitSession {\n /**\n * The unique identifier of the bot in Kore\n * @example \"bbot\"\n */\n botId: string;\n /**\n * An optional extra ID for the chat, for example the ID of the claim for MyBo\n * @example \"123456789\"\n */\n extraId?: string;\n}\n\nexport interface NewChatCredentials {\n /**\n * The unique identifier of the chat\n * @format uuid\n * @example \"54ec0b53-d66a-4c55-8788-772157e6abe4\"\n */\n chatToken?: string;\n /**\n * The unique identifier of the conversation\n * @example \"wss://wps-conversational-ai-tst-we-001.webpubsub.azure.com/client/hubs/HubConversationalAi?access_token=bJVRhRTz6meHr3+RNJEG68ZDXKFFnSQzbee1wU8GEuU=\"\n */\n token?: string;\n}\n\n/** Request header query parameters for gem3 GET request */\nexport interface RequestHistory {\n /**\n * The unique identifier of the chat\n * @example \"1429169910\"\n */\n chatToken?: string;\n /**\n * The unique identifier of the bot in Kore\n * @example \"bbot\"\n */\n botId: string;\n /**\n * Claim id used in insurance bot\n * @example \"20241125-7bd288af-3113-4a13-9de9-9f341df9eec9\"\n */\n extraId?: string;\n /**\n * The message status\n * @example \"Read\"\n */\n status?: \"Read\" | \"Unread\";\n /**\n * Start date of the history to retrieve\n * @format date-time\n */\n startDate: string;\n /**\n * End date of the history to retrieve\n * @format date-time\n */\n endDate: string;\n /**\n * Query parameter pagination page value\n * @example 1\n */\n page?: number;\n /**\n * Query paramaters pagination size value\n * @example 20\n */\n size?: number;\n}\n\n/** Array of resource items (application/json results) */\nexport type HistoryDTOList = {\n /** The payload of the functional messages template */\n message?: {\n /**\n * The message template type\n * @example \"text\"\n */\n template?: string;\n /**\n * The content of the message. It depends on the template type cfr. Confluence\n * @example \"Hello!\"\n */\n message?: object;\n /**\n * Unique identifier of the message\n * @format uuid\n */\n message_id?: string;\n /**\n * The timestamp of the message\n * @example \"1706108816561\"\n */\n timestamp?: string;\n /**\n * The timestamp of the mlessage as date format in UTC\n * @format date-time\n * @example \"2017-07-21T17:32:28Z\"\n */\n timestampsAsDate?: string;\n /**\n * 0 if the message comes from the bot or 1 if the message comes from the agent\n * @example 0\n */\n agent_flag?: 0 | 1;\n /**\n * The first name of the agent. This is empty if agent_flag is 0\n * @example \"Jean\"\n */\n agent_firstname?: string;\n /**\n * The last name of the agent. This is empty if agent_flag is 0\n * @example \"Bon\"\n */\n agent_lastname?: string;\n /**\n * The kore agent id. This is empty if agent_flag is 0\n * @example \"a-49687b1-ba0c-4a9c-a3d8-4244c8397645\"\n */\n agent_id?: string;\n /**\n * The initials of the agent. This is empty if agent_flag is 0\n * @example \"JB\"\n */\n agent_initials?: string;\n /**\n * 0 if the template should remain clickable in the chat or 1 if the template should be disable after use\n * @example 0\n */\n one_time_use?: 0 | 1;\n /**\n * true if the message contains clickable buttons\n * @example true\n */\n clickable?: boolean;\n };\n /**\n * The message is outgoing if it is sent by Kore and incoming if it is sent by the user\n * @example \"outgoing\"\n */\n type?: \"incoming\" | \"outgoing\";\n /**\n * The message is read if it is marked as read by the UI\n * @example \"read\"\n */\n status?: \"read\" | \"unread\";\n}[];\n\nexport interface History {\n /** The payload of the functional messages template */\n message?: {\n /**\n * The message template type\n * @example \"text\"\n */\n template?: string;\n /**\n * The content of the message. It depends on the template type cfr. Confluence\n * @example \"Hello!\"\n */\n message?: object;\n /**\n * Unique identifier of the message\n * @format uuid\n */\n message_id?: string;\n /**\n * The timestamp of the message\n * @example \"1706108816561\"\n */\n timestamp?: string;\n /**\n * The timestamp of the mlessage as date format in UTC\n * @format date-time\n * @example \"2017-07-21T17:32:28Z\"\n */\n timestampsAsDate?: string;\n /**\n * 0 if the message comes from the bot or 1 if the message comes from the agent\n * @example 0\n */\n agent_flag?: 0 | 1;\n /**\n * The first name of the agent. This is empty if agent_flag is 0\n * @example \"Jean\"\n */\n agent_firstname?: string;\n /**\n * The last name of the agent. This is empty if agent_flag is 0\n * @example \"Bon\"\n */\n agent_lastname?: string;\n /**\n * The kore agent id. This is empty if agent_flag is 0\n * @example \"a-49687b1-ba0c-4a9c-a3d8-4244c8397645\"\n */\n agent_id?: string;\n /**\n * The initials of the agent. This is empty if agent_flag is 0\n * @example \"JB\"\n */\n agent_initials?: string;\n /**\n * 0 if the template should remain clickable in the chat or 1 if the template should be disable after use\n * @example 0\n */\n one_time_use?: 0 | 1;\n /**\n * true if the message contains clickable buttons\n * @example true\n */\n clickable?: boolean;\n };\n /**\n * The message is outgoing if it is sent by Kore and incoming if it is sent by the user\n * @example \"outgoing\"\n */\n type?: \"incoming\" | \"outgoing\";\n /**\n * The message is read if it is marked as read by the UI\n * @example \"read\"\n */\n status?: \"read\" | \"unread\";\n}\n\n/** Request parameters to GET a message status counter from GEM3 */\nexport interface RequestMsgStatusCounter {\n /**\n * An optional extra ID for the chat, for example the ID of the claim for MyBo\n * @example \"123456789\"\n */\n extraId?: string;\n /**\n * The unique identifier of the bot in Kore\n * @example \"bbot\"\n */\n botId?: string;\n /**\n * The unique identifier of the chat\n * @example \"1429169910\"\n */\n chatToken?: string;\n /**\n * The name of the status where the counter is needed of. Possible values: Created, Received, Read, Unread, Failure, Notified\n * @default \"Unread\"\n */\n status?: \"Created\" | \"Received\" | \"Read\" | \"Unread\" | \"Failure\" | \"Notified\";\n}\n\nexport interface OffsetPaginatedHistoryResponse {\n /** Object grouping the pagination links. */\n _links?: {\n /** Contains a link to the resource itself. */\n self?: {\n /**\n * This reference contains the absolute URL of the resource itself.\n * @format uri\n */\n href?: string;\n };\n /** Contains a link to the first page. */\n first?: {\n /**\n * This reference contains the absolute URL of the first page in a paged collection.\n * @format uri\n */\n href?: string;\n };\n /** Contains a link to the previous page. (Only when off set paginated) */\n prev?: {\n /**\n * This reference contains the absolute URL of the previous page in a paged collection.\n * @format uri\n */\n href?: string;\n };\n /** Contains a link to the next page. */\n next?: {\n /**\n * This reference contains the absolute URL of the next page in a paged collection.\n * @format uri\n */\n href?: string;\n };\n /** Contains a link to the last page. (Only when off set paginated) */\n last?: {\n /**\n * This reference contains the absolute URL to the last page in a paged collection.\n * @format uri\n */\n href?: string;\n };\n };\n /** Object grouping the pagination properties. */\n page?: {\n /**\n * The offset (or page number) is the start position of the concerned list of data. (Only when off set paginated)\n * @example 1\n */\n number?: number;\n /**\n * The number of items (or page size) in the embedded result.\n * @default 30\n * @example 5\n */\n size?: number;\n /**\n * The total of available pages. (Only when off set paginated)\n * @example 3\n */\n totalPages?: number;\n /**\n * Total number of resource items. (Only when off set paginated)\n * @format int64\n * @example 14\n */\n totalElements?: number;\n };\n /** The embedded results. */\n data?: {\n /** Conditionnaly display the history */\n forceDisplay?: boolean;\n /** Array of resource items (application/json results) */\n history?: {\n /** The payload of the functional messages template */\n message?: {\n /**\n * The message template type\n * @example \"text\"\n */\n template?: string;\n /**\n * The content of the message. It depends on the template type cfr. Confluence\n * @example \"Hello!\"\n */\n message?: object;\n /**\n * Unique identifier of the message\n * @format uuid\n */\n message_id?: string;\n /**\n * The timestamp of the message\n * @example \"1706108816561\"\n */\n timestamp?: string;\n /**\n * The timestamp of the mlessage as date format in UTC\n * @format date-time\n * @example \"2017-07-21T17:32:28Z\"\n */\n timestampsAsDate?: string;\n /**\n * 0 if the message comes from the bot or 1 if the message comes from the agent\n * @example 0\n */\n agent_flag?: 0 | 1;\n /**\n * The first name of the agent. This is empty if agent_flag is 0\n * @example \"Jean\"\n */\n agent_firstname?: string;\n /**\n * The last name of the agent. This is empty if agent_flag is 0\n * @example \"Bon\"\n */\n agent_lastname?: string;\n /**\n * The kore agent id. This is empty if agent_flag is 0\n * @example \"a-49687b1-ba0c-4a9c-a3d8-4244c8397645\"\n */\n agent_id?: string;\n /**\n * The initials of the agent. This is empty if agent_flag is 0\n * @example \"JB\"\n */\n agent_initials?: string;\n /**\n * 0 if the template should remain clickable in the chat or 1 if the template should be disable after use\n * @example 0\n */\n one_time_use?: 0 | 1;\n /**\n * true if the message contains clickable buttons\n * @example true\n */\n clickable?: boolean;\n };\n /**\n * The message is outgoing if it is sent by Kore and incoming if it is sent by the user\n * @example \"outgoing\"\n */\n type?: \"incoming\" | \"outgoing\";\n /**\n * The message is read if it is marked as read by the UI\n * @example \"read\"\n */\n status?: \"read\" | \"unread\";\n }[];\n };\n}\n\n/** The standardized Problem JSON as defined in RFC 7807. */\nexport interface Problem {\n /**\n * An absolute URI that identifies the problem type.\n * @format uri\n * @example \"about:blank\"\n */\n type: string;\n /**\n * A short summary of the problem type, written in English and readable for engineers.\n * @example \"Invalid input parameters.\"\n */\n title: string;\n /**\n * The HTTP status code of the problem / error.\n * @example \"400\"\n */\n status: string;\n /**\n * A detailed description human-readable exlanation to this occurence of the problem.\n * @example \"Please check the detailed information and reasons of parameter invalidation.\"\n */\n detail?: string;\n /** A list of errors. */\n errors?: {\n /**\n * The module where the error occurs.\n * @example \"MODULE\"\n */\n module: string;\n /**\n * The return code of the error.\n * @example \"1234\"\n */\n returnCode: string;\n /**\n * The subReturnCode of the error.\n * @example \"000000\"\n */\n subReturnCode?: string;\n /**\n * The severity of the error.\n * W = Warning\n * I = Information\n * E = Error\n * F = Fatal\n * @example \"E\"\n */\n severity: \"W\" | \"I\" | \"E\" | \"F\";\n }[];\n}\n\n/** The multiChannel Error or warning to fetch the correct context to be shown to the end-user. */\nexport interface MultiChannelErrorOrWarning {\n /**\n * The module where the error occurs.\n * @example \"MODULE\"\n */\n module: string;\n /**\n * The return code of the error.\n * @example \"1234\"\n */\n returnCode: string;\n /**\n * The subReturnCode of the error.\n * @example \"000000\"\n */\n subReturnCode?: string;\n /**\n * The severity of the error.\n * W = Warning\n * I = Information\n * E = Error\n * F = Fatal\n * @example \"E\"\n */\n severity: \"W\" | \"I\" | \"E\" | \"F\";\n}\n\n/** Object grouping the pagination links. */\nexport interface PaginatedResponseLinks {\n /** Contains a link to the resource itself. */\n self?: {\n /**\n * This reference contains the absolute URL of the resource itself.\n * @format uri\n */\n href?: string;\n };\n /** Contains a link to the first page. */\n first?: {\n /**\n * This reference contains the absolute URL of the first page in a paged collection.\n * @format uri\n */\n href?: string;\n };\n /** Contains a link to the previous page. (Only when off set paginated) */\n prev?: {\n /**\n * This reference contains the absolute URL of the previous page in a paged collection.\n * @format uri\n */\n href?: string;\n };\n /** Contains a link to the next page. */\n next?: {\n /**\n * This reference contains the absolute URL of the next page in a paged collection.\n * @format uri\n */\n href?: string;\n };\n /** Contains a link to the last page. (Only when off set paginated) */\n last?: {\n /**\n * This reference contains the absolute URL to the last page in a paged collection.\n * @format uri\n */\n href?: string;\n };\n}\n\n/** Object grouping the pagination properties. */\nexport interface PaginatedResponsePage {\n /**\n * The offset (or page number) is the start position of the concerned list of data. (Only when off set paginated)\n * @example 1\n */\n number?: number;\n /**\n * The number of items (or page size) in the embedded result.\n * @default 30\n * @example 5\n */\n size?: number;\n /**\n * The total of available pages. (Only when off set paginated)\n * @example 3\n */\n totalPages?: number;\n /**\n * Total number of resource items. (Only when off set paginated)\n * @format int64\n * @example 14\n */\n totalElements?: number;\n}\n\n/** Initialization object to request a new chat */\nexport interface PostCreateChatSessionPayload {\n /**\n * The unique identifier of the bot in Kore\n * @example \"bbot\"\n */\n botId: string;\n /**\n * An optional extra ID for the chat, for example the ID of the claim for MyBo\n * @example \"123456789\"\n */\n extraId?: string;\n}\n\nexport interface PostCreateChatSessionData {\n /**\n * The unique identifier of the chat\n * @format uuid\n * @example \"54ec0b53-d66a-4c55-8788-772157e6abe4\"\n */\n chatToken?: string;\n /**\n * The unique identifier of the conversation\n * @example \"wss://wps-conversational-ai-tst-we-001.webpubsub.azure.com/client/hubs/HubConversationalAi?access_token=bJVRhRTz6meHr3+RNJEG68ZDXKFFnSQzbee1wU8GEuU=\"\n */\n token?: string;\n}\n\n/**\n * The standardized Problem JSON as defined in RFC 7807.\n * The standardized Problem JSON as defined in RFC 7807.\n * The standardized Problem JSON as defined in RFC 7807.\n * The standardized Problem JSON as defined in RFC 7807.\n * The standardized Problem JSON as defined in RFC 7807.\n */\nexport type PostCreateChatSessionError = {\n /**\n * An absolute URI that identifies the problem type.\n * @format uri\n * @example \"about:blank\"\n */\n type: string;\n /**\n * A short summary of the problem type, written in English and readable for engineers.\n * @example \"Invalid input parameters.\"\n */\n title: string;\n /**\n * The HTTP status code of the problem / error.\n * @example \"400\"\n */\n status: string;\n /**\n * A detailed description human-readable exlanation to this occurence of the problem.\n * @example \"Please check the detailed information and reasons of parameter invalidation.\"\n */\n detail?: string;\n /** A list of errors. */\n errors?: {\n /**\n * The module where the error occurs.\n * @example \"MODULE\"\n */\n module: string;\n /**\n * The return code of the error.\n * @example \"1234\"\n */\n returnCode: string;\n /**\n * The subReturnCode of the error.\n * @example \"000000\"\n */\n subReturnCode?: string;\n /**\n * The severity of the error.\n * W = Warning\n * I = Information\n * E = Error\n * F = Fatal\n * @example \"E\"\n */\n severity: \"W\" | \"I\" | \"E\" | \"F\";\n }[];\n};\n\n/** Request header query parameters for gem3 GET request */\nexport interface PostRetrieveChatHistoryPayload {\n /**\n * The unique identifier of the chat\n * @example \"1429169910\"\n */\n chatToken?: string;\n /**\n * The unique identifier of the bot in Kore\n * @example \"bbot\"\n */\n botId: string;\n /**\n * Claim id used in insurance bot\n * @example \"20241125-7bd288af-3113-4a13-9de9-9f341df9eec9\"\n */\n extraId?: string;\n /**\n * The message status\n * @example \"Read\"\n */\n status?: \"Read\" | \"Unread\";\n /**\n * Start date of the history to retrieve\n * @format date-time\n */\n startDate: string;\n /**\n * End date of the history to retrieve\n * @format date-time\n */\n endDate: string;\n /**\n * Query parameter pagination page value\n * @example 1\n */\n page?: number;\n /**\n * Query paramaters pagination size value\n * @example 20\n */\n size?: number;\n}\n\nexport interface PostRetrieveChatHistoryData {\n /** Object grouping the pagination links. */\n _links?: {\n /** Contains a link to the resource itself. */\n self?: {\n /**\n * This reference contains the absolute URL of the resource itself.\n * @format uri\n */\n href?: string;\n };\n /** Contains a link to the first page. */\n first?: {\n /**\n * This reference contains the absolute URL of the first page in a paged collection.\n * @format uri\n */\n href?: string;\n };\n /** Contains a link to the previous page. (Only when off set paginated) */\n prev?: {\n /**\n * This reference contains the absolute URL of the previous page in a paged collection.\n * @format uri\n */\n href?: string;\n };\n /** Contains a link to the next page. */\n next?: {\n /**\n * This reference contains the absolute URL of the next page in a paged collection.\n * @format uri\n */\n href?: string;\n };\n /** Contains a link to the last page. (Only when off set paginated) */\n last?: {\n /**\n * This reference contains the absolute URL to the last page in a paged collection.\n * @format uri\n */\n href?: string;\n };\n };\n /** Object grouping the pagination properties. */\n page?: {\n /**\n * The offset (or page number) is the start position of the concerned list of data. (Only when off set paginated)\n * @example 1\n */\n number?: number;\n /**\n * The number of items (or page size) in the embedded result.\n * @default 30\n * @example 5\n */\n size?: number;\n /**\n * The total of available pages. (Only when off set paginated)\n * @example 3\n */\n totalPages?: number;\n /**\n * Total number of resource items. (Only when off set paginated)\n * @format int64\n * @example 14\n */\n totalElements?: number;\n };\n /** The embedded results. */\n data?: {\n /** Conditionnaly display the history */\n forceDisplay?: boolean;\n /** Array of resource items (application/json results) */\n history?: {\n /** The payload of the functional messages template */\n message?: {\n /**\n * The message template type\n * @example \"text\"\n */\n template?: string;\n /**\n * The content of the message. It depends on the template type cfr. Confluence\n * @example \"Hello!\"\n */\n message?: object;\n /**\n * Unique identifier of the message\n * @format uuid\n */\n message_id?: string;\n /**\n * The timestamp of the message\n * @example \"1706108816561\"\n */\n timestamp?: string;\n /**\n * The timestamp of the mlessage as date format in UTC\n * @format date-time\n * @example \"2017-07-21T17:32:28Z\"\n */\n timestampsAsDate?: string;\n /**\n * 0 if the message comes from the bot or 1 if the message comes from the agent\n * @example 0\n */\n agent_flag?: 0 | 1;\n /**\n * The first name of the agent. This is empty if agent_flag is 0\n * @example \"Jean\"\n */\n agent_firstname?: string;\n /**\n * The last name of the agent. This is empty if agent_flag is 0\n * @example \"Bon\"\n */\n agent_lastname?: string;\n /**\n * The kore agent id. This is empty if agent_flag is 0\n * @example \"a-49687b1-ba0c-4a9c-a3d8-4244c8397645\"\n */\n agent_id?: string;\n /**\n * The initials of the agent. This is empty if agent_flag is 0\n * @example \"JB\"\n */\n agent_initials?: string;\n /**\n * 0 if the template should remain clickable in the chat or 1 if the template should be disable after use\n * @example 0\n */\n one_time_use?: 0 | 1;\n /**\n * true if the message contains clickable buttons\n * @example true\n */\n clickable?: boolean;\n };\n /**\n * The message is outgoing if it is sent by Kore and incoming if it is sent by the user\n * @example \"outgoing\"\n */\n type?: \"incoming\" | \"outgoing\";\n /**\n * The message is read if it is marked as read by the UI\n * @example \"read\"\n */\n status?: \"read\" | \"unread\";\n }[];\n };\n}\n\n/**\n * The standardized Problem JSON as defined in RFC 7807.\n * The standardized Problem JSON as defined in RFC 7807.\n * The standardized Problem JSON as defined in RFC 7807.\n * The standardized Problem JSON as defined in RFC 7807.\n * The standardized Problem JSON as defined in RFC 7807.\n */\nexport type PostRetrieveChatHistoryError = {\n /**\n * An absolute URI that identifies the problem type.\n * @format uri\n * @example \"about:blank\"\n */\n type: string;\n /**\n * A short summary of the problem type, written in English and readable for engineers.\n * @example \"Invalid input parameters.\"\n */\n title: string;\n /**\n * The HTTP status code of the problem / error.\n * @example \"400\"\n */\n status: string;\n /**\n * A detailed description human-readable exlanation to this occurence of the problem.\n * @example \"Please check the detailed information and reasons of parameter invalidation.\"\n */\n detail?: string;\n /** A list of errors. */\n errors?: {\n /**\n * The module where the error occurs.\n * @example \"MODULE\"\n */\n module: string;\n /**\n * The return code of the error.\n * @example \"1234\"\n */\n returnCode: string;\n /**\n * The subReturnCode of the error.\n * @example \"000000\"\n */\n subReturnCode?: string;\n /**\n * The severity of the error.\n * W = Warning\n * I = Information\n * E = Error\n * F = Fatal\n * @example \"E\"\n */\n severity: \"W\" | \"I\" | \"E\" | \"F\";\n }[];\n};\n\n/** Request parameters to GET a message status counter from GEM3 */\nexport interface PostRetrieveChatCounterPayload {\n /**\n * An optional extra ID for the chat, for example the ID of the claim for MyBo\n * @example \"123456789\"\n */\n extraId?: string;\n /**\n * The unique identifier of the bot in Kore\n * @example \"bbot\"\n */\n botId?: string;\n /**\n * The unique identifier of the chat\n * @example \"1429169910\"\n */\n chatToken?: string;\n /**\n * The name of the status where the counter is needed of. Possible values: Created, Received, Read, Unread, Failure, Notified\n * @default \"Unread\"\n */\n status?: \"Created\" | \"Received\" | \"Read\" | \"Unread\" | \"Failure\" | \"Notified\";\n}\n\n/**\n * The counter\n * @example 3\n */\nexport type PostRetrieveChatCounterData = number;\n\n/**\n * The standardized Problem JSON as defined in RFC 7807.\n * The standardized Problem JSON as defined in RFC 7807.\n * The standardized Problem JSON as defined in RFC 7807.\n * The standardized Problem JSON as defined in RFC 7807.\n * The standardized Problem JSON as defined in RFC 7807.\n */\nexport type PostRetrieveChatCounterError = {\n /**\n * An absolute URI that identifies the problem type.\n * @format uri\n * @example \"about:blank\"\n */\n type: string;\n /**\n * A short summary of the problem type, written in English and readable for engineers.\n * @example \"Invalid input parameters.\"\n */\n title: string;\n /**\n * The HTTP status code of the problem / error.\n * @example \"400\"\n */\n status: string;\n /**\n * A detailed description human-readable exlanation to this occurence of the problem.\n * @example \"Please check the detailed information and reasons of parameter invalidation.\"\n */\n detail?: string;\n /** A list of errors. */\n errors?: {\n /**\n * The module where the error occurs.\n * @example \"MODULE\"\n */\n module: string;\n /**\n * The return code of the error.\n * @example \"1234\"\n */\n returnCode: string;\n /**\n * The subReturnCode of the error.\n * @example \"000000\"\n */\n subReturnCode?: string;\n /**\n * The severity of the error.\n * W = Warning\n * I = Information\n * E = Error\n * F = Fatal\n * @example \"E\"\n */\n severity: \"W\" | \"I\" | \"E\" | \"F\";\n }[];\n};\n\nexport namespace Chat {\n /**\n * @description Operation will request an inner api to start a new chat session\n * @tags Session\n * @name PostCreateChatSession\n * @summary Create initialization request to start new chat session.\n * @request POST:/chat/create\n */\n export namespace PostCreateChatSession {\n export type RequestParams = {};\n export type RequestQuery = {};\n export type RequestBody = PostCreateChatSessionPayload;\n export type RequestHeaders = {};\n export type ResponseBody = PostCreateChatSessionData;\n }\n /**\n * @description Retrieve request for the history of a conversation or a user\n * @tags History\n * @name PostRetrieveChatHistory\n * @summary Create retrieval history request of a conversation or user.\n * @request POST:/chat/history\n */\n export namespace PostRetrieveChatHistory {\n export type RequestParams = {};\n export type RequestQuery = {};\n export type RequestBody = PostRetrieveChatHistoryPayload;\n export type RequestHeaders = {};\n export type ResponseBody = PostRetrieveChatHistoryData;\n }\n /**\n * @description Use this operation to retrieve a counter for a certain status of messages and a certain ID, for example an unread counter for a user\n * @tags Counter\n * @name PostRetrieveChatCounter\n * @summary Request retrieval of counters for certain statuses of messages\n * @request POST:/chat/message-status-counters\n */\n export namespace PostRetrieveChatCounter {\n export type RequestParams = {};\n export type RequestQuery = {};\n export type RequestBody = PostRetrieveChatCounterPayload;\n export type RequestHeaders = {};\n export type ResponseBody = PostRetrieveChatCounterData;\n }\n}\n\nimport type { AxiosInstance, AxiosRequestConfig, AxiosResponse, HeadersDefaults, ResponseType } from \"axios\";\nimport axios from \"axios\";\n\nexport type QueryParamsType = Record;\n\nexport interface FullRequestParams extends Omit {\n /** set parameter to `true` for call `securityWorker` for this request */\n secure?: boolean;\n /** request path */\n path: string;\n /** content type of request body */\n type?: ContentType;\n /** query params */\n query?: QueryParamsType;\n /** format of response (i.e. response.json() -> format: \"json\") */\n format?: ResponseType;\n /** request body */\n body?: unknown;\n}\n\nexport type RequestParams = Omit;\n\nexport interface ApiConfig extends Omit {\n securityWorker?: (\n securityData: SecurityDataType | null,\n ) => Promise | AxiosRequestConfig | void;\n secure?: boolean;\n format?: ResponseType;\n}\n\nexport enum ContentType {\n Json = \"application/json\",\n FormData = \"multipart/form-data\",\n UrlEncoded = \"application/x-www-form-urlencoded\",\n Text = \"text/plain\",\n}\n\nexport class HttpClient {\n public instance: AxiosInstance;\n private securityData: SecurityDataType | null = null;\n private securityWorker?: ApiConfig[\"securityWorker\"];\n private secure?: boolean;\n private format?: ResponseType;\n\n constructor({ securityWorker, secure, format, ...axiosConfig }: ApiConfig = {}) {\n this.instance = axios.create({\n ...axiosConfig,\n baseURL: axiosConfig.baseURL || \"personal-assistant/conversational-ai\",\n });\n this.secure = secure;\n this.format = format;\n this.securityWorker = securityWorker;\n }\n\n public setSecurityData = (data: SecurityDataType | null) => {\n this.securityData = data;\n };\n\n protected mergeRequestParams(params1: AxiosRequestConfig, params2?: AxiosRequestConfig): AxiosRequestConfig {\n const method = params1.method || (params2 && params2.method);\n\n return {\n ...this.instance.defaults,\n ...params1,\n ...(params2 || {}),\n headers: {\n ...((method && this.instance.defaults.headers[method.toLowerCase() as keyof HeadersDefaults]) || {}),\n ...(params1.headers || {}),\n ...((params2 && params2.headers) || {}),\n },\n };\n }\n\n protected stringifyFormItem(formItem: unknown) {\n if (typeof formItem === \"object\" && formItem !== null) {\n return JSON.stringify(formItem);\n } else {\n return `${formItem}`;\n }\n }\n\n protected createFormData(input: Record): FormData {\n return Object.keys(input || {}).reduce((formData, key) => {\n const property = input[key];\n const propertyContent: any[] = property instanceof Array ? property : [property];\n\n for (const formItem of propertyContent) {\n const isFileType = formItem instanceof Blob || formItem instanceof File;\n formData.append(key, isFileType ? formItem : this.stringifyFormItem(formItem));\n }\n\n return formData;\n }, new FormData());\n }\n\n public request = async ({\n secure,\n path,\n type,\n query,\n format,\n body,\n ...params\n }: FullRequestParams): Promise> => {\n const secureParams =\n ((typeof secure === \"boolean\" ? secure : this.secure) &&\n this.securityWorker &&\n (await this.securityWorker(this.securityData))) ||\n {};\n const requestParams = this.mergeRequestParams(params, secureParams);\n const responseFormat = format || this.format || undefined;\n\n if (type === ContentType.FormData && body && body !== null && typeof body === \"object\") {\n body = this.createFormData(body as Record);\n }\n\n if (type === ContentType.Text && body && body !== null && typeof body !== \"string\") {\n body = JSON.stringify(body);\n }\n\n return this.instance.request({\n ...requestParams,\n headers: {\n ...(requestParams.headers || {}),\n ...(type && type !== ContentType.FormData ? { \"Content-Type\": type } : {}),\n },\n params: query,\n responseType: responseFormat,\n data: body,\n url: path,\n });\n };\n}\n\n// No longer needed\n// import { ToolBox } from \"@gef1/dax-client-sdk\";/\n//\n// function joinPath(baseUrl: string, endpoint: string, queryParams?: QueryParamsType) {\n// let query = ''\n// if (queryParams) {\n// let qp = new URLSearchParams(queryParams);\n// if(qp.size){\n// query = `?${qp.toString()}`;\n// }\n// }\n//\n// Strip any / at the end of baseUrl or at the start of endpoint when mergin baseurl\n// const path = [\n// baseUrl? [\n// baseUrl[baseUrl.length - 1] === \"/\" ? baseUrl.slice(0, baseUrl.length - 1) : baseUrl,\n// endpoint[0] === \"/\" ? endpoint.slice(1) : endpoint,\n// ].join(\"/\") : [\n// // no baseUrl normally doesn't happen\n// endpoint\n// ],\n// query\n// ].filter(x=>x).join('?');\n//\n// return path;\n// }\n\n/**\n * @title GET1 - Conversational AI Services\n * @version 1.0.6\n * @baseUrl https://swaggerhub.belwired.net/virts/Belfius/get1-conversational-ai-services/1.0.0\n * @externalDocs https://confluence.belwired.net:8443/x/KdrwCQ\n * @contact Belfius Digital Application Experience Team \n *\n * This API is a dedicated front API that connects to an inner belfius back-end api. It consists of operations to request credentials to create a new conversation with a bot, to retrieve the history of a conversation or a user and to retrieve a counter for a specific status of a message.\n *\n * ### Version history\n * #### Release Versions (1.0.0)\n * * v1.0.0: First version\n *\n */\nimport { ApiClient, ApiClientOptions, ApiRequest } from \"@gef1/dax-client-sdk\";\n\nexport class Api extends ApiClient {\n constructor({ fetcher }: Omit) {\n super({ baseUrl: \"personal-assistant/conversational-ai\", fetcher });\n }\n\n chat = {\n /**\n * @description Operation will request an inner api to start a new chat session\n * @tags Session\n * @name PostCreateChatSession\n * @summary Create initialization request to start new chat session.\n * @request POST:/chat/create\n */\n postCreateChatSession: async (\n data: PostCreateChatSessionPayload,\n params: Omit = {},\n ) =>\n (\n await this.fetch({\n url: `chat/create`,\n data: data,\n version: 1,\n ...params,\n })\n ).data,\n\n /**\n * @description Retrieve request for the history of a conversation or a user\n * @tags History\n * @name PostRetrieveChatHistory\n * @summary Create retrieval history request of a conversation or user.\n * @request POST:/chat/history\n */\n postRetrieveChatHistory: async (\n data: PostRetrieveChatHistoryPayload,\n params: Omit = {},\n ) =>\n (\n await this.fetch({\n url: `chat/history`,\n data: data,\n version: 1,\n ...params,\n })\n ).data,\n\n /**\n * @description Use this operation to retrieve a counter for a certain status of messages and a certain ID, for example an unread counter for a user\n * @tags Counter\n * @name PostRetrieveChatCounter\n * @summary Request retrieval of counters for certain statuses of messages\n * @request POST:/chat/message-status-counters\n */\n postRetrieveChatCounter: async (\n data: PostRetrieveChatCounterPayload,\n params: Omit = {},\n ) =>\n (\n await this.fetch({\n url: `chat/message-status-counters`,\n data: data,\n version: 1,\n ...params,\n })\n ).data,\n };\n}\n\n// TODO: This is currently coming from dax-client-sdk template.\n// This should be in a specialized one from dax-react-sdk, as its react specific\n// (however we don't want to repeat all this code again and having to keep them in sync)\nimport { useHost } from \"@gef1/dax-react-sdk\";\nimport { useMemo } from \"react\";\n\nexport function useApi() {\n const host = useHost();\n return useMemo(() => new Api({ fetcher: host.apiFetcher }), [host.apiFetcher]);\n}\n","export async function timeout(ms: number): Promise {\n return new Promise((resolve) => setTimeout(() => resolve(true), ms));\n}\n\nexport const isAppleDevice = () => {\n // @ts-ignore\n return /iPad|iPhone|iPod|Mac OS/.test(navigator.userAgent) && !window.MSStream;\n};\n\nexport enum APP_MODES {\n BDN = \"BDN\",\n BM = \"BM\",\n}\n\nexport const ROUTES_NAMES = {\n CHAT_UNAVAILABLE: \"chat-unavailable\",\n DEV: \"dev\",\n HOME: \"/\",\n};\n","import { RichFunctionalMessage } from \"@/store\";\nimport { TemplateType } from \"@/types\";\n\nconst TEMPLATES_WITHOUT_TIMESTAMP: TemplateType[] = [\"list\", \"separator\", \"status\"];\n\nconst timestampNeeded = (index: number, message: RichFunctionalMessage, messages: RichFunctionalMessage[]): boolean => {\n const nextMessage = messages[index + 1];\n const nextTimestamp = nextMessage?.payload.timestamp;\n const nextOrigin = nextMessage?.payload.agent_flag;\n const nextTemplate = nextMessage?.payload.template;\n\n return (\n [\"failed\", \"received\"].includes(message.internalStatus) &&\n !TEMPLATES_WITHOUT_TIMESTAMP.includes(message.payload.template) &&\n (!nextMessage ||\n // It is the first message\n messages.length === 1 ||\n // Next template do not display timestamp\n TEMPLATES_WITHOUT_TIMESTAMP.includes(nextTemplate) ||\n // The sender is different from the next message's one\n message.payload.agent_flag !== nextOrigin ||\n // The following message's timestamp is not within the same minute\n new Date(message.payload.timestamp).getMinutes() !== new Date(nextTimestamp).getMinutes())\n );\n};\n\nexport const messagesToChatElements = (messages: RichFunctionalMessage[]) => {\n return messages.map((message, index) => {\n const displayTimestamp = timestampNeeded(index, message, messages);\n\n const key = message.payload.timestamp.toString().concat(index.toString());\n\n return {\n key,\n message,\n displayTimestamp,\n };\n });\n};\n","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n date.setDate(date.getDate() + amount);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * const result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\nexport default function addSeconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * 1000);\n}","import startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day (and year and month)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nexport default function isSameDay(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft);\n var dateRightStartOfDay = startOfDay(dirtyDateRight);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * const result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\nexport default function getHours(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var hours = date.getHours();\n return hours;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}","import isSameDay from \"../isSameDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isToday\n * @category Day Helpers\n * @summary Is the given date today?\n * @pure false\n *\n * @description\n * Is the given date today?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is today\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 6 October 14:00:00 today?\n * const result = isToday(new Date(2014, 9, 6, 14, 0))\n * //=> true\n */\nexport default function isToday(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameDay(dirtyDate, Date.now());\n}","import addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport default function subDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addDays(dirtyDate, -amount);\n}","import isSameDay from \"../isSameDay/index.js\";\nimport subDays from \"../subDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isYesterday\n * @category Day Helpers\n * @summary Is the given date yesterday?\n * @pure false\n *\n * @description\n * Is the given date yesterday?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is yesterday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 5 October 14:00:00 yesterday?\n * const result = isYesterday(new Date(2014, 9, 5, 14, 0))\n * //=> true\n */\nexport default function isYesterday(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameDay(dirtyDate, subDays(Date.now(), 1));\n}","import startOfDay from \"../startOfDay/index.js\";\n/**\n * @name startOfToday\n * @category Day Helpers\n * @summary Return the start of today.\n * @pure false\n *\n * @description\n * Return the start of today.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @returns {Date} the start of today\n *\n * @example\n * // If today is 6 October 2014:\n * const result = startOfToday()\n * //=> Mon Oct 6 2014 00:00:00\n */\nexport default function startOfToday() {\n return startOfDay(Date.now());\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addSeconds from \"../addSeconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subSeconds\n * @category Second Helpers\n * @summary Subtract the specified number of seconds from the given date.\n *\n * @description\n * Subtract the specified number of seconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the seconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 30 seconds from 10 July 2014 12:45:00:\n * const result = subSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:44:30\n */\nexport default function subSeconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addSeconds(dirtyDate, -amount);\n}","import { format, getHours, isBefore, startOfToday } from \"date-fns\";\n\nexport const isYesterdayAndLater = (dateToCheck: Date) => {\n return isBefore(dateToCheck, startOfToday());\n};\n\nconst MORNING: string = \"morning\";\nconst AFTERNOON: string = \"afternoon\";\nconst EVENING: string = \"evening\";\n\nexport const getPartOfDay = () => {\n const hour = getHours(new Date());\n\n return hour < 12 ? MORNING : hour < 18 ? AFTERNOON : EVENING;\n};\n\nexport const formatWithSlash = (stringDate: string) => format(new Date(stringDate), \"dd/MM/yyyy\");\n","import { useHost } from \"@gef1/dax-react-sdk\";\nimport { useSelector } from \"react-redux\";\n\nimport { ASSETS_CONTAINER } from \"@/constants\";\nimport { RootState } from \"@/store\";\n\n// TODO this function should be moved to client SDK\nexport function getAssetsUrl(assetName: string) {\n const host = useHost();\n const assetsEnvironment = (host.environment === \"LOCAL\" ? \"TST\" : host.environment)??\"GTU\";\n\n const { onMobileDevice } = useSelector((state: RootState) => state.application);\n\n return assetsEnvironment === \"PRD\"\n ? `https://cdn${onMobileDevice ? \"-mobile\" : \"\"}.digital.belfius.be/images/${ASSETS_CONTAINER}/${assetName}`\n : `https://${assetsEnvironment.toLowerCase()}-cdn${onMobileDevice ? \"-mobile\" : \"\"}.digital.belfius.be/images/${ASSETS_CONTAINER}/${assetName}`;\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'moins d’une seconde',\n other: 'moins de {{count}} secondes'\n },\n xSeconds: {\n one: '1 seconde',\n other: '{{count}} secondes'\n },\n halfAMinute: '30 secondes',\n lessThanXMinutes: {\n one: 'moins d’une minute',\n other: 'moins de {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'environ 1 heure',\n other: 'environ {{count}} heures'\n },\n xHours: {\n one: '1 heure',\n other: '{{count}} heures'\n },\n xDays: {\n one: '1 jour',\n other: '{{count}} jours'\n },\n aboutXWeeks: {\n one: 'environ 1 semaine',\n other: 'environ {{count}} semaines'\n },\n xWeeks: {\n one: '1 semaine',\n other: '{{count}} semaines'\n },\n aboutXMonths: {\n one: 'environ 1 mois',\n other: 'environ {{count}} mois'\n },\n xMonths: {\n one: '1 mois',\n other: '{{count}} mois'\n },\n aboutXYears: {\n one: 'environ 1 an',\n other: 'environ {{count}} ans'\n },\n xYears: {\n one: '1 an',\n other: '{{count}} ans'\n },\n overXYears: {\n one: 'plus d’un an',\n other: 'plus de {{count}} ans'\n },\n almostXYears: {\n one: 'presqu’un an',\n other: 'presque {{count}} ans'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var form = formatDistanceLocale[token];\n if (typeof form === 'string') {\n result = form;\n } else if (count === 1) {\n result = form.one;\n } else {\n result = form.other.replace('{{count}}', String(count));\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'dans ' + result;\n } else {\n return 'il y a ' + result;\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE d MMMM y',\n long: 'd MMMM y',\n medium: 'd MMM y',\n short: 'dd/MM/y'\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'à' {{time}}\",\n long: \"{{date}} 'à' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"eeee 'dernier à' p\",\n yesterday: \"'hier à' p\",\n today: \"'aujourd’hui à' p\",\n tomorrow: \"'demain à' p'\",\n nextWeek: \"eeee 'prochain à' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['av. J.-C', 'ap. J.-C'],\n abbreviated: ['av. J.-C', 'ap. J.-C'],\n wide: ['avant Jésus-Christ', 'après Jésus-Christ']\n};\nvar quarterValues = {\n narrow: ['T1', 'T2', 'T3', 'T4'],\n abbreviated: ['1er trim.', '2ème trim.', '3ème trim.', '4ème trim.'],\n wide: ['1er trimestre', '2ème trimestre', '3ème trimestre', '4ème trimestre']\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'],\n wide: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre']\n};\nvar dayValues = {\n narrow: ['D', 'L', 'M', 'M', 'J', 'V', 'S'],\n short: ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'],\n abbreviated: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],\n wide: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'AM',\n pm: 'PM',\n midnight: 'minuit',\n noon: 'midi',\n morning: 'mat.',\n afternoon: 'ap.m.',\n evening: 'soir',\n night: 'mat.'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'minuit',\n noon: 'midi',\n morning: 'matin',\n afternoon: 'après-midi',\n evening: 'soir',\n night: 'matin'\n },\n wide: {\n am: 'AM',\n pm: 'PM',\n midnight: 'minuit',\n noon: 'midi',\n morning: 'du matin',\n afternoon: 'de l’après-midi',\n evening: 'du soir',\n night: 'du matin'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, options) {\n var number = Number(dirtyNumber);\n var unit = options === null || options === void 0 ? void 0 : options.unit;\n if (number === 0) return '0';\n var feminineUnits = ['year', 'week', 'hour', 'minute', 'second'];\n var suffix;\n if (number === 1) {\n suffix = unit && feminineUnits.includes(unit) ? 'ère' : 'er';\n } else {\n suffix = 'ème';\n }\n return number + suffix;\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(ième|ère|ème|er|e)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(av\\.J\\.C|ap\\.J\\.C|ap\\.J\\.-C)/i,\n abbreviated: /^(av\\.J\\.-C|av\\.J-C|apr\\.J\\.-C|apr\\.J-C|ap\\.J-C)/i,\n wide: /^(avant Jésus-Christ|après Jésus-Christ)/i\n};\nvar parseEraPatterns = {\n any: [/^av/i, /^ap/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^T?[1234]/i,\n abbreviated: /^[1234](er|ème|e)? trim\\.?/i,\n wide: /^[1234](er|ème|e)? trimestre/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(janv|févr|mars|avr|mai|juin|juill|juil|août|sept|oct|nov|déc)\\.?/i,\n wide: /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^av/i, /^ma/i, /^juin/i, /^juil/i, /^ao/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[lmjvsd]/i,\n short: /^(di|lu|ma|me|je|ve|sa)/i,\n abbreviated: /^(dim|lun|mar|mer|jeu|ven|sam)\\.?/i,\n wide: /^(dimanche|lundi|mardi|mercredi|jeudi|vendredi|samedi)/i\n};\nvar parseDayPatterns = {\n narrow: [/^d/i, /^l/i, /^m/i, /^m/i, /^j/i, /^v/i, /^s/i],\n any: [/^di/i, /^lu/i, /^ma/i, /^me/i, /^je/i, /^ve/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|minuit|midi|mat\\.?|ap\\.?m\\.?|soir|nuit)/i,\n any: /^([ap]\\.?\\s?m\\.?|du matin|de l'après[-\\s]midi|du soir|de la nuit)/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^min/i,\n noon: /^mid/i,\n morning: /mat/i,\n afternoon: /ap/i,\n evening: /soir/i,\n night: /nuit/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary French locale.\n * @language French\n * @iso-639-2 fra\n * @author Jean Dupouy [@izeau]{@link https://github.com/izeau}\n * @author François B [@fbonzon]{@link https://github.com/fbonzon}\n */\nvar locale = {\n code: 'fr',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1 /* Monday */,\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'minder dan een seconde',\n other: 'minder dan {{count}} seconden'\n },\n xSeconds: {\n one: '1 seconde',\n other: '{{count}} seconden'\n },\n halfAMinute: 'een halve minuut',\n lessThanXMinutes: {\n one: 'minder dan een minuut',\n other: 'minder dan {{count}} minuten'\n },\n xMinutes: {\n one: 'een minuut',\n other: '{{count}} minuten'\n },\n aboutXHours: {\n one: 'ongeveer 1 uur',\n other: 'ongeveer {{count}} uur'\n },\n xHours: {\n one: '1 uur',\n other: '{{count}} uur'\n },\n xDays: {\n one: '1 dag',\n other: '{{count}} dagen'\n },\n aboutXWeeks: {\n one: 'ongeveer 1 week',\n other: 'ongeveer {{count}} weken'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weken'\n },\n aboutXMonths: {\n one: 'ongeveer 1 maand',\n other: 'ongeveer {{count}} maanden'\n },\n xMonths: {\n one: '1 maand',\n other: '{{count}} maanden'\n },\n aboutXYears: {\n one: 'ongeveer 1 jaar',\n other: 'ongeveer {{count}} jaar'\n },\n xYears: {\n one: '1 jaar',\n other: '{{count}} jaar'\n },\n overXYears: {\n one: 'meer dan 1 jaar',\n other: 'meer dan {{count}} jaar'\n },\n almostXYears: {\n one: 'bijna 1 jaar',\n other: 'bijna {{count}} jaar'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', String(count));\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'over ' + result;\n } else {\n return result + ' geleden';\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE d MMMM y',\n long: 'd MMMM y',\n medium: 'd MMM y',\n short: 'dd-MM-y'\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'om' {{time}}\",\n long: \"{{date}} 'om' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'afgelopen' eeee 'om' p\",\n yesterday: \"'gisteren om' p\",\n today: \"'vandaag om' p\",\n tomorrow: \"'morgen om' p\",\n nextWeek: \"eeee 'om' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['v.C.', 'n.C.'],\n abbreviated: ['v.Chr.', 'n.Chr.'],\n wide: ['voor Christus', 'na Christus']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['K1', 'K2', 'K3', 'K4'],\n wide: ['1e kwartaal', '2e kwartaal', '3e kwartaal', '4e kwartaal']\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['jan.', 'feb.', 'mrt.', 'apr.', 'mei', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'],\n wide: ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december']\n};\nvar dayValues = {\n narrow: ['Z', 'M', 'D', 'W', 'D', 'V', 'Z'],\n short: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],\n abbreviated: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'],\n wide: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'AM',\n pm: 'PM',\n midnight: 'middernacht',\n noon: 'het middaguur',\n morning: \"'s ochtends\",\n afternoon: \"'s middags\",\n evening: \"'s avonds\",\n night: \"'s nachts\"\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'middernacht',\n noon: 'het middaguur',\n morning: \"'s ochtends\",\n afternoon: \"'s middags\",\n evening: \"'s avonds\",\n night: \"'s nachts\"\n },\n wide: {\n am: 'AM',\n pm: 'PM',\n midnight: 'middernacht',\n noon: 'het middaguur',\n morning: \"'s ochtends\",\n afternoon: \"'s middags\",\n evening: \"'s avonds\",\n night: \"'s nachts\"\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n return number + 'e';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)e?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^([vn]\\.? ?C\\.?)/,\n abbreviated: /^([vn]\\. ?Chr\\.?)/,\n wide: /^((voor|na) Christus)/\n};\nvar parseEraPatterns = {\n any: [/^v/, /^n/]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^K[1234]/i,\n wide: /^[1234]e kwartaal/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan.|feb.|mrt.|apr.|mei|jun.|jul.|aug.|sep.|okt.|nov.|dec.)/i,\n wide: /^(januari|februari|maart|april|mei|juni|juli|augustus|september|oktober|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^jan/i, /^feb/i, /^m(r|a)/i, /^apr/i, /^mei/i, /^jun/i, /^jul/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i]\n};\nvar matchDayPatterns = {\n narrow: /^[zmdwv]/i,\n short: /^(zo|ma|di|wo|do|vr|za)/i,\n abbreviated: /^(zon|maa|din|woe|don|vri|zat)/i,\n wide: /^(zondag|maandag|dinsdag|woensdag|donderdag|vrijdag|zaterdag)/i\n};\nvar parseDayPatterns = {\n narrow: [/^z/i, /^m/i, /^d/i, /^w/i, /^d/i, /^v/i, /^z/i],\n any: [/^zo/i, /^ma/i, /^di/i, /^wo/i, /^do/i, /^vr/i, /^za/i]\n};\nvar matchDayPeriodPatterns = {\n any: /^(am|pm|middernacht|het middaguur|'s (ochtends|middags|avonds|nachts))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^am/i,\n pm: /^pm/i,\n midnight: /^middernacht/i,\n noon: /^het middaguur/i,\n morning: /ochtend/i,\n afternoon: /middag/i,\n evening: /avond/i,\n night: /nacht/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Dutch locale.\n * @language Dutch\n * @iso-639-2 nld\n * @author Jorik Tangelder [@jtangelder]{@link https://github.com/jtangelder}\n * @author Ruben Stolk [@rubenstolk]{@link https://github.com/rubenstolk}\n * @author Lode Vanhove [@bitcrumb]{@link https://github.com/bitcrumb}\n * @author Edo Rivai [@edorivai]{@link https://github.com/edorivai}\n * @author Niels Keurentjes [@curry684]{@link https://github.com/curry684}\n * @author Stefan Vermaas [@stefanvermaas]{@link https://github.com/stefanvermaas}\n */\nvar locale = {\n code: 'nl',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1 /* Monday */,\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","import { enUS, fr, nl } from \"date-fns/locale\";\n\nexport const getDateFNSLocale = (locale: string) => {\n return (\n {\n en: enUS, // default locale\n fr_be: fr, // Locale FR format on BM context\n \"fr-BE\": fr, // Locale FR format on BDN context\n nl_be: nl, // Locale NL format on BM context\n \"nl-BE\": nl, // Locale NL format on BDN context\n }[locale] || enUS\n );\n};\n","import { History } from \"@/__generated__/pa-api.ts\";\nimport { SeparatorElementProps } from \"@/components\";\nimport { ChatElementProps, FunctionalMessagePayload } from \"@/components\";\nimport { HistoricRichFunctionalMessage, HistoryDay } from \"@/hooks\";\nimport { RichFunctionalMessage } from \"@/store\";\nimport { TemplateType } from \"@/types\";\n\nexport function mapToFunctionalMessage(historyItem: History): HistoricRichFunctionalMessage {\n return {\n ...historyItem,\n direction: historyItem.type!,\n type: \"FUNCTIONAL\",\n payload: {\n agent_firstname: historyItem.message?.agent_firstname ?? \"\",\n agent_flag: historyItem.type === \"incoming\" ? undefined : !!historyItem.message?.agent_flag,\n agent_initials: historyItem.message?.agent_initials ?? \"\",\n clickable: historyItem.message?.clickable,\n historyMessage: true,\n message: historyItem.message!.message as ChatElementProps,\n template: historyItem.message!.template as TemplateType,\n timestamp: new Date(historyItem.message!.timestamp!),\n },\n message_id: \"\",\n internalStatus: \"received\",\n };\n}\n\nexport function mapToDividerMessage(\n label: string,\n timestamp: Date,\n): HistoricRichFunctionalMessage> {\n return {\n direction: undefined,\n message_id: \"\",\n type: \"FUNCTIONAL\",\n internalStatus: \"received\",\n payload: {\n agent_firstname: \"\",\n agent_initials: \"\",\n message: {\n label,\n },\n template: \"separator\",\n timestamp,\n },\n };\n}\n\nexport const groupMessagesByDay = (\n historyMessages: (HistoricRichFunctionalMessage> | RichFunctionalMessage)[],\n) => {\n return historyMessages.reduce((acc, message) => {\n const timestamp = message.payload.timestamp;\n const dayKey = `${timestamp.getFullYear()}/${timestamp.getMonth() + 1}/${timestamp.getDate()}`;\n\n let existingGroup = acc.find((group) => group.day === dayKey);\n\n if (!existingGroup) {\n existingGroup = {\n day: dayKey,\n messages: [],\n };\n acc.push(existingGroup);\n }\n\n existingGroup.messages.push(message);\n return acc;\n }, [] as HistoryDay[]);\n};\n","export const decodeChatMessage = (data: T, onMobile?: boolean): T => {\n if (!data || ![\"string\", \"object\"].includes(typeof data)) {\n return data;\n }\n\n const replaceMap = {\n \"\\\\/\": \"/\",\n \"\\\\\\\\\": \"\\\\\",\n };\n\n const mobileReplaceMap = {\n '\\\\\"': '\"',\n \"\\\\/\": \"/\",\n \"\\\\\\\\\": \"\\\\\",\n };\n\n const replacedData = Object.entries(onMobile ? mobileReplaceMap : replaceMap).reduce((replacedValue, [toBeReplaced, replacedBy]) => {\n return replacedValue.replaceAll(toBeReplaced, replacedBy);\n }, JSON.stringify(data));\n\n // For some specific use cases (template, language & environment),the parsing might fail even of the data is valid JSON\n // In that case replacing the data is not necessary & triggers errors\n try {\n return JSON.parse(replacedData);\n } catch (e) {\n return data;\n }\n};\n","export function unHandledCase(_unHandledCase: never): never {\n throw new Error(`${_unHandledCase} is missing`);\n}","import { useDispatch, useSelector } from \"react-redux\";\n\nimport { ChatMessage, FunctionalMessage, TechnicalMessage } from \"@/components/chat-elements/message.interface.ts\";\nimport { useTranslator } from \"@gef1/dax-react-sdk\";\nimport { addMessage, RootState, setInputDisabled, setTyping, setUnreadCount, updateMessage, updateMessageStatus } from \"@/store\";\nimport { formatOutgoingMessage, formatTextMessage, MessageSender, timeout } from \"@/utils\";\n\n/*\n That delay supposed to be random,\n but sometimes result the messages being in the wrong orders when two or more messages\n are sent one just after the other.\n An improvement would be to implement a queue to handle the messages in the right order,\n and set the random delay back.\n */\nconst FAKE_DELAY = 700;\n\nexport const useMessages = () => {\n const {\n application: { minimized, onMobileDevice },\n chat: { historyLastMessagesIds, messages, unreadCount },\n } = useSelector((state: RootState) => state);\n const dispatch = useDispatch();\n const t = useTranslator();\n\n const handleFunctionalMessage = async (message: FunctionalMessage) => {\n const { message_id } = message;\n\n // If the message already exists in the history, we don't want to add it again\n if (historyLastMessagesIds.includes(message_id)) {\n return;\n }\n\n const existingMessage = messages.find((m) => m.message_id === message_id);\n\n // Animation should not be displayed if it's an existing message\n if (message.payload.agent_flag === false && !existingMessage) {\n dispatch(setTyping(true));\n await timeout(FAKE_DELAY);\n dispatch(setTyping(false));\n }\n\n if (message.payload.agent_flag === undefined) {\n dispatch(updateMessageStatus({ id: message.message_id, status: \"failed\" }));\n } else {\n message.payload.timestamp = new Date(message.payload.timestamp);\n\n if (existingMessage) {\n dispatch(updateMessage({ oldMessage: existingMessage, newMessage: message }));\n } else {\n dispatch(addMessage(message));\n }\n }\n\n if (onMobileDevice || !minimized) {\n MessageSender.getInstance().confirmReading(message.message_id);\n }\n\n if (minimized) {\n dispatch(setUnreadCount(unreadCount + 1));\n }\n\n if (!onMobileDevice) {\n MessageSender.getInstance().acknowledgeReceipt(message.message_id);\n }\n };\n\n const handleTechnicalMessage = async (message: TechnicalMessage) => {\n const {\n message_id,\n payload: { message: eventName },\n } = message;\n\n if (eventName === \"ACK\" && message_id) {\n dispatch(updateMessageStatus({ id: message_id, status: \"received\" }));\n }\n\n if (eventName === \"DEACTIVATE_SESSION\") {\n const message = formatTextMessage(t(\"descriptions.deactivateSession\"), true);\n dispatch(setInputDisabled(true));\n dispatch(addMessage(message));\n }\n };\n\n const handleMessages = (lastMessage: string | null | undefined) => {\n if (lastMessage) {\n const parsedMessages = JSON.parse(lastMessage) as ChatMessage[] | ChatMessage;\n if (Array.isArray(parsedMessages)) {\n parsedMessages.forEach((parsedMessage) => {\n if (parsedMessage.type === \"FUNCTIONAL\") {\n handleFunctionalMessage(parsedMessage);\n } else {\n handleTechnicalMessage(parsedMessage);\n }\n });\n } else {\n if (parsedMessages.type === \"FUNCTIONAL\") {\n handleFunctionalMessage(parsedMessages);\n } else {\n handleTechnicalMessage(parsedMessages);\n }\n }\n }\n };\n\n return { handleMessages };\n};\n\nexport const useDevModeMessages = () => {\n const dispatch = useDispatch();\n const {\n application: { minimized },\n chat: { unreadCount },\n } = useSelector((state: RootState) => state);\n\n const handleFunctionalMessage = async (message: FunctionalMessage) => {\n if (message.payload.agent_flag === false) {\n dispatch(setTyping(true));\n const fakeDelay = Math.floor(Math.random() * 700);\n await timeout(fakeDelay);\n dispatch(setTyping(false));\n }\n\n if (message.payload.agent_flag === undefined) {\n dispatch(updateMessageStatus({ id: message.message_id, status: \"failed\" }));\n } else {\n if (minimized) {\n dispatch(setUnreadCount(unreadCount + 1));\n }\n\n dispatch(addMessage(message));\n }\n };\n\n const handleTechnicalMessage = async (message: TechnicalMessage) => {\n console.log(\"Technical message received: \", message);\n };\n\n const handleMessage = (lastMessage: MessageEvent | null) => {\n if (lastMessage) {\n const parsedMessage = JSON.parse(lastMessage.data) as ChatMessage;\n\n if (parsedMessage.type === \"FUNCTIONAL\") {\n handleFunctionalMessage(parsedMessage);\n } else {\n handleTechnicalMessage(parsedMessage);\n }\n }\n };\n\n return { handleMessage };\n};\n\nexport const useMessageSender = () => {\n const dispatch = useDispatch();\n\n const sendMessage = (message: string, formattedMessage: FunctionalMessage, action?: string) => {\n const options = {\n action,\n id: formattedMessage.message_id,\n message,\n };\n\n MessageSender.getInstance().send(formatOutgoingMessage(options));\n };\n\n const sendBack = (message: string, action?: string) => {\n const formattedMessage = formatTextMessage(message);\n\n dispatch(addMessage(formattedMessage));\n\n sendMessage(message, formattedMessage, action);\n };\n\n const sendBackWithoutShown = (message: string, action?: string) => {\n const formattedMessage = formatTextMessage(message);\n\n sendMessage(message, formattedMessage, action);\n };\n\n return { sendBack, sendBackWithoutShown };\n};\n","import { Context, WebSocketProxy } from \"@gef1/dax-gefw-host\";\nimport { isAxiosError } from \"axios\";\nimport { useEffect, useRef } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport useWebSocket from \"react-use-websocket\";\nimport { WebSocketMessage } from \"react-use-websocket/dist/lib/types.js\";\n\nimport { PostCreateChatSessionData, useApi } from \"@/__generated__/pa-api.ts\";\nimport { ChatMessage } from \"@/components/chat-elements/message.interface.ts\";\nimport { useFlowContext, useWebSocketFactory } from \"@/contexts\";\nimport { BotType } from \"@/menus\";\nimport { setChat, setChatIsReady, setError, setLoading, setRequestedBotType } from \"@/store\";\nimport { APP_MODES, decodeChatMessage, MessageSender, OutgoingMessage } from \"@/utils\";\n\nimport { useDevModeMessages, useMessages } from \"./use-messages.ts\";\n\n// Helper function\nexport const resolveBotType = (botId: string, context?: Context): BotType => {\n const botDefinition = context?.pa?.botIds?.find((config) => config.id.toLowerCase() === botId.toLowerCase());\n\n if (botDefinition) {\n return botDefinition.properties.botType as BotType;\n } else {\n return (context?.botType as BotType) || BotType.BANK;\n }\n};\n\nexport const useChat = () => {\n const api = useApi();\n const context: Context = useFlowContext();\n const dispatch = useDispatch();\n const webSocketFactory = useWebSocketFactory();\n\n const { handleMessages } = useMessages();\n // useRef instead of using handleMessages directly. This ensures handleMessages uses the updated version of 'minimized' internally.\n const handleMessageRef = useRef(handleMessages);\n handleMessageRef.current = handleMessages;\n\n const createChat = async (config?: { botId: string; extraId: string }): Promise => {\n const botId = config?.botId || context.botId || (context.pa?.botIds as Array<{ id: string }>)[0].id;\n if (!botId) {\n throw new Error(\"Chatbot id is not set\");\n }\n\n const botType = resolveBotType(botId as string, context);\n\n dispatch(setRequestedBotType(botType));\n\n const response = await api.chat.postCreateChatSession(\n config || {\n botId: botId as string,\n },\n { suppressWaitPointer: true },\n );\n\n dispatch(\n setChat({\n botId: botId as string,\n chatToken: response.chatToken!,\n token: response.token!,\n botType: botType,\n extraId: config?.extraId,\n }),\n );\n\n return response;\n };\n\n const runWS = async (token: string) => {\n stopChat();\n const ws = webSocketFactory.createWebSocket(\"PA\", token!, {\n onOpen: () => {\n console.log(\"WebSocket connection opened\");\n initializeMessageSender();\n },\n onMessage: (message: string) => {\n console.log(`MESSAGE RECEIVED: ${JSON.stringify(message)}`);\n handleMessageRef.current(JSON.stringify(decodeChatMessage(message, context.mode === APP_MODES.BM)));\n },\n onError: () => {\n dispatch(setError(\"Error in WebSocket connection\"));\n },\n });\n\n const initializeMessageSender = () => {\n const sendMessage = (message: ChatMessage | OutgoingMessage) => {\n console.log(`${message?.type} MESSAGE: ${JSON.stringify(message?.payload)}`);\n ws.sendMessage(message);\n };\n\n MessageSender.initialize(sendMessage);\n\n if (context.wasMinimized !== \"true\" && context.wasMinimized !== true) {\n MessageSender.getInstance().connect();\n }\n };\n\n // previous tries to keep reference to open websocket:\n // - useState: state gets reset sometimes and looses reference to open socket\n // - chatState: works, but React complains about not-serializable object in the state\n context._ws = ws;\n\n dispatch(setChatIsReady(true));\n };\n\n const startChat = async (config?: {\n botId: string;\n extraId: string;\n // Alternatively, chat/create might have already been done by BDN/mobile\n chatToken?: string;\n token?: string;\n }) => {\n try {\n dispatch(setLoading(true));\n dispatch(setError(null));\n let chatWs: { chatToken?: string; token?: string };\n if (config?.chatToken && config?.token) {\n chatWs = { chatToken: config.chatToken, token: config.token };\n } else {\n chatWs = await createChat(config);\n }\n await runWS(chatWs.token!);\n } catch (e) {\n dispatch(setError(isAxiosError(e) ? e.message : \"Something went wrong\"));\n } finally {\n dispatch(setLoading(false));\n }\n };\n\n const stopChat = () => {\n (context._ws as WebSocketProxy)?.close();\n context._ws = null;\n };\n\n return { runWS, startChat, stopChat };\n};\n\nexport const useDevChat = () => {\n const TESTING_WS_URL = \"ws://localhost:3005/8888\";\n // @ts-ignore (TS bug?)\n const { sendMessage, lastMessage } = useWebSocket(TESTING_WS_URL);\n const { handleMessage } = useDevModeMessages();\n\n // allow to see sent messages in console in dev chat\n const send = (msg: WebSocketMessage) => {\n console.log(\"Sending message \", msg);\n sendMessage(msg);\n };\n\n const startDemoChat = async () => {\n // @ts-ignore (Compiler is not complaining but Tests are failing with this line...)\n MessageSender.initialize(send);\n };\n\n useEffect(() => {\n if (lastMessage) {\n handleMessage(lastMessage);\n }\n }, [lastMessage]);\n\n return { startDemoChat };\n};\n","import { NavigationMode } from \"@gef1/dax-client-sdk\";\nimport { useSelector } from \"react-redux\";\n\nimport { useMobileBridge, useNavigation } from \"@/contexts\";\nimport { RootState } from \"@/store\";\nimport { LinkTarget } from \"@/types\";\nimport { URL_APP_KEY_PATTERN } from \"@/constants\";\n\nexport const useDaxNavigation = () => {\n const { onMobileDevice } = useSelector((state: RootState) => state.application);\n const navigation = useNavigation();\n\n const mobileBridge = useMobileBridge();\n\n const navigate = (url: string, target?: LinkTarget) => {\n if (onMobileDevice) {\n const isInformational = !url.toLowerCase().includes(URL_APP_KEY_PATTERN);\n\n return isInformational ? mobileBridge.openNewWebView(url) : mobileBridge.closeHybridFlowAndRedirect(url);\n }\n\n const navigationMode =\n target === \"external\" ? NavigationMode.ASIDE : target === \"internal\" ? NavigationMode.INTERNAL : NavigationMode.ON_TOP;\n\n navigation.navigateTo(url, navigationMode);\n };\n\n return { navigate };\n};\n","function _interopRequireDefault(e) {\n return e && e.__esModule ? e : {\n \"default\": e\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = requiredArgs;\nfunction requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isDate;\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\nvar _index = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nfunction isDate(value) {\n (0, _index.default)(1, arguments);\n return value instanceof Date || (0, _typeof2.default)(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toDate;\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\nvar _index = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nfunction toDate(argument) {\n (0, _index.default)(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || (0, _typeof2.default)(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isValid;\nvar _index = _interopRequireDefault(require(\"../isDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nfunction isValid(dirtyDate) {\n (0, _index3.default)(1, arguments);\n if (!(0, _index.default)(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = (0, _index2.default)(dirtyDate);\n return !isNaN(Number(date));\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toInteger;\nfunction toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = addMilliseconds;\nvar _index = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nfunction addMilliseconds(dirtyDate, dirtyAmount) {\n (0, _index3.default)(2, arguments);\n var timestamp = (0, _index2.default)(dirtyDate).getTime();\n var amount = (0, _index.default)(dirtyAmount);\n return new Date(timestamp + amount);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = subMilliseconds;\nvar _index = _interopRequireDefault(require(\"../addMilliseconds/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nfunction subMilliseconds(dirtyDate, dirtyAmount) {\n (0, _index2.default)(2, arguments);\n var amount = (0, _index3.default)(dirtyAmount);\n return (0, _index.default)(dirtyDate, -amount);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getUTCDayOfYear;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar MILLISECONDS_IN_DAY = 86400000;\nfunction getUTCDayOfYear(dirtyDate) {\n (0, _index2.default)(1, arguments);\n var date = (0, _index.default)(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = startOfUTCISOWeek;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nfunction startOfUTCISOWeek(dirtyDate) {\n (0, _index2.default)(1, arguments);\n var weekStartsOn = 1;\n var date = (0, _index.default)(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getUTCISOWeekYear;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCISOWeek/index.js\"));\nfunction getUTCISOWeekYear(dirtyDate) {\n (0, _index2.default)(1, arguments);\n var date = (0, _index.default)(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = (0, _index3.default)(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = (0, _index3.default)(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = startOfUTCISOWeekYear;\nvar _index = _interopRequireDefault(require(\"../getUTCISOWeekYear/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../startOfUTCISOWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nfunction startOfUTCISOWeekYear(dirtyDate) {\n (0, _index3.default)(1, arguments);\n var year = (0, _index.default)(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = (0, _index2.default)(fourthOfJanuary);\n return date;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getUTCISOWeek;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../startOfUTCISOWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCISOWeekYear/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar MILLISECONDS_IN_WEEK = 604800000;\nfunction getUTCISOWeek(dirtyDate) {\n (0, _index4.default)(1, arguments);\n var date = (0, _index.default)(dirtyDate);\n var diff = (0, _index2.default)(date).getTime() - (0, _index3.default)(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getDefaultOptions = getDefaultOptions;\nexports.setDefaultOptions = setDefaultOptions;\nvar defaultOptions = {};\nfunction getDefaultOptions() {\n return defaultOptions;\n}\nfunction setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = startOfUTCWeek;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../toInteger/index.js\"));\nvar _index4 = require(\"../defaultOptions/index.js\");\nfunction startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n (0, _index2.default)(1, arguments);\n var defaultOptions = (0, _index4.getDefaultOptions)();\n var weekStartsOn = (0, _index3.default)((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = (0, _index.default)(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getUTCWeekYear;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCWeek/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../toInteger/index.js\"));\nvar _index5 = require(\"../defaultOptions/index.js\");\nfunction getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n (0, _index2.default)(1, arguments);\n var date = (0, _index.default)(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = (0, _index5.getDefaultOptions)();\n var firstWeekContainsDate = (0, _index4.default)((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = (0, _index3.default)(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = (0, _index3.default)(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = startOfUTCWeekYear;\nvar _index = _interopRequireDefault(require(\"../getUTCWeekYear/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCWeek/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../toInteger/index.js\"));\nvar _index5 = require(\"../defaultOptions/index.js\");\nfunction startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n (0, _index2.default)(1, arguments);\n var defaultOptions = (0, _index5.getDefaultOptions)();\n var firstWeekContainsDate = (0, _index4.default)((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = (0, _index.default)(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = (0, _index3.default)(firstWeek, options);\n return date;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getUTCWeek;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../startOfUTCWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCWeekYear/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar MILLISECONDS_IN_WEEK = 604800000;\nfunction getUTCWeek(dirtyDate, options) {\n (0, _index4.default)(1, arguments);\n var date = (0, _index.default)(dirtyDate);\n var diff = (0, _index2.default)(date, options).getTime() - (0, _index3.default)(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = addLeadingZeros;\nfunction addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../addLeadingZeros/index.js\"));\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return (0, _index.default)(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : (0, _index.default)(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return (0, _index.default)(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return (0, _index.default)(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return (0, _index.default)(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return (0, _index.default)(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return (0, _index.default)(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return (0, _index.default)(fractionalSeconds, token.length);\n }\n};\nvar _default = formatters;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../../_lib/getUTCDayOfYear/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../../../_lib/getUTCISOWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../../../_lib/getUTCISOWeekYear/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../../../_lib/getUTCWeek/index.js\"));\nvar _index5 = _interopRequireDefault(require(\"../../../_lib/getUTCWeekYear/index.js\"));\nvar _index6 = _interopRequireDefault(require(\"../../addLeadingZeros/index.js\"));\nvar _index7 = _interopRequireDefault(require(\"../lightFormatters/index.js\"));\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return _index7.default.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = (0, _index5.default)(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return (0, _index6.default)(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return (0, _index6.default)(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = (0, _index3.default)(date);\n\n // Padding\n return (0, _index6.default)(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return (0, _index6.default)(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return (0, _index6.default)(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return (0, _index6.default)(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return _index7.default.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return (0, _index6.default)(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = (0, _index4.default)(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return (0, _index6.default)(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = (0, _index2.default)(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return (0, _index6.default)(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return _index7.default.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = (0, _index.default)(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return (0, _index6.default)(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return (0, _index6.default)(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return (0, _index6.default)(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return (0, _index6.default)(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return _index7.default.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return _index7.default.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return (0, _index6.default)(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return (0, _index6.default)(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return _index7.default.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return _index7.default.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return _index7.default.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return (0, _index6.default)(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return (0, _index6.default)(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + (0, _index6.default)(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + (0, _index6.default)(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = (0, _index6.default)(Math.floor(absOffset / 60), 2);\n var minutes = (0, _index6.default)(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nvar _default = formatters;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nvar _default = longFormatters;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getTimezoneOffsetInMilliseconds;\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nfunction getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isProtectedDayOfYearToken = isProtectedDayOfYearToken;\nexports.isProtectedWeekYearToken = isProtectedWeekYearToken;\nexports.throwProtectedError = throwProtectedError;\nvar protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nfunction isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nfunction isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nfunction throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nvar _default = formatDistance;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = buildFormatLongFn;\nfunction buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../../_lib/buildFormatLongFn/index.js\"));\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: (0, _index.default)({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: (0, _index.default)({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: (0, _index.default)({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nvar _default = formatLong;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nvar _default = formatRelative;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = buildLocalizeFn;\nfunction buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../../_lib/buildLocalizeFn/index.js\"));\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: (0, _index.default)({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: (0, _index.default)({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: (0, _index.default)({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: (0, _index.default)({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: (0, _index.default)({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nvar _default = localize;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = buildMatchFn;\nfunction buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = buildMatchPatternFn;\nfunction buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../../_lib/buildMatchFn/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../../../_lib/buildMatchPatternFn/index.js\"));\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: (0, _index2.default)({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: (0, _index.default)({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: (0, _index.default)({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: (0, _index.default)({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: (0, _index.default)({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: (0, _index.default)({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nvar _default = match;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"./_lib/formatDistance/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"./_lib/formatLong/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"./_lib/formatRelative/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"./_lib/localize/index.js\"));\nvar _index5 = _interopRequireDefault(require(\"./_lib/match/index.js\"));\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: _index.default,\n formatLong: _index2.default,\n formatRelative: _index3.default,\n localize: _index4.default,\n match: _index5.default,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nvar _default = locale;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../locale/en-US/index.js\"));\nvar _default = _index.default;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = format;\nvar _index = _interopRequireDefault(require(\"../isValid/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../subMilliseconds/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../_lib/format/formatters/index.js\"));\nvar _index5 = _interopRequireDefault(require(\"../_lib/format/longFormatters/index.js\"));\nvar _index6 = _interopRequireDefault(require(\"../_lib/getTimezoneOffsetInMilliseconds/index.js\"));\nvar _index7 = require(\"../_lib/protectedTokens/index.js\");\nvar _index8 = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index9 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\nvar _index10 = require(\"../_lib/defaultOptions/index.js\");\nvar _index11 = _interopRequireDefault(require(\"../_lib/defaultLocale/index.js\"));\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nfunction format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n (0, _index9.default)(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = (0, _index10.getDefaultOptions)();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : _index11.default;\n var firstWeekContainsDate = (0, _index8.default)((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = (0, _index8.default)((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = (0, _index3.default)(dirtyDate);\n if (!(0, _index.default)(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = (0, _index6.default)(originalDate);\n var utcDate = (0, _index2.default)(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = _index5.default[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = _index4.default[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && (0, _index7.isProtectedWeekYearToken)(substring)) {\n (0, _index7.throwProtectedError)(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && (0, _index7.isProtectedDayOfYearToken)(substring)) {\n (0, _index7.throwProtectedError)(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\nmodule.exports = exports.default;","/**\n * Returns the formatted time zone name of the provided `timeZone` or the current\n * system time zone if omitted, accounting for DST according to the UTC value of\n * the date.\n */\nexport default function tzIntlTimeZoneName(length, date, options) {\n var dtf = getDTF(length, options.timeZone, options.locale)\n return dtf.formatToParts ? partsTimeZone(dtf, date) : hackyTimeZone(dtf, date)\n}\n\nfunction partsTimeZone(dtf, date) {\n var formatted = dtf.formatToParts(date)\n\n for (var i = formatted.length - 1; i >= 0; --i) {\n if (formatted[i].type === 'timeZoneName') {\n return formatted[i].value\n }\n }\n}\n\nfunction hackyTimeZone(dtf, date) {\n var formatted = dtf.format(date).replace(/\\u200E/g, '')\n var tzNameMatch = / [\\w-+ ]+$/.exec(formatted)\n return tzNameMatch ? tzNameMatch[0].substr(1) : ''\n}\n\n// If a locale has been provided `en-US` is used as a fallback in case it is an\n// invalid locale, otherwise the locale is left undefined to use the system locale.\nfunction getDTF(length, timeZone, locale) {\n if (locale && !locale.code) {\n throw new Error(\n \"date-fns-tz error: Please set a language code on the locale object imported from date-fns, e.g. `locale.code = 'en-US'`\"\n )\n }\n return new Intl.DateTimeFormat(locale ? [locale.code, 'en-US'] : undefined, {\n timeZone: timeZone,\n timeZoneName: length,\n })\n}\n","/**\r\n * Returns the [year, month, day, hour, minute, seconds] tokens of the provided\r\n * `date` as it will be rendered in the `timeZone`.\r\n */\r\nexport default function tzTokenizeDate(date, timeZone) {\r\n var dtf = getDateTimeFormat(timeZone)\r\n return dtf.formatToParts ? partsOffset(dtf, date) : hackyOffset(dtf, date)\r\n}\r\n\r\nvar typeToPos = {\r\n year: 0,\r\n month: 1,\r\n day: 2,\r\n hour: 3,\r\n minute: 4,\r\n second: 5,\r\n}\r\n\r\nfunction partsOffset(dtf, date) {\r\n try {\r\n var formatted = dtf.formatToParts(date)\r\n var filled = []\r\n for (var i = 0; i < formatted.length; i++) {\r\n var pos = typeToPos[formatted[i].type]\r\n\r\n if (pos >= 0) {\r\n filled[pos] = parseInt(formatted[i].value, 10)\r\n }\r\n }\r\n return filled\r\n } catch (error) {\r\n if (error instanceof RangeError) {\r\n return [NaN]\r\n }\r\n throw error\r\n }\r\n}\r\n\r\nfunction hackyOffset(dtf, date) {\r\n var formatted = dtf.format(date)\r\n var parsed = /(\\d+)\\/(\\d+)\\/(\\d+),? (\\d+):(\\d+):(\\d+)/.exec(formatted)\r\n // var [, fMonth, fDay, fYear, fHour, fMinute, fSecond] = parsed\r\n // return [fYear, fMonth, fDay, fHour, fMinute, fSecond]\r\n return [parsed[3], parsed[1], parsed[2], parsed[4], parsed[5], parsed[6]]\r\n}\r\n\r\n// Get a cached Intl.DateTimeFormat instance for the IANA `timeZone`. This can be used\r\n// to get deterministic local date/time output according to the `en-US` locale which\r\n// can be used to extract local time parts as necessary.\r\nvar dtfCache = {}\r\nfunction getDateTimeFormat(timeZone) {\r\n if (!dtfCache[timeZone]) {\r\n // New browsers use `hourCycle`, IE and Chrome <73 does not support it and uses `hour12`\r\n var testDateFormatted = new Intl.DateTimeFormat('en-US', {\r\n hourCycle: 'h23',\r\n timeZone: 'America/New_York',\r\n year: 'numeric',\r\n month: '2-digit',\r\n day: '2-digit',\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n second: '2-digit',\r\n }).format(new Date('2014-06-25T04:00:00.123Z'))\r\n var hourCycleSupported =\r\n testDateFormatted === '06/25/2014, 00:00:00' ||\r\n testDateFormatted === '‎06‎/‎25‎/‎2014‎ ‎00‎:‎00‎:‎00'\r\n\r\n dtfCache[timeZone] = hourCycleSupported\r\n ? new Intl.DateTimeFormat('en-US', {\r\n hourCycle: 'h23',\r\n timeZone: timeZone,\r\n year: 'numeric',\r\n month: 'numeric',\r\n day: '2-digit',\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n second: '2-digit',\r\n })\r\n : new Intl.DateTimeFormat('en-US', {\r\n hour12: false,\r\n timeZone: timeZone,\r\n year: 'numeric',\r\n month: 'numeric',\r\n day: '2-digit',\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n second: '2-digit',\r\n })\r\n }\r\n return dtfCache[timeZone]\r\n}\r\n","/**\n * Use instead of `new Date(Date.UTC(...))` to support years below 100 which doesn't work\n * otherwise due to the nature of the\n * [`Date` constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#interpretation_of_two-digit_years.\n *\n * For `Date.UTC(...)`, use `newDateUTC(...).getTime()`.\n */\nexport default function newDateUTC(fullYear, month, day, hour, minute, second, millisecond) {\n var utcDate = new Date(0)\n utcDate.setUTCFullYear(fullYear, month, day)\n utcDate.setUTCHours(hour, minute, second, millisecond)\n return utcDate\n}\n","import tzTokenizeDate from '../tzTokenizeDate/index.js'\r\nimport newDateUTC from '../newDateUTC/index.js'\r\n\r\nvar MILLISECONDS_IN_HOUR = 3600000\r\nvar MILLISECONDS_IN_MINUTE = 60000\r\n\r\nvar patterns = {\r\n timezone: /([Z+-].*)$/,\r\n timezoneZ: /^(Z)$/,\r\n timezoneHH: /^([+-]\\d{2})$/,\r\n timezoneHHMM: /^([+-])(\\d{2}):?(\\d{2})$/,\r\n}\r\n\r\n// Parse various time zone offset formats to an offset in milliseconds\r\nexport default function tzParseTimezone(timezoneString, date, isUtcDate) {\r\n var token\r\n var absoluteOffset\r\n\r\n // Empty string\r\n if (!timezoneString) {\r\n return 0\r\n }\r\n\r\n // Z\r\n token = patterns.timezoneZ.exec(timezoneString)\r\n if (token) {\r\n return 0\r\n }\r\n\r\n var hours\r\n\r\n // ±hh\r\n token = patterns.timezoneHH.exec(timezoneString)\r\n if (token) {\r\n hours = parseInt(token[1], 10)\r\n\r\n if (!validateTimezone(hours)) {\r\n return NaN\r\n }\r\n\r\n return -(hours * MILLISECONDS_IN_HOUR)\r\n }\r\n\r\n // ±hh:mm or ±hhmm\r\n token = patterns.timezoneHHMM.exec(timezoneString)\r\n if (token) {\r\n hours = parseInt(token[2], 10)\r\n var minutes = parseInt(token[3], 10)\r\n\r\n if (!validateTimezone(hours, minutes)) {\r\n return NaN\r\n }\r\n\r\n absoluteOffset = Math.abs(hours) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE\r\n return token[1] === '+' ? -absoluteOffset : absoluteOffset\r\n }\r\n\r\n // IANA time zone\r\n if (isValidTimezoneIANAString(timezoneString)) {\r\n date = new Date(date || Date.now())\r\n var utcDate = isUtcDate ? date : toUtcDate(date)\r\n\r\n var offset = calcOffset(utcDate, timezoneString)\r\n\r\n var fixedOffset = isUtcDate ? offset : fixOffset(date, offset, timezoneString)\r\n\r\n return -fixedOffset\r\n }\r\n\r\n return NaN\r\n}\r\n\r\nfunction toUtcDate(date) {\r\n return newDateUTC(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate(),\r\n date.getHours(),\r\n date.getMinutes(),\r\n date.getSeconds(),\r\n date.getMilliseconds()\r\n )\r\n}\r\n\r\nfunction calcOffset(date, timezoneString) {\r\n var tokens = tzTokenizeDate(date, timezoneString)\r\n\r\n // ms dropped because it's not provided by tzTokenizeDate\r\n var asUTC = newDateUTC(\r\n tokens[0],\r\n tokens[1] - 1,\r\n tokens[2],\r\n tokens[3] % 24,\r\n tokens[4],\r\n tokens[5],\r\n 0\r\n ).getTime()\r\n\r\n var asTS = date.getTime()\r\n var over = asTS % 1000\r\n asTS -= over >= 0 ? over : 1000 + over\r\n return asUTC - asTS\r\n}\r\n\r\nfunction fixOffset(date, offset, timezoneString) {\r\n var localTS = date.getTime()\r\n\r\n // Our UTC time is just a guess because our offset is just a guess\r\n var utcGuess = localTS - offset\r\n\r\n // Test whether the zone matches the offset for this ts\r\n var o2 = calcOffset(new Date(utcGuess), timezoneString)\r\n\r\n // If so, offset didn't change, and we're done\r\n if (offset === o2) {\r\n return offset\r\n }\r\n\r\n // If not, change the ts by the difference in the offset\r\n utcGuess -= o2 - offset\r\n\r\n // If that gives us the local time we want, we're done\r\n var o3 = calcOffset(new Date(utcGuess), timezoneString)\r\n if (o2 === o3) {\r\n return o2\r\n }\r\n\r\n // If it's different, we're in a hole time. The offset has changed, but we don't adjust the time\r\n return Math.max(o2, o3)\r\n}\r\n\r\nfunction validateTimezone(hours, minutes) {\r\n return -23 <= hours && hours <= 23 && (minutes == null || (0 <= minutes && minutes <= 59))\r\n}\r\n\r\nvar validIANATimezoneCache = {}\r\nfunction isValidTimezoneIANAString(timeZoneString) {\r\n if (validIANATimezoneCache[timeZoneString]) return true\r\n try {\r\n new Intl.DateTimeFormat(undefined, { timeZone: timeZoneString })\r\n validIANATimezoneCache[timeZoneString] = true\r\n return true\r\n } catch (error) {\r\n return false\r\n }\r\n}\r\n","import tzIntlTimeZoneName from '../../_lib/tzIntlTimeZoneName/index.js'\nimport tzParseTimezone from '../../_lib/tzParseTimezone/index.js'\n\nvar MILLISECONDS_IN_MINUTE = 60 * 1000\n\nvar formatters = {\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, localize, options) {\n var timezoneOffset = getTimeZoneOffset(options.timeZone, date)\n\n if (timezoneOffset === 0) {\n return 'Z'\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n // Hours, minutes and optional seconds without `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX': // Hours and minutes without `:` delimeter\n return formatTimezone(timezoneOffset)\n\n // Hours, minutes and optional seconds with `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimeter\n default:\n return formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, localize, options) {\n var timezoneOffset = getTimeZoneOffset(options.timeZone, date)\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n // Hours, minutes and optional seconds without `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx': // Hours and minutes without `:` delimeter\n return formatTimezone(timezoneOffset)\n\n // Hours, minutes and optional seconds with `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimeter\n default:\n return formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, localize, options) {\n var timezoneOffset = getTimeZoneOffset(options.timeZone, date)\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':')\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, localize, options) {\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return tzIntlTimeZoneName('short', date, options)\n // Long\n case 'zzzz':\n default:\n return tzIntlTimeZoneName('long', date, options)\n }\n },\n}\n\nfunction getTimeZoneOffset(timeZone, originalDate) {\n var timeZoneOffset = timeZone\n ? tzParseTimezone(timeZone, originalDate, true) / MILLISECONDS_IN_MINUTE\n : originalDate.getTimezoneOffset()\n if (Number.isNaN(timeZoneOffset)) {\n throw new RangeError('Invalid time zone specified: ' + timeZone)\n }\n return timeZoneOffset\n}\n\nfunction addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : ''\n var output = Math.abs(number).toString()\n while (output.length < targetLength) {\n output = '0' + output\n }\n return sign + output\n}\n\nfunction formatTimezone(offset, dirtyDelimeter) {\n var delimeter = dirtyDelimeter || ''\n var sign = offset > 0 ? '-' : '+'\n var absOffset = Math.abs(offset)\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2)\n var minutes = addLeadingZeros(Math.floor(absOffset % 60), 2)\n return sign + hours + delimeter + minutes\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimeter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+'\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2)\n }\n return formatTimezone(offset, dirtyDelimeter)\n}\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+'\n var absOffset = Math.abs(offset)\n var hours = Math.floor(absOffset / 60)\n var minutes = absOffset % 60\n if (minutes === 0) {\n return sign + String(hours)\n }\n var delimiter = dirtyDelimiter || ''\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2)\n}\n\nexport default formatters\n","/** Regex to identify the presence of a time zone specifier in a date string */\nvar tzPattern = /(Z|[+-]\\d{2}(?::?\\d{2})?| UTC| [a-zA-Z]+\\/[a-zA-Z_]+(?:\\/[a-zA-Z_]+)?)$/\n\nexport default tzPattern\n","import toInteger from 'date-fns/_lib/toInteger/index.js'\nimport getTimezoneOffsetInMilliseconds from 'date-fns/_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport tzParseTimezone from '../_lib/tzParseTimezone/index.js'\nimport tzPattern from '../_lib/tzPattern/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\nvar MILLISECONDS_IN_MINUTE = 60000\nvar DEFAULT_ADDITIONAL_DIGITS = 2\n\nvar patterns = {\n dateTimePattern: /^([0-9W+-]+)(T| )(.*)/,\n datePattern: /^([0-9W+-]+)(.*)/,\n plainTime: /:/,\n\n // year tokens\n YY: /^(\\d{2})$/,\n YYY: [\n /^([+-]\\d{2})$/, // 0 additional digits\n /^([+-]\\d{3})$/, // 1 additional digit\n /^([+-]\\d{4})$/, // 2 additional digits\n ],\n YYYY: /^(\\d{4})/,\n YYYYY: [\n /^([+-]\\d{4})/, // 0 additional digits\n /^([+-]\\d{5})/, // 1 additional digit\n /^([+-]\\d{6})/, // 2 additional digits\n ],\n\n // date tokens\n MM: /^-(\\d{2})$/,\n DDD: /^-?(\\d{3})$/,\n MMDD: /^-?(\\d{2})-?(\\d{2})$/,\n Www: /^-?W(\\d{2})$/,\n WwwD: /^-?W(\\d{2})-?(\\d{1})$/,\n\n HH: /^(\\d{2}([.,]\\d*)?)$/,\n HHMM: /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n HHMMSS: /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n\n // time zone tokens (to identify the presence of a tz)\n timeZone: tzPattern,\n}\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n * If the function cannot parse the string or the values are invalid, it returns Invalid Date.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n * All *date-fns* functions will throw `RangeError` if `options.additionalDigits` is not 0, 1, 2 or undefined.\n *\n * @param {Date|String|Number} argument - the value to convert\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @param {String} [options.timeZone=''] - used to specify the IANA time zone offset of a date String.\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = toDate('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * var result = toDate('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function toDate(argument, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n if (argument === null) {\n return new Date(NaN)\n }\n\n var options = dirtyOptions || {}\n\n var additionalDigits =\n options.additionalDigits == null\n ? DEFAULT_ADDITIONAL_DIGITS\n : toInteger(options.additionalDigits)\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2')\n }\n\n // Clone the date\n if (\n argument instanceof Date ||\n (typeof argument === 'object' && Object.prototype.toString.call(argument) === '[object Date]')\n ) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime())\n } else if (\n typeof argument === 'number' ||\n Object.prototype.toString.call(argument) === '[object Number]'\n ) {\n return new Date(argument)\n } else if (\n !(\n typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]'\n )\n ) {\n return new Date(NaN)\n }\n\n var dateStrings = splitDateString(argument)\n\n var parseYearResult = parseYear(dateStrings.date, additionalDigits)\n var year = parseYearResult.year\n var restDateString = parseYearResult.restDateString\n\n var date = parseDate(restDateString, year)\n\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\n if (date) {\n var timestamp = date.getTime()\n var time = 0\n var offset\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time)\n\n if (isNaN(time)) {\n return new Date(NaN)\n }\n }\n\n if (dateStrings.timeZone || options.timeZone) {\n offset = tzParseTimezone(dateStrings.timeZone || options.timeZone, new Date(timestamp + time))\n if (isNaN(offset)) {\n return new Date(NaN)\n }\n } else {\n // get offset accurate to hour in time zones that change offset\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time))\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time + offset))\n }\n\n return new Date(timestamp + time + offset)\n } else {\n return new Date(NaN)\n }\n}\n\nfunction splitDateString(dateString) {\n var dateStrings = {}\n var parts = patterns.dateTimePattern.exec(dateString)\n var timeString\n\n if (!parts) {\n parts = patterns.datePattern.exec(dateString)\n if (parts) {\n dateStrings.date = parts[1]\n timeString = parts[2]\n } else {\n dateStrings.date = null\n timeString = dateString\n }\n } else {\n dateStrings.date = parts[1]\n timeString = parts[3]\n }\n\n if (timeString) {\n var token = patterns.timeZone.exec(timeString)\n if (token) {\n dateStrings.time = timeString.replace(token[1], '')\n dateStrings.timeZone = token[1].trim()\n } else {\n dateStrings.time = timeString\n }\n }\n\n return dateStrings\n}\n\nfunction parseYear(dateString, additionalDigits) {\n var patternYYY = patterns.YYY[additionalDigits]\n var patternYYYYY = patterns.YYYYY[additionalDigits]\n\n var token\n\n // YYYY or ±YYYYY\n token = patterns.YYYY.exec(dateString) || patternYYYYY.exec(dateString)\n if (token) {\n var yearString = token[1]\n return {\n year: parseInt(yearString, 10),\n restDateString: dateString.slice(yearString.length),\n }\n }\n\n // YY or ±YYY\n token = patterns.YY.exec(dateString) || patternYYY.exec(dateString)\n if (token) {\n var centuryString = token[1]\n return {\n year: parseInt(centuryString, 10) * 100,\n restDateString: dateString.slice(centuryString.length),\n }\n }\n\n // Invalid ISO-formatted year\n return {\n year: null,\n }\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) {\n return null\n }\n\n var token\n var date\n var month\n var week\n\n // YYYY\n if (dateString.length === 0) {\n date = new Date(0)\n date.setUTCFullYear(year)\n return date\n }\n\n // YYYY-MM\n token = patterns.MM.exec(dateString)\n if (token) {\n date = new Date(0)\n month = parseInt(token[1], 10) - 1\n\n if (!validateDate(year, month)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, month)\n return date\n }\n\n // YYYY-DDD or YYYYDDD\n token = patterns.DDD.exec(dateString)\n if (token) {\n date = new Date(0)\n var dayOfYear = parseInt(token[1], 10)\n\n if (!validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, 0, dayOfYear)\n return date\n }\n\n // yyyy-MM-dd or YYYYMMDD\n token = patterns.MMDD.exec(dateString)\n if (token) {\n date = new Date(0)\n month = parseInt(token[1], 10) - 1\n var day = parseInt(token[2], 10)\n\n if (!validateDate(year, month, day)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, month, day)\n return date\n }\n\n // YYYY-Www or YYYYWww\n token = patterns.Www.exec(dateString)\n if (token) {\n week = parseInt(token[1], 10) - 1\n\n if (!validateWeekDate(year, week)) {\n return new Date(NaN)\n }\n\n return dayOfISOWeekYear(year, week)\n }\n\n // YYYY-Www-D or YYYYWwwD\n token = patterns.WwwD.exec(dateString)\n if (token) {\n week = parseInt(token[1], 10) - 1\n var dayOfWeek = parseInt(token[2], 10) - 1\n\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN)\n }\n\n return dayOfISOWeekYear(year, week, dayOfWeek)\n }\n\n // Invalid ISO-formatted date\n return null\n}\n\nfunction parseTime(timeString) {\n var token\n var hours\n var minutes\n\n // hh\n token = patterns.HH.exec(timeString)\n if (token) {\n hours = parseFloat(token[1].replace(',', '.'))\n\n if (!validateTime(hours)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR\n }\n\n // hh:mm or hhmm\n token = patterns.HHMM.exec(timeString)\n if (token) {\n hours = parseInt(token[1], 10)\n minutes = parseFloat(token[2].replace(',', '.'))\n\n if (!validateTime(hours, minutes)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE\n }\n\n // hh:mm:ss or hhmmss\n token = patterns.HHMMSS.exec(timeString)\n if (token) {\n hours = parseInt(token[1], 10)\n minutes = parseInt(token[2], 10)\n var seconds = parseFloat(token[3].replace(',', '.'))\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * 1000\n }\n\n // Invalid ISO-formatted time\n return null\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n week = week || 0\n day = day || 0\n var date = new Date(0)\n date.setUTCFullYear(isoWeekYear, 0, 4)\n var fourthOfJanuaryDay = date.getUTCDay() || 7\n var diff = week * 7 + day + 1 - fourthOfJanuaryDay\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n\n// Validation functions\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n\nfunction validateDate(year, month, date) {\n if (month < 0 || month > 11) {\n return false\n }\n\n if (date != null) {\n if (date < 1) {\n return false\n }\n\n var isLeapYear = isLeapYearIndex(year)\n if (isLeapYear && date > DAYS_IN_MONTH_LEAP_YEAR[month]) {\n return false\n }\n if (!isLeapYear && date > DAYS_IN_MONTH[month]) {\n return false\n }\n }\n\n return true\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n if (dayOfYear < 1) {\n return false\n }\n\n var isLeapYear = isLeapYearIndex(year)\n if (isLeapYear && dayOfYear > 366) {\n return false\n }\n if (!isLeapYear && dayOfYear > 365) {\n return false\n }\n\n return true\n}\n\nfunction validateWeekDate(year, week, day) {\n if (week < 0 || week > 52) {\n return false\n }\n\n if (day != null && (day < 0 || day > 6)) {\n return false\n }\n\n return true\n}\n\nfunction validateTime(hours, minutes, seconds) {\n if (hours != null && (hours < 0 || hours >= 25)) {\n return false\n }\n\n if (minutes != null && (minutes < 0 || minutes >= 60)) {\n return false\n }\n\n if (seconds != null && (seconds < 0 || seconds >= 60)) {\n return false\n }\n\n return true\n}\n","import dateFnsFormat from 'date-fns/format/index.js'\nimport formatters from './formatters/index.js'\nimport toDate from '../toDate/index.js'\n\nvar tzFormattingTokensRegExp = /([xXOz]+)|''|'(''|[^'])+('|$)/g\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 8 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 8 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Su | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Su | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | a..aaa | AM, PM | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bbb | AM, PM, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 0001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | PDT, EST, CEST | 6 |\n * | | zzzz | Pacific Daylight Time | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 05/29/1453 | 7 |\n * | | PP | May 29, 1453 | 7 |\n * | | PPP | May 29th, 1453 | 7 |\n * | | PPPP | Sunday, May 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 05/29/1453, 12:00 AM | 7 |\n * | | PPpp | May 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | May 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Sunday, May 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are created using the Intl browser API. The output is determined by the\n * preferred standard of the current locale (en-US by default) which may not always give the expected result.\n * For this reason it is recommended to supply a `locale` in the format options when formatting a time zone name.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole\n * library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard\n * #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table). See [this\n * post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link\n * https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See\n * [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens\n * (`yy`, `yyyy`). See: https://git.io/fxCyr\n * @param {String} [options.timeZone=''] - used to specify the IANA time zone offset of a date String.\n * @param {Date|Number} [options.originalDate] - can be used to pass the original unmodified date to `format` to\n * improve correctness of the replaced timezone token close to the DST threshold.\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see:\n * https://git.io/fxCyr\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n var formatStr = String(dirtyFormatStr)\n var options = dirtyOptions || {}\n\n var matches = formatStr.match(tzFormattingTokensRegExp)\n if (matches) {\n var date = toDate(options.originalDate || dirtyDate, options)\n // Work through each match and replace the tz token in the format string with the quoted\n // formatted time zone so the remaining tokens can be filled in by date-fns#format.\n formatStr = matches.reduce(function (result, token) {\n if (token[0] === \"'\") {\n return result // This is a quoted portion, matched only to ensure we don't match inside it\n }\n var pos = result.indexOf(token)\n var precededByQuotedSection = result[pos - 1] === \"'\"\n var replaced = result.replace(\n token,\n \"'\" + formatters[token[0]](date, token, null, options) + \"'\"\n )\n // If the replacement results in two adjoining quoted strings, the back to back quotes\n // are removed, so it doesn't look like an escaped quote.\n return precededByQuotedSection\n ? replaced.substring(0, pos - 1) + replaced.substring(pos + 1)\n : replaced\n }, formatStr)\n }\n\n return dateFnsFormat(dirtyDate, formatStr, options)\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = assign;\nfunction assign(target, object) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n for (var property in object) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n ;\n target[property] = object[property];\n }\n }\n return target;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = cloneObject;\nvar _index = _interopRequireDefault(require(\"../assign/index.js\"));\nfunction cloneObject(object) {\n return (0, _index.default)({}, object);\n}\nmodule.exports = exports.default;","import tzParseTimezone from '../_lib/tzParseTimezone/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name utcToZonedTime\n * @category Time Zone Helpers\n * @summary Get a date/time representing local time in a given time zone from the UTC date\n *\n * @description\n * Returns a date instance with values representing the local time in the time zone\n * specified of the UTC time from the date provided. In other words, when the new date\n * is formatted it will show the equivalent hours in the target time zone regardless\n * of the current system time zone.\n *\n * @param {Date|String|Number} date - the date with the relevant UTC time\n * @param {String} timeZone - the time zone to get local time for, can be an offset or IANA time zone\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the equivalent time in the time zone\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // In June 10am UTC is 6am in New York (-04:00)\n * const result = utcToZonedTime('2014-06-25T10:00:00.000Z', 'America/New_York')\n * //=> Jun 25 2014 06:00:00\n */\nexport default function utcToZonedTime(dirtyDate, timeZone, options) {\n var date = toDate(dirtyDate, options)\n\n var offsetMilliseconds = tzParseTimezone(timeZone, date, true)\n\n var d = new Date(date.getTime() - offsetMilliseconds)\n\n var resultDate = new Date(0)\n\n resultDate.setFullYear(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate())\n\n resultDate.setHours(d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds())\n\n return resultDate\n}\n","import cloneObject from 'date-fns/_lib/cloneObject/index.js'\r\nimport format from '../format/index.js'\r\nimport utcToZonedTime from '../utcToZonedTime/index.js'\r\n\r\n/**\r\n * @name formatInTimeZone\r\n * @category Time Zone Helpers\r\n * @summary Gets the offset in milliseconds between the time zone and Universal Coordinated Time (UTC)\r\n *\r\n * @param {Date|String|Number} date - the date representing the local time / real UTC time\r\n * @param {String} timeZone - the time zone this date should be formatted for; can be an offset or IANA time zone\r\n * @param {String} formatStr - the string of tokens\r\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\r\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link\r\n * https://date-fns.org/docs/toDate}\r\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\r\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\r\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See\r\n * [Locale]{@link https://date-fns.org/docs/Locale}\r\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\r\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\r\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens\r\n * (`yy`, `yyyy`). See: https://git.io/fxCyr\r\n * @param {String} [options.timeZone=''] - used to specify the IANA time zone offset of a date String.\r\n * @returns {String} the formatted date string\r\n */\r\nexport default function formatInTimeZone(date, timeZone, formatStr, options) {\r\n var extendedOptions = cloneObject(options)\r\n extendedOptions.timeZone = timeZone\r\n extendedOptions.originalDate = date\r\n return format(utcToZonedTime(date, timeZone), formatStr, extendedOptions)\r\n}\r\n","import { type DaxApiError } from \"@gef1/dax-client-sdk\";\nimport { subDays, subSeconds } from \"date-fns\";\nimport { formatInTimeZone } from \"date-fns-tz\";\nimport { useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { OffsetPaginatedHistoryResponse, useApi } from \"@/__generated__/pa-api.ts\";\nimport { ChatElementProps } from \"@/components/chat-elements/element-props.interface.ts\";\nimport { FunctionalMessage, FunctionalMessagePayload, HistoricFunctionalMessage } from \"@/components/chat-elements/message.interface.ts\";\nimport { INITIAL_PAGE_SIZE, MAX_DAYS, PAGE_SIZE } from \"@/constants\";\nimport { useSession, useTranslator } from \"@gef1/dax-react-sdk\";\nimport { useFlowContext } from \"@/contexts\";\nimport {\n incrementUnreadCount,\n MessageStatus,\n RichFunctionalMessage,\n RootState,\n setHistoryHasBeenFetched,\n setLastMessagesIds,\n setShouldShowScrollUpLabel,\n} from \"@/store\";\nimport { decodeChatMessage, errorMessage, groupMessagesByDay, mapToDividerMessage, mapToFunctionalMessage } from \"@/utils\";\n\nexport interface HistoricRichFunctionalMessage

extends HistoricFunctionalMessage

{\n internalStatus: MessageStatus;\n}\nexport interface HistoryDay {\n day: string;\n messages: RichFunctionalMessage[];\n}\nexport type History = HistoryDay[];\n\nfunction getPositionOfFirstUnreadOutgoingMessages(messages: HistoricRichFunctionalMessage[]): number {\n return messages.findIndex((entry) => {\n return entry.status === \"unread\" && entry.direction === \"outgoing\";\n });\n}\n\nexport const useHistory = (status: \"All\" | \"Read\" | \"Unread\") => {\n const [canFetchMoreData, setCanFetchMoreData] = useState(false);\n const [currentLoadedPage, setCurrentLoadedPage] = useState(1);\n const [data, setData] = useState([]);\n const [error, setError] = useState(null);\n const [loading, setLoading] = useState(false);\n const [page, setPage] = useState(1);\n const [rawData, setRawData] = useState>[]>([]);\n const [shouldDisplayHistory, setShouldDisplayHistory] = useState(false);\n const [unreadCount, setUnreadCount] = useState(0);\n const {\n application: { minimized, onMobileDevice },\n chat: {\n chat: { botId: storedBotId, chatToken, extraId },\n resets,\n },\n } = useSelector((state: RootState) => state);\n\n const { anonymousSession } = useSession();\n\n const session = useSession();\n\n const api = useApi();\n const flowContext = useFlowContext();\n const t = useTranslator();\n const dispatch = useDispatch();\n const dateFormat = \"yyyy-MM-dd'T'HH:mm:ss'Z'\";\n const historyStatus = status === \"All\" ? undefined : status;\n const REQUEST_TIMEOUT = onMobileDevice ? 30000 : 10000;\n\n const BDNFlowContextBotId = flowContext.pa?.botIds ? (flowContext.pa?.botIds as Array<{ id: string }>)[0].id : null;\n\n const botId = storedBotId || (flowContext.botId as string) || BDNFlowContextBotId;\n\n if (!botId) {\n throw new Error(\"BotID is not defined\");\n }\n\n const fetchData = async (): Promise => {\n setError(null);\n setLoading(true);\n dispatch(setShouldShowScrollUpLabel(false));\n\n try {\n const now = new Date();\n const endDate = formatInTimeZone(subSeconds(now, 1), \"UTC\", dateFormat);\n const startDate = formatInTimeZone(subDays(now, MAX_DAYS), \"UTC\", dateFormat);\n const dynamicPageSize = page === 1 ? INITIAL_PAGE_SIZE : PAGE_SIZE;\n\n const history: OffsetPaginatedHistoryResponse = await api.chat.postRetrieveChatHistory(\n {\n botId,\n endDate,\n extraId,\n startDate,\n ...(session.anonymousSession ? { chatToken } : {}), // Get history by actorId when possible\n page,\n size: dynamicPageSize,\n status: historyStatus,\n },\n {\n suppressWaitPointer:\n // We hide the wait pointer on mobile if it's the first page (covered by Native loading screen), but only if the chat was not minimized.\n !onMobileDevice || (page <= 1 && flowContext.wasMinimized !== \"true\" && flowContext.wasMinimized !== true),\n timeout: REQUEST_TIMEOUT,\n },\n );\n\n // Store the last messages IDs to avoid duplicates in the current conversation\n if (history.data?.history) {\n const lastMessageIds = history.data.history\n .filter((item) => !!item.message?.message_id)\n .map((item) => item.message!.message_id) as string[];\n\n dispatch(setLastMessagesIds(lastMessageIds));\n }\n\n setCurrentLoadedPage(page);\n\n setCanFetchMoreData(!!history._links?.next?.href);\n\n const historyMessages =\n history.data?.history?.map((item) =>\n mapToFunctionalMessage(decodeChatMessage(item, onMobileDevice)),\n ) || [];\n\n setShouldDisplayHistory(!!history.data?.forceDisplay);\n\n const allHistoryMessages = [...historyMessages, ...rawData];\n const separatorPosition = getPositionOfFirstUnreadOutgoingMessages(allHistoryMessages);\n let _unreadCount = 0;\n if (separatorPosition >= 0 && allHistoryMessages.at(Math.max(0, separatorPosition - 1))!.payload.template !== \"separator\") {\n _unreadCount = allHistoryMessages.length - separatorPosition;\n setUnreadCount(_unreadCount);\n const items = mapToDividerMessage(\n t(\"history.unreadMsgsCounter\", { msgCounter: _unreadCount.toString() }),\n allHistoryMessages.at(separatorPosition)!.payload.timestamp,\n );\n allHistoryMessages.splice(separatorPosition, 0, items);\n }\n\n const groupedByDay = groupMessagesByDay(allHistoryMessages);\n\n setRawData(allHistoryMessages);\n setData(groupedByDay);\n\n dispatch(setShouldShowScrollUpLabel(!!groupedByDay.length));\n\n // Increment floating button unread counter in case of history call during minimized state (typical use case: opening BDN)\n if (minimized && _unreadCount) {\n dispatch(incrementUnreadCount(_unreadCount));\n }\n\n // remark: if initial page size and page size are correctly setup (meaning initial page size is a perfect multiplication of page size), the following formula works fine without overlapping of results...\n setPage(page === 1 ? 1 + Math.floor(INITIAL_PAGE_SIZE / PAGE_SIZE) : page + 1);\n } catch (error: any) {\n console.log(error);\n if ((error as DaxApiError).code === \"timeout\") {\n setError(errorMessage(t(\"errorHistory.title\"), t(\"errorHistory.description\"), t(\"errorHistory.reload\"), fetchData));\n } else {\n setError(errorMessage(t(\"errorHistory.title\"), t(\"errorHistory.description\")));\n }\n }\n\n // Marks that the initial call to history has been completed. Used alongside chatIsReady to signal the ready state to Native.\n // The page number check helps avoid redundant calls to setHistoryHasBeenFetched, preventing unnecessary re-renders of elements monitoring its value.\n if (page === 1) {\n dispatch(setHistoryHasBeenFetched(true));\n }\n\n setLoading(false);\n };\n\n useEffect(() => {\n if (botId && (!anonymousSession || flowContext.wasMinimized === \"true\" || flowContext.wasMinimized === true)) {\n fetchData();\n }\n }, [botId, anonymousSession, flowContext.wasMinimized]);\n\n useEffect(() => {\n if (resets) {\n setData([]);\n setCanFetchMoreData(true);\n setCurrentLoadedPage(1);\n setPage(1);\n setRawData([]);\n }\n }, [resets]);\n\n return { canFetchMoreData, currentLoadedPage, data, error, fetchData, loading, shouldDisplayHistory, unreadCount };\n};\n\nexport const useUnreadMessages = () => {\n const {\n chat: {\n chat: { botId },\n },\n } = useSelector((state: RootState) => state);\n\n const { anonymousSession } = useSession();\n\n const flowContext = useFlowContext();\n\n const api = useApi();\n const dispatch = useDispatch();\n\n const fetchUnreadMessages = async (botId: string) => {\n try {\n const unreadMessages = await api.chat.postRetrieveChatCounter({\n botId,\n status: \"Unread\",\n });\n\n dispatch(incrementUnreadCount(unreadMessages));\n } catch (error: any) {\n console.log(error);\n }\n };\n\n const BDNFlowContextBotId = flowContext.pa?.botIds ? (flowContext.pa?.botIds as Array<{ id: string }>)[0].id : null;\n const id = botId || (flowContext.botId as string) || BDNFlowContextBotId;\n\n useEffect(() => {\n if (!id) {\n console.log(\"BotID is not defined yet\");\n }\n\n if (!anonymousSession && id) {\n fetchUnreadMessages(id);\n }\n }, [anonymousSession, id, BDNFlowContextBotId]);\n};\n","export default \"data:image/svg+xml,%3csvg%20width='26'%20height='22'%20viewBox='0%200%2026%2022'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M24%200H2C1.46957%200%200.960859%200.210714%200.585786%200.585786C0.210714%200.960859%200%201.46957%200%202V20C0%2020.5304%200.210714%2021.0391%200.585786%2021.4142C0.960859%2021.7893%201.46957%2022%202%2022H10C10.2099%2022%2010.4145%2021.934%2010.5847%2021.8113C10.755%2021.6886%2010.8824%2021.5154%2010.9487%2021.3162L12.8025%2015.7563L17.375%2013.9287C17.5006%2013.878%2017.6147%2013.8025%2017.7105%2013.7067C17.8063%2013.6109%2017.8818%2013.4968%2017.9325%2013.3713L19.76%208.8025L25.32%206.94875C25.5184%206.88173%2025.6908%206.75411%2025.8128%206.58389C25.9348%206.41366%2026.0003%206.20943%2026%206V2C26%201.46957%2025.7893%200.960859%2025.4142%200.585786C25.0391%200.210714%2024.5304%200%2024%200ZM11.0513%2014.6838L9.27875%2020H2V16.5L8.5%2010L12.3025%2013.8025L11.625%2014.0713C11.4907%2014.1257%2011.3698%2014.2086%2011.2708%2014.3144C11.1717%2014.4202%2011.0968%2014.5462%2011.0513%2014.6838ZM24%205.27875L18.6838%207.05125C18.5458%207.0972%2018.4196%207.17267%2018.3138%207.27241C18.208%207.37215%2018.1252%207.49375%2018.0713%207.62875L16.2313%2012.2313L14.3225%2013L9.91375%208.59125C9.53871%208.21646%209.03021%208.00593%208.5%208.00593C7.96979%208.00593%207.46129%208.21646%207.08625%208.59125L2%2013.6712V2H24V5.27875ZM25.585%209.40375C25.4564%209.31104%2025.3077%209.25023%2025.151%209.22632C24.9943%209.20241%2024.8341%209.2161%2024.6838%209.26625L21.7087%2010.2587C21.5709%2010.3046%2021.4448%2010.3798%2021.339%2010.4794C21.2332%2010.5789%2021.1504%2010.7002%2021.0963%2010.835L19.3075%2015.3062L14.8363%2017.095C14.7015%2017.1491%2014.5801%2017.232%2014.4806%2017.3377C14.3811%2017.4435%2014.3058%2017.5697%2014.26%2017.7075L13.2675%2020.6825C13.2171%2020.8329%2013.2033%2020.9931%2013.2271%2021.1499C13.2508%2021.3067%2013.3116%2021.4557%2013.4043%2021.5844C13.497%2021.7131%2013.6189%2021.8179%2013.7601%2021.8902C13.9013%2021.9624%2014.0576%2022.0001%2014.2162%2022H24C24.5304%2022%2025.0391%2021.7893%2025.4142%2021.4142C25.7893%2021.0391%2026%2020.5304%2026%2020V10.2163C26%2010.0578%2025.9624%209.90165%2025.8903%209.76061C25.8181%209.61956%2025.7135%209.49768%2025.585%209.405V9.40375ZM24%2020H15.6038L16.01%2018.7812L20.4487%2017.0063C20.5743%2016.9555%2020.6884%2016.88%2020.7842%2016.7842C20.88%2016.6884%2020.9555%2016.5743%2021.0063%2016.4487L22.7812%2012.01L24%2011.6038V20Z'%20fill='%23DC0078'/%3e%3c/svg%3e\"","import { useState, useEffect } from \"react\";\n\nimport brokenImage from \"../assets/icons/broken_image.svg\";\n\nexport const useImageWithFallback = (src: string) => {\n const [imgSrc, setImgSrc] = useState(src);\n\n useEffect(() => {\n const img = new Image();\n img.src = src;\n img.onload = () => setImgSrc(src);\n img.onerror = () => setImgSrc(brokenImage);\n }, [src]);\n\n return imgSrc;\n};\n","import React, { useEffect, useRef, useState } from \"react\";\n\ninterface IntersectionResult {\n isVisible: boolean;\n positionFromTop: number | null;\n}\n\nexport const useIntersectionObserver = (treshold?: number | number[]): [React.RefObject, IntersectionResult] => {\n const targetRef = useRef(null);\n const [intersectionResult, setIntersectionResult] = useState({\n isVisible: false,\n positionFromTop: null,\n });\n\n useEffect(() => {\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n setIntersectionResult({\n isVisible: true,\n positionFromTop: entry.boundingClientRect.top,\n });\n } else {\n setIntersectionResult({\n isVisible: false,\n positionFromTop: null,\n });\n }\n });\n },\n {\n root: null,\n rootMargin: \"0px\",\n threshold: treshold || Array.from(Array(100).keys()).map((e) => e / 100),\n },\n );\n\n if (targetRef.current) {\n observer.observe(targetRef.current);\n }\n\n return () => {\n if (targetRef.current) {\n observer.unobserve(targetRef.current);\n }\n };\n }, []);\n\n return [targetRef, intersectionResult];\n};\n\nexport const usePercentageIntersectionObserver = (\n dependency: any,\n): [number, React.Dispatch | null>>] => {\n const [ref, setRef] = useState | null>(null);\n const [intersectionPercentage, setIntersectionPercentage] = useState(0);\n\n useEffect(() => {\n if (ref) {\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n setIntersectionPercentage(entry.intersectionRatio);\n });\n },\n {\n root: null,\n rootMargin: \"0px\",\n threshold: Array.from(Array(100).keys()).map((e) => e / 100),\n },\n );\n\n if (ref.current) {\n observer.observe(ref.current);\n }\n\n return () => {\n if (ref.current) {\n observer.unobserve(ref.current);\n }\n };\n }\n return;\n }, [ref, dependency]);\n\n return [intersectionPercentage, setRef];\n};\n","import { useSelector } from \"react-redux\";\n\nimport { BotType, menus } from \"@/menus\";\nimport { RootState } from \"@/store\";\n\nexport const useMenu = () => {\n let botType = useSelector((state: RootState) => state.chat.chat.botType);\n botType = (botType || \"bank\") as BotType;\n const menu = menus[botType];\n\n return { menu };\n};\n","import { useEffect, useRef, useLayoutEffect } from \"react\";\n\nexport const useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\nexport function useTimeout(callback: () => void, delay: number | null): void {\n const savedCallback = useRef(callback);\n\n // Remember the latest callback if it changes.\n useIsomorphicLayoutEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n // Set up the timeout.\n useEffect(() => {\n // Don't schedule if no delay is specified.\n // Note: 0 is a valid value for delay.\n if (!delay && delay !== 0) {\n return;\n }\n\n const id = window.setTimeout(() => {\n savedCallback.current();\n }, delay);\n\n return () => {\n clearTimeout(id);\n };\n }, [delay]);\n}\n","import { ActionButton, Alert, Markdown } from \"belfius.geui.client.ui-react\";\nimport { FC } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { DatalayerEvents } from \"@/constants\";\nimport { useDatalayer } from \"@/contexts\";\nimport { useTranslator } from \"@gef1/dax-react-sdk\";\nimport { useChat } from \"@/hooks\";\nimport { BotType } from \"@/menus\";\nimport { LeftIconWithConfirmation, OverflowMenuAction } from \"@/menus/menus.interface.ts\";\nimport { cleanApplicationState, cleanChatState, RootState, setHaseBeenClosed, setMinimized } from \"@/store\";\n\ninterface MenuConfirmationProps {\n action: OverflowMenuAction | LeftIconWithConfirmation;\n close: () => void;\n}\n\nexport const MenuConfirmation: FC = ({ action, close }) => {\n const dispatch = useDispatch();\n const t = useTranslator();\n const datalayer = useDatalayer();\n const { onMobileDevice } = useSelector((state: RootState) => state.application);\n const { chat } = useSelector((state: RootState) => state.chat);\n const { stopChat } = useChat();\n\n const closing = () => {\n close();\n };\n\n const runAction = () => {\n if (action.minimize && onMobileDevice) {\n dispatch(setMinimized(true));\n }\n\n if (action.cleanStore) {\n dispatch(cleanApplicationState());\n dispatch(cleanChatState());\n }\n\n action.action();\n\n if (action.key === \"close\") {\n stopChat();\n dispatch(setHaseBeenClosed(true));\n datalayer.addEvent(chat.botType === BotType.INSURANCE ? DatalayerEvents.CLOSE_MYBO : DatalayerEvents.CLOSE_PA);\n }\n\n if (action.cleanChat) {\n dispatch(cleanChatState());\n }\n\n closing();\n };\n\n return (\n \n {t(action.confirmationDescription)}\n \n \n \n );\n};\n","import { EventCallback, PubSub } from \"@gef1/dax-client-sdk\";\nimport { Datalayer, MobileHeaderMessage } from \"@gef1/dax-gefw-host\";\nimport { FC, useEffect, useState } from \"react\";\n\nimport { MenuConfirmation } from \"@/components/confirmation/menu-confirmation.tsx\";\nimport { useDatalayer } from \"@/contexts\";\nimport { useMenu } from \"@/hooks\";\nimport { OverflowMenuAction } from \"@/menus/menus.interface.ts\";\nimport { minimizeChat } from \"@/utils\";\n\ninterface ActionMenuProps {\n pubSub: PubSub;\n}\n\nexport const MenuActions: FC = ({ pubSub }) => {\n const [action, setAction] = useState(null);\n const dl: Datalayer = useDatalayer();\n const { menu } = useMenu();\n\n const eventSubscriber: EventCallback = (event, data) => {\n if (event === MobileHeaderMessage.LEFT_ICON_CLICKED) {\n dl.addEvent(\"minimize-chat\");\n minimizeChat();\n }\n\n if (event === MobileHeaderMessage.OVERFLOW_MENU_CLICKED) {\n if (menu) {\n const menuAction = menu.menus.get(data.key as string)?.menuAction;\n\n if (menuAction) {\n setAction(menuAction);\n }\n }\n }\n };\n\n useEffect(() => {\n pubSub.subscribe(eventSubscriber, [\n \"authenticated\",\n \"unauthenticated\",\n MobileHeaderMessage.OVERFLOW_MENU_CLICKED,\n MobileHeaderMessage.LEFT_ICON_CLICKED,\n ]);\n return () => {\n pubSub.unsubscribe(eventSubscriber);\n };\n }, []);\n\n return (\n // @ts-ignore\n

\n {action && (\n {\n setAction(null);\n }}\n action={action}\n />\n )}\n
\n );\n};\n","import { ChatInput } from \"belfius.geui.client.ui-react\";\nimport { ChangeEvent, useRef, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { MAX_MESSAGE_LENGTH } from \"@/constants\";\nimport { useCss, useTranslator } from \"@gef1/dax-react-sdk\";\n\nimport { addMessage, RootState, setChatInputContainerHeight } from \"@/store\";\nimport { formatTextMessage, MessageSender } from \"@/utils\";\n\nimport css from \"./chat-input-container.module.pcss\";\nimport stylesheet from \"./chat-input-container.module.pcss?inline\";\n\nexport const ChatInputContainer = () => {\n const dispatch = useDispatch();\n const t = useTranslator();\n useCss(stylesheet);\n const { inputDisabled } = useSelector((state: RootState) => state.chat);\n const [value, setValue] = useState(\"\");\n const container = useRef(null);\n\n const updateValue = (event: ChangeEvent) => {\n const val = event.target.value;\n setValue(val);\n dispatch(setChatInputContainerHeight(container.current?.offsetHeight || 0));\n };\n\n const send = () => {\n const message = formatTextMessage(value);\n\n dispatch(addMessage(message));\n setValue(\"\");\n\n MessageSender.getInstance().send(message);\n };\n\n return (\n //@ts-ignore\n
\n \n
\n );\n};\n","import * as React from 'react';\n\nconst LEFT = \"Left\";\nconst RIGHT = \"Right\";\nconst UP = \"Up\";\nconst DOWN = \"Down\";\n\n/* global document */\nconst defaultProps = {\n delta: 10,\n preventScrollOnSwipe: false,\n rotationAngle: 0,\n trackMouse: false,\n trackTouch: true,\n swipeDuration: Infinity,\n touchEventOptions: { passive: true },\n};\nconst initialState = {\n first: true,\n initial: [0, 0],\n start: 0,\n swiping: false,\n xy: [0, 0],\n};\nconst mouseMove = \"mousemove\";\nconst mouseUp = \"mouseup\";\nconst touchEnd = \"touchend\";\nconst touchMove = \"touchmove\";\nconst touchStart = \"touchstart\";\nfunction getDirection(absX, absY, deltaX, deltaY) {\n if (absX > absY) {\n if (deltaX > 0) {\n return RIGHT;\n }\n return LEFT;\n }\n else if (deltaY > 0) {\n return DOWN;\n }\n return UP;\n}\nfunction rotateXYByAngle(pos, angle) {\n if (angle === 0)\n return pos;\n const angleInRadians = (Math.PI / 180) * angle;\n const x = pos[0] * Math.cos(angleInRadians) + pos[1] * Math.sin(angleInRadians);\n const y = pos[1] * Math.cos(angleInRadians) - pos[0] * Math.sin(angleInRadians);\n return [x, y];\n}\nfunction getHandlers(set, handlerProps) {\n const onStart = (event) => {\n const isTouch = \"touches\" in event;\n // if more than a single touch don't track, for now...\n if (isTouch && event.touches.length > 1)\n return;\n set((state, props) => {\n // setup mouse listeners on document to track swipe since swipe can leave container\n if (props.trackMouse && !isTouch) {\n document.addEventListener(mouseMove, onMove);\n document.addEventListener(mouseUp, onUp);\n }\n const { clientX, clientY } = isTouch ? event.touches[0] : event;\n const xy = rotateXYByAngle([clientX, clientY], props.rotationAngle);\n props.onTouchStartOrOnMouseDown &&\n props.onTouchStartOrOnMouseDown({ event });\n return Object.assign(Object.assign(Object.assign({}, state), initialState), { initial: xy.slice(), xy, start: event.timeStamp || 0 });\n });\n };\n const onMove = (event) => {\n set((state, props) => {\n const isTouch = \"touches\" in event;\n // Discount a swipe if additional touches are present after\n // a swipe has started.\n if (isTouch && event.touches.length > 1) {\n return state;\n }\n // if swipe has exceeded duration stop tracking\n if (event.timeStamp - state.start > props.swipeDuration) {\n return state.swiping ? Object.assign(Object.assign({}, state), { swiping: false }) : state;\n }\n const { clientX, clientY } = isTouch ? event.touches[0] : event;\n const [x, y] = rotateXYByAngle([clientX, clientY], props.rotationAngle);\n const deltaX = x - state.xy[0];\n const deltaY = y - state.xy[1];\n const absX = Math.abs(deltaX);\n const absY = Math.abs(deltaY);\n const time = (event.timeStamp || 0) - state.start;\n const velocity = Math.sqrt(absX * absX + absY * absY) / (time || 1);\n const vxvy = [deltaX / (time || 1), deltaY / (time || 1)];\n const dir = getDirection(absX, absY, deltaX, deltaY);\n // if swipe is under delta and we have not started to track a swipe: skip update\n const delta = typeof props.delta === \"number\"\n ? props.delta\n : props.delta[dir.toLowerCase()] ||\n defaultProps.delta;\n if (absX < delta && absY < delta && !state.swiping)\n return state;\n const eventData = {\n absX,\n absY,\n deltaX,\n deltaY,\n dir,\n event,\n first: state.first,\n initial: state.initial,\n velocity,\n vxvy,\n };\n // call onSwipeStart if present and is first swipe event\n eventData.first && props.onSwipeStart && props.onSwipeStart(eventData);\n // call onSwiping if present\n props.onSwiping && props.onSwiping(eventData);\n // track if a swipe is cancelable (handler for swiping or swiped(dir) exists)\n // so we can call preventDefault if needed\n let cancelablePageSwipe = false;\n if (props.onSwiping ||\n props.onSwiped ||\n props[`onSwiped${dir}`]) {\n cancelablePageSwipe = true;\n }\n if (cancelablePageSwipe &&\n props.preventScrollOnSwipe &&\n props.trackTouch &&\n event.cancelable) {\n event.preventDefault();\n }\n return Object.assign(Object.assign({}, state), { \n // first is now always false\n first: false, eventData, swiping: true });\n });\n };\n const onEnd = (event) => {\n set((state, props) => {\n let eventData;\n if (state.swiping && state.eventData) {\n // if swipe is less than duration fire swiped callbacks\n if (event.timeStamp - state.start < props.swipeDuration) {\n eventData = Object.assign(Object.assign({}, state.eventData), { event });\n props.onSwiped && props.onSwiped(eventData);\n const onSwipedDir = props[`onSwiped${eventData.dir}`];\n onSwipedDir && onSwipedDir(eventData);\n }\n }\n else {\n props.onTap && props.onTap({ event });\n }\n props.onTouchEndOrOnMouseUp && props.onTouchEndOrOnMouseUp({ event });\n return Object.assign(Object.assign(Object.assign({}, state), initialState), { eventData });\n });\n };\n const cleanUpMouse = () => {\n // safe to just call removeEventListener\n document.removeEventListener(mouseMove, onMove);\n document.removeEventListener(mouseUp, onUp);\n };\n const onUp = (e) => {\n cleanUpMouse();\n onEnd(e);\n };\n /**\n * The value of passive on touchMove depends on `preventScrollOnSwipe`:\n * - true => { passive: false }\n * - false => { passive: true } // Default\n *\n * NOTE: When preventScrollOnSwipe is true, we attempt to call preventDefault to prevent scroll.\n *\n * props.touchEventOptions can also be set for all touch event listeners,\n * but for `touchmove` specifically when `preventScrollOnSwipe` it will\n * supersede and force passive to false.\n *\n */\n const attachTouch = (el, props) => {\n let cleanup = () => { };\n if (el && el.addEventListener) {\n const baseOptions = Object.assign(Object.assign({}, defaultProps.touchEventOptions), props.touchEventOptions);\n // attach touch event listeners and handlers\n const tls = [\n [touchStart, onStart, baseOptions],\n // preventScrollOnSwipe option supersedes touchEventOptions.passive\n [\n touchMove,\n onMove,\n Object.assign(Object.assign({}, baseOptions), (props.preventScrollOnSwipe ? { passive: false } : {})),\n ],\n [touchEnd, onEnd, baseOptions],\n ];\n tls.forEach(([e, h, o]) => el.addEventListener(e, h, o));\n // return properly scoped cleanup method for removing listeners, options not required\n cleanup = () => tls.forEach(([e, h]) => el.removeEventListener(e, h));\n }\n return cleanup;\n };\n const onRef = (el) => {\n // \"inline\" ref functions are called twice on render, once with null then again with DOM element\n // ignore null here\n if (el === null)\n return;\n set((state, props) => {\n // if the same DOM el as previous just return state\n if (state.el === el)\n return state;\n const addState = {};\n // if new DOM el clean up old DOM and reset cleanUpTouch\n if (state.el && state.el !== el && state.cleanUpTouch) {\n state.cleanUpTouch();\n addState.cleanUpTouch = void 0;\n }\n // only attach if we want to track touch\n if (props.trackTouch && el) {\n addState.cleanUpTouch = attachTouch(el, props);\n }\n // store event attached DOM el for comparison, clean up, and re-attachment\n return Object.assign(Object.assign(Object.assign({}, state), { el }), addState);\n });\n };\n // set ref callback to attach touch event listeners\n const output = {\n ref: onRef,\n };\n // if track mouse attach mouse down listener\n if (handlerProps.trackMouse) {\n output.onMouseDown = onStart;\n }\n return [output, attachTouch];\n}\nfunction updateTransientState(state, props, previousProps, attachTouch) {\n // if trackTouch is off or there is no el, then remove handlers if necessary and exit\n if (!props.trackTouch || !state.el) {\n if (state.cleanUpTouch) {\n state.cleanUpTouch();\n }\n return Object.assign(Object.assign({}, state), { cleanUpTouch: undefined });\n }\n // trackTouch is on, so if there are no handlers attached, attach them and exit\n if (!state.cleanUpTouch) {\n return Object.assign(Object.assign({}, state), { cleanUpTouch: attachTouch(state.el, props) });\n }\n // trackTouch is on and handlers are already attached, so if preventScrollOnSwipe changes value,\n // remove and reattach handlers (this is required to update the passive option when attaching\n // the handlers)\n if (props.preventScrollOnSwipe !== previousProps.preventScrollOnSwipe ||\n props.touchEventOptions.passive !== previousProps.touchEventOptions.passive) {\n state.cleanUpTouch();\n return Object.assign(Object.assign({}, state), { cleanUpTouch: attachTouch(state.el, props) });\n }\n return state;\n}\nfunction useSwipeable(options) {\n const { trackMouse } = options;\n const transientState = React.useRef(Object.assign({}, initialState));\n const transientProps = React.useRef(Object.assign({}, defaultProps));\n // track previous rendered props\n const previousProps = React.useRef(Object.assign({}, transientProps.current));\n previousProps.current = Object.assign({}, transientProps.current);\n // update current render props & defaults\n transientProps.current = Object.assign(Object.assign({}, defaultProps), options);\n // Force defaults for config properties\n let defaultKey;\n for (defaultKey in defaultProps) {\n if (transientProps.current[defaultKey] === void 0) {\n transientProps.current[defaultKey] = defaultProps[defaultKey];\n }\n }\n const [handlers, attachTouch] = React.useMemo(() => getHandlers((stateSetter) => (transientState.current = stateSetter(transientState.current, transientProps.current)), { trackMouse }), [trackMouse]);\n transientState.current = updateTransientState(transientState.current, transientProps.current, previousProps.current, attachTouch);\n return handlers;\n}\n\nexport { DOWN, LEFT, RIGHT, UP, useSwipeable };\n//# sourceMappingURL=index.js.map\n","(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\n var setWebWorker = function setWebWorker(flag) {\n _useWebWorker = !!flag;\n };\n\n var getWebWorker = function getWebWorker() {\n return _useWebWorker;\n };\n\n var setLocationHref = function setLocationHref(value) {\n locationHref = value;\n };\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\n for (i = 0; i < len; i += 1) {\n sourcePrototype = sources[i].prototype;\n\n for (var attr in sourcePrototype) {\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\n }\n }\n }\n\n function getDescriptor(object, prop) {\n return Object.getOwnPropertyDescriptor(object, prop);\n }\n\n function createProxyFunction(prototype) {\n function ProxyFunction() {}\n\n ProxyFunction.prototype = prototype;\n return ProxyFunction;\n }\n\n // import Howl from '../../3rd_party/howler';\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\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\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\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\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\n if (window.Howl) {\n return new window.Howl({\n src: [assetPath]\n });\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\n this._updateVolume();\n },\n mute: function mute() {\n this._isMuted = true;\n\n this._updateVolume();\n },\n unmute: function unmute() {\n this._isMuted = false;\n\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\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\n switch (type) {\n case 'int16':\n case 'uint8c':\n value = 1;\n break;\n\n default:\n value = 1.1;\n break;\n }\n\n for (i = 0; i < len; i += 1) {\n arr.push(value);\n }\n\n return arr;\n }\n\n function createTypedArrayFactory(type, len) {\n if (type === 'float32') {\n return new Float32Array(len);\n }\n\n if (type === 'int16') {\n return new Int16Array(len);\n }\n\n if (type === 'uint8c') {\n return new Uint8ClampedArray(len);\n }\n\n return createRegularArray(type, len);\n }\n\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\n return createTypedArrayFactory;\n }\n\n return createRegularArray;\n }();\n\n function createSizedArray(len) {\n return Array.apply(null, {\n length: len\n });\n }\n\n function _typeof$6(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$6 = function _typeof(obj) { return typeof obj; }; } else { _typeof$6 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$6(obj); }\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\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\n for (i = 0; i < len; i += 1) {\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\n }\n })();\n\n function ProjectInterface$1() {\n return {};\n }\n\n BMMath.random = Math.random;\n\n BMMath.abs = function (val) {\n var tOfVal = _typeof$6(val);\n\n if (tOfVal === 'object' && val.length) {\n var absArr = createSizedArray(val.length);\n var i;\n var len = val.length;\n\n for (i = 0; i < len; i += 1) {\n absArr[i] = Math.abs(val[i]);\n }\n\n return absArr;\n }\n\n return Math.abs(val);\n };\n\n var defaultCurveSegments = 150;\n var degToRads = Math.PI / 180;\n var roundCorner = 0.5519;\n\n function roundValues(flag) {\n _shouldRoundValues = !!flag;\n }\n\n function bmRnd(value) {\n if (_shouldRoundValues) {\n return Math.round(value);\n }\n\n return value;\n }\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\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\n function BMCompleteEvent(type, frameMultiplier) {\n this.type = type;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\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\n function BMSegmentStartEvent(type, firstFrame, totalFrames) {\n this.type = type;\n this.firstFrame = firstFrame;\n this.totalFrames = totalFrames;\n }\n\n function BMDestroyEvent(type, target) {\n this.type = type;\n this.target = target;\n }\n\n function BMRenderFrameErrorEvent(nativeError, currentTime) {\n this.type = 'renderFrameError';\n this.nativeError = nativeError;\n this.currentTime = currentTime;\n }\n\n function BMConfigErrorEvent(nativeError) {\n this.type = 'configError';\n this.nativeError = nativeError;\n }\n\n function BMAnimationConfigErrorEvent(type, nativeError) {\n this.type = type;\n this.nativeError = nativeError;\n }\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\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\n switch (i % 6) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n\n case 5:\n r = v;\n g = p;\n b = q;\n break;\n\n default:\n break;\n }\n\n return [r, g, b];\n }\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\n switch (max) {\n case min:\n h = 0;\n break;\n\n case r:\n h = g - b + d * (g < b ? 6 : 0);\n h /= 6 * d;\n break;\n\n case g:\n h = b - r + d * 2;\n h /= 6 * d;\n break;\n\n case b:\n h = r - g + d * 4;\n h /= 6 * d;\n break;\n\n default:\n break;\n }\n\n return [h, s, v];\n }\n\n function addSaturationToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[1] += offset;\n\n if (hsv[1] > 1) {\n hsv[1] = 1;\n } else if (hsv[1] <= 0) {\n hsv[1] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addBrightnessToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[2] += offset;\n\n if (hsv[2] > 1) {\n hsv[2] = 1;\n } else if (hsv[2] < 0) {\n hsv[2] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\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\n if (hsv[0] > 1) {\n hsv[0] -= 1;\n } else if (hsv[0] < 0) {\n hsv[0] += 1;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n var rgbToHex = function () {\n var colorMap = [];\n var i;\n var hex;\n\n for (i = 0; i < 256; i += 1) {\n hex = i.toString(16);\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\n }\n\n return function (r, g, b) {\n if (r < 0) {\n r = 0;\n }\n\n if (g < 0) {\n g = 0;\n }\n\n if (b < 0) {\n b = 0;\n }\n\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\n };\n }();\n\n var setSubframeEnabled = function setSubframeEnabled(flag) {\n subframeEnabled = !!flag;\n };\n\n var getSubframeEnabled = function getSubframeEnabled() {\n return subframeEnabled;\n };\n\n var setExpressionsPlugin = function setExpressionsPlugin(value) {\n expressionsPlugin = value;\n };\n\n var getExpressionsPlugin = function getExpressionsPlugin() {\n return expressionsPlugin;\n };\n\n var setExpressionInterfaces = function setExpressionInterfaces(value) {\n expressionsInterfaces = value;\n };\n\n var getExpressionInterfaces = function getExpressionInterfaces() {\n return expressionsInterfaces;\n };\n\n var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\n defaultCurveSegments = value;\n };\n\n var getDefaultCurveSegments = function getDefaultCurveSegments() {\n return defaultCurveSegments;\n };\n\n var setIdPrefix = function setIdPrefix(value) {\n idPrefix$1 = value;\n };\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(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$5 = function _typeof(obj) { return typeof obj; }; } else { _typeof$5 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$5(obj); }\n\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\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 }); // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\n\n var url = URL.createObjectURL(blob);\n return new Worker(url);\n }\n\n workerFn = fn;\n return workerProxy;\n }\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\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if ('ks' in layerData && !layerData.completed) {\n layerData.completed = true;\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\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\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\n if (maskProps[j].pt.k[k].e) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\n }\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\n function completeChars(chars, assets) {\n if (chars) {\n var i = 0;\n var len = chars.length;\n\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); // 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\n completeLayers(chars[i].data.layers, assets);\n }\n }\n }\n }\n\n function findComp(id, comps) {\n var i = 0;\n var len = comps.length;\n\n while (i < len) {\n if (comps[i].id === id) {\n return comps[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function findCompLayers(id, comps) {\n var comp = findComp(id, comps);\n\n if (comp) {\n if (!comp.layers.__used) {\n comp.layers.__used = true;\n return comp.layers;\n }\n\n return JSON.parse(JSON.stringify(comp.layers));\n }\n\n return null;\n }\n\n function completeShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\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\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\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\n function convertPathsToAbsoluteValues(path) {\n var i;\n var len = path.i.length;\n\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\n function checkVersion(minimum, animVersionString) {\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\n\n if (minimum[0] > animVersion[0]) {\n return true;\n }\n\n if (animVersion[0] > minimum[0]) {\n return false;\n }\n\n if (minimum[1] > animVersion[1]) {\n return true;\n }\n\n if (animVersion[1] > minimum[1]) {\n return false;\n }\n\n if (minimum[2] > animVersion[2]) {\n return true;\n }\n\n if (animVersion[2] > minimum[2]) {\n return false;\n }\n\n return null;\n }\n\n var checkText = function () {\n var minimumVersion = [4, 4, 14];\n\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\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\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\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\n for (i = 0; i < len; i += 1) {\n var charData = animationData.chars[i];\n\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\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\n var checkPathProperties = function () {\n var minimumVersion = [5, 7, 15];\n\n function updateTextLayer(textLayer) {\n var pathData = textLayer.t.p;\n\n if (typeof pathData.a === 'number') {\n pathData.a = {\n a: 0,\n k: pathData.a\n };\n }\n\n if (typeof pathData.p === 'number') {\n pathData.p = {\n a: 0,\n k: pathData.p\n };\n }\n\n if (typeof pathData.r === 'number') {\n pathData.r = {\n a: 0,\n k: pathData.r\n };\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\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\n var checkColors = function () {\n var minimumVersion = [4, 1, 9];\n\n function iterateShapes(shapes) {\n var i;\n var len = shapes.length;\n var j;\n var jLen;\n\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\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\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\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 4) {\n iterateShapes(layers[i].shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\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\n var checkShapes = function () {\n var minimumVersion = [4, 4, 18];\n\n function completeClosingShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\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\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\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\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\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\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\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\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\n if (layerData.ty === 4) {\n completeClosingShapes(layerData.shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\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\n function completeData(animationData) {\n if (animationData.__complete) {\n return;\n }\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\n function completeText(data) {\n if (data.t.a.length === 0 && !('m' in data.t.p)) {// data.singleShape = true;\n }\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\n if (!_workerSelf.dataManager) {\n _workerSelf.dataManager = dataFunctionManager();\n }\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\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\n return xhr.response;\n }\n\n if (xhr.response && _typeof$5(xhr.response) === 'object') {\n return xhr.response;\n }\n\n if (xhr.response && typeof xhr.response === 'string') {\n return JSON.parse(xhr.response);\n }\n\n if (xhr.responseText) {\n return JSON.parse(xhr.responseText);\n }\n\n return null;\n }\n\n function loadAsset(path, fullPath, callback, errorCallback) {\n var response;\n var xhr = new XMLHttpRequest(); // set responseType after calling open or IE will break.\n\n try {\n // This crashes on Android WebView prior to KitKat\n xhr.responseType = 'json';\n } catch (err) {} // eslint-disable-line no-empty\n\n\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\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\n xhr.send();\n }\n\n return {\n load: loadAsset\n };\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\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\n _workerSelf.dataManager.completeData(animation);\n\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\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\n if (data.status === 'success') {\n process.onComplete(data.payload);\n } else if (process.onError) {\n process.onError();\n }\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\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\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\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\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\n function imageLoaded() {\n this.loadedAssets += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function footageLoaded() {\n this.loadedFootagesCount += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function getAssetsPath(assetData, assetsPath, originalPath) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = assetsPath + imagePath;\n } else {\n path = originalPath;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n }\n\n function testImageLoaded(img) {\n var _count = 0;\n var intervalId = setInterval(function () {\n var box = img.getBBox();\n\n if (box.width || _count > 500) {\n this._imageLoaded();\n\n clearInterval(intervalId);\n }\n\n _count += 1;\n }.bind(this), 50);\n }\n\n function createImageData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createNS('image');\n\n if (isSafari) {\n this.testImageLoaded(img);\n } else {\n img.addEventListener('load', this._imageLoaded, false);\n }\n\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n\n if (this._elementHelper.append) {\n this._elementHelper.append(img);\n } else {\n this._elementHelper.appendChild(img);\n }\n\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\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\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\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\n this._footageLoaded();\n }.bind(this), function () {\n ob.img = {};\n\n this._footageLoaded();\n }.bind(this));\n return ob;\n }\n\n function loadAssets(assets, cb) {\n this.imagesLoadedCb = cb;\n var i;\n var len = assets.length;\n\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\n function setPath(path) {\n this.path = path || '';\n }\n\n function setAssetsPath(path) {\n this.assetsPath = path || '';\n }\n\n function getAsset(assetData) {\n var i = 0;\n var len = this.images.length;\n\n while (i < len) {\n if (this.images[i].assetData === assetData) {\n return this.images[i].img;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function destroy() {\n this.imagesLoadedCb = null;\n this.images.length = 0;\n }\n\n function loadedImages() {\n return this.totalImages === this.loadedAssets;\n }\n\n function loadedFootages() {\n return this.totalFootages === this.loadedFootagesCount;\n }\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\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\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\n BaseEvent.prototype = {\n triggerEvent: function triggerEvent(eventName, args) {\n if (this._cbs[eventName]) {\n var callbacks = this._cbs[eventName];\n\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\n this._cbs[eventName].push(callback);\n\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\n while (i < len) {\n if (this._cbs[eventName][i] === callback) {\n this._cbs[eventName].splice(i, 1);\n\n i -= 1;\n len -= 1;\n }\n\n i += 1;\n }\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\n for (var i = 0; i < lines.length; i += 1) {\n line = lines[i].split(':');\n\n if (line.length === 2) {\n keys[line[0]] = line[1].trim();\n keysCount += 1;\n }\n }\n\n if (keysCount === 0) {\n throw new Error();\n }\n\n return keys;\n }\n\n return function (_markers) {\n var markers = [];\n\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\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\n markers.push(markerData);\n }\n\n return markers;\n };\n }();\n\n var ProjectInterface = function () {\n function registerComposition(comp) {\n this.compositions.push(comp);\n }\n\n return function () {\n function _thisProjectFunction(name) {\n var i = 0;\n var len = this.compositions.length;\n\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\n return this.compositions[i].compInterface;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n _thisProjectFunction.compositions = [];\n _thisProjectFunction.currentFrame = 0;\n _thisProjectFunction.registerComposition = registerComposition;\n return _thisProjectFunction;\n };\n }();\n\n var renderers = {};\n\n var registerRenderer = function registerRenderer(key, value) {\n renderers[key] = value;\n };\n\n function getRenderer(key) {\n return renderers[key];\n }\n\n function getRegisteredRenderer() {\n // Returns canvas by default for compatibility\n if (renderers.canvas) {\n return 'canvas';\n } // Returns any renderer that is registered\n\n\n for (var key in renderers) {\n if (renderers[key]) {\n return key;\n }\n }\n\n return '';\n }\n\n function _typeof$4(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$4 = function _typeof(obj) { return typeof obj; }; } else { _typeof$4 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$4(obj); }\n\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\n extendPrototype([BaseEvent], AnimationItem);\n\n AnimationItem.prototype.setParams = function (params) {\n if (params.wrapper || params.container) {\n this.wrapper = params.wrapper || params.container;\n }\n\n var animType = 'svg';\n\n if (params.animType) {\n animType = params.animType;\n } else if (params.renderer) {\n animType = params.renderer;\n }\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\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\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\n if (params.audioFactory) {\n this.audioController.setAudioFactory(params.audioFactory);\n }\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\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\n AnimationItem.prototype.onSetupError = function () {\n this.trigger('data_failed');\n };\n\n AnimationItem.prototype.setupAnimation = function (data) {\n dataManager.completeAnimation(data, this.configAnimation);\n };\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\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\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\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\n if (prerender === 'false') {\n params.prerender = false;\n }\n\n if (!params.path) {\n this.trigger('destroy');\n } else {\n this.setParams(params);\n }\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\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\n for (j = 0; j < jLen; j += 1) {\n i = 0;\n\n while (i < len) {\n if (layers[i].id === newLayers[j].id) {\n layers[i] = newLayers[j];\n break;\n }\n\n i += 1;\n }\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\n if (data.assets) {\n len = data.assets.length;\n\n for (i = 0; i < len; i += 1) {\n this.animationData.assets.push(data.assets[i]);\n }\n }\n\n this.animationData.__complete = false;\n dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\n };\n\n AnimationItem.prototype.onSegmentComplete = function (data) {\n this.animationData = data;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.loadNextSegment = function () {\n var segments = this.animationData.segments;\n\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\n this.trigger('data_ready');\n this.timeCompleted = this.totalFrames;\n return;\n }\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\n AnimationItem.prototype.loadSegments = function () {\n var segments = this.animationData.segments;\n\n if (!segments) {\n this.timeCompleted = this.totalFrames;\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.imagesLoaded = function () {\n this.trigger('loaded_images');\n this.checkLoaded();\n };\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\n AnimationItem.prototype.configAnimation = function (animData) {\n if (!this.renderer) {\n return;\n }\n\n try {\n this.animationData = animData;\n\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\n this.renderer.configAnimation(animData);\n\n if (!animData.assets) {\n animData.assets = [];\n }\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\n if (this.isPaused) {\n this.audioController.pause();\n }\n } catch (error) {\n this.triggerConfigError(error);\n }\n };\n\n AnimationItem.prototype.waitForFontsLoaded = function () {\n if (!this.renderer) {\n return;\n }\n\n if (this.renderer.globalData.fontManager.isLoaded) {\n this.checkLoaded();\n } else {\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\n }\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\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.renderer.initItems();\n setTimeout(function () {\n this.trigger('DOMLoaded');\n }.bind(this), 0);\n this.gotoFrame();\n\n if (this.autoplay) {\n this.play();\n }\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\n var _height = typeof height === 'number' ? height : undefined;\n\n this.renderer.updateContainerSize(_width, _height);\n };\n\n AnimationItem.prototype.setSubframe = function (flag) {\n this.isSubframeEnabled = !!flag;\n };\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\n this.trigger('enterFrame');\n this.renderFrame();\n this.trigger('drawnFrame');\n };\n\n AnimationItem.prototype.renderFrame = function () {\n if (this.isLoaded === false || !this.renderer) {\n return;\n }\n\n try {\n if (this.expressionsPlugin) {\n this.expressionsPlugin.resetFrame();\n }\n\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\n } catch (error) {\n this.triggerRenderFrameError(error);\n }\n };\n\n AnimationItem.prototype.play = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.isPaused = false;\n this.trigger('_play');\n this.audioController.resume();\n\n if (this._idle) {\n this._idle = false;\n this.trigger('_active');\n }\n }\n };\n\n AnimationItem.prototype.pause = function (name) {\n if (name && this.name !== name) {\n return;\n }\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\n AnimationItem.prototype.togglePause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.play();\n } else {\n this.pause();\n }\n };\n\n AnimationItem.prototype.stop = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.pause();\n this.playCount = 0;\n this._completedLoop = false;\n this.setCurrentRawFrameValue(0);\n };\n\n AnimationItem.prototype.getMarkerData = function (markerName) {\n var marker;\n\n for (var i = 0; i < this.markers.length; i += 1) {\n marker = this.markers[i];\n\n if (marker.payload && marker.payload.name === markerName) {\n return marker;\n }\n }\n\n return null;\n };\n\n AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\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\n this.pause();\n };\n\n AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\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\n this.play();\n };\n\n AnimationItem.prototype.advanceTime = function (value) {\n if (this.isPaused === true || this.isLoaded === false) {\n return;\n }\n\n var nextValue = this.currentRawFrame + value * this.frameModifier;\n var _isComplete = false; // 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\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\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\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\n if (_isComplete) {\n this.setCurrentRawFrameValue(nextValue);\n this.pause();\n this.trigger('complete');\n }\n };\n\n AnimationItem.prototype.adjustSegment = function (arr, offset) {\n this.playCount = 0;\n\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\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\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\n this.trigger('segmentStart');\n };\n\n AnimationItem.prototype.setSegment = function (init, end) {\n var pendingFrame = -1;\n\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\n this.firstFrame = init;\n this.totalFrames = end - init;\n this.timeCompleted = this.totalFrames;\n\n if (pendingFrame !== -1) {\n this.goToAndStop(pendingFrame, true);\n }\n };\n\n AnimationItem.prototype.playSegments = function (arr, forceFlag) {\n if (forceFlag) {\n this.segments.length = 0;\n }\n\n if (_typeof$4(arr[0]) === 'object') {\n var i;\n var len = arr.length;\n\n for (i = 0; i < len; i += 1) {\n this.segments.push(arr[i]);\n }\n } else {\n this.segments.push(arr);\n }\n\n if (this.segments.length && forceFlag) {\n this.adjustSegment(this.segments.shift(), 0);\n }\n\n if (this.isPaused) {\n this.play();\n }\n };\n\n AnimationItem.prototype.resetSegments = function (forceFlag) {\n this.segments.length = 0;\n this.segments.push([this.animationData.ip, this.animationData.op]);\n\n if (forceFlag) {\n this.checkSegments(0);\n }\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\n return false;\n };\n\n AnimationItem.prototype.destroy = function (name) {\n if (name && this.name !== name || !this.renderer) {\n return;\n }\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\n AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\n this.currentRawFrame = value;\n this.gotoFrame();\n };\n\n AnimationItem.prototype.setSpeed = function (val) {\n this.playSpeed = val;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setDirection = function (val) {\n this.playDirection = val < 0 ? -1 : 1;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setLoop = function (isLooping) {\n this.loop = isLooping;\n };\n\n AnimationItem.prototype.setVolume = function (val, name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.setVolume(val);\n };\n\n AnimationItem.prototype.getVolume = function () {\n return this.audioController.getVolume();\n };\n\n AnimationItem.prototype.mute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.mute();\n };\n\n AnimationItem.prototype.unmute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.unmute();\n };\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\n AnimationItem.prototype.getPath = function () {\n return this.path;\n };\n\n AnimationItem.prototype.getAssetsPath = function (assetData) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (this.assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = this.assetsPath + imagePath;\n } else {\n path = this.path;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n };\n\n AnimationItem.prototype.getAssetData = function (id) {\n var i = 0;\n var len = this.assets.length;\n\n while (i < len) {\n if (id === this.assets[i].id) {\n return this.assets[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n AnimationItem.prototype.hide = function () {\n this.renderer.hide();\n };\n\n AnimationItem.prototype.show = function () {\n this.renderer.show();\n };\n\n AnimationItem.prototype.getDuration = function (isFrame) {\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\n };\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) {// TODO: decide how to handle catch case\n }\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\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\n case 'loopComplete':\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n break;\n\n case 'complete':\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\n break;\n\n case 'segmentStart':\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n break;\n\n case 'destroy':\n this.triggerEvent(name, new BMDestroyEvent(name, this));\n break;\n\n default:\n this.triggerEvent(name);\n }\n }\n\n if (name === 'enterFrame' && this.onEnterFrame) {\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\n }\n\n if (name === 'loopComplete' && this.onLoopComplete) {\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n }\n\n if (name === 'complete' && this.onComplete) {\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\n }\n\n if (name === 'segmentStart' && this.onSegmentStart) {\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n }\n\n if (name === 'destroy' && this.onDestroy) {\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\n }\n };\n\n AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n AnimationItem.prototype.triggerConfigError = function (nativeError) {\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\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\n function removeElement(ev) {\n var i = 0;\n var animItem = ev.target;\n\n while (i < len) {\n if (registeredAnimations[i].animation === animItem) {\n registeredAnimations.splice(i, 1);\n i -= 1;\n len -= 1;\n\n if (!animItem.isPaused) {\n subtractPlayingCount();\n }\n }\n\n i += 1;\n }\n }\n\n function registerAnimation(element, animationData) {\n if (!element) {\n return null;\n }\n\n var i = 0;\n\n while (i < len) {\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\n return registeredAnimations[i].animation;\n }\n\n i += 1;\n }\n\n var animItem = new AnimationItem();\n setupAnimation(animItem, element);\n animItem.setData(element, animationData);\n return animItem;\n }\n\n function getRegisteredAnimations() {\n var i;\n var lenAnims = registeredAnimations.length;\n var animations = [];\n\n for (i = 0; i < lenAnims; i += 1) {\n animations.push(registeredAnimations[i].animation);\n }\n\n return animations;\n }\n\n function addPlayingCount() {\n playingAnimationsNum += 1;\n activate();\n }\n\n function subtractPlayingCount() {\n playingAnimationsNum -= 1;\n }\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\n function loadAnimation(params) {\n var animItem = new AnimationItem();\n setupAnimation(animItem, null);\n animItem.setParams(params);\n return animItem;\n }\n\n function setSpeed(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setSpeed(val, animation);\n }\n }\n\n function setDirection(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setDirection(val, animation);\n }\n }\n\n function play(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.play(animation);\n }\n }\n\n function resume(nowTime) {\n var elapsedTime = nowTime - initTime;\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.advanceTime(elapsedTime);\n }\n\n initTime = nowTime;\n\n if (playingAnimationsNum && !_isFrozen) {\n window.requestAnimationFrame(resume);\n } else {\n _stopped = true;\n }\n }\n\n function first(nowTime) {\n initTime = nowTime;\n window.requestAnimationFrame(resume);\n }\n\n function pause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.pause(animation);\n }\n }\n\n function goToAndStop(value, isFrame, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\n }\n }\n\n function stop(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.stop(animation);\n }\n }\n\n function togglePause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.togglePause(animation);\n }\n }\n\n function destroy(animation) {\n var i;\n\n for (i = len - 1; i >= 0; i -= 1) {\n registeredAnimations[i].animation.destroy(animation);\n }\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\n for (i = 0; i < lenAnims; i += 1) {\n if (renderer) {\n animElements[i].setAttribute('data-bm-type', renderer);\n }\n\n registerAnimation(animElements[i], animationData);\n }\n\n if (standalone && lenAnims === 0) {\n if (!renderer) {\n renderer = 'svg';\n }\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\n function resize() {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.resize();\n }\n }\n\n function activate() {\n if (!_isFrozen && playingAnimationsNum) {\n if (_stopped) {\n window.requestAnimationFrame(first);\n _stopped = false;\n }\n }\n }\n\n function freeze() {\n _isFrozen = true;\n }\n\n function unfreeze() {\n _isFrozen = false;\n activate();\n }\n\n function setVolume(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setVolume(val, animation);\n }\n }\n\n function mute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.mute(animation);\n }\n }\n\n function unmute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.unmute(animation);\n }\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; // moduleOb.start = start;\n\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 /**\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n *\r\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n * Usage:\r\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n *\r\n */\n var ob = {};\n ob.getBezierEasing = getBezierEasing;\n var beziers = {};\n\n function getBezierEasing(a, b, c, d, nm) {\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\n\n if (beziers[str]) {\n return beziers[str];\n }\n\n var bezEasing = new BezierEasing([a, b, c, d]);\n beziers[str] = bezEasing;\n return bezEasing;\n } // These values are established by empiricism with tests (tradeoff: performance VS precision)\n\n\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\n function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n\n function C(aA1) {\n return 3.0 * aA1;\n } // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n\n\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n } // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n\n\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\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX,\n currentT,\n i = 0;\n\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n\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\n return currentT;\n }\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\n return aGuessT;\n }\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\n\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\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\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 _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\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\n for (var i = 0; i < kSplineTableSize; ++i) {\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n },\n\n /**\r\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\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\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample; // Interpolate to provide an initial guess for t\n\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\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n }\n\n if (initialSlope === 0.0) {\n return guessForT;\n }\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\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\n function newElement() {\n var element;\n\n if (_length) {\n _length -= 1;\n element = pool[_length];\n } else {\n element = _create();\n }\n\n return element;\n }\n\n function release(element) {\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n if (_release) {\n _release(element);\n }\n\n pool[_length] = element;\n _length += 1;\n }\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\n return poolFactory(8, create);\n }();\n\n var segmentsLengthPool = function () {\n function create() {\n return {\n lengths: [],\n totalLength: 0\n };\n }\n\n function release(element) {\n var i;\n var len = element.lengths.length;\n\n for (i = 0; i < len; i += 1) {\n bezierLengthPool.release(element.lengths[i]);\n }\n\n element.lengths.length = 0;\n }\n\n return poolFactory(8, create, release);\n }();\n\n function bezFunction() {\n var math = Math;\n\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\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\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\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\n return diffDist > -0.0001 && diffDist < 0.0001;\n }\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\n for (k = 0; k < curveSegments; k += 1) {\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\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\n if (lastPoint[i] !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n\n lastPoint[i] = point[i];\n }\n\n if (ptDistance) {\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n }\n\n lengthData.percents[k] = perc;\n lengthData.lengths[k] = addedLength;\n }\n\n lengthData.addedLength = addedLength;\n return lengthData;\n };\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\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\n if (closed && len) {\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\n totalLength += lengths[i].addedLength;\n }\n\n segmentsLength.totalLength = totalLength;\n return segmentsLength;\n }\n\n function BezierData(length) {\n this.segmentLength = 0;\n this.points = new Array(length);\n }\n\n function PointData(partial, point) {\n this.partialLength = partial;\n this.point = point;\n }\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\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\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\n var bezierData = new BezierData(curveSegments);\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n point = createSizedArray(len);\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\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\n if (lastPoint !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n }\n\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n bezierData.points[k] = new PointData(ptDistance, point);\n lastPoint = point;\n }\n\n bezierData.segmentLength = addedLength;\n storedData[bezierName] = bezierData;\n }\n\n return storedData[bezierName];\n };\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\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\n return percents[initPos];\n }\n\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\n var flag = true;\n\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\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\n flag = false;\n }\n }\n\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\n }\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\n var bezierSegmentPoints = createTypedArray('float32', 8);\n\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\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\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\n\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\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\n\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\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\n\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\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1t1 = t1 * t1 * t1;\n\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\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\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\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\n return bezierSegmentPoints;\n }\n\n return {\n getSegmentsLength: getSegmentsLength,\n getNewSegment: getNewSegment,\n getPointInSegment: getPointInSegment,\n buildBezierData: buildBezierData,\n pointOnLine2D: pointOnLine2D,\n pointOnLine3D: pointOnLine3D\n };\n }\n\n var bez = bezFunction();\n\n var initFrame = initialDefaultFrame;\n var mathAbs = Math.abs;\n\n function interpolateValue(frameNum, caching) {\n var offsetTime = this.offsetTime;\n var newValue;\n\n if (this.propType === 'multidimensional') {\n newValue = createTypedArray('float32', this.pv.length);\n }\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\n while (flag) {\n keyData = this.keyframes[i];\n nextKeyData = this.keyframes[i + 1];\n\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\n if (keyData.h) {\n keyData = nextKeyData;\n }\n\n iterationIndex = 0;\n break;\n }\n\n if (nextKeyData.t - offsetTime > frameNum) {\n iterationIndex = i;\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n iterationIndex = 0;\n flag = false;\n }\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\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\n var bezierData = keyframeMetadata.bezierData;\n\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\n kLen = bezierData.points[ind].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[ind].point[k];\n } // caching._lastKeyframeIndex = -1;\n\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\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\n while (flag) {\n addedLength += bezierData.points[j].partialLength;\n\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k];\n }\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\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\n break;\n }\n\n if (j < jLen - 1) {\n j += 1;\n } else {\n flag = false;\n }\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\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\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\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n }\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\n if (this.propType === 'multidimensional') {\n newValue[i] = keyValue;\n } else {\n newValue = keyValue;\n }\n }\n }\n }\n\n caching.lastIndex = iterationIndex;\n return newValue;\n } // based on @Toji's https://github.com/toji/gl-matrix/\n\n\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\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n }\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\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\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\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\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\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\n var renderResult = this.interpolateValue(frameNum, this._caching);\n this.pv = renderResult;\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function setVValue(val) {\n var multipliedValue;\n\n if (this.propType === 'unidimensional') {\n multipliedValue = val * this.mult;\n\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\n while (i < len) {\n multipliedValue = val[i] * this.mult;\n\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\n this.v[i] = multipliedValue;\n this._mdf = true;\n }\n\n i += 1;\n }\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\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\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this._isFirstFrame = false;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\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\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\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\n this._isFirstFrame = true;\n this.effectsSequence = [];\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\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\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\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\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\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\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\n for (i = 0; i < arrLen; i += 1) {\n this.v[i] = initFrame;\n this.pv[i] = initFrame;\n }\n\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: createTypedArray('float32', arrLen)\n };\n this.addEffect = addEffect;\n }\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\n var p;\n\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\n case 1:\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\n break;\n\n default:\n break;\n }\n }\n\n if (p.effectsSequence.length) {\n container.addDynamicProperty(p);\n }\n\n return p;\n }\n\n var ob = {\n getProp: getProp\n };\n return ob;\n }();\n\n function DynamicPropertyContainer() {}\n\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\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n\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\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\n ShapePath.prototype.setPathData = function (closed, len) {\n this.c = closed;\n this.setLength(len);\n var i = 0;\n\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\n ShapePath.prototype.setLength = function (len) {\n while (this._maxLength < len) {\n this.doubleArrayLength();\n }\n\n this._length = len;\n };\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\n ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\n var arr;\n this._length = Math.max(this._length, pos + 1);\n\n if (this._length >= this._maxLength) {\n this.doubleArrayLength();\n }\n\n switch (type) {\n case 'v':\n arr = this.v;\n break;\n\n case 'i':\n arr = this.i;\n break;\n\n case 'o':\n arr = this.o;\n break;\n\n default:\n arr = [];\n break;\n }\n\n if (!arr[pos] || arr[pos] && !replace) {\n arr[pos] = pointPool.newElement();\n }\n\n arr[pos][0] = x;\n arr[pos][1] = y;\n };\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\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\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\n var cnt = this._length - 1;\n var len = this._length;\n var i;\n\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\n return newPath;\n };\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\n function release(shapePath) {\n var len = shapePath._length;\n var i;\n\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\n shapePath._length = 0;\n shapePath.c = false;\n }\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\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\n return cloned;\n }\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\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\n this.shapes[this._length] = shapeData;\n this._length += 1;\n };\n\n ShapeCollection.prototype.releaseShapes = function () {\n var i;\n\n for (i = 0; i < this._length; i += 1) {\n shapePool.release(this.shapes[i]);\n }\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\n function newShapeCollection() {\n var shapeCollection;\n\n if (_length) {\n _length -= 1;\n shapeCollection = pool[_length];\n } else {\n shapeCollection = new ShapeCollection();\n }\n\n return shapeCollection;\n }\n\n function release(shapeCollection) {\n var i;\n var len = shapeCollection._length;\n\n for (i = 0; i < len; i += 1) {\n shapePool.release(shapeCollection.shapes[i]);\n }\n\n shapeCollection._length = 0;\n\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n pool[_length] = shapeCollection;\n _length += 1;\n }\n\n return ob;\n }();\n\n var ShapePropertyFactory = function () {\n var initFrame = -999999;\n\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\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){\r\n keyPropS = kf[kf.length - 1].s[0];\r\n }else{\r\n keyPropS = kf[kf.length - 2].e[0];\r\n } */\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\n while (flag) {\n keyData = kf[i];\n nextKeyData = kf[i + 1];\n\n if (nextKeyData.t - this.offsetTime > frameNum) {\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n isHold = keyData.h === 1;\n iterationIndex = i;\n\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\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\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\n }\n\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\n }\n\n keyPropS = keyData.s[0];\n }\n\n jLen = previousValue._length;\n kLen = keyPropS.i[0].length;\n caching.lastIndex = iterationIndex;\n\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\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\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\n function resetShape() {\n this.paths = this.localShapeCollection;\n }\n\n function shapesEqual(shape1, shape2) {\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\n return false;\n }\n\n var i;\n var len = shape1._length;\n\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\n return true;\n }\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\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (!this.effectsSequence.length) {\n this._mdf = false;\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var finalValue;\n\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\n var i;\n var len = this.effectsSequence.length;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\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\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n ShapeProperty.prototype.interpolateShape = interpolateShape;\n ShapeProperty.prototype.getValue = processEffectsSequence;\n ShapeProperty.prototype.setVValue = setVValue;\n ShapeProperty.prototype.addEffect = addEffect;\n\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\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\n KeyframedShapeProperty.prototype.setVValue = setVValue;\n KeyframedShapeProperty.prototype.addEffect = addEffect;\n\n var EllShapeProperty = function () {\n var cPoint = roundCorner;\n\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\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertEllToPath();\n }\n }\n\n EllShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\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\n var _cw = this.d !== 3;\n\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\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\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\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\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertToPath();\n }\n }\n\n StarShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\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;\r\n this.v.i.length = numPts;\r\n this.v.o.length = numPts; */\n\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\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 /* this.v.v[i] = [x,y];\r\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n this.v._length = numPts; */\n\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\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\n this.paths.length = 0;\n this.paths[0] = this.v;\n }\n };\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\n return StarShapePropertyFactory;\n }();\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\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertRectToPath();\n }\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\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\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\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\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertRectToPath();\n }\n },\n reset: resetShape\n };\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\n return RectShapePropertyFactory;\n }();\n\n function getShapeProp(elem, data, type) {\n var prop;\n\n if (type === 3 || type === 4) {\n var dataProp = type === 3 ? data.pt : data.ks;\n var keys = dataProp.k;\n\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\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n }\n\n function getConstructorFunction() {\n return ShapeProperty;\n }\n\n function getKeyframedConstructorFunction() {\n return KeyframedShapeProperty;\n }\n\n var ob = {};\n ob.getShapeProp = getShapeProp;\n ob.getConstructorFunction = getConstructorFunction;\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\n return ob;\n }();\n\n /*!\r\n Transformation Matrix v2.0\r\n (c) Epistemex 2014-2015\r\n www.epistemex.com\r\n By Ken Fyrstenberg\r\n Contributions by leeoniya.\r\n License: MIT, header required.\r\n */\n\n /**\r\n * 2D transformation matrix object initialized with identity matrix.\r\n *\r\n * The matrix can synchronize a canvas context by supplying the context\r\n * as an argument, or later apply current absolute transform to an\r\n * existing context.\r\n *\r\n * All values are handled as floating point values.\r\n *\r\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n * @prop {number} a - scale x\r\n * @prop {number} b - shear y\r\n * @prop {number} c - shear x\r\n * @prop {number} d - scale y\r\n * @prop {number} e - translate x\r\n * @prop {number} f - translate y\r\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n * @constructor\r\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\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\n function rotate(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function rotateX(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateY(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateZ(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function shear(sx, sy) {\n return this._t(1, sy, sx, 1, 0, 0);\n }\n\n function skew(ax, ay) {\n return this.shear(_tan(ax), _tan(ay));\n }\n\n function skewFromAxis(ax, angle) {\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\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); // 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\n function scale(sx, sy, sz) {\n if (!sz && sz !== 0) {\n sz = 1;\n }\n\n if (sx === 1 && sy === 1 && sz === 1) {\n return this;\n }\n\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\n }\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\n function translate(tx, ty, tz) {\n tz = tz || 0;\n\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\n return this;\n }\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\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\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 /* matrix order (canvas compatible):\r\n * ace\r\n * bdf\r\n * 001\r\n */\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\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\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\n return this._identity;\n }\n\n function equals(matr) {\n var i = 0;\n\n while (i < 16) {\n if (matr.props[i] !== this.props[i]) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n }\n\n function clone(matr) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n matr.props[i] = this.props[i];\n }\n\n return matr;\n }\n\n function cloneFromProps(props) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n this.props[i] = props[i];\n }\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 {\r\n x: x * me.a + y * me.c + me.e,\r\n y: x * me.b + y * me.d + me.f\r\n }; */\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\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\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\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\n function inversePoint(pt) {\n var inverseMatrix = this.getInverseMatrix();\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\n }\n\n function inversePoints(pts) {\n var i;\n var len = pts.length;\n var retPts = [];\n\n for (i = 0; i < len; i += 1) {\n retPts[i] = inversePoint(pts[i]);\n }\n\n return retPts;\n }\n\n function applyToTriplePoints(pt1, pt2, pt3) {\n var arr = createTypedArray('float32', 6);\n\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\n return arr;\n }\n\n function applyToPointArray(x, y, z) {\n var arr;\n\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\n return arr;\n }\n\n function applyToPointStringified(x, y) {\n if (this.isIdentity()) {\n return x + ',' + y;\n }\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\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\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var i = 0;\n var props = this.props;\n var cssValue = 'matrix3d(';\n var v = 10000;\n\n while (i < 16) {\n cssValue += _rnd(props[i] * v) / v;\n cssValue += i === 15 ? ')' : ',';\n i += 1;\n }\n\n return cssValue;\n }\n\n function roundMatrixProperty(val) {\n var v = 10000;\n\n if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\n return _rnd(val * v) / v;\n }\n\n return val;\n }\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\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var props = this.props;\n\n var _a = roundMatrixProperty(props[0]);\n\n var _b = roundMatrixProperty(props[1]);\n\n var _c = roundMatrixProperty(props[4]);\n\n var _d = roundMatrixProperty(props[5]);\n\n var _e = roundMatrixProperty(props[12]);\n\n var _f = roundMatrixProperty(props[13]);\n\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\n }\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(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$3 = function _typeof(obj) { return typeof obj; }; } else { _typeof$3 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$3(obj); }\n var lottie = {};\n var standalone = '__[STANDALONE]__';\n var animationData = '__[ANIMATIONDATA]__';\n var renderer = '';\n\n function setLocation(href) {\n setLocationHref(href);\n }\n\n function searchAnimations() {\n if (standalone === true) {\n animationManager.searchAnimations(animationData, standalone, renderer);\n } else {\n animationManager.searchAnimations();\n }\n }\n\n function setSubframeRendering(flag) {\n setSubframeEnabled(flag);\n }\n\n function setPrefix(prefix) {\n setIdPrefix(prefix);\n }\n\n function loadAnimation(params) {\n if (standalone === true) {\n params.animationData = JSON.parse(animationData);\n }\n\n return animationManager.loadAnimation(params);\n }\n\n function setQuality(value) {\n if (typeof value === 'string') {\n switch (value) {\n case 'high':\n setDefaultCurveSegments(200);\n break;\n\n default:\n case 'medium':\n setDefaultCurveSegments(50);\n break;\n\n case 'low':\n setDefaultCurveSegments(10);\n break;\n }\n } else if (!isNaN(value) && value > 1) {\n setDefaultCurveSegments(value);\n }\n\n if (getDefaultCurveSegments() >= 50) {\n roundValues(false);\n } else {\n roundValues(true);\n }\n }\n\n function inBrowser() {\n return typeof navigator !== 'undefined';\n }\n\n function installPlugin(type, plugin) {\n if (type === 'expressions') {\n setExpressionsPlugin(plugin);\n }\n }\n\n function getFactory(name) {\n switch (name) {\n case 'propertyFactory':\n return PropertyFactory;\n\n case 'shapePropertyFactory':\n return ShapePropertyFactory;\n\n case 'matrix':\n return Matrix;\n\n default:\n return null;\n }\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; // lottie.start = start;\n\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.12.2';\n\n function checkReady() {\n if (document.readyState === 'complete') {\n clearInterval(readyStateCheckInterval);\n searchAnimations();\n }\n }\n\n function getQueryVariable(variable) {\n var vars = queryString.split('&');\n\n for (var i = 0; i < vars.length; i += 1) {\n var pair = vars[i].split('=');\n\n if (decodeURIComponent(pair[0]) == variable) {\n // eslint-disable-line eqeqeq\n return decodeURIComponent(pair[1]);\n }\n }\n\n return null;\n }\n\n var queryString = '';\n\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\n renderer = getQueryVariable('renderer');\n }\n\n var readyStateCheckInterval = setInterval(checkReady, 100); // this adds bodymovin to the window object for backwards compatibility\n\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 var ShapeModifiers = function () {\n var ob = {};\n var modifiers = {};\n ob.registerModifier = registerModifier;\n ob.getModifier = getModifier;\n\n function registerModifier(nm, factory) {\n if (!modifiers[nm]) {\n modifiers[nm] = factory;\n }\n }\n\n function getModifier(nm, elem, data) {\n return new modifiers[nm](elem, data);\n }\n\n return ob;\n }();\n\n function ShapeModifier() {}\n\n ShapeModifier.prototype.initModifierProperties = function () {};\n\n ShapeModifier.prototype.addShapeToModifier = function () {};\n\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\n if (this._isAnimated) {\n data.setAsAnimated();\n }\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\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n ShapeModifier.prototype.processKeys = function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n extendPrototype([DynamicPropertyContainer], ShapeModifier);\n\n function TrimModifier() {}\n\n extendPrototype([ShapeModifier], TrimModifier);\n\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\n TrimModifier.prototype.addShapeToModifier = function (shapeData) {\n shapeData.pathsData = [];\n };\n\n TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\n var segments = [];\n\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\n var shapeSegments = [];\n var i;\n var len = segments.length;\n var segmentOb;\n\n for (i = 0; i < len; i += 1) {\n segmentOb = segments[i];\n\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\n var shapeS;\n var shapeE;\n\n if (segmentOb.s * totalModifierLength <= addedLength) {\n shapeS = 0;\n } else {\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\n }\n\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n shapeE = 1;\n } else {\n shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\n }\n\n shapeSegments.push([shapeS, shapeE]);\n }\n }\n\n if (!shapeSegments.length) {\n shapeSegments.push([0, 0]);\n }\n\n return shapeSegments;\n };\n\n TrimModifier.prototype.releasePathsData = function (pathsData) {\n var i;\n var len = pathsData.length;\n\n for (i = 0; i < len; i += 1) {\n segmentsLengthPool.release(pathsData[i]);\n }\n\n pathsData.length = 0;\n return pathsData;\n };\n\n TrimModifier.prototype.processShapes = function (_isFirstFrame) {\n var s;\n var e;\n\n if (this._mdf || _isFirstFrame) {\n var o = this.o.v % 360 / 360;\n\n if (o < 0) {\n o += 1;\n }\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\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\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\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\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\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\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\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i]; // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\n\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\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n totalShapeLength = shapeData.totalShapeLength;\n } else {\n pathsData = this.releasePathsData(shapeData.pathsData);\n\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\n shapeData.totalShapeLength = totalShapeLength;\n shapeData.pathsData = pathsData;\n }\n\n totalModifierLength += totalShapeLength;\n shapeData.shape._mdf = true;\n }\n }\n\n var shapeS = s;\n var shapeE = e;\n var addedLength = 0;\n var edges;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shapeData = this.shapes[i];\n\n if (shapeData.shape._mdf) {\n localShapeCollection = shapeData.localShapeCollection;\n localShapeCollection.releaseShapes(); // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\n\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\n jLen = edges.length;\n\n for (j = 0; j < jLen; j += 1) {\n shapeS = edges[j][0];\n shapeE = edges[j][1];\n segments.length = 0;\n\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\n var newShapesData = this.addShapes(shapeData, segments[0]);\n\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\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\n this.addPaths(newShapesData, localShapeCollection);\n }\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\n TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\n var i;\n var len = newPaths.length;\n\n for (i = 0; i < len; i += 1) {\n localShapeCollection.addShape(newPaths[i]);\n }\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\n if (newShape) {\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\n }\n\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\n };\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\n if (newShape) {\n shapePath.setXYAt(points[0], points[4], 'v', pos);\n }\n\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\n };\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\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\n shapes.push(shapePath);\n\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\n for (j = 1; j < jLen; j += 1) {\n currentLengthData = lengths[j - 1];\n\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); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n }\n\n if (shapePaths[i].c && lengths.length) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength <= shapeSegment.e) {\n var segmentLength = lengths[j - 1].addedLength;\n\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); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n } else {\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\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\n if (addedLength > shapeSegment.e) {\n break;\n }\n\n if (i < len - 1) {\n shapePath = shapePool.newElement();\n newShape = true;\n shapes.push(shapePath);\n segmentCount = 0;\n }\n }\n\n return shapes;\n };\n\n function PuckerAndBloatModifier() {}\n\n extendPrototype([ShapeModifier], PuckerAndBloatModifier);\n\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\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\n for (i = 0; i < pathLength; i += 1) {\n centerPoint[0] += path.v[i][0];\n centerPoint[1] += path.v[i][1];\n }\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\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\n return clonedPath;\n };\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\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\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\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n var TransformPropertyFactory = function () {\n var defaultVector = [0, 0];\n\n function applyToMatrix(mat) {\n var _mdf = this._mdf;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || _mdf;\n\n if (this.a) {\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.s) {\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk) {\n mat.skewFromAxis(-this.sk.v, this.sa.v);\n }\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\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\n function processKeys(forceRender) {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (this._isDirty) {\n this.precalculateMatrix();\n this._isDirty = false;\n }\n\n this.iterateDynamicProperties();\n\n if (this._mdf || forceRender) {\n var frameRate;\n this.v.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.appliedTransformations < 2) {\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\n }\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\n if (this.autoOriented) {\n var v1;\n var v2;\n frameRate = this.elem.globalData.frameRate;\n\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\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\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\n }\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\n this.frameId = this.elem.globalData.frameId;\n }\n\n function precalculateMatrix() {\n this.appliedTransformations = 0;\n this.pre.reset();\n\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\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\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\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\n function autoOrient() {//\n // var prevP = this.getValueAtTime();\n }\n\n function addDynamicProperty(prop) {\n this._addDynamicProperty(prop);\n\n this.elem.addDynamicProperty(prop);\n this._isDirty = true;\n }\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(); // Precalculated matrix with non animated properties\n\n this.pre = new Matrix();\n this.appliedTransformations = 0;\n this.initDynamicPropertyContainer(container || elem);\n\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\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\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\n if (data.or.k[0].ti) {\n var i;\n var len = data.or.k.length;\n\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\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this); // sh Indicates it needs to be capped between -180 and 180\n\n this.or.sh = true;\n } else {\n this.r = PropertyFactory.getProp(elem, data.r || {\n k: 0\n }, 0, degToRads, this);\n }\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\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); // 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\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\n this._isDirty = true;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\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\n function getTransformProperty(elem, data, container) {\n return new TransformProperty(elem, data, container);\n }\n\n return {\n getTransformProperty: getTransformProperty\n };\n }();\n\n function RepeaterModifier() {}\n\n extendPrototype([ShapeModifier], RepeaterModifier);\n\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\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\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\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\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\n while (pos > 0) {\n pos -= 1; // this._elements.unshift(arr.splice(pos,1)[0]);\n\n this._elements.unshift(arr[pos]);\n }\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n RepeaterModifier.prototype.resetElements = function (elements) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._processed = false;\n\n if (elements[i].ty === 'gr') {\n this.resetElements(elements[i].it);\n }\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\n RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._render = renderFlag;\n\n if (elements[i].ty === 'gr') {\n this.changeGroupRender(elements[i].it, renderFlag);\n }\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\n if (this._mdf || _isFirstFrame) {\n var copies = Math.ceil(this.c.v);\n\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\n this._groups.splice(0, 0, group);\n\n this._currentCopies += 1;\n }\n\n this.elem.reloadShapes();\n hasReloaded = true;\n }\n\n cont = 0;\n var renderFlag;\n\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\n if (!renderFlag) {\n var elems = this.elemsData[i].it;\n var transformData = elems[elems.length - 1];\n\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\n cont += 1;\n }\n\n this._currentCopies = copies; /// /\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\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\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\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\n iteration -= offsetModulo;\n }\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\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\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\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\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n\n this.matrix.reset();\n } else {\n this.matrix.reset();\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\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\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\n return hasReloaded;\n };\n\n RepeaterModifier.prototype.addShape = function () {};\n\n function RoundCornersModifier() {}\n\n extendPrototype([ShapeModifier], RoundCornersModifier);\n\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\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\n for (i = 0; i < len; i += 1) {\n currentV = path.v[i];\n currentO = path.o[i];\n currentI = path.i[i];\n\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;\r\n clonedPath.o[index] = currentO;\r\n clonedPath.i[index] = currentI; */\n\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\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\n if (i === len - 1) {\n closerV = path.v[0];\n } else {\n closerV = path.v[i + 1];\n }\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\n return clonedPath;\n };\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\n if (rd !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\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\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\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\n function floatZero(f) {\n return Math.abs(f) <= 0.00001;\n }\n\n function lerp(p0, p1, amount) {\n return p0 * (1 - amount) + p1 * amount;\n }\n\n function lerpPoint(p0, p1, amount) {\n return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\n }\n\n function quadRoots(a, b, c) {\n // no root\n if (a === 0) return [];\n var s = b * b - 4 * a * c; // Complex roots\n\n if (s < 0) return [];\n var singleRoot = -b / (2 * a); // 1 root\n\n if (s === 0) return [singleRoot];\n var delta = Math.sqrt(s) / (2 * a); // 2 roots\n\n return [singleRoot - delta, singleRoot + delta];\n }\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\n function singlePoint(p) {\n return new PolynomialBezier(p, p, p, p, false);\n }\n\n function PolynomialBezier(p0, p1, p2, p3, linearize) {\n if (linearize && pointEqual(p0, p1)) {\n p1 = lerpPoint(p0, p3, 1 / 3);\n }\n\n if (linearize && pointEqual(p2, p3)) {\n p2 = lerpPoint(p0, p3, 2 / 3);\n }\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\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\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\n PolynomialBezier.prototype.tangentAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[1], p[0]);\n };\n\n PolynomialBezier.prototype.normalAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[0], p[1]);\n };\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\n if (floatZero(root)) {\n if (root > 0 && root < 1) return [tcusp];\n return [];\n }\n\n return [tcusp - root, tcusp + root].filter(function (r) {\n return r > 0 && r < 1;\n });\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\n function extrema(bez, comp) {\n var min = bez.points[0][comp];\n var max = bez.points[bez.points.length - 1][comp];\n\n if (min > max) {\n var e = max;\n max = min;\n min = e;\n } // Derivative roots to find min/max\n\n\n var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\n\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\n return {\n min: min,\n max: max\n };\n }\n\n PolynomialBezier.prototype.bounds = function () {\n return {\n x: extrema(this, 0),\n y: extrema(this, 1)\n };\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\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\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\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\n function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\n if (!boxIntersect(d1, d2)) return;\n\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\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\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\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\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\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\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\n function polarOffset(p, angle, length) {\n return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\n }\n\n function pointDistance(p1, p2) {\n return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\n }\n\n function pointEqual(p1, p2) {\n return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\n }\n\n function ZigZagModifier() {}\n\n extendPrototype([ShapeModifier], ZigZagModifier);\n\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\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\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\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\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\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\n return direction;\n }\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\n if (!path.c) {\n count -= 1;\n }\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\n for (var i = 0; i < count; i += 1) {\n direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\n\n if (i === count - 1 && !path.c) {\n segment = null;\n } else {\n segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\n }\n\n zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\n }\n\n return clonedPath;\n };\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\n if (amplitude !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\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\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\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\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\n function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\n var p0 = seg1.points[3];\n var p1 = seg2.points[0]; // Bevel\n\n if (lineJoin === 3) return p0; // Connected, they don't need a joint\n\n if (pointEqual(p0, p1)) return p0; // Round\n\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 } // Miter\n\n\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\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\n return p0;\n }\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\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\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\n if (a.length > 1 && b.length > 1) {\n intersect = getIntersection(a[0], b[b.length - 1]);\n\n if (intersect) {\n return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\n }\n }\n\n return [outa, outb];\n }\n\n function pruneIntersections(segments) {\n var e;\n\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\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\n return segments;\n }\n\n function offsetSegmentSplit(segment, amount) {\n /*\r\n We split each bezier segment into smaller pieces based\r\n on inflection points, this ensures the control point\r\n polygon is convex.\r\n (A cubic bezier can have none, one, or two inflection points)\r\n */\n var flex = segment.inflectionPoints();\n var left;\n var right;\n var split;\n var mid;\n\n if (flex.length === 0) {\n return [offsetSegment(segment, amount)];\n }\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\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\n function OffsetPathModifier() {}\n\n extendPrototype([ShapeModifier], OffsetPathModifier);\n\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\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\n if (!inputBezier.c) {\n count -= 1;\n }\n\n var i;\n var j;\n var segment;\n var multiSegments = [];\n\n for (i = 0; i < count; i += 1) {\n segment = PolynomialBezier.shapeSegment(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\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\n multiSegments = pruneIntersections(multiSegments); // Add bezier segments to the output and apply line joints\n\n var lastPoint = null;\n var lastSeg = null;\n\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\n for (j = 0; j < multiSegment.length; j += 1) {\n segment = multiSegment[j];\n\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\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\n if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\n return outputBezier;\n };\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\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\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\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\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\n for (var i = 0; i < len; i += 1) {\n styleName = styles[i].toLowerCase();\n\n switch (styleName) {\n case 'italic':\n fStyle = 'italic';\n break;\n\n case 'bold':\n fWeight = '700';\n break;\n\n case 'black':\n fWeight = '900';\n break;\n\n case 'medium':\n fWeight = '500';\n break;\n\n case 'regular':\n case 'normal':\n fWeight = '400';\n break;\n\n case 'light':\n case 'thin':\n fWeight = '200';\n break;\n\n default:\n break;\n }\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 = []; // Hindi characters\n\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\n function trimFontOptions(font) {\n var familyArray = font.split(',');\n var i;\n var len = familyArray.length;\n var enabledFamilies = [];\n\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\n return enabledFamilies.join(',');\n }\n\n function setUpNode(font, family) {\n var parentNode = createTag('span'); // Node is invisible to screen readers.\n\n parentNode.setAttribute('aria-hidden', true);\n parentNode.style.fontFamily = family;\n var node = createTag('span'); // Characters that vary significantly among different fonts\n\n node.innerText = 'giItT1WQy@!-/#'; // Visible - so we can measure it - but not on the screen\n\n parentNode.style.position = 'absolute';\n parentNode.style.left = '-10000px';\n parentNode.style.top = '-10000px'; // Large font size makes even subtle changes obvious\n\n parentNode.style.fontSize = '300px'; // Reset any font properties\n\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); // Remember width with no applied web font\n\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\n function checkLoadedFonts() {\n var i;\n var len = this.fonts.length;\n var node;\n var w;\n var loadedCount = len;\n\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\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\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n }\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\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\n setTimeout(this.checkLoadedFontsBinded, 20);\n } else {\n setTimeout(this.setIsLoadedBinded, 10);\n }\n }\n\n function createHelper(fontData, def) {\n var engine = document.body && def ? 'svg' : 'canvas';\n var helper;\n var fontProps = getFontProperties(fontData);\n\n if (engine === 'svg') {\n var tHelper = createNS('text');\n tHelper.style.fontSize = '100px'; // tHelper.style.fontFamily = fontData.fFamily;\n\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\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\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\n function measure(text) {\n if (engine === 'svg') {\n helper.textContent = text;\n return helper.getComputedTextLength();\n }\n\n return helper.measureText(text).width;\n }\n\n return {\n measureText: measure\n };\n }\n\n function addFonts(fontData, defs) {\n if (!fontData) {\n this.isLoaded = true;\n return;\n }\n\n if (this.chars) {\n this.isLoaded = true;\n this.fonts = fontData.list;\n return;\n }\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\n var fontArr = fontData.list;\n var i;\n var len = fontArr.length;\n var _pendingFonts = len;\n\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\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\n if (loadedSelector.length > 0) {\n shouldLoadFont = false;\n }\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\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\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\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\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\n fontArr[i].helper = createHelper(fontArr[i], defs);\n fontArr[i].cache = {};\n this.fonts.push(fontArr[i]);\n }\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\n function addChars(chars) {\n if (!chars) {\n return;\n }\n\n if (!this.chars) {\n this.chars = [];\n }\n\n var i;\n var len = chars.length;\n var j;\n var jLen = this.chars.length;\n var found;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n found = false;\n\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\n j += 1;\n }\n\n if (!found) {\n this.chars.push(chars[i]);\n jLen += 1;\n }\n }\n }\n\n function getCharData(_char, style, font) {\n var i = 0;\n var len = this.chars.length;\n\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\n i += 1;\n }\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\n return emptyChar;\n }\n\n function measureText(_char2, fontName, size) {\n var fontData = this.getFontByName(fontName); // Using the char instead of char.charCodeAt(0)\n // to avoid collisions between equal chars\n\n var index = _char2;\n\n if (!fontData.cache[index]) {\n var tHelper = fontData.helper;\n\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\n return fontData.cache[index] * size;\n }\n\n function getFontByName(name) {\n var i = 0;\n var len = this.fonts.length;\n\n while (i < len) {\n if (this.fonts[i].fName === name) {\n return this.fonts[i];\n }\n\n i += 1;\n }\n\n return this.fonts[0];\n }\n\n function getCodePoint(string) {\n var codePoint = 0;\n var first = string.charCodeAt(0);\n\n if (first >= 0xD800 && first <= 0xDBFF) {\n var second = string.charCodeAt(1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return codePoint;\n } // Skin tone modifiers\n\n\n function isModifier(firstCharCode, secondCharCode) {\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\n return surrogateModifiers.indexOf(sum) !== -1;\n }\n\n function isZeroWidthJoiner(charCode) {\n return charCode === ZERO_WIDTH_JOINER_CODE_POINT;\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\n\n function isVariationSelector(charCode) {\n return charCode === VARIATION_SELECTOR_16_CODE_POINT;\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\n\n function isRegionalCode(string) {\n var codePoint = getCodePoint(string);\n\n if (codePoint >= REGIONAL_CHARACTER_A_CODE_POINT && codePoint <= REGIONAL_CHARACTER_Z_CODE_POINT) {\n return true;\n }\n\n return false;\n } // Some Emoji implementations represent combinations of\n // two “regional indicator” letters as a single flag symbol.\n\n\n function isFlagEmoji(string) {\n return isRegionalCode(string.substr(0, 2)) && isRegionalCode(string.substr(2, 2));\n }\n\n function isCombinedCharacter(_char3) {\n return combinedCharacters.indexOf(_char3) !== -1;\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\n\n function isRegionalFlag(text, index) {\n var codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint !== BLACK_FLAG_CODE_POINT) {\n return false;\n }\n\n var count = 0;\n index += 2;\n\n while (count < 5) {\n codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint < A_TAG_CODE_POINT || codePoint > Z_TAG_CODE_POINT) {\n return false;\n }\n\n count += 1;\n index += 2;\n }\n\n return getCodePoint(text.substr(index, 2)) === CANCEL_TAG_CODE_POINT;\n }\n\n function setIsLoaded() {\n this.isLoaded = true;\n }\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\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\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\n return data;\n };\n\n function slotFactory(animationData) {\n return new SlotManager(animationData);\n }\n\n function RenderableElement() {}\n\n RenderableElement.prototype = {\n initRenderable: function initRenderable() {\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n this.isInRange = false; // layer's display state\n\n this.hidden = false; // If layer's transparency equals 0, it can be hidden\n\n this.isTransparent = false; // list of animated components\n\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 /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n *\r\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\n for (i = 0; i < len; i += 1) {\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\n }\n /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\n\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\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\n function AngleEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function ColorEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function PointEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function LayerIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function MaskIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function CheckboxEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\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\n for (i = 0; i < len; i += 1) {\n effectItem = new GroupEffect(effects[i], element);\n this.effectElements.push(effectItem);\n }\n }\n\n function GroupEffect(data, element) {\n this.init(data, element);\n }\n\n extendPrototype([DynamicPropertyContainer], GroupEffect);\n GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\n\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\n for (i = 0; i < len; i += 1) {\n eff = null;\n\n switch (effects[i].ty) {\n case 0:\n eff = new SliderEffect(effects[i], element, this);\n break;\n\n case 1:\n eff = new AngleEffect(effects[i], element, this);\n break;\n\n case 2:\n eff = new ColorEffect(effects[i], element, this);\n break;\n\n case 3:\n eff = new PointEffect(effects[i], element, this);\n break;\n\n case 4:\n case 7:\n eff = new CheckboxEffect(effects[i], element, this);\n break;\n\n case 10:\n eff = new LayerIndexEffect(effects[i], element, this);\n break;\n\n case 11:\n eff = new MaskIndexEffect(effects[i], element, this);\n break;\n\n case 5:\n eff = new EffectsManager(effects[i], element, this);\n break;\n // case 6:\n\n default:\n eff = new NoValueEffect(effects[i], element, this);\n break;\n }\n\n if (eff) {\n this.effectElements.push(eff);\n }\n }\n };\n\n function BaseElement() {}\n\n BaseElement.prototype = {\n checkMasks: function checkMasks() {\n if (!this.data.hasMask) {\n return false;\n }\n\n var i = 0;\n var len = this.data.masksProperties.length;\n\n while (i < len) {\n if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\n return true;\n }\n\n i += 1;\n }\n\n return false;\n },\n initExpressions: function initExpressions() {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\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\n if (this.data.hasMask && this.maskManager) {\n this.layerInterface.registerMaskInterface(this.maskManager);\n }\n\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\n this.layerInterface.registerEffectsInterface(effectsInterface);\n\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(); // Stretch factor for old animations missing this property.\n\n if (!this.data.sr) {\n this.data.sr = 1;\n } // effects manager\n\n\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 /**\r\n * @file\r\n * Handles element's layer frame update.\r\n * Checks layer in point and out point\r\n *\r\n */\n function FrameElement() {}\n\n FrameElement.prototype = {\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n */\n initFrame: function initFrame() {\n // set to true when inpoint is rendered\n this._isFirstFrame = false; // list of animated properties\n\n this.dynamicProperties = []; // If layer has been modified in current tick this will be true\n\n this._mdf = false;\n },\n\n /**\r\n * @function\r\n * Calculates all dynamic values\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n * @param {boolean} isVisible\r\n * if layers is currently in range\r\n *\r\n */\n prepareProperties: function prepareProperties(num, isVisible) {\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\n this.dynamicProperties[i].getValue();\n\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\n FootageElement.prototype.prepareFrame = function () {};\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\n\n FootageElement.prototype.getBaseElement = function () {\n return null;\n };\n\n FootageElement.prototype.renderFrame = function () {};\n\n FootageElement.prototype.destroy = function () {};\n\n FootageElement.prototype.initExpressions = function () {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var FootageInterface = expressionsInterfaces('footage');\n this.layerInterface = FootageInterface(this);\n };\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\n AudioElement.prototype.prepareFrame = function (num) {\n this.prepareRenderableFrame(num, true);\n this.prepareProperties(num, true);\n\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\n this._volume = this.lv.v[0];\n var totalVolume = this._volume * this._volumeMultiplier;\n\n if (this._previousVolume !== totalVolume) {\n this._previousVolume = totalVolume;\n this.audio.volume(totalVolume);\n }\n };\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\n\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\n AudioElement.prototype.show = function () {// this.audio.play()\n };\n\n AudioElement.prototype.hide = function () {\n this.audio.pause();\n this._isPlaying = false;\n };\n\n AudioElement.prototype.pause = function () {\n this.audio.pause();\n this._isPlaying = false;\n this._canPlay = false;\n };\n\n AudioElement.prototype.resume = function () {\n this._canPlay = true;\n };\n\n AudioElement.prototype.setRate = function (rateValue) {\n this.audio.rate(rateValue);\n };\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\n AudioElement.prototype.getBaseElement = function () {\n return null;\n };\n\n AudioElement.prototype.destroy = function () {};\n\n AudioElement.prototype.sourceRectAtTime = function () {};\n\n AudioElement.prototype.initExpressions = function () {};\n\n function BaseRenderer() {}\n\n BaseRenderer.prototype.checkLayers = function (num) {\n var i;\n var len = this.layers.length;\n var data;\n this.completeLayers = true;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (!this.elements[i]) {\n data = this.layers[i];\n\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\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.createItem = function (layer) {\n switch (layer.ty) {\n case 2:\n return this.createImage(layer);\n\n case 0:\n return this.createComp(layer);\n\n case 1:\n return this.createSolid(layer);\n\n case 3:\n return this.createNull(layer);\n\n case 4:\n return this.createShape(layer);\n\n case 5:\n return this.createText(layer);\n\n case 6:\n return this.createAudio(layer);\n\n case 13:\n return this.createCamera(layer);\n\n case 15:\n return this.createFootage(layer);\n\n default:\n return this.createNull(layer);\n }\n };\n\n BaseRenderer.prototype.createCamera = function () {\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\n };\n\n BaseRenderer.prototype.createAudio = function (data) {\n return new AudioElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.createFootage = function (data) {\n return new FootageElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.buildAllItems = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n this.buildItem(i);\n }\n\n this.checkPendingElements();\n };\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\n for (i = 0; i < len; i += 1) {\n j = 0;\n\n while (j < jLen) {\n if (this.layers[j].id === newLayers[i].id) {\n this.layers[j] = newLayers[i];\n break;\n }\n\n j += 1;\n }\n }\n };\n\n BaseRenderer.prototype.setProjectInterface = function (pInterface) {\n this.globalData.projectInterface = pInterface;\n };\n\n BaseRenderer.prototype.initItems = function () {\n if (!this.globalData.progressiveLoad) {\n this.buildAllItems();\n }\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\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\n if (layers[i].parent !== undefined) {\n this.buildElementParenting(element, layers[i].parent, hierarchy);\n } else {\n element.setHierarchy(hierarchy);\n }\n }\n }\n\n i += 1;\n }\n };\n\n BaseRenderer.prototype.addPendingElement = function (element) {\n this.pendingElements.push(element);\n };\n\n BaseRenderer.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n\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\n BaseRenderer.prototype.getElementById = function (ind) {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.ind === ind) {\n return this.elements[i];\n }\n }\n\n return null;\n };\n\n BaseRenderer.prototype.getElementByPath = function (path) {\n var pathValue = path.shift();\n var element;\n\n if (typeof pathValue === 'number') {\n element = this.elements[pathValue];\n } else {\n var i;\n var len = this.elements.length;\n\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\n if (path.length === 0) {\n return element;\n }\n\n return element.getElementByPath(path);\n };\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\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\n if (this.data.ao) {\n this.finalTransform.mProp.autoOriented = true;\n } // TODO: check TYPE 11: Guided elements\n\n\n if (this.data.ty !== 11) {// 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\n if (this.hierarchy) {\n var mat;\n var finalMat = this.finalTransform.mat;\n var i = 0;\n var len = this.hierarchy.length; // Checking if any of the transformation matrices in the hierarchy chain has changed.\n\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\n i += 1;\n }\n }\n\n if (this.finalTransform._matMdf) {\n mat = this.finalTransform.mProp.v.props;\n finalMat.cloneFromProps(mat);\n\n for (i = 0; i < len; i += 1) {\n finalMat.multiply(this.hierarchy[i].finalTransform.mProp.v);\n }\n }\n }\n\n if (this.finalTransform._matMdf) {\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n }\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\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\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\n i += 1;\n }\n }\n\n if (this.finalTransform._localMatMdf) {\n var localMat = this.finalTransform.localMat;\n this.localTransforms[0].matrix.clone(localMat);\n\n for (i = 1; i < len; i += 1) {\n var lmat = this.localTransforms[i].matrix;\n localMat.multiply(lmat);\n }\n\n localMat.multiply(this.finalTransform.mat);\n }\n\n if (this.finalTransform._opMdf) {\n var localOp = this.finalTransform.localOpacity;\n\n for (i = 0; i < len; i += 1) {\n localOp *= this.localTransforms[i].opacity * 0.01;\n }\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\n if (transformEffects.length) {\n this.localTransforms = [];\n this.finalTransform.localMat = new Matrix();\n var i = 0;\n var len = transformEffects.length;\n\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\n while (flag) {\n if (comp.finalTransform) {\n if (comp.data.hasMask) {\n transforms.splice(0, 0, comp.finalTransform);\n }\n\n comp = comp.comp;\n } else {\n flag = false;\n }\n }\n\n var i;\n var len = transforms.length;\n var ptNew;\n\n for (i = 0; i < len; i += 1) {\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\n }\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\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\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\n path = createNS('path');\n\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\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 } // TODO move this to a factory or to a constructor\n\n\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\n if (properties[i].mode === 'i') {\n jLen = currentMasks.length;\n var g = createNS('g');\n\n for (j = 0; j < jLen; j += 1) {\n g.appendChild(currentMasks[j]);\n }\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\n if (properties[i].inv && !this.solidPath) {\n this.solidPath = this.createLayerSolidPath();\n } // TODO move this to a factory or to a constructor\n\n\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\n if (!this.viewData[i].prop.k) {\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n }\n }\n\n this.maskElement = createNS(maskType);\n len = currentMasks.length;\n\n for (i = 0; i < len; i += 1) {\n this.maskElement.appendChild(currentMasks[i]);\n }\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\n if (this.viewData.length) {\n this.element.addRenderableComponent(this);\n }\n }\n\n MaskElement.prototype.getMaskProperty = function (pos) {\n return this.viewData[pos].prop;\n };\n\n MaskElement.prototype.renderFrame = function (isFirstFrame) {\n var finalMat = this.element.finalTransform.mat;\n var i;\n var len = this.masksProperties.length;\n\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\n if (this.viewData[i].op._mdf || isFirstFrame) {\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\n }\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\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\n var feMorph = this.storedData[i].expan;\n\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\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\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\n }\n }\n }\n }\n };\n\n MaskElement.prototype.getMaskelement = function () {\n return this.maskElement;\n };\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\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\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 } // 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\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 } // pathNodes.__renderedString = pathString;\n\n\n if (viewData.lastPath !== pathString) {\n var pathShapeValue = '';\n\n if (viewData.elem) {\n if (pathNodes.c) {\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\n }\n\n viewData.elem.setAttribute('d', pathShapeValue);\n }\n\n viewData.lastPath = pathString;\n }\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\n function createFilter(filId, skipCoordinates) {\n var fil = createNS('filter');\n fil.setAttribute('id', filId);\n\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\n return fil;\n }\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\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\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\n if (/firefox/i.test(navigator.userAgent)) {\n ob.svgLumaHidden = false;\n }\n\n return ob;\n }();\n\n var registeredEffects$1 = {};\n var idPrefix = 'filter_result_';\n\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\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\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\n if (registeredEffects$1[type].countsAsEffect) {\n count += 1;\n }\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (count) {\n elem.globalData.defs.appendChild(fil);\n elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n SVGEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\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\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; // If this layer acts as a mask for the following layer\n\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\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n } // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\n\n\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\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\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\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\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\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\n if (!this.matteMasks[matteType]) {\n var id = this.layerId + '_' + matteType;\n var filId;\n var fil;\n var useElement;\n var gg;\n\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\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\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\n this.globalData.defs.appendChild(maskGroup);\n }\n\n this.matteMasks[matteType] = id;\n }\n\n return this.matteMasks[matteType];\n },\n setMatte: function setMatte(id) {\n if (!this.matteElement) {\n return;\n }\n\n this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n }\n };\n\n /**\r\n * @file\r\n * Handles AE's layer parenting property.\r\n *\r\n */\n function HierarchyElement() {}\n\n HierarchyElement.prototype = {\n /**\r\n * @function\r\n * Initializes hierarchy properties\r\n *\r\n */\n initHierarchy: function initHierarchy() {\n // element's parent list\n this.hierarchy = []; // if element is parent of another layer _isParent will be true\n\n this._isParent = false;\n this.checkParenting();\n },\n\n /**\r\n * @function\r\n * Sets layer's hierarchy.\r\n * @param {array} hierarch\r\n * layer's parent list\r\n *\r\n */\n setHierarchy: function setHierarchy(hierarchy) {\n this.hierarchy = hierarchy;\n },\n\n /**\r\n * @function\r\n * Sets layer as parent.\r\n *\r\n */\n setAsParent: function setAsParent() {\n this._isParent = true;\n },\n\n /**\r\n * @function\r\n * Searches layer's parenting chain\r\n *\r\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\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\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\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.renderElement();\n this.renderInnerContent();\n\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\n if (this.assetData && this.assetData.sid) {\n this.assetData = globalData.slotManager.getProp(this.assetData);\n }\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\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\n\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\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\n IShapeElement.prototype = {\n addShapeToModifiers: function addShapeToModifiers(data) {\n var i;\n var len = this.shapeModifiers.length;\n\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\n while (i < len) {\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\n return true;\n }\n }\n\n return false;\n },\n renderModifiers: function renderModifiers() {\n if (!this.shapeModifiers.length) {\n return;\n }\n\n var i;\n var len = this.shapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapes[i].sh.reset();\n }\n\n len = this.shapeModifiers.length;\n var shouldBreakProcess;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); // 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\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\n while (i < len) {\n if (elements[i].elem === elem) {\n return elements[i].pos;\n }\n\n i += 1;\n }\n\n return 0;\n },\n addProcessedElement: function addProcessedElement(elem, pos) {\n var elements = this.processedElements;\n var i = elements.length;\n\n while (i) {\n i -= 1;\n\n if (elements[i].elem === elem) {\n elements[i].pos = pos;\n return;\n }\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; // 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\n this._isAnimated = !!shape.k; // TODO: commenting this for now since all shapes are animated\n\n var i = 0;\n var len = transformers.length;\n\n while (i < len) {\n if (transformers[i].mProps.dynamicProperties.length) {\n this._isAnimated = true;\n break;\n }\n\n i += 1;\n }\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\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\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\n if (!this.k) {\n this.getValue(true);\n }\n\n this._isAnimated = this.k;\n }\n\n DashProperty.prototype.getValue = function (forceRender) {\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || forceRender;\n\n if (this._mdf) {\n var i = 0;\n var len = this.dataProps.length;\n\n if (this.renderer === 'svg') {\n this.dashStr = '';\n }\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\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\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\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\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\n GradientProperty.prototype.comparePoints = function (values, points) {\n var i = 0;\n var len = this.o.length / 2;\n var diff;\n\n while (i < len) {\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\n\n if (diff > 0.01) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n };\n\n GradientProperty.prototype.checkCollapsable = function () {\n if (this.o.length / 2 !== this.c.length / 4) {\n return false;\n }\n\n if (this.data.k.k[0].s) {\n var i = 0;\n var len = this.data.k.k.length;\n\n while (i < len) {\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n return false;\n }\n\n i += 1;\n }\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\n return false;\n }\n\n return true;\n };\n\n GradientProperty.prototype.getValue = function (forceRender) {\n this.prop.getValue();\n this._mdf = false;\n this._cmdf = false;\n this._omdf = false;\n\n if (this.prop._mdf || forceRender) {\n var i;\n var len = this.data.p * 4;\n var mult;\n var val;\n\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\n if (this.c[i] !== val) {\n this.c[i] = val;\n this._cmdf = !forceRender;\n }\n }\n\n if (this.o.length) {\n len = this.prop.v.length;\n\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\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\n this._mdf = !forceRender;\n }\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\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\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\n for (j = 0; j < jLen; j += 4) {\n stop = createNS('stop');\n gfill.appendChild(stop);\n stops.push(stop);\n }\n\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\n this.gf = gfill;\n this.cst = stops;\n };\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\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\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\n\n if (data.ty === 'gs') {\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n\n if (data.lj === 1) {\n maskElement.setAttribute('stroke-miterlimit', data.ml);\n }\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\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\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\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\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\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\n return shapeString;\n };\n\n var SVGElementsRenderer = function () {\n var _identityMatrix = new Matrix();\n\n var _matrixHelper = new Matrix();\n\n var ob = {\n createRenderFunction: createRenderFunction\n };\n\n function createRenderFunction(data) {\n switch (data.ty) {\n case 'fl':\n return renderFill;\n\n case 'gf':\n return renderGradient;\n\n case 'gs':\n return renderGradientStroke;\n\n case 'st':\n return renderStroke;\n\n case 'sh':\n case 'el':\n case 'rc':\n case 'sr':\n return renderPath;\n\n case 'tr':\n return renderContentTransform;\n\n case 'no':\n return renderNoop;\n\n default:\n return null;\n }\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\n if (isFirstFrame || itemData.transform.mProps._mdf) {\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\n }\n }\n\n function renderNoop() {}\n\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\n for (l = 0; l < lLen; l += 1) {\n redraw = itemData.sh._mdf || isFirstFrame;\n\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\n while (!redraw && iterations > 0) {\n redraw = itemData.transformers[k].mProps._mdf || redraw;\n iterations -= 1;\n k -= 1;\n }\n\n if (redraw) {\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\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\n paths = itemData.sh.paths;\n jLen = paths._length;\n\n if (redraw) {\n pathStringTransformed = '';\n\n for (j = 0; j < jLen; j += 1) {\n pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes._length) {\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\n }\n }\n\n itemData.caches[l] = pathStringTransformed;\n } else {\n pathStringTransformed = itemData.caches[l];\n }\n\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\n }\n }\n\n function renderFill(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n\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\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\n }\n }\n\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\n renderGradient(styleData, itemData, isFirstFrame);\n renderStroke(styleData, itemData, isFirstFrame);\n }\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\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\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\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute(attr1, pt1[0]);\n itemData.of.setAttribute(attr2, pt1[1]);\n }\n }\n\n var stops;\n var i;\n var len;\n var stop;\n\n if (itemData.g._cmdf || isFirstFrame) {\n stops = itemData.cst;\n var cValues = itemData.g.c;\n len = stops.length;\n\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\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\n var oValues = itemData.g.o;\n\n if (itemData.g._collapsable) {\n stops = itemData.cst;\n } else {\n stops = itemData.ost;\n }\n\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n\n if (!itemData.g._collapsable) {\n stop.setAttribute('offset', oValues[i * 2] + '%');\n }\n\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\n }\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\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\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\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('r', rad);\n }\n }\n\n if (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\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\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\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('fx', x);\n itemData.of.setAttribute('fy', y);\n }\n } // gfill.setAttribute('fy','200');\n\n }\n }\n\n function renderStroke(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\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\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\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\n }\n\n if (itemData.w._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\n\n if (styleElem.msElem) {\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\n }\n }\n }\n\n return ob;\n }();\n\n function SVGShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.initElement(data, globalData, comp); // 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\n this.prevViewData = []; // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\n\n SVGShapeElement.prototype.initSecondaryElement = function () {};\n\n SVGShapeElement.prototype.identityMatrix = new Matrix();\n\n SVGShapeElement.prototype.buildExpressionInterface = function () {};\n\n SVGShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n };\n /*\r\n This method searches for multiple shapes that affect a single element and one of them is animated\r\n */\n\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\n for (j = 0; j < jLen; j += 1) {\n style = this.stylesList[j];\n areAnimated = false;\n tempShapes.length = 0;\n\n for (i = 0; i < len; i += 1) {\n shape = this.shapes[i];\n\n if (shape.styles.indexOf(style) !== -1) {\n tempShapes.push(shape);\n areAnimated = shape._isAnimated || areAnimated;\n }\n }\n\n if (tempShapes.length > 1 && areAnimated) {\n this.setShapesAsAnimated(tempShapes);\n }\n }\n };\n\n SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\n var i;\n var len = shapes.length;\n\n for (i = 0; i < len; i += 1) {\n shapes[i].setAsAnimated();\n }\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\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\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\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\n if (data.lj === 1) {\n pathElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n if (data.r === 2) {\n pathElement.setAttribute('fill-rule', 'evenodd');\n }\n\n if (data.ln) {\n pathElement.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n pathElement.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n this.stylesList.push(styleOb);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createGroupElement = function (data) {\n var elementData = new ShapeGroupData();\n\n if (data.ln) {\n elementData.gr.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n elementData.gr.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n return elementData;\n };\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\n SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\n var ty = 4;\n\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\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\n SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\n var i = 0;\n var len = this.animatedContents.length;\n\n while (i < len) {\n if (this.animatedContents[i].element === element) {\n return;\n }\n\n i += 1;\n }\n\n this.animatedContents.push({\n fn: SVGElementsRenderer.createRenderFunction(data),\n element: element,\n data: data\n });\n };\n\n SVGShapeElement.prototype.setElementStyles = function (elementData) {\n var arr = elementData.styles;\n var j;\n var jLen = this.stylesList.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (!this.stylesList[j].closed) {\n arr.push(this.stylesList[j]);\n }\n }\n };\n\n SVGShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n };\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\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._render = render;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\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 = false;\n }\n\n if (arr[i]._render) {\n if (itemsData[i].style.pElem.parentNode !== container) {\n container.appendChild(itemsData[i].style.pElem);\n }\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\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\n\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\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\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\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\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n len = ownStyles.length;\n\n for (i = 0; i < len; i += 1) {\n ownStyles[i].closed = true;\n }\n\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n SVGShapeElement.prototype.renderInnerContent = function () {\n this.renderModifiers();\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n this.stylesList[i].reset();\n }\n\n this.renderShape();\n\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); // Adding M0 0 fixes same mask bug on all browsers\n\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\n }\n\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\n }\n }\n };\n\n SVGShapeElement.prototype.renderShape = function () {\n var i;\n var len = this.animatedContents.length;\n var animatedContent;\n\n for (i = 0; i < len; i += 1) {\n animatedContent = this.animatedContents[i];\n\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\n }\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\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\n if (this.o !== o) {\n this.o = o;\n this._mdf.o = true;\n updated = true;\n }\n\n if (this.sw !== sw) {\n this.sw = sw;\n this._mdf.sw = true;\n updated = true;\n }\n\n if (this.sc !== sc) {\n this.sc = sc;\n this._mdf.sc = true;\n updated = true;\n }\n\n if (this.fc !== fc) {\n this.fc = fc;\n this._mdf.fc = true;\n updated = true;\n }\n\n if (this.m !== m) {\n this.m = m;\n this._mdf.m = true;\n updated = true;\n }\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\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\n if (data.d && data.d.sid) {\n data.d = elem.globalData.slotManager.getProp(data.d);\n }\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\n if (!this.searchProperty()) {\n this.completeTextData(this.currentData);\n }\n }\n\n TextProperty.prototype.defaultBoxWidth = [0, 0];\n\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\n return obj;\n };\n\n TextProperty.prototype.setCurrentData = function (data) {\n if (!data.__complete) {\n this.completeTextData(data);\n }\n\n this.currentData = data;\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\n this._mdf = true;\n };\n\n TextProperty.prototype.searchProperty = function () {\n return this.searchKeyframes();\n };\n\n TextProperty.prototype.searchKeyframes = function () {\n this.kf = this.data.d.k.length > 1;\n\n if (this.kf) {\n this.addEffect(this.getKeyframeValue.bind(this));\n }\n\n return this.kf;\n };\n\n TextProperty.prototype.addEffect = function (effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.getValue = function (_finalValue) {\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n return;\n }\n\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\n var currentValue = this.currentData;\n var currentIndex = this.keysIndex;\n\n if (this.lock) {\n this.setCurrentData(this.currentData);\n return;\n }\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\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\n if (currentValue !== finalValue) {\n this.setCurrentData(finalValue);\n }\n\n this.v = this.currentData;\n this.pv = this.v;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n };\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\n while (i <= len - 1) {\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\n break;\n }\n\n i += 1;\n }\n\n if (this.keysIndex !== i) {\n this.keysIndex = i;\n }\n\n return this.data.d.k[this.keysIndex].s;\n };\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\n while (i < len) {\n shouldCombine = shouldCombineNext;\n shouldCombineNext = false;\n charCode = text.charCodeAt(i);\n currentChars = text.charAt(i);\n\n if (FontManager.isCombinedCharacter(charCode)) {\n shouldCombine = true; // 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); // It's a surrogate pair (this is the Low surrogate)\n\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\n if (FontManager.isVariationSelector(charCode)) {\n shouldCombine = true;\n }\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\n shouldCombine = true;\n shouldCombineNext = true;\n }\n\n if (shouldCombine) {\n charactersArray[charactersArray.length - 1] += currentChars;\n shouldCombine = false;\n } else {\n charactersArray.push(currentChars);\n }\n\n i += currentChars.length;\n }\n\n return charactersArray;\n };\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\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\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\n for (i = 0; i < len; i += 1) {\n charCode = finalText[i].charCodeAt(0);\n newLineFlag = false;\n\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\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\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\n if (lastSpaceIndex === -1) {\n len += 1;\n } else {\n i = lastSpaceIndex;\n }\n\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r'); // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n\n lastSpaceIndex = -1;\n lineWidth = 0;\n } else {\n lineWidth += cLength;\n lineWidth += trackingOffset;\n }\n }\n\n currentHeight += fontData.ascent * documentData.finalSize / 100;\n\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\n lineWidth = -trackingOffset;\n cLength = 0;\n var uncollapsedSpaces = 0;\n var currentChar;\n\n for (i = 0; i < len; i += 1) {\n newLineFlag = false;\n currentChar = documentData.finalText[i];\n charCode = currentChar.charCodeAt(0);\n\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\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\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\n if (anchorGrouping == 2) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || val === ' ' || i === len - 1) {\n if (val === '' || val === ' ') {\n currentSize -= cLength;\n }\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\n index += 1;\n currentSize = 0;\n }\n } else if (anchorGrouping == 3) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || i === len - 1) {\n if (val === '') {\n currentSize -= cLength;\n }\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\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\n documentData.l = letters;\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidths.push(lineWidth);\n\n if (documentData.sz) {\n documentData.boxWidth = documentData.sz[0];\n documentData.justifyOffset = 0;\n } else {\n documentData.boxWidth = maxLineWidth;\n\n switch (documentData.j) {\n case 1:\n documentData.justifyOffset = -documentData.boxWidth;\n break;\n\n case 2:\n documentData.justifyOffset = -documentData.boxWidth / 2;\n break;\n\n default:\n documentData.justifyOffset = 0;\n }\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\n for (j = 0; j < jLen; j += 1) {\n animatorData = animators[j];\n\n if (animatorData.a.sc) {\n documentData.strokeColorAnim = true;\n }\n\n if (animatorData.a.sw) {\n documentData.strokeWidthAnim = true;\n }\n\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\n documentData.fillColorAnim = true;\n }\n\n ind = 0;\n based = animatorData.s.b;\n\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n letterData.anIndexes[j] = ind;\n\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\n ind += 1;\n }\n }\n\n data.a[j].s.totalChars = ind;\n var currentInd = -1;\n var newInd;\n\n if (animatorData.s.rn === 1) {\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n\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\n letterData.anIndexes[j] = newInd;\n }\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\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\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\n TextProperty.prototype.canResizeFont = function (_canResize) {\n this.canResize = _canResize;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\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\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\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\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\n if (!this.dynamicProperties.length) {\n this.getValue();\n }\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\n var x1 = 0;\n var y1 = 0;\n var x2 = 1;\n var y2 = 1;\n\n if (this.ne.v > 0) {\n x1 = this.ne.v / 100.0;\n } else {\n y1 = -this.ne.v / 100.0;\n }\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\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\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\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\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\n if (mult < 0.5) {\n mult *= 2;\n } else {\n mult = 1 - 2 * (mult - 0.5);\n }\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;\r\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\n\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\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\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\n mult = easer(mult);\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\n\n if (this.sm.v !== 100) {\n var smoothness = this.sm.v * 0.01;\n\n if (smoothness === 0) {\n smoothness = 0.00000001;\n }\n\n var threshold = 0.5 - smoothness * 0.5;\n\n if (mult < threshold) {\n mult = 0;\n } else {\n mult = (mult - threshold) / smoothness;\n\n if (mult > 1) {\n mult = 1;\n }\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\n if (newCharsFlag && this.data.r === 2) {\n this.e.v = this._currentTextLength;\n }\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\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n this.finalS = s;\n this.finalE = e;\n }\n };\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\n\n function getTextSelectorProp(elem, data, arr) {\n return new TextSelectorPropFactory(elem, data, arr);\n }\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\n TextAnimatorProperty.prototype.searchProperties = function () {\n var i;\n var len = this._textData.a.length;\n var animatorProps;\n var getProp = PropertyFactory.getProp;\n\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\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\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\n };\n\n TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\n this.lettersChangedFlag = lettersChangedFlag;\n\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\n return;\n }\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\n if (this._hasMaskedPath) {\n mask = this._pathData.m;\n\n if (!this._pathData.n || this._pathData._mdf) {\n var paths = mask.v;\n\n if (this._pathData.r.v) {\n paths = paths.reverse();\n } // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\n\n\n pathInfo = {\n tLength: 0,\n segments: []\n };\n len = paths._length - 1;\n var bezierData;\n totalLength = 0;\n\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\n i = len;\n\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\n this._pathData.pi = pathInfo;\n }\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\n if (currentLength < 0 && mask.v.c) {\n if (pathInfo.tLength < Math.abs(currentLength)) {\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\n }\n\n segmentInd = segments.length - 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n\n while (currentLength < 0) {\n currentLength += points[pointInd].partialLength;\n pointInd -= 1;\n\n if (pointInd < 0) {\n segmentInd -= 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n }\n }\n }\n\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\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 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\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n\n animatorJustifyOffset = 0;\n isNewLine = true;\n } else {\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n if (isNewLine && documentData.j === 2) {\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\n }\n\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\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\n isNewLine = false;\n }\n }\n\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\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\n if (letters[i].n) {\n xPos = 0;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n currentLength = initPathPos;\n firstLine = false;\n\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\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\n case 2:\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\n break;\n\n default:\n break;\n }\n\n currentLine = letters[i].line;\n }\n\n if (ind !== letters[i].ind) {\n if (letters[ind]) {\n currentLength += letters[ind].extra;\n }\n\n currentLength += letters[i].an / 2;\n ind = letters[i].ind;\n }\n\n currentLength += alignment[0] * letters[i].an * 0.005;\n var animatorOffset = 0;\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.p.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.p.v[0] * mult;\n }\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\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\n flag = true; // Force alignment only works with a single line for now\n\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\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\n if (pointInd >= points.length) {\n pointInd = 0;\n segmentInd += 1;\n\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\n if (points) {\n prevPoint = currentPoint;\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\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); // Grouping alignment\n\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\n\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\n if (documentData.strokeWidthAnim) {\n sw = documentData.sw || 0;\n }\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\n if (documentData.fillColorAnim && documentData.fc) {\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\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\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\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.s.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\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\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\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\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\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\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\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\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\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\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\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\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\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\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\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\n if (documentData.strokeWidthAnim) {\n letterSw = sw < 0 ? 0 : sw;\n }\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\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\n if (this._hasMaskedPath) {\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\n\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\n if (currentPoint.point[0] < prevPoint.point[0]) {\n rot += 180;\n }\n\n matrixHelper.rotate(-rot * Math.PI / 180);\n }\n\n matrixHelper.translate(xPathPos, yPathPos, 0);\n currentLength -= alignment[0] * letters[i].an * 0.005;\n\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\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\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\n case 2:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\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\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\n letterO = elemOpacity;\n }\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\n TextAnimatorProperty.prototype.getValue = function () {\n if (this._elem.globalData.frameId === this._frameId) {\n return;\n }\n\n this._frameId = this._elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n TextAnimatorProperty.prototype.mHelper = new Matrix();\n TextAnimatorProperty.prototype.defaultPropsArray = [];\n extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\n\n function ITextElement() {}\n\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\n ITextElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n };\n\n ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\n var j;\n var jLen = shapes.length;\n var pathNodes;\n var shapeStr = '';\n\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\n return shapeStr;\n };\n\n ITextElement.prototype.updateDocumentData = function (newData, index) {\n this.textProperty.updateDocumentData(newData, index);\n };\n\n ITextElement.prototype.canResizeFont = function (_canResize) {\n this.textProperty.canResizeFont(_canResize);\n };\n\n ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\n this.textProperty.setMinimumFontSize(_fontSize);\n };\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\n matrixHelper.translate(0, -documentData.ls, 0);\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(xPos, yPos, 0);\n };\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\n ITextElement.prototype.emptyProp = new LetterProps();\n\n ITextElement.prototype.destroy = function () {};\n\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\n function SVGTextLottieElement(data, globalData, comp) {\n this.textSpans = [];\n this.renderType = 'svg';\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\n\n SVGTextLottieElement.prototype.createContent = function () {\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\n this.textContainer = createNS('text');\n }\n };\n\n SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\n var i = 0;\n var len = textArray.length;\n var textContents = [];\n var currentTextContent = '';\n\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\n i += 1;\n }\n\n textContents.push(currentTextContent);\n return textContents;\n };\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\n if (shape.it) {\n var shapeItem = shape.it[shape.it.length - 1];\n\n if (shapeItem.s) {\n shapeItem.s.k[0] = scale;\n shapeItem.s.k[1] = scale;\n }\n }\n }\n\n return data;\n };\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\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\n if (documentData.sc) {\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\n this.layerElement.setAttribute('stroke-width', documentData.sw);\n }\n\n this.layerElement.setAttribute('font-size', documentData.finalSize);\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\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\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\n if (singleShape && !usesGlyphs && !documentData.sz) {\n var tElement = this.textContainer;\n var justify = 'start';\n\n switch (documentData.j) {\n case 1:\n justify = 'end';\n break;\n\n case 2:\n justify = 'middle';\n break;\n\n default:\n justify = 'start';\n break;\n }\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\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\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n glyph: null\n };\n }\n\n this.textSpans[i].span = tSpan;\n yPos += documentData.finalLineHeight;\n }\n\n this.layerElement.appendChild(tElement);\n } else {\n var cachedSpansLength = this.textSpans.length;\n var charData;\n\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\n if (!usesGlyphs || !singleShape || i === 0) {\n tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\n\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\n if (usesGlyphs) {\n var childSpan = createNS('g');\n tSpan.appendChild(childSpan);\n this.textSpans[i].childSpan = childSpan;\n }\n\n this.textSpans[i].span = tSpan;\n this.layerElement.appendChild(tSpan);\n }\n\n tSpan.style.display = 'inherit';\n }\n\n matrixHelper.reset();\n\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\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n xPos += letters[i].l || 0; // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n\n xPos += trackingOffset;\n }\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; // t === 1 means the character has been replaced with an animated shaped\n\n if (charData.t === 1) {\n glyphElement = new SVGCompElement(charData.data, this.globalData, this);\n } else {\n var data = emptyShapeData;\n\n if (charData.data && charData.data.shapes) {\n data = this.buildShapeData(charData.data, documentData.finalSize);\n }\n\n glyphElement = new SVGShapeElement(data, this.globalData, this);\n }\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\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); // 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\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\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n } //\n\n }\n\n if (singleShape && tSpan) {\n tSpan.setAttribute('d', shapeStr);\n }\n }\n\n while (i < this.textSpans.length) {\n this.textSpans[i].span.style.display = 'none';\n i += 1;\n }\n\n this._sizeChanged = true;\n };\n\n SVGTextLottieElement.prototype.sourceRectAtTime = function () {\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\n this.renderInnerContent();\n\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\n return this.bbox;\n };\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\n for (i = 0; i < len; i += 1) {\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\n\n if (glyphElement._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n SVGTextLottieElement.prototype.renderInnerContent = function () {\n this.validateText();\n\n if (!this.data.singleShape || this._mdf) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\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\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\n if (glyphElement) {\n glyphElement.renderFrame();\n }\n\n if (renderedLetter._mdf.m) {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n\n if (renderedLetter._mdf.o) {\n textSpan.setAttribute('opacity', renderedLetter.o);\n }\n\n if (renderedLetter._mdf.sw) {\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter._mdf.sc) {\n textSpan.setAttribute('stroke', renderedLetter.sc);\n }\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\n extendPrototype([IImageElement], ISolidElement);\n\n ISolidElement.prototype.createContent = function () {\n var rect = createNS('rect'); /// /rect.style.width = this.data.sw;\n /// /rect.style.height = this.data.sh;\n /// /rect.style.fill = this.data.sc;\n\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\n NullElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n NullElement.prototype.renderFrame = function () {};\n\n NullElement.prototype.getBaseElement = function () {\n return null;\n };\n\n NullElement.prototype.destroy = function () {};\n\n NullElement.prototype.sourceRectAtTime = function () {};\n\n NullElement.prototype.hide = function () {};\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\n\n function SVGRendererBase() {}\n\n extendPrototype([BaseRenderer], SVGRendererBase);\n\n SVGRendererBase.prototype.createNull = function (data) {\n return new NullElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createShape = function (data) {\n return new SVGShapeElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createText = function (data) {\n return new SVGTextLottieElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createImage = function (data) {\n return new IImageElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createSolid = function (data) {\n return new ISolidElement(data, this.globalData, this);\n };\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\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\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\n if (this.renderConfig.width) {\n this.svgElement.setAttribute('width', this.renderConfig.width);\n }\n\n if (this.renderConfig.height) {\n this.svgElement.setAttribute('height', this.renderConfig.height);\n }\n\n if (this.renderConfig.className) {\n this.svgElement.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.svgElement.setAttribute('id', this.renderConfig.id);\n }\n\n if (this.renderConfig.focusable !== undefined) {\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\n }\n\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio); // 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\n this.animationItem.wrapper.appendChild(this.svgElement); // Mask animation\n\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\n SVGRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.layerElement = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\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\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n SVGRendererBase.prototype.updateContainerSize = function () {};\n\n SVGRendererBase.prototype.findIndexByInd = function (ind) {\n var i = 0;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ind === ind) {\n return i;\n }\n }\n\n return -1;\n };\n\n SVGRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n elements[pos] = true;\n var element = this.createItem(this.layers[pos]);\n elements[pos] = element;\n\n if (getExpressionsPlugin()) {\n if (this.layers[pos].ty === 0) {\n this.globalData.projectInterface.registerComposition(element);\n }\n\n element.initExpressions();\n }\n\n this.appendElementInPos(element, pos);\n\n if (this.layers[pos].tt) {\n var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\n\n if (elementIndex === -1) {\n return;\n }\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\n SVGRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n\n if (element.data.tt) {\n var i = 0;\n var len = this.elements.length;\n\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\n i += 1;\n }\n }\n }\n };\n\n SVGRendererBase.prototype.renderFrame = function (num) {\n if (this.renderedFrame === num || this.destroyed) {\n return;\n }\n\n if (num === null) {\n num = this.renderedFrame;\n } else {\n this.renderedFrame = num;\n } // console.log('-------');\n // console.log('FRAME ',num);\n\n\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\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\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\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\n SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newElement = element.getBaseElement();\n\n if (!newElement) {\n return;\n }\n\n var i = 0;\n var nextElement;\n\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\n i += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(newElement, nextElement);\n } else {\n this.layerElement.appendChild(newElement);\n }\n };\n\n SVGRendererBase.prototype.hide = function () {\n this.layerElement.style.display = 'none';\n };\n\n SVGRendererBase.prototype.show = function () {\n this.layerElement.style.display = 'block';\n };\n\n function ICompElement() {}\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\n\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\n if (this.data.xt || !globalData.progressiveLoad) {\n this.buildAllItems();\n }\n\n this.hide();\n };\n /* ICompElement.prototype.hide = function(){\r\n if(!this.hidden){\r\n this.hideElement();\r\n var i,len = this.elements.length;\r\n for( i = 0; i < len; i+=1 ){\r\n if(this.elements[i]){\r\n this.elements[i].hide();\r\n }\r\n }\r\n }\r\n }; */\n\n\n ICompElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n\n if (!this.isInRange && !this.data.xt) {\n return;\n }\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n\n if (timeRemapped === this.data.op) {\n timeRemapped = this.data.op - 1;\n }\n\n this.renderedFrame = timeRemapped;\n } else {\n this.renderedFrame = num / this.data.sr;\n }\n\n var i;\n var len = this.elements.length;\n\n if (!this.completeLayers) {\n this.checkLayers(this.renderedFrame);\n } // This iteration needs to be backwards because of how expressions connect between each other\n\n\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\n if (this.elements[i]._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n ICompElement.prototype.renderInnerContent = function () {\n var i;\n var len = this.layers.length;\n\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 ICompElement.prototype.setElements = function (elems) {\n this.elements = elems;\n };\n\n ICompElement.prototype.getElements = function () {\n return this.elements;\n };\n\n ICompElement.prototype.destroyElements = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\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\n extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\n\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\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\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\n if (ariaLabel) {\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\n }\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\n extendPrototype([SVGRendererBase], SVGRenderer);\n\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\n ShapeTransformManager.prototype = {\n addTransformSequence: function addTransformSequence(transforms) {\n var i;\n var len = transforms.length;\n var key = '_';\n\n for (i = 0; i < len; i += 1) {\n key += transforms[i].transform.key + '_';\n }\n\n var sequence = this.sequences[key];\n\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\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\n while (i < len && !isFirstFrame) {\n if (sequence.transforms[i].transform.mProps._mdf) {\n _mdf = true;\n break;\n }\n\n i += 1;\n }\n\n if (_mdf) {\n sequence.finalTransform.reset();\n\n for (i = len - 1; i >= 0; i -= 1) {\n sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v);\n }\n }\n\n sequence._mdf = _mdf;\n },\n processSequences: function processSequences(isFirstFrame) {\n var i;\n var len = this.sequenceList.length;\n\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; // 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 /*\r\n var svgString = [\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n ].join('');\r\n var blob = new Blob([svgString], { type: 'image/svg+xml' });\r\n var url = URL.createObjectURL(blob);\r\n */\n\n function createLumaSvgFilter() {\n var _svg = createNS('svg');\n\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\n _svg.appendChild(fil);\n\n _svg.setAttribute('id', id + '_svg');\n\n if (featureSupport.svgLumaHidden) {\n _svg.style.display = 'none';\n }\n\n return _svg;\n }\n\n function loadLuma() {\n if (!lumaBuffer) {\n svg = createLumaSvgFilter();\n document.body.appendChild(svg);\n lumaBuffer = createTag('canvas');\n lumaBufferCtx = lumaBuffer.getContext('2d'); // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n lumaBufferCtx.fillStyle = 'rgba(0,0,0,0)';\n lumaBufferCtx.fillRect(0, 0, 1, 1);\n }\n }\n\n function getLuma(canvas) {\n if (!lumaBuffer) {\n loadLuma();\n }\n\n lumaBuffer.width = canvas.width;\n lumaBuffer.height = canvas.height; // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n return lumaBuffer;\n }\n\n return {\n load: loadLuma,\n get: getLuma\n };\n };\n\n function createCanvas(width, height) {\n if (featureSupport.offscreenCanvas) {\n return new OffscreenCanvas(width, height);\n }\n\n var canvas = createTag('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\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\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\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects[type]) {\n var Effect = registeredEffects[type].effect;\n filterManager = new Effect(elem.effectsManager.effectElements[i], elem);\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n CVEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n CVEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\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\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n hasMasks = true;\n }\n\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\n }\n\n this.hasMasks = hasMasks;\n\n if (hasMasks) {\n this.element.addRenderableComponent(this);\n }\n }\n\n CVMaskElement.prototype.renderFrame = function () {\n if (!this.hasMasks) {\n return;\n }\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\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\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\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\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\n this.element.globalData.renderer.save(true);\n ctx.clip();\n };\n\n CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\n\n CVMaskElement.prototype.destroy = function () {\n this.element = null;\n };\n\n function CVBaseElement() {}\n\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\n if (this.data.tt >= 3 && !document._isProxy) {\n assetLoader.loadLumaCanvas();\n }\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\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); // on the first buffer we store the current state of the global drawing\n\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // 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\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]; // 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\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx);\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // We clear the canvas again\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform); // We draw the mask\n\n var mask = this.comp.getElementById('tp' in this.data ? this.data.tp : this.data.ind - 1);\n mask.renderFrame(true); // We draw the second buffer (that contains the content of this layer)\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0); // 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\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); // we repaint the context with the mask applied to it\n\n this.canvasContext.drawImage(lumaBuffer, 0, 0);\n }\n\n this.canvasContext.globalCompositeOperation = operationsMap[this.data.tt];\n this.canvasContext.drawImage(buffer, 0, 0); // 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\n this.canvasContext.globalCompositeOperation = 'destination-over';\n this.canvasContext.drawImage(this.buffers[0], 0, 0);\n this.canvasContext.setTransform(this.currentTransform); // We reset the globalCompositeOperation to source-over, the standard type of operation\n\n this.canvasContext.globalCompositeOperation = 'source-over';\n }\n },\n renderFrame: function renderFrame(forceRender) {\n if (this.hidden || this.data.hd) {\n return;\n }\n\n if (this.data.td === 1 && !forceRender) {\n return;\n }\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\n if (this.maskManager.hasMasks) {\n this.globalData.renderer.restore(true);\n }\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\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\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\n var i;\n var len = styles.length;\n var styledShape;\n\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\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\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\n CVShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n };\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\n if (data.ty === 'fl' || data.ty === 'st') {\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\n\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\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\n\n if (data.ty === 'st' || data.ty === 'gs') {\n styleElem.lc = lineCapEnum[data.lc || 2];\n styleElem.lj = lineJoinEnum[data.lj || 2];\n\n if (data.lj == 1) {\n // eslint-disable-line eqeqeq\n styleElem.ml = data.ml;\n }\n\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\n\n if (!elementData.w.k) {\n styleElem.wi = elementData.w.v;\n }\n\n if (data.d) {\n var d = new DashProperty(this, data.d, 'canvas', this);\n elementData.d = d;\n\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\n this.stylesList.push(styleElem);\n elementData.style = styleElem;\n return elementData;\n };\n\n CVShapeElement.prototype.createGroupElement = function () {\n var elementData = {\n it: [],\n prevViewData: []\n };\n return elementData;\n };\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\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\n CVShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n };\n\n CVShapeElement.prototype.addTransformToStyleList = function (transform) {\n var i;\n var len = this.stylesList.length;\n\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\n CVShapeElement.prototype.removeTransformFromStyleList = function () {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.pop();\n }\n }\n };\n\n CVShapeElement.prototype.closeStyles = function (styles) {\n var i;\n var len = styles.length;\n\n for (i = 0; i < len; i += 1) {\n styles[i].closed = true;\n }\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\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._shouldRender = shouldRender;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\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\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\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\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\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\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\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n this.removeTransformFromStyleList();\n this.closeStyles(ownStyles);\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\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\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\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\n for (i = 0; i < len; i += 1) {\n currentStyle = this.stylesList[i];\n type = currentStyle.type; // 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\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\n if (type === 'st' || type === 'gs') {\n renderer.ctxStrokeStyle(type === 'st' ? currentStyle.co : currentStyle.grd); // ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\n\n renderer.ctxLineWidth(currentStyle.wi); // ctx.lineWidth = currentStyle.wi;\n\n renderer.ctxLineCap(currentStyle.lc); // ctx.lineCap = currentStyle.lc;\n\n renderer.ctxLineJoin(currentStyle.lj); // ctx.lineJoin = currentStyle.lj;\n\n renderer.ctxMiterLimit(currentStyle.ml || 0); // ctx.miterLimit = currentStyle.ml || 0;\n } else {\n renderer.ctxFillStyle(type === 'fl' ? currentStyle.co : currentStyle.grd); // ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\n }\n\n renderer.ctxOpacity(currentStyle.coOp);\n\n if (type !== 'st' && type !== 'gs') {\n ctx.beginPath();\n }\n\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\n jLen = elems.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (type === 'st' || type === 'gs') {\n ctx.beginPath();\n\n if (currentStyle.da) {\n ctx.setLineDash(currentStyle.da);\n ctx.lineDashOffset = currentStyle[\"do\"];\n }\n }\n\n nodes = elems[j].trNodes;\n kLen = nodes.length;\n\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\n if (type === 'st' || type === 'gs') {\n // ctx.stroke();\n renderer.ctxStroke();\n\n if (currentStyle.da) {\n ctx.setLineDash(this.dashResetter);\n }\n }\n }\n\n if (type !== 'st' && type !== 'gs') {\n // ctx.fill(currentStyle.r);\n this.globalData.renderer.ctxFill(currentStyle.r);\n }\n\n renderer.restore();\n }\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\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\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\n for (j = 0; j < jLen; j += 1) {\n var pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes.v) {\n len = pathNodes._length;\n\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\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\n });\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\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\n styledShape.trNodes = shapeNodes;\n }\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\n for (i = 0; i < len; i += 1) {\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\n }\n }\n };\n\n CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\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\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n };\n\n CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var grd;\n\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\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\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\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\n var i;\n var len = styleData.g.p;\n var cValues = itemData.g.c;\n var opacity = 1;\n\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\n grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\n }\n\n styleElem.grd = grd;\n }\n\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n };\n\n CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || this._isFirstFrame)) {\n styleElem.da = d.dashArray;\n styleElem[\"do\"] = d.dashoffset[0];\n }\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\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n\n if (itemData.w._mdf || this._isFirstFrame) {\n styleElem.wi = itemData.w.v;\n }\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\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\n CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\n\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\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\n this.fill = hasFill;\n var hasStroke = false;\n\n if (documentData.sc) {\n hasStroke = true;\n this.values.stroke = this.buildColor(documentData.sc);\n this.values.sWidth = documentData.sw;\n }\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; // this.tHelper.font = this.values.fValue;\n\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\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\n if (singleShape && letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\n jLen = shapes.length;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n\n if (singleShape) {\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n }\n\n commands = createSizedArray(jLen - 1);\n var commandsCounter = 0;\n\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\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\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\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\n if (singleShape) {\n xPos += letters[i].l;\n xPos += trackingOffset;\n }\n\n if (this.textSpans[cnt]) {\n this.textSpans[cnt].elem = commands;\n } else {\n this.textSpans[cnt] = {\n elem: commands\n };\n }\n\n cnt += 1;\n }\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'); // ctx.lineCap = 'butt';\n\n this.globalData.renderer.ctxLineJoin('miter'); // ctx.lineJoin = 'miter';\n\n this.globalData.renderer.ctxMiterLimit(4); // ctx.miterLimit = 4;\n\n if (!this.data.singleShape) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n }\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\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n\n if (renderedLetter) {\n renderer.save();\n renderer.ctxTransform(renderedLetter.p);\n renderer.ctxOpacity(renderedLetter.o);\n }\n\n if (this.fill) {\n if (renderedLetter && renderedLetter.fc) {\n if (lastFill !== renderedLetter.fc) {\n renderer.ctxFillStyle(renderedLetter.fc);\n lastFill = renderedLetter.fc; // ctx.fillStyle = renderedLetter.fc;\n }\n } else if (lastFill !== this.values.fill) {\n lastFill = this.values.fill;\n renderer.ctxFillStyle(this.values.fill); // ctx.fillStyle = this.values.fill;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\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\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\n this.globalData.canvasContext.closePath();\n renderer.ctxFill(); // this.globalData.canvasContext.fill();\n /// ctx.fillText(this.textSpans[i].val,0,0);\n }\n\n if (this.stroke) {\n if (renderedLetter && renderedLetter.sw) {\n if (lastStrokeW !== renderedLetter.sw) {\n lastStrokeW = renderedLetter.sw;\n renderer.ctxLineWidth(renderedLetter.sw); // ctx.lineWidth = renderedLetter.sw;\n }\n } else if (lastStrokeW !== this.values.sWidth) {\n lastStrokeW = this.values.sWidth;\n renderer.ctxLineWidth(this.values.sWidth); // ctx.lineWidth = this.values.sWidth;\n }\n\n if (renderedLetter && renderedLetter.sc) {\n if (lastStroke !== renderedLetter.sc) {\n lastStroke = renderedLetter.sc;\n renderer.ctxStrokeStyle(renderedLetter.sc); // ctx.strokeStyle = renderedLetter.sc;\n }\n } else if (lastStroke !== this.values.stroke) {\n lastStroke = this.values.stroke;\n renderer.ctxStrokeStyle(this.values.stroke); // ctx.strokeStyle = this.values.stroke;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\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\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\n this.globalData.canvasContext.closePath();\n renderer.ctxStroke(); // this.globalData.canvasContext.stroke();\n /// ctx.strokeText(letters[i].val,0,0);\n }\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\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\n CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\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\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\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\n CVImageElement.prototype.renderInnerContent = function () {\n this.canvasContext.drawImage(this.img, 0, 0);\n };\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\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\n CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVSolidElement.prototype.renderInnerContent = function () {\n // var ctx = this.canvasContext;\n this.globalData.renderer.ctxFillStyle(this.data.sc); // ctx.fillStyle = this.data.sc;\n\n this.globalData.renderer.ctxFillRect(0, 0, this.data.sw, this.data.sh); // ctx.fillRect(0, 0, this.data.sw, this.data.sh);\n //\n };\n\n function CanvasRendererBase() {}\n\n extendPrototype([BaseRenderer], CanvasRendererBase);\n\n CanvasRendererBase.prototype.createShape = function (data) {\n return new CVShapeElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createText = function (data) {\n return new CVTextElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createImage = function (data) {\n return new CVImageElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createSolid = function (data) {\n return new CVSolidElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\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\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\n };\n\n CanvasRendererBase.prototype.ctxOpacity = function (op) {\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\n };\n\n CanvasRendererBase.prototype.ctxFillStyle = function (value) {\n this.canvasContext.fillStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxStrokeStyle = function (value) {\n this.canvasContext.strokeStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxLineWidth = function (value) {\n this.canvasContext.lineWidth = value;\n };\n\n CanvasRendererBase.prototype.ctxLineCap = function (value) {\n this.canvasContext.lineCap = value;\n };\n\n CanvasRendererBase.prototype.ctxLineJoin = function (value) {\n this.canvasContext.lineJoin = value;\n };\n\n CanvasRendererBase.prototype.ctxMiterLimit = function (value) {\n this.canvasContext.miterLimit = value;\n };\n\n CanvasRendererBase.prototype.ctxFill = function (rule) {\n this.canvasContext.fill(rule);\n };\n\n CanvasRendererBase.prototype.ctxFillRect = function (x, y, w, h) {\n this.canvasContext.fillRect(x, y, w, h);\n };\n\n CanvasRendererBase.prototype.ctxStroke = function () {\n this.canvasContext.stroke();\n };\n\n CanvasRendererBase.prototype.reset = function () {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n this.contextData.reset();\n };\n\n CanvasRendererBase.prototype.save = function () {\n this.canvasContext.save();\n };\n\n CanvasRendererBase.prototype.restore = function (actionFlag) {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n if (actionFlag) {\n this.globalData.blendMode = 'source-over';\n }\n\n this.contextData.restore(actionFlag);\n };\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\n if (this.renderConfig.className) {\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\n }\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\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\n CanvasRendererBase.prototype.updateContainerSize = function (width, height) {\n this.reset();\n var elementWidth;\n var elementHeight;\n\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\n this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\n this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;\n }\n\n var elementRel;\n var animationRel;\n\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\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\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\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\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;\r\n for(i=0;i= 0; i -= 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.globalData.canvasContext = null;\n this.animationItem.container = null;\n this.destroyed = true;\n };\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\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; // console.log('--------');\n // console.log('NEW: ',num);\n\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\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\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\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 if (this.renderConfig.clearCanvas !== true) {\n this.restore();\n }\n }\n };\n\n CanvasRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\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){\r\n element.resize(this.globalData.transformCanvas);\r\n } */\n };\n\n CanvasRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n CanvasRendererBase.prototype.hide = function () {\n this.animationItem.container.style.display = 'none';\n };\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\n function CVContextData() {\n this.stack = [];\n this.cArrPos = 0;\n this.cTr = new Matrix();\n var i;\n var len = 15;\n\n for (i = 0; i < len; i += 1) {\n var canvasContext = new CanvasContext();\n this.stack[i] = canvasContext;\n }\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\n CVContextData.prototype.duplicate = function () {\n var newLength = this._length * 2;\n var i = 0;\n\n for (i = this._length; i < newLength; i += 1) {\n this.stack[i] = new CanvasContext();\n }\n\n this._length = newLength;\n };\n\n CVContextData.prototype.reset = function () {\n this.cArrPos = 0;\n this.cTr.reset();\n this.stack[this.cArrPos].opacity = 1;\n };\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\n for (i = 0; i < 16; i += 1) {\n arr[i] = transform[i];\n }\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\n this.nativeContext.setTransform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]);\n\n if (forceRestore || currentContext.opacity !== -1 && this.currentOpacity !== currentContext.opacity) {\n this.nativeContext.globalAlpha = currentContext.opacity;\n this.currentOpacity = currentContext.opacity;\n }\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\n CVContextData.prototype.save = function (saveOnNativeFlag) {\n if (saveOnNativeFlag) {\n this.nativeContext.save();\n }\n\n var props = this.cTr.props;\n\n if (this._length <= this.cArrPos) {\n this.duplicate();\n }\n\n var currentStack = this.stack[this.cArrPos];\n var i;\n\n for (i = 0; i < 16; i += 1) {\n currentStack.transform[i] = props[i];\n }\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\n CVContextData.prototype.setOpacity = function (value) {\n this.stack[this.cArrPos].opacity = value;\n };\n\n CVContextData.prototype.setContext = function (value) {\n this.nativeContext = value;\n };\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\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\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\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\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\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\n CVContextData.prototype.transform = function (props) {\n this.transformMat.cloneFromProps(props); // Taking the last transform value from the stored stack of transforms\n\n var currentTransform = this.cTr; // Applying the last transform value after the new transform to respect the order of transformations\n\n this.transformMat.multiply(currentTransform); // Storing the new transformed value in the stored transform\n\n currentTransform.cloneFromProps(this.transformMat.props);\n var trProps = currentTransform.props; // Applying the new transform to the canvas\n\n this.nativeContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\n };\n\n CVContextData.prototype.opacity = function (op) {\n var currentOpacity = this.stack[this.cArrPos].opacity;\n currentOpacity *= op < 0 ? 0 : op;\n\n if (this.stack[this.cArrPos].opacity !== currentOpacity) {\n if (this.currentOpacity !== op) {\n this.nativeContext.globalAlpha = op;\n this.currentOpacity = op;\n }\n\n this.stack[this.cArrPos].opacity = currentOpacity;\n }\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\n this.nativeContext.fill(rule);\n };\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\n this.nativeContext.fillRect(x, y, w, h);\n };\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\n if (this.appliedLineWidth !== this.currentLineWidth) {\n this.appliedLineWidth = this.currentLineWidth;\n this.nativeContext.lineWidth = this.appliedLineWidth;\n }\n\n if (this.appliedLineCap !== this.currentLineCap) {\n this.appliedLineCap = this.currentLineCap;\n this.nativeContext.lineCap = this.appliedLineCap;\n }\n\n if (this.appliedLineJoin !== this.currentLineJoin) {\n this.appliedLineJoin = this.currentLineJoin;\n this.nativeContext.lineJoin = this.appliedLineJoin;\n }\n\n if (this.appliedMiterLimit !== this.currentMiterLimit) {\n this.appliedMiterLimit = this.currentMiterLimit;\n this.nativeContext.miterLimit = this.appliedMiterLimit;\n }\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\n extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\n\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\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\n CVCompElement.prototype.destroy = function () {\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n\n this.layers = null;\n this.elements = null;\n };\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\n if (this.animationItem.wrapper) {\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\n }\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\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\n extendPrototype([CanvasRendererBase], CanvasRenderer);\n\n CanvasRenderer.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function HBaseElement() {}\n\n HBaseElement.prototype = {\n checkBlendMode: function checkBlendMode() {},\n initRendererElement: function initRendererElement() {\n this.baseElement = createTag(this.data.tg || 'div');\n\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\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\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n }\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\n if (this.finalTransform._matMdf) {\n var matrixValue = this.finalTransform.mat.toCSS();\n transformedElementStyle.transform = matrixValue;\n transformedElementStyle.webkitTransform = matrixValue;\n }\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\n this.renderTransform();\n this.renderRenderable();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.layerElement = null;\n this.transformedElement = null;\n\n if (this.matteElement) {\n this.matteElement = null;\n }\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\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\n\n HSolidElement.prototype.createContent = function () {\n var rect;\n\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\n this.layerElement.appendChild(rect);\n };\n\n function HShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.shapesContainer = createNS('g');\n this.initElement(data, globalData, comp); // 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\n this.prevViewData = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n }\n\n extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\n HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\n\n HShapeElement.prototype.createContent = function () {\n var cont;\n this.baseElement.style.fontSize = 0;\n\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\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\n this.filterUniqueShapes();\n this.shapeCont = cont;\n };\n\n HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\n var i;\n var len = transformers.length;\n\n for (i = 0; i < len; i += 1) {\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\n }\n\n return point;\n };\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\n if (len <= 1) {\n return;\n }\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\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\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\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\n HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\n\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\n a |= 0; // eslint-disable-line no-bitwise\n\n c |= 0; // eslint-disable-line no-bitwise\n\n if (a === 0 && b === 0) {//\n } else if (a === 0) {\n t = -c / b;\n\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\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\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\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\n HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\n var i;\n var len = itemsData.length;\n\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\n HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\n var width = 0;\n\n if (widthProperty.keyframes) {\n for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\n var kfw = widthProperty.keyframes[i].s;\n\n if (kfw > width) {\n width = kfw;\n }\n }\n\n width *= widthProperty.mult;\n } else {\n width = widthProperty.v * widthProperty.mult;\n }\n\n boundingBox.x -= width;\n boundingBox.xMax += width;\n boundingBox.y -= width;\n boundingBox.yMax += width;\n };\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\n HShapeElement.prototype.renderInnerContent = function () {\n this._renderShapeFrame();\n\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; // var tempBoundingBox = this.shapeCont.getBBox();\n\n if (this.currentBoxContains(tempBoundingBox)) {\n return;\n }\n\n var changed = false;\n\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\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\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\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\n\n HTextElement.prototype.createContent = function () {\n this.isMasked = this.checkMasks();\n\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\n this.checkParenting();\n };\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\n if (documentData.sc) {\n innerElemStyle.stroke = this.buildColor(documentData.sc);\n innerElemStyle.strokeWidth = documentData.sw + 'px';\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (!this.globalData.fontManager.chars) {\n innerElemStyle.fontSize = documentData.finalSize + 'px';\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\n\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\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\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\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 } // tSpan.setAttribute('visibility', 'hidden');\n\n\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\n if (charData) {\n shapeData = charData.data;\n } else {\n shapeData = null;\n }\n\n matrixHelper.reset();\n\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\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent);\n\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\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\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\n if (!this.isMasked) {\n this.textSpans[cnt] = tParent;\n } else {\n this.textSpans[cnt] = tSpan;\n }\n\n this.textSpans[cnt].style.display = 'block';\n this.textPaths[cnt] = tSpan;\n cnt += 1;\n }\n\n while (cnt < this.textSpans.length) {\n this.textSpans[cnt].style.display = 'none';\n cnt += 1;\n }\n };\n\n HTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var svgStyle;\n\n if (this.data.singleShape) {\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\n return;\n }\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\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\n return;\n }\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\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\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 } /// /textSpan.setAttribute('opacity',renderedLetter.o);\n\n\n textSpan.style.opacity = renderedLetter.o;\n\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\n textPath.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\n textPath.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\n textPath.setAttribute('fill', renderedLetter.fc);\n textPath.style.color = renderedLetter.fc;\n }\n }\n }\n\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\n var boundingBox = this.innerElem.getBBox();\n\n if (this.currentBBox.w !== boundingBox.width) {\n this.currentBBox.w = boundingBox.width;\n this.svgElement.setAttribute('width', boundingBox.width);\n }\n\n if (this.currentBBox.h !== boundingBox.height) {\n this.currentBBox.h = boundingBox.height;\n this.svgElement.setAttribute('height', boundingBox.height);\n }\n\n var margin = 1;\n\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\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\n if (data.ks.a) {\n this.a = getProp(this, data.ks.a, 1, 0, this);\n }\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\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\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; // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\n\n this.finalTransform = {\n mProp: this\n };\n }\n\n extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\n\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\n for (i = 0; i < len; i += 1) {\n // [perspectiveElem,container]\n comp = this.comp.threeDElements[i];\n\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\n HCameraElement.prototype.createElements = function () {};\n\n HCameraElement.prototype.hide = function () {};\n\n HCameraElement.prototype.renderFrame = function () {\n var _mdf = this._isFirstFrame;\n var i;\n var len;\n\n if (this.hierarchy) {\n len = this.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\n }\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\n if (this.hierarchy) {\n len = this.hierarchy.length - 1;\n\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\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\n if (this.a) {\n var diffVector;\n\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\n var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2)); // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\n\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\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\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\n for (i = 0; i < len; i += 1) {\n comp = this.comp.threeDElements[i];\n\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\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\n this.mat.clone(this._prevMat);\n }\n }\n\n this._isFirstFrame = false;\n };\n\n HCameraElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n HCameraElement.prototype.destroy = function () {};\n\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\n extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\n\n HImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n var img = new Image();\n\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\n img.crossOrigin = 'anonymous';\n img.src = assetPath;\n\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\n extendPrototype([BaseRenderer], HybridRendererBase);\n HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\n\n HybridRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newDOMElement = element.getBaseElement();\n\n if (!newDOMElement) {\n return;\n }\n\n var layer = this.layers[pos];\n\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\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\n i += 1;\n }\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\n HybridRendererBase.prototype.createShape = function (data) {\n if (!this.supports3d) {\n return new SVGShapeElement(data, this.globalData, this);\n }\n\n return new HShapeElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createText = function (data) {\n if (!this.supports3d) {\n return new SVGTextLottieElement(data, this.globalData, this);\n }\n\n return new HTextElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createCamera = function (data) {\n this.camera = new HCameraElement(data, this.globalData, this);\n return this.camera;\n };\n\n HybridRendererBase.prototype.createImage = function (data) {\n if (!this.supports3d) {\n return new IImageElement(data, this.globalData, this);\n }\n\n return new HImageElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createSolid = function (data) {\n if (!this.supports3d) {\n return new ISolidElement(data, this.globalData, this);\n }\n\n return new HSolidElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\n return this.threeDElements[i].perspectiveElem;\n }\n\n i += 1;\n }\n\n return null;\n };\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\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\n perspectiveElem.appendChild(container); // this.resizerElem.appendChild(perspectiveElem);\n\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\n HybridRendererBase.prototype.build3dContainers = function () {\n var i;\n var len = this.layers.length;\n var lastThreeDContainerData;\n var currentContainer = '';\n\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\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\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n }\n }\n\n len = this.threeDElements.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\n }\n };\n\n HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (pos <= this.threeDElements[i].endPos) {\n var j = this.threeDElements[i].startPos;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.threeDElements[i].container.insertBefore(elem, nextElement);\n } else {\n this.threeDElements[i].container.appendChild(elem);\n }\n\n break;\n }\n\n i += 1;\n }\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\n if (this.renderConfig.className) {\n resizerElem.setAttribute('class', this.renderConfig.className);\n }\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; // Mask animation\n\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\n HybridRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.animationItem.container = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\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\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\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\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\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\n HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\n\n HybridRendererBase.prototype.hide = function () {\n this.resizerElem.style.display = 'none';\n };\n\n HybridRendererBase.prototype.show = function () {\n this.resizerElem.style.display = 'block';\n };\n\n HybridRendererBase.prototype.initItems = function () {\n this.buildAllItems();\n\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\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\n HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n var floatingContainer = createTag('div');\n\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\n extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\n HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\n\n HCompElement.prototype.createContainerElements = function () {\n this._createBaseContainerElements(); // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\n\n\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\n HCompElement.prototype.addTo3dContainer = function (elem, pos) {\n var j = 0;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(elem, nextElement);\n } else {\n this.layerElement.appendChild(elem);\n }\n };\n\n HCompElement.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\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\n extendPrototype([HybridRendererBase], HybridRenderer);\n\n HybridRenderer.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\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\n while (i < len) {\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\n return comp.elements[i].layerInterface;\n }\n\n i += 1;\n }\n\n return null; // return {active:false};\n }\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(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$2 = function _typeof(obj) { return typeof obj; }; } else { _typeof$2 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$2(obj); }\n\n /* eslint-disable */\n\n /*\r\n Copyright 2014 David Bau.\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining\r\n a copy of this software and associated documentation files (the\r\n \"Software\"), to deal in the Software without restriction, including\r\n without limitation the rights to use, copy, modify, merge, publish,\r\n distribute, sublicense, and/or sell copies of the Software, and to\r\n permit persons to whom the Software is furnished to do so, subject to\r\n the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\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 // seedrandom()\n // This is the seedrandom function described above.\n //\n\n function seedrandom(seed, options, callback) {\n var key = [];\n options = options === true ? {\n entropy: true\n } : options || {}; // Flatten the seed string or build one from local entropy if needed.\n\n var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key); // Use the seed to initialize an ARC4 generator.\n\n var arc4 = new ARC4(key); // 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\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\n while (n < significance) {\n // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n\n d *= width; // denominator and generating a\n\n x = arc4.g(1); // new least-significant-byte.\n }\n\n while (n >= overflow) {\n // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n\n d /= 2; // right using integer math until\n\n x >>>= 1; // we have exactly the desired bits.\n }\n\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function () {\n return arc4.g(4) | 0;\n };\n\n prng.quick = function () {\n return arc4.g(4) / 0x100000000;\n };\n\n prng[\"double\"] = prng; // Mix the randomness into accumulated entropy.\n\n mixkey(tostring(arc4.S), pool); // Calling convention: what to return as a function of prng, seed, is_math.\n\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 } // Only provide the .state method if requested via options.state.\n\n\n prng.state = function () {\n return copy(arc4, {});\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\n\n if (is_math_call) {\n math[rngname] = prng;\n return seed;\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\n math['seed' + rngname] = seedrandom; //\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\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 = []; // The empty key [] is treated as [0].\n\n if (!keylen) {\n key = [keylen++];\n } // Set up S using the standard key scheduling algorithm.\n\n\n while (i < width) {\n s[i] = i++;\n }\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 } // The \"g\" method returns the next (count) outputs as one number.\n\n\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\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\n me.i = i;\n me.j = j;\n return r; // 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 // copy()\n // Copies internal state of ARC4 to or from a plain object.\n //\n\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 // flatten()\n // Converts an object tree to nested arrays of strings.\n //\n\n\n function flatten(obj, depth) {\n var result = [],\n typ = _typeof$2(obj),\n prop;\n\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\n return result.length ? result : typ == 'string' ? obj : obj + '\\0';\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\n\n function mixkey(seed, key) {\n var stringseed = seed + '',\n smear,\n j = 0;\n\n while (j < stringseed.length) {\n key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\n }\n\n return tostring(key);\n } //\n // autoseed()\n // Returns an object for autoseeding, using window.crypto and Node crypto\n // module if available.\n //\n\n\n function autoseed() {\n try {\n if (nodecrypto) {\n return tostring(nodecrypto.randomBytes(width));\n }\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 // tostring()\n // Converts an array of charcodes to a string\n //\n\n\n function tostring(a) {\n return String.fromCharCode.apply(0, a);\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\n\n mixkey(math.random(), pool); //\n // Nodejs and AMD support: export the implementation as a module using\n // either convention.\n //\n // End anonymous scope, and pass initial values.\n }\n\n ;\n\n function initialize$2(BMMath) {\n seedRandom([], BMMath);\n }\n\n var propTypes = {\n SHAPE: 'shape'\n };\n\n function _typeof$1(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$1 = function _typeof(obj) { return typeof obj; }; } else { _typeof$1 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$1(obj); }\n\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\n function resetFrame() {\n _lottieGlobal = {};\n }\n\n function $bm_isInstanceOfArray(arr) {\n return arr.constructor === Array || arr.constructor === Float32Array;\n }\n\n function isNumerable(tOfV, v) {\n return tOfV === 'number' || v instanceof Number || tOfV === 'boolean' || tOfV === 'string';\n }\n\n function $bm_neg(a) {\n var tOfA = _typeof$1(a);\n\n if (tOfA === 'number' || a instanceof Number || tOfA === 'boolean') {\n return -a;\n }\n\n if ($bm_isInstanceOfArray(a)) {\n var i;\n var lenA = a.length;\n var retArr = [];\n\n for (i = 0; i < lenA; i += 1) {\n retArr[i] = -a[i];\n }\n\n return retArr;\n }\n\n if (a.propType) {\n return a.v;\n }\n\n return -a;\n }\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\n function sum(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b) || tOfA === 'string' || tOfB === 'string') {\n return a + b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] += b;\n return a;\n }\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\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\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\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n var add = sum;\n\n function sub(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n if (tOfA === 'string') {\n a = parseInt(a, 10);\n }\n\n if (tOfB === 'string') {\n b = parseInt(b, 10);\n }\n\n return a - b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] -= b;\n return a;\n }\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\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\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\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n function mul(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a * b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] * b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a * b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function div(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a / b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] / b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a / b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function mod(a, b) {\n if (typeof a === 'string') {\n a = parseInt(a, 10);\n }\n\n if (typeof b === 'string') {\n b = parseInt(b, 10);\n }\n\n return a % b;\n }\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\n function clamp(num, min, max) {\n if (min > max) {\n var mm = max;\n max = min;\n min = mm;\n }\n\n return Math.min(Math.max(num, min), max);\n }\n\n function radiansToDegrees(val) {\n return val / degToRads;\n }\n\n var radians_to_degrees = radiansToDegrees;\n\n function degreesToRadians(val) {\n return val * degToRads;\n }\n\n var degrees_to_radians = radiansToDegrees;\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\n\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\n if (!arr2) {\n arr2 = helperLengthArray;\n }\n\n var i;\n var len = Math.min(arr1.length, arr2.length);\n var addedLength = 0;\n\n for (i = 0; i < len; i += 1) {\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\n }\n\n return Math.sqrt(addedLength);\n }\n\n function normalize(vec) {\n return div(vec, length(vec));\n }\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\n if (max === min) {\n h = 0; // achromatic\n\n s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n\n case g:\n h = (b - r) / d + 2;\n break;\n\n case b:\n h = (r - g) / d + 4;\n break;\n\n default:\n break;\n }\n\n h /= 6;\n }\n\n return [h, s, l, val[3]];\n }\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\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\n if (s === 0) {\n r = l; // achromatic\n\n b = l; // achromatic\n\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\n return [r, g, b, val[3]];\n }\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\n if (tMax < tMin) {\n var _tMin = tMax;\n tMax = tMin;\n tMin = _tMin;\n }\n\n if (t <= tMin) {\n return value1;\n }\n\n if (t >= tMax) {\n return value2;\n }\n\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\n\n if (!value1.length) {\n return value1 + (value2 - value1) * perc;\n }\n\n var i;\n var len = value1.length;\n var arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\n }\n\n return arr;\n }\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\n if (max.length) {\n var i;\n var len = max.length;\n\n if (!min) {\n min = createTypedArray('float32', len);\n }\n\n var arr = createTypedArray('float32', len);\n var rnd = BMMath.random();\n\n for (i = 0; i < len; i += 1) {\n arr[i] = min[i] + rnd * (max[i] - min[i]);\n }\n\n return arr;\n }\n\n if (min === undefined) {\n min = 0;\n }\n\n var rndm = BMMath.random();\n return min + rndm * (max - min);\n }\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\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\n return path;\n }\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\n if (!elem.globalData.renderConfig.runExpressions) {\n return noOp;\n }\n\n var val = data.x;\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\n\n var _needsRandom = val.indexOf('random') !== -1;\n\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.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; // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\n\n var numKeys = property.kf ? data.k.length : 0;\n var active = !this.data || this.data.hd !== true;\n\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\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(); // addedAmps[j] += -amp + amp*2*rnd;\n }\n\n iWiggle += 1;\n } // var rnd2 = BMMath.random();\n\n\n var periods = time * freq;\n var perc = periods - Math.floor(periods);\n var arr = createTypedArray('float32', lenWiggle);\n\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; // 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\n return arr;\n }\n\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\n }.bind(this);\n\n if (thisProperty.loopIn) {\n loopIn = thisProperty.loopIn.bind(thisProperty);\n loop_in = loopIn;\n }\n\n if (thisProperty.loopOut) {\n loopOut = thisProperty.loopOut.bind(thisProperty);\n loop_out = loopOut;\n }\n\n if (thisProperty.smooth) {\n smooth = thisProperty.smooth.bind(thisProperty);\n }\n\n function loopInDuration(type, duration) {\n return loopIn(type, duration, true);\n }\n\n function loopOutDuration(type, duration) {\n return loopOut(type, duration, true);\n }\n\n if (this.getValueAtTime) {\n valueAtTime = this.getValueAtTime.bind(this);\n }\n\n if (this.getVelocityAtTime) {\n velocityAtTime = this.getVelocityAtTime.bind(this);\n }\n\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\n\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\n function easeOut(t, tMin, tMax, val1, val2) {\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\n }\n\n function easeIn(t, tMin, tMax, val1, val2) {\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\n }\n\n function ease(t, tMin, tMax, val1, val2) {\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\n }\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\n if (t > 1) {\n t = 1;\n } else if (t < 0) {\n t = 0;\n }\n\n var mult = fn(t);\n\n if ($bm_isInstanceOfArray(val1)) {\n var iKey;\n var lenKey = val1.length;\n var arr = createTypedArray('float32', lenKey);\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\n }\n\n return arr;\n }\n\n return (val2 - val1) * mult + val1;\n }\n\n function nearestKey(time) {\n var iKey;\n var lenKey = data.k.length;\n var index;\n var keyTime;\n\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\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\n break;\n }\n }\n\n if (index === -1) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n }\n }\n\n var obKey = {};\n obKey.index = index;\n obKey.time = keyTime / elem.comp.globalData.frameRate;\n return obKey;\n }\n\n function key(ind) {\n var obKey;\n var iKey;\n var lenKey;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n throw new Error('The property has no keyframe at index ' + ind);\n }\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\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n obKey[iKey] = arr[iKey];\n obKey.value[iKey] = arr[iKey];\n }\n\n return obKey;\n }\n\n function framesToTime(fr, fps) {\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return fr / fps;\n }\n\n function timeToFrames(t, fps) {\n if (!t && t !== 0) {\n t = time;\n }\n\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return t * fps;\n }\n\n function seedRandom(seed) {\n BMMath.seedrandom(randSeed + seed);\n }\n\n function sourceRectAtTime() {\n return elem.sourceRectAtTime();\n }\n\n function substring(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substring(init);\n }\n\n return value.substring(init, end);\n }\n\n return '';\n }\n\n function substr(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substr(init);\n }\n\n return value.substr(init, end);\n }\n\n return '';\n }\n\n function posterizeTime(framesPerSecond) {\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\n value = valueAtTime(time);\n }\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\n function executeExpression(_value) {\n // globalData.pushExpression();\n value = _value;\n\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n return value;\n }\n\n if (this.propType === 'textSelector') {\n textIndex = this.textIndex;\n textTotal = this.textTotal;\n selectorValue = this.selectorValue;\n }\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\n if (!transform) {\n transform = elem.layerInterface('ADBE Transform Group');\n $bm_transform = transform;\n\n if (transform) {\n anchorPoint = transform.anchorPoint;\n /* position = transform.position;\r\n rotation = transform.rotation;\r\n scale = transform.scale; */\n }\n }\n\n if (elemType === 4 && !content) {\n content = thisLayer('ADBE Root Vectors Group');\n }\n\n if (!effect) {\n effect = thisLayer(4);\n }\n\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n\n if (hasParent && !parent) {\n parent = elem.hierarchy[0].layerInterface;\n }\n\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\n\n if (_needsRandom) {\n seedRandom(randSeed + time);\n }\n\n if (needsVelocity) {\n velocity = velocityAtTime(time);\n }\n\n expression_function();\n this.frameExpressionId = elem.globalData.frameId; // 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\n scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\n return scoped_bm_rt;\n } // Bundlers will see these as dead code and unless we reference them\n\n\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\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\n function initExpressions(animation) {\n var stackCount = 0;\n var registers = [];\n\n function pushExpression() {\n stackCount += 1;\n }\n\n function popExpression() {\n stackCount -= 1;\n\n if (stackCount === 0) {\n releaseInstances();\n }\n }\n\n function registerExpressionProperty(expression) {\n if (registers.indexOf(expression) === -1) {\n registers.push(expression);\n }\n }\n\n function releaseInstances() {\n var i;\n var len = registers.length;\n\n for (i = 0; i < len; i += 1) {\n registers[i].release();\n }\n\n registers.length = 0;\n }\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\n return ob;\n }();\n\n var MaskManagerInterface = function () {\n function MaskInterface(mask, data) {\n this._mask = mask;\n this._data = data;\n }\n\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n get: function get() {\n if (this._mask.prop.k) {\n this._mask.prop.getValue();\n }\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\n return this._mask.op.v * 100;\n }\n });\n\n var MaskManager = function MaskManager(maskManager) {\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\n\n var i;\n var len = maskManager.viewData.length;\n\n for (i = 0; i < len; i += 1) {\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\n }\n\n var maskFunction = function maskFunction(name) {\n i = 0;\n\n while (i < len) {\n if (maskManager.masksProperties[i].nm === name) {\n return _masksInterfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n return maskFunction;\n };\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\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\n expressionValue.key = function (pos) {\n if (!expressionValue.numKeys) {\n return 0;\n }\n\n var value = '';\n\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\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\n\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\n expressionValue.valueAtTime = property.getValueAtTime;\n expressionValue.speedAtTime = property.getSpeedAtTime;\n expressionValue.velocityAtTime = property.getVelocityAtTime;\n expressionValue.propertyGroup = property.propertyGroup;\n }\n\n function UnidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultUnidimensionalValue;\n }\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\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n val = property.v * mult;\n\n if (expressionValue.value !== val) {\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n }\n\n return expressionValue;\n };\n }\n\n function MultidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultMultidimensionalValue;\n }\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\n for (var i = 0; i < len; i += 1) {\n arrValue[i] = property.v[i] * mult;\n expressionValue[i] = arrValue[i];\n }\n\n return expressionValue;\n };\n } // TODO: try to avoid using this getter\n\n\n function defaultGetter() {\n return defaultUnidimensionalValue;\n }\n\n return function (property) {\n if (!property) {\n return defaultGetter;\n }\n\n if (property.propType === 'unidimensional') {\n return UnidimensionalPropertyInterface(property);\n }\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\n case 'rotation':\n case 'Rotation':\n case 'ADBE Rotation':\n case 'ADBE Rotate Z':\n case 10:\n return _thisFunction.rotation;\n\n case 'ADBE Rotate X':\n return _thisFunction.xRotation;\n\n case 'ADBE Rotate Y':\n return _thisFunction.yRotation;\n\n case 'position':\n case 'Position':\n case 'ADBE Position':\n case 2:\n return _thisFunction.position;\n\n case 'ADBE Position_0':\n return _thisFunction.xPosition;\n\n case 'ADBE Position_1':\n return _thisFunction.yPosition;\n\n case 'ADBE Position_2':\n return _thisFunction.zPosition;\n\n case 'anchorPoint':\n case 'AnchorPoint':\n case 'Anchor Point':\n case 'ADBE AnchorPoint':\n case 1:\n return _thisFunction.anchorPoint;\n\n case 'opacity':\n case 'Opacity':\n case 11:\n return _thisFunction.opacity;\n\n default:\n return null;\n }\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\n var _px;\n\n var _py;\n\n var _pz;\n\n var _transformFactory;\n\n if (transform.p) {\n _transformFactory = ExpressionPropertyInterface(transform.p);\n } else {\n _px = ExpressionPropertyInterface(transform.px);\n _py = ExpressionPropertyInterface(transform.py);\n\n if (transform.pz) {\n _pz = ExpressionPropertyInterface(transform.pz);\n }\n }\n\n Object.defineProperty(_thisFunction, 'position', {\n get: function get() {\n if (transform.p) {\n return _transformFactory();\n }\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\n if (time !== undefined) {\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\n\n propMatrix.clone(toWorldMat);\n } else {\n var transformMat = this._elem.finalTransform.mProp;\n transformMat.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat;\n }\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\n function toWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.applyPoint(toWorldMat, arr);\n }\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\n function fromWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.invertPoint(toWorldMat, arr);\n }\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\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\n }\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\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.inversePoint(arr);\n }\n\n function fromComp(arr) {\n var toWorldMat = new Matrix();\n toWorldMat.reset();\n\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\n\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n function sampleImage() {\n return [1, 1, 1, 1];\n }\n\n return function (elem) {\n var transformInterface;\n\n function _registerMaskInterface(maskManager) {\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\n }\n\n function _registerEffectsInterface(effects) {\n _thisLayerFunction.effect = effects;\n }\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\n case 1:\n case 6:\n case 'Transform':\n case 'transform':\n case 'ADBE Transform Group':\n return transformInterface;\n\n case 4:\n case 'ADBE Effect Parade':\n case 'effects':\n case 'Effects':\n return _thisLayerFunction.effect;\n\n case 'ADBE Text Properties':\n return _thisLayerFunction.textInterface;\n\n default:\n return null;\n }\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\n if (val <= 0) {\n return interfaceFunction;\n }\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\n function _propertyGroup(val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return propertyGroup(val - 1);\n }\n\n return _propertyGroup;\n };\n }();\n\n var EffectsExpressionInterface = function () {\n var ob = {\n createEffectsInterface: createEffectsInterface\n };\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\n for (i = 0; i < len; i += 1) {\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\n }\n\n var effects = elem.data.ef || [];\n\n var groupInterface = function groupInterface(name) {\n i = 0;\n len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n return effectElements[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n Object.defineProperty(groupInterface, 'numProperties', {\n get: function get() {\n return effects.length;\n }\n });\n return groupInterface;\n }\n\n return null;\n }\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\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\n return effectElements[i]();\n }\n\n i += 1;\n }\n\n throw new Error();\n }\n\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\n\n var effectElements = [];\n var i;\n var len = data.ef.length;\n\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\n if (data.mn === 'ADBE Color Control') {\n Object.defineProperty(groupInterface, 'color', {\n get: function get() {\n return effectElements[0]();\n }\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\n function createValueInterface(element, type, elem, propertyGroup) {\n var expressionProperty = ExpressionPropertyInterface(element.p);\n\n function interfaceFunction() {\n if (type === 10) {\n return elem.comp.compInterface(element.p.v);\n }\n\n return expressionProperty();\n }\n\n if (element.p.setGroupProperty) {\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\n }\n\n return interfaceFunction;\n }\n\n return ob;\n }();\n\n var ShapePathInterface = function () {\n return function pathInterfaceFactory(shape, view, propertyGroup) {\n var prop = view.sh;\n\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\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\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\n return prop;\n }\n },\n shape: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\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\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') {// 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\n return arr;\n }\n\n function contentsInterfaceFactory(shape, view, propertyGroup) {\n var interfaces;\n\n var interfaceFunction = function _interfaceFunction(value) {\n var i = 0;\n var len = interfaces.length;\n\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\n i += 1;\n }\n\n if (typeof value === 'number') {\n return interfaces[value - 1];\n }\n\n return null;\n };\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\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\n default:\n return interfaceFunction.transform;\n }\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 }); // interfaceFunction.content = interfaceFunction;\n\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\n function fillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\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\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Start Point' || val === 'start point') {\n return interfaceFunction.startPoint;\n }\n\n if (val === 'End Point' || val === 'end point') {\n return interfaceFunction.endPoint;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\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\n function defaultInterfaceFactory() {\n function interfaceFunction() {\n return null;\n }\n\n return interfaceFunction;\n }\n\n function strokeInterfaceFactory(shape, view, propertyGroup) {\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\n\n function addPropertyToDashOb(i) {\n Object.defineProperty(dashOb, shape.d[i].nm, {\n get: ExpressionPropertyInterface(view.d.dataProps[i].p)\n });\n }\n\n var i;\n var len = shape.d ? shape.d.length : 0;\n var dashOb = {};\n\n for (i = 0; i < len; i += 1) {\n addPropertyToDashOb(i);\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\n }\n\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n if (val === 'Stroke Width' || val === 'stroke width') {\n return interfaceFunction.strokeWidth;\n }\n\n return null;\n }\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\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\n if (val === shape.s.ix) {\n return interfaceFunction.start;\n }\n\n if (val === shape.o.ix) {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\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\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\n if (shape.o.ix === value || value === 'Opacity') {\n return interfaceFunction.opacity;\n }\n\n if (shape.p.ix === value || value === 'Position') {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n return interfaceFunction.rotation;\n }\n\n if (shape.s.ix === value || value === 'Scale') {\n return interfaceFunction.scale;\n }\n\n if (shape.sk && shape.sk.ix === value || value === 'Skew') {\n return interfaceFunction.skew;\n }\n\n if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\n return interfaceFunction.skewAxis;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\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\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\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\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.s.ix === value) {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\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\n function starInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.rotation;\n }\n\n if (shape.pt.ix === value) {\n return interfaceFunction.points;\n }\n\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n return interfaceFunction.outerRadius;\n }\n\n if (shape.os.ix === value) {\n return interfaceFunction.outerRoundness;\n }\n\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n return interfaceFunction.innerRadius;\n }\n\n if (shape.is && shape.is.ix === value) {\n return interfaceFunction.innerRoundness;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\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\n if (shape.ir) {\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\n }\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\n function rectInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.roundness;\n }\n\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\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\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\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\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\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.c.ix === value || value === 'Copies') {\n return interfaceFunction.copies;\n }\n\n if (shape.o.ix === value || value === 'Offset') {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\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\n return function (shapes, view, propertyGroup) {\n var interfaces;\n\n function _interfaceFunction(value) {\n if (typeof value === 'number') {\n value = value === undefined ? 1 : value;\n\n if (value === 0) {\n return propertyGroup;\n }\n\n return interfaces[value - 1];\n }\n\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function parentGroupWrapper() {\n return propertyGroup;\n }\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\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Text Document':\n return _thisLayerFunction.sourceText;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\n get: function get() {\n elem.textProperty.getValue();\n var stringValue = elem.textProperty.currentData.t;\n\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\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\n\n Object.defineProperty(_sourceText, 'style', {\n get: function get() {\n return {\n fillColor: elem.textProperty.currentData.fc\n };\n }\n });\n }\n\n return _sourceText;\n }\n });\n return _thisLayerFunction;\n };\n }();\n\n function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n var FootageInterface = function () {\n var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\n var currentPropertyName = '';\n var currentProperty = elem.getFootageData();\n\n function init() {\n currentPropertyName = '';\n currentProperty = elem.getFootageData();\n return searchProperty;\n }\n\n function searchProperty(value) {\n if (currentProperty[value]) {\n currentPropertyName = value;\n currentProperty = currentProperty[value];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n var propertyNameIndex = value.indexOf(currentPropertyName);\n\n if (propertyNameIndex !== -1) {\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\n currentProperty = currentProperty[index];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n return '';\n }\n\n return init;\n };\n\n var dataInterfaceFactory = function dataInterfaceFactory(elem) {\n function interfaceFunction(value) {\n if (value === 'Outline') {\n return interfaceFunction.outlineInterface();\n }\n\n return null;\n }\n\n interfaceFunction._name = 'Outline';\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\n return interfaceFunction;\n };\n\n return function (elem) {\n function _interfaceFunction(value) {\n if (value === 'Data') {\n return _interfaceFunction.dataInterface;\n }\n\n return null;\n }\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\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\n function getValueAtTime(frameNum) {\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\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\n return this._cachingAtTime.value;\n }\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\n if (v1.length) {\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n speed += Math.pow(v2[i] - v1[i], 2);\n }\n\n speed = Math.sqrt(speed) * 100;\n } else {\n speed = 0;\n }\n\n return speed;\n }\n\n function getVelocityAtTime(frameNum) {\n if (this.vel !== undefined) {\n return this.vel;\n }\n\n var delta = -0.001; // frameNum += this.elem.data.st;\n\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var velocity;\n\n if (v1.length) {\n velocity = createTypedArray('float32', v1.length);\n var i;\n\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\n return velocity;\n }\n\n function getStaticValueAtTime() {\n return this.pv;\n }\n\n function setGroupProperty(propertyGroup) {\n this.propertyGroup = propertyGroup;\n }\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\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\n if (currentFrame <= lastKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var firstKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\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\n firstKeyFrame = lastKeyFrame - cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\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\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\n }\n\n return ret;\n }\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\n if (this.pv.length) {\n ret = new Array(lastValue.length);\n len = ret.length;\n\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\n return ret;\n }\n\n return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\n }\n\n return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function loopIn(type, duration, durationFlag) {\n if (!this.k) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var firstKeyFrame = keyframes[0].t;\n\n if (currentFrame >= firstKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var lastKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\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\n lastKeyFrame = firstKeyFrame + cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\n\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\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\n }\n\n return ret;\n }\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\n if (this.pv.length) {\n ret = new Array(firstValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return ret;\n }\n\n return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function smooth(width, samples) {\n if (!this.k) {\n return this.pv;\n }\n\n width = (width || 0.4) * 0.5;\n samples = Math.floor(samples || 5);\n\n if (samples <= 1) {\n return this.pv;\n }\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\n if (this.pv.length) {\n value = createTypedArray('float32', this.pv.length);\n } else {\n value = 0;\n }\n\n var sampleValue;\n\n while (i < samples) {\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\n\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\n i += 1;\n }\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\n return value;\n }\n\n function getTransformValueAtTime(time) {\n if (!this._transformCachingAtTime) {\n this._transformCachingAtTime = {\n v: new Matrix()\n };\n } /// /\n\n\n var matrix = this._transformCachingAtTime.v;\n matrix.cloneFromProps(this.pre.props);\n\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\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\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\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\n if (this.data.p && this.data.p.s) {\n var positionX = this.px.getValueAtTime(time);\n var positionY = this.py.getValueAtTime(time);\n\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\n return matrix; /// /\n }\n\n function getTransformStaticValueAtTime() {\n return this.v.clone(new Matrix());\n }\n\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\n\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n var prop = getTransformProperty(elem, data, container);\n\n if (prop.dynamicProperties.length) {\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n return prop;\n };\n\n var propertyGetProp = PropertyFactory.getProp;\n\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\n var prop = propertyGetProp(elem, data, type, mult, container); // prop.getVelocityAtTime = getVelocityAtTime;\n // prop.loopOut = loopOut;\n // prop.loopIn = loopIn;\n\n if (prop.kf) {\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\n }\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\n if (type !== 0) {\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\n }\n\n prop._cachingAtTime = {\n lastFrame: initialDefaultFrame,\n lastIndex: 0,\n value: value\n };\n expressionHelpers.searchExpressions(elem, data, prop);\n\n if (prop.k) {\n container.addDynamicProperty(prop);\n }\n\n return prop;\n };\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\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\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\n return this._cachingAtTime.shapeValue;\n }\n\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\n\n function ShapeExpressions() {}\n\n ShapeExpressions.prototype = {\n vertices: function vertices(prop, time) {\n if (this.k) {\n this.getValue();\n }\n\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\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\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\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\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n if (!this._segmentsLength) {\n this._segmentsLength = bez.getSegmentsLength(shapePath);\n }\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\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\n i += 1;\n }\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\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\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\n if (magnitude === 0) {\n return [0, 0];\n }\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\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\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\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n };\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\n return null;\n }\n\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n var newValue = this.calculateExpression(text);\n\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\n return currentValue;\n };\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\n TextProperty.prototype.searchExpressions = searchExpressions;\n }\n\n function initialize() {\n addDecorator();\n }\n\n function SVGComposableEffect() {}\n\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\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\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\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\n extendPrototype([SVGComposableEffect], SVGTintFilter);\n\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\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\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\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\n groupPath = createNS('g');\n groupPath.setAttribute('fill', 'none');\n groupPath.setAttribute('stroke-linecap', 'round');\n groupPath.setAttribute('stroke-dashoffset', 1);\n\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\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\n while (elemChildren[0]) {\n g.appendChild(elemChildren[0]);\n }\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\n while (elemChildren.length) {\n this.elem.layerElement.removeChild(elemChildren[0]);\n }\n }\n\n this.elem.layerElement.appendChild(groupPath);\n this.elem.layerElement.removeAttribute('mask');\n groupPath.setAttribute('stroke', '#fff');\n }\n\n this.initialized = true;\n this.pathMasker = groupPath;\n };\n\n SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\n if (!this.initialized) {\n this.initialize();\n }\n\n var i;\n var len = this.paths.length;\n var mask;\n var path;\n\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\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\n path.setAttribute('d', mask.lastPath);\n }\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\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\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\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\n path.setAttribute('stroke-dasharray', dasharrayValue);\n }\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\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\n }\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\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'); // Red\n\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 } // Green\n\n\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 } // Blue\n\n\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 } // Alpha\n\n\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 } // RGB\n\n\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n filter.appendChild(feComponentTransfer);\n }\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\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\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\n while (cnt <= 256) {\n perc = cnt / 256;\n\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\n table[pos] = colorValue;\n pos += 1;\n cnt += 256 / (segments - 1);\n }\n\n return table.join(' ');\n };\n\n SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var val;\n var effectElements = this.filterManager.effectElements;\n\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\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\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\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\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\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\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\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\n }\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\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\n SVGMatte3Effect.prototype.findSymbol = function (mask) {\n var i = 0;\n var len = _svgMatteSymbols.length;\n\n while (i < len) {\n if (_svgMatteSymbols[i] === mask) {\n return _svgMatteSymbols[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\n var parentNode = mask.layerElement.parentNode;\n\n if (!parentNode) {\n return;\n }\n\n var children = parentNode.children;\n var i = 0;\n var len = children.length;\n\n while (i < len) {\n if (children[i] === mask.layerElement) {\n break;\n }\n\n i += 1;\n }\n\n var nextChild;\n\n if (i <= len - 2) {\n nextChild = children[i + 1];\n }\n\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n\n if (nextChild) {\n parentNode.insertBefore(useElem, nextChild);\n } else {\n parentNode.appendChild(useElem);\n }\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\n _svgMatteSymbols.push(mask);\n\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\n elem.setMatte(mask.layerId);\n };\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\n while (i < len) {\n if (elements[i] && elements[i].data.ind === ind) {\n this.setElementAsMask(this.elem, elements[i]);\n }\n\n i += 1;\n }\n\n this.initialized = true;\n };\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\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; // Dimensions mapping:\n //\n // 1 -> horizontal & vertical\n // 2 -> horizontal only\n // 3 -> vertical only\n //\n\n var dimensions = this.filterManager.effectElements[1].p.v;\n var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY); // Repeat edges mapping:\n //\n // 0 -> off -> duplicate\n // 1 -> on -> wrap\n\n var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\n }\n };\n\n function TransformEffect() {}\n\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\n TransformEffect.prototype.renderFrame = function (forceFrame) {\n this._opMdf = false;\n this._mdf = false;\n\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\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\n extendPrototype([TransformEffect], SVGTransformEffect);\n\n function CVTransformEffect(effectsManager) {\n this.init(effectsManager);\n }\n\n extendPrototype([TransformEffect], CVTransformEffect);\n\n registerRenderer('canvas', CanvasRenderer);\n registerRenderer('html', HybridRenderer);\n registerRenderer('svg', SVGRenderer); // Registering shape modifiers\n\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); // Registering expression plugin\n\n setExpressionsPlugin(Expressions);\n setExpressionInterfaces(getInterface);\n initialize$1();\n initialize(); // Registering svg effects\n\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 _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\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 _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\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 { useLottie } from \"lottie-react\";\n\nimport AnimationData from \"../../../assets/lottie-animations/loader.json\" with { type: \"json\" };\nimport css from \"./loader.module.pcss\";\nimport stylesheet from \"./loader.module.pcss?inline\";\n\nimport { useCss } from \"@gef1/dax-react-sdk\";\nexport const Loader = () => {\n useCss(stylesheet);\n console.log({stylesheet});\n const options = {\n animationData: AnimationData,\n loop: true,\n };\n const { View: LoadingAnimation } = useLottie(options);\n\n return
{LoadingAnimation}
;\n};\n","import { FC, PropsWithChildren } from \"react\";\n\nimport css from \"./avatar-container.module.pcss\";\nimport stylesheet from \"./avatar-container.module.pcss?inline\";\nimport { useCss } from \"@gef1/dax-react-sdk\";\n\ninterface AvatarContainerProps extends PropsWithChildren {\n inverted?: boolean;\n size?: \"small\" | \"large\";\n}\n\nexport const AvatarContainer: FC = ({ children, inverted = false, size = \"small\" }) => {\n const avatarSize = size === \"small\" ? \"32px\" : \"56px\";\n useCss(stylesheet)\n const style = {\n height: avatarSize,\n width: avatarSize,\n };\n\n return (\n
\n {children}\n
\n );\n};\n","import { ActionButton, BodyText, Icon, Padder, TitleText } from \"belfius.geui.client.ui-react\";\nimport { FC, useState } from \"react\";\n\nimport { useCss, useTranslator } from \"@gef1/dax-react-sdk\";\nimport { useDaxNavigation, useImageWithFallback, useMessageSender } from \"@/hooks\";\nimport { getAssetsUrl } from \"@/utils\";\n\nimport { AvatarContainer } from \"../avatars/avatar-container/avatar-container.tsx\";\nimport { FunctionalMessagePayload } from \"../message.interface.ts\";\nimport { StatusMessageButton, StatusMessageElementProps, StatusMessageImage } from \"./status-message.interface.ts\";\nimport css from \"./status-message.module.pcss\";\nimport stylesheet from \"./status-message.module.pcss?inline\";\n\ninterface StatusMessageProps {\n payload: FunctionalMessagePayload;\n}\n\nexport const StatusMessage: FC = ({ payload }) => {\n const [disabled, setDisabled] = useState(false);\n const t = useTranslator();\n useCss(stylesheet);\n const { navigate } = useDaxNavigation();\n const { sendBackWithoutShown } = useMessageSender();\n\n const getImage = (image: StatusMessageImage) => {\n return (\n \n {image.type === \"icon\" && (\n \n )}\n {image.type === \"url\" && (\n {t(image.alt_text)}\n )}\n \n );\n };\n\n const handleAction = (button: StatusMessageButton) => {\n if (button.type === \"url\" && button.url && button.target) {\n navigate(button.url, button.target);\n } else if (button.type === \"action\" && button.action && typeof button.action === \"function\") {\n button.action();\n } else if (button.type === \"postback\" && button.action && typeof button.action === \"string\") {\n sendBackWithoutShown(button.title, button.action);\n setDisabled(true);\n }\n };\n\n const imageElement = payload.message.image ? getImage(payload.message.image) : \"\";\n const buttonElements = payload.message.buttons?.map((button) => (\n handleAction(button)}\n text={t(`statusMessage.${button.title}`)}\n type={\"secondary\"}\n >\n ));\n\n return (\n
\n {imageElement}\n \n {payload.message.title && (\n \n {t(`statusMessage.${payload.message.title}`).replace(\"{{agentName}}\", payload.agent_firstname)}\n \n )}\n {payload.message.text && (\n \n {t(`statusMessage.${payload.message.text}`)}\n \n )}\n \n {buttonElements}\n
\n );\n};\n","import { format, isToday, isYesterday } from \"date-fns\";\nimport { FC } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport { useCss, useTranslator } from \"@gef1/dax-react-sdk\";\n\nimport { RootState } from \"@/store\";\nimport { getDateFNSLocale } from \"@/utils\";\n\nimport css from \"./history-date-label.module.pcss\";\nimport stylesheet from \"./history-date-label.module.pcss?inline\";\n\ninterface HistoryDateLabelProps {\n date: string;\n}\n\nexport const HistoryDateLabel: FC = ({ date }) => {\n const t = useTranslator();\n useCss(stylesheet);\n const { locale } = useSelector((state: RootState) => state.application);\n const getFormattedTime = (date: string): string => {\n const d = new Date(date);\n if (isToday(d)) {\n return t(\"history.today\");\n }\n\n if (isYesterday(d)) {\n return t(\"history.yesterday\");\n }\n\n return format(d, \"EEEE dd MMM\", { locale: getDateFNSLocale(locale) });\n };\n\n const formattedDate = getFormattedTime(date);\n\n const dateLabel = `${formattedDate.charAt(0).toUpperCase()}${formattedDate.slice(1)}`;\n\n return (\n
\n {dateLabel}\n
\n );\n};\n","import { useCss, useTranslator } from \"@gef1/dax-react-sdk\";\n\nimport css from \"./kore-avatar.module.pcss\";\nimport stylesheet from \"./kore-avatar.module.pcss?inline\";\n\nexport const KoreAvatarIcon = () => {\n const t = useTranslator();\n useCss(stylesheet)\n\n return (\n \n );\n};\n","import { FC } from \"react\";\n\nimport css from \"./initials-avatar.module.pcss\";\nimport stylesheet from \"./initials-avatar.module.pcss?inline\";\nimport { useCss } from \"@gef1/dax-react-sdk\";\n\ninterface InitialsAvatarProps {\n initials: string;\n size?: \"small\" | \"large\";\n}\n\nexport const InitialsAvatar: FC = ({ initials, size = \"small\" }) => {\n const avatarSize = size === \"small\" ? \"32px\" : \"56px\";\n useCss(stylesheet)\n const style = {\n height: avatarSize,\n width: avatarSize,\n };\n\n return (\n
\n
\n {initials}\n
\n
\n );\n};\n","import { FC } from \"react\";\n\nimport { KoreAvatarIcon } from \"@/components/chat-elements/avatars/kore-avatar/kore-avatar-icon.tsx\";\nimport { MessageSender } from \"@/types\";\n\nimport { InitialsAvatar } from \"./initials-avatar/initials-avatar.tsx\";\n\ninterface AvatarProps {\n from: MessageSender;\n}\nexport const Avatar: FC = ({ from }) => {\n const { agent_initials, agent_flag } = from;\n\n if (agent_flag === undefined) {\n return null;\n }\n\n if (agent_flag === true && agent_initials) {\n return ;\n }\n\n return ;\n};\n","export const ArrowUpIcon = () => {\n return (\n \n \n \n );\n};\n","export const SmallCloseIcon = () => (\n \n \n \n);\n","export const SmallWarningIcon = () => {\n return (\n \n \n \n );\n};\n","import { format } from \"date-fns\";\nimport { utcToZonedTime } from \"date-fns-tz\";\nimport { FC } from \"react\";\n\nimport { SmallWarningIcon } from \"@/components/icons\";\nimport { useCss, useTranslator } from \"@gef1/dax-react-sdk\";\n\nimport { MessageSender } from \"@/types\";\n\nimport css from \"./timestamp.module.pcss\";\nimport stylesheet from \"./timestamp.module.pcss?inline\";\n\ninterface TimestampProps {\n from: MessageSender;\n isFailed: boolean;\n time: Date;\n}\n\nexport const Timestamp: FC = ({ from, isFailed, time }) => {\n const t = useTranslator();\n useCss(stylesheet);\n const parsedTime = utcToZonedTime(time, Intl.DateTimeFormat().resolvedOptions().timeZone);\n const formattedTime = format(parsedTime, \"HH:mm\");\n const { agent_firstname, agent_flag } = from;\n\n const content = !agent_flag ? formattedTime : `${formattedTime} ${agent_firstname}`;\n const failed = (\n
\n \n {t(\"labels.sendingMessageFailed\")}\n
\n );\n\n return
{isFailed ? failed : content}
;\n};\n","import { FC } from \"react\";\n\nimport { MessageSender } from \"@/types\";\n\nimport { Avatar } from \"../avatars/avatar.tsx\";\nimport { Timestamp } from \"../timestamp/timestamp.tsx\";\nimport css from \"./avatar-and-timestamp.module.pcss\";\nimport stylesheet from \"./avatar-and-timestamp.module.pcss?inline\";\nimport { useCss } from \"@gef1/dax-react-sdk\";\n\ninterface AvatarAndTimestampProps {\n from: MessageSender;\n isFailed: boolean;\n timestamp: Date;\n}\n\nexport const AvatarAndTimestamp: FC = ({ from, isFailed, timestamp }) => {\n useCss(stylesheet);\n return (\n \n \n \n \n );\n};\n","import*as e from\"react\";function t(){return t=Object.assign?Object.assign.bind():function(e){for(var t=1;t(e[t.toLowerCase()]=t,e),{class:\"className\",for:\"htmlFor\"}),a={amp:\"&\",apos:\"'\",gt:\">\",lt:\"<\",nbsp:\" \",quot:\"“\"},o=[\"style\",\"script\"],c=/([-A-Z0-9_:]+)(?:\\s*=\\s*(?:(?:\"((?:\\\\.|[^\"])*)\")|(?:'((?:\\\\.|[^'])*)')|(?:\\{((?:\\\\.|{[^}]*?}|[^}])*)\\})))?/gi,s=/mailto:/i,d=/\\n{2,}$/,p=/^(\\s*>[\\s\\S]*?)(?=\\n\\n|$)/,u=/^ *> ?/gm,f=/^(?:\\[!([^\\]]*)\\]\\n)?([\\s\\S]*)/,h=/^ {2,}\\n/,m=/^(?:( *[-*_])){3,} *(?:\\n *)+\\n/,g=/^(?: {1,3})?(`{3,}|~{3,}) *(\\S+)? *([^\\n]*?)?\\n([\\s\\S]*?)(?:\\1\\n?|$)/,y=/^(?: {4}[^\\n]+\\n*)+(?:\\n *)+\\n?/,k=/^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,x=/^(?:\\n *)*\\n/,b=/\\r\\n?/g,v=/^\\[\\^([^\\]]+)](:(.*)((\\n+ {4,}.*)|(\\n(?!\\[\\^).+))*)/,S=/^\\[\\^([^\\]]+)]/,C=/\\f/g,$=/^---[ \\t]*\\n(.|\\n)*\\n---[ \\t]*\\n/,E=/^\\s*?\\[(x|\\s)\\]/,w=/^ *(#{1,6}) *([^\\n]+?)(?: +#*)?(?:\\n *)*(?:\\n|$)/,z=/^ *(#{1,6}) +([^\\n]+?)(?: +#*)?(?:\\n *)*(?:\\n|$)/,L=/^([^\\n]+)\\n *(=|-){3,} *(?:\\n *)+\\n/,A=/^ *(?!<[a-z][^ >/]* ?\\/>)<([a-z][^ >/]*) ?((?:[^>]*[^/])?)>\\n?(\\s*(?:<\\1[^>]*?>[\\s\\S]*?<\\/\\1>|(?!<\\1\\b)[\\s\\S])*?)<\\/\\1>(?!<\\/\\1>)\\n*/i,T=/&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-fA-F]{1,6});/gi,O=/^)/,B=/^(data|aria|x)-[a-z_][a-z\\d_.-]*$/,M=/^ *<([a-z][a-z0-9:]*)(?:\\s+((?:<.*?>|[^>])*))?\\/?>(?!<\\/\\1>)(\\s*\\n)?/i,R=/^\\{.*\\}$/,I=/^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,U=/^<([^ >]+@[^ >]+)>/,D=/^<([^ >]+:\\/[^ >]+)>/,N=/-([a-z])?/gi,j=/^(\\|.*)\\n(?: *(\\|? *[-:]+ *\\|[-| :]*)\\n((?:.*\\|.*\\n)*))?\\n?/,H=/^\\[([^\\]]*)\\]:\\s+]+)>?\\s*(\"([^\"]*)\")?/,P=/^!\\[([^\\]]*)\\] ?\\[([^\\]]*)\\]/,F=/^\\[([^\\]]*)\\] ?\\[([^\\]]*)\\]/,_=/(\\n|^[-*]\\s|^#|^ {2,}|^-{2,}|^>\\s)/,G=/\\t/g,W=/(^ *\\||\\| *$)/g,Z=/^ *:-+: *$/,q=/^ *:-+ *$/,Q=/^ *-+: *$/,V=\"((?:\\\\[.*?\\\\][([].*?[)\\\\]]|<.*?>(?:.*?<.*?>)?|`.*?`|~~.*?~~|==.*?==|.|\\\\n)*?)\",X=new RegExp(`^([*_])\\\\1${V}\\\\1\\\\1(?!\\\\1)`),J=new RegExp(`^([*_])${V}\\\\1(?!\\\\1|\\\\w)`),K=new RegExp(`^==${V}==`),Y=new RegExp(`^~~${V}~~`),ee=/^\\\\([^0-9A-Za-z\\s])/,te=/^[\\s\\S]+?(?=[^0-9A-Z\\s\\u00c0-\\uffff&#;.()'\"]|\\d+\\.|\\n\\n| {2,}\\n|\\w+:\\S|$)/i,ne=/^\\n+/,re=/^([ \\t]*)/,ie=/\\\\([^\\\\])/g,le=/ *\\n+$/,ae=/(?:^|\\n)( *)$/,oe=\"(?:\\\\d+\\\\.)\",ce=\"(?:[*+-])\";function se(e){return\"( *)(\"+(1===e?oe:ce)+\") +\"}const de=se(1),pe=se(2);function ue(e){return new RegExp(\"^\"+(1===e?de:pe))}const fe=ue(1),he=ue(2);function me(e){return new RegExp(\"^\"+(1===e?de:pe)+\"[^\\\\n]*(?:\\\\n(?!\\\\1\"+(1===e?oe:ce)+\" )[^\\\\n]*)*(\\\\n|$)\",\"gm\")}const ge=me(1),ye=me(2);function ke(e){const t=1===e?oe:ce;return new RegExp(\"^( *)(\"+t+\") [\\\\s\\\\S]+?(?:\\\\n{2,}(?! )(?!\\\\1\"+t+\" (?!\"+t+\" ))\\\\n*|\\\\s*\\\\n*$)\")}const xe=ke(1),be=ke(2);function ve(e,t){const n=1===t,i=n?xe:be,l=n?ge:ye,a=n?fe:he;return{match(e,t){const n=ae.exec(t.prevCapture);return n&&(t.list||!t.inline&&!t.simple)?i.exec(e=n[1]+e):null},order:1,parse(e,t,r){const i=n?+e[2]:void 0,o=e[0].replace(d,\"\\n\").match(l);let c=!1;return{items:o.map(function(e,n){const i=a.exec(e)[0].length,l=new RegExp(\"^ {1,\"+i+\"}\",\"gm\"),s=e.replace(l,\"\").replace(a,\"\"),d=n===o.length-1,p=-1!==s.indexOf(\"\\n\\n\")||d&&c;c=p;const u=r.inline,f=r.list;let h;r.list=!0,p?(r.inline=!1,h=s.replace(le,\"\\n\\n\")):(r.inline=!0,h=s.replace(le,\"\"));const m=t(h,r);return r.inline=u,r.list=f,m}),ordered:n,start:i}},render:(t,n,i)=>e(t.ordered?\"ol\":\"ul\",{key:i.key,start:t.type===r.orderedList?t.start:void 0},t.items.map(function(t,r){return e(\"li\",{key:r},n(t,i))}))}}const Se=new RegExp(\"^\\\\[((?:\\\\[[^\\\\]]*\\\\]|[^\\\\[\\\\]]|\\\\](?=[^\\\\[]*\\\\]))*)\\\\]\\\\(\\\\s*?(?:\\\\s+['\\\"]([\\\\s\\\\S]*?)['\\\"])?\\\\s*\\\\)\"),Ce=/^!\\[(.*?)\\]\\( *((?:\\([^)]*\\)|[^() ])*) *\"?([^)\"]*)?\"?\\)/,$e=[p,g,y,w,L,z,O,j,ge,xe,ye,be],Ee=[...$e,/^[^\\n]+(?: \\n|\\n{2,})/,A,M];function we(e){return e.replace(/[ÀÁÂÃÄÅàáâãäåæÆ]/g,\"a\").replace(/[çÇ]/g,\"c\").replace(/[ðÐ]/g,\"d\").replace(/[ÈÉÊËéèêë]/g,\"e\").replace(/[ÏïÎîÍíÌì]/g,\"i\").replace(/[Ññ]/g,\"n\").replace(/[øØœŒÕõÔôÓóÒò]/g,\"o\").replace(/[ÜüÛûÚúÙù]/g,\"u\").replace(/[ŸÿÝý]/g,\"y\").replace(/[^a-z0-9- ]/gi,\"\").replace(/ /gi,\"-\").toLowerCase()}function ze(e){return Q.test(e)?\"right\":Z.test(e)?\"center\":q.test(e)?\"left\":null}function Le(e,t,n,i){const l=n.inTable;n.inTable=!0;let a=e.trim().split(/( *(?:`[^`]*`|\\\\\\||\\|) *)/).reduce((e,l)=>(\"|\"===l.trim()?e.push(i?{type:r.tableSeparator}:{type:r.text,text:l}):\"\"!==l&&e.push.apply(e,t(l,n)),e),[]);n.inTable=l;let o=[[]];return a.forEach(function(e,t){e.type===r.tableSeparator?0!==t&&t!==a.length-1&&o.push([]):(e.type!==r.text||null!=a[t+1]&&a[t+1].type!==r.tableSeparator||(e.text=e.text.trimEnd()),o[o.length-1].push(e))}),o}function Ae(e,t,n){n.inline=!0;const i=e[2]?e[2].replace(W,\"\").split(\"|\").map(ze):[],l=e[3]?function(e,t,n){return e.trim().split(\"\\n\").map(function(e){return Le(e,t,n,!0)})}(e[3],t,n):[],a=Le(e[1],t,n,!!l.length);return n.inline=!1,l.length?{align:i,cells:l,header:a,type:r.table}:{children:a,type:r.paragraph}}function Te(e,t){return null==e.align[t]?{}:{textAlign:e.align[t]}}function Oe(e){return function(t,n){return n.inline?e.exec(t):null}}function Be(e){return function(t,n){return n.inline||n.simple?e.exec(t):null}}function Me(e){return function(t,n){return n.inline||n.simple?null:e.exec(t)}}function Re(e){return function(t){return e.exec(t)}}function Ie(e,t){if(t.inline||t.simple)return null;let n=\"\";e.split(\"\\n\").every(e=>!$e.some(t=>t.test(e))&&(n+=e+\"\\n\",e.trim()));const r=n.trimEnd();return\"\"==r?null:[n,r]}function Ue(e){try{if(decodeURIComponent(e).replace(/[^A-Za-z0-9/:]/g,\"\").match(/^\\s*(javascript|vbscript|data(?!:image)):/i))return null}catch(e){return null}return e}function De(e){return e.replace(ie,\"$1\")}function Ne(e,t,n){const r=n.inline||!1,i=n.simple||!1;n.inline=!0,n.simple=!0;const l=e(t,n);return n.inline=r,n.simple=i,l}function je(e,t,n){const r=n.inline||!1,i=n.simple||!1;n.inline=!1,n.simple=!0;const l=e(t,n);return n.inline=r,n.simple=i,l}function He(e,t,n){const r=n.inline||!1;n.inline=!1;const i=e(t,n);return n.inline=r,i}const Pe=(e,t,n)=>({children:Ne(t,e[1],n)});function Fe(){return{}}function _e(){return null}function Ge(...e){return e.filter(Boolean).join(\" \")}function We(e,t,n){let r=e;const i=t.split(\".\");for(;i.length&&(r=r[i[0]],void 0!==r);)i.shift();return r||n}function Ze(n=\"\",i={}){function d(e,n,...r){const l=We(i.overrides,`${e}.props`,{});return i.createElement(function(e,t){const n=We(t,e);return n?\"function\"==typeof n||\"object\"==typeof n&&\"render\"in n?n:We(t,`${e}.component`,e):e}(e,i.overrides),t({},n,l,{className:Ge(null==n?void 0:n.className,l.className)||void 0}),...r)}function W(e){e=e.replace($,\"\");let t=!1;i.forceInline?t=!0:i.forceBlock||(t=!1===_.test(e));const n=le(ie(t?e:`${e.trimEnd().replace(ne,\"\")}\\n\\n`,{inline:t}));for(;\"string\"==typeof n[n.length-1]&&!n[n.length-1].trim();)n.pop();if(null===i.wrapper)return n;const r=i.wrapper||(t?\"span\":\"div\");let l;if(n.length>1||i.forceWrapper)l=n;else{if(1===n.length)return l=n[0],\"string\"==typeof l?d(\"span\",{key:\"outer\"},l):l;l=null}return i.createElement(r,{key:\"outer\"},l)}function Z(e,t){const n=t.match(c);return n?n.reduce(function(t,n){const r=n.indexOf(\"=\");if(-1!==r){const a=function(e){return-1!==e.indexOf(\"-\")&&null===e.match(B)&&(e=e.replace(N,function(e,t){return t.toUpperCase()})),e}(n.slice(0,r)).trim(),o=function(e){const t=e[0];return('\"'===t||\"'\"===t)&&e.length>=2&&e[e.length-1]===t?e.slice(1,-1):e}(n.slice(r+1).trim()),c=l[a]||a;if(\"ref\"===c)return t;const s=t[c]=function(e,t,n,r){return\"style\"===t?n.split(/;\\s?/).reduce(function(e,t){const n=t.slice(0,t.indexOf(\":\"));return e[n.trim().replace(/(-[a-z])/g,e=>e[1].toUpperCase())]=t.slice(n.length+1).trim(),e},{}):\"href\"===t||\"src\"===t?r(n,e,t):(n.match(R)&&(n=n.slice(1,n.length-1)),\"true\"===n||\"false\"!==n&&n)}(e,a,o,i.sanitizer);\"string\"==typeof s&&(A.test(s)||M.test(s))&&(t[c]=W(s.trim()))}else\"style\"!==n&&(t[l[n]||n]=!0);return t},{}):null}i.overrides=i.overrides||{},i.sanitizer=i.sanitizer||Ue,i.slugify=i.slugify||we,i.namedCodesToUnicode=i.namedCodesToUnicode?t({},a,i.namedCodesToUnicode):a,i.createElement=i.createElement||e.createElement;const q=[],Q={},V={[r.blockQuote]:{match:Me(p),order:1,parse(e,t,n){const[,r,i]=e[0].replace(u,\"\").match(f);return{alert:r,children:t(i,n)}},render(e,t,n){const l={key:n.key};return e.alert&&(l.className=\"markdown-alert-\"+i.slugify(e.alert.toLowerCase(),we),e.children.unshift({attrs:{},children:[{type:r.text,text:e.alert}],noInnerParse:!0,type:r.htmlBlock,tag:\"header\"})),d(\"blockquote\",l,t(e.children,n))}},[r.breakLine]:{match:Re(h),order:1,parse:Fe,render:(e,t,n)=>d(\"br\",{key:n.key})},[r.breakThematic]:{match:Me(m),order:1,parse:Fe,render:(e,t,n)=>d(\"hr\",{key:n.key})},[r.codeBlock]:{match:Me(y),order:0,parse:e=>({lang:void 0,text:e[0].replace(/^ {4}/gm,\"\").replace(/\\n+$/,\"\")}),render:(e,n,r)=>d(\"pre\",{key:r.key},d(\"code\",t({},e.attrs,{className:e.lang?`lang-${e.lang}`:\"\"}),e.text))},[r.codeFenced]:{match:Me(g),order:0,parse:e=>({attrs:Z(\"code\",e[3]||\"\"),lang:e[2]||void 0,text:e[4],type:r.codeBlock})},[r.codeInline]:{match:Be(k),order:3,parse:e=>({text:e[2]}),render:(e,t,n)=>d(\"code\",{key:n.key},e.text)},[r.footnote]:{match:Me(v),order:0,parse:e=>(q.push({footnote:e[2],identifier:e[1]}),{}),render:_e},[r.footnoteReference]:{match:Oe(S),order:1,parse:e=>({target:`#${i.slugify(e[1],we)}`,text:e[1]}),render:(e,t,n)=>d(\"a\",{key:n.key,href:i.sanitizer(e.target,\"a\",\"href\")},d(\"sup\",{key:n.key},e.text))},[r.gfmTask]:{match:Oe(E),order:1,parse:e=>({completed:\"x\"===e[1].toLowerCase()}),render:(e,t,n)=>d(\"input\",{checked:e.completed,key:n.key,readOnly:!0,type:\"checkbox\"})},[r.heading]:{match:Me(i.enforceAtxHeadings?z:w),order:1,parse:(e,t,n)=>({children:Ne(t,e[2],n),id:i.slugify(e[2],we),level:e[1].length}),render:(e,t,n)=>d(`h${e.level}`,{id:e.id,key:n.key},t(e.children,n))},[r.headingSetext]:{match:Me(L),order:0,parse:(e,t,n)=>({children:Ne(t,e[1],n),level:\"=\"===e[2]?1:2,type:r.heading})},[r.htmlBlock]:{match:Re(A),order:1,parse(e,t,n){const[,r]=e[3].match(re),i=new RegExp(`^${r}`,\"gm\"),l=e[3].replace(i,\"\"),a=(c=l,Ee.some(e=>e.test(c))?He:Ne);var c;const s=e[1].toLowerCase(),d=-1!==o.indexOf(s),p=(d?s:e[1]).trim(),u={attrs:Z(p,e[2]),noInnerParse:d,tag:p};return n.inAnchor=n.inAnchor||\"a\"===s,d?u.text=e[3]:u.children=a(t,l,n),n.inAnchor=!1,u},render:(e,n,r)=>d(e.tag,t({key:r.key},e.attrs),e.text||(e.children?n(e.children,r):\"\"))},[r.htmlSelfClosing]:{match:Re(M),order:1,parse(e){const t=e[1].trim();return{attrs:Z(t,e[2]||\"\"),tag:t}},render:(e,n,r)=>d(e.tag,t({},e.attrs,{key:r.key}))},[r.htmlComment]:{match:Re(O),order:1,parse:()=>({}),render:_e},[r.image]:{match:Be(Ce),order:1,parse:e=>({alt:e[1],target:De(e[2]),title:e[3]}),render:(e,t,n)=>d(\"img\",{key:n.key,alt:e.alt||void 0,title:e.title||void 0,src:i.sanitizer(e.target,\"img\",\"src\")})},[r.link]:{match:Oe(Se),order:3,parse:(e,t,n)=>({children:je(t,e[1],n),target:De(e[2]),title:e[3]}),render:(e,t,n)=>d(\"a\",{key:n.key,href:i.sanitizer(e.target,\"a\",\"href\"),title:e.title},t(e.children,n))},[r.linkAngleBraceStyleDetector]:{match:Oe(D),order:0,parse:e=>({children:[{text:e[1],type:r.text}],target:e[1],type:r.link})},[r.linkBareUrlDetector]:{match:(e,t)=>t.inAnchor||i.disableAutoLink?null:Oe(I)(e,t),order:0,parse:e=>({children:[{text:e[1],type:r.text}],target:e[1],title:void 0,type:r.link})},[r.linkMailtoDetector]:{match:Oe(U),order:0,parse(e){let t=e[1],n=e[1];return s.test(n)||(n=\"mailto:\"+n),{children:[{text:t.replace(\"mailto:\",\"\"),type:r.text}],target:n,type:r.link}}},[r.orderedList]:ve(d,1),[r.unorderedList]:ve(d,2),[r.newlineCoalescer]:{match:Me(x),order:3,parse:Fe,render:()=>\"\\n\"},[r.paragraph]:{match:Ie,order:3,parse:Pe,render:(e,t,n)=>d(\"p\",{key:n.key},t(e.children,n))},[r.ref]:{match:Oe(H),order:0,parse:e=>(Q[e[1]]={target:e[2],title:e[4]},{}),render:_e},[r.refImage]:{match:Be(P),order:0,parse:e=>({alt:e[1]||void 0,ref:e[2]}),render:(e,t,n)=>Q[e.ref]?d(\"img\",{key:n.key,alt:e.alt,src:i.sanitizer(Q[e.ref].target,\"img\",\"src\"),title:Q[e.ref].title}):null},[r.refLink]:{match:Oe(F),order:0,parse:(e,t,n)=>({children:t(e[1],n),fallbackChildren:e[0],ref:e[2]}),render:(e,t,n)=>Q[e.ref]?d(\"a\",{key:n.key,href:i.sanitizer(Q[e.ref].target,\"a\",\"href\"),title:Q[e.ref].title},t(e.children,n)):d(\"span\",{key:n.key},e.fallbackChildren)},[r.table]:{match:Me(j),order:1,parse:Ae,render(e,t,n){const r=e;return d(\"table\",{key:n.key},d(\"thead\",null,d(\"tr\",null,r.header.map(function(e,i){return d(\"th\",{key:i,style:Te(r,i)},t(e,n))}))),d(\"tbody\",null,r.cells.map(function(e,i){return d(\"tr\",{key:i},e.map(function(e,i){return d(\"td\",{key:i,style:Te(r,i)},t(e,n))}))})))}},[r.text]:{match:Re(te),order:4,parse:e=>({text:e[0].replace(T,(e,t)=>i.namedCodesToUnicode[t]?i.namedCodesToUnicode[t]:e)}),render:e=>e.text},[r.textBolded]:{match:Be(X),order:2,parse:(e,t,n)=>({children:t(e[2],n)}),render:(e,t,n)=>d(\"strong\",{key:n.key},t(e.children,n))},[r.textEmphasized]:{match:Be(J),order:3,parse:(e,t,n)=>({children:t(e[2],n)}),render:(e,t,n)=>d(\"em\",{key:n.key},t(e.children,n))},[r.textEscaped]:{match:Be(ee),order:1,parse:e=>({text:e[1],type:r.text})},[r.textMarked]:{match:Be(K),order:3,parse:Pe,render:(e,t,n)=>d(\"mark\",{key:n.key},t(e.children,n))},[r.textStrikethroughed]:{match:Be(Y),order:3,parse:Pe,render:(e,t,n)=>d(\"del\",{key:n.key},t(e.children,n))}};!0===i.disableParsingRawHTML&&(delete V[r.htmlBlock],delete V[r.htmlSelfClosing]);const ie=function(e){let t=Object.keys(e);function n(r,i){let l=[];for(i.prevCapture=i.prevCapture||\"\";r;){let a=0;for(;al(n,r,i),n,r,i):l(n,r,i)}}(V,i.renderRule),function e(t,n={}){if(Array.isArray(t)){const r=n.key,i=[];let l=!1;for(let r=0;r{let{children:r=\"\",options:i}=t,l=function(e,t){if(null==e)return{};var n,r,i={},l=Object.keys(e);for(r=0;r=0||(i[n]=e[n]);return i}(t,n);return e.cloneElement(Ze(r,i),l)};export{r as RuleType,Ze as compiler,Ue as sanitizer,we as slugify};\n//# sourceMappingURL=index.modern.js.map\n","import { FC, MouseEventHandler } from \"react\";\n\nimport Markdown from \"markdown-to-jsx\";\nimport { useDaxNavigation } from \"@/hooks\";\nimport css from \"./pa-markdown.module.pcss\";\nimport stylesheet from \"./pa-markdown.module.pcss?inline\";\nimport { useCss } from \"@gef1/dax-react-sdk\";\nimport { useFlowContext } from \"@/contexts\";\nimport { APP_MODES } from \"@/utils\";\n\ninterface PaMarkdownProps {\n content: string;\n}\n\nexport const PaMarkdown: FC = ({ content }) => {\n const context = useFlowContext();\n const { navigate } = useDaxNavigation();\n useCss(stylesheet);\n\n const handleClick: MouseEventHandler = (e) => {\n e.preventDefault();\n\n const target = e.target as HTMLElement;\n const link = target.closest(\"a\");\n\n if (link) {\n const url = link.getAttribute(\"href\");\n\n navigate(url!);\n }\n };\n\n return (\n
\n {content}\n
\n );\n};\n","import { ChatBubble } from \"belfius.geui.client.ui-react\";\nimport { FC, PropsWithChildren } from \"react\";\n\nimport css from \"./bubble.module.pcss\";\nimport stylesheet from \"./bubble.module.pcss?inline\";\nimport { useCss } from \"@gef1/dax-react-sdk\";\n\ninterface BubbleProps extends PropsWithChildren {\n fullWidth?: boolean;\n origin: \"agent\" | \"bot\" | \"client\";\n preserveBreaks?: boolean;\n}\n\nexport const Bubble: FC = ({ children, fullWidth, origin, preserveBreaks }) => {\n useCss(stylesheet)\n return (\n
\n
\n \n {children}\n \n
\n
\n );\n};\n","export const BUTTON_ACTIONS = {\n UPLOAD_DOCUMENT: \"TPUploadDocuments\",\n};\n\nexport const BUTTON_REQUEST_TYPE = {\n CLAIMS: \"CLAIMS\",\n};\n\nexport const BUTTON_SEND_BACK_MESSAGES = {\n UPLOAD: \"Upload\",\n};\n","import { uploadDocumentsDelegation } from \"@gef1/dax-gefw-host\";\nimport { ChatActionButton } from \"belfius.geui.client.ui-react\";\nimport { FC, useEffect } from \"react\";\n\nimport { useDatePicker, useMobileBridge, usePubSub } from \"@/contexts\";\nimport { useDaxNavigation, useMessageSender } from \"@/hooks\";\n\nimport { ButtonProps, CustomButtonProps, LinkButtonProps, PostBackButtonProps } from \"../buttons-group/buttons-element-props.interface.ts\";\nimport { BUTTON_ACTIONS, BUTTON_REQUEST_TYPE, BUTTON_SEND_BACK_MESSAGES } from \"@/constants/button.constants.ts\";\nimport { format } from \"date-fns\";\nimport { RootState, setInputDisabled } from \"@/store\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { getDateFNSLocale } from \"@/utils\";\n\ninterface ChatButtonProps {\n button: ButtonProps | Omit;\n disableGroup?: () => void | null;\n disabled?: boolean;\n historyMessage?: boolean;\n}\n\nexport const ChatButton: FC = ({ button, disableGroup, disabled, historyMessage }) => {\n const { navigate } = useDaxNavigation();\n const { sendBack } = useMessageSender();\n const mobileBridge = useMobileBridge();\n const pubSub = usePubSub();\n const { openDatePicker } = useDatePicker();\n const dispatch = useDispatch();\n const {\n application: { locale },\n chat: {\n chat: { extraId },\n },\n } = useSelector((state: RootState) => state);\n const text = \"title\" in button ? button.title : \"default\";\n\n const handleTypeUrl = (button: Omit) => {\n return navigate(button.url, button.target);\n };\n\n const handleTypeCustom = async (button: CustomButtonProps) => {\n if (button.action === BUTTON_ACTIONS.UPLOAD_DOCUMENT) {\n const request = button.data.documentType\n ? {\n documentType: button.data.documentType as string,\n draftClaimId: extraId,\n reference: button.data.reference as string,\n requestType: BUTTON_REQUEST_TYPE.CLAIMS,\n }\n : {\n draftClaimId: extraId,\n reference: button.data.reference as string,\n requestType: BUTTON_REQUEST_TYPE.CLAIMS,\n };\n\n const result = await uploadDocumentsDelegation(mobileBridge, pubSub, request);\n\n if (result.state) {\n sendBack(BUTTON_SEND_BACK_MESSAGES.UPLOAD, BUTTON_ACTIONS.UPLOAD_DOCUMENT);\n }\n } else {\n handleDefault(button);\n }\n };\n\n const handleDefault = (button: CustomButtonProps | PostBackButtonProps) => {\n sendBack(button.title, button.action);\n\n if (disableGroup) {\n disableGroup();\n }\n };\n\n const handleAction = () => {\n switch (button.type) {\n case \"url\":\n handleTypeUrl(button);\n return;\n case \"custom\":\n handleTypeCustom(button);\n return;\n case \"date\":\n openDatePicker({\n datePickerData: button,\n onConfirmed: (date: Date) => {\n const clientFormattedDate = format(date, \"d MMMM yyyy\", { locale: getDateFNSLocale(locale) });\n const systemFormattedDate = format(date, \"yyyy-MM-dd\");\n\n sendBack(clientFormattedDate, systemFormattedDate);\n\n // Enabling back the chat input\n dispatch(setInputDisabled(false));\n },\n });\n return;\n default:\n handleDefault(button);\n break;\n }\n };\n\n useEffect(() => {\n /*\n Kore is not handling date typed by the user in the chat input...\n So Business want to disable the chat input when a date is requested and to enable it back only when the date is sent.\n */\n if (!historyMessage && button.type === \"date\") {\n dispatch(setInputDisabled(true));\n }\n }, []);\n\n return ;\n};\n","import { ChatActionButtonGroup } from \"belfius.geui.client.ui-react\";\nimport { FC, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport { PaMarkdown } from \"@/components/chat-elements/pa-markdown/pa-markdown.tsx\";\nimport { RootState } from \"@/store\";\n\nimport { Bubble } from \"../bubble/bubble.tsx\";\nimport { ChatButton } from \"../chat-button/chat-button.tsx\";\nimport type { FunctionalMessagePayload } from \"../message.interface.ts\";\nimport type { ButtonsElementProps } from \"./buttons-element-props.interface.ts\";\n\ninterface ButtonGroupProps {\n payload: FunctionalMessagePayload;\n}\n\nexport const ButtonsGroup: FC = ({ payload }) => {\n const { clickable, historyMessage } = payload;\n const {\n application: { onMobileDevice },\n } = useSelector((state: RootState) => state);\n const [disabled, setDisabled] = useState(historyMessage && !clickable);\n\n const disableGroup = () => {\n setDisabled(true);\n };\n\n const {\n message: { buttons, text },\n } = payload;\n\n const mapButtons = buttons.map((btn, index) => (\n \n ));\n\n return (\n \n \n {mapButtons}\n \n );\n};\n","import { ChatActionButtonGroup, ChatCarousel, ChatCarouselCard, ChatCarouselItem } from \"belfius.geui.client.ui-react\";\nimport { FC, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport { useImageWithFallback } from \"@/hooks\";\nimport { RootState } from \"@/store\";\nimport { getAssetsUrl } from \"@/utils\";\n\nimport { ChatButton } from \"../chat-button/chat-button.tsx\";\nimport { FunctionalMessagePayload } from \"../message.interface.ts\";\nimport { CarouselElementProps } from \"./carousel-element-props.ts\";\n\ninterface CarouselProps {\n payload: FunctionalMessagePayload;\n}\n\nexport const CarouselElement: FC = ({ payload }) => {\n const {\n message: { elements },\n historyMessage,\n one_time_use,\n } = payload;\n\n const [disabled, setDisabled] = useState(!!historyMessage);\n const { inputDisabled } = useSelector((state: RootState) => state.chat);\n\n const disableGroup = () => {\n return setDisabled(true);\n };\n\n return (\n \n {elements.map((e, i) => {\n const imageUrl = getAssetsUrl(e.image_url);\n const imgSrc = useImageWithFallback(imageUrl);\n\n return (\n \n \n \n {e.buttons &&\n e.buttons.map((btn, index) => (\n \n ))}\n {!e.buttons && e.default_action && (\n \n )}\n \n \n \n );\n })}\n \n );\n};\n","import { ChatCarousel, ChatCarouselCustomCard } from \"belfius.geui.client.ui-react\";\nimport { FC, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport { useDaxNavigation, useImageWithFallback, useMessageSender } from \"@/hooks\";\nimport { RootState } from \"@/store\";\nimport type { LinkTarget } from \"@/types\";\n\nimport { FunctionalMessagePayload } from \"../message.interface.ts\";\nimport { CustomCarouselElement, CustomCarouselElementProps } from \"./custom-carousel.interface.ts\";\nimport { getAssetsUrl } from \"@/utils\";\n\ninterface ChatCarouselCustomCardWrapperProps {\n element: CustomCarouselElement;\n disabled: boolean;\n inputDisabled: boolean;\n handleUrlAction: (url: string, target: LinkTarget) => void;\n handleAction: (title: string, action: string) => void;\n}\n\nconst ChatCarouselCustomCardWrapper: FC = ({\n element,\n disabled,\n inputDisabled,\n handleUrlAction,\n handleAction,\n}) => {\n const iconUrl = element.image.type === \"url\" ? useImageWithFallback(getAssetsUrl(element.image.source)) : undefined;\n\n return (\n \n element.default_action &&\n (element.default_action.type === \"url\"\n ? handleUrlAction(element.default_action.url, element.default_action.target)\n : handleAction(element.text, element.default_action.action))\n }\n src={iconUrl}\n text={element.text}\n />\n );\n};\n\ninterface CustomCarouselProps {\n payload: FunctionalMessagePayload;\n}\n\nexport const ChatCustomCarouselElement: FC = ({ payload }) => {\n const {\n message: { elements },\n historyMessage,\n one_time_use,\n } = payload;\n\n const { sendBack } = useMessageSender();\n const { navigate } = useDaxNavigation();\n const [disabled, setDisabled] = useState(!!historyMessage);\n const { inputDisabled } = useSelector((state: RootState) => state.chat);\n\n const handleUrlAction = (url: string, target: LinkTarget) => navigate(url, target);\n\n const handleAction = (title: string, action: string) => {\n sendBack(title, action);\n\n if (one_time_use) {\n setDisabled(true);\n }\n };\n return (\n \n {elements.map((e, i) => {\n const props: ChatCarouselCustomCardWrapperProps = {\n inputDisabled,\n element: e,\n handleUrlAction,\n handleAction,\n disabled: disabled || inputDisabled,\n };\n\n return ;\n })}\n \n );\n};\n","import { ChatImage } from \"belfius.geui.client.ui-react\";\nimport { FC } from \"react\";\n\nimport { Bubble } from \"@/components/chat-elements/bubble/bubble.tsx\";\nimport { useImageWithFallback } from \"@/hooks\";\nimport { getAssetsUrl } from \"@/utils\";\n\nimport { FunctionalMessagePayload } from \"../message.interface.ts\";\n\nexport interface ImageElementProps {\n file_name: string\n alt_text: string\n}\n\ninterface ImageProps {\n payload: FunctionalMessagePayload;\n}\n\nexport const ImageElement: FC = ({ payload }) => {\n const imgSrc = useImageWithFallback(getAssetsUrl(payload.message.file_name));\n\n return (\n \n \n \n );\n};\n","import { ChatListItem, Icon } from \"belfius.geui.client.ui-react\";\nimport { FC } from \"react\";\n\nimport { useCss, useTranslator } from \"@gef1/dax-react-sdk\";\nimport { useDaxNavigation, useImageWithFallback, useMessageSender } from \"@/hooks\";\nimport { getAssetsUrl } from \"@/utils\";\n\nimport type { ListElement } from \"../list-container.interface.ts\";\nimport css from \"./list-item.module.pcss\";\nimport stylesheet from \"./list-item.module.pcss?inline\";\n\ninterface ListItemProps {\n element: ListElement;\n}\n\nexport const ListItem: FC = ({ element }) => {\n const { navigate } = useDaxNavigation();\n useCss(stylesheet);\n const t = useTranslator();\n const { sendBack } = useMessageSender();\n\n const action = () => {\n if (element.default_action.type === \"url\") {\n return navigate(element.default_action.url, element.default_action.target);\n }\n\n sendBack(element.title, element.default_action.action);\n };\n\n const getAsset = () => {\n const { image } = element;\n\n if (!image) {\n return null;\n }\n\n if (image.type === \"icon\") {\n return ;\n }\n\n const dimension = element.linkText ? \"72px\" : \"40px\";\n\n return (\n \n );\n };\n\n return (\n \n {getAsset()}\n \n );\n};\n","import { ChatList } from \"belfius.geui.client.ui-react\";\nimport { FC } from \"react\";\n\nimport { FunctionalMessagePayload } from \"../message.interface.ts\";\nimport { ListElementProps as L } from \"./list-container.interface.ts\";\nimport { ListItem } from \"./list-item/list-item.tsx\";\n\ninterface ListContainerProps {\n payload: FunctionalMessagePayload;\n}\n\nexport const ListContainer: FC = ({ payload }) => {\n const { elements } = payload.message;\n\n const items = elements.map((element, index) => );\n\n return {items};\n};\n","import { FC } from \"react\";\n\nimport { Bubble } from \"../bubble/bubble.tsx\";\nimport type { FunctionalMessagePayload } from \"../message.interface.ts\";\nimport { PaMarkdown } from \"../pa-markdown/pa-markdown.tsx\";\n\nexport type MarkdownElementProps = string;\ninterface MarkdownProps {\n payload: FunctionalMessagePayload;\n}\n\nexport const MarkdownElement: FC = ({ payload }) => {\n const { agent_flag, message } = payload;\n const origin = agent_flag ? \"bot\" : agent_flag === false ? \"agent\" : \"client\";\n\n return (\n \n {(origin === \"client\" && message) || }\n \n );\n};\n","import { ActionButton } from \"belfius.geui.client.ui-react\";\nimport { FC, useEffect, useMemo, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { useDatePicker } from \"@/contexts\";\nimport { useDaxNavigation, useMessageSender } from \"@/hooks\";\nimport { RootState, setInputDisabled } from \"@/store\";\n\nimport { MarkdownElement } from \"../markdown/markdownElement.tsx\";\nimport type { FunctionalMessagePayload } from \"../message.interface.ts\";\nimport { RoundedButton, RoundedButtonsElementProps } from \"../rounded-buttons/rounded-buttons-element-props.ts\";\nimport type { QuickRepliesElementProps, QuickReply } from \"./quick-replies-element-props.interface.ts\";\nimport css from \"./rounded-buttons.module.pcss\";\nimport stylesheet from \"./rounded-buttons.module.pcss?inline\";\nimport { useCss } from \"@gef1/dax-react-sdk\";\nimport { format } from \"date-fns\";\nimport { getDateFNSLocale } from \"@/utils\";\n\ninterface RoundedButtonsProps {\n disableAfterClick?: boolean;\n payload: FunctionalMessagePayload;\n}\n\nexport const RoundedButtons: FC = ({ disableAfterClick, payload }) => {\n useCss(stylesheet);\n const {\n agent_firstname,\n agent_initials,\n agent_flag,\n clickable,\n historyMessage,\n message: { text },\n template,\n timestamp,\n } = payload;\n const { sendBack } = useMessageSender();\n const { navigate } = useDaxNavigation();\n const { openDatePicker } = useDatePicker();\n const dispatch = useDispatch();\n const [disabled, setDisabled] = useState(historyMessage && !clickable);\n const { locale } = useSelector((state: RootState) => state.application);\n\n const disableGroup = () => {\n setDisabled(true);\n };\n\n const handleAction = (reply: QuickReply | RoundedButton) => {\n /*\n Even if quick_replies template (who has by default disableAfterClick set to True) is used to handle datepicker,\n we don't want to disable the button directly because the user can still close the datepicker without picking a date...\n */\n if (disableGroup && disableAfterClick && reply.type !== \"date\") {\n disableGroup();\n }\n\n if (\"url\" in reply && !!reply.url) {\n return navigate(reply.url, reply.target);\n }\n\n if (reply.type === \"postback\") {\n return \"action\" in reply ? sendBack(reply.title, reply.action) : sendBack(reply.title);\n }\n\n if (reply.type === \"date\") {\n openDatePicker({\n datePickerData: reply,\n onConfirmed: (date: Date) => {\n const clientFormattedDate = format(date, \"d MMMM yyyy\", { locale: getDateFNSLocale(locale) });\n const systemFormattedDate = format(date, \"yyyy-MM-dd\");\n\n sendBack(clientFormattedDate, systemFormattedDate);\n\n // Enabling back the chat input\n dispatch(setInputDisabled(false));\n\n // Disabling the button once the date is sent\n disableGroup();\n },\n });\n }\n };\n\n const elements = useMemo(\n () => (\"quick_replies\" in payload.message ? payload.message.quick_replies : payload.message.buttons),\n [payload.message],\n );\n\n useEffect(() => {\n /*\n Kore is not handling date typed by the user in the chat input...\n So Business want to disable the chat input when a date is requested and to enable it back only when the date is sent.\n */\n if (!historyMessage && elements.find((reply) => reply.type === \"date\")) {\n dispatch(setInputDisabled(true));\n }\n }, [elements]);\n\n const choices = elements.map((reply, index) => {\n return (\n handleAction(reply)}\n size=\"small\"\n text={reply.title}\n type=\"choice\"\n />\n );\n });\n\n return (\n
\n \n
{choices}
\n
\n );\n};\n","import { Divider } from \"belfius.geui.client.ui-react\";\nimport { FC } from \"react\";\n\nimport { FunctionalMessagePayload } from \"@/components/chat-elements/message.interface.ts\";\n\nexport interface SeparatorElementProps {\n label: string;\n}\n\ninterface SeparatorProps {\n payload: FunctionalMessagePayload;\n}\nexport const Separator: FC = ({ payload }) => {\n return ;\n};\n","import type { FC, JSX } from \"react\";\n\nimport { RichFunctionalMessage } from \"@/store\";\nimport { unHandledCase } from \"@/utils\";\n\nimport { AvatarAndTimestamp } from \"./avatar-and-timestamp/avatar-and-timestamp.tsx\";\nimport { ButtonsElementProps } from \"./buttons-group/buttons-element-props.interface.ts\";\nimport { ButtonsGroup } from \"./buttons-group/buttons-group.tsx\";\nimport { CarouselElement } from \"./carousel/carousel-element.tsx\";\nimport { CarouselElementProps } from \"./carousel/carousel-element-props.ts\";\nimport css from \"./chat-element.module.pcss\";\nimport stylesheet from \"./chat-element.module.pcss?inline\";\nimport { CustomCarouselElementProps } from \"./custom-carousel/custom-carousel.interface.ts\";\nimport { ChatCustomCarouselElement } from \"./custom-carousel/chat-custom-carousel-element.tsx\";\nimport { ImageElement, ImageElementProps } from \"./image/image-element.tsx\";\nimport { ListElementProps } from \"./list/list-container.interface.ts\";\nimport { ListContainer } from \"./list/list-container.tsx\";\nimport { MarkdownElement, MarkdownElementProps } from \"./markdown/markdownElement.tsx\";\nimport { FunctionalMessage, FunctionalMessagePayload } from \"./message.interface.ts\";\nimport { QuickRepliesElementProps } from \"./rounded-buttons/quick-replies-element-props.interface.ts\";\nimport { RoundedButtons } from \"./rounded-buttons/rounded-buttons.tsx\";\nimport type { RoundedButtonsElementProps } from \"./rounded-buttons/rounded-buttons-element-props.ts\";\nimport { Separator, SeparatorElementProps } from \"./separator/separator.tsx\";\nimport { StatusMessageElementProps } from \"./status-message/status-message.interface.ts\";\nimport { StatusMessage } from \"./status-message/status-message.tsx\";\nimport { useCss } from \"@gef1/dax-react-sdk\";\n\nexport const mapTypeToComponent = ({ payload }: FunctionalMessage) => {\n switch (payload.template) {\n case \"button\":\n return } />;\n case \"button_rounded\":\n return } />;\n case \"carousel\":\n return } />;\n case \"custom_carousel\":\n return } />;\n case \"list\":\n return } />;\n case \"text\":\n return } />;\n case \"image\":\n return } />;\n case \"status\":\n return } />;\n case \"quick_replies\":\n return } />;\n case \"separator\":\n return } />;\n }\n\n return unHandledCase(payload.template);\n};\n\ninterface ChatElementComponentProps {\n displayTimestamp: boolean;\n message: RichFunctionalMessage;\n prefix?: JSX.Element;\n}\n\nexport const ChatElement: FC = ({ displayTimestamp, message, prefix }) => {\n const component = mapTypeToComponent(message);\n useCss(stylesheet);\n const {\n payload: { timestamp, ...agent },\n } = message;\n\n const incoming = message.payload.agent_flag !== undefined;\n\n return (\n
\n {prefix}\n
{component}
\n {displayTimestamp && }\n
\n );\n};\n","import { FC } from \"react\";\n\nimport { HistoryDay } from \"@/hooks\";\nimport { messagesToChatElements } from \"@/utils\";\n\nimport { ChatElement } from \"../../chat-element.tsx\";\nimport { HistoryDateLabel } from \"../history-date-label/history-date-label.tsx\";\n\ninterface HistoryPartProps {\n day: HistoryDay;\n}\n\nexport const HistoryPart: FC = ({ day }) => {\n return (\n
\n \n {messagesToChatElements(day.messages).map(({ displayTimestamp, key, message }) => (\n \n ))}\n
\n );\n};\n","import { isToday } from \"date-fns\";\nimport { FC, useEffect, useMemo, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useSwipeable } from \"react-swipeable\";\n\nimport { ArrowUpIcon } from \"@/components\";\nimport { useCss, useTranslator } from \"@gef1/dax-react-sdk\";\nimport { HistoryDay, useHistory, useIntersectionObserver } from \"@/hooks\";\nimport { RootState } from \"@/store\";\nimport { statusMessageWithIcon } from \"@/utils\";\n\nimport { Loader } from \"../../loader/loader.tsx\";\nimport { FunctionalMessagePayload } from \"../../message.interface.ts\";\nimport { StatusMessageElementProps } from \"../../status-message/status-message.interface.ts\";\nimport { StatusMessage } from \"../../status-message/status-message.tsx\";\nimport { HistoryDateLabel } from \"../history-date-label/history-date-label.tsx\";\nimport { HistoryPart } from \"../history-part/history-part.tsx\";\nimport css from \"./history-list.module.pcss\";\nimport stylesheet from \"./history-list.module.pcss?inline\";\n\nexport interface HistoryListProps {\n /** the element on which handlers will be installed for swipe behavior */\n handlersElement: HTMLDivElement;\n}\n\nexport const HistoryList: FC = ({ handlersElement }) => {\n useCss(stylesheet);\n\n const t = useTranslator();\n\n /** initialize scroll state (position + scroll height) of the handler element */\n const initializeScrollState = () => {\n setScrollPositionAtSwipe(handlersElement.scrollTop);\n setScrollHeightAtSwipe(handlersElement.scrollHeight);\n };\n\n /** scroll to the bottom of the handler element */\n const scrollToBottom = () => {\n handlersElement.scrollTop = handlersElement.scrollHeight;\n };\n\n /** keep current scroll position on the handler element */\n const keepCurrentScrollPosition = () => {\n const newScrollHeight = handlersElement.scrollHeight;\n const newScrollPosition = newScrollHeight - scrollHeightAtSwipe + scrollPositionAtSwipe;\n handlersElement.scrollTop = newScrollPosition;\n handlersElement.scrollTo({ top: newScrollPosition - 120, behavior: \"smooth\" });\n };\n\n /** install touch control listener for touch enabled devices (mobile) to interact with history */\n const installTouchListener = () => {\n const DEFAULT_SWIPE_DURATION = 500;\n const { ref } = useSwipeable({\n onSwipedDown: () => {\n initializeScrollState();\n setAfterMoreHistoryRequested(true);\n if (shouldShowHistory && canFetchMoreData && messageStartIntersectionResult.isVisible) {\n fetchData();\n }\n },\n swipeDuration: DEFAULT_SWIPE_DURATION,\n });\n\n useEffect(() => {\n // register swipe behaviour on the handlersElement which typically is a container which will include this component\n ref(handlersElement);\n });\n };\n\n const handleClick = () => {\n initializeScrollState();\n setAfterMoreHistoryRequested(true);\n\n fetchData();\n };\n\n const { canFetchMoreData, currentLoadedPage, data, error, fetchData, loading, shouldDisplayHistory, unreadCount } = useHistory(\"All\");\n const [messagesStartRef, messageStartIntersectionResult] = useIntersectionObserver(0);\n const [shouldShowHistory, setShouldShowHistory] = useState(false);\n const [afterMoreHistoryRequested, setAfterMoreHistoryRequested] = useState(false);\n const [scrollPositionAtSwipe, setScrollPositionAtSwipe] = useState(0);\n const [scrollHeightAtSwipe, setScrollHeightAtSwipe] = useState(0);\n const { onMobileDevice } = useSelector((state: RootState) => state.application);\n\n const historyError = useMemo(() => {\n if (error) {\n return } />;\n }\n return null;\n }, [error]);\n\n const historyMessages = useMemo(() => {\n if (data.length) {\n setShouldShowHistory(afterMoreHistoryRequested || shouldDisplayHistory || !!unreadCount);\n if (shouldShowHistory && data.length) {\n const lastPart = data[data.length - 1];\n\n return (\n <>\n {data.map((part: HistoryDay, index: any) => (\n \n ))}\n\n {!isToday(new Date(lastPart.day)) && }\n \n );\n }\n }\n return null;\n }, [data, shouldShowHistory, afterMoreHistoryRequested]);\n\n if (onMobileDevice) {\n installTouchListener();\n }\n\n useEffect(() => {\n if (data.length) {\n if (currentLoadedPage === 1) {\n scrollToBottom();\n } else {\n keepCurrentScrollPosition();\n }\n }\n }, [historyMessages]);\n\n return (\n
\n {!onMobileDevice && !loading && canFetchMoreData && (\n
\n \n
\n )}\n
\n {!loading && !canFetchMoreData && data.length > 0 && shouldShowHistory && (\n \n )}\n {loading && !onMobileDevice && }\n {historyError}\n {historyMessages}\n
\n );\n};\n","import { useSelector } from \"react-redux\";\n\nimport { RootState } from \"@/store\";\n\nimport { Avatar } from \"../avatars/avatar.tsx\";\nimport { Bubble } from \"../bubble/bubble.tsx\";\nimport css from \"./typing-animation.module.pcss\";\nimport stylesheet from \"./typing-animation.module.pcss?inline\";\nimport { useCss } from \"@gef1/dax-react-sdk\";\n\nexport const TypingAnimation = () => {\n const { currentInterlocutor } = useSelector((state: RootState) => state.chat);\n useCss(stylesheet); \n\n const { agent_firstname, agent_initials, agent_flag } = currentInterlocutor;\n\n return (\n <>\n \n
\n
\n
\n
\n
\n
\n {/* eslint-disable-next-line camelcase */}\n \n \n );\n};\n","import { ChatScrollButton } from \"belfius.geui.client.ui-react\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport { HistoryList } from \"@/components/chat-elements/history/history-list/history-list.tsx\";\n\nimport { TypingAnimation } from \"@/components/chat-elements/typing-animation/typing-animation.tsx\";\nimport { useTranslator } from \"@gef1/dax-react-sdk\";\nimport { useIntersectionObserver, usePercentageIntersectionObserver } from \"@/hooks\";\nimport { RootState } from \"@/store\";\nimport { isAppleDevice, messagesToChatElements } from \"@/utils\";\n\nimport { ChatElement } from \"../chat-elements/chat-element.tsx\";\nimport css from \"./chat-window.module.pcss\";\nimport { PullDownLabel } from \"@/components\";\n\nif (!window.HTMLElement.prototype?.scrollIntoView) {\n // TODO dirty\n window.HTMLElement.prototype.scrollIntoView = function () {}; // Mock this, not implemented in JSDom\n}\n\nexport const ChatWindow = () => {\n const {\n application: { minimized, onMobileDevice },\n chat: { messages, typing, inputContainerHeight },\n } = useSelector((state: RootState) => state);\n const chatWindowRef = useRef(null);\n const [messagesEndRef, intersectionResult] = useIntersectionObserver(0);\n const [displayScrollBackBtn, setDisplayScrollBackBtn] = useState(false);\n const lastMessageRef = useRef(null);\n const t = useTranslator();\n\n const scrollToBottom = (smooth = true) => {\n setDisplayScrollBackBtn(false);\n messagesEndRef.current?.scrollIntoView({\n block: \"start\",\n behavior: smooth ? \"smooth\" : \"instant\",\n });\n };\n\n const messagesContent = useMemo(() => {\n let items = messagesToChatElements(messages).map(({ displayTimestamp, key, message }) => (\n \n ));\n\n // Adding ref just before last message to scroll to bottom\n // Triggering display of scroll to bottom button only if that last element is completely hidden\n if (items.length > 1) {\n items.splice(items.length - 1, 0,
);\n }\n\n return <>{items};\n }, [messages]);\n\n const [percentage, setRef] = usePercentageIntersectionObserver(messagesContent);\n\n const typingContent = useMemo(() => {\n return typing ? : null;\n }, [typing]);\n\n useEffect(() => {\n if (messages.length || typing) {\n scrollToBottom();\n }\n }, [messages, typing]);\n\n useEffect(() => {\n const chatWindowElement = chatWindowRef?.current;\n\n if (!chatWindowElement) return;\n\n if (!onMobileDevice) {\n // Prevent scrolling the web page when the user is scrolling the chat window\n chatWindowElement.addEventListener(\"wheel\", (event: { stopPropagation: () => void }) => {\n event.stopPropagation();\n });\n }\n\n const observer = new ResizeObserver(() => {\n if (intersectionResult.isVisible) {\n scrollToBottom(false);\n }\n });\n\n observer.observe(chatWindowElement);\n\n return () => {\n observer.disconnect();\n chatWindowElement.removeEventListener(\"wheel\", (event: { stopPropagation: () => void }) => {\n event.stopPropagation();\n });\n };\n }, [intersectionResult.isVisible]);\n\n useEffect(() => {\n setDisplayScrollBackBtn(messages.length > 1 ? percentage === 0 : !intersectionResult.isVisible);\n }, [intersectionResult, messages, percentage]);\n\n useEffect(() => {\n setRef(lastMessageRef);\n }, []);\n\n const [windowSize, setWindowSize] = useState<{ width: number; height: number }>();\n\n useEffect(() => {\n // There is an issue where in ios if the keyboard is shown that it comes on top of the input field\n // for this reason we listen to the resize of the window.visualviewport because the window.addEventListener('resize') doesn't get updated in ios\n if (!window.visualViewport || !onMobileDevice || !isAppleDevice()) return;\n const handleListener = (event: Event) => {\n const viewport = event.target as VisualViewport;\n setWindowSize(windowSize?.height !== screen.height ? { width: viewport.width, height: viewport.height } : undefined);\n };\n\n window.visualViewport.addEventListener(\"resize\", handleListener);\n\n return () => {\n if (!window.visualViewport) return;\n window.visualViewport.removeEventListener(\"resize\", handleListener);\n };\n }, []);\n\n // Only on Iphone or Ipad we need to calculate the height of the chat window because of the keyboard\n const addedStyles =\n windowSize?.height && onMobileDevice && isAppleDevice()\n ? {\n height: `${windowSize?.height - inputContainerHeight}px`, // Height of the remaining view minus the input container height\n }\n : {};\n\n // if Iphone or Ipad and the keyboard has been shown then we set the chat window height with the value calculated above, so we need to leave the size out of it\n const className =\n onMobileDevice && isAppleDevice() && windowSize && windowSize.height !== screen.height ? css.noSizeChatWindow : css.chatWindow;\n\n return (\n // @ts-ignore\n
\n {onMobileDevice && }\n \n {messagesContent}\n {typingContent}\n {(onMobileDevice || !minimized) && displayScrollBackBtn && (\n
\n \n
\n )}\n
\n
\n );\n};\n","import { ChatInputContainer as ChatInput } from \"../chat-input/chat-input-container.tsx\";\nimport { ChatWindow } from \"../chat-window/chat-window.tsx\";\n\nexport const Chat = () => {\n return (\n <>\n \n \n \n );\n};\n","import { DatePicker } from \"belfius.geui.client.ui-react\";\nimport { FC } from \"react\";\n\nimport { DatePickerData } from \"@/types\";\nimport { formatWithSlash } from \"@/utils\";\n\nimport css from \"./date-picker-element.module.pcss\";\nimport stylesheet from \"./date-picker-element.module.pcss?inline\";\nimport { useCss } from \"@gef1/dax-react-sdk\";\ninterface DatePickerElementProps {\n onCanceled: (date: Date) => void;\n onConfirmed: (date: Date) => void;\n datePickerData: DatePickerData;\n}\n\nconst DATEPICKER_VALUE_SEPARATOR = \";\";\n\nexport const PADatePicker: FC = ({ onCanceled, onConfirmed, datePickerData }) => {\n useCss(stylesheet);\n\n const { disable_week_days, disable_dates, disable_days, disable_months, default_start, default_end, default_value } = datePickerData;\n\n return (\n // @ts-ignore\n
\n
\n onConfirmed(e.detail.data)}\n startDate={formatWithSlash(default_start || \"\")}\n value={formatWithSlash(default_value || \"\")}\n />\n
\n
\n );\n};\n","import { useSelector } from \"react-redux\";\n\nimport { ArrowUpIcon } from \"@/components/icons\";\nimport { useTranslator } from \"@gef1/dax-react-sdk\";\n\nimport { RootState } from \"@/store\";\n\nimport css from \"./pull-down-label.module.pcss\";\n\nexport const PullDownLabel = () => {\n const t = useTranslator();\n const {\n application: { shouldShowScrollUpLabel },\n chat: { resets },\n } = useSelector((state: RootState) => state);\n\n return (\n (shouldShowScrollUpLabel || !!resets) && (\n
\n
\n \n \n {t(\"history.pullDownLabel\")}\n \n
\n
\n )\n );\n};\n","import { Icon } from \"belfius.geui.client.ui-react\";\nimport { FC } from \"react\";\n\nimport css from \"./menu-item.module.pcss\";\nimport stylesheet from \"./menu-item.module.pcss?inline\";\nimport { useCss } from \"@gef1/dax-react-sdk\";\n\ninterface MenuItemProps {\n callback: () => void;\n icon: string;\n title: string;\n}\n\nexport const MenuItem: FC = ({ callback, icon, title }) => {\n useCss(stylesheet);\n return (\n \n );\n};\n","import { IconButton } from \"belfius.geui.client.ui-react\";\nimport { ReactElement, useState } from \"react\";\n\nimport { MenuItem } from \"@/components/chat-header/chat-header-menu/menu-item/menu-item.tsx\";\nimport { MenuConfirmation } from \"@/components/confirmation/menu-confirmation.tsx\";\nimport { useCss, useTranslator } from \"@gef1/dax-react-sdk\";\nimport { useMenu } from \"@/hooks\";\nimport { OverflowMenuAction } from \"@/menus/menus.interface.tsx\";\n\nimport css from \"./chat-header-menu.module.pcss\";\nimport stylesheet from \"./chat-header-menu.module.pcss?inline\";\n\nexport const ChatHeaderMenu = () => {\n const t = useTranslator();\n useCss(stylesheet);\n const [showMenu, setShowMenu] = useState(false);\n const [menuAction, setMenuAction] = useState(null);\n\n const close = () => {\n setMenuAction(null);\n };\n\n const { menu } = useMenu();\n\n if (!menu || !menu.menus.size) {\n return null;\n }\n\n const actionMenus: ReactElement[] = [];\n menu.menus.forEach((value) => {\n const { icon, title } = value.menu;\n actionMenus.push(\n {\n setMenuAction(value.menuAction);\n setShowMenu(false);\n }}\n icon={icon}\n key={title}\n title={t(title)}\n />,\n );\n });\n\n return (\n <>\n setShowMenu(!showMenu)} size=\"x-small\" type=\"transparent\" />\n {showMenu &&
{actionMenus}
}\n {menuAction && }\n \n );\n};\n","import { IconButton } from \"belfius.geui.client.ui-react\";\nimport { memo, useMemo, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\n\nimport { ChatHeaderMenu } from \"@/components/chat-header/chat-header-menu/chat-header-menu.tsx\";\nimport { MenuConfirmation } from \"@/components/confirmation/menu-confirmation.tsx\";\nimport { KEY_TO_ICON_NAME } from \"@/constants\";\nimport { useCss, useTranslator } from \"@gef1/dax-react-sdk\";\nimport { useMenu } from \"@/hooks\";\nimport { LeftIcon } from \"@/menus\";\nimport { setMinimized } from \"@/store\";\n\nimport css from \"./chat-header.module.pcss\";\nimport stylesheet from \"./chat-header.module.pcss?inline\";\n\nexport const ChatHeader = memo(() => {\n const dispatch = useDispatch();\n useCss(stylesheet);\n const t = useTranslator();\n const [menuAction, setMenuAction] = useState(null);\n const { menu } = useMenu();\n const leftIcon = useMemo(() => {\n if (!menu) {\n return null;\n }\n\n const { leftIcon } = menu;\n\n return (\n {\n if (leftIcon.minimize) {\n dispatch(setMinimized(true));\n }\n if (leftIcon.confirm) {\n setMenuAction(leftIcon);\n } else {\n leftIcon.action();\n }\n }}\n type=\"transparent\"\n >
\n );\n }, [menu]);\n\n const close = () => {\n setMenuAction(null);\n };\n\n return (\n //@ts-ignore\n
\n {leftIcon}\n

{t(menu?.appName || \"defaultAppTitle\")}

\n \n {menuAction?.confirm && }\n
\n );\n});\n","import { useLottie } from \"lottie-react\";\nimport { useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { SmallCloseIcon } from \"@/components/icons\";\nimport { DatalayerEvents, DISPLAY_NUDGE_DELAY } from \"@/constants\";\nimport { useDatalayer, useFlowContext, usePubSub } from \"@/contexts\";\nimport { useCss, useTranslator } from \"@gef1/dax-react-sdk\";\nimport { useChat, useUnreadMessages } from \"@/hooks\";\nimport { cleanApplicationState, cleanChatState, RootState, setChatLaunched, setMinimized, setUnreadCount, toggleMinimized } from \"@/store\";\n\nimport FlowerData from \"../../assets/lottie-animations/flower.json\" with { type: \"json\" };\nimport css from \"./floating-button.module.pcss\";\nimport stylesheet from \"./floating-button.module.pcss?inline\";\n\nexport const FloatingButton = () => {\n const {\n application: { chatLaunched, devMode, minimized, nudgePreference, windowHasBeenOpened },\n chat: { unreadCount, error },\n } = useSelector((state: RootState) => state);\n useCss(stylesheet);\n const context = useFlowContext();\n const dispatch = useDispatch();\n const t = useTranslator();\n const pubSub = usePubSub();\n const datalayer = useDatalayer();\n const { startChat } = useChat();\n const [displayNudge, setDisplayNudge] = useState(false);\n const [disappearing, setDisappearing] = useState(false);\n const [nudgeHasBeenShown, setNudgeHasBeenShown] = useState(false);\n const [showNudgeTimeoutID, setShowNudgeTimeoutID] = useState | undefined>(undefined);\n const botId = useSelector((state: RootState) => state.chat.chat.botId);\n\n useUnreadMessages();\n\n const options = {\n animationData: FlowerData,\n loop: false,\n };\n const { View: FlowerAnimation } = useLottie(options);\n\n const handleClick = () => {\n if (context.mode === \"BDN\" && context.system?.deviceType === \"Phone\") {\n openChatInMobileApp();\n } else {\n handleClickInternal();\n }\n };\n\n const openChatInMobileApp = () => {\n pubSub.publish(\"openMobileApp\", {\n appKey: \"FEED_CHAT\",\n });\n };\n\n const resetState = () => {\n dispatch(cleanApplicationState());\n dispatch(cleanChatState());\n };\n\n const handleClickInternal = () => {\n if (minimized) {\n dispatch(setUnreadCount(0));\n setDisplayNudge(false);\n }\n\n datalayer.addEvent(DatalayerEvents.FAB_CLICKED, { intent: minimized ? (chatLaunched ? \"restore\" : \"open\") : \"minimize\" });\n\n if (!minimized && error) {\n resetState();\n return;\n }\n\n dispatch(toggleMinimized());\n\n if (devMode) {\n dispatch(setChatLaunched(true));\n } else if (!chatLaunched) {\n const botDefinition = context.pa?.botIds[0];\n\n if (!botId) {\n throw new Error(\"Chatbot id is not set\");\n }\n\n if (botDefinition && botDefinition.properties.botType) {\n context.botType = botDefinition.properties.botType;\n }\n\n dispatch(setMinimized(false));\n dispatch(setChatLaunched(true));\n\n startChat({\n botId,\n extraId: (context.extraId as string) || \"\",\n chatToken: (context.chatToken as string) || \"\",\n token: (context.token as string) || \"\",\n });\n }\n };\n\n const hideNudge = () => {\n setDisappearing(true);\n setTimeout(() => {\n setDisplayNudge(false);\n }, 300);\n };\n\n useEffect(() => {\n if (!nudgePreference || windowHasBeenOpened) {\n setDisplayNudge(false);\n clearTimeout(showNudgeTimeoutID);\n setShowNudgeTimeoutID(undefined);\n } else {\n const timeoutID = setTimeout(() => {\n if (minimized && nudgePreference && !nudgeHasBeenShown) {\n setDisplayNudge(true);\n setNudgeHasBeenShown(true);\n }\n }, DISPLAY_NUDGE_DELAY);\n setShowNudgeTimeoutID(timeoutID);\n }\n }, [nudgePreference, windowHasBeenOpened]);\n\n return (\n <>\n {displayNudge && (\n
\n

{t(\"descriptions.nudge\")}

\n

\n {t(\"labels.nudge\")}\n

\n
\n \n
\n
\n
\n )}\n
\n \n {minimized && !!unreadCount &&
{unreadCount}
}\n
\n \n );\n};\n","import { EventData } from \"@gef1/dax-client-sdk\";\nimport { ActionButton, Alert, Markdown } from \"belfius.geui.client.ui-react\";\nimport { useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { DatalayerEvents } from \"@/constants\";\nimport { useTranslator } from \"@gef1/dax-react-sdk\";\nimport { useDatalayer, useFlowContext, usePubSub } from \"@/contexts\";\nimport { useBotDefinition, useChat } from \"@/hooks\";\nimport { BotType } from \"@/menus\";\nimport {\n cleanChatState,\n clearMessages,\n RootState,\n setChatIsReady,\n setChatLaunched,\n setHaseBeenClosed,\n setMinimized,\n setMyboFallbackUrl,\n setNudgePreference,\n} from \"@/store\";\nimport { MessageSender } from \"@/utils\";\n\nimport { MenuActions } from \"./../action-menu/menu-actions.tsx\";\nimport { FloatingButton } from \"./../floating-button/floating-button.tsx\";\n\nexport const MenuAndFab = () => {\n const dispatch = useDispatch();\n const context = useFlowContext();\n const pubSub = usePubSub();\n const datalayer = useDatalayer();\n const t = useTranslator();\n const { startChat, stopChat } = useChat();\n const { chatIsReady, hasBeenClosed, minimized, onMobileDevice } = useSelector((state: RootState) => state.application);\n const { chat } = useSelector((state: RootState) => state.chat);\n const { getBotDefinition } = useBotDefinition();\n\n const [floatingButtonVisible, setFloatingButtonVisible] = useState(\n !!context.pa?.showFPAButton || !context.mode /* standalone */,\n );\n const [showFPAButtonPreference, setShowFPAButtonPreference] = useState(\n !!context.pa?.showFPAButton || !context.mode /* standalone */,\n );\n\n const [showNavigationWarning, setShowNavigationWarning] = useState(false);\n const [navigationURL, setNavigationURL] = useState(\"\");\n const [restoreChat, setRestoreChat] = useState(false);\n const [nbOpenOverlays, setNbOpenOverlays] = useState(0);\n const [switchingChat, setSwitchingChat] = useState(false);\n\n const navigation = () => {\n setShowNavigationWarning(false);\n if (chatIsReady) {\n MessageSender.getInstance().notifyClientLeft();\n datalayer.addEvent(chat.botType === BotType.INSURANCE ? DatalayerEvents.CLOSE_MYBO : DatalayerEvents.CLOSE_PA);\n dispatch(setChatIsReady(false));\n }\n resetChat();\n dispatch(setMinimized(true));\n\n pubSub.publish(\"redirectToWithoutWarning\", { url: navigationURL });\n };\n\n useEffect(() => {\n determineFloatingButtonVisibility();\n }, [showFPAButtonPreference, nbOpenOverlays, chatIsReady]);\n\n useEffect(() => {\n determineChatWindowVisibility();\n }, [nbOpenOverlays]);\n\n const determineFloatingButtonVisibility = (botType?: BotType) => {\n setFloatingButtonVisible(\n (showFPAButtonPreference || !minimized || chatIsReady) &&\n nbOpenOverlays === 0 &&\n (botType ?? chat.botType) !== BotType.INSURANCE &&\n !switchingChat,\n );\n };\n\n const determineChatWindowVisibility = (startChatRequested: boolean = false) => {\n let shouldMinimize = minimized;\n if (nbOpenOverlays > 0) {\n shouldMinimize = true;\n // if chatwindow is currently open, hide it and mark it as to be re-opened after all overlays have been closed\n if (!minimized) {\n setRestoreChat(true);\n }\n } else if (nbOpenOverlays === 0) {\n shouldMinimize = !restoreChat && !startChatRequested;\n setRestoreChat(false);\n }\n\n if (minimized !== shouldMinimize) {\n dispatch(setMinimized(shouldMinimize));\n }\n };\n\n const startChatBot = async (bot: { botId: string; extraId: string }) => {\n const botDefinition = getBotDefinition(bot.botId);\n\n if (botDefinition?.properties.botType === BotType.INSURANCE) {\n datalayer.addEvent(DatalayerEvents.START_MYBO, { botId: botDefinition.id });\n }\n\n await startChat({ botId: botDefinition?.id ?? bot.botId, extraId: bot.extraId });\n };\n\n const resetChat = () => {\n dispatch(cleanChatState());\n stopChat();\n };\n\n useEffect(() => {\n const eventCallback = (event: string, data: EventData) => {\n switch (event) {\n case \"authenticated\":\n // We don't do anything when unlogged to logged (for MLP2)\n break;\n case \"unauthenticated\":\n dispatch(setMinimized(true));\n dispatch(setChatLaunched(false));\n resetChat();\n break;\n case \"navigationEnd\":\n setShowFPAButtonPreference(!!data.showFPAButton);\n dispatch(setNudgePreference(!!data.showNudge));\n break;\n case \"overlayOpened\":\n setNbOpenOverlays(data.nbOpenOverlays as number);\n break;\n case \"overlayClosed\":\n setNbOpenOverlays(data.nbOpenOverlays as number);\n break;\n case \"pageNavigationRequested\":\n setNavigationURL(data.url as string);\n if (chat.botType === \"insurance\" && !hasBeenClosed) {\n setShowNavigationWarning(true);\n dispatch(setHaseBeenClosed(true));\n } else {\n pubSub.publish(\"redirectToWithoutWarning\", data);\n dispatch(setHaseBeenClosed(false));\n }\n break;\n case \"startChatBot\":\n dispatch(setMinimized(false));\n // If bot is already started, do not reset it\n if (data.botName !== chat.botId || !chatIsReady) {\n if (chatIsReady) {\n MessageSender.getInstance().close();\n }\n\n const botType = getBotDefinition(chat.botId)?.properties?.botType;\n\n determineFloatingButtonVisibility(botType);\n setSwitchingChat(true);\n dispatch(setChatLaunched(true));\n\n // If botType is the same as the current one, only clear the messages.\n // If we do a cleanChatState in this case, the header will temporarily change to the default one while the chat is being set up.\n if (botType === chat.botType) {\n dispatch(clearMessages());\n } else {\n dispatch(cleanChatState());\n }\n stopChat();\n dispatch(setMyboFallbackUrl((data.myboFallbackUrl as string) || null));\n startChatBot({\n botId: data.botName as string,\n extraId: data.draftClaimId as string,\n }).then(() => {\n setSwitchingChat(false);\n determineChatWindowVisibility(true);\n });\n }\n\n break;\n }\n };\n\n pubSub.subscribe(eventCallback, [\n \"navigationEnd\",\n \"overlayOpened\",\n \"overlayClosed\",\n \"pageNavigationRequested\",\n \"startChatBot\",\n \"authenticated\",\n \"unauthenticated\",\n ]);\n\n determineFloatingButtonVisibility();\n\n return () => {\n pubSub.unsubscribe(eventCallback);\n };\n }, [minimized, chat, chatIsReady]);\n\n return (\n // @ts-ignore\n
\n \n {!onMobileDevice && floatingButtonVisible && }\n {!onMobileDevice && (\n setShowNavigationWarning(false)}>\n {t(\"navigationAlert.content\")}\n \n {\n setShowNavigationWarning(false);\n }}\n >\n \n )}\n
\n );\n};\n","import { FlowType } from \"@gef1/dax-client-sdk\";\nimport { FC, ReactNode, useEffect } from \"react\";\n\nimport { useDatalayer } from \"@/contexts\";\n\nimport css from \"./flow.module.pcss\";\nimport stylesheet from \"./flow.module.pcss?inline\";\nimport { useCss } from \"@gef1/dax-react-sdk\";\n\ninterface FlowProps {\n id: string;\n type: FlowType;\n children: ReactNode;\n}\nexport const Flow: FC = (props: FlowProps) => {\n const datalayer = useDatalayer();\n useCss(stylesheet); \n\n useEffect(() => {\n datalayer.setFlow(props.id, props.type);\n }, []);\n\n return (\n
\n <>{props.children}\n
\n );\n};\n","import { ScreenType } from \"@gef1/dax-gefw-host\";\nimport { FC, ReactNode, useEffect, useRef } from \"react\";\n\nimport { useDatalayer } from \"@/contexts\";\n\nimport css from \"./screen.module.pcss\";\nimport stylesheet from \"./screen.module.pcss?inline\";\nimport { useCss } from \"@gef1/dax-react-sdk\";\n\ninterface ScreenProps {\n id: \"PersonalAssistantChat\" | \"PersonalAssistantNotAvailable\" | \"PersonalAssistantWelcome\";\n type: ScreenType;\n modal?: boolean;\n children: ReactNode;\n}\nexport const Screen: FC = ({ children, id, type, modal }: ScreenProps) => {\n const datalayer = useDatalayer();\n useCss(stylesheet);\n\n const mainElement = useRef(null);\n\n useEffect(() => {\n if (type !== ScreenType.NO_TAG) {\n datalayer.setScreen(id, type, !!modal, {});\n (mainElement.current as unknown as HTMLElement)?.addEventListener(\"geui:genericEvent\", (event: any) => {\n datalayer.addEvent(event.detail.name, event.detail.params);\n });\n }\n }, []);\n\n return (\n
\n {children}\n
\n );\n};\n","import { FC, PropsWithChildren, useState } from \"react\";\n\nimport { PADatePicker } from \"@/components/chat-elements/date-picker/date-picker-element.tsx\";\nimport { DatePickerContext, DatePickerContextProps, DatePickerOptions } from \"@/contexts/datepicker/datepicker-context.ts\";\n\nexport const DatePickerProvider: FC = ({ children }) => {\n const [options, setOptions] = useState();\n\n const openDatePicker: DatePickerContextProps[\"openDatePicker\"] = (options) => {\n setOptions(options);\n };\n\n const onConfirmed = (date: Date) => {\n options!.onConfirmed(date);\n\n setOptions(null);\n };\n\n const onCanceled = () => {\n setOptions(null);\n };\n\n return (\n \n {children}\n {options && }\n \n );\n};\n","import type {FC, PropsWithChildren,ReactElement} from \"react\";\n\nimport {DatePickerProvider} from \"./datepicker/datepicker.provider.tsx\";\n\ntype AppContextProps = PropsWithChildren;\n// interface AppContextProps extends PropsWithChildren {\n// }\n \nexport const AppContext: FC = ({\n children,\n}): ReactElement => {\n return (\n {children}\n );\n};","// @ts-ignore\nimport \"./error-content.css\";\n\nimport type { ErrorTranslation } from \"@gef1/dax-client-sdk\";\nimport { ActionButton, Notice } from \"belfius.geui.client.ui-react\";\nimport { FC } from \"react\";\n\nimport { useTranslator } from \"@gef1/dax-react-sdk\";\n\ninterface ErrorContentProps {\n errors: ErrorTranslation[];\n}\n\nexport const ErrorContent: FC = ({ errors }) => {\n const t = useTranslator();\n const reload = () => {\n window.location.reload();\n };\n\n return (\n
\n
\n {errors.map((error, i) => (\n \n ))}\n \n
\n
\n );\n};\n","import { ErrorTranslation } from \"@gef1/dax-client-sdk\";\nimport { isRouteErrorResponse, useRouteError } from \"react-router\";\n\nimport { DEFAULT_ERROR_TRANSLATION } from \"@/constants\";\n\nimport { ErrorContent } from \"./error-content/error-content.tsx\";\n\nexport const ErrorPage = () => {\n const error = useRouteError();\n let description: string;\n\n if (isRouteErrorResponse(error)) {\n description = error.statusText;\n } else if (error instanceof Error) {\n description = error.message;\n } else if (typeof error === \"string\") {\n description = error;\n } else {\n description = \"Unknown error\";\n }\n const errorTranslations: ErrorTranslation[] = [\n {\n ...DEFAULT_ERROR_TRANSLATION,\n description,\n },\n ];\n console.error(error);\n return ;\n};\n","import { ScreenType } from \"@gef1/dax-gefw-host\";\nimport { useSelector } from \"react-redux\";\n\nimport { Chat, ChatHeader, Loader, Screen } from \"@/components\";\n\nimport { RootState } from \"@/store\";\n\nimport css from \"./bdn-chat.module.pcss\";\nimport stylesheet from \"./bdn-chat.module.pcss?inline\";\nimport { useCss } from \"@gef1/dax-react-sdk\";\n\nexport const BDNChatPage = () => {\n const { loading } = useSelector((state: RootState) => state.chat);\n useCss(stylesheet);\n\n return (\n \n
\n \n {loading ? : }\n
\n
\n );\n};\n","import { HeaderIcon, HeaderStyle, NamedHeaderIcon, ScreenType } from \"@gef1/dax-gefw-host\";\nimport { useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport { Chat, Screen } from \"@/components\";\nimport { DatalayerEvents, WEB_APP_READY_EVENT_NAME } from \"@/constants\";\nimport { useDatalayer, useFlowContext, useMobileBridge, usePubSub } from \"@/contexts\";\nimport { useCss, useTranslator } from \"@gef1/dax-react-sdk\";\nimport { useBotDefinition, useChat } from \"@/hooks\";\nimport { BotType, menus } from \"@/menus\";\nimport { RootState } from \"@/store\";\nimport { isAppleDevice, setWebViewScrollable } from \"@/utils\";\n\nimport css from \"./mobile-chat.module.pcss\";\nimport stylesheet from \"./mobile-chat.module.pcss?inline\";\n\nexport const MobileChatPage = () => {\n const datalayer = useDatalayer();\n const flowContext = useFlowContext();\n const { getBotDefinition } = useBotDefinition();\n const mobileBridge = useMobileBridge();\n const pubSub = usePubSub();\n useCss(stylesheet);\n\n const {\n application: { chatIsReady, historyHasBeenFetched },\n chat: { chat },\n } = useSelector((state: RootState) => state);\n const { runWS } = useChat();\n const t = useTranslator();\n const chatToken = chat?.chatToken || (flowContext?.chatToken as string);\n\n useEffect(() => {\n const botDefinition = getBotDefinition(chat.botId);\n\n if (botDefinition?.properties.botType === BotType.INSURANCE) {\n datalayer.addEvent(DatalayerEvents.START_MYBO, { botId: botDefinition.id });\n }\n }, []);\n\n useEffect(() => {\n if (isAppleDevice()) {\n setWebViewScrollable(false);\n }\n\n if (chatToken && !chatIsReady) {\n runWS(chatToken);\n }\n }, [chatToken]);\n\n useEffect(() => {\n if (chatIsReady && historyHasBeenFetched) {\n const botType = (flowContext.botType || \"bank\") as BotType;\n\n const menu = menus[botType];\n\n if (menu) {\n mobileBridge.setHeaderStyle(HeaderStyle.FLOW_INVERTED);\n mobileBridge.setTitleWithSubtitle({ title: t(menu.appName) });\n\n if (menu.leftIcon.icon) {\n mobileBridge.setLeftIcon(menu.leftIcon.icon, t(menu.leftIcon.pubSubAction));\n }\n\n const actions: { key: string; icon: HeaderIcon; title: string }[] = [];\n menu.menus.forEach((value) => {\n const {\n menuAction: { key },\n menu: { icon, title },\n } = value;\n\n actions.push({ key, icon, title: t(title) });\n });\n\n mobileBridge.setOverflowMenu(\n NamedHeaderIcon.OVERFLOW,\n actions.map((e) => ({ ...e, enabled: true })),\n t(\"labels.appMenu\"),\n );\n }\n\n pubSub.publish(WEB_APP_READY_EVENT_NAME, { flowId: flowContext.flowId });\n }\n }, [chatIsReady, historyHasBeenFetched]);\n\n return (\n \n
\n \n
\n
\n );\n};\n","import { HeaderStyle, ScreenType } from \"@gef1/dax-gefw-host\";\nimport { useLottie } from \"lottie-react\";\nimport { FC, useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport { Screen } from \"@/components\";\nimport { useCss, useTranslator } from \"@gef1/dax-react-sdk\";\nimport { useMobileBridge } from \"@/contexts\";\nimport { useTimeout } from \"@/hooks\";\nimport { RootState } from \"@/store\";\nimport { getPartOfDay } from \"@/utils\";\n\nimport AnimationData from \"../../assets/lottie-animations/welcome-animation.json\" with { type: \"json\" };\nimport css from \"./welcome.module.pcss\";\nimport stylesheet from \"./welcome.module.pcss?inline\";\n\ninterface WelcomePageProps {\n onDone?: () => void;\n}\n\nexport const WelcomePage: FC = ({ onDone }) => {\n const t = useTranslator();\n useCss(stylesheet);\n const mobileBridge = useMobileBridge();\n const options = {\n animationData: AnimationData,\n loop: false,\n };\n const { View: WelcomeAnimation } = useLottie(options);\n const { onMobileDevice } = useSelector((state: RootState) => state.application);\n\n // Delayed chat display\n useTimeout(() => onDone?.(), 5500);\n\n useEffect(() => {\n mobileBridge.removeIcons();\n mobileBridge.setHeaderStyle(HeaderStyle.TRANSPARENT_LIGHT);\n }, []);\n\n return (\n \n
\n
\n
\n {WelcomeAnimation}\n
\n
\n

{t(`welcomeMessages.${getPartOfDay()}Greeting`)}

\n

{t(\"welcomeMessages.defaultQuestion\")}

\n
\n
\n
\n );\n};\n","import { useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useNavigate } from \"react-router\";\n\nimport { usePubSub } from \"@/contexts\";\n\nimport { BotType } from \"@/menus\";\nimport { RootState, setMinimized, setWindowHasBeenOpened } from \"@/store\";\nimport { isYesterdayAndLater, ROUTES_NAMES } from \"@/utils\";\n\nimport { BDNChatPage } from \"../chat/bdn-chat.page.tsx\";\nimport { MobileChatPage } from \"../chat/mobile-chat.page.tsx\";\nimport { WelcomePage } from \"../welcome/welcome.page.tsx\";\nimport css from \"./home.module.pcss\";\nimport stylesheet from \"./home.module.pcss?inline\";\nimport { useCss } from \"@gef1/dax-react-sdk\";\n\nconst LAST_WELCOME_SHOWN_KEY: string = \"LAST_WELCOME_SHOWN\";\n\nexport const HomePage = () => {\n const pubSub = usePubSub();\n useCss(stylesheet);\n const dispatch = useDispatch();\n const { chatLaunched, onMobileDevice, minimized } = useSelector((state: RootState) => state.application);\n const { chat } = useSelector((state: RootState) => state.chat);\n const { error, myboFallbackUrl, requestedBotType } = useSelector((state: RootState) => state.chat);\n const navigate = useNavigate();\n\n useEffect(() => {\n if (error) {\n if (requestedBotType === BotType.INSURANCE && myboFallbackUrl) {\n pubSub.publish(\"redirectToWithoutWarning\", { url: myboFallbackUrl });\n dispatch(setMinimized(true));\n } else {\n navigate(ROUTES_NAMES.CHAT_UNAVAILABLE);\n }\n }\n }, [error, myboFallbackUrl, requestedBotType]);\n\n // Figure out if we should run the welcome animation first\n const lastWelcomeShown = localStorage.getItem(LAST_WELCOME_SHOWN_KEY);\n const shouldDisplayWelcome = !lastWelcomeShown || isYesterdayAndLater(new Date(lastWelcomeShown));\n const [welcomeShown, setWelcomeShown] = useState(!shouldDisplayWelcome);\n\n const onDone = () => {\n localStorage.setItem(LAST_WELCOME_SHOWN_KEY, new Date().toISOString());\n setWelcomeShown(true);\n };\n\n if ((!onMobileDevice && !chatLaunched) || !chat.botId) return null;\n\n dispatch(setWindowHasBeenOpened(true));\n\n return (\n \n {welcomeShown ? onMobileDevice ? : : }\n
\n );\n};\n","import { useEffect } from \"react\";\nimport { useDispatch } from \"react-redux\";\n\nimport { useDevChat } from \"@/hooks\";\nimport { setDevMode } from \"@/store\";\n\nimport { HomePage } from \"../home/home.page.tsx\";\n\nexport const DevPage = () => {\n const { startDemoChat } = useDevChat();\n const dispatch = useDispatch();\n\n useEffect(() => {\n dispatch(setDevMode(true));\n }, []);\n\n startDemoChat();\n\n return ;\n};\n","import { ScreenType } from \"@gef1/dax-gefw-host\";\nimport { ActionButton, IconButton } from \"belfius.geui.client.ui-react\";\nimport { useLottie } from \"lottie-react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { Screen } from \"@/components\";\nimport { useCss, useTranslator } from \"@gef1/dax-react-sdk\";\n\nimport { cleanApplicationState, cleanChatState, restartApp, RootState } from \"@/store\";\n\nimport FlowerData from \"../../assets/lottie-animations/flower.json\" with { type: \"json\" };\nimport css from \"./chat-unavailable.module.pcss\";\nimport stylesheet from \"./chat-unavailable.module.pcss?inline\";\nimport { useDaxNavigation } from \"@/hooks\";\nimport { BELFIUS_CONTACT_PAGE_URL, SMART_SEARCH_URL } from \"@/constants\";\n\nexport const ChatUnavailablePage = ({ ...props }) => {\n const { navigate } = useDaxNavigation();\n useCss(stylesheet);\n\n const t = useTranslator();\n const dispatch = useDispatch();\n const options = {\n animationData: FlowerData,\n loop: true,\n style: {\n width: \"200px\",\n height: \"200px\",\n },\n };\n\n const { minimized, onMobileDevice } = useSelector((state: RootState) => state.application);\n // @ts-ignore\n const { View: FlowerAnimation } = useLottie(options);\n\n const restart = () => {\n dispatch(cleanApplicationState());\n dispatch(cleanChatState());\n dispatch(restartApp());\n };\n\n return (\n \n \n
\n restart()} name=\"icoClose\" />\n
\n
{FlowerAnimation}
\n
\n

{t(\"errors.chatUnavailable.sorry\")}

\n

{t(\"errors.chatUnavailable.title\")}

\n

{t(\"errors.chatUnavailable.description\")}

\n
\n
\n {\n navigate(SMART_SEARCH_URL, \"internal\");\n }}\n text={t(\"errors.chatUnavailable.buttons.useSmartSearchLabel\")}\n type={\"secondary\"}\n />\n {\n navigate(BELFIUS_CONTACT_PAGE_URL, \"internal\");\n }}\n text={t(\"errors.chatUnavailable.buttons.otherContactOptionsLabel\")}\n type={\"secondary-inverted\"}\n />\n
\n
\n \n );\n};\n","import { DevLogin, DevLoginProps, DevFormControls } from \"@gef1/dax-react-sdk\";\nimport { FC, useState } from \"react\";\nimport { useFlowContext } from \"@/contexts\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { RootState, setBotId } from \"@/store\";\n/**\n * Add bot\n */\nexport const DevLoginPage: FC> = ({ ...props }) => {\n const context = useFlowContext();\n const dispatch = useDispatch();\n const botId = useSelector((state: RootState) => state.chat.chat.botId);\n const [devMode, setDevMode] = useState(false);\n\n return (\n \n

PA Options

\n
\n \n \n {\n context.botId = ev.target.value; // Just for completeness, the app seems to use redux for this value\n dispatch(setBotId(context.botId));\n }}\n />\n \n \n \n {\n context.extraId = ev.target.value; // Kinda dirty to just update a property instead of creating a new context value\n }}\n />\n \n \n \n {\n setDevMode(ev.target.checked);\n }}\n />\n \n
\n
\n );\n};\n","import { ROUTES_NAMES } from \"@/utils\";\nimport { ErrorPage } from \"./components/errors/error-page.tsx\"; // Error reporting\nimport { DevPage } from \"./pages/dev/dev.page.tsx\";\nimport { ChatUnavailablePage } from \"./pages/chat-unavailable/chat-unavailable.page.tsx\";\nimport { HomePage } from \"./pages/home/home.page.tsx\";\nimport { DevLoginPage } from \"./pages/dev-login/dev-login.page.tsx\";\n\nimport type * as React from \"react\";\nimport { Route, Routes, Outlet } from \"react-router\";\n\nimport { RequireAuth } from \"@gef1/dax-react-sdk\";\nimport { MenuAndFab } from \"@/components\";\n\nexport const AppRoutes: React.FC> = () => {\n return (\n \n \n \n \n }\n errorElement={}\n >\n {/** TODO: MenuAndFab as a layout route is best refactored into the pages themselves */}\n \n \n \n \n }\n >\n } />\n } />\n \n \n } />\n } />\n \n );\n};\n","import { StandaloneHostContext } from \"@gef1/dax-client-sdk\";\nimport type { BdnHostContext, HybridHostContext } from \"@gef1/dax-gefw-host\";\nimport { FlowType } from \"@gef1/dax-gefw-host\";\nimport { useHost } from \"@gef1/dax-react-sdk\";\nimport { FC, useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport type { BrowserRouter, HashRouter, MemoryRouter } from \"react-router\";\n\nimport { Flow } from \"@/components\";\nimport { AppContext } from \"@/contexts/app-context.tsx\";\nimport { useFlowContext } from \"@/contexts/flowcontext-context.ts\";\nimport { resolveBotType, useChat } from \"@/hooks\";\nimport { initialize, RootState, setChat } from \"@/store\";\nimport { APP_MODES, MessageSender } from \"@/utils\";\n\nimport { AppRoutes } from \"./routes.tsx\";\n\nexport type GEFWHostContext = HybridHostContext | BdnHostContext;\nexport type PAHostContext = StandaloneHostContext | GEFWHostContext;\n\ninterface PersonalAssistantAppProps {\n // index.tsx/entry.client.tsx now decide which router to use\n routerComponent: typeof MemoryRouter | typeof BrowserRouter | typeof HashRouter;\n}\n\nexport const PersonalAssistantApp: FC = ({ routerComponent: RouterComponent }) => {\n const host = useHost();\n const dispatch = useDispatch();\n const { stopChat } = useChat();\n\n const context = useFlowContext();\n const onMobile = context.mode === APP_MODES.BM; // alt: This could now be checked with: `host.type === \"Hybrid\"` (please don't do `host instanceof HybridHostContext`)\n const locale = host.session.locale;\n const id = (host as GEFWHostContext).flowId!;\n\n useEffect(() => {\n const botId = (context.botId as string) ?? context.pa?.botIds[0].id;\n const botType = resolveBotType(botId, context);\n dispatch(\n setChat({\n botId: botId as string,\n chatToken: context.chatToken!,\n token: context.token!,\n botType: botType,\n extraId: context?.extraId,\n }),\n );\n dispatch(\n initialize({\n locale, // TODO: Do we still need redux to store the locale?\n onMobileDevice: onMobile,\n nudgePreference: !!context.pa?.showNudge || !context.mode,\n }),\n );\n }, []);\n\n const { chatIsReady } = useSelector((state: RootState) => state.application);\n\n useEffect(() => {\n const handleBeforeUnload = () => {\n if (chatIsReady && !onMobile) {\n MessageSender.getInstance().notifyClientLeft();\n stopChat();\n }\n };\n window.addEventListener(\"beforeunload\", handleBeforeUnload);\n return () => {\n window.removeEventListener(\"beforeunload\", handleBeforeUnload);\n };\n }, [chatIsReady]);\n\n return (\n \n \n \n \n \n \n \n );\n};\n"],"names":["Be","t","e","de","K","n","N","G","k","j","C","ve","je","X","W","q","s","r","o","i","c","F","Me","re","ye","He","ee","we","We","d","$e","a","b","ze","oe","Ee","Q","m","p","u","l","f","E","T","U","h","y","w","S","Re","fe","Ge","he","ie","O","M","Se","v","$","te","x","ne","Ze","B","z","Te","Oe","Ae","_","A","I","xe","Z","Ce","ae","J","P","H","be","ce","Ne","se","Le","Y","Ue","V","L","ge","D","pe","le","g","R","ke","Component","createRef","attrProps","key","value","attr","_jsx","event","args","prevProps","el","date","DatalayerEvents","exports","MILLISECONDS","SECONDS","ReadyState","eventSourceSupported","resetWebSockets","url","url_1","constants_1","require$$0","parseSocketIOUrl","isSecure","strippedProtocol","removedFinalBackSlack","protocol","port","appendQueryParams","params","hasParamsRegex","alreadyHasParams","stringified","next","_a","setUpSocketIOPing","sendMessage","interval","ping","heartbeat_1","heartbeat","ws","lastMessageTime","options","_b","_c","timeout","_d","message","heartbeatInterval","err","subscribers","EMPTY_LIST","getSubscribers","hasSubscribers","addSubscriber","subscriber","removeSubscriber","resetSubscribers","assertIsWebSocket","resetGlobalState","globals_1","manage_subscribers_1","require$$1","webSocketInstance","skip","__assign","this","socket_io_1","require$$2","util_1","require$$3","bindMessageHandler","optionsRef","setLastMessage","bindOpenHandler","setReadyState","reconnectCount","heartbeatOptions","bindCloseHandler","reconnect","reconnectTimeout","reconnectAttempts","nextReconnectInterval","bindErrorHandler","error","attachListeners","setters","cancelReconnectOnClose","cancelReconnectOnError","attachSharedListeners_1","require$$4","attachSharedListeners","attach_listener_1","attach_shared_listeners_1","cleanSubscribers","clearSocketIoPingInterval","socketLike","createOrJoinSocket","webSocketRef","startRef","__awaiter","thisArg","_arguments","generator","adopt","resolve","reject","fulfilled","step","rejected","result","__generator","body","verb","op","__spreadArray","to","from","pack","ar","waitFor","duration","getUrl","optionsRef_1","args_1","_i","retriedAttempts","convertedUrl","reconnectLimit","parsedUrl","parsedWithQueryParams","websocketWrapper","webSocket","start","obj","val","__importDefault","mod","react_1","react_dom_1","create_or_join_1","get_url_1","proxy_1","require$$6","useWebSocket","connect","lastMessage","readyState","lastJsonMessage","messageQueue","webSocketProxy","optionsCache","readyStateFromUrl","stringifiedQueryParams","keep","sendJsonMessage","getWebSocket","removeListeners_1","expectClose_1","createOrJoin_1","start_1","protectedSetLastMessage","protectedSetReadyState","prev","state","use_websocket_1","emptyEvent","getSocketData","match","data","useSocketIO","optionsWithSocketIO","socketIOLastMessage","__rest","useEventSource_1","useEventSource","withCredentials","events","optionsWithEventSource","eventsRef","type","handler","use_socket_io_1","use_event_source_1","createContext","useContext","warned","host","useHost","useMemo","mockDatalayer","locale","mockCtx","mockMobileBridge","BrowserWebSocketFactory","context","botId","ApiClient","fetcher","ms","APP_MODES","index","messages","nextMessage","nextTimestamp","nextOrigin","nextTemplate","displayTimestamp","toInteger","dirtyNumber","number","requiredArgs","required","toDate","argument","argStr","_typeof","dirtyDate","dirtyAmount","amount","addMilliseconds","timestamp","defaultOptions","getTimezoneOffsetInMilliseconds","utcDate","dirtyDateLeft","dirtyDateRight","dateLeftStartOfDay","dateRightStartOfDay","isDate","isValid","subMilliseconds","getUTCDayOfYear","startOfYearTimestamp","difference","startOfUTCISOWeek","weekStartsOn","day","diff","getUTCISOWeekYear","year","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCISOWeekYear","fourthOfJanuary","MILLISECONDS_IN_WEEK","getUTCISOWeek","startOfUTCWeek","_ref","_ref2","_ref3","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","getUTCWeekYear","_options$firstWeekCon","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfUTCWeekYear","firstWeek","getUTCWeek","addLeadingZeros","targetLength","sign","output","formatters","token","signedYear","month","dayPeriodEnumValue","numberOfDigits","milliseconds","fractionalSeconds","localize","era","lightFormatters","signedWeekYear","weekYear","twoDigitYear","isoWeekYear","quarter","week","isoWeek","dayOfYear","dayOfWeek","localDayOfWeek","isoDayOfWeek","hours","_localize","originalDate","timezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","offset","dirtyDelimiter","absOffset","minutes","delimiter","pattern","formatLong","matchResult","datePattern","timePattern","dateTimeFormat","longFormatters","format","input","formatDistanceLocale","formatDistance","count","tokenValue","buildFormatLongFn","width","dateFormats","timeFormats","dateTimeFormats","formatRelativeLocale","formatRelative","_date","_baseDate","_options","buildLocalizeFn","dirtyIndex","valuesArray","defaultWidth","_defaultWidth","_width","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","ordinalNumber","rem100","buildMatchFn","string","matchPattern","matchedString","parsePatterns","rest","object","predicate","array","buildMatchPatternFn","parseResult","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","dirtyFormatStr","_ref4","_options$locale2","_options$locale2$opti","_ref5","_ref6","_ref7","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatStr","defaultLocale","formatterOptions","substring","firstCharacter","longFormatter","formatter","matched","dirtyDateToCompare","dateToCompare","dateToCheck","hour","stringDate","assetName","assetsEnvironment","onMobileDevice","form","unit","feminineUnits","suffix","enUS","fr","nl","historyItem","label","historyMessages","acc","dayKey","existingGroup","group","onMobile","replacedData","replacedValue","toBeReplaced","replacedBy","_unHandledCase","minimized","historyLastMessagesIds","unreadCount","dispatch","useTranslator","handleFunctionalMessage","message_id","existingMessage","handleTechnicalMessage","eventName","parsedMessages","parsedMessage","fakeDelay","formattedMessage","action","botDefinition","config","api","webSocketFactory","handleMessages","handleMessageRef","useRef","createChat","botType","response","runWS","stopChat","initializeMessageSender","startChat","chatWs","TESTING_WS_URL","handleMessage","send","msg","startDemoChat","useEffect","navigation","mobileBridge","target","navigationMode","NavigationMode","_interopRequireDefault","module","_typeof2","_index","_index2","_index3","MILLISECONDS_IN_DAY","_index4","defaultOptions_1","getDefaultOptions","setDefaultOptions","newOptions","_index5","require$$5","_default","_index6","_index7","dayPeriodEnum","dateLongFormatter","timeLongFormatter","dateTimeLongFormatter","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","protectedDayOfYearTokens","protectedWeekYearTokens","formattingDayPeriodValues","findIndex","findKey","require$$7","_index8","_index9","_index10","require$$10","_index11","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","cleanEscapedString","length","dtf","formatted","tzNameMatch","timeZone","filled","pos","parsed","testDateFormatted","hourCycleSupported","fullYear","minute","second","millisecond","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_MINUTE","patterns","timezoneString","isUtcDate","absoluteOffset","fixedOffset","tokens","asUTC","asTS","over","localTS","utcGuess","o2","o3","timeZoneString","timeZoneOffset","dirtyDelimeter","delimeter","dirtyOptions","additionalDigits","dateStrings","parseYearResult","restDateString","time","dateString","parts","timeString","patternYYY","patternYYYYY","yearString","centuryString","seconds","fourthOfJanuaryDay","isLeapYear","matches","precededByQuotedSection","replaced","assign","property","cloneObject","offsetMilliseconds","resultDate","extendedOptions","entry","status","canFetchMoreData","setCanFetchMoreData","useState","currentLoadedPage","setCurrentLoadedPage","setData","setError","loading","setLoading","page","setPage","rawData","setRawData","shouldDisplayHistory","setShouldDisplayHistory","setUnreadCount","storedBotId","chatToken","extraId","resets","anonymousSession","useSession","session","flowContext","dateFormat","historyStatus","REQUEST_TIMEOUT","BDNFlowContextBotId","fetchData","now","endDate","startDate","dynamicPageSize","history","lastMessageIds","item","allHistoryMessages","separatorPosition","_unreadCount","items","groupedByDay","errorMessage","fetchUnreadMessages","unreadMessages","id","src","imgSrc","setImgSrc","img","treshold","targetRef","intersectionResult","setIntersectionResult","observer","entries","dependency","ref","setRef","intersectionPercentage","setIntersectionPercentage","useLayoutEffect","callback","delay","savedCallback","close","datalayer","chat","closing","runAction","jsxs","jsx","Markdown","pubSub","setAction","dl","menu","eventSubscriber","MobileHeaderMessage","menuAction","useCss","stylesheet","inputDisabled","setValue","container","updateValue","css","absX","absY","deltaX","deltaY","angle","angleInRadians","set","handlerProps","onStart","isTouch","props","onMove","onUp","clientX","clientY","xy","velocity","vxvy","dir","delta","eventData","cancelablePageSwipe","onEnd","onSwipedDir","cleanUpMouse","attachTouch","cleanup","baseOptions","tls","addState","previousProps","trackMouse","transientState","React.useRef","transientProps","defaultKey","handlers","React.useMemo","stateSetter","global","factory","flag","sources","destination","len","sourcePrototype","prop","prototype","ProxyFunction","AudioController","audioFactory","audio","rateValue","assetPath","createRegularArray","arr","createTypedArrayFactory","propertyNames","tOfVal","absArr","element","currentTime","totalTime","frameMultiplier","totalLoops","currentLoop","firstFrame","totalFrames","nativeError","_count","max","min","color","hsv","colorMap","hex","_counterId","processes","workerFn","workerInstance","workerProxy","path","_workerSelf","createWorker","fn","blob","setupWorker","dataFunctionManager","completeLayers","layers","comps","layerData","jLen","kLen","maskProps","convertPathsToAbsoluteValues","findCompLayers","completeShapes","completeChars","chars","assets","findComp","comp","checkVersion","minimum","animVersionString","animVersion","checkText","minimumVersion","updateTextLayer","textLayer","documentData","iterateLayers","animationData","checkChars","charData","checkPathProperties","pathData","checkColors","iterateShapes","shapes","checkShapes","completeClosingShapes","completeData","moduleOb","formatResponse","xhr","contentTypeHeader","loadAsset","fullPath","errorCallback","animation","process","createProcess","onComplete","onError","loadAnimation","processId","loadData","completeAnimation","anim","proxyImage","canvas","ctx","imageLoaded","footageLoaded","getAssetsPath","assetData","assetsPath","originalPath","imagePath","testImageLoaded","intervalId","box","createImageData","ob","createImgData","createFootageData","footageData","loadAssets","cb","setPath","setAssetsPath","getAsset","destroy","loadedImages","loadedFootages","setCacheType","elementHelper","ImagePreloaderFactory","callbacks","parsePayloadLines","payload","lines","keys","line","keysCount","_markers","markers","_marker","markerData","registerComposition","_thisProjectFunction","name","animType","RendererClass","wrapper","wrapperAttributes","loop","autoplay","prerender","newLayers","expressionsPlugin","segments","segment","segmentPath","animData","height","_height","markerName","marker","isFrame","numValue","nextValue","_isComplete","init","end","pendingFrame","forceFlag","isLooping","registeredAnimations","initTime","playingAnimationsNum","_stopped","_isFrozen","removeElement","ev","animItem","subtractPlayingCount","registerAnimation","setupAnimation","getRegisteredAnimations","lenAnims","animations","addPlayingCount","activate","setSpeed","setDirection","play","resume","nowTime","elapsedTime","first","pause","goToAndStop","stop","togglePause","searchAnimations","standalone","renderer","animElements","div","resize","freeze","unfreeze","setVolume","mute","unmute","getBezierEasing","beziers","nm","str","bezEasing","BezierEasing","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","aA1","aA2","calcBezier","aT","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","newtonRaphsonIterate","aGuessT","currentSlope","points","mY1","mY2","mSampleValues","intervalStart","currentSample","lastSample","dist","guessForT","initialSlope","_double","initialLength","_create","_release","_length","_maxLength","pool","newElement","release","create","math","pointOnLine2D","x1","y1","x2","y2","x3","y3","det1","pointOnLine3D","z1","z2","z3","dist1","dist2","dist3","diffDist","getBezierLength","pt1","pt2","pt3","pt4","curveSegments","ptCoord","perc","addedLength","ptDistance","point","lastPoint","lengthData","getSegmentsLength","shapeData","segmentsLength","closed","pathV","pathO","pathI","lengths","totalLength","BezierData","PointData","partial","buildBezierData","storedData","bezierName","bezierData","getDistancePerc","percents","initPos","lengthPos","lPerc","getPointInSegment","percent","t1","u1","ptX","ptY","bezierSegmentPoints","getNewSegment","startPerc","endPerc","t0","u0","u0u0u0","t0u0u0_3","t0t0u0_3","t0t0t0","u0u0u1","t0u0u1_3","t0t0u1_3","t0t0t1","u0u1u1","t0u1u1_3","t0t1u1_3","t0t1t1","u1u1u1","t1u1u1_3","t1t1u1_3","t1t1t1","frameNum","caching","offsetTime","newValue","iterationIndex","keyData","nextKeyData","keyframeMetadata","fnc","nextKeyTime","keyTime","endValue","ind","distanceInLine","segmentPerc","outX","outY","inX","inY","keyValue","quatStart","quatEnd","out","ax","ay","az","aw","bx","by","bz","bw","omega","cosom","sinom","scale0","scale1","quat","qx","qy","qz","qw","heading","attitude","bank","values","c1","c2","c3","s1","s2","s3","endTime","renderResult","multipliedValue","finalValue","effectFunction","elem","mult","ti","arrLen","getProp","replace","vX","vY","oX","oY","iX","iY","newPath","vertices","outPoints","inPoints","cnt","shapePath","clone","shape","cloned","newShapeCollection","shapeCollection","initFrame","interpolateShape","previousValue","keyPropS","keyPropE","isHold","vertexValue","kf","interpolateShapeCurrentTime","lastFrame","resetShape","shapesEqual","shape1","shape2","setVValue","processEffectsSequence","ShapeProperty","addEffect","KeyframedShapeProperty","EllShapeProperty","cPoint","EllShapePropertyFactory","p0","p1","s0","_cw","_v","StarShapeProperty","StarShapePropertyFactory","numPts","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","rad","roundness","perimSegment","currentAng","ox","oy","RectShapeProperty","RectShapePropertyFactory","v0","v1","round","getShapeProp","dataProp","getConstructorFunction","getKeyframedConstructorFunction","_cos","_sin","_tan","_rnd","reset","rotate","mCos","mSin","rotateX","rotateY","rotateZ","shear","sx","sy","skew","skewFromAxis","scale","sz","setTransform","translate","tx","ty","tz","transform","a2","b2","d2","e2","f2","g2","h2","i2","j2","k2","l2","m2","n2","p2","_p","a1","b1","d1","e1","f1","g1","h1","i1","j1","k1","l1","m1","n1","o1","multiply","matrix","matrixProps","isIdentity","equals","matr","cloneFromProps","applyToPoint","applyToX","applyToY","applyToZ","getInverseMatrix","determinant","inverseMatrix","inversePoint","pt","inversePoints","pts","retPts","applyToTriplePoints","p4","p5","p12","p13","applyToPointArray","applyToPointStringified","toCSS","cssValue","roundMatrixProperty","to2dCSS","_e","_f","href","prefix","plugin","variable","vars","pair","modifiers","registerModifier","getModifier","shapeLength","totalModifierLength","shapeSegments","segmentOb","shapeS","shapeE","pathsData","_isFirstFrame","_s","shapePaths","totalShapeLength","localShapeCollection","edges","newShapesData","lastShapeInCollection","lastShape","newPaths","newShape","shapeSegment","currentLengthData","segmentCount","segmentLength","centerPoint","pathLength","clonedPath","defaultVector","applyToMatrix","mat","_mdf","processKeys","forceRender","frameRate","v2","px","py","precalculateMatrix","autoOrient","addDynamicProperty","TransformProperty","getTransformProperty","pMatrix","rMatrix","sMatrix","inv","scaleX","scaleY","elemsData","elements","newElements","renderFlag","itemsTransform","cont","hasReloaded","copies","elems","transformData","offsetModulo","roundOffset","pProps","rProps","sProps","iteration","currentV","currentI","currentO","closerV","distance","newPosPerc","rd","singleRoot","p3","linearize","coeffx","coeffy","denom","tcusp","square","root","p10","p11","p20","p21","bez","bounds","t2","split","depth","tolerance","intersections","maxRecursion","d1s","d2s","other","nextIndex","start1","end1","start2","end2","v3","v4","outputBezier","direction","amplitude","outAmplitude","inAmplitude","angO","angI","vector","rot","rotatedVector","cur","prevIndex","prevPoint","nextPoint","pVector","frequency","pointType","prevDist","nextDist","p1a","p1b","p2b","p2a","seg1","seg2","lineJoin","miterLimit","angleOut","angleIn","center","radius","tan","intersection","intersect","outa","outb","flex","left","right","mid","inputBezier","multiSegments","lastSeg","multiSegment","fontData","styles","fWeight","fStyle","styleName","maxWaitingTime","emptyChar","combinedCharacters","BLACK_FLAG_CODE_POINT","CANCEL_TAG_CODE_POINT","A_TAG_CODE_POINT","Z_TAG_CODE_POINT","VARIATION_SELECTOR_16_CODE_POINT","ZERO_WIDTH_JOINER_CODE_POINT","REGIONAL_CHARACTER_A_CODE_POINT","REGIONAL_CHARACTER_Z_CODE_POINT","surrogateModifiers","trimFontOptions","font","familyArray","enabledFamilies","setUpNode","family","parentNode","node","checkLoadedFonts","loadedCount","createHelper","def","engine","helper","fontProps","tHelper","tCanvasHelper","measure","text","addFonts","defs","fontArr","_pendingFonts","shouldLoadFont","loadedSelector","sc","addChars","found","getCharData","_char","style","measureText","_char2","fontName","size","doubleSize","singleSize","getFontByName","getCodePoint","codePoint","isModifier","firstCharCode","secondCharCode","sum","isZeroWidthJoiner","charCode","isVariationSelector","isRegionalCode","isFlagEmoji","isCombinedCharacter","_char3","isRegionalFlag","setIsLoaded","Font","fontPrototype","component","num","blendModeEnums","mode","effects","effectItem","eff","expressionsInterfaces","LayerExpressionInterface","EffectsExpressionInterface","ShapeExpressionInterface","TextExpressionInterface","CompExpressionInterface","effectsInterface","blendModeValue","globalData","isVisible","FootageInterface","timeRemapped","totalVolume","volumeValue","layer","pInterface","parentName","hierarchy","pathValue","fontsContainer","finalMat","localMat","lmat","localOp","transformEffects","transforms","ptNew","properties","currentMasks","layerId","rect","expansor","feMorph","maskType","maskRef","filterID","mask","isFirstFrame","pathNodes","viewData","pathString","pathShapeValue","createFilter","createAlphaToLuminanceFilter","filId","skipCoordinates","fil","feColorMatrix","source","filterManager","Effect","effect","countsAsEffect","layerElementParent","gg","cp","clipId","cpGroup","matteType","useElement","masker","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","_prototype","position","shouldBreakProcess","transformers","level","styleOb","cLength","pathElement","gradientId","gfill","stops","maskElement","opacityId","maskId","opFill","mProps","_o","shapeString","_identityMatrix","_matrixHelper","createRenderFunction","renderFill","renderGradient","renderGradientStroke","renderStroke","renderPath","renderContentTransform","renderNoop","styleData","itemData","pathStringTransformed","redraw","lLen","lvl","paths","iterations","styleElem","hasOpacity","attr1","attr2","cValues","oValues","ang","tempShapes","areAnimated","elementData","GradientConstructor","transformProperty","ownTransformers","shapeProperty","itemsData","prevViewData","render","ownStyles","ownModifiers","currentTransform","modifier","processedPos","animatedContent","sw","fc","updated","_finalValue","currentValue","currentIndex","textKeys","charactersArray","shouldCombine","shouldCombineNext","currentChars","fontManager","letters","newLineFlag","anchorGrouping","currentSize","currentPos","currentLine","lineWidths","lineWidth","maxLineWidth","trackingOffset","boxWidth","boxHeight","currentHeight","finalText","lastSpaceIndex","uncollapsedSpaces","currentChar","animators","animatorData","letterData","based","indexes","currentInd","newInd","newData","dData","_canResize","_fontValue","floor","TextSelectorPropFactory","easer","tot","smoothness","threshold","newCharsFlag","divisor","getTextSelectorProp","animatorProps","defaultData","textAnimatorAnimatables","textData","renderType","lettersChangedFlag","alignment","matrixHelper","renderedLettersCount","xPos","yPos","pathInfo","currentLength","currentPoint","pointInd","segmentInd","partialLength","tanAngle","yOff","firstLine","animatorSelector","letterValue","offf","xPathPos","yPathPos","initPathPos","initSegmentInd","initPointInd","elemOpacity","letterSw","letterSc","letterFc","letterM","letterP","letterO","animatorJustifyOffset","animatorFirstCharOffset","justifyOffsetMult","lastIndex","isNewLine","animatorOffset","shapeStr","_fontSize","lineNumber","colorData","textArray","textContents","currentTextContent","shapeItem","usesGlyphs","tSpan","singleShape","tElement","justify","textContent","cachedSpansLength","childSpan","glyphElement","glyph","textBox","renderedLetters","renderedLetter","textSpan","elementIndex","matteElement","matteMask","nextElement","animationItem","ariaLabel","titleElement","titleId","descElement","descId","sequence","lumaBuffer","lumaBufferCtx","svg","createLumaSvgFilter","_svg","loadLuma","getLuma","hasMasks","canvasContext","bufferCanvas","bufferCanvas2","buffer","bufferCtx","forceRealStack","transformsManager","styledShape","shouldRender","ownTransforms","parentTransform","groupTransform","nodes","currentStyle","isMain","shapeNodes","groupTransformMat","grd","opacity","hasFill","hasStroke","commands","pathArr","commandsCounter","lastFill","lastStroke","lastStrokeW","imgW","imgH","imgRel","canvasRel","widthCrop","heightCrop","par","rule","actionFlag","containerStyle","origin","elementWidth","elementHeight","elementRel","animationRel","fillType","newLength","forceRestore","currentContext","prevStack","saveOnNativeFlag","currentStack","newStack","trProps","currentOpacity","transformedElementStyle","matrixValue","boundingBox","vPoint","oPoint","nextIPoint","nextVPoint","b2ac","widthProperty","kfw","tempBoundingBox","changed","shapeStyle","shapeTransform","innerElemStyle","textColor","tParent","tCont","tContStyle","tContTranslation","tStyle","tSpanTranslation","svgStyle","translation","textPath","margin","svgTransform","perspectiveStyle","perspective","mTransf","diffVector","mag","lookDir","lookLengthOnXZ","mRotationX","mRotationY","hasMatrixChanged","matValue","newDOMElement","nextDOMElement","nextLayer","tmpDOMElement","perspectiveElem","threeDContainerData","lastThreeDContainerData","currentContainer","resizerElem","cWidth","cHeight","floatingContainer","_thisLayerFunction","chunks","digits","rngname","startdenom","significance","overflow","seedrandom","seed","shortseed","mixkey","flatten","tostring","autoseed","arc4","ARC4","prng","is_math_call","copy","keylen","me","typ","stringseed","smear","browser","plugins","BMMath","tOfV","tOfA","lenA","retArr","tOfB","lenB","mm","arr1","arr2","vec","tMin","tMax","value1","value2","_tMin","rnd","rndm","inTangents","outTangents","arrPlaceholder","inVertexPoint","outVertexPoint","_value","wiggle","freq","amp","iWiggle","lenWiggle","addedAmps","periods","elem1","elem2","fVec","pitch","yaw","val1","val2","iKey","lenKey","obKey","fps","framesPerSecond","initExpressions","stackCount","registers","pushExpression","popExpression","releaseInstances","registerExpressionProperty","expression","MaskInterface","MaskManager","maskManager","_masksInterfaces","maskFunction","defaultUnidimensionalValue","defaultMultidimensionalValue","completeProperty","expressionValue","valueProp","UnidimensionalPropertyInterface","MultidimensionalPropertyInterface","arrValue","defaultGetter","_thisFunction","_px","_py","_pz","_transformFactory","getMatrix","toWorldMat","propMatrix","transformMat","toWorldVec","toWorld","fromWorldVec","fromWorld","applyPoint","invertPoint","fromComp","sampleImage","transformInterface","_registerMaskInterface","_registerEffectsInterface","anchorPointDescriptor","interfaceFunction","parentPropertyGroup","propertyName","propertyGroup","_propertyGroup","createEffectsInterface","effectElements","effectsData","createGroupInterface","groupInterface","createValueInterface","expressionProperty","view","iterateElements","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","gradientFillInterfaceFactory","defaultInterfaceFactory","contentsInterfaceFactory","interfaces","transformInterfaceFactory","content","_dashPropertyGroup","dashOb","addPropertyToDashOb","_interfaceFunction","parentGroupWrapper","_sourceText","stringValue","outlineInterfaceFactory","currentPropertyName","currentProperty","searchProperty","propertyNameIndex","dataInterfaceFactory","searchExpressions","getValueAtTime","getSpeedAtTime","speed","getVelocityAtTime","getStaticValueAtTime","setGroupProperty","loopOut","durationFlag","currentFrame","keyframes","lastKeyFrame","cycleDuration","firstKeyFrame","ret","initV","endV","current","repeats","lastValue","nextLastValue","loopIn","firstValue","nextFirstValue","smooth","samples","endFrame","sampleFrequency","sampleValue","getTransformValueAtTime","anchor","skewAxis","rotation","rotationZ","rotationY","rotationX","orientation","positionX","positionY","positionZ","getTransformStaticValueAtTime","propertyGetProp","getShapeValueAtTime","ShapePropertyConstructorFunction","KeyframedShapePropertyConstructorFunction","ShapeExpressions","accumulatedLength","initIndex","endIndex","vectorType","xLength","yLength","magnitude","unitVector","propertyGetShapeProp","trims","isKeyframed","hasExpressions","createMergeNode","resultId","ins","feMerge","feMergeNode","filter","colorBlack","colorWhite","elemChildren","groupPath","dasharrayValue","lineLength","units","feComponentTransfer","feFuncR","feFuncG","feFuncB","color1","color2","color3","tableR","tableG","tableB","inputBlack","inputWhite","gamma","outputBlack","outputWhite","table","colorValue","outputDelta","inputDelta","globalFilterSize","filterSize","feGaussianBlur","feOffset","feFlood","feComposite","col","filterElem","symbolId","children","nextChild","useElem","symbol","kBlurrinessToSigma","sigma","dimensions","sigmaX","sigmaY","edgeMode","effectsManager","forceFrame","isUniformScale","scaleHeight","scaleWidth","_x","_r","_arr","_n","enumerableOnly","symbols","sym","excluded","sourceKeys","sourceSymbolKeys","minLen","hint","prim","res","arg","useLottie","initialSegment","onLoopComplete","onEnterFrame","onSegmentStart","onConfigReady","onDataReady","onDataFailed","onLoadedImages","onDOMLoaded","onDestroy","_useState","_useState2","animationLoaded","setAnimationLoaded","animationInstanceRef","animationContainer","goToAndPlay","playSegments","setSubframe","useSubFrames","getDuration","inFrames","forcedConfigs","onUnmount","partialListeners","listeners","listener","deregisterList","deregister","View","AnimationData","LoadingAnimation","inverted","avatarSize","disabled","setDisabled","navigate","sendBackWithoutShown","getImage","image","handleAction","button","imageElement","buttonElements","formattedDate","dateLabel","initials","agent_initials","agent_flag","isFailed","parsedTime","formattedTime","agent_firstname","failed","e.createElement","e.cloneElement","handleClick","link","fullWidth","preserveBreaks","disableGroup","historyMessage","sendBack","openDatePicker","handleTypeUrl","handleTypeCustom","request","uploadDocumentsDelegation","handleDefault","clientFormattedDate","systemFormattedDate","clickable","buttons","mapButtons","btn","one_time_use","imageUrl","handleUrlAction","iconUrl","title","createElement","dimension","disableAfterClick","template","reply","choices","agent","incoming","handlersElement","initializeScrollState","setScrollPositionAtSwipe","setScrollHeightAtSwipe","scrollToBottom","keepCurrentScrollPosition","newScrollPosition","scrollHeightAtSwipe","scrollPositionAtSwipe","installTouchListener","setAfterMoreHistoryRequested","shouldShowHistory","messageStartIntersectionResult","messagesStartRef","setShouldShowHistory","afterMoreHistoryRequested","historyError","lastPart","Fragment","part","currentInterlocutor","typing","inputContainerHeight","chatWindowRef","messagesEndRef","displayScrollBackBtn","setDisplayScrollBackBtn","lastMessageRef","messagesContent","percentage","typingContent","chatWindowElement","windowSize","setWindowSize","handleListener","viewport","addedStyles","className","ChatInput","onCanceled","onConfirmed","datePickerData","disable_week_days","disable_dates","disable_days","disable_months","default_start","default_end","default_value","shouldShowScrollUpLabel","icon","showMenu","setShowMenu","setMenuAction","actionMenus","memo","leftIcon","chatLaunched","devMode","nudgePreference","windowHasBeenOpened","displayNudge","setDisplayNudge","disappearing","setDisappearing","nudgeHasBeenShown","setNudgeHasBeenShown","showNudgeTimeoutID","setShowNudgeTimeoutID","FlowerAnimation","openChatInMobileApp","handleClickInternal","resetState","hideNudge","timeoutID","chatIsReady","hasBeenClosed","getBotDefinition","floatingButtonVisible","setFloatingButtonVisible","showFPAButtonPreference","setShowFPAButtonPreference","showNavigationWarning","setShowNavigationWarning","navigationURL","setNavigationURL","restoreChat","setRestoreChat","nbOpenOverlays","setNbOpenOverlays","switchingChat","setSwitchingChat","resetChat","determineFloatingButtonVisibility","determineChatWindowVisibility","startChatRequested","shouldMinimize","startChatBot","bot","eventCallback","modal","mainElement","ScreenType","setOptions","errors","reload","description","errorTranslations","historyHasBeenFetched","HeaderStyle","actions","NamedHeaderIcon","onDone","WelcomeAnimation","myboFallbackUrl","requestedBotType","lastWelcomeShown","shouldDisplayWelcome","welcomeShown","setWelcomeShown","restart","setDevMode","DevLogin","DevFormControls","RequireAuth","RouterComponent","handleBeforeUnload","FlowType"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,102,103,104,105,106,107,108,109,110,111,112,113,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,179,180,181,194]}