@vouchfor/embeds 1.3.2 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/es/{browser-1b4c09f1.js → browser-f8654733.js} +2 -2
- package/dist/es/{browser-1b4c09f1.js.map → browser-f8654733.js.map} +1 -1
- package/dist/es/embeds.js +1 -1
- package/dist/es/{index-37e10211.js → index-65006a92.js} +2153 -2150
- package/dist/es/index-65006a92.js.map +1 -0
- package/dist/iife/dialog-embed/{browser-aef6773c.js → browser-b36b6e3e.js} +2 -2
- package/dist/iife/dialog-embed/{browser-aef6773c.js.map → browser-b36b6e3e.js.map} +1 -1
- package/dist/iife/dialog-embed/embed.iife.js +83 -83
- package/dist/iife/dialog-embed/embed.iife.js.map +1 -1
- package/dist/iife/dialog-embed/embed.js +1 -1
- package/dist/iife/dialog-embed/{index-98ee90b7.js → index-72887ffc.js} +2420 -2404
- package/dist/iife/dialog-embed/index-72887ffc.js.map +1 -0
- package/dist/iife/embeds.iife.js +82 -82
- package/dist/iife/embeds.iife.js.map +1 -1
- package/dist/iife/player-embed/{browser-3fc50faa.js → browser-69a47b14.js} +2 -2
- package/dist/iife/player-embed/{browser-3fc50faa.js.map → browser-69a47b14.js.map} +1 -1
- package/dist/iife/player-embed/embed.iife.js +80 -80
- package/dist/iife/player-embed/embed.iife.js.map +1 -1
- package/dist/iife/player-embed/embed.js +1 -1
- package/dist/iife/player-embed/{index-ec0750d4.js → index-854590ba.js} +2389 -2373
- package/dist/iife/player-embed/index-854590ba.js.map +1 -0
- package/package.json +2 -2
- package/dist/es/index-37e10211.js.map +0 -1
- package/dist/iife/dialog-embed/index-98ee90b7.js.map +0 -1
- package/dist/iife/player-embed/index-ec0750d4.js.map +0 -1
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index-65006a92.js","sources":["../../src/utils/events.ts","../../src/components/PlayerEmbed/controllers/event-forwarder.ts","../../src/utils/env.ts","../../src/components/PlayerEmbed/controllers/fetcher.ts","../../../../node_modules/mimic-function/index.js","../../../../node_modules/memoize/dist/index.js","../../../../node_modules/hey-listen/dist/hey-listen.es.js","../../../../node_modules/popmotion/dist/es/utils/clamp.mjs","../../../../node_modules/popmotion/dist/es/utils/progress.mjs","../../../../node_modules/popmotion/dist/es/utils/mix.mjs","../../../../node_modules/style-value-types/dist/es/utils.mjs","../../../../node_modules/style-value-types/dist/es/numbers/index.mjs","../../../../node_modules/style-value-types/dist/es/numbers/units.mjs","../../../../node_modules/style-value-types/dist/es/color/utils.mjs","../../../../node_modules/style-value-types/dist/es/color/hsla.mjs","../../../../node_modules/style-value-types/dist/es/color/rgba.mjs","../../../../node_modules/style-value-types/dist/es/color/hex.mjs","../../../../node_modules/style-value-types/dist/es/color/index.mjs","../../../../node_modules/style-value-types/dist/es/complex/index.mjs","../../../../node_modules/popmotion/dist/es/utils/hsla-to-rgba.mjs","../../../../node_modules/popmotion/dist/es/utils/mix-color.mjs","../../../../node_modules/popmotion/dist/es/utils/inc.mjs","../../../../node_modules/popmotion/dist/es/utils/pipe.mjs","../../../../node_modules/popmotion/dist/es/utils/mix-complex.mjs","../../../../node_modules/popmotion/dist/es/utils/interpolate.mjs","../../../../node_modules/popmotion/dist/es/easing/utils.mjs","../../../../node_modules/popmotion/dist/es/easing/index.mjs","../../../../node_modules/mimic-fn/index.js","../../../../node_modules/p-memoize/dist/index.js","../../../../node_modules/squirrelly/dist/browser/squirrelly.min.js","../../../../node_modules/cross-fetch/dist/browser-ponyfill.js","../../../../node_modules/yoga-layout/src/generated/YGEnums.js","../../../../node_modules/yoga-layout/src/wrapAssembly.js","../../../../node_modules/yoga-layout/binaries/wasm-async-web.js","../../../../node_modules/yoga-layout/src/entrypoint/wasm-async-web.js","../../../canvas-video/dist/canvas-video.js","../../src/components/PlayerEmbed/controllers/tracking/utils.ts","../../src/components/PlayerEmbed/controllers/tracking/index.ts","../../src/components/PlayerEmbed/index.ts","../../src/components/DialogEmbed/DialogOverlay.ts","../../src/components/DialogEmbed/DialogPortal.ts","../../src/components/DialogEmbed/index.ts"],"sourcesContent":["function forwardEvent(type: string, fromElement: HTMLElement, toElement: HTMLElement) {\n function forwarder(event: Event) {\n toElement.dispatchEvent(new CustomEvent(event.type, event));\n }\n\n fromElement.addEventListener(type, forwarder);\n\n return () => {\n fromElement.removeEventListener(type, forwarder);\n };\n}\n\nexport { forwardEvent };\n","import { createRef, ref } from 'lit/directives/ref.js';\n\nimport type { PlayerEmbed } from '..';\nimport type { ReactiveController, ReactiveControllerHost } from 'lit';\nimport type { DirectiveResult } from 'lit/directive.js';\nimport type { Ref } from 'lit/directives/ref.js';\n\nimport { forwardEvent } from '~/utils/events';\n\ntype PlayerEmbedHost = ReactiveControllerHost & PlayerEmbed;\n\nclass EventForwardController implements ReactiveController {\n host: PlayerEmbedHost;\n\n private _events: string[] = [];\n private _cleanup: (() => void)[] = [];\n private _forwardElementRef: Ref<HTMLElement> = createRef();\n\n constructor(host: PlayerEmbedHost, events: string[]) {\n this.host = host;\n this._events = events;\n host.addController(this);\n }\n\n register(): DirectiveResult {\n return ref(this._forwardElementRef);\n }\n\n hostConnected() {\n // Guaranteed to have the element ref in the RAF callback because of how the lit lifecycle works\n requestAnimationFrame(() => {\n this._events.forEach((event) => {\n if (this._forwardElementRef.value) {\n this._cleanup.push(forwardEvent(event, this._forwardElementRef.value, this.host));\n }\n });\n });\n }\n\n hostDisconnected() {\n this._cleanup.forEach((fn) => {\n fn();\n });\n this._cleanup = [];\n }\n}\n\nexport { EventForwardController };\n","type Environment = 'local' | 'dev' | 'staging' | 'prod';\n\ntype GetEnvUrlsReturn = {\n videoUrl: string;\n publicApiUrl: string;\n embedApiUrl: string;\n};\n\nconst devVideoUrl = 'https://d2rxhdlm2q91uk.cloudfront.net';\nconst stagingVideoUrl = 'https://d1ix11aj5kfygl.cloudfront.net';\nconst prodVideoUrl = 'https://d157jlwnudd93d.cloudfront.net';\n\nconst devPublicApiUrl = 'https://bshyfw4h5a.execute-api.ap-southeast-2.amazonaws.com/dev';\nconst stagingPublicApiUrl = 'https://gyzw7rpbq3.execute-api.ap-southeast-2.amazonaws.com/staging';\nconst prodPublicApiUrl = 'https://vfcjuim1l3.execute-api.ap-southeast-2.amazonaws.com/prod';\n\nconst localEmbedApiUrl = 'http://localhost:6060/v2';\nconst devEmbedApiUrl = 'https://embed-dev.vouchfor.com/v2';\nconst stagingEmbedApiUrl = 'https://embed-staging.vouchfor.com/v2';\nconst prodEmbedApiUrl = 'https://embed.vouchfor.com/v2';\n\n// We are handling the case where env is an unknown string so the ts error is a lie\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nfunction getEnvUrls(env: Environment): GetEnvUrlsReturn {\n if (!['local', 'dev', 'staging', 'prod'].includes(env)) {\n throw new Error(`Unknown environment: ${env}`);\n }\n\n if (env === 'local') {\n return {\n videoUrl: devVideoUrl,\n publicApiUrl: devPublicApiUrl,\n embedApiUrl: localEmbedApiUrl\n };\n }\n\n if (env === 'dev') {\n return {\n videoUrl: devVideoUrl,\n publicApiUrl: devPublicApiUrl,\n embedApiUrl: devEmbedApiUrl\n };\n }\n\n if (env === 'staging') {\n return {\n videoUrl: stagingVideoUrl,\n publicApiUrl: stagingPublicApiUrl,\n embedApiUrl: stagingEmbedApiUrl\n };\n }\n\n if (env === 'prod') {\n return {\n videoUrl: prodVideoUrl,\n publicApiUrl: prodPublicApiUrl,\n embedApiUrl: prodEmbedApiUrl\n };\n }\n}\n\nexport { devEmbedApiUrl, stagingEmbedApiUrl, prodEmbedApiUrl, getEnvUrls };\nexport type { Environment };\n","import { Task } from '@lit/task';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport type { PlayerEmbed, PlayerEmbedProps } from '..';\nimport type { ReactiveControllerHost } from 'lit';\nimport type { Environment } from '~/utils/env';\n\nimport { getEnvUrls } from '~/utils/env';\n\ntype PlayerEmbedHost = ReactiveControllerHost & PlayerEmbed;\n\ntype FetchTaskDeps = [\n PlayerEmbedProps['env'],\n PlayerEmbedProps['apiKey'],\n PlayerEmbedProps['data'],\n PlayerEmbedProps['vouchId'],\n PlayerEmbedProps['templateId']\n];\n\ntype FilterTaskDeps = [PlayerEmbedProps['data'], PlayerEmbedProps['questions']];\n\nclass FetcherController {\n host: PlayerEmbedHost;\n\n private _fetching = false;\n private _vouch: PlayerEmbedProps['data'];\n\n set fetching(value) {\n if (this._fetching !== value) {\n this._fetching = value;\n this.host.requestUpdate();\n }\n }\n get fetching() {\n return this._fetching;\n }\n\n private getVouch = async (env: Environment, apiKey: string, vouchId: string) => {\n const { embedApiUrl } = getEnvUrls(env);\n\n const cacheCheck = uuidv4();\n const res = await fetch(`${embedApiUrl}/vouches/${vouchId}`, {\n method: 'GET',\n headers: [\n ['X-Api-Key', apiKey],\n ['X-Cache-Check', cacheCheck]\n ]\n });\n\n const vouch = await res.json();\n this.host.dispatchEvent(new CustomEvent('vouch:loaded', { detail: vouch?.id }));\n\n // HACK: we're currently using API Gateway caching on the embed API without any invalidation logic,\n // so to ensure that the cache stays up to date, whenever we detect a cache hit we trigger another\n // API call with the `Cache-Control` header which will re-fill the cache\n const resCacheCheck = res?.headers?.get('X-Cache-Check');\n if (resCacheCheck !== cacheCheck) {\n fetch(`${embedApiUrl}/vouches/${vouchId}`, {\n method: 'GET',\n headers: [\n ['X-Api-Key', apiKey],\n ['Cache-Control', 'max-age=0']\n ]\n });\n }\n\n return vouch;\n };\n\n private getTemplate = async (env: Environment, apiKey: string, templateId: string) => {\n const { embedApiUrl } = getEnvUrls(env);\n\n const cacheCheck = uuidv4();\n const res = await fetch(`${embedApiUrl}/templates/${templateId}`, {\n method: 'GET',\n headers: [\n ['X-Api-Key', apiKey],\n ['X-Cache-Check', cacheCheck]\n ]\n });\n const template = await res.json();\n\n // HACK: we're currently using API Gateway caching on the embed API without any invalidation logic,\n // so to ensure that the cache stays up to date, whenever we detect a cache hit we trigger another\n // API call with the `Cache-Control` header which will re-fill the cache\n const resCacheCheck = res?.headers?.get('X-Cache-Check');\n if (resCacheCheck !== cacheCheck) {\n fetch(`${embedApiUrl}/templates/${templateId}`, {\n method: 'GET',\n headers: [\n ['X-Api-Key', apiKey],\n ['Cache-Control', 'max-age=0']\n ]\n });\n }\n\n return template;\n };\n\n constructor(host: PlayerEmbedHost) {\n this.host = host;\n new Task<FetchTaskDeps, void>(\n this.host,\n async ([env, apiKey, data, vouchId, templateId]: FetchTaskDeps) => {\n try {\n host.vouch = undefined;\n host.template = undefined;\n\n if (data) {\n let template;\n if (templateId) {\n this.fetching = true;\n template = await this.getTemplate(env, apiKey, templateId);\n }\n this._vouch = data;\n host.template = template ?? data?.settings?.template?.instance;\n } else if (vouchId) {\n this.fetching = true;\n\n const [vouch, template] = await Promise.all([\n this.getVouch(env, apiKey, vouchId),\n templateId ? this.getTemplate(env, apiKey, templateId) : null\n ]);\n this._vouch = vouch;\n host.template = template ?? vouch?.settings?.template?.instance;\n }\n } finally {\n this.fetching = false;\n }\n },\n () => [host.env, host.apiKey, host.data, host.vouchId, host.templateId]\n );\n\n // This second task is to be able to filter the vouch without fetching it again if only the questions changed\n new Task<FilterTaskDeps, void>(\n this.host,\n ([vouch, questions]: FilterTaskDeps) => {\n host.vouch = vouch\n ? {\n ...vouch,\n questions: {\n items: vouch?.questions.items.filter((_, index) => !questions?.length || questions?.includes(index + 1))\n }\n }\n : undefined;\n },\n () => [this._vouch, host.questions]\n );\n }\n}\n\nexport { FetcherController };\n","const copyProperty = (to, from, property, ignoreNonConfigurable) => {\n\t// `Function#length` should reflect the parameters of `to` not `from` since we keep its body.\n\t// `Function#prototype` is non-writable and non-configurable so can never be modified.\n\tif (property === 'length' || property === 'prototype') {\n\t\treturn;\n\t}\n\n\t// `Function#arguments` and `Function#caller` should not be copied. They were reported to be present in `Reflect.ownKeys` for some devices in React Native (#41), so we explicitly ignore them here.\n\tif (property === 'arguments' || property === 'caller') {\n\t\treturn;\n\t}\n\n\tconst toDescriptor = Object.getOwnPropertyDescriptor(to, property);\n\tconst fromDescriptor = Object.getOwnPropertyDescriptor(from, property);\n\n\tif (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {\n\t\treturn;\n\t}\n\n\tObject.defineProperty(to, property, fromDescriptor);\n};\n\n// `Object.defineProperty()` throws if the property exists, is not configurable and either:\n// - one its descriptors is changed\n// - it is non-writable and its value is changed\nconst canCopyProperty = function (toDescriptor, fromDescriptor) {\n\treturn toDescriptor === undefined || toDescriptor.configurable || (\n\t\ttoDescriptor.writable === fromDescriptor.writable\n\t\t&& toDescriptor.enumerable === fromDescriptor.enumerable\n\t\t&& toDescriptor.configurable === fromDescriptor.configurable\n\t\t&& (toDescriptor.writable || toDescriptor.value === fromDescriptor.value)\n\t);\n};\n\nconst changePrototype = (to, from) => {\n\tconst fromPrototype = Object.getPrototypeOf(from);\n\tif (fromPrototype === Object.getPrototypeOf(to)) {\n\t\treturn;\n\t}\n\n\tObject.setPrototypeOf(to, fromPrototype);\n};\n\nconst wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/\\n${fromBody}`;\n\nconst toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, 'toString');\nconst toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, 'name');\n\n// We call `from.toString()` early (not lazily) to ensure `from` can be garbage collected.\n// We use `bind()` instead of a closure for the same reason.\n// Calling `from.toString()` early also allows caching it in case `to.toString()` is called several times.\nconst changeToString = (to, from, name) => {\n\tconst withName = name === '' ? '' : `with ${name.trim()}() `;\n\tconst newToString = wrappedToString.bind(null, withName, from.toString());\n\t// Ensure `to.toString.toString` is non-enumerable and has the same `same`\n\tObject.defineProperty(newToString, 'name', toStringName);\n\tObject.defineProperty(to, 'toString', {...toStringDescriptor, value: newToString});\n};\n\nexport default function mimicFunction(to, from, {ignoreNonConfigurable = false} = {}) {\n\tconst {name} = to;\n\n\tfor (const property of Reflect.ownKeys(from)) {\n\t\tcopyProperty(to, from, property, ignoreNonConfigurable);\n\t}\n\n\tchangePrototype(to, from);\n\tchangeToString(to, from, name);\n\n\treturn to;\n}\n","import mimicFunction from 'mimic-function';\nconst cacheStore = new WeakMap();\nconst cacheTimerStore = new WeakMap();\n/**\n[Memoize](https://en.wikipedia.org/wiki/Memoization) functions - An optimization used to speed up consecutive function calls by caching the result of calls with identical input.\n\n@param fn - The function to be memoized.\n\n@example\n```\nimport memoize from 'memoize';\n\nlet index = 0;\nconst counter = () => ++index;\nconst memoized = memoize(counter);\n\nmemoized('foo');\n//=> 1\n\n// Cached as it's the same argument\nmemoized('foo');\n//=> 1\n\n// Not cached anymore as the arguments changed\nmemoized('bar');\n//=> 2\n\nmemoized('bar');\n//=> 2\n```\n*/\nexport default function memoize(fn, { cacheKey, cache = new Map(), maxAge, } = {}) {\n if (maxAge === 0) {\n return fn;\n }\n if (typeof maxAge === 'number') {\n const maxSetIntervalValue = 2147483647;\n if (maxAge > maxSetIntervalValue) {\n throw new TypeError(`The \\`maxAge\\` option cannot exceed ${maxSetIntervalValue}.`);\n }\n if (maxAge < 0) {\n throw new TypeError('The `maxAge` option should not be a negative number.');\n }\n }\n const memoized = function (...arguments_) {\n const key = cacheKey ? cacheKey(arguments_) : arguments_[0];\n const cacheItem = cache.get(key);\n if (cacheItem) {\n return cacheItem.data;\n }\n const result = fn.apply(this, arguments_);\n cache.set(key, {\n data: result,\n maxAge: maxAge ? Date.now() + maxAge : Number.POSITIVE_INFINITY,\n });\n if (typeof maxAge === 'number' && maxAge !== Number.POSITIVE_INFINITY) {\n const timer = setTimeout(() => {\n cache.delete(key);\n }, maxAge);\n timer.unref?.();\n const timers = cacheTimerStore.get(fn) ?? new Set();\n timers.add(timer);\n cacheTimerStore.set(fn, timers);\n }\n return result;\n };\n mimicFunction(memoized, fn, {\n ignoreNonConfigurable: true,\n });\n cacheStore.set(memoized, cache);\n return memoized;\n}\n/**\n@returns A [decorator](https://github.com/tc39/proposal-decorators) to memoize class methods or static class methods.\n\n@example\n```\nimport {memoizeDecorator} from 'memoize';\n\nclass Example {\n index = 0\n\n @memoizeDecorator()\n counter() {\n return ++this.index;\n }\n}\n\nclass ExampleWithOptions {\n index = 0\n\n @memoizeDecorator({maxAge: 1000})\n counter() {\n return ++this.index;\n }\n}\n```\n*/\nexport function memoizeDecorator(options = {}) {\n const instanceMap = new WeakMap();\n return (target, propertyKey, descriptor) => {\n const input = target[propertyKey]; // eslint-disable-line @typescript-eslint/no-unsafe-assignment\n if (typeof input !== 'function') {\n throw new TypeError('The decorated value must be a function');\n }\n delete descriptor.value;\n delete descriptor.writable;\n descriptor.get = function () {\n if (!instanceMap.has(this)) {\n const value = memoize(input, options);\n instanceMap.set(this, value);\n return value;\n }\n return instanceMap.get(this);\n };\n };\n}\n/**\nClear all cached data of a memoized function.\n\n@param fn - The memoized function.\n*/\nexport function memoizeClear(fn) {\n const cache = cacheStore.get(fn);\n if (!cache) {\n throw new TypeError('Can\\'t clear a function that was not memoized!');\n }\n if (typeof cache.clear !== 'function') {\n throw new TypeError('The cache Map can\\'t be cleared!');\n }\n cache.clear();\n for (const timer of cacheTimerStore.get(fn) ?? []) {\n clearTimeout(timer);\n }\n}\n","var warning = function () { };\r\nvar invariant = function () { };\r\nif (process.env.NODE_ENV !== 'production') {\r\n warning = function (check, message) {\r\n if (!check && typeof console !== 'undefined') {\r\n console.warn(message);\r\n }\r\n };\r\n invariant = function (check, message) {\r\n if (!check) {\r\n throw new Error(message);\r\n }\r\n };\r\n}\n\nexport { invariant, warning };\n","const clamp = (min, max, v) => Math.min(Math.max(v, min), max);\n\nexport { clamp };\n","const progress = (from, to, value) => {\n const toFromDifference = to - from;\n return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;\n};\n\nexport { progress };\n","const mix = (from, to, progress) => -progress * from + progress * to + from;\n\nexport { mix };\n","const clamp = (min, max) => (v) => Math.max(Math.min(v, max), min);\nconst sanitize = (v) => (v % 1 ? Number(v.toFixed(5)) : v);\nconst floatRegex = /(-)?([\\d]*\\.?[\\d])+/g;\nconst colorRegex = /(#[0-9a-f]{6}|#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2}(-?[\\d\\.]+%?)\\s*[\\,\\/]?\\s*[\\d\\.]*%?\\))/gi;\nconst singleColorRegex = /^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2}(-?[\\d\\.]+%?)\\s*[\\,\\/]?\\s*[\\d\\.]*%?\\))$/i;\nfunction isString(v) {\n return typeof v === 'string';\n}\n\nexport { clamp, colorRegex, floatRegex, isString, sanitize, singleColorRegex };\n","import { clamp } from '../utils.mjs';\n\nconst number = {\n test: (v) => typeof v === 'number',\n parse: parseFloat,\n transform: (v) => v,\n};\nconst alpha = Object.assign(Object.assign({}, number), { transform: clamp(0, 1) });\nconst scale = Object.assign(Object.assign({}, number), { default: 1 });\n\nexport { alpha, number, scale };\n","import { isString } from '../utils.mjs';\n\nconst createUnitType = (unit) => ({\n test: (v) => isString(v) && v.endsWith(unit) && v.split(' ').length === 1,\n parse: parseFloat,\n transform: (v) => `${v}${unit}`,\n});\nconst degrees = createUnitType('deg');\nconst percent = createUnitType('%');\nconst px = createUnitType('px');\nconst vh = createUnitType('vh');\nconst vw = createUnitType('vw');\nconst progressPercentage = Object.assign(Object.assign({}, percent), { parse: (v) => percent.parse(v) / 100, transform: (v) => percent.transform(v * 100) });\n\nexport { degrees, percent, progressPercentage, px, vh, vw };\n","import { isString, singleColorRegex, floatRegex } from '../utils.mjs';\n\nconst isColorString = (type, testProp) => (v) => {\n return Boolean((isString(v) && singleColorRegex.test(v) && v.startsWith(type)) ||\n (testProp && Object.prototype.hasOwnProperty.call(v, testProp)));\n};\nconst splitColor = (aName, bName, cName) => (v) => {\n if (!isString(v))\n return v;\n const [a, b, c, alpha] = v.match(floatRegex);\n return {\n [aName]: parseFloat(a),\n [bName]: parseFloat(b),\n [cName]: parseFloat(c),\n alpha: alpha !== undefined ? parseFloat(alpha) : 1,\n };\n};\n\nexport { isColorString, splitColor };\n","import { alpha } from '../numbers/index.mjs';\nimport { percent } from '../numbers/units.mjs';\nimport { sanitize } from '../utils.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst hsla = {\n test: isColorString('hsl', 'hue'),\n parse: splitColor('hue', 'saturation', 'lightness'),\n transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {\n return ('hsla(' +\n Math.round(hue) +\n ', ' +\n percent.transform(sanitize(saturation)) +\n ', ' +\n percent.transform(sanitize(lightness)) +\n ', ' +\n sanitize(alpha.transform(alpha$1)) +\n ')');\n },\n};\n\nexport { hsla };\n","import { number, alpha } from '../numbers/index.mjs';\nimport { sanitize, clamp } from '../utils.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst clampRgbUnit = clamp(0, 255);\nconst rgbUnit = Object.assign(Object.assign({}, number), { transform: (v) => Math.round(clampRgbUnit(v)) });\nconst rgba = {\n test: isColorString('rgb', 'red'),\n parse: splitColor('red', 'green', 'blue'),\n transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => 'rgba(' +\n rgbUnit.transform(red) +\n ', ' +\n rgbUnit.transform(green) +\n ', ' +\n rgbUnit.transform(blue) +\n ', ' +\n sanitize(alpha.transform(alpha$1)) +\n ')',\n};\n\nexport { rgbUnit, rgba };\n","import { rgba } from './rgba.mjs';\nimport { isColorString } from './utils.mjs';\n\nfunction parseHex(v) {\n let r = '';\n let g = '';\n let b = '';\n let a = '';\n if (v.length > 5) {\n r = v.substr(1, 2);\n g = v.substr(3, 2);\n b = v.substr(5, 2);\n a = v.substr(7, 2);\n }\n else {\n r = v.substr(1, 1);\n g = v.substr(2, 1);\n b = v.substr(3, 1);\n a = v.substr(4, 1);\n r += r;\n g += g;\n b += b;\n a += a;\n }\n return {\n red: parseInt(r, 16),\n green: parseInt(g, 16),\n blue: parseInt(b, 16),\n alpha: a ? parseInt(a, 16) / 255 : 1,\n };\n}\nconst hex = {\n test: isColorString('#'),\n parse: parseHex,\n transform: rgba.transform,\n};\n\nexport { hex };\n","import { isString } from '../utils.mjs';\nimport { hex } from './hex.mjs';\nimport { hsla } from './hsla.mjs';\nimport { rgba } from './rgba.mjs';\n\nconst color = {\n test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),\n parse: (v) => {\n if (rgba.test(v)) {\n return rgba.parse(v);\n }\n else if (hsla.test(v)) {\n return hsla.parse(v);\n }\n else {\n return hex.parse(v);\n }\n },\n transform: (v) => {\n return isString(v)\n ? v\n : v.hasOwnProperty('red')\n ? rgba.transform(v)\n : hsla.transform(v);\n },\n};\n\nexport { color };\n","import { color } from '../color/index.mjs';\nimport { number } from '../numbers/index.mjs';\nimport { isString, floatRegex, colorRegex, sanitize } from '../utils.mjs';\n\nconst colorToken = '${c}';\nconst numberToken = '${n}';\nfunction test(v) {\n var _a, _b, _c, _d;\n return (isNaN(v) &&\n isString(v) &&\n ((_b = (_a = v.match(floatRegex)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) + ((_d = (_c = v.match(colorRegex)) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) > 0);\n}\nfunction analyse(v) {\n if (typeof v === 'number')\n v = `${v}`;\n const values = [];\n let numColors = 0;\n const colors = v.match(colorRegex);\n if (colors) {\n numColors = colors.length;\n v = v.replace(colorRegex, colorToken);\n values.push(...colors.map(color.parse));\n }\n const numbers = v.match(floatRegex);\n if (numbers) {\n v = v.replace(floatRegex, numberToken);\n values.push(...numbers.map(number.parse));\n }\n return { values, numColors, tokenised: v };\n}\nfunction parse(v) {\n return analyse(v).values;\n}\nfunction createTransformer(v) {\n const { values, numColors, tokenised } = analyse(v);\n const numValues = values.length;\n return (v) => {\n let output = tokenised;\n for (let i = 0; i < numValues; i++) {\n output = output.replace(i < numColors ? colorToken : numberToken, i < numColors ? color.transform(v[i]) : sanitize(v[i]));\n }\n return output;\n };\n}\nconst convertNumbersToZero = (v) => typeof v === 'number' ? 0 : v;\nfunction getAnimatableNone(v) {\n const parsed = parse(v);\n const transformer = createTransformer(v);\n return transformer(parsed.map(convertNumbersToZero));\n}\nconst complex = { test, parse, createTransformer, getAnimatableNone };\n\nexport { complex };\n","function hueToRgb(p, q, t) {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n}\nfunction hslaToRgba({ hue, saturation, lightness, alpha }) {\n hue /= 360;\n saturation /= 100;\n lightness /= 100;\n let red = 0;\n let green = 0;\n let blue = 0;\n if (!saturation) {\n red = green = blue = lightness;\n }\n else {\n const q = lightness < 0.5\n ? lightness * (1 + saturation)\n : lightness + saturation - lightness * saturation;\n const p = 2 * lightness - q;\n red = hueToRgb(p, q, hue + 1 / 3);\n green = hueToRgb(p, q, hue);\n blue = hueToRgb(p, q, hue - 1 / 3);\n }\n return {\n red: Math.round(red * 255),\n green: Math.round(green * 255),\n blue: Math.round(blue * 255),\n alpha,\n };\n}\n\nexport { hslaToRgba };\n","import { mix } from './mix.mjs';\nimport { hsla, rgba, hex } from 'style-value-types';\nimport { invariant } from 'hey-listen';\nimport { hslaToRgba } from './hsla-to-rgba.mjs';\n\nconst mixLinearColor = (from, to, v) => {\n const fromExpo = from * from;\n const toExpo = to * to;\n return Math.sqrt(Math.max(0, v * (toExpo - fromExpo) + fromExpo));\n};\nconst colorTypes = [hex, rgba, hsla];\nconst getColorType = (v) => colorTypes.find((type) => type.test(v));\nconst notAnimatable = (color) => `'${color}' is not an animatable color. Use the equivalent color code instead.`;\nconst mixColor = (from, to) => {\n let fromColorType = getColorType(from);\n let toColorType = getColorType(to);\n invariant(!!fromColorType, notAnimatable(from));\n invariant(!!toColorType, notAnimatable(to));\n let fromColor = fromColorType.parse(from);\n let toColor = toColorType.parse(to);\n if (fromColorType === hsla) {\n fromColor = hslaToRgba(fromColor);\n fromColorType = rgba;\n }\n if (toColorType === hsla) {\n toColor = hslaToRgba(toColor);\n toColorType = rgba;\n }\n const blended = Object.assign({}, fromColor);\n return (v) => {\n for (const key in blended) {\n if (key !== \"alpha\") {\n blended[key] = mixLinearColor(fromColor[key], toColor[key], v);\n }\n }\n blended.alpha = mix(fromColor.alpha, toColor.alpha, v);\n return fromColorType.transform(blended);\n };\n};\n\nexport { mixColor, mixLinearColor };\n","const zeroPoint = {\n x: 0,\n y: 0,\n z: 0\n};\nconst isNum = (v) => typeof v === 'number';\n\nexport { isNum, zeroPoint };\n","const combineFunctions = (a, b) => (v) => b(a(v));\nconst pipe = (...transformers) => transformers.reduce(combineFunctions);\n\nexport { pipe };\n","import { complex, color } from 'style-value-types';\nimport { mix } from './mix.mjs';\nimport { mixColor } from './mix-color.mjs';\nimport { isNum } from './inc.mjs';\nimport { pipe } from './pipe.mjs';\nimport { warning } from 'hey-listen';\n\nfunction getMixer(origin, target) {\n if (isNum(origin)) {\n return (v) => mix(origin, target, v);\n }\n else if (color.test(origin)) {\n return mixColor(origin, target);\n }\n else {\n return mixComplex(origin, target);\n }\n}\nconst mixArray = (from, to) => {\n const output = [...from];\n const numValues = output.length;\n const blendValue = from.map((fromThis, i) => getMixer(fromThis, to[i]));\n return (v) => {\n for (let i = 0; i < numValues; i++) {\n output[i] = blendValue[i](v);\n }\n return output;\n };\n};\nconst mixObject = (origin, target) => {\n const output = Object.assign(Object.assign({}, origin), target);\n const blendValue = {};\n for (const key in output) {\n if (origin[key] !== undefined && target[key] !== undefined) {\n blendValue[key] = getMixer(origin[key], target[key]);\n }\n }\n return (v) => {\n for (const key in blendValue) {\n output[key] = blendValue[key](v);\n }\n return output;\n };\n};\nfunction analyse(value) {\n const parsed = complex.parse(value);\n const numValues = parsed.length;\n let numNumbers = 0;\n let numRGB = 0;\n let numHSL = 0;\n for (let i = 0; i < numValues; i++) {\n if (numNumbers || typeof parsed[i] === \"number\") {\n numNumbers++;\n }\n else {\n if (parsed[i].hue !== undefined) {\n numHSL++;\n }\n else {\n numRGB++;\n }\n }\n }\n return { parsed, numNumbers, numRGB, numHSL };\n}\nconst mixComplex = (origin, target) => {\n const template = complex.createTransformer(target);\n const originStats = analyse(origin);\n const targetStats = analyse(target);\n const canInterpolate = originStats.numHSL === targetStats.numHSL &&\n originStats.numRGB === targetStats.numRGB &&\n originStats.numNumbers >= targetStats.numNumbers;\n if (canInterpolate) {\n return pipe(mixArray(originStats.parsed, targetStats.parsed), template);\n }\n else {\n warning(true, `Complex values '${origin}' and '${target}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`);\n return (p) => `${p > 0 ? target : origin}`;\n }\n};\n\nexport { mixArray, mixComplex, mixObject };\n","import { progress } from './progress.mjs';\nimport { mix } from './mix.mjs';\nimport { mixColor } from './mix-color.mjs';\nimport { mixComplex, mixArray, mixObject } from './mix-complex.mjs';\nimport { color } from 'style-value-types';\nimport { clamp } from './clamp.mjs';\nimport { pipe } from './pipe.mjs';\nimport { invariant } from 'hey-listen';\n\nconst mixNumber = (from, to) => (p) => mix(from, to, p);\nfunction detectMixerFactory(v) {\n if (typeof v === 'number') {\n return mixNumber;\n }\n else if (typeof v === 'string') {\n if (color.test(v)) {\n return mixColor;\n }\n else {\n return mixComplex;\n }\n }\n else if (Array.isArray(v)) {\n return mixArray;\n }\n else if (typeof v === 'object') {\n return mixObject;\n }\n}\nfunction createMixers(output, ease, customMixer) {\n const mixers = [];\n const mixerFactory = customMixer || detectMixerFactory(output[0]);\n const numMixers = output.length - 1;\n for (let i = 0; i < numMixers; i++) {\n let mixer = mixerFactory(output[i], output[i + 1]);\n if (ease) {\n const easingFunction = Array.isArray(ease) ? ease[i] : ease;\n mixer = pipe(easingFunction, mixer);\n }\n mixers.push(mixer);\n }\n return mixers;\n}\nfunction fastInterpolate([from, to], [mixer]) {\n return (v) => mixer(progress(from, to, v));\n}\nfunction slowInterpolate(input, mixers) {\n const inputLength = input.length;\n const lastInputIndex = inputLength - 1;\n return (v) => {\n let mixerIndex = 0;\n let foundMixerIndex = false;\n if (v <= input[0]) {\n foundMixerIndex = true;\n }\n else if (v >= input[lastInputIndex]) {\n mixerIndex = lastInputIndex - 1;\n foundMixerIndex = true;\n }\n if (!foundMixerIndex) {\n let i = 1;\n for (; i < inputLength; i++) {\n if (input[i] > v || i === lastInputIndex) {\n break;\n }\n }\n mixerIndex = i - 1;\n }\n const progressInRange = progress(input[mixerIndex], input[mixerIndex + 1], v);\n return mixers[mixerIndex](progressInRange);\n };\n}\nfunction interpolate(input, output, { clamp: isClamp = true, ease, mixer } = {}) {\n const inputLength = input.length;\n invariant(inputLength === output.length, 'Both input and output ranges must be the same length');\n invariant(!ease || !Array.isArray(ease) || ease.length === inputLength - 1, 'Array of easing functions must be of length `input.length - 1`, as it applies to the transitions **between** the defined values.');\n if (input[0] > input[inputLength - 1]) {\n input = [].concat(input);\n output = [].concat(output);\n input.reverse();\n output.reverse();\n }\n const mixers = createMixers(output, ease, mixer);\n const interpolator = inputLength === 2\n ? fastInterpolate(input, mixers)\n : slowInterpolate(input, mixers);\n return isClamp\n ? (v) => interpolator(clamp(input[0], input[inputLength - 1], v))\n : interpolator;\n}\n\nexport { interpolate };\n","const reverseEasing = easing => p => 1 - easing(1 - p);\nconst mirrorEasing = easing => p => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;\nconst createExpoIn = (power) => p => Math.pow(p, power);\nconst createBackIn = (power) => p => p * p * ((power + 1) * p - power);\nconst createAnticipate = (power) => {\n const backEasing = createBackIn(power);\n return p => (p *= 2) < 1\n ? 0.5 * backEasing(p)\n : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));\n};\n\nexport { createAnticipate, createBackIn, createExpoIn, mirrorEasing, reverseEasing };\n","import { createExpoIn, reverseEasing, mirrorEasing, createBackIn, createAnticipate } from './utils.mjs';\n\nconst DEFAULT_OVERSHOOT_STRENGTH = 1.525;\nconst BOUNCE_FIRST_THRESHOLD = 4.0 / 11.0;\nconst BOUNCE_SECOND_THRESHOLD = 8.0 / 11.0;\nconst BOUNCE_THIRD_THRESHOLD = 9.0 / 10.0;\nconst linear = p => p;\nconst easeIn = createExpoIn(2);\nconst easeOut = reverseEasing(easeIn);\nconst easeInOut = mirrorEasing(easeIn);\nconst circIn = p => 1 - Math.sin(Math.acos(p));\nconst circOut = reverseEasing(circIn);\nconst circInOut = mirrorEasing(circOut);\nconst backIn = createBackIn(DEFAULT_OVERSHOOT_STRENGTH);\nconst backOut = reverseEasing(backIn);\nconst backInOut = mirrorEasing(backIn);\nconst anticipate = createAnticipate(DEFAULT_OVERSHOOT_STRENGTH);\nconst ca = 4356.0 / 361.0;\nconst cb = 35442.0 / 1805.0;\nconst cc = 16061.0 / 1805.0;\nconst bounceOut = (p) => {\n if (p === 1 || p === 0)\n return p;\n const p2 = p * p;\n return p < BOUNCE_FIRST_THRESHOLD\n ? 7.5625 * p2\n : p < BOUNCE_SECOND_THRESHOLD\n ? 9.075 * p2 - 9.9 * p + 3.4\n : p < BOUNCE_THIRD_THRESHOLD\n ? ca * p2 - cb * p + cc\n : 10.8 * p * p - 20.52 * p + 10.72;\n};\nconst bounceIn = reverseEasing(bounceOut);\nconst bounceInOut = (p) => p < 0.5\n ? 0.5 * (1.0 - bounceOut(1.0 - p * 2.0))\n : 0.5 * bounceOut(p * 2.0 - 1.0) + 0.5;\n\nexport { anticipate, backIn, backInOut, backOut, bounceIn, bounceInOut, bounceOut, circIn, circInOut, circOut, easeIn, easeInOut, easeOut, linear };\n","const copyProperty = (to, from, property, ignoreNonConfigurable) => {\n\t// `Function#length` should reflect the parameters of `to` not `from` since we keep its body.\n\t// `Function#prototype` is non-writable and non-configurable so can never be modified.\n\tif (property === 'length' || property === 'prototype') {\n\t\treturn;\n\t}\n\n\t// `Function#arguments` and `Function#caller` should not be copied. They were reported to be present in `Reflect.ownKeys` for some devices in React Native (#41), so we explicitly ignore them here.\n\tif (property === 'arguments' || property === 'caller') {\n\t\treturn;\n\t}\n\n\tconst toDescriptor = Object.getOwnPropertyDescriptor(to, property);\n\tconst fromDescriptor = Object.getOwnPropertyDescriptor(from, property);\n\n\tif (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {\n\t\treturn;\n\t}\n\n\tObject.defineProperty(to, property, fromDescriptor);\n};\n\n// `Object.defineProperty()` throws if the property exists, is not configurable and either:\n// - one its descriptors is changed\n// - it is non-writable and its value is changed\nconst canCopyProperty = function (toDescriptor, fromDescriptor) {\n\treturn toDescriptor === undefined || toDescriptor.configurable || (\n\t\ttoDescriptor.writable === fromDescriptor.writable &&\n\t\ttoDescriptor.enumerable === fromDescriptor.enumerable &&\n\t\ttoDescriptor.configurable === fromDescriptor.configurable &&\n\t\t(toDescriptor.writable || toDescriptor.value === fromDescriptor.value)\n\t);\n};\n\nconst changePrototype = (to, from) => {\n\tconst fromPrototype = Object.getPrototypeOf(from);\n\tif (fromPrototype === Object.getPrototypeOf(to)) {\n\t\treturn;\n\t}\n\n\tObject.setPrototypeOf(to, fromPrototype);\n};\n\nconst wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/\\n${fromBody}`;\n\nconst toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, 'toString');\nconst toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, 'name');\n\n// We call `from.toString()` early (not lazily) to ensure `from` can be garbage collected.\n// We use `bind()` instead of a closure for the same reason.\n// Calling `from.toString()` early also allows caching it in case `to.toString()` is called several times.\nconst changeToString = (to, from, name) => {\n\tconst withName = name === '' ? '' : `with ${name.trim()}() `;\n\tconst newToString = wrappedToString.bind(null, withName, from.toString());\n\t// Ensure `to.toString.toString` is non-enumerable and has the same `same`\n\tObject.defineProperty(newToString, 'name', toStringName);\n\tObject.defineProperty(to, 'toString', {...toStringDescriptor, value: newToString});\n};\n\nexport default function mimicFunction(to, from, {ignoreNonConfigurable = false} = {}) {\n\tconst {name} = to;\n\n\tfor (const property of Reflect.ownKeys(from)) {\n\t\tcopyProperty(to, from, property, ignoreNonConfigurable);\n\t}\n\n\tchangePrototype(to, from);\n\tchangeToString(to, from, name);\n\n\treturn to;\n}\n","import mimicFn from 'mimic-fn';\nconst cacheStore = new WeakMap();\n/**\n[Memoize](https://en.wikipedia.org/wiki/Memoization) functions - An optimization used to speed up consecutive function calls by caching the result of calls with identical input.\n\n@param fn - Function to be memoized.\n\n@example\n```\nimport {setTimeout as delay} from 'node:timer/promises';\nimport pMemoize from 'p-memoize';\nimport got from 'got';\n\nconst memoizedGot = pMemoize(got);\n\nawait memoizedGot('https://sindresorhus.com');\n\n// This call is cached\nawait memoizedGot('https://sindresorhus.com');\n\nawait delay(2000);\n\n// This call is not cached as the cache has expired\nawait memoizedGot('https://sindresorhus.com');\n```\n*/\nexport default function pMemoize(fn, { cacheKey = ([firstArgument]) => firstArgument, cache = new Map(), } = {}) {\n // Promise objects can't be serialized so we keep track of them internally and only provide their resolved values to `cache`\n // `Promise<AsyncReturnType<FunctionToMemoize>>` is used instead of `ReturnType<FunctionToMemoize>` because promise properties are not kept\n const promiseCache = new Map();\n const memoized = function (...arguments_) {\n const key = cacheKey(arguments_);\n if (promiseCache.has(key)) {\n return promiseCache.get(key);\n }\n const promise = (async () => {\n try {\n if (cache && await cache.has(key)) {\n return (await cache.get(key));\n }\n const promise = fn.apply(this, arguments_);\n const result = await promise;\n try {\n return result;\n }\n finally {\n if (cache) {\n await cache.set(key, result);\n }\n }\n }\n finally {\n promiseCache.delete(key);\n }\n })();\n promiseCache.set(key, promise);\n return promise;\n };\n mimicFn(memoized, fn, {\n ignoreNonConfigurable: true,\n });\n cacheStore.set(memoized, cache);\n return memoized;\n}\n/**\n- Only class methods and getters/setters can be memoized, not regular functions (they aren't part of the proposal);\n- Only [TypeScript’s decorators](https://www.typescriptlang.org/docs/handbook/decorators.html#parameter-decorators) are supported, not [Babel’s](https://babeljs.io/docs/en/babel-plugin-proposal-decorators), which use a different version of the proposal;\n- Being an experimental feature, they need to be enabled with `--experimentalDecorators`; follow TypeScript’s docs.\n\n@returns A [decorator](https://github.com/tc39/proposal-decorators) to memoize class methods or static class methods.\n\n@example\n```\nimport {pMemoizeDecorator} from 'p-memoize';\n\nclass Example {\n index = 0\n\n @pMemoizeDecorator()\n async counter() {\n return ++this.index;\n }\n}\n\nclass ExampleWithOptions {\n index = 0\n\n @pMemoizeDecorator()\n async counter() {\n return ++this.index;\n }\n}\n```\n*/\nexport function pMemoizeDecorator(options = {}) {\n const instanceMap = new WeakMap();\n return (target, propertyKey, descriptor) => {\n const input = target[propertyKey]; // eslint-disable-line @typescript-eslint/no-unsafe-assignment\n if (typeof input !== 'function') {\n throw new TypeError('The decorated value must be a function');\n }\n delete descriptor.value;\n delete descriptor.writable;\n descriptor.get = function () {\n if (!instanceMap.has(this)) {\n const value = pMemoize(input, options);\n instanceMap.set(this, value);\n return value;\n }\n return instanceMap.get(this);\n };\n };\n}\n/**\nClear all cached data of a memoized function.\n\n@param fn - Memoized function.\n*/\nexport function pMemoizeClear(fn) {\n if (!cacheStore.has(fn)) {\n throw new TypeError('Can\\'t clear a function that was not memoized!');\n }\n const cache = cacheStore.get(fn);\n if (!cache) {\n throw new TypeError('Can\\'t clear a function that doesn\\'t use a cache!');\n }\n if (typeof cache.clear !== 'function') {\n throw new TypeError('The cache Map can\\'t be cleared!');\n }\n cache.clear();\n}\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t((e=\"undefined\"!=typeof globalThis?globalThis:e||self).Sqrl={})}(this,(function(e){\"use strict\";function t(e){var n,r,a=new Error(e);return n=a,r=t.prototype,Object.setPrototypeOf?Object.setPrototypeOf(n,r):n.__proto__=r,a}function n(e,n,r){var a=n.slice(0,r).split(/\\n/),i=a.length,s=a[i-1].length+1;throw t(e+=\" at line \"+i+\" col \"+s+\":\\n\\n \"+n.split(/\\n/)[i-1]+\"\\n \"+Array(s).join(\" \")+\"^\")}t.prototype=Object.create(Error.prototype,{name:{value:\"Squirrelly Error\",enumerable:!1}});var r=new Function(\"return this\")().Promise,a=!1;try{a=new Function(\"return (async function(){}).constructor\")()}catch(e){if(!(e instanceof SyntaxError))throw e}function i(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function s(e,t,n){for(var r in t)i(t,r)&&(null==t[r]||\"object\"!=typeof t[r]||\"storage\"!==r&&\"prefixes\"!==r||n?e[r]=t[r]:e[r]=s({},t[r]));return e}var c=/^async +/,o=/`(?:\\\\[\\s\\S]|\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})*}|(?!\\${)[^\\\\`])*`/g,l=/'(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r'\\\\])*?'/g,f=/\"(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r\"\\\\])*?\"/g,u=/[.*+\\-?^${}()|[\\]\\\\]/g;function p(e){return u.test(e)?e.replace(u,\"\\\\$&\"):e}function h(e,r){r.rmWhitespace&&(e=e.replace(/[\\r\\n]+/g,\"\\n\").replace(/^\\s+|\\s+$/gm,\"\")),o.lastIndex=0,l.lastIndex=0,f.lastIndex=0;var a=r.prefixes,i=[a.h,a.b,a.i,a.r,a.c,a.e].reduce((function(e,t){return e&&t?e+\"|\"+p(t):t?p(t):e}),\"\"),s=new RegExp(\"([|()]|=>)|('|\\\"|`|\\\\/\\\\*)|\\\\s*((\\\\/)?(-|_)?\"+p(r.tags[1])+\")\",\"g\"),u=new RegExp(\"([^]*?)\"+p(r.tags[0])+\"(-|_)?\\\\s*(\"+i+\")?\\\\s*\",\"g\"),h=0,d=!1;function g(t,a){var i,p={f:[]},g=0,v=\"c\";function m(t){var a=e.slice(h,t),i=a.trim();if(\"f\"===v)\"safe\"===i?p.raw=!0:r.async&&c.test(i)?(i=i.replace(c,\"\"),p.f.push([i,\"\",!0])):p.f.push([i,\"\"]);else if(\"fp\"===v)p.f[p.f.length-1][1]+=i;else if(\"err\"===v){if(i){var s=a.search(/\\S/);n(\"invalid syntax\",e,h+s)}}else p[v]=i;h=t+1}for(\"h\"===a||\"b\"===a||\"c\"===a?v=\"n\":\"r\"===a&&(p.raw=!0,a=\"i\"),s.lastIndex=h;null!==(i=s.exec(e));){var y=i[1],x=i[2],b=i[3],w=i[4],F=i[5],S=i.index;if(y)\"(\"===y?(0===g&&(\"n\"===v?(m(S),v=\"p\"):\"f\"===v&&(m(S),v=\"fp\")),g++):\")\"===y?0===--g&&\"c\"!==v&&(m(S),v=\"err\"):0===g&&\"|\"===y?(m(S),v=\"f\"):\"=>\"===y&&(m(S),h+=1,v=\"res\");else if(x){if(\"/*\"===x){var I=e.indexOf(\"*/\",s.lastIndex);-1===I&&n(\"unclosed comment\",e,i.index),s.lastIndex=I+2}else if(\"'\"===x){l.lastIndex=i.index,l.exec(e)?s.lastIndex=l.lastIndex:n(\"unclosed string\",e,i.index)}else if('\"'===x){f.lastIndex=i.index,f.exec(e)?s.lastIndex=f.lastIndex:n(\"unclosed string\",e,i.index)}else if(\"`\"===x){o.lastIndex=i.index,o.exec(e)?s.lastIndex=o.lastIndex:n(\"unclosed string\",e,i.index)}}else if(b)return m(S),h=S+i[0].length,u.lastIndex=h,d=F,w&&\"h\"===a&&(a=\"s\"),p.t=a,p}return n(\"unclosed tag\",e,t),p}var v=function i(s,o){s.b=[],s.d=[];var l,f=!1,p=[];function v(e,t){e&&(e=function(e,t,n,r){var a,i;return\"string\"==typeof t.autoTrim?a=i=t.autoTrim:Array.isArray(t.autoTrim)&&(a=t.autoTrim[1],i=t.autoTrim[0]),(n||!1===n)&&(a=n),(r||!1===r)&&(i=r),\"slurp\"===a&&\"slurp\"===i?e.trim():(\"_\"===a||\"slurp\"===a?e=String.prototype.trimLeft?e.trimLeft():e.replace(/^[\\s\\uFEFF\\xA0]+/,\"\"):\"-\"!==a&&\"nl\"!==a||(e=e.replace(/^(?:\\n|\\r|\\r\\n)/,\"\")),\"_\"===i||\"slurp\"===i?e=String.prototype.trimRight?e.trimRight():e.replace(/[\\s\\uFEFF\\xA0]+$/,\"\"):\"-\"!==i&&\"nl\"!==i||(e=e.replace(/(?:\\n|\\r|\\r\\n)$/,\"\")),e)}(e,r,d,t))&&(e=e.replace(/\\\\|'/g,\"\\\\$&\").replace(/\\r\\n|\\n|\\r/g,\"\\\\n\"),p.push(e))}for(;null!==(l=u.exec(e));){var m,y=l[1],x=l[2],b=l[3]||\"\";for(var w in a)if(a[w]===b){m=w;break}v(y,x),h=l.index+l[0].length,m||n(\"unrecognized tag type: \"+b,e,h);var F=g(l.index,m),S=F.t;if(\"h\"===S){var I=F.n||\"\";r.async&&c.test(I)&&(F.a=!0,F.n=I.replace(c,\"\")),F=i(F),p.push(F)}else if(\"c\"===S){if(s.n===F.n)return f?(f.d=p,s.b.push(f)):s.d=p,s;n(\"Helper start and end don't match\",e,l.index+l[0].length)}else if(\"b\"===S){f?(f.d=p,s.b.push(f)):s.d=p;var R=F.n||\"\";r.async&&c.test(R)&&(F.a=!0,F.n=R.replace(c,\"\")),f=F,p=[]}else if(\"s\"===S){var T=F.n||\"\";r.async&&c.test(T)&&(F.a=!0,F.n=T.replace(c,\"\")),p.push(F)}else p.push(F)}if(!o)throw t('unclosed helper \"'+s.n+'\"');return v(e.slice(h,e.length),!1),s.d=p,s}({f:[]},!0);if(r.plugins)for(var m=0;m<r.plugins.length;m++){var y=r.plugins[m];y.processAST&&(v.d=y.processAST(v.d,r))}return v.d}function d(e,t){var n=h(e,t),r=\"var tR='';\"+(t.useWith?\"with(\"+t.varName+\"||{}){\":\"\")+x(n,t)+\"if(cb){cb(null,tR)} return tR\"+(t.useWith?\"}\":\"\");if(t.plugins)for(var a=0;a<t.plugins.length;a++){var i=t.plugins[a];i.processFnString&&(r=i.processFnString(r,t))}return r}function g(e,t){for(var n=0;n<t.length;n++){var r=t[n][0],a=t[n][1];e=(t[n][2]?\"await \":\"\")+\"c.l('F','\"+r+\"')(\"+e,a&&(e+=\",\"+a),e+=\")\"}return e}function v(e,t,n,r,a,i){var s=\"{exec:\"+(a?\"async \":\"\")+y(n,t,e)+\",params:[\"+r+\"]\";return i&&(s+=\",name:'\"+i+\"'\"),a&&(s+=\",async:true\"),s+=\"}\"}function m(e,t){for(var n=\"[\",r=0;r<e.length;r++){var a=e[r];n+=v(t,a.res||\"\",a.d,a.p||\"\",a.a,a.n),r<e.length&&(n+=\",\")}return n+=\"]\"}function y(e,t,n){return\"function(\"+t+\"){var tR='';\"+x(e,n)+\"return tR}\"}function x(e,t){for(var n=0,r=e.length,a=\"\";n<r;n++){var i=e[n];if(\"string\"==typeof i){a+=\"tR+='\"+i+\"';\"}else{var s=i.t,c=i.c||\"\",o=i.f,l=i.n||\"\",f=i.p||\"\",u=i.res||\"\",p=i.b,h=!!i.a;if(\"i\"===s){t.defaultFilter&&(c=\"c.l('F','\"+t.defaultFilter+\"')(\"+c+\")\");var d=g(c,o);!i.raw&&t.autoEscape&&(d=\"c.l('F','e')(\"+d+\")\"),a+=\"tR+=\"+d+\";\"}else if(\"h\"===s)if(t.storage.nativeHelpers.get(l))a+=t.storage.nativeHelpers.get(l)(i,t);else{var y=(h?\"await \":\"\")+\"c.l('H','\"+l+\"')(\"+v(t,u,i.d,f,h);y+=p?\",\"+m(p,t):\",[]\",a+=\"tR+=\"+g(y+=\",c)\",o)+\";\"}else\"s\"===s?a+=\"tR+=\"+g((h?\"await \":\"\")+\"c.l('H','\"+l+\"')({params:[\"+f+\"]},[],c)\",o)+\";\":\"e\"===s&&(a+=c+\"\\n\")}}return a}var b=function(){function e(e){this.cache=e}return e.prototype.define=function(e,t){this.cache[e]=t},e.prototype.get=function(e){return this.cache[e]},e.prototype.remove=function(e){delete this.cache[e]},e.prototype.reset=function(){this.cache={}},e.prototype.load=function(e){s(this.cache,e,!0)},e}();function w(e,n,r,a){if(n&&n.length>0)throw t((a?\"Native\":\"\")+\"Helper '\"+e+\"' doesn't accept blocks\");if(r&&r.length>0)throw t((a?\"Native\":\"\")+\"Helper '\"+e+\"' doesn't accept filters\")}var F={\"&\":\"&\",\"<\":\"<\",\">\":\">\",'\"':\""\",\"'\":\"'\"};function S(e){return F[e]}var I=new b({}),R=new b({each:function(e,t){var n=\"\",r=e.params[0];if(w(\"each\",t,!1),e.async)return new Promise((function(t){!function e(t,n,r,a,i){r(t[n],n).then((function(s){a+=s,n===t.length-1?i(a):e(t,n+1,r,a,i)}))}(r,0,e.exec,n,t)}));for(var a=0;a<r.length;a++)n+=e.exec(r[a],a);return n},foreach:function(e,t){var n=e.params[0];if(w(\"foreach\",t,!1),e.async)return new Promise((function(t){!function e(t,n,r,a,i,s){a(n[r],t[n[r]]).then((function(c){i+=c,r===n.length-1?s(i):e(t,n,r+1,a,i,s)}))}(n,Object.keys(n),0,e.exec,\"\",t)}));var r=\"\";for(var a in n)i(n,a)&&(r+=e.exec(a,n[a]));return r},include:function(e,n,r){w(\"include\",n,!1);var a=r.storage.templates.get(e.params[0]);if(!a)throw t('Could not fetch template \"'+e.params[0]+'\"');return a(e.params[1],r)},extends:function(e,n,r){var a=e.params[1]||{};a.content=e.exec();for(var i=0;i<n.length;i++){var s=n[i];a[s.name]=s.exec()}var c=r.storage.templates.get(e.params[0]);if(!c)throw t('Could not fetch template \"'+e.params[0]+'\"');return c(a,r)},useScope:function(e,t){return w(\"useScope\",t,!1),e.exec(e.params[0])}}),T=new b({if:function(e,t){w(\"if\",!1,e.f,!0);var n=\"if(\"+e.p+\"){\"+x(e.d,t)+\"}\";if(e.b)for(var r=0;r<e.b.length;r++){var a=e.b[r];\"else\"===a.n?n+=\"else{\"+x(a.d,t)+\"}\":\"elif\"===a.n&&(n+=\"else if(\"+a.p+\"){\"+x(a.d,t)+\"}\")}return n},try:function(e,n){if(w(\"try\",!1,e.f,!0),!e.b||1!==e.b.length||\"catch\"!==e.b[0].n)throw t(\"native helper 'try' only accepts 1 block, 'catch'\");var r=\"try{\"+x(e.d,n)+\"}\",a=e.b[0];return r+=\"catch\"+(a.res?\"(\"+a.res+\")\":\"\")+\"{\"+x(a.d,n)+\"}\"},block:function(e,t){return w(\"block\",e.b,e.f,!0),\"if(!\"+t.varName+\"[\"+e.p+\"]){tR+=(\"+y(e.d,\"\",t)+\")()}else{tR+=\"+t.varName+\"[\"+e.p+\"]}\"}}),E=new b({e:function(e){var t=String(e);return/[&<>\"']/.test(t)?t.replace(/[&<>\"']/g,S):t}}),j={varName:\"it\",autoTrim:[!1,\"nl\"],autoEscape:!0,defaultFilter:!1,tags:[\"{{\",\"}}\"],l:function(e,n){if(\"H\"===e){var r=this.storage.helpers.get(n);if(r)return r;throw t(\"Can't find helper '\"+n+\"'\")}if(\"F\"===e){var a=this.storage.filters.get(n);if(a)return a;throw t(\"Can't find filter '\"+n+\"'\")}},async:!1,storage:{helpers:R,nativeHelpers:T,filters:E,templates:I},prefixes:{h:\"@\",b:\"#\",i:\"\",r:\"*\",c:\"/\",e:\"!\"},cache:!1,plugins:[],useWith:!1};function H(e,t){var n={};return s(n,j),t&&s(n,t),e&&s(n,e),n.l.bind(n),n}function O(e,n){var r=H(n||{}),i=Function;if(r.async){if(!a)throw t(\"This environment doesn't support async/await\");i=a}try{return new i(r.varName,\"c\",\"cb\",d(e,r))}catch(n){throw n instanceof SyntaxError?t(\"Bad template syntax\\n\\n\"+n.message+\"\\n\"+Array(n.message.length+1).join(\"=\")+\"\\n\"+d(e,r)):n}}function _(e,t){var n;return t.cache&&t.name&&t.storage.templates.get(t.name)?t.storage.templates.get(t.name):(n=\"function\"==typeof e?e:O(e,t),t.cache&&t.name&&t.storage.templates.define(t.name,n),n)}j.l.bind(j),e.compile=O,e.compileScope=x,e.compileScopeIntoFunction=y,e.compileToString=d,e.defaultConfig=j,e.filters=E,e.getConfig=H,e.helpers=R,e.nativeHelpers=T,e.parse=h,e.render=function(e,n,a,i){var s=H(a||{});if(!s.async)return _(e,s)(n,s);if(!i){if(\"function\"==typeof r)return new r((function(t,r){try{t(_(e,s)(n,s))}catch(e){r(e)}}));throw t(\"Please provide a callback function, this env doesn't support Promises\")}try{_(e,s)(n,s,i)}catch(e){return i(e)}},e.templates=I,Object.defineProperty(e,\"__esModule\",{value:!0})}));\n//# sourceMappingURL=squirrelly.min.js.map\n","// Save global object in a variable\nvar __global__ =\n(typeof globalThis !== 'undefined' && globalThis) ||\n(typeof self !== 'undefined' && self) ||\n(typeof global !== 'undefined' && global);\n// Create an object that extends from __global__ without the fetch function\nvar __globalThis__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = __global__.DOMException\n}\nF.prototype = __global__; // Needed for feature detection on whatwg-fetch's code\nreturn new F();\n})();\n// Wraps whatwg-fetch with a function scope to hijack the global object\n// \"globalThis\" that's going to be patched\n(function(globalThis) {\n\nvar irrelevant = (function (exports) {\n\n var global =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n (typeof global !== 'undefined' && global);\n\n var support = {\n searchParams: 'URLSearchParams' in global,\n iterable: 'Symbol' in global && 'iterator' in Symbol,\n blob:\n 'FileReader' in global &&\n 'Blob' in global &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in global,\n arrayBuffer: 'ArrayBuffer' in global\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n this.bodyUsed = this.bodyUsed;\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this);\n if (isConsumed) {\n return isConsumed\n }\n if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/;\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/;\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();\n }\n }\n }\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText;\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = global.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n setTimeout(function() {\n resolve(new Response(body, options));\n }, 0);\n };\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'));\n }, 0);\n };\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'));\n }, 0);\n };\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n }, 0);\n };\n\n function fixUrl(url) {\n try {\n return url === '' && global.location.href ? global.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob';\n } else if (\n support.arrayBuffer &&\n request.headers.get('Content-Type') &&\n request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1\n ) {\n xhr.responseType = 'arraybuffer';\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) {\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]));\n });\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!global.fetch) {\n global.fetch = fetch;\n global.Headers = Headers;\n global.Request = Request;\n global.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n return exports;\n\n})({});\n})(__globalThis__);\n// This is a ponyfill, so...\n__globalThis__.fetch.ponyfill = true;\ndelete __globalThis__.fetch.polyfill;\n// Choose between native implementation (__global__) or custom implementation (__globalThis__)\nvar ctx = __global__.fetch ? __global__ : __globalThis__;\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.Wrap = exports.Unit = exports.PrintOptions = exports.PositionType = exports.Overflow = exports.NodeType = exports.MeasureMode = exports.LogLevel = exports.Justify = exports.Gutter = exports.FlexDirection = exports.ExperimentalFeature = exports.Errata = exports.Edge = exports.Display = exports.Direction = exports.Dimension = exports.Align = void 0;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n// @generated by enums.py\nlet Align = /*#__PURE__*/function (Align) {\n Align[Align[\"Auto\"] = 0] = \"Auto\";\n Align[Align[\"FlexStart\"] = 1] = \"FlexStart\";\n Align[Align[\"Center\"] = 2] = \"Center\";\n Align[Align[\"FlexEnd\"] = 3] = \"FlexEnd\";\n Align[Align[\"Stretch\"] = 4] = \"Stretch\";\n Align[Align[\"Baseline\"] = 5] = \"Baseline\";\n Align[Align[\"SpaceBetween\"] = 6] = \"SpaceBetween\";\n Align[Align[\"SpaceAround\"] = 7] = \"SpaceAround\";\n return Align;\n}({});\nexports.Align = Align;\nlet Dimension = /*#__PURE__*/function (Dimension) {\n Dimension[Dimension[\"Width\"] = 0] = \"Width\";\n Dimension[Dimension[\"Height\"] = 1] = \"Height\";\n return Dimension;\n}({});\nexports.Dimension = Dimension;\nlet Direction = /*#__PURE__*/function (Direction) {\n Direction[Direction[\"Inherit\"] = 0] = \"Inherit\";\n Direction[Direction[\"LTR\"] = 1] = \"LTR\";\n Direction[Direction[\"RTL\"] = 2] = \"RTL\";\n return Direction;\n}({});\nexports.Direction = Direction;\nlet Display = /*#__PURE__*/function (Display) {\n Display[Display[\"Flex\"] = 0] = \"Flex\";\n Display[Display[\"None\"] = 1] = \"None\";\n return Display;\n}({});\nexports.Display = Display;\nlet Edge = /*#__PURE__*/function (Edge) {\n Edge[Edge[\"Left\"] = 0] = \"Left\";\n Edge[Edge[\"Top\"] = 1] = \"Top\";\n Edge[Edge[\"Right\"] = 2] = \"Right\";\n Edge[Edge[\"Bottom\"] = 3] = \"Bottom\";\n Edge[Edge[\"Start\"] = 4] = \"Start\";\n Edge[Edge[\"End\"] = 5] = \"End\";\n Edge[Edge[\"Horizontal\"] = 6] = \"Horizontal\";\n Edge[Edge[\"Vertical\"] = 7] = \"Vertical\";\n Edge[Edge[\"All\"] = 8] = \"All\";\n return Edge;\n}({});\nexports.Edge = Edge;\nlet Errata = /*#__PURE__*/function (Errata) {\n Errata[Errata[\"None\"] = 0] = \"None\";\n Errata[Errata[\"StretchFlexBasis\"] = 1] = \"StretchFlexBasis\";\n Errata[Errata[\"All\"] = 2147483647] = \"All\";\n Errata[Errata[\"Classic\"] = 2147483646] = \"Classic\";\n return Errata;\n}({});\nexports.Errata = Errata;\nlet ExperimentalFeature = /*#__PURE__*/function (ExperimentalFeature) {\n ExperimentalFeature[ExperimentalFeature[\"WebFlexBasis\"] = 0] = \"WebFlexBasis\";\n ExperimentalFeature[ExperimentalFeature[\"AbsolutePercentageAgainstPaddingEdge\"] = 1] = \"AbsolutePercentageAgainstPaddingEdge\";\n ExperimentalFeature[ExperimentalFeature[\"FixJNILocalRefOverflows\"] = 2] = \"FixJNILocalRefOverflows\";\n return ExperimentalFeature;\n}({});\nexports.ExperimentalFeature = ExperimentalFeature;\nlet FlexDirection = /*#__PURE__*/function (FlexDirection) {\n FlexDirection[FlexDirection[\"Column\"] = 0] = \"Column\";\n FlexDirection[FlexDirection[\"ColumnReverse\"] = 1] = \"ColumnReverse\";\n FlexDirection[FlexDirection[\"Row\"] = 2] = \"Row\";\n FlexDirection[FlexDirection[\"RowReverse\"] = 3] = \"RowReverse\";\n return FlexDirection;\n}({});\nexports.FlexDirection = FlexDirection;\nlet Gutter = /*#__PURE__*/function (Gutter) {\n Gutter[Gutter[\"Column\"] = 0] = \"Column\";\n Gutter[Gutter[\"Row\"] = 1] = \"Row\";\n Gutter[Gutter[\"All\"] = 2] = \"All\";\n return Gutter;\n}({});\nexports.Gutter = Gutter;\nlet Justify = /*#__PURE__*/function (Justify) {\n Justify[Justify[\"FlexStart\"] = 0] = \"FlexStart\";\n Justify[Justify[\"Center\"] = 1] = \"Center\";\n Justify[Justify[\"FlexEnd\"] = 2] = \"FlexEnd\";\n Justify[Justify[\"SpaceBetween\"] = 3] = \"SpaceBetween\";\n Justify[Justify[\"SpaceAround\"] = 4] = \"SpaceAround\";\n Justify[Justify[\"SpaceEvenly\"] = 5] = \"SpaceEvenly\";\n return Justify;\n}({});\nexports.Justify = Justify;\nlet LogLevel = /*#__PURE__*/function (LogLevel) {\n LogLevel[LogLevel[\"Error\"] = 0] = \"Error\";\n LogLevel[LogLevel[\"Warn\"] = 1] = \"Warn\";\n LogLevel[LogLevel[\"Info\"] = 2] = \"Info\";\n LogLevel[LogLevel[\"Debug\"] = 3] = \"Debug\";\n LogLevel[LogLevel[\"Verbose\"] = 4] = \"Verbose\";\n LogLevel[LogLevel[\"Fatal\"] = 5] = \"Fatal\";\n return LogLevel;\n}({});\nexports.LogLevel = LogLevel;\nlet MeasureMode = /*#__PURE__*/function (MeasureMode) {\n MeasureMode[MeasureMode[\"Undefined\"] = 0] = \"Undefined\";\n MeasureMode[MeasureMode[\"Exactly\"] = 1] = \"Exactly\";\n MeasureMode[MeasureMode[\"AtMost\"] = 2] = \"AtMost\";\n return MeasureMode;\n}({});\nexports.MeasureMode = MeasureMode;\nlet NodeType = /*#__PURE__*/function (NodeType) {\n NodeType[NodeType[\"Default\"] = 0] = \"Default\";\n NodeType[NodeType[\"Text\"] = 1] = \"Text\";\n return NodeType;\n}({});\nexports.NodeType = NodeType;\nlet Overflow = /*#__PURE__*/function (Overflow) {\n Overflow[Overflow[\"Visible\"] = 0] = \"Visible\";\n Overflow[Overflow[\"Hidden\"] = 1] = \"Hidden\";\n Overflow[Overflow[\"Scroll\"] = 2] = \"Scroll\";\n return Overflow;\n}({});\nexports.Overflow = Overflow;\nlet PositionType = /*#__PURE__*/function (PositionType) {\n PositionType[PositionType[\"Static\"] = 0] = \"Static\";\n PositionType[PositionType[\"Relative\"] = 1] = \"Relative\";\n PositionType[PositionType[\"Absolute\"] = 2] = \"Absolute\";\n return PositionType;\n}({});\nexports.PositionType = PositionType;\nlet PrintOptions = /*#__PURE__*/function (PrintOptions) {\n PrintOptions[PrintOptions[\"Layout\"] = 1] = \"Layout\";\n PrintOptions[PrintOptions[\"Style\"] = 2] = \"Style\";\n PrintOptions[PrintOptions[\"Children\"] = 4] = \"Children\";\n return PrintOptions;\n}({});\nexports.PrintOptions = PrintOptions;\nlet Unit = /*#__PURE__*/function (Unit) {\n Unit[Unit[\"Undefined\"] = 0] = \"Undefined\";\n Unit[Unit[\"Point\"] = 1] = \"Point\";\n Unit[Unit[\"Percent\"] = 2] = \"Percent\";\n Unit[Unit[\"Auto\"] = 3] = \"Auto\";\n return Unit;\n}({});\nexports.Unit = Unit;\nlet Wrap = /*#__PURE__*/function (Wrap) {\n Wrap[Wrap[\"NoWrap\"] = 0] = \"NoWrap\";\n Wrap[Wrap[\"Wrap\"] = 1] = \"Wrap\";\n Wrap[Wrap[\"WrapReverse\"] = 2] = \"WrapReverse\";\n return Wrap;\n}({});\nexports.Wrap = Wrap;\nconst constants = {\n ALIGN_AUTO: Align.Auto,\n ALIGN_FLEX_START: Align.FlexStart,\n ALIGN_CENTER: Align.Center,\n ALIGN_FLEX_END: Align.FlexEnd,\n ALIGN_STRETCH: Align.Stretch,\n ALIGN_BASELINE: Align.Baseline,\n ALIGN_SPACE_BETWEEN: Align.SpaceBetween,\n ALIGN_SPACE_AROUND: Align.SpaceAround,\n DIMENSION_WIDTH: Dimension.Width,\n DIMENSION_HEIGHT: Dimension.Height,\n DIRECTION_INHERIT: Direction.Inherit,\n DIRECTION_LTR: Direction.LTR,\n DIRECTION_RTL: Direction.RTL,\n DISPLAY_FLEX: Display.Flex,\n DISPLAY_NONE: Display.None,\n EDGE_LEFT: Edge.Left,\n EDGE_TOP: Edge.Top,\n EDGE_RIGHT: Edge.Right,\n EDGE_BOTTOM: Edge.Bottom,\n EDGE_START: Edge.Start,\n EDGE_END: Edge.End,\n EDGE_HORIZONTAL: Edge.Horizontal,\n EDGE_VERTICAL: Edge.Vertical,\n EDGE_ALL: Edge.All,\n ERRATA_NONE: Errata.None,\n ERRATA_STRETCH_FLEX_BASIS: Errata.StretchFlexBasis,\n ERRATA_ALL: Errata.All,\n ERRATA_CLASSIC: Errata.Classic,\n EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS: ExperimentalFeature.WebFlexBasis,\n EXPERIMENTAL_FEATURE_ABSOLUTE_PERCENTAGE_AGAINST_PADDING_EDGE: ExperimentalFeature.AbsolutePercentageAgainstPaddingEdge,\n EXPERIMENTAL_FEATURE_FIX_JNILOCAL_REF_OVERFLOWS: ExperimentalFeature.FixJNILocalRefOverflows,\n FLEX_DIRECTION_COLUMN: FlexDirection.Column,\n FLEX_DIRECTION_COLUMN_REVERSE: FlexDirection.ColumnReverse,\n FLEX_DIRECTION_ROW: FlexDirection.Row,\n FLEX_DIRECTION_ROW_REVERSE: FlexDirection.RowReverse,\n GUTTER_COLUMN: Gutter.Column,\n GUTTER_ROW: Gutter.Row,\n GUTTER_ALL: Gutter.All,\n JUSTIFY_FLEX_START: Justify.FlexStart,\n JUSTIFY_CENTER: Justify.Center,\n JUSTIFY_FLEX_END: Justify.FlexEnd,\n JUSTIFY_SPACE_BETWEEN: Justify.SpaceBetween,\n JUSTIFY_SPACE_AROUND: Justify.SpaceAround,\n JUSTIFY_SPACE_EVENLY: Justify.SpaceEvenly,\n LOG_LEVEL_ERROR: LogLevel.Error,\n LOG_LEVEL_WARN: LogLevel.Warn,\n LOG_LEVEL_INFO: LogLevel.Info,\n LOG_LEVEL_DEBUG: LogLevel.Debug,\n LOG_LEVEL_VERBOSE: LogLevel.Verbose,\n LOG_LEVEL_FATAL: LogLevel.Fatal,\n MEASURE_MODE_UNDEFINED: MeasureMode.Undefined,\n MEASURE_MODE_EXACTLY: MeasureMode.Exactly,\n MEASURE_MODE_AT_MOST: MeasureMode.AtMost,\n NODE_TYPE_DEFAULT: NodeType.Default,\n NODE_TYPE_TEXT: NodeType.Text,\n OVERFLOW_VISIBLE: Overflow.Visible,\n OVERFLOW_HIDDEN: Overflow.Hidden,\n OVERFLOW_SCROLL: Overflow.Scroll,\n POSITION_TYPE_STATIC: PositionType.Static,\n POSITION_TYPE_RELATIVE: PositionType.Relative,\n POSITION_TYPE_ABSOLUTE: PositionType.Absolute,\n PRINT_OPTIONS_LAYOUT: PrintOptions.Layout,\n PRINT_OPTIONS_STYLE: PrintOptions.Style,\n PRINT_OPTIONS_CHILDREN: PrintOptions.Children,\n UNIT_UNDEFINED: Unit.Undefined,\n UNIT_POINT: Unit.Point,\n UNIT_PERCENT: Unit.Percent,\n UNIT_AUTO: Unit.Auto,\n WRAP_NO_WRAP: Wrap.NoWrap,\n WRAP_WRAP: Wrap.Wrap,\n WRAP_WRAP_REVERSE: Wrap.WrapReverse\n};\nvar _default = constants;\nexports.default = _default;\n//# sourceMappingURL=YGEnums.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = wrapAssembly;\nvar _YGEnums = _interopRequireWildcard(require(\"./generated/YGEnums\"));\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n */\n\nfunction wrapAssembly(lib) {\n function patch(prototype, name, fn) {\n const original = prototype[name];\n prototype[name] = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return fn.call(this, original, ...args);\n };\n }\n for (const fnName of ['setPosition', 'setMargin', 'setFlexBasis', 'setWidth', 'setHeight', 'setMinWidth', 'setMinHeight', 'setMaxWidth', 'setMaxHeight', 'setPadding']) {\n const methods = {\n [_YGEnums.Unit.Point]: lib.Node.prototype[fnName],\n [_YGEnums.Unit.Percent]: lib.Node.prototype[`${fnName}Percent`],\n [_YGEnums.Unit.Auto]: lib.Node.prototype[`${fnName}Auto`]\n };\n patch(lib.Node.prototype, fnName, function (original) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n // We patch all these functions to add support for the following calls:\n // .setWidth(100) / .setWidth(\"100%\") / .setWidth(.getWidth()) / .setWidth(\"auto\")\n\n const value = args.pop();\n let unit, asNumber;\n if (value === 'auto') {\n unit = _YGEnums.Unit.Auto;\n asNumber = undefined;\n } else if (typeof value === 'object') {\n unit = value.unit;\n asNumber = value.valueOf();\n } else {\n unit = typeof value === 'string' && value.endsWith('%') ? _YGEnums.Unit.Percent : _YGEnums.Unit.Point;\n asNumber = parseFloat(value);\n if (!Number.isNaN(value) && Number.isNaN(asNumber)) {\n throw new Error(`Invalid value ${value} for ${fnName}`);\n }\n }\n if (!methods[unit]) throw new Error(`Failed to execute \"${fnName}\": Unsupported unit '${value}'`);\n if (asNumber !== undefined) {\n return methods[unit].call(this, ...args, asNumber);\n } else {\n return methods[unit].call(this, ...args);\n }\n });\n }\n function wrapMeasureFunction(measureFunction) {\n return lib.MeasureCallback.implement({\n measure: function () {\n const {\n width,\n height\n } = measureFunction(...arguments);\n return {\n width: width ?? NaN,\n height: height ?? NaN\n };\n }\n });\n }\n patch(lib.Node.prototype, 'setMeasureFunc', function (original, measureFunc) {\n // This patch is just a convenience patch, since it helps write more\n // idiomatic source code (such as .setMeasureFunc(null))\n if (measureFunc) {\n return original.call(this, wrapMeasureFunction(measureFunc));\n } else {\n return this.unsetMeasureFunc();\n }\n });\n function wrapDirtiedFunc(dirtiedFunction) {\n return lib.DirtiedCallback.implement({\n dirtied: dirtiedFunction\n });\n }\n patch(lib.Node.prototype, 'setDirtiedFunc', function (original, dirtiedFunc) {\n original.call(this, wrapDirtiedFunc(dirtiedFunc));\n });\n patch(lib.Config.prototype, 'free', function () {\n // Since we handle the memory allocation ourselves (via lib.Config.create),\n // we also need to handle the deallocation\n lib.Config.destroy(this);\n });\n patch(lib.Node, 'create', (_, config) => {\n // We decide the constructor we want to call depending on the parameters\n return config ? lib.Node.createWithConfig(config) : lib.Node.createDefault();\n });\n patch(lib.Node.prototype, 'free', function () {\n // Since we handle the memory allocation ourselves (via lib.Node.create),\n // we also need to handle the deallocation\n lib.Node.destroy(this);\n });\n patch(lib.Node.prototype, 'freeRecursive', function () {\n for (let t = 0, T = this.getChildCount(); t < T; ++t) {\n this.getChild(0).freeRecursive();\n }\n this.free();\n });\n patch(lib.Node.prototype, 'calculateLayout', function (original) {\n let width = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : NaN;\n let height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : NaN;\n let direction = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _YGEnums.Direction.LTR;\n // Just a small patch to add support for the function default parameters\n return original.call(this, width, height, direction);\n });\n return {\n Config: lib.Config,\n Node: lib.Node,\n ..._YGEnums.default\n };\n}\n//# sourceMappingURL=wrapAssembly.js.map","\nvar loadYoga = (() => {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n \n return (\nfunction(loadYoga) {\n loadYoga = loadYoga || {};\n\n\nvar h;h||(h=typeof loadYoga !== 'undefined' ? loadYoga : {});var ba,ca;h.ready=new Promise(function(a,b){ba=a;ca=b});var da=Object.assign({},h),q=\"\";\"undefined\"!=typeof document&&document.currentScript&&(q=document.currentScript.src);_scriptDir&&(q=_scriptDir);0!==q.indexOf(\"blob:\")?q=q.substr(0,q.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1):q=\"\";var ea=h.print||console.log.bind(console),v=h.printErr||console.warn.bind(console);Object.assign(h,da);da=null;var w;h.wasmBinary&&(w=h.wasmBinary);\nvar noExitRuntime=h.noExitRuntime||!0;\"object\"!=typeof WebAssembly&&x(\"no native wasm support detected\");var fa,ha=!1;function ia(a,b,c){c=b+c;for(var d=\"\";!(b>=c);){var e=a[b++];if(!e)break;if(e&128){var f=a[b++]&63;if(192==(e&224))d+=String.fromCharCode((e&31)<<6|f);else{var g=a[b++]&63;e=224==(e&240)?(e&15)<<12|f<<6|g:(e&7)<<18|f<<12|g<<6|a[b++]&63;65536>e?d+=String.fromCharCode(e):(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023))}}else d+=String.fromCharCode(e)}return d}\nvar ja,ka,z,A,la,C,D,ma,na;function oa(){var a=fa.buffer;ja=a;h.HEAP8=ka=new Int8Array(a);h.HEAP16=A=new Int16Array(a);h.HEAP32=C=new Int32Array(a);h.HEAPU8=z=new Uint8Array(a);h.HEAPU16=la=new Uint16Array(a);h.HEAPU32=D=new Uint32Array(a);h.HEAPF32=ma=new Float32Array(a);h.HEAPF64=na=new Float64Array(a)}var pa,qa=[],ra=[],sa=[];function ta(){var a=h.preRun.shift();qa.unshift(a)}var E=0,ua=null,F=null;\nfunction x(a){if(h.onAbort)h.onAbort(a);a=\"Aborted(\"+a+\")\";v(a);ha=!0;a=new WebAssembly.RuntimeError(a+\". Build with -sASSERTIONS for more info.\");ca(a);throw a;}function va(a){return a.startsWith(\"data:application/octet-stream;base64,\")}var G;G=\"data:application/octet-stream;base64,AGFzbQEAAAABvgM4YAF/AGACf38AYAF/AX9gA39/fwBgAn98AGACf38Bf2ADf39/AX9gAABgA39/fABgAX8BfGADf399AX1gBX9/f39/AX9gAn9/AXxgAAF/YAZ/f31/fX8AYAR/f39/AX9gAn9/AX1gBn9/f39/fwF/YAV/f39/fwBgBH9/f38AYAN/fn8BfmAHf39/f39/fwBgBn9/f39/fwBgAn19AX1gAX0Bf2ABfwF9YAZ/fH9/f38Bf2ACf30AYAR/fHx/AGAIf39/f39/f38AYA1/f39/f39/f39/f39/AGAKf39/f39/f39/fwBgBX9/f39/AXxgBH9/fX0BfWAEfHx/fwF9YA5/fX1/f399fX9/f39/fwF/YAZ/f319f38AYAJ+fwF/YAR/fX1/AX1gA399fQF9YAF8AXxgBH98fHwAYAV/f319fQF9YA5/fX1/f399fX9/f39/fwBgB39/fX99f38AYA1/fX99f31/fX19fX1/AX9gBX9/fX19AGAEf39+fgBgB39/f39/f38Bf2ACfH8BfGAFf398fH8AYAN/f38BfWADf39/AXxgBH9/f3wAYAN/f30AYAZ/f31/fX8BfwKvAR0BYQFhAB0BYQFiAAMBYQFjABUBYQFkABIBYQFlAAcBYQFmAB4BYQFnAAABYQFoAB8BYQFpAAMBYQFqAAABYQFrABYBYQFsAAUBYQFtAAMBYQFuAAEBYQFvABYBYQFwAAYBYQFxAAABYQFyAAABYQFzACABYQF0ABMBYQF1AAsBYQF2ABUBYQF3AAIBYQF4AAMBYQF5AA8BYQF6AAIBYQFBAAEBYQFCABIBYQFDAAEDgwKBAgIXChAQCgoKIQIDEgAGBgcBBRgiGAYPCgMGIwMDBSQDGSUBDwoZAwMKAgUAAAIDAQMGAgcBCAwAFygHAAUAKQIBKistAwMGAgECAAEuCgUKLwcFEwIwCzECBwIAAgEGEwECAgEFAQAHAQURAQEBAQgIAQEAAg0CAgIFAQEBGwMNAQEBCwsGFAIBGhQGAgcCDgAAAAUyMzQMBQYINQUCAwUNDQ02AgMCAgIDBgICNwIMDAwBCQkJCQkJHAIAAAABAA4BBQICAQMCEAMMCQEBAQEBAQkJAQICAwICAgICAgMCCAEICAgEBAQEBAQEBAQABAQABAQEBAAEBAQBAQEICAEBBAcB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ABAAQQgQHSIAQQA2AgQgAEHxADYCAEGbN0GUC0EDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEHyADYCAEGbN0GdEUECQYAlQbgiQdMAIABBABAAQQgQHSIAQQA2AgQgAEHzADYCAEGbN0GxFEEDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEH0ADYCAEGbN0GUDEEDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEH1ADYCAEGbN0GHDUEDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEH2ADYCAEGbN0GlC0EDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEH3ADYCAEGbN0GHFEEDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEH4ADYCAEGbN0HxC0EDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEH5ADYCAEGbN0HZDEEDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEH6ADYCAEGbN0GAC0EDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEH7ADYCAEGbN0GBEkEDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEH8ADYCAEGbN0GtEEEEQaAlQbAlQdkAIABBABAAQQgQHSIAQQA2AgQgAEH9ADYCAEGbN0GfFUEEQaAlQbAlQdkAIABBABAAQQgQHSIAQQA2AgQgAEH+ADYCAEGbN0GnDEEEQaAlQbAlQdkAIABBABAAQQgQHSIAQQA2AgQgAEH/ADYCAEGbN0GMEUEEQaAlQbAlQdkAIABBABAAQQgQHSIAQQA2AgQgAEGAATYCAEGbN0GCF0ECQcQlQcQiQYEBIABBABAAQQgQHSIAQQA2AgQgAEGCATYCAEGbN0GrEkEDQcwlQaAjQYMBIABBABAAQQgQHSIAQQA2AgQgAEGEATYCAEGbN0HcCkECQcQlQcQiQYEBIABBABAAQQgQHSIAQQA2AgQgAEGFATYCAEGbN0GoDkECQcQlQcQiQYEBIABBABAAQQgQHSIAQQA2AgQgAEGGATYCAEGbN0HFFkECQcQlQcQiQYEBIABBABAAQQgQHSIAQQA2AgQgAEGHATYCAEGbN0HcEkECQcQlQcQiQYEBIABBABAAQQgQHSIAQQA2AgQgAEGI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ADoAACAAIAAoAiwiATYCHCAAIAE2AhQgAgsEAEIACwQAQQALigUCBn4CfyABIAEoAgBBB2pBeHEiAUEQajYCACAAIQkgASkDACEDIAEpAwghBiMAQSBrIggkAAJAIAZC////////////AIMiBEKAgICAgIDAgDx9IARCgICAgICAwP/DAH1UBEAgBkIEhiADQjyIhCEEIANC//////////8PgyIDQoGAgICAgICACFoEQCAEQoGAgICAgICAwAB8IQIMAgsgBEKAgICAgICAgEB9IQIgA0KAgICAgICAgAhSDQEgAiAEQgGDfCECDAELIANQIARCgICAgICAwP//AFQgBEKAgICAgIDA//8AURtFBEAgBkIEhiADQjyIhEL/////////A4NCgICAgICAgPz/AIQhAgwBC0KAgICAgICA+P8AIQIgBEL///////+//8MAVg0AQgAhAiAEQjCIpyIAQZH3AEkNACADIQIgBkL///////8/g0KAgICAgIDAAIQiBSEHAkAgAEGB9wBrIgFBwABxBEAgAiABQUBqrYYhB0IAIQIMAQsgAUUNACAHIAGtIgSGIAJBwAAgAWutiIQhByACIASGIQILIAggAjcDECAIIAc3AxgCQEGB+AAgAGsiAEHAAHEEQCAFIABBQGqtiCEDQgAhBQwBCyAARQ0AIAVBwAAgAGuthiADIACtIgKIhCEDIAUgAoghBQsgCCADNwMAIAggBTcDCCAIKQMIQgSGIAgpAwAiA0I8iIQhAiAIKQMQIAgpAxiEQgBSrSADQv//////////D4OEIgNCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyADQoCAgICAgICACFINACACQgGDIAJ8IQILIAhBIGokACAJIAIgBkKAgICAgICAgIB/g4S/OQMAC5gYAxJ/AXwDfiMAQbAEayIMJAAgDEEANgIsAkAgAb0iGUIAUwRAQQEhEUGZCSETIAGaIgG9IRkMAQsgBEGAEHEEQEEBIRFBnAkhEwwBC0GfCUGaCSAEQQFxIhEbIRMgEUUhFQsCQCAZQoCAgICAgID4/wCDQoCAgICAgID4/wBRBEAgAEEgIAIgEUEDaiIDIARB//97cRAoIAAgEyARECcgAEGTE0GDGyAFQSBxIgUbQbQWQYcbIAUbIAEgAWIbQQMQJyAAQSAgAiADIARBgMAAcxAo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ABECAAsFAEGbNwsPACABIAAoAgBqIAI2AgALDQAgASAAKAIAaigCAAsYAQF/QRAQHSIAQgA3AwggAEEANgIAIAALGAEBf0EQEB0iAEIANwMAIABCADcDCCAACwwAQTAQHUEAQTAQKgs3AQF/IAEgACgCBCIDQQF1aiEBIAAoAgAhACABIAIgA0EBcQR/IAEoAgAgAGooAgAFIAALERsACwUAQZY3CyEAIAAgASgCACABIAEsAAtBAEgbQZM3IAIoAgAQDzYCAAsqAQF/QQwQHSIBQQA6AAQgASAAKAIANgIIIABBADYCACABQcgjNgIAIAELBQBBkzcLBQBBkDcLIQAgACABKAIAIAEgASwAC0EASBtB/DYgAigCABAPNgIAC9gBAQR/IwBBIGsiAyQAIAEoAgAiBEHw////B0kEQAJAAkAgBEELTwRAIARBD3JBAWoiBRAdIQYgAyAFQYCAgIB4cjYCECADIAY2AgggAyAENgIMIAQgBmohBQwBCyADIAQ6ABMgA0EIaiIGIARqIQUgBEUNAQsgBiABQQRqIAQQKxoLIAVBADoAACADIAI2AgAgA0EYaiADQQhqIAMgABEDACADKAIYEBAgAygCGCIAEAYgAygCABAGIAMsABNBAEgEQCADKAIIECkLIANBIGokACAADwsQBAALKgEBf0EMEB0iAUEAOgAEIAEgACgCADYCCCAAQQA2AgAgAUHQIjYCACABCwUAQfw2C2kBAn8jAEEQayIGJAAgASAAKAIEIgdBAXVqIQEgACgCACEAIAYgASACIAMgBCAFIAdBAXEEfyABKAIAIABqKAIABSAACxEOAEEQEB0iACAGKQMINwMIIAAgBikDADcDACAGQRBqJAAgAAsFAEH4NgubAQIBfwF9IwBBEGsiAiQAIAAoAgAhACABQQZIBEACfwJAAkACQCABQQRrDgIAAQILIABBpAJqIAAtAKwCQQNxQQJGDQIaIABBnAJqDAILIABBnAJqIAAtAKwCQQNxQQJGDQEaIABBpAJqDAELIAAgAUECdGpBnAJqCyoCACEDIAJBEGokACADuw8LIAJB0A42AgAgACACEC0QLAALmwECAX8BfSMAQRBrIgIkACAAKAIAIQAgAUEGSARAAn8CQAJAAkAgAUEEaw4CAAECCyAAQZQCaiAALQCsAkEDcUECRg0CGiAAQYwC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bXNlbHZlcyBhcyBkaXJ0eQBpc0RpcnR5AG1hcmtEaXJ0eQBkZXN0cm95AHNldERpc3BsYXkAZ2V0RGlzcGxheQBzZXRGbGV4AC0rICAgMFgweAAtMFgrMFggMFgtMHgrMHggMHgAc2V0RmxleEdyb3cAZ2V0RmxleEdyb3cAc2V0T3ZlcmZsb3cAZ2V0T3ZlcmZsb3cAY2FsY3VsYXRlTGF5b3V0AGdldENvbXB1dGVkTGF5b3V0AHVuc2lnbmVkIHNob3J0AGdldENoaWxkQ291bnQAdW5zaWduZWQgaW50AHNldEp1c3RpZnlDb250ZW50AGdldEp1c3RpZnlDb250ZW50AHNldEFsaWduQ29udGVudABnZXRBbGlnbkNvbnRlbnQAZ2V0UGFyZW50AGltcGxlbWVudABzZXRNYXhIZWlnaHRQZXJjZW50AHNldEhlaWdodFBlcmNlbnQAc2V0TWluSGVpZ2h0UGVyY2VudABzZXRGbGV4QmFzaXNQZXJjZW50AHNldFBvc2l0aW9uUGVyY2VudABzZXRNYXJnaW5QZXJjZW50AHNldE1heFdpZHRoUGVyY2VudABzZXRXaWR0aFBlcmNlbnQAc2V0TWluV2lkdGhQZXJjZW50AHNldFBhZGRpbmdQZXJjZW50AGNyZWF0ZURlZmF1bHQAdW5pdAByaWdodABoZWlnaHQAc2V0TWF4SGVpZ2h0AGdldE1heEhlaWdodABzZXRIZWlnaHQAZ2V0SGVpZ2h0AHNldE1pbkhlaWdodABnZXRNaW5IZWlnaHQAZ2V0Q29tcHV0ZWRIZWlnaHQAZ2V0Q29tcHV0ZWRSaWdodABsZWZ0AGdldENvbXB1dGVkTGVmdAByZXNldABfX2Rlc3RydWN0AGZsb2F0AHVpbnQ2NF90AHVzZVdlYkRlZmF1bHRzAHNldFVzZVdlYkRlZmF1bHRzAHNldEFsaWduSXRlbXMAZ2V0QWxpZ25JdGVtcwBzZXRGbGV4QmFzaXMAZ2V0RmxleEJhc2lzAENhbm5vdCBnZXQgbGF5b3V0IHByb3BlcnRpZXMgb2YgbXVsdGktZWRnZSBzaG9ydGhhbmRzAHVzZUxlZ2FjeVN0cmV0Y2hCZWhhdmlvdXIAc2V0VXNlTGVnYWN5U3RyZXRjaEJlaGF2aW91cgBzZXRQb2ludFNjYWxlRmFjdG9yAE1lYXN1cmVDYWxsYmFja1dyYXBwZXIARGlydGllZENhbGxiYWNrV3JhcHBlcgBDYW5ub3QgcmVzZXQgYSBub2RlIHN0aWxsIGF0dGFjaGVkIHRvIGEgb3duZXIAc2V0Qm9yZGVyAGdldEJvcmRlcgBnZXRDb21wdXRlZEJvcmRlcgB1bnNpZ25lZCBjaGFyAHRvcABnZXRDb21wdXRlZFRvcABzZXRGbGV4V3JhcABnZXRGbGV4V3JhcABzZXRHYXAAZ2V0R2FwACVwAHNldEhlaWdodEF1dG8Ac2V0RmxleEJhc2lzQXV0bwBzZXRNYXJnaW5BdXRvAHNldFdpZHRoQXV0bwBTY2FsZSBmYWN0b3Igc2hvdWxkIG5vdCBiZSBsZXNzIHRoYW4gemVybwBzZXRBc3BlY3RSYXRpbwBnZXRBc3BlY3RSYXRpbwBzZXRQb3NpdGlvbgBnZXRQb3NpdGlvbgBub3RpZnlPbkRlc3RydWN0aW9uAHNldEZsZXhEaXJlY3Rpb24AZ2V0RmxleERpcmVjdGlvbgBzZXRNYXJnaW4AZ2V0TWFyZ2luAGdldENvbXB1dGVkTWFyZ2luAG5hbgBib3R0b20AZ2V0Q29tcHV0ZWRCb3R0b20AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0RmxleFNocmluawBnZXRGbGV4U2hyaW5rAE1lYXN1cmVDYWxsYmFjawBEaXJ0aWVkQ2FsbGJhY2sAd2lkdGgAc2V0TWF4V2lkdGgAZ2V0TWF4V2lkdGgAc2V0V2lkdGgAZ2V0V2lkdGgAc2V0TWluV2lkdGgAZ2V0TWluV2lkdGgAZ2V0Q29tcHV0ZWRXaWR0aAB1bnNpZ25lZCBsb25nAHN0ZDo6d3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBzZXRQYWRkaW5nAGdldFBhZGRpbmcAZ2V0Q29tcHV0ZWRQYWRkaW5nAEF0dGVtcHRpbmcgdG8gY29uc3RydWN0IFlHTm9kZSB3aXRoIG51bGwgY29uZmlnAFRyaWVkIHRvIGNvbnN0cnVjdCBZR05vZGUgd2l0aCBudWxsIGNvbmZpZwBjcmVhdGVXaXRoQ29uZmlnAGluZgBzZXRBbGlnblNlbGYAZ2V0QWxpZ25TZWxmAFNpemUAdmFsdWUAVmFsdWUAY3JlYXRlAG1lYXN1cmUAc2V0UG9zaXRpb25UeXBlAGdldFBvc2l0aW9uVHlwZQBpc1JlZmVyZW5jZUJhc2VsaW5lAHNldElzUmVmZXJlbmNlQmFzZWxpbmUAY29weVN0eWxlAGRvdWJsZQBOb2RlAGV4dGVuZABpbnNlcnRDaGlsZABnZXRDaGlsZAByZW1vdmVDaGlsZAB2b2lkAGF2YWlsYWJsZUhlaWdodCBpcyBpbmRlZmluaXRlIHNvIGhlaWdodE1lYXN1cmVNb2RlIG11c3QgYmUgWUdNZWFzdXJlTW9kZVVuZGVmaW5lZABhdmFpbGFibGVXaWR0aCBpcyBpbmRlZmluaXRlIHNvIHdpZHRoTWVhc3VyZU1vZGUgbXVzdCBiZSBZR01lYXN1cmVNb2RlVW5kZWZpbmVkAHNldEV4cGVyaW1lbnRhbEZlYXR1cmVFbmFibGVkAGlzRXhwZXJpbWVudGFsRmVhdHVyZUVuYWJsZWQAZGlydGllZABDYW5ub3QgcmVzZXQgYSBub2RlIHdoaWNoIHN0aWxsIGhhcyBjaGlsZHJlbiBhdHRhY2hlZAB1bnNldE1lYXN1cmVGdW5jAHVuc2V0RGlydGllZEZ1bmMAc2V0RXJyYXRhAGdldEVycmF0YQBFeHBlY3QgY3VzdG9tIGJhc2VsaW5lIGZ1bmN0aW9uIHRvIG5vdCByZXR1cm4gTmFOAE5BTgBJTkYAZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZmxvYXQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDhfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDE2X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDE2X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVp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\";if(!va(G)){var wa=G;G=h.locateFile?h.locateFile(wa,q):q+wa}\nfunction xa(){var a=G;try{if(a==G&&w)return new Uint8Array(w);if(va(a))try{var b=ya(a.slice(37)),c=new Uint8Array(b.length);for(a=0;a<b.length;++a)c[a]=b.charCodeAt(a);var d=c}catch(f){throw Error(\"Converting base64 string to bytes failed.\");}else d=void 0;var e=d;if(e)return e;throw\"both async and sync fetching of the wasm failed\";}catch(f){x(f)}}\nfunction za(){return w||\"function\"!=typeof fetch?Promise.resolve().then(function(){return xa()}):fetch(G,{credentials:\"same-origin\"}).then(function(a){if(!a.ok)throw\"failed to load wasm binary file at '\"+G+\"'\";return a.arrayBuffer()}).catch(function(){return xa()})}function Aa(a){for(;0<a.length;)a.shift()(h)}function Ba(a){if(void 0===a)return\"_unknown\";a=a.replace(/[^a-zA-Z0-9_]/g,\"$\");var b=a.charCodeAt(0);return 48<=b&&57>=b?\"_\"+a:a}\nfunction Ca(a,b){a=Ba(a);return function(){return b.apply(this,arguments)}}var H=[{},{value:void 0},{value:null},{value:!0},{value:!1}],Da=[];function Ea(a){var b=Error,c=Ca(a,function(d){this.name=a;this.message=d;d=Error(d).stack;void 0!==d&&(this.stack=this.toString()+\"\\n\"+d.replace(/^Error(:[^\\n]*)?\\n/,\"\"))});c.prototype=Object.create(b.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:this.name+\": \"+this.message};return c}var J=void 0;\nfunction K(a){throw new J(a);}var L=a=>{a||K(\"Cannot use deleted val. handle = \"+a);return H[a].value},Fa=a=>{switch(a){case void 0:return 1;case null:return 2;case !0:return 3;case !1:return 4;default:var b=Da.length?Da.pop():H.length;H[b]={fa:1,value:a};return b}},Ga=void 0,Ha=void 0;function M(a){for(var b=\"\";z[a];)b+=Ha[z[a++]];return b}var N=[];function Ia(){for(;N.length;){var a=N.pop();a.L.Z=!1;a[\"delete\"]()}}var O=void 0,P={};\nfunction Ja(a,b){for(void 0===b&&K(\"ptr should not be undefined\");a.P;)b=a.aa(b),a=a.P;return b}var Q={};function Ka(a){a=La(a);var b=M(a);R(a);return b}function Ma(a,b){var c=Q[a];void 0===c&&K(b+\" has unknown type \"+Ka(a));return c}function Na(){}var Oa=!1;function Pa(a){--a.count.value;0===a.count.value&&(a.S?a.T.V(a.S):a.O.M.V(a.N))}function Qa(a,b,c){if(b===c)return a;if(void 0===c.P)return null;a=Qa(a,b,c.P);return null===a?null:c.ma(a)}var Ra={};function Sa(a,b){b=Ja(a,b);return P[b]}\nvar Ta=void 0;function Ua(a){throw new Ta(a);}function Va(a,b){b.O&&b.N||Ua(\"makeClassHandle requires ptr and ptrType\");!!b.T!==!!b.S&&Ua(\"Both smartPtrType and smartPtr must be specified\");b.count={value:1};return S(Object.create(a,{L:{value:b}}))}function S(a){if(\"undefined\"===typeof FinalizationRegistry)return S=b=>b,a;Oa=new FinalizationRegistry(b=>{Pa(b.L)});S=b=>{var c=b.L;c.S&&Oa.register(b,{L:c},b);return b};Na=b=>{Oa.unregister(b)};return S(a)}var Wa={};\nfunction Xa(a){for(;a.length;){var b=a.pop();a.pop()(b)}}function T(a){return this.fromWireType(C[a>>2])}var U={},Ya={};function V(a,b,c){function d(k){k=c(k);k.length!==a.length&&Ua(\"Mismatched type converter count\");for(var m=0;m<a.length;++m)W(a[m],k[m])}a.forEach(function(k){Ya[k]=b});var e=Array(b.length),f=[],g=0;b.forEach((k,m)=>{Q.hasOwnProperty(k)?e[m]=Q[k]:(f.push(k),U.hasOwnProperty(k)||(U[k]=[]),U[k].push(()=>{e[m]=Q[k];++g;g===f.length&&d(e)}))});0===f.length&&d(e)}\nfunction Za(a){switch(a){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(\"Unknown type size: \"+a);}}\nfunction W(a,b,c={}){if(!(\"argPackAdvance\"in b))throw new TypeError(\"registerType registeredInstance requires argPackAdvance\");var d=b.name;a||K('type \"'+d+'\" must have a positive integer typeid pointer');if(Q.hasOwnProperty(a)){if(c.ta)return;K(\"Cannot register type '\"+d+\"' twice\")}Q[a]=b;delete Ya[a];U.hasOwnProperty(a)&&(b=U[a],delete U[a],b.forEach(e=>e()))}function $a(a){K(a.L.O.M.name+\" instance already deleted\")}function X(){}\nfunction ab(a,b,c){if(void 0===a[b].R){var d=a[b];a[b]=function(){a[b].R.hasOwnProperty(arguments.length)||K(\"Function '\"+c+\"' called with an invalid number of arguments (\"+arguments.length+\") - expects one of (\"+a[b].R+\")!\");return a[b].R[arguments.length].apply(this,arguments)};a[b].R=[];a[b].R[d.Y]=d}}\nfunction bb(a,b){h.hasOwnProperty(a)?(K(\"Cannot register public name '\"+a+\"' twice\"),ab(h,a,a),h.hasOwnProperty(void 0)&&K(\"Cannot register multiple overloads of a function with the same number of arguments (undefined)!\"),h[a].R[void 0]=b):h[a]=b}function cb(a,b,c,d,e,f,g,k){this.name=a;this.constructor=b;this.W=c;this.V=d;this.P=e;this.oa=f;this.aa=g;this.ma=k;this.ia=[]}\nfunction db(a,b,c){for(;b!==c;)b.aa||K(\"Expected null or instance of \"+c.name+\", got an instance of \"+b.name),a=b.aa(a),b=b.P;return a}function eb(a,b){if(null===b)return this.da&&K(\"null is not a valid \"+this.name),0;b.L||K('Cannot pass \"'+fb(b)+'\" as a '+this.name);b.L.N||K(\"Cannot pass deleted object as a pointer of type \"+this.name);return db(b.L.N,b.L.O.M,this.M)}\nfunction gb(a,b){if(null===b){this.da&&K(\"null is not a valid \"+this.name);if(this.ca){var c=this.ea();null!==a&&a.push(this.V,c);return c}return 0}b.L||K('Cannot pass \"'+fb(b)+'\" as a '+this.name);b.L.N||K(\"Cannot pass deleted object as a pointer of type \"+this.name);!this.ba&&b.L.O.ba&&K(\"Cannot convert argument of type \"+(b.L.T?b.L.T.name:b.L.O.name)+\" to parameter type \"+this.name);c=db(b.L.N,b.L.O.M,this.M);if(this.ca)switch(void 0===b.L.S&&K(\"Passing raw pointer to smart pointer is illegal\"),\nthis.Aa){case 0:b.L.T===this?c=b.L.S:K(\"Cannot convert argument of type \"+(b.L.T?b.L.T.name:b.L.O.name)+\" to parameter type \"+this.name);break;case 1:c=b.L.S;break;case 2:if(b.L.T===this)c=b.L.S;else{var d=b.clone();c=this.wa(c,Fa(function(){d[\"delete\"]()}));null!==a&&a.push(this.V,c)}break;default:K(\"Unsupporting sharing policy\")}return c}\nfunction hb(a,b){if(null===b)return this.da&&K(\"null is not a valid \"+this.name),0;b.L||K('Cannot pass \"'+fb(b)+'\" as a '+this.name);b.L.N||K(\"Cannot pass deleted object as a pointer of type \"+this.name);b.L.O.ba&&K(\"Cannot convert argument of type \"+b.L.O.name+\" to parameter type \"+this.name);return db(b.L.N,b.L.O.M,this.M)}\nfunction Y(a,b,c,d){this.name=a;this.M=b;this.da=c;this.ba=d;this.ca=!1;this.V=this.wa=this.ea=this.ja=this.Aa=this.va=void 0;void 0!==b.P?this.toWireType=gb:(this.toWireType=d?eb:hb,this.U=null)}function ib(a,b){h.hasOwnProperty(a)||Ua(\"Replacing nonexistant public symbol\");h[a]=b;h[a].Y=void 0}\nfunction jb(a,b){var c=[];return function(){c.length=0;Object.assign(c,arguments);if(a.includes(\"j\")){var d=h[\"dynCall_\"+a];d=c&&c.length?d.apply(null,[b].concat(c)):d.call(null,b)}else d=pa.get(b).apply(null,c);return d}}function Z(a,b){a=M(a);var c=a.includes(\"j\")?jb(a,b):pa.get(b);\"function\"!=typeof c&&K(\"unknown function pointer with signature \"+a+\": \"+b);return c}var mb=void 0;\nfunction nb(a,b){function c(f){e[f]||Q[f]||(Ya[f]?Ya[f].forEach(c):(d.push(f),e[f]=!0))}var d=[],e={};b.forEach(c);throw new mb(a+\": \"+d.map(Ka).join([\", \"]));}\nfunction ob(a,b,c,d,e){var f=b.length;2>f&&K(\"argTypes array size mismatch! Must at least get return value and 'this' types!\");var g=null!==b[1]&&null!==c,k=!1;for(c=1;c<b.length;++c)if(null!==b[c]&&void 0===b[c].U){k=!0;break}var m=\"void\"!==b[0].name,l=f-2,n=Array(l),p=[],r=[];return function(){arguments.length!==l&&K(\"function \"+a+\" called with \"+arguments.length+\" arguments, expected \"+l+\" args!\");r.length=0;p.length=g?2:1;p[0]=e;if(g){var u=b[1].toWireType(r,this);p[1]=u}for(var t=0;t<l;++t)n[t]=\nb[t+2].toWireType(r,arguments[t]),p.push(n[t]);t=d.apply(null,p);if(k)Xa(r);else for(var y=g?1:2;y<b.length;y++){var B=1===y?u:n[y-2];null!==b[y].U&&b[y].U(B)}u=m?b[0].fromWireType(t):void 0;return u}}function pb(a,b){for(var c=[],d=0;d<a;d++)c.push(D[b+4*d>>2]);return c}function qb(a){4<a&&0===--H[a].fa&&(H[a]=void 0,Da.push(a))}function fb(a){if(null===a)return\"null\";var b=typeof a;return\"object\"===b||\"array\"===b||\"function\"===b?a.toString():\"\"+a}\nfunction rb(a,b){switch(b){case 2:return function(c){return this.fromWireType(ma[c>>2])};case 3:return function(c){return this.fromWireType(na[c>>3])};default:throw new TypeError(\"Unknown float type: \"+a);}}\nfunction sb(a,b,c){switch(b){case 0:return c?function(d){return ka[d]}:function(d){return z[d]};case 1:return c?function(d){return A[d>>1]}:function(d){return la[d>>1]};case 2:return c?function(d){return C[d>>2]}:function(d){return D[d>>2]};default:throw new TypeError(\"Unknown integer type: \"+a);}}function tb(a,b){for(var c=\"\",d=0;!(d>=b/2);++d){var e=A[a+2*d>>1];if(0==e)break;c+=String.fromCharCode(e)}return c}\nfunction ub(a,b,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var d=b;c=c<2*a.length?c/2:a.length;for(var e=0;e<c;++e)A[b>>1]=a.charCodeAt(e),b+=2;A[b>>1]=0;return b-d}function vb(a){return 2*a.length}function wb(a,b){for(var c=0,d=\"\";!(c>=b/4);){var e=C[a+4*c>>2];if(0==e)break;++c;65536<=e?(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023)):d+=String.fromCharCode(e)}return d}\nfunction xb(a,b,c){void 0===c&&(c=2147483647);if(4>c)return 0;var d=b;c=d+c-4;for(var e=0;e<a.length;++e){var f=a.charCodeAt(e);if(55296<=f&&57343>=f){var g=a.charCodeAt(++e);f=65536+((f&1023)<<10)|g&1023}C[b>>2]=f;b+=4;if(b+4>c)break}C[b>>2]=0;return b-d}function yb(a){for(var b=0,c=0;c<a.length;++c){var d=a.charCodeAt(c);55296<=d&&57343>=d&&++c;b+=4}return b}var zb={};function Ab(a){var b=zb[a];return void 0===b?M(a):b}var Bb=[];function Cb(a){var b=Bb.length;Bb.push(a);return b}\nfunction Db(a,b){for(var c=Array(a),d=0;d<a;++d)c[d]=Ma(D[b+4*d>>2],\"parameter \"+d);return c}var Eb=[],Fb=[null,[],[]];J=h.BindingError=Ea(\"BindingError\");h.count_emval_handles=function(){for(var a=0,b=5;b<H.length;++b)void 0!==H[b]&&++a;return a};h.get_first_emval=function(){for(var a=5;a<H.length;++a)if(void 0!==H[a])return H[a];return null};Ga=h.PureVirtualError=Ea(\"PureVirtualError\");for(var Gb=Array(256),Hb=0;256>Hb;++Hb)Gb[Hb]=String.fromCharCode(Hb);Ha=Gb;h.getInheritedInstanceCount=function(){return Object.keys(P).length};\nh.getLiveInheritedInstances=function(){var a=[],b;for(b in P)P.hasOwnProperty(b)&&a.push(P[b]);return a};h.flushPendingDeletes=Ia;h.setDelayFunction=function(a){O=a;N.length&&O&&O(Ia)};Ta=h.InternalError=Ea(\"InternalError\");X.prototype.isAliasOf=function(a){if(!(this instanceof X&&a instanceof X))return!1;var b=this.L.O.M,c=this.L.N,d=a.L.O.M;for(a=a.L.N;b.P;)c=b.aa(c),b=b.P;for(;d.P;)a=d.aa(a),d=d.P;return b===d&&c===a};\nX.prototype.clone=function(){this.L.N||$a(this);if(this.L.$)return this.L.count.value+=1,this;var a=S,b=Object,c=b.create,d=Object.getPrototypeOf(this),e=this.L;a=a(c.call(b,d,{L:{value:{count:e.count,Z:e.Z,$:e.$,N:e.N,O:e.O,S:e.S,T:e.T}}}));a.L.count.value+=1;a.L.Z=!1;return a};X.prototype[\"delete\"]=function(){this.L.N||$a(this);this.L.Z&&!this.L.$&&K(\"Object already scheduled for deletion\");Na(this);Pa(this.L);this.L.$||(this.L.S=void 0,this.L.N=void 0)};X.prototype.isDeleted=function(){return!this.L.N};\nX.prototype.deleteLater=function(){this.L.N||$a(this);this.L.Z&&!this.L.$&&K(\"Object already scheduled for deletion\");N.push(this);1===N.length&&O&&O(Ia);this.L.Z=!0;return this};Y.prototype.pa=function(a){this.ja&&(a=this.ja(a));return a};Y.prototype.ga=function(a){this.V&&this.V(a)};Y.prototype.argPackAdvance=8;Y.prototype.readValueFromPointer=T;Y.prototype.deleteObject=function(a){if(null!==a)a[\"delete\"]()};\nY.prototype.fromWireType=function(a){function b(){return this.ca?Va(this.M.W,{O:this.va,N:c,T:this,S:a}):Va(this.M.W,{O:this,N:a})}var c=this.pa(a);if(!c)return this.ga(a),null;var d=Sa(this.M,c);if(void 0!==d){if(0===d.L.count.value)return d.L.N=c,d.L.S=a,d.clone();d=d.clone();this.ga(a);return d}d=this.M.oa(c);d=Ra[d];if(!d)return b.call(this);d=this.ba?d.ka:d.pointerType;var e=Qa(c,this.M,d.M);return null===e?b.call(this):this.ca?Va(d.M.W,{O:d,N:e,T:this,S:a}):Va(d.M.W,{O:d,N:e})};\nmb=h.UnboundTypeError=Ea(\"UnboundTypeError\");\nvar ya=\"function\"==typeof atob?atob:function(a){var b=\"\",c=0;a=a.replace(/[^A-Za-z0-9\\+\\/=]/g,\"\");do{var d=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(c++));var e=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(c++));var f=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(c++));var g=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(c++));d=d<<2|e>>4;\ne=(e&15)<<4|f>>2;var k=(f&3)<<6|g;b+=String.fromCharCode(d);64!==f&&(b+=String.fromCharCode(e));64!==g&&(b+=String.fromCharCode(k))}while(c<a.length);return b},Jb={p:function(a,b,c){a=M(a);b=Ma(b,\"wrapper\");c=L(c);var d=[].slice,e=b.M,f=e.W,g=e.P.W,k=e.P.constructor;a=Ca(a,function(){e.P.ia.forEach(function(l){if(this[l]===g[l])throw new Ga(\"Pure virtual function \"+l+\" must be implemented in JavaScript\");}.bind(this));Object.defineProperty(this,\"__parent\",{value:f});this.__construct.apply(this,d.call(arguments))});\nf.__construct=function(){this===f&&K(\"Pass correct 'this' to __construct\");var l=k.implement.apply(void 0,[this].concat(d.call(arguments)));Na(l);var n=l.L;l.notifyOnDestruction();n.$=!0;Object.defineProperties(this,{L:{value:n}});S(this);l=n.N;l=Ja(e,l);P.hasOwnProperty(l)?K(\"Tried to register registered instance: \"+l):P[l]=this};f.__destruct=function(){this===f&&K(\"Pass correct 'this' to __destruct\");Na(this);var l=this.L.N;l=Ja(e,l);P.hasOwnProperty(l)?delete P[l]:K(\"Tried to unregister unregistered instance: \"+\nl)};a.prototype=Object.create(f);for(var m in c)a.prototype[m]=c[m];return Fa(a)},j:function(a){var b=Wa[a];delete Wa[a];var c=b.ea,d=b.V,e=b.ha,f=e.map(g=>g.sa).concat(e.map(g=>g.ya));V([a],f,g=>{var k={};e.forEach((m,l)=>{var n=g[l],p=m.qa,r=m.ra,u=g[l+e.length],t=m.xa,y=m.za;k[m.na]={read:B=>n.fromWireType(p(r,B)),write:(B,aa)=>{var I=[];t(y,B,u.toWireType(I,aa));Xa(I)}}});return[{name:b.name,fromWireType:function(m){var l={},n;for(n in k)l[n]=k[n].read(m);d(m);return l},toWireType:function(m,\nl){for(var n in k)if(!(n in l))throw new TypeError('Missing field: \"'+n+'\"');var p=c();for(n in k)k[n].write(p,l[n]);null!==m&&m.push(d,p);return p},argPackAdvance:8,readValueFromPointer:T,U:d}]})},v:function(){},B:function(a,b,c,d,e){var f=Za(c);b=M(b);W(a,{name:b,fromWireType:function(g){return!!g},toWireType:function(g,k){return k?d:e},argPackAdvance:8,readValueFromPointer:function(g){if(1===c)var k=ka;else if(2===c)k=A;else if(4===c)k=C;else throw new TypeError(\"Unknown boolean type size: \"+\nb);return this.fromWireType(k[g>>f])},U:null})},f:function(a,b,c,d,e,f,g,k,m,l,n,p,r){n=M(n);f=Z(e,f);k&&(k=Z(g,k));l&&(l=Z(m,l));r=Z(p,r);var u=Ba(n);bb(u,function(){nb(\"Cannot construct \"+n+\" due to unbound types\",[d])});V([a,b,c],d?[d]:[],function(t){t=t[0];if(d){var y=t.M;var B=y.W}else B=X.prototype;t=Ca(u,function(){if(Object.getPrototypeOf(this)!==aa)throw new J(\"Use 'new' to construct \"+n);if(void 0===I.X)throw new J(n+\" has no accessible constructor\");var kb=I.X[arguments.length];if(void 0===\nkb)throw new J(\"Tried to invoke ctor of \"+n+\" with invalid number of parameters (\"+arguments.length+\") - expected (\"+Object.keys(I.X).toString()+\") parameters instead!\");return kb.apply(this,arguments)});var aa=Object.create(B,{constructor:{value:t}});t.prototype=aa;var I=new cb(n,t,aa,r,y,f,k,l);y=new Y(n,I,!0,!1);B=new Y(n+\"*\",I,!1,!1);var lb=new Y(n+\" const*\",I,!1,!0);Ra[a]={pointerType:B,ka:lb};ib(u,t);return[y,B,lb]})},c:function(a,b,c,d,e,f,g){var k=pb(c,d);b=M(b);f=Z(e,f);V([],[a],function(m){function l(){nb(\"Cannot call \"+\nn+\" due to unbound types\",k)}m=m[0];var n=m.name+\".\"+b;b.startsWith(\"@@\")&&(b=Symbol[b.substring(2)]);var p=m.M.constructor;void 0===p[b]?(l.Y=c-1,p[b]=l):(ab(p,b,n),p[b].R[c-1]=l);V([],k,function(r){r=ob(n,[r[0],null].concat(r.slice(1)),null,f,g);void 0===p[b].R?(r.Y=c-1,p[b]=r):p[b].R[c-1]=r;return[]});return[]})},o:function(a,b,c,d,e,f){0<b||x();var g=pb(b,c);e=Z(d,e);V([],[a],function(k){k=k[0];var m=\"constructor \"+k.name;void 0===k.M.X&&(k.M.X=[]);if(void 0!==k.M.X[b-1])throw new J(\"Cannot register multiple constructors with identical number of parameters (\"+\n(b-1)+\") for class '\"+k.name+\"'! Overload resolution is currently only performed using the parameter count, not actual type info!\");k.M.X[b-1]=()=>{nb(\"Cannot construct \"+k.name+\" due to unbound types\",g)};V([],g,function(l){l.splice(1,0,null);k.M.X[b-1]=ob(m,l,null,e,f);return[]});return[]})},a:function(a,b,c,d,e,f,g,k){var m=pb(c,d);b=M(b);f=Z(e,f);V([],[a],function(l){function n(){nb(\"Cannot call \"+p+\" due to unbound types\",m)}l=l[0];var p=l.name+\".\"+b;b.startsWith(\"@@\")&&(b=Symbol[b.substring(2)]);\nk&&l.M.ia.push(b);var r=l.M.W,u=r[b];void 0===u||void 0===u.R&&u.className!==l.name&&u.Y===c-2?(n.Y=c-2,n.className=l.name,r[b]=n):(ab(r,b,p),r[b].R[c-2]=n);V([],m,function(t){t=ob(p,t,l,f,g);void 0===r[b].R?(t.Y=c-2,r[b]=t):r[b].R[c-2]=t;return[]});return[]})},A:function(a,b){b=M(b);W(a,{name:b,fromWireType:function(c){var d=L(c);qb(c);return d},toWireType:function(c,d){return Fa(d)},argPackAdvance:8,readValueFromPointer:T,U:null})},m:function(a,b,c){c=Za(c);b=M(b);W(a,{name:b,fromWireType:function(d){return d},\ntoWireType:function(d,e){return e},argPackAdvance:8,readValueFromPointer:rb(b,c),U:null})},d:function(a,b,c,d,e){b=M(b);-1===e&&(e=4294967295);e=Za(c);var f=k=>k;if(0===d){var g=32-8*c;f=k=>k<<g>>>g}c=b.includes(\"unsigned\")?function(k,m){return m>>>0}:function(k,m){return m};W(a,{name:b,fromWireType:f,toWireType:c,argPackAdvance:8,readValueFromPointer:sb(b,e,0!==d),U:null})},b:function(a,b,c){function d(f){f>>=2;var g=D;return new e(ja,g[f+1],g[f])}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,\nInt32Array,Uint32Array,Float32Array,Float64Array][b];c=M(c);W(a,{name:c,fromWireType:d,argPackAdvance:8,readValueFromPointer:d},{ta:!0})},n:function(a,b){b=M(b);var c=\"std::string\"===b;W(a,{name:b,fromWireType:function(d){var e=D[d>>2],f=d+4;if(c)for(var g=f,k=0;k<=e;++k){var m=f+k;if(k==e||0==z[m]){g=g?ia(z,g,m-g):\"\";if(void 0===l)var l=g;else l+=String.fromCharCode(0),l+=g;g=m+1}}else{l=Array(e);for(k=0;k<e;++k)l[k]=String.fromCharCode(z[f+k]);l=l.join(\"\")}R(d);return l},toWireType:function(d,e){e instanceof\nArrayBuffer&&(e=new Uint8Array(e));var f,g=\"string\"==typeof e;g||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Int8Array||K(\"Cannot pass non-string to std::string\");if(c&&g){var k=0;for(f=0;f<e.length;++f){var m=e.charCodeAt(f);127>=m?k++:2047>=m?k+=2:55296<=m&&57343>=m?(k+=4,++f):k+=3}f=k}else f=e.length;k=Ib(4+f+1);m=k+4;D[k>>2]=f;if(c&&g){if(g=m,m=f+1,f=z,0<m){m=g+m-1;for(var l=0;l<e.length;++l){var n=e.charCodeAt(l);if(55296<=n&&57343>=n){var p=e.charCodeAt(++l);n=65536+\n((n&1023)<<10)|p&1023}if(127>=n){if(g>=m)break;f[g++]=n}else{if(2047>=n){if(g+1>=m)break;f[g++]=192|n>>6}else{if(65535>=n){if(g+2>=m)break;f[g++]=224|n>>12}else{if(g+3>=m)break;f[g++]=240|n>>18;f[g++]=128|n>>12&63}f[g++]=128|n>>6&63}f[g++]=128|n&63}}f[g]=0}}else if(g)for(g=0;g<f;++g)l=e.charCodeAt(g),255<l&&(R(m),K(\"String has UTF-16 code units that do not fit in 8 bits\")),z[m+g]=l;else for(g=0;g<f;++g)z[m+g]=e[g];null!==d&&d.push(R,k);return k},argPackAdvance:8,readValueFromPointer:T,U:function(d){R(d)}})},\ni:function(a,b,c){c=M(c);if(2===b){var d=tb;var e=ub;var f=vb;var g=()=>la;var k=1}else 4===b&&(d=wb,e=xb,f=yb,g=()=>D,k=2);W(a,{name:c,fromWireType:function(m){for(var l=D[m>>2],n=g(),p,r=m+4,u=0;u<=l;++u){var t=m+4+u*b;if(u==l||0==n[t>>k])r=d(r,t-r),void 0===p?p=r:(p+=String.fromCharCode(0),p+=r),r=t+b}R(m);return p},toWireType:function(m,l){\"string\"!=typeof l&&K(\"Cannot pass non-string to C++ string type \"+c);var n=f(l),p=Ib(4+n+b);D[p>>2]=n>>k;e(l,p+4,n+b);null!==m&&m.push(R,p);return p},argPackAdvance:8,\nreadValueFromPointer:T,U:function(m){R(m)}})},k:function(a,b,c,d,e,f){Wa[a]={name:M(b),ea:Z(c,d),V:Z(e,f),ha:[]}},h:function(a,b,c,d,e,f,g,k,m,l){Wa[a].ha.push({na:M(b),sa:c,qa:Z(d,e),ra:f,ya:g,xa:Z(k,m),za:l})},C:function(a,b){b=M(b);W(a,{ua:!0,name:b,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},s:function(a,b,c,d,e){a=Bb[a];b=L(b);c=Ab(c);var f=[];D[d>>2]=Fa(f);return a(b,c,f,e)},t:function(a,b,c,d){a=Bb[a];b=L(b);c=Ab(c);a(b,c,null,d)},g:qb,l:function(a,b){var c=Db(a,b),\nd=c[0];b=d.name+\"_$\"+c.slice(1).map(function(g){return g.name}).join(\"_\")+\"$\";var e=Eb[b];if(void 0!==e)return e;var f=Array(a-1);e=Cb((g,k,m,l)=>{for(var n=0,p=0;p<a-1;++p)f[p]=c[p+1].readValueFromPointer(l+n),n+=c[p+1].argPackAdvance;g=g[k].apply(g,f);for(p=0;p<a-1;++p)c[p+1].la&&c[p+1].la(f[p]);if(!d.ua)return d.toWireType(m,g)});return Eb[b]=e},q:function(a){4<a&&(H[a].fa+=1)},r:function(a){var b=L(a);Xa(b);qb(a)},e:function(){x(\"\")},x:function(a,b,c){z.copyWithin(a,b,b+c)},w:function(a){var b=\nz.length;a>>>=0;if(2147483648<a)return!1;for(var c=1;4>=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);var e=Math;d=Math.max(a,d);e=e.min.call(e,2147483648,d+(65536-d%65536)%65536);a:{try{fa.grow(e-ja.byteLength+65535>>>16);oa();var f=1;break a}catch(g){}f=void 0}if(f)return!0}return!1},z:function(){return 52},u:function(){return 70},y:function(a,b,c,d){for(var e=0,f=0;f<c;f++){var g=D[b>>2],k=D[b+4>>2];b+=8;for(var m=0;m<k;m++){var l=z[g+m],n=Fb[a];0===l||10===l?((1===a?ea:v)(ia(n,0)),n.length=\n0):n.push(l)}e+=k}D[d>>2]=e;return 0}};\n(function(){function a(e){h.asm=e.exports;fa=h.asm.D;oa();pa=h.asm.I;ra.unshift(h.asm.E);E--;h.monitorRunDependencies&&h.monitorRunDependencies(E);0==E&&(null!==ua&&(clearInterval(ua),ua=null),F&&(e=F,F=null,e()))}function b(e){a(e.instance)}function c(e){return za().then(function(f){return WebAssembly.instantiate(f,d)}).then(function(f){return f}).then(e,function(f){v(\"failed to asynchronously prepare wasm: \"+f);x(f)})}var d={a:Jb};E++;h.monitorRunDependencies&&h.monitorRunDependencies(E);if(h.instantiateWasm)try{return h.instantiateWasm(d,\na)}catch(e){v(\"Module.instantiateWasm callback failed with error: \"+e),ca(e)}(function(){return w||\"function\"!=typeof WebAssembly.instantiateStreaming||va(G)||\"function\"!=typeof fetch?c(b):fetch(G,{credentials:\"same-origin\"}).then(function(e){return WebAssembly.instantiateStreaming(e,d).then(b,function(f){v(\"wasm streaming compile failed: \"+f);v(\"falling back to ArrayBuffer instantiation\");return c(b)})})})().catch(ca);return{}})();\nh.___wasm_call_ctors=function(){return(h.___wasm_call_ctors=h.asm.E).apply(null,arguments)};var La=h.___getTypeName=function(){return(La=h.___getTypeName=h.asm.F).apply(null,arguments)};h.__embind_initialize_bindings=function(){return(h.__embind_initialize_bindings=h.asm.G).apply(null,arguments)};var Ib=h._malloc=function(){return(Ib=h._malloc=h.asm.H).apply(null,arguments)},R=h._free=function(){return(R=h._free=h.asm.J).apply(null,arguments)};\nh.dynCall_jiji=function(){return(h.dynCall_jiji=h.asm.K).apply(null,arguments)};var Kb;F=function Lb(){Kb||Mb();Kb||(F=Lb)};\nfunction Mb(){function a(){if(!Kb&&(Kb=!0,h.calledRun=!0,!ha)){Aa(ra);ba(h);if(h.onRuntimeInitialized)h.onRuntimeInitialized();if(h.postRun)for(\"function\"==typeof h.postRun&&(h.postRun=[h.postRun]);h.postRun.length;){var b=h.postRun.shift();sa.unshift(b)}Aa(sa)}}if(!(0<E)){if(h.preRun)for(\"function\"==typeof h.preRun&&(h.preRun=[h.preRun]);h.preRun.length;)ta();Aa(qa);0<E||(h.setStatus?(h.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){h.setStatus(\"\")},1);a()},1)):a())}}\nif(h.preInit)for(\"function\"==typeof h.preInit&&(h.preInit=[h.preInit]);0<h.preInit.length;)h.preInit.pop()();Mb();\n\n\n return loadYoga.ready\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = loadYoga;\nelse if (typeof define === 'function' && define['amd'])\n define([], function() { return loadYoga; });\nelse if (typeof exports === 'object')\n exports[\"loadYoga\"] = loadYoga;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _exportNames = {\n loadYoga: true\n};\nexports.loadYoga = loadYoga;\nvar _wrapAssembly = _interopRequireDefault(require(\"../wrapAssembly\"));\nvar _YGEnums = require(\"../generated/YGEnums\");\nObject.keys(_YGEnums).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _YGEnums[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _YGEnums[key];\n }\n });\n});\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n */\n\nconst loadAssembly = require('../../binaries/wasm-async-web');\nasync function loadYoga() {\n return (0, _wrapAssembly.default)(await loadAssembly());\n}\n//# sourceMappingURL=wasm-async-web.js.map","import memoize from \"memoize\";\nimport { interpolate, linear, easeIn, easeInOut, easeOut, circIn, circInOut, circOut, backIn, backInOut, backOut, anticipate, bounceIn, bounceInOut, bounceOut } from \"popmotion\";\nimport pMemoize from \"p-memoize\";\nimport { filters, helpers, render, getConfig } from \"squirrelly\";\nimport fetch from \"cross-fetch\";\nimport { loadYoga } from \"yoga-layout\";\nfunction crossFade({ canvas, scenes, currentTime }) {\n if (scenes && canvas) {\n const activeScenes = scenes.scenes.filter(({ start, duration }) => {\n return currentTime >= start && currentTime <= start + duration;\n });\n if (activeScenes.length <= 0) {\n return;\n }\n const mainCtx = canvas.getContext(\"2d\");\n if (mainCtx) {\n const transitionDuration = scenes.transitionDuration;\n const lastVideoEnd = Math.max(...scenes.scenes.map(({ start, duration }) => start + duration));\n mainCtx.globalCompositeOperation = \"lighter\";\n mainCtx.clearRect(0, 0, canvas.width, canvas.height);\n activeScenes.forEach(({ start, duration, draw, transitionCanvas }) => {\n mainCtx.globalAlpha = 1;\n transitionCanvas.width = transitionCanvas.height = 0;\n transitionCanvas.width = canvas.width;\n transitionCanvas.height = canvas.height;\n const tCtx = transitionCanvas.getContext(\"2d\");\n if (tCtx) {\n const end = start + duration;\n const isFirst = start === 0;\n const isLast = end === lastVideoEnd;\n draw({\n currentTime,\n canvas: transitionCanvas\n });\n if (!isFirst && currentTime >= start && currentTime <= start + transitionDuration) {\n mainCtx.globalAlpha = Math.max(0, Math.min(1, (currentTime - start) / transitionDuration));\n } else if (!isLast && currentTime >= end - transitionDuration && currentTime <= end) {\n mainCtx.globalAlpha = Math.max(0, Math.min(1, (end - currentTime) / transitionDuration));\n }\n mainCtx.drawImage(transitionCanvas, 0, 0, canvas.width, canvas.height);\n }\n });\n }\n }\n}\nfunction normaliseResolution(resolution) {\n if (typeof resolution === \"string\") {\n const [w, h] = resolution.split(\":\");\n return Math.min(parseFloat(w), parseFloat(h));\n }\n return resolution;\n}\nfunction normaliseAspectRatio(aspectRatio) {\n if (typeof aspectRatio === \"string\") {\n const [w, h] = aspectRatio.split(\":\");\n const aW = parseFloat(w);\n const aH = parseFloat(h);\n return aW / aH;\n }\n return aspectRatio;\n}\nfunction getSizeDetails({ resolution, aspectRatio }) {\n const numericResolution = normaliseResolution(resolution);\n const numericAspectRatio = normaliseAspectRatio(aspectRatio);\n const widthLong = numericAspectRatio >= 1;\n const shortSide = Math.min(\n widthLong ? numericResolution * numericAspectRatio : numericResolution / numericAspectRatio,\n numericResolution\n );\n const longSide = Math.max(\n widthLong ? numericResolution * numericAspectRatio : numericResolution / numericAspectRatio,\n numericResolution\n );\n return {\n resolution: numericResolution,\n aspectRatio: numericAspectRatio,\n height: widthLong ? shortSide : longSide,\n width: widthLong ? longSide : shortSide\n };\n}\nfunction getVideoPosition({ format, resolution, aspectRatio, sourceWidth, sourceHeight }) {\n const { width: drawAreaWidth, height: drawAreaHeight } = getSizeDetails({ resolution, aspectRatio });\n const videoAspectRatio = sourceWidth / sourceHeight;\n const canvasRatioBigger = aspectRatio > videoAspectRatio;\n let scale = 1;\n if (format === \"letterbox\" || format === \"letterbox-video\") {\n scale = canvasRatioBigger ? drawAreaHeight / sourceHeight : drawAreaWidth / sourceWidth;\n } else if (format === \"squarebox\") {\n const shortSide = Math.min(drawAreaHeight, drawAreaWidth);\n scale = sourceWidth >= sourceHeight ? shortSide / sourceHeight : shortSide / sourceWidth;\n } else if (format === \"crop\") {\n scale = canvasRatioBigger ? drawAreaWidth / sourceWidth : drawAreaHeight / sourceHeight;\n }\n const sWidth = drawAreaWidth / scale;\n const sHeight = drawAreaHeight / scale;\n const sx = (sourceWidth - sWidth) / 2;\n const sy = (sourceHeight - sHeight) / 2;\n return {\n sx,\n sy,\n sWidth,\n sHeight,\n scale\n };\n}\nfunction getSafeRect({ source, sx, sy, sw, sh, dx, dy, dw, dh }) {\n const width = (source == null ? void 0 : source.naturalWidth) ?? (source == null ? void 0 : source.videoWidth) ?? (source == null ? void 0 : source.width);\n const height = (source == null ? void 0 : source.naturalHeight) ?? (source == null ? void 0 : source.videoHeight) ?? (source == null ? void 0 : source.height);\n sx = sx ?? 0;\n sy = sy ?? 0;\n sw = sw ?? width;\n sh = sh ?? height;\n if (sw < 0) {\n sx += sw;\n sw = Math.abs(sw);\n }\n if (sh < 0) {\n sy += sh;\n sh = Math.abs(sh);\n }\n if (dw < 0) {\n dx += dw;\n dw = Math.abs(dw);\n }\n if (dh < 0) {\n dy += dh;\n dh = Math.abs(dh);\n }\n const x1 = Math.max(sx, 0);\n const x2 = Math.min(sx + sw, width);\n const y1 = Math.max(sy, 0);\n const y2 = Math.min(sy + sh, height);\n const wRatio = dw / sw;\n const hRatio = dh / sh;\n return [\n source,\n x1,\n y1,\n x2 - x1,\n y2 - y1,\n sx < 0 ? dx - sx * wRatio : dx,\n sy < 0 ? dy - sy * hRatio : dy,\n (x2 - x1) * wRatio,\n (y2 - y1) * hRatio\n ];\n}\nfunction drawVideoFormat({\n context,\n source,\n crop,\n format = \"letterbox\",\n posX,\n posY,\n drawAreaWidth,\n drawAreaHeight,\n sourceWidth,\n sourceHeight,\n cropCanvas,\n letterboxCanvas\n}) {\n const { x, y, width, height } = crop ?? {};\n const offsetX = sourceWidth * (x ?? 0);\n const offsetY = sourceHeight * (y ?? 0);\n const cropWidth = sourceWidth * Math.min(1 - (x ?? 0), width ?? 1);\n const cropHeight = sourceHeight * Math.min(1 - (y ?? 0), height ?? 1);\n const cropContext = cropCanvas.getContext(\"2d\");\n if (cropContext) {\n cropCanvas.width = cropWidth;\n cropCanvas.height = cropHeight;\n const safeRect = getSafeRect({\n source,\n sx: offsetX,\n sy: offsetY,\n sw: cropWidth,\n sh: cropHeight,\n dx: 0,\n dy: 0,\n dw: cropWidth,\n dh: cropHeight\n });\n cropContext.drawImage(...safeRect);\n }\n const videoAspectRatio = cropWidth / cropHeight;\n const { sx, sy, sWidth, sHeight, scale } = getVideoPosition({\n resolution: Math.min(drawAreaWidth, drawAreaHeight),\n aspectRatio: drawAreaWidth / drawAreaHeight,\n format,\n sourceWidth: cropWidth,\n sourceHeight: cropHeight\n });\n const canLetterboxVideo = cropCanvas && typeof context.filter !== \"undefined\";\n if (format === \"letterbox\" || format === \"squarebox\" || format === \"letterbox-video\" && !canLetterboxVideo) {\n if (sx < 0) {\n const letterboxWidth = Math.abs(sx) * scale;\n context.fillStyle = \"black\";\n context.beginPath();\n context.rect(posX, posY, letterboxWidth, drawAreaHeight);\n context.rect(posX + drawAreaWidth - letterboxWidth, posY, letterboxWidth, drawAreaHeight);\n context.fill();\n context.closePath();\n }\n if (sy < 0) {\n const letterboxHeight = Math.abs(sy) * scale;\n context.fillStyle = \"black\";\n context.beginPath();\n context.rect(posX, posY, drawAreaWidth, letterboxHeight);\n context.rect(posX, posY + drawAreaHeight - letterboxHeight, drawAreaWidth, letterboxHeight);\n context.fill();\n context.closePath();\n }\n }\n if (format === \"letterbox-video\" && canLetterboxVideo) {\n const letterboxContext = letterboxCanvas.getContext(\"2d\");\n if (letterboxContext) {\n letterboxCanvas.width = cropWidth;\n letterboxCanvas.height = cropHeight;\n context.save();\n context.globalCompositeOperation = \"destination-out\";\n context.fillRect(posX, posY, drawAreaWidth, drawAreaHeight);\n const safeRect = getSafeRect({\n source: cropCanvas,\n sx,\n sy,\n sw: sWidth,\n sh: sHeight,\n dx: posX,\n dy: posY,\n dw: drawAreaWidth,\n dh: drawAreaHeight\n });\n context.globalCompositeOperation = \"source-over\";\n context.drawImage(...safeRect);\n letterboxContext.save();\n const scale2 = 1.2;\n const translateX = -(cropWidth * scale2 - cropWidth) / 2;\n const translateY = -(cropHeight * scale2 - cropHeight) / 2;\n const blurFactor = Math.min(cropWidth / 20, cropHeight / 20);\n letterboxContext.filter = `blur(${blurFactor}px) brightness(20%)`;\n letterboxContext.translate(translateX, translateY);\n letterboxContext.scale(scale2, scale2);\n letterboxContext.drawImage(cropCanvas, 0, 0, cropWidth, cropHeight);\n letterboxContext.restore();\n context.globalCompositeOperation = \"destination-over\";\n if (sx < 0) {\n const h = drawAreaWidth / videoAspectRatio;\n const ratio = drawAreaHeight / h;\n const safeRect2 = getSafeRect({\n source: letterboxCanvas,\n sy: (1 - ratio) * cropHeight / 2,\n sh: ratio * cropHeight,\n dx: posX,\n dy: posY,\n dw: drawAreaWidth,\n dh: drawAreaHeight\n });\n context.drawImage(...safeRect2);\n }\n if (sy < 0) {\n const w = drawAreaHeight * videoAspectRatio;\n const ratio = drawAreaWidth / w;\n const safeRect2 = getSafeRect({\n source: letterboxCanvas,\n sx: (1 - ratio) * cropWidth / 2,\n sw: ratio * cropWidth,\n dx: posX,\n dy: posY,\n dw: drawAreaWidth,\n dh: drawAreaHeight\n });\n context.drawImage(...safeRect2);\n }\n context.restore();\n }\n } else {\n const safeRect = getSafeRect({\n source: cropCanvas,\n sx,\n sy,\n sw: sWidth,\n sh: sHeight,\n dx: posX,\n dy: posY,\n dw: drawAreaWidth,\n dh: drawAreaHeight\n });\n context.drawImage(...safeRect);\n }\n const dx = sx * -1 * scale;\n const dy = sy * -1 * scale;\n const dw = drawAreaWidth - dx * 2;\n const dh = drawAreaHeight - dy * 2;\n return {\n dx,\n dy,\n dw,\n dh\n };\n}\nfunction breakWord({ context, word, maxW = Infinity }) {\n const lines = [];\n const fullWordMetrics = context.measureText(word);\n if (fullWordMetrics.width < maxW) {\n return [{ text: word, metrics: fullWordMetrics }];\n }\n for (let i = 0; i < word.length; i++) {\n const lastLine = lines[lines.length - 1];\n const newText = ((lastLine == null ? void 0 : lastLine.text) ?? \"\") + word[i];\n const newLineMetrics = context.measureText(newText);\n if (newLineMetrics.width < maxW) {\n lines[lastLine ? lines.length - 1 : 0] = {\n text: newText,\n metrics: newLineMetrics\n };\n } else {\n lines.push({ text: word[i], metrics: context.measureText(word[i]) });\n }\n }\n return lines;\n}\nconst getFontSize = memoize(\n ({ font, scale, context, maxW, maxH, text, minSize, maxSize }) => {\n var _a, _b;\n let fontSize = 0;\n if (maxSize) {\n const multiplier = 1;\n fontSize = (minSize ?? 0) * scale;\n let widestLine = 0;\n while (maxSize * scale > fontSize + multiplier) {\n fontSize += multiplier;\n const lines = getLines({ context, font, fontSize, text, maxW });\n widestLine = lines.reduce((acc, line) => {\n if (line.metrics.width > acc) {\n acc = line.metrics.width;\n }\n return acc;\n }, 0);\n if (widestLine > maxW || lines.length * fontSize > maxH) {\n fontSize -= multiplier;\n break;\n }\n }\n } else {\n fontSize = parseFloat(((_b = (_a = font.match(fontSizeRegex)) == null ? void 0 : _a.groups) == null ? void 0 : _b.value) ?? \"0\") * scale;\n }\n return fontSize;\n },\n {\n cacheKey: ([{ font, text, minSize, maxSize, scale, maxW, maxH }]) => `${font}_${text}_${minSize}_${maxSize}_${scale}_${maxW}_${maxH}`\n }\n);\nfunction parseInset(inset, scale) {\n if (typeof inset === \"number\") {\n return {\n top: inset * scale,\n right: inset * scale,\n bottom: inset * scale,\n left: inset * scale\n };\n }\n return {\n top: typeof inset.top === \"number\" ? inset.top * scale : inset.top,\n right: typeof inset.right === \"number\" ? inset.right * scale : inset.right,\n bottom: typeof inset.bottom === \"number\" ? inset.bottom * scale : inset.bottom,\n left: typeof inset.left === \"number\" ? inset.left * scale : inset.left\n };\n}\nfunction parseSpacing(spacing, scale) {\n if (typeof spacing === \"number\") {\n return {\n top: spacing * scale,\n right: spacing * scale,\n bottom: spacing * scale,\n left: spacing * scale\n };\n }\n return {\n top: (typeof spacing.top === \"number\" ? spacing.top * scale : spacing.top) ?? 0,\n right: (typeof spacing.right === \"number\" ? spacing.right * scale : spacing.right) ?? 0,\n bottom: (typeof spacing.bottom === \"number\" ? spacing.bottom * scale : spacing.bottom) ?? 0,\n left: (typeof spacing.left === \"number\" ? spacing.left * scale : spacing.left) ?? 0\n };\n}\nfunction setNodeProperties(yoga, node, { layout, scale = 1 }) {\n const {\n position = \"static\",\n inset,\n width,\n height,\n minWidth,\n minHeight,\n maxWidth,\n maxHeight,\n flex,\n gap,\n margin,\n padding,\n // Not technically CSS defaults but I prefer column as default\n direction = \"column\",\n align = \"start\",\n alignSelf,\n justify = \"start\"\n } = layout;\n const positions = {\n static: yoga.POSITION_TYPE_STATIC,\n relative: yoga.POSITION_TYPE_RELATIVE,\n absolute: yoga.POSITION_TYPE_ABSOLUTE\n };\n node.setPositionType(positions[position]);\n if (inset) {\n const { top, right, bottom, left } = parseInset(inset, scale);\n if (top) {\n node.setPosition(yoga.EDGE_TOP, top);\n }\n if (right) {\n node.setPosition(yoga.EDGE_RIGHT, right);\n }\n if (bottom) {\n node.setPosition(yoga.EDGE_BOTTOM, bottom);\n }\n if (left) {\n node.setPosition(yoga.EDGE_LEFT, left);\n }\n }\n const directions = {\n row: yoga.FLEX_DIRECTION_ROW,\n column: yoga.FLEX_DIRECTION_COLUMN,\n \"row-reverse\": yoga.FLEX_DIRECTION_ROW_REVERSE,\n \"column-reverse\": yoga.FLEX_DIRECTION_COLUMN_REVERSE\n };\n node.setFlexDirection(directions[direction]);\n const aligns = {\n start: yoga.ALIGN_FLEX_START,\n end: yoga.ALIGN_FLEX_END,\n center: yoga.ALIGN_CENTER,\n stretch: yoga.ALIGN_STRETCH\n };\n node.setAlignItems(aligns[align]);\n if (alignSelf) {\n node.setAlignSelf(aligns[alignSelf]);\n }\n const justifies = {\n start: yoga.JUSTIFY_FLEX_START,\n end: yoga.JUSTIFY_FLEX_END,\n center: yoga.JUSTIFY_CENTER,\n \"space-between\": yoga.JUSTIFY_SPACE_BETWEEN,\n \"space-around\": yoga.JUSTIFY_SPACE_AROUND,\n \"space-evenly\": yoga.JUSTIFY_SPACE_EVENLY\n };\n node.setJustifyContent(justifies[justify]);\n if (margin) {\n const { top, right, bottom, left } = parseSpacing(margin, scale);\n node.setMargin(yoga.EDGE_TOP, top);\n node.setMargin(yoga.EDGE_RIGHT, right);\n node.setMargin(yoga.EDGE_BOTTOM, bottom);\n node.setMargin(yoga.EDGE_LEFT, left);\n }\n if (padding) {\n const { top, right, bottom, left } = parseSpacing(padding, scale);\n node.setPadding(yoga.EDGE_TOP, top);\n node.setPadding(yoga.EDGE_RIGHT, right);\n node.setPadding(yoga.EDGE_BOTTOM, bottom);\n node.setPadding(yoga.EDGE_LEFT, left);\n }\n if (flex) {\n node.setFlex(flex);\n }\n node.setGap(yoga.GUTTER_ALL, (gap ?? 0) * scale);\n if (width) {\n node.setWidth(typeof width === \"number\" ? width * scale : width);\n }\n if (height) {\n if (typeof height === \"function\") {\n node.setHeight(\"100%\");\n } else {\n node.setHeight(typeof height === \"number\" ? height * scale : height);\n }\n }\n if (minWidth) {\n node.setMinWidth(typeof minWidth === \"number\" ? minWidth * scale : minWidth);\n }\n if (minHeight) {\n node.setMinHeight(typeof minHeight === \"number\" ? minHeight * scale : minHeight);\n }\n if (maxWidth) {\n node.setMaxWidth(typeof maxWidth === \"number\" ? maxWidth * scale : maxWidth);\n }\n if (maxHeight) {\n node.setMaxHeight(typeof maxHeight === \"number\" ? maxHeight * scale : maxHeight);\n }\n}\nfunction _layoutElements({ canvas, debug = false, scale = 1, position = [] }) {\n position.forEach(({ x, y, width, height, childNodes, element }) => {\n const context = canvas.getContext(\"2d\", { alpha: false });\n if (context) {\n const { draw } = element;\n if (draw) {\n context.save();\n draw({ scale, dx: x, dy: y, dw: width, dh: height });\n if (debug) {\n context.strokeStyle = \"red\";\n context.strokeRect(x, y, width, height);\n }\n }\n _layoutElements({\n canvas,\n debug,\n scale,\n position: childNodes\n });\n context.restore();\n }\n });\n}\nfunction buildNodeTree(yoga, parent, elements, scale) {\n const nodes = elements.map((element, index) => {\n const node = yoga.Node.create();\n const { radius, elements: children = [], draw, ...layout } = element;\n setNodeProperties(yoga, node, { layout, scale });\n parent.insertChild(node, index);\n return {\n node,\n element,\n childNodes: buildNodeTree(yoga, node, children, scale)\n };\n });\n parent.calculateLayout();\n return nodes;\n}\nfunction calculatePosition(root, tree, parentX = 0, parentY = 0) {\n const { top: rootY, left: rootX } = root.getComputedLayout();\n return tree.map(({ node, element, childNodes }) => {\n const { top, left, width, height } = node.getComputedLayout();\n const x = parentX + left;\n const y = parentY + top;\n return {\n x: rootX + x,\n y: rootY + y,\n width,\n height,\n element,\n childNodes: calculatePosition(root, childNodes, x, y)\n };\n });\n}\nfunction recalculateDimensions(tree, scale) {\n tree.forEach(({ node, element, childNodes }) => {\n const { height } = element;\n if (height && typeof height === \"function\") {\n const width = node.getComputedWidth();\n const maxHeight = node.getComputedHeight();\n const h = height({ width, maxHeight, scale });\n node.setHeight(h);\n }\n recalculateDimensions(childNodes, scale);\n });\n}\nfunction layoutElements({ yoga, canvas, origin, elements, ...args }) {\n const o = { inset: { top: 0, left: 0 }, width: canvas.width, height: canvas.height, ...origin };\n const root = yoga.Node.create();\n setNodeProperties(yoga, root, { layout: o });\n root.calculateLayout();\n const { width, height } = root.getComputedLayout();\n const scale = Math.min(width, height) / 1080;\n const tree = buildNodeTree(yoga, root, elements, scale);\n recalculateDimensions(tree, scale);\n root.calculateLayout();\n const position = calculatePosition(root, tree);\n return _layoutElements({ ...args, scale, canvas, position });\n}\nconst easingMap = {\n linear,\n easeIn,\n easeInOut,\n easeOut,\n circIn,\n circInOut,\n circOut,\n backIn,\n backInOut,\n backOut,\n anticipate,\n bounceIn,\n bounceInOut,\n bounceOut\n};\nconst createInterpolate = memoize(\n (from, to, { clamp = true, ease = \"easeIn\", ...options } = {}) => {\n return interpolate(from, to, { ...options, clamp, ease: easingMap[ease] });\n },\n {\n cacheKey: ([from, to, options]) => JSON.stringify({ from, to, options })\n }\n);\nconst supportedFonts = [\n {\n family: \"Noto Arabic\",\n regex: /\\p{Script=Arabic}/u,\n url: \"https://media-player-fonts.s3.ap-southeast-2.amazonaws.com/NotoSansArabic-VariableFont_wdth%2Cwght.woff2\",\n style: \"normal\"\n },\n {\n family: \"Noto Chinese\",\n regex: /\\p{Script=Han}/u,\n url: \"https://media-player-fonts.s3.ap-southeast-2.amazonaws.com/NotoSansSC-VariableFont_wght.woff2\",\n style: \"normal\"\n },\n {\n family: \"Noto Hebrew\",\n regex: /\\p{Script=Hebrew}/u,\n url: \"https://media-player-fonts.s3.ap-southeast-2.amazonaws.com/NotoSansHebrew-VariableFont_wdth%2Cwght.woff2\",\n style: \"normal\"\n },\n {\n family: \"Noto Hindi\",\n regex: /\\p{Script=Devanagari}/u,\n url: \"https://media-player-fonts.s3.ap-southeast-2.amazonaws.com/NotoSansDevanagari-VariableFont_wdth%2Cwght.woff2\",\n style: \"normal\"\n },\n {\n family: \"Noto Japanese\",\n regex: /\\p{Script=Han}|\\p{Script=Katakana}|\\p{Script=Hiragana}/u,\n url: \"https://media-player-fonts.s3.ap-southeast-2.amazonaws.com/NotoSansJP-VariableFont_wght.woff2\",\n style: \"normal\"\n },\n {\n family: \"Noto Korean\",\n regex: /\\p{Script=Hangul}/u,\n url: \"https://media-player-fonts.s3.ap-southeast-2.amazonaws.com/NotoSansKR-VariableFont_wght.woff2\",\n style: \"normal\"\n },\n {\n family: \"Noto Color Emoji\",\n regex: /\\p{Extended_Pictographic}/u,\n url: \"https://media-player-fonts.s3.ap-southeast-2.amazonaws.com/NotoColorEmoji-Regular.woff2\",\n style: \"normal\"\n }\n];\nfunction appendFontFamilies({ text, font }) {\n let newFont = font;\n supportedFonts.forEach(({ family, regex }) => {\n if (regex.exec(text)) {\n newFont += `, ${family}`;\n }\n });\n return newFont;\n}\nconst PILL_FRACTION = 1.8;\nconst fontSizeRegex = /(?<value>\\d+\\.?\\d*)(?=px)/;\nfunction parseRadius(radius, scale = 1) {\n if (typeof radius === \"number\") {\n return {\n topLeft: radius * scale,\n topRight: radius * scale,\n bottomRight: radius * scale,\n bottomLeft: radius * scale\n };\n }\n return {\n topLeft: ((radius == null ? void 0 : radius.topLeft) ?? 0) * scale,\n topRight: ((radius == null ? void 0 : radius.topRight) ?? 0) * scale,\n bottomRight: ((radius == null ? void 0 : radius.bottomRight) ?? 0) * scale,\n bottomLeft: ((radius == null ? void 0 : radius.bottomLeft) ?? 0) * scale\n };\n}\nfunction visibleRecursive(element) {\n const { visible, node } = element;\n const childElements = [...(node == null ? void 0 : node.elements) ?? [], ...(element == null ? void 0 : element.elements) ?? []];\n return (\n // If we're explicitly visible or invisible return this value\n visible ?? // Otherwise only show the node if the node has a value that's not undefined\n (node && node.type !== \"box\" && node.type !== \"gradient\" ? !!node.value : childElements == null ? void 0 : childElements.some((element2) => visibleRecursive(element2)))\n );\n}\nfunction mapElements({\n yoga,\n debug = false,\n canvas,\n cropCanvas,\n posterCanvas,\n letterboxCanvas,\n elements = [],\n currentTime,\n contentTime,\n sceneTime,\n totalDuration,\n contentDuration,\n sceneDuration\n}) {\n return elements.map((element) => {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const { node, transient = [{ from: 0, duration: Infinity }] } = element;\n const mainCtx = canvas.getContext(\"2d\");\n const timers = {\n total: currentTime,\n content: contentTime,\n scene: sceneTime\n };\n const durations = {\n total: totalDuration,\n content: contentDuration,\n scene: sceneDuration\n };\n const activeTransients = transient.reduce((acc, { type = \"scene\", from, duration, animation }) => {\n const relativeFrom = from < 0 ? durations[type] + from : from;\n if (timers[type] >= relativeFrom && timers[type] <= relativeFrom + duration) {\n acc.push({\n type,\n animation,\n duration,\n from: relativeFrom\n });\n }\n return acc;\n }, []);\n if (mainCtx && activeTransients.length > 0 && visibleRecursive(element)) {\n let width = element.width;\n let height = element.height;\n if ((node == null ? void 0 : node.type) === \"text\" && node.value) {\n const { align = \"left\" } = node;\n const font = appendFontFamilies({ text: node.value, font: node.font });\n mainCtx.save();\n mainCtx.font = font;\n mainCtx.textBaseline = \"top\";\n mainCtx.textAlign = align;\n if (!node.wrap) {\n width = mainCtx.measureText(node.value).width;\n height = parseFloat(((_b = (_a = font.match(fontSizeRegex)) == null ? void 0 : _a.groups) == null ? void 0 : _b.value) ?? \"0\");\n } else {\n height = ({ width: width2, maxHeight, scale }) => {\n var _a2, _b2;\n const fontSize = getFontSize({\n font,\n scale,\n context: mainCtx,\n maxW: width2,\n maxH: maxHeight,\n text: node.value ?? \"\",\n minSize: (_a2 = node.fill) == null ? void 0 : _a2.minSize,\n maxSize: (_b2 = node.fill) == null ? void 0 : _b2.maxSize\n });\n const lines = getLines({ context: mainCtx, font, fontSize, text: node.value ?? \"\", maxW: width2 });\n return lines.length * fontSize;\n };\n }\n mainCtx.restore();\n }\n if ((node == null ? void 0 : node.type) === \"image\" && node.image && node.size) {\n const logoWidth = ((_c = node.image) == null ? void 0 : _c.naturalWidth) ?? ((_d = node.image) == null ? void 0 : _d.width);\n const logoHeight = ((_e = node.image) == null ? void 0 : _e.naturalHeight) ?? ((_f = node.image) == null ? void 0 : _f.height);\n const logoAspectRatio = logoWidth / logoHeight;\n const desiredWidth = (_g = node.size) == null ? void 0 : _g.width;\n const desiredHeight = (_h = node.size) == null ? void 0 : _h.height;\n width = desiredWidth ?? (logoAspectRatio >= 1 ? (desiredHeight ?? 0) * logoAspectRatio : (desiredHeight ?? 0) / logoAspectRatio);\n height = desiredHeight ?? (logoAspectRatio < 1 ? (desiredWidth ?? 0) * logoAspectRatio : (desiredWidth ?? 0) / logoAspectRatio);\n }\n return {\n ...element,\n width,\n height,\n elements: mapElements({\n yoga,\n debug,\n canvas,\n cropCanvas,\n posterCanvas,\n letterboxCanvas,\n elements: element.elements,\n currentTime,\n contentTime,\n sceneTime,\n totalDuration,\n contentDuration,\n sceneDuration\n }),\n draw: ({ dx, dy, dw, dh, scale }) => {\n var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i, _j, _k, _l, _m;\n activeTransients.forEach((transient2) => {\n const {\n type: transientType = \"scene\",\n from,\n duration,\n animation = { type: \"fade\", duration: 1 / 3, easing: { in: \"easeOut\", out: \"easeOut\" } }\n } = transient2;\n if (animation) {\n const {\n type: animationType,\n duration: animationDuration,\n easing: { in: animationEasingIn = \"easeOut\", out: animationEasingOut = \"easeOut\" } = {}\n } = animation;\n if (from > 0 && timers[transientType] <= from + animationDuration) {\n switch (animationType) {\n case \"fade\": {\n const fadeIn = createInterpolate([from, from + animationDuration], [0, 1], {\n ease: animationEasingIn\n });\n mainCtx.globalAlpha = fadeIn(timers[transientType]);\n break;\n }\n case \"slide\": {\n const { options } = animation;\n const slideMap = {\n up: [\n { x: 0, y: dh },\n { x: 0, y: 0 }\n ],\n right: [\n { x: dw, y: 0 },\n { x: 0, y: 0 }\n ],\n down: [\n { x: 0, y: -dh },\n { x: 0, y: 0 }\n ],\n left: [\n { x: -dw, y: 0 },\n { x: 0, y: 0 }\n ]\n };\n const slideIn = createInterpolate(\n [from, from + animationDuration],\n slideMap[options.direction.in],\n { ease: animationEasingIn }\n );\n const { x, y } = slideIn(timers[transientType]);\n mainCtx.translate(x, y);\n break;\n }\n }\n }\n if (\n // Don't fade out if we hit the end of the video as the fade ends\n from + duration < durations[transientType] && from + duration - animationDuration <= timers[transientType]\n ) {\n switch (animationType) {\n case \"fade\": {\n const fadeOut = createInterpolate(\n [from + duration - animationDuration, from + duration],\n [1, 0],\n {\n ease: animationEasingOut\n }\n );\n mainCtx.globalAlpha = fadeOut(timers[transientType]);\n break;\n }\n case \"slide\": {\n const { options } = animation;\n const slideMap = {\n up: [\n { x: 0, y: 0 },\n { x: 0, y: -dh }\n ],\n right: [\n { x: 0, y: 0 },\n { x: dw, y: 0 }\n ],\n down: [\n { x: 0, y: 0 },\n { x: 0, y: dh }\n ],\n left: [\n { x: 0, y: 0 },\n { x: -dw, y: 0 }\n ]\n };\n const slideOut = createInterpolate(\n [from + duration - animationDuration, from + duration],\n slideMap[options.direction.out],\n { ease: animationEasingOut }\n );\n const { x, y } = slideOut(timers[transientType]);\n mainCtx.translate(x, y);\n break;\n }\n }\n }\n }\n });\n if (node) {\n const { type } = node;\n if (type === \"box\") {\n const { shadow: { color = \"rgba(0, 0, 0, 0.5)\", blur = 0, offset: { x = 0, y = 0 } = {} } = {} } = node;\n mainCtx.save();\n mainCtx.fillStyle = color;\n mainCtx.shadowColor = color;\n mainCtx.shadowBlur = blur;\n mainCtx.shadowOffsetX = x + dw + canvas.width;\n mainCtx.shadowOffsetY = y + dh + canvas.height;\n mainCtx.beginPath();\n if (!element.radius) {\n mainCtx.rect(dx - dw - canvas.width, dy - dh - canvas.height, dw, dh);\n } else {\n const { topLeft, topRight, bottomRight, bottomLeft } = parseRadius(element.radius, scale);\n mainCtx.roundRect(dx - dw - canvas.width, dy - dh - canvas.height, dw, dh, [\n topLeft,\n topRight,\n bottomRight,\n bottomLeft\n ]);\n }\n mainCtx.fill();\n mainCtx.closePath();\n mainCtx.restore();\n }\n if (element.radius) {\n const { topLeft, topRight, bottomRight, bottomLeft } = parseRadius(element.radius, scale);\n mainCtx.beginPath();\n mainCtx.moveTo(dx + Math.min(dh / PILL_FRACTION, topLeft), dy);\n mainCtx.lineTo(dx + dw - Math.min(dh / PILL_FRACTION, topRight), dy);\n mainCtx.quadraticCurveTo(dx + dw, dy, dx + dw, dy + Math.min(dh / PILL_FRACTION, topRight));\n mainCtx.lineTo(dx + dw, dy + dh - Math.min(dh / PILL_FRACTION, bottomRight));\n mainCtx.quadraticCurveTo(\n dx + dw,\n dy + dh,\n dx + dw - Math.min(dh / PILL_FRACTION, bottomRight),\n dy + dh\n );\n mainCtx.lineTo(dx + Math.min(dh / PILL_FRACTION, bottomLeft), dy + dh);\n mainCtx.quadraticCurveTo(dx, dy + dh, dx, dy + dh - Math.min(dh / PILL_FRACTION, bottomLeft));\n mainCtx.lineTo(dx, dy + Math.min(dh / PILL_FRACTION, topLeft));\n mainCtx.quadraticCurveTo(dx, dy, dx + Math.min(dh / PILL_FRACTION, topLeft), dy);\n mainCtx.closePath();\n if (debug) {\n mainCtx.strokeStyle = \"blue\";\n mainCtx.stroke();\n }\n mainCtx.clip();\n }\n if (type === \"box\") {\n mainCtx.save();\n mainCtx.fillStyle = node.background;\n mainCtx.fillRect(dx, dy, dw, dh);\n mainCtx.restore();\n }\n if (type === \"text\" && node.value) {\n const { align = \"left\" } = node;\n const font = appendFontFamilies({ text: node.value, font: node.font });\n const fontSize = getFontSize({\n font,\n scale,\n context: mainCtx,\n maxW: dw,\n maxH: dh,\n text: node.value ?? \"\",\n minSize: (_a2 = node.fill) == null ? void 0 : _a2.minSize,\n maxSize: (_b2 = node.fill) == null ? void 0 : _b2.maxSize\n });\n mainCtx.font = font.replace(fontSizeRegex, fontSize.toString());\n mainCtx.textBaseline = \"top\";\n mainCtx.fillStyle = node.color;\n mainCtx.textAlign = align;\n const textXPosMap = {\n left: dx,\n center: dx + dw / 2,\n right: dx + dw\n };\n if (node.wrap) {\n const lines = getLines({ context: mainCtx, font, fontSize, text: node.value, maxW: dw });\n lines.forEach((line, index) => {\n mainCtx.fillText(line.text, textXPosMap[align], dy + fontSize * index);\n });\n } else {\n mainCtx.fillText(node.value, textXPosMap[align], dy);\n }\n }\n if (type === \"image\" && node.image) {\n mainCtx.drawImage(node.image, dx, dy, dw, dh);\n }\n if (type === \"video\" && (((_c2 = node.video) == null ? void 0 : _c2.node) || ((_d2 = node.video) == null ? void 0 : _d2.getSource))) {\n const format = node.format ?? \"letterbox\";\n const video = ((_f2 = (_e2 = node.video) == null ? void 0 : _e2.getSource) == null ? void 0 : _f2.call(_e2, sceneTime)) ?? node.video.node;\n const sourceWidth = (video == null ? void 0 : video.videoWidth) ?? (video == null ? void 0 : video.naturalWidth) ?? (video == null ? void 0 : video.width);\n const sourceHeight = (video == null ? void 0 : video.videoHeight) ?? (video == null ? void 0 : video.naturalHeight) ?? (video == null ? void 0 : video.height);\n if (sourceWidth && sourceHeight) {\n const {\n dx: videoX,\n dy: videoY,\n dw: videoW,\n dh: videoH\n } = drawVideoFormat({\n context: mainCtx,\n cropCanvas,\n letterboxCanvas,\n source: video,\n format,\n crop: (_g2 = node == null ? void 0 : node.value) == null ? void 0 : _g2.crop,\n sourceWidth,\n sourceHeight,\n posX: dx,\n posY: dy,\n drawAreaWidth: dw,\n drawAreaHeight: dh\n });\n if (node.elements) {\n drawElements({\n yoga,\n debug,\n canvas,\n cropCanvas,\n posterCanvas,\n letterboxCanvas,\n elements: node.elements,\n currentTime,\n contentTime,\n sceneTime,\n totalDuration,\n contentDuration,\n sceneDuration,\n origin: {\n inset: {\n top: Math.max(dy, dy + videoY),\n left: Math.max(dx, dx + videoX)\n },\n width: Math.min(dw, videoW),\n height: Math.min(dh, videoH)\n }\n });\n }\n }\n const posterDuration = 1 / 3;\n if (node.poster && currentTime >= 0 && currentTime <= posterDuration) {\n mainCtx.save();\n mainCtx.globalAlpha = 1 - currentTime / posterDuration;\n const posterWidth = ((_h2 = node.poster) == null ? void 0 : _h2.naturalWidth) ?? ((_i = node.poster) == null ? void 0 : _i.width);\n const posterHeight = ((_j = node.poster) == null ? void 0 : _j.naturalHeight) ?? ((_k = node.poster) == null ? void 0 : _k.height);\n posterCanvas.width = posterCanvas.height = 0;\n posterCanvas.width = dw;\n posterCanvas.height = dh;\n const posterCtx = posterCanvas.getContext(\"2d\");\n if (posterCtx && posterWidth && posterHeight) {\n const {\n dx: videoX,\n dy: videoY,\n dw: videoW,\n dh: videoH\n } = drawVideoFormat({\n context: posterCtx,\n cropCanvas,\n letterboxCanvas,\n source: node.poster,\n format,\n crop: (_l = node == null ? void 0 : node.value) == null ? void 0 : _l.crop,\n sourceWidth: posterWidth,\n sourceHeight: posterHeight,\n posX: 0,\n posY: 0,\n drawAreaWidth: dw,\n drawAreaHeight: dh\n });\n if (node.elements) {\n drawElements({\n yoga,\n debug,\n canvas: posterCanvas,\n cropCanvas,\n posterCanvas,\n letterboxCanvas,\n elements: node.elements,\n currentTime,\n contentTime,\n sceneTime,\n totalDuration,\n contentDuration,\n sceneDuration,\n origin: {\n inset: {\n top: Math.max(0, videoY),\n left: Math.max(0, videoX)\n },\n width: Math.min(dw, videoW),\n height: Math.min(dh, videoH)\n }\n });\n }\n mainCtx.drawImage(posterCanvas, dx, dy, dw, dh);\n mainCtx.restore();\n }\n }\n }\n if (type === \"gradient\" && node.value) {\n const gradient = mainCtx.createLinearGradient(dx + dw, dy, dx + dw, dy + dh);\n (_m = node.value) == null ? void 0 : _m.forEach((stop) => {\n gradient.addColorStop(stop.percent, stop.color);\n });\n mainCtx.fillStyle = gradient;\n mainCtx.fillRect(dx, dy, dw, dh);\n }\n }\n }\n };\n }\n }).filter(Boolean);\n}\nfunction drawElements({\n yoga,\n debug,\n canvas,\n cropCanvas,\n posterCanvas,\n letterboxCanvas,\n elements,\n currentTime,\n contentTime,\n sceneTime,\n totalDuration,\n contentDuration,\n sceneDuration,\n ...rest\n}) {\n return layoutElements({\n ...rest,\n yoga,\n debug,\n canvas,\n elements: mapElements({\n yoga,\n debug,\n canvas,\n cropCanvas,\n posterCanvas,\n letterboxCanvas,\n elements,\n currentTime,\n contentTime,\n sceneTime,\n totalDuration,\n contentDuration,\n sceneDuration\n })\n });\n}\nconst getLines = memoize(\n ({ context, font, fontSize, text, maxW = Infinity }) => {\n try {\n context.save();\n context.font = font.replace(fontSizeRegex, fontSize.toString());\n const newLines = text.split(\"\\n\");\n return newLines.flatMap((line) => {\n const words = line.split(\" \").filter(Boolean);\n if (!words.length) {\n return { text: \"\", metrics: context.measureText(\"\") };\n }\n return words.slice(1).reduce((acc, word) => {\n const prevLine = acc[acc.length - 1].text;\n const newLine = `${prevLine} ${word}`.trim();\n const newMetrics = context.measureText(newLine);\n if (newMetrics.width > maxW) {\n acc = [...acc, ...breakWord({ context, word, maxW })];\n } else {\n acc[acc.length - 1] = {\n text: newLine,\n metrics: newMetrics\n };\n }\n return acc;\n }, breakWord({ context, word: words[0], maxW }));\n });\n } finally {\n context.restore();\n }\n },\n {\n cacheKey: ([{ font, fontSize, text, maxW }]) => `${font}_${fontSize}_${text}_${maxW}`\n }\n);\nconst VTT_LINE_REGEX = /\\d{0,2}:?\\d{2}:\\d{2}\\.\\d{3}\\s-->\\s\\d{0,2}:?\\d{2}:\\d{2}\\.\\d{3}\\s{1,2}.*/g;\nconst VTT_TIMESTAMP_REGEX = /\\d{0,2}:?\\d{2}:\\d{2}\\.\\d{3}/g;\nfunction vttToLines(vtt) {\n if (!vtt) {\n return [];\n }\n const match = vtt.match(VTT_LINE_REGEX);\n if (!match) {\n return [];\n }\n return match == null ? void 0 : match.map((line) => {\n const [timestamps, text] = line.replace(\"\\r\\n\", \"\\n\").split(\"\\n\");\n const [start, end] = timestamps.match(VTT_TIMESTAMP_REGEX) || [];\n return { start, end, text };\n });\n}\nfunction parseTimestamp(timestamp) {\n const [hours, minutes, seconds] = timestamp.split(\":\");\n if (!seconds) {\n return parseInt(hours) * 60 + parseInt(minutes);\n }\n return parseInt(hours) * 60 * 60 + parseInt(minutes) * 60 + parseFloat(seconds);\n}\nfunction drawCaptions({ canvas, dx, dy, dw, dh, sceneTime, vttCaptions }) {\n if (vttCaptions) {\n const captions = vttToLines(vttCaptions);\n const activeCaption = captions.find(({ start, end }) => {\n return start && end && sceneTime >= parseTimestamp(start) && sceneTime < parseTimestamp(end);\n });\n if (activeCaption) {\n const context = canvas.getContext(\"2d\");\n if (context) {\n const resolution = Math.min(dw, dh);\n const fontSize = resolution * 0.04;\n const font = appendFontFamilies({\n text: vttCaptions,\n font: `400 ${fontSize}px Roobert Captions`\n });\n context.font = font;\n context.textBaseline = \"middle\";\n const maxWidth = dw * 0.9;\n const lines = getLines({ context, font, fontSize, text: activeCaption.text, maxW: maxWidth });\n lines.forEach(({ text, metrics }, index) => {\n const textPosX = dx + (dw - metrics.width) / 2;\n const textPosY = dy + (dh * 0.85 - (fontSize + resolution * 0.03) * (lines.length - 1 - index));\n const boxPosOffset = fontSize * 0.8;\n const boxPadding = fontSize / 1.5;\n const boxPosX = dx + (dw - metrics.width - boxPadding) / 2;\n const boxPosY = textPosY - boxPosOffset;\n const boxWidth = metrics.width + boxPadding;\n const boxHeight = boxPosOffset * 2;\n const currentAlpha = context.globalAlpha;\n context.save();\n context.globalAlpha = 0.8 * currentAlpha;\n context.fillStyle = \"#000000\";\n context.beginPath();\n context.roundRect(boxPosX, boxPosY, boxWidth, boxHeight, resolution * 0.01);\n context.fill();\n context.closePath();\n context.globalAlpha = currentAlpha;\n context.fillStyle = \"#FFFFFF\";\n context.fillText(text, textPosX, textPosY);\n context.restore();\n });\n }\n }\n }\n}\nconst template = {\n id: \"046f363c-960a-449c-ae5e-984ac6ab58c2\",\n version: \"2\",\n name: \"None\",\n entityId: \"none\",\n templateId: \"a95e537e-fb4d-4d2f-9c72-86c0925c7176\",\n layouts: [\n {\n name: \"none\",\n tree: `[\n {\n \"width\": \"100%\",\n \"height\": \"100%\",\n \"node\": {\n \"type\": \"video\",\n \"format\": {{ it.videoFormat }},\n \"value\": {\n \"id\": {{ it.id }},\n \"key\": {{ it.key }},\n \"src\": {{@async resolve-source({ sources: [it.mp4, it.input] }) /}},\n \"playlist\": {{@async resolve-source({ sources: [it.playlist] }) /}},\n \"poster\": {{ it.poster }},\n \"captions\": {{ it.captions }},\n \"duration\": {{ it.duration }},\n \"startOffset\": {{ it.startOffset }},\n \"endOffset\": {{ it.endOffset }},\n \"crop\": {\n \"x\": {{ it.crop?.x }},\n \"y\": {{ it.crop?.y }},\n \"width\": {{ it.crop?.width }},\n \"height\": {{ it.crop?.height }}\n }\n }\n }\n }\n ]`\n }\n ],\n content: [\n {\n scenes: [\n {\n layout: \"none\",\n data: `{\n \"id\": {{ it.root?.answer?.id }},\n \"key\": {{ it.root?.answer?.id + '-intro' }},\n \"mp4\": {{ it.root?.answer?.media?.video }},\n \"input\": {{ it.root?.answer?.media?.input }},\n \"playlist\": {{ it.root?.answer?.media?.playlist }},\n \"poster\": {{ it.root?.answer?.media?.thumbnail }},\n \"captions\": {{ it.root?.answer?.captions?.current }},\n \"duration\": {{ it.root?.answer?.metadata?.duration }},\n \"startOffset\": {{ it.root?.answer?.settings?.startOffset }},\n \"endOffset\": {{ it.root?.answer?.settings?.endOffset }},\n \"crop\": {\n \"x\": {{ it.root?.answer?.settings?.crop?.x }},\n \"y\": {{ it.root?.answer?.settings?.crop?.y }},\n \"width\": {{ it.root?.answer?.settings?.crop?.width }},\n \"height\": {{ it.root?.answer?.settings?.crop?.height }}\n }\n }`\n }\n ],\n root: \"{{ it.intro?.questions?.items }}\"\n },\n {\n scenes: [\n {\n layout: \"none\",\n data: `{\n \"id\": {{ it.root?.answer?.id }},\n \"key\": {{ it.root?.answer?.id + '-' + it.index }},\n \"mp4\": {{ it.root?.answer?.media?.video }},\n \"input\": {{ it.root?.answer?.media?.input }},\n \"playlist\": {{ it.root?.answer?.media?.playlist }},\n \"poster\": {{ it.root?.answer?.media?.thumbnail }},\n \"captions\": {{ it.root?.answer?.captions?.current }},\n \"duration\": {{ it.root?.answer?.metadata?.duration }},\n \"startOffset\": {{ it.root?.answer?.settings?.startOffset }},\n \"endOffset\": {{ it.root?.answer?.settings?.endOffset }},\n \"crop\": {\n \"x\": {{ it.root?.answer?.settings?.crop?.x }},\n \"y\": {{ it.root?.answer?.settings?.crop?.y }},\n \"width\": {{ it.root?.answer?.settings?.crop?.width }},\n \"height\": {{ it.root?.answer?.settings?.crop?.height }}\n }\n }`\n }\n ],\n root: \"{{ it.questions?.items }}\"\n },\n {\n scenes: [\n {\n layout: \"none\",\n data: `{\n \"id\": {{ it.root?.answer?.id }},\n \"key\": {{ it.root?.answer?.id + '-outro' }},\n \"mp4\": {{ it.root?.answer?.media?.video }},\n \"input\": {{ it.root?.answer?.media?.input }},\n \"playlist\": {{ it.root?.answer?.media?.playlist }},\n \"poster\": {{ it.root?.answer?.media?.thumbnail }},\n \"captions\": {{ it.root?.answer?.captions?.current }},\n \"duration\": {{ it.root?.answer?.metadata?.duration }},\n \"startOffset\": {{ it.root?.answer?.settings?.startOffset }},\n \"endOffset\": {{ it.root?.answer?.settings?.endOffset }},\n \"crop\": {\n \"x\": {{ it.root?.answer?.settings?.crop?.x }},\n \"y\": {{ it.root?.answer?.settings?.crop?.y }},\n \"width\": {{ it.root?.answer?.settings?.crop?.width }},\n \"height\": {{ it.root?.answer?.settings?.crop?.height }}\n }\n }`\n }\n ],\n root: \"{{ it.outro?.questions?.items }}\"\n }\n ],\n system: true,\n createdAt: (/* @__PURE__ */ new Date()).toISOString(),\n updatedAt: (/* @__PURE__ */ new Date()).toISOString()\n};\nconst none = {\n id: \"073977ec-6384-4329-b7c5-8275fb513e74\",\n name: \"None\",\n entityId: \"none\",\n templateId: \"a95e537e-fb4d-4d2f-9c72-86c0925c7176\",\n templates: [template],\n meta: {\n frameRate: 30,\n resolution: 720,\n transitionDuration: 1 / 3\n },\n system: true,\n default: 0,\n createdAt: (/* @__PURE__ */ new Date()).toISOString(),\n updatedAt: (/* @__PURE__ */ new Date()).toISOString()\n};\nasync function imageFactory() {\n if (typeof window === \"undefined\") {\n const skiaCanvas = await import(\"skia-canvas\");\n return new skiaCanvas.Image();\n }\n return new Image();\n}\nconst getImage = pMemoize(async function getImage2(src) {\n if (!src) {\n return null;\n }\n return new Promise((resolve, reject) => {\n imageFactory().then((image) => {\n image.onload = () => {\n resolve(image);\n };\n image.onerror = (e) => {\n reject(e);\n };\n image.src = src;\n });\n });\n});\nasync function resolveElement({ element, meta }, resolveVideo, resolveVideoMeta) {\n var _a, _b, _c;\n let newElement = { ...element };\n const { node } = element;\n if ((node == null ? void 0 : node.type) === \"video\" && (((_a = node == null ? void 0 : node.value) == null ? void 0 : _a.src) || ((_b = node == null ? void 0 : node.value) == null ? void 0 : _b.playlist))) {\n const video = await resolveVideo(node.value, meta);\n let poster;\n try {\n poster = await getImage(node.value.poster);\n } catch {\n poster = null;\n }\n newElement = {\n ...newElement,\n node: {\n ...node,\n video,\n poster,\n meta: await resolveVideoMeta(node.value, video.node, meta)\n }\n };\n }\n if ((node == null ? void 0 : node.type) === \"image\" && node.value) {\n let image;\n try {\n image = await getImage(node.value);\n } catch {\n image = null;\n }\n newElement = {\n ...newElement,\n node: {\n ...node,\n image\n }\n };\n }\n if (newElement.node && ((_c = element.node) == null ? void 0 : _c.elements)) {\n newElement.node.elements = await Promise.all(\n element.node.elements.map((element2) => resolveElement({ element: element2, meta }, resolveVideo, resolveVideoMeta))\n );\n }\n if (element.elements) {\n newElement.elements = await Promise.all(\n element.elements.map((element2) => resolveElement({ element: element2, meta }, resolveVideo, resolveVideoMeta))\n );\n }\n return newElement;\n}\nasync function canvasFactory() {\n if (typeof window === \"undefined\") {\n const skiaCanvas = await import(\"skia-canvas\");\n const canvas = new skiaCanvas.Canvas();\n canvas.gpu = false;\n return canvas;\n }\n return document.createElement(\"canvas\");\n}\nasync function checkSource(src) {\n var _a;\n try {\n if ((_a = await fetch(src, { method: \"HEAD\" })) == null ? void 0 : _a.ok) {\n return src;\n }\n } catch {\n return void 0;\n }\n return void 0;\n}\nasync function getSources({ sources }) {\n let src = null;\n if (sources) {\n const sPromises = sources.filter(Boolean).map((src2) => checkSource(src2));\n src = (await Promise.all(sPromises)).find(Boolean);\n }\n return src;\n}\nfunction getVideoNode(elements = []) {\n var _a;\n for (const element of elements) {\n if (((_a = element == null ? void 0 : element.node) == null ? void 0 : _a.type) === \"video\") {\n return element.node;\n }\n const node = getVideoNode(element == null ? void 0 : element.elements);\n if (node) {\n return node;\n }\n }\n}\nfunction calculateContentsDuration(contents, transitionDuration) {\n return contents.reduce((acc, scenes, i) => {\n return [\n ...acc,\n scenes.map(({ duration }, j) => {\n const isLastScene = i === contents.length - 1 && j === scenes.length - 1;\n if (isLastScene) {\n return duration;\n }\n return duration - transitionDuration;\n })\n ];\n }, []);\n}\nfunction isPlainObject(value) {\n if (value === null || typeof value !== \"object\") {\n return false;\n }\n if (Object.getPrototypeOf(value) === null) {\n return true;\n }\n let proto = value;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(value) === proto;\n}\nfunction sanitizeJSON(unsanitized) {\n return unsanitized.replace(/\\\\/g, \"\\\\\\\\\").replace(/\\//g, \"\\\\/\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/\\t/g, \"\\\\t\").replace(/\\f/g, \"\\\\f\").replace(/\"/g, '\\\\\"');\n}\nfunction sum(arr) {\n return arr.flatMap((duration) => duration).reduce((a, b) => a + b, 0);\n}\nconst loadYogaLayout = pMemoize(() => {\n return loadYoga();\n});\nfilters.define(\"parse\", (data) => {\n if (typeof data === \"undefined\") {\n return null;\n }\n if (typeof data === \"string\") {\n return `\"${sanitizeJSON(data)}\"`;\n }\n if (isPlainObject(data) || Array.isArray(data)) {\n return JSON.stringify(data);\n }\n return data;\n});\nhelpers.define(\n \"resolve-source\",\n pMemoize(\n async (content) => {\n const { sources } = content.params[0] ?? {};\n const validSources = sources == null ? void 0 : sources.filter(Boolean);\n const blob = validSources == null ? void 0 : validSources.find((source2) => source2.includes(\"blob:\"));\n const local = validSources == null ? void 0 : validSources.find((source2) => !source2.includes(\"http\"));\n const source = blob ?? local ?? await getSources({ sources });\n return source ? `\"${source}\"` : \"null\";\n },\n {\n cacheKey: ([content]) => JSON.stringify(content.params[0] ?? {})\n }\n )\n);\nconst overrideRender = (template2, data, config) => {\n return render(\n template2,\n data,\n getConfig({\n autoEscape: false,\n defaultFilter: \"parse\",\n async: true,\n asyncHelpers: [\"resolve-source\"],\n ...config\n })\n );\n};\nasync function templateToScenes({ data, template: argTemplate, burnCaptions = false, debug = false }, resolveVideo, resolveVideoMeta) {\n var _a, _b, _c, _d;\n const yoga = await loadYogaLayout();\n const templateInstance = argTemplate ?? none;\n if (!((_a = templateInstance.templates) == null ? void 0 : _a.length)) {\n throw new Error(`No templates found for template instance: ${templateInstance.id}`);\n }\n let validTemplate = templateInstance.templates.find(({ version }) => version === TEMPLATE_VERSION);\n if (!validTemplate) {\n const invalidVersions = templateInstance.templates.map(({ version }) => `\"${version}\"`).join(\", \");\n console.warn(`Template renderer expects template version \"${TEMPLATE_VERSION}\" but got ${invalidVersions}`);\n validTemplate = templateInstance.templates[templateInstance.templates.length - 1];\n }\n const contents = await Promise.all(\n validTemplate.content.map(async ({ scenes: scenes2, root: contentRoot }) => {\n const renderData = {\n ...templateInstance.options,\n ...data,\n intro: templateInstance.intro,\n outro: templateInstance.outro\n };\n async function contentToSceneConfig(rootData, index) {\n return Promise.all(\n scenes2.map(async ({ layout, duration: templateDuration, data: templateData, options: templateOptions }) => {\n var _a2, _b2, _c2;\n const sceneData = { ...renderData, index, root: rootData };\n const expandedData = templateData ? JSON.parse(await overrideRender(templateData, sceneData)) : {};\n const expandedOptions = templateOptions ? JSON.parse(await overrideRender(templateOptions, sceneData)) : {};\n const expandedDuration = templateDuration ? parseFloat(await overrideRender(templateDuration, sceneData)) : NaN;\n const layoutTree = (_a2 = validTemplate.layouts.find((l) => l.name === layout)) == null ? void 0 : _a2.tree;\n if (!layoutTree) {\n throw new Error(`Layout tree \"${layout}\" not found in template \"${validTemplate.id}\" layouts.`);\n }\n const elements = JSON.parse(\n await overrideRender(layoutTree, {\n ...expandedData,\n ...expandedOptions\n })\n );\n const resolvedElements = await Promise.all(\n elements.flatMap(\n (element) => resolveElement({ element, meta: templateInstance.meta }, resolveVideo, resolveVideoMeta)\n )\n );\n const videoNode = getVideoNode(resolvedElements);\n const duration = (isNaN(expandedDuration) ? null : expandedDuration) ?? ((_b2 = videoNode == null ? void 0 : videoNode.meta) == null ? void 0 : _b2.duration) ?? 0;\n return {\n duration,\n captions: (_c2 = videoNode == null ? void 0 : videoNode.meta) == null ? void 0 : _c2.captions,\n elements: resolvedElements\n };\n })\n );\n }\n if (contentRoot) {\n const expandedRoot = JSON.parse(await overrideRender(contentRoot, renderData));\n if (Array.isArray(expandedRoot)) {\n return (await Promise.all(expandedRoot.map(async (val, index) => contentToSceneConfig(val, index)))).flatMap((x) => x);\n }\n return contentToSceneConfig(expandedRoot, null);\n }\n return contentToSceneConfig(data, null);\n })\n );\n const noVideo = contents.every((sceneConfig) => {\n return sceneConfig.every((scene) => {\n const node = getVideoNode(scene.elements);\n return !(node == null ? void 0 : node.value.src) && !(node == null ? void 0 : node.value.playlist);\n });\n });\n if (noVideo) {\n const failedVideoIds = contents.flatMap(\n (sceneConfig) => sceneConfig.map((scene) => {\n const node = getVideoNode(scene.elements);\n return !(node == null ? void 0 : node.value.src) && !(node == null ? void 0 : node.value.playlist) && (node == null ? void 0 : node.value.id);\n }).filter(Boolean)\n ).join(\", \");\n throw new Error(`Video(s) with ID ${failedVideoIds} failed to load, video can not be processed`);\n }\n const noDurations = contents.every((sceneConfig) => {\n return sceneConfig.every((scene) => scene.duration <= 0);\n });\n if (noDurations) {\n throw new Error(\"No scenes have any duration, video can not be processed\");\n }\n const filteredContents = contents.reduce((acc, sceneConfig) => {\n const filteredSceneConfig = sceneConfig.filter((scene) => scene.duration > 0);\n if (filteredSceneConfig.length > 0) {\n acc = [...acc, filteredSceneConfig];\n }\n return acc;\n }, []);\n const frameRate = ((_b = templateInstance.meta) == null ? void 0 : _b.frameRate) ?? 30;\n const resolution = ((_c = templateInstance.meta) == null ? void 0 : _c.resolution) ?? 720;\n const transitionDuration = ((_d = templateInstance.meta) == null ? void 0 : _d.transitionDuration) ?? 1 / 3;\n const durations = calculateContentsDuration(filteredContents, transitionDuration);\n const totalDuration = sum(durations);\n const scenes = (await Promise.all(\n filteredContents.map((scenes2, i) => {\n const contentDuration = sum(durations[i]);\n const prevContentDurations = sum(durations.slice(0, i));\n return Promise.all(\n scenes2.map(async ({ duration, captions, elements }, j) => {\n var _a2, _b2;\n const cropCanvas = await canvasFactory();\n const letterboxCanvas = await canvasFactory();\n const transitionCanvas = await canvasFactory();\n const posterCanvas = await canvasFactory();\n const videoNode = getVideoNode(elements);\n const prevDurations = sum([...durations.slice(0, i), ...durations[i].slice(0, j)]);\n const draw = ({ canvas, currentTime }) => {\n const contentTime = Math.max(0, currentTime - prevContentDurations);\n const sceneTime = Math.max(0, currentTime - prevDurations);\n drawElements({\n yoga,\n debug,\n canvas,\n cropCanvas,\n posterCanvas,\n letterboxCanvas,\n elements,\n currentTime,\n contentTime,\n sceneTime,\n totalDuration,\n contentDuration,\n sceneDuration: duration\n });\n if (captions && burnCaptions) {\n drawCaptions({\n canvas,\n dx: 0,\n dy: 0,\n dw: canvas.width,\n dh: canvas.height,\n vttCaptions: captions,\n sceneTime: sceneTime + ((videoNode == null ? void 0 : videoNode.meta.start) ?? 0)\n });\n }\n };\n return {\n draw,\n duration,\n transitionCanvas,\n start: prevDurations,\n video: videoNode == null ? void 0 : videoNode.video,\n videoMeta: videoNode == null ? void 0 : videoNode.meta,\n audio: {\n duration,\n src: (_a2 = videoNode == null ? void 0 : videoNode.value) == null ? void 0 : _a2.src,\n start: (_b2 = videoNode == null ? void 0 : videoNode.meta) == null ? void 0 : _b2.start\n }\n };\n })\n );\n })\n )).flatMap((scenes2) => scenes2);\n return {\n scenes,\n frameRate,\n resolution,\n transitionDuration,\n fonts: validTemplate.fonts ?? [],\n duration: totalDuration\n };\n}\nconst TEMPLATE_VERSION = \"2\";\nexport {\n TEMPLATE_VERSION,\n appendFontFamilies,\n crossFade,\n drawCaptions,\n drawElements,\n drawVideoFormat,\n getSizeDetails,\n normaliseAspectRatio,\n normaliseResolution,\n parseTimestamp,\n supportedFonts,\n templateToScenes,\n vttToLines\n};\n//# sourceMappingURL=canvas-video.js.map\n","import { TEMPLATE_VERSION } from '@vouchfor/canvas-video';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport type { TrackingPayload } from '.';\nimport type { Vouch } from '@vouchfor/media-player';\nimport type { Environment } from '~/utils/env';\n\nimport packageJson from '~/../package.json';\nimport { getEnvUrls } from '~/utils/env';\n\nfunction createVisitor(env: Environment) {\n const { publicApiUrl } = getEnvUrls(env);\n const visitorId = uuidv4();\n navigator.sendBeacon(`${publicApiUrl}/api/visitor`, JSON.stringify({ visitorId }));\n return visitorId;\n}\n\nfunction getUids(env: Environment) {\n if (typeof window === 'undefined') {\n return {\n client: null,\n tab: null,\n request: uuidv4()\n };\n }\n\n // Persisted for a user for the same device + browser, so we can e.g. search for all logs related to that browser\n let visitorId = window.localStorage?.getItem?.('vouch-uid-visitor');\n // Persisted for a user for the same device + browser, so we can e.g. search for all logs related to that browser\n let clientId = window.localStorage?.getItem?.('vouch-uid-client');\n // Persisted in session storage, so we can search for everything the user has done in a specific tab\n let tabId = window.sessionStorage?.getItem?.('vouch-uid-tab');\n // Not persisted, allows us to search for any logs related to a single FE request\n // E.g. BE should pass this request ID through all other services to be able to group logs\n const requestId = uuidv4();\n\n // Cache uids\n if (!visitorId) {\n visitorId = createVisitor(env);\n window.localStorage?.setItem?.('vouch-uid-visitor', visitorId);\n }\n\n if (!clientId) {\n clientId = uuidv4();\n window.localStorage?.setItem?.('vouch-uid-client', clientId);\n }\n\n if (!tabId) {\n tabId = uuidv4();\n window.sessionStorage?.setItem?.('vouch-uid-tab', tabId);\n }\n\n return {\n client: clientId,\n tab: tabId,\n request: requestId,\n visitor: visitorId\n };\n}\n\nfunction findVouchId(payload?: TrackingPayload, vouch?: Vouch) {\n if (payload && 'vouchId' in payload) {\n return payload.vouchId;\n }\n return vouch?.id ?? null;\n}\n\nfunction getReportingMetadata(source = 'embedded_player') {\n const [country, region] = Intl.DateTimeFormat().resolvedOptions().timeZone?.split?.('/') ?? [];\n\n const utmParams: any = {};\n [...new URLSearchParams(location.search).entries()].forEach(([key, value]) => {\n if (/utm/.test(key)) {\n const param = key.toLowerCase().replace(/[-_][a-z0-9]/g, (group) => group.slice(-1).toUpperCase());\n utmParams[param] = value;\n }\n });\n\n return {\n source,\n time: new Date(),\n region,\n country,\n screenHeight: window.screen.height,\n screenWidth: window.screen.width,\n referrer: document.referrer,\n currentUrl: location.href,\n embedType: 'media-player-embed',\n embedVersion: packageJson.version,\n templateVersion: TEMPLATE_VERSION,\n ...utmParams\n };\n}\n\nexport { getUids, findVouchId, getReportingMetadata };\n","import type { PlayerEmbed } from '../..';\nimport type { VideoEventDetail } from '@vouchfor/media-player';\nimport type { ReactiveController, ReactiveControllerHost } from 'lit';\n\nimport { findVouchId, getReportingMetadata, getUids } from './utils';\nimport { getEnvUrls } from '~/utils/env';\n\nconst MINIMUM_SEND_THRESHOLD = 1;\n\ntype PlayerEmbedHost = ReactiveControllerHost & PlayerEmbed;\n\ntype TrackingEvent = 'VOUCH_LOADED' | 'VOUCH_RESPONSE_VIEWED' | 'VIDEO_PLAYED' | 'VIDEO_STREAMED';\ntype TrackingPayload = {\n vouchId?: string;\n answerId?: string;\n streamStart?: number;\n streamEnd?: number;\n};\n\ntype BatchEvent = {\n event: TrackingEvent;\n payload: TrackingPayload & {\n time: string;\n };\n};\n\ntype TimeMap = {\n [key: string]: number;\n};\n\ntype BooleanMap = {\n [key: string]: boolean;\n};\n\nclass TrackingController implements ReactiveController {\n host: PlayerEmbedHost;\n\n private _batchedEvents: BatchEvent[] = [];\n private _hasPlayed = false;\n private _hasLoaded: BooleanMap = {};\n private _answersViewed: BooleanMap = {};\n private _streamStartTime: TimeMap = {};\n private _streamLatestTime: TimeMap = {};\n private _currentlyPlayingVideo: VideoEventDetail | null = null;\n\n constructor(host: PlayerEmbedHost) {\n this.host = host;\n host.addController(this);\n }\n\n private _createTrackingEvent = (event: TrackingEvent, payload?: TrackingPayload) => {\n const vouchId = findVouchId(payload, this.host.vouch);\n\n if (!vouchId || this.host.disableTracking) {\n return;\n }\n\n this._batchedEvents.push({\n event,\n payload: {\n ...payload,\n vouchId,\n time: new Date().toISOString()\n }\n });\n };\n\n private _sendTrackingEvent = () => {\n if (this._batchedEvents.length <= 0) {\n return;\n }\n\n const { publicApiUrl } = getEnvUrls(this.host.env);\n const { client, tab, request, visitor } = getUids(this.host.env);\n\n navigator.sendBeacon(\n `${publicApiUrl}/api/batchevents`,\n JSON.stringify({\n payload: {\n events: this._batchedEvents\n },\n context: {\n 'x-uid-client': client,\n 'x-uid-tab': tab,\n 'x-uid-request': request,\n 'x-uid-visitor': visitor,\n 'x-reporting-metadata': getReportingMetadata(this.host.trackingSource)\n }\n })\n );\n\n this._batchedEvents = [];\n };\n\n private _streamEnded = () => {\n if (this._currentlyPlayingVideo) {\n const { id, key } = this._currentlyPlayingVideo;\n // Don't send a tracking event when seeking backwards\n if (this._streamLatestTime[key] > this._streamStartTime[key] + MINIMUM_SEND_THRESHOLD) {\n // Send a video streamed event any time the stream ends to capture the time between starting\n // the video and the video stopping for any reason (pausing, deleting the embed node or closing the browser)\n this._createTrackingEvent('VIDEO_STREAMED', {\n answerId: id,\n streamStart: this._streamStartTime[key],\n streamEnd: this._streamLatestTime[key]\n });\n }\n\n // Make sure these events are only sent once by deleting the start and latest times\n delete this._streamStartTime[key];\n delete this._streamLatestTime[key];\n }\n };\n\n private _handleVouchLoaded = ({ detail: vouchId }: CustomEvent<string>) => {\n if (!vouchId) {\n return;\n }\n\n // Only send loaded event once per session\n if (!this._hasLoaded[vouchId]) {\n this._createTrackingEvent('VOUCH_LOADED', { vouchId });\n this._hasLoaded[vouchId] = true;\n }\n };\n\n private _handlePlay = () => {\n // Only send the video played event once per session\n if (!this._hasPlayed) {\n this._createTrackingEvent('VIDEO_PLAYED', {\n streamStart: this.host.currentTime\n });\n this._hasPlayed = true;\n }\n };\n\n private _handleVideoPlay = ({ detail: { id, key } }: CustomEvent<VideoEventDetail>) => {\n // Only increment play count once per session\n if (!this._answersViewed[key]) {\n this._createTrackingEvent('VOUCH_RESPONSE_VIEWED', {\n answerId: id\n });\n this._answersViewed[key] = true;\n }\n };\n\n private _handleVideoTimeUpdate = ({ detail: { id, key, node } }: CustomEvent<VideoEventDetail>) => {\n if (\n // We only want to count any time that the video is actually playing\n !this.host.paused &&\n // Only update the latest time if this event fires for the currently active video\n id === this.host.scene?.video?.id\n ) {\n this._currentlyPlayingVideo = { id, key, node };\n this._streamLatestTime[key] = node.currentTime;\n\n if (!this._streamStartTime[key]) {\n this._streamStartTime[key] = node.currentTime;\n this._streamLatestTime[key] = node.currentTime;\n }\n }\n };\n\n private _handleVideoPause = ({ detail: { id, key } }: CustomEvent<VideoEventDetail>) => {\n if (this._streamLatestTime[key] > this._streamStartTime[key] + MINIMUM_SEND_THRESHOLD) {\n this._createTrackingEvent('VIDEO_STREAMED', {\n answerId: id,\n streamStart: this._streamStartTime[key],\n streamEnd: this._streamLatestTime[key]\n });\n }\n delete this._streamStartTime[key];\n delete this._streamLatestTime[key];\n };\n\n private _pageUnloading = () => {\n this._streamEnded();\n this._sendTrackingEvent();\n };\n\n private _handleVisibilityChange = () => {\n if (document.visibilityState === 'hidden') {\n this._pageUnloading();\n }\n };\n\n private _handlePageHide = () => {\n this._pageUnloading();\n };\n\n hostConnected() {\n requestAnimationFrame(() => {\n if ('onvisibilitychange' in document) {\n document.addEventListener('visibilitychange', this._handleVisibilityChange);\n } else {\n window.addEventListener('pagehide', this._handlePageHide);\n }\n this.host.addEventListener('vouch:loaded', this._handleVouchLoaded);\n this.host.mediaPlayer?.addEventListener('play', this._handlePlay);\n this.host.mediaPlayer?.addEventListener('video:play', this._handleVideoPlay);\n this.host.mediaPlayer?.addEventListener('video:pause', this._handleVideoPause);\n this.host.mediaPlayer?.addEventListener('video:timeupdate', this._handleVideoTimeUpdate);\n });\n }\n\n hostDisconnected() {\n // Send events if DOM node is destroyed\n this._pageUnloading();\n\n if ('onvisibilitychange' in document) {\n document.removeEventListener('visibilitychange', this._handleVisibilityChange);\n } else {\n window.removeEventListener('pagehide', this._handlePageHide);\n }\n this.host.removeEventListener('vouch:loaded', this._handleVouchLoaded);\n this.host.mediaPlayer?.removeEventListener('play', this._handlePlay);\n this.host.mediaPlayer?.removeEventListener('video:play', this._handleVideoPlay);\n this.host.mediaPlayer?.removeEventListener('video:pause', this._handleVideoPause);\n this.host.mediaPlayer?.removeEventListener('video:timeupdate', this._handleVideoTimeUpdate);\n }\n}\n\nexport { TrackingController };\nexport type { TrackingEvent, TrackingPayload };\n","import { css, html, LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\n\nimport type { Scene, Scenes, TemplateInstance } from '@vouchfor/canvas-video';\nimport type { MediaPlayer, MediaPlayerProps } from '@vouchfor/media-player';\nimport type { Environment } from '~/utils/env';\n\nimport { EventForwardController } from './controllers/event-forwarder';\nimport { FetcherController } from './controllers/fetcher';\nimport { TrackingController } from './controllers/tracking';\n\nimport '@vouchfor/media-player';\n\ntype PlayerEmbedProps = Pick<MediaPlayerProps, 'data' | 'aspectRatio' | 'preload' | 'autoplay' | 'controls'> & {\n env: Environment;\n apiKey: string;\n disableTracking?: boolean;\n trackingSource?: string;\n vouchId?: string;\n templateId?: string;\n // Index of the questions to include starting from 1\n questions?: number[];\n};\n\n@customElement('vouch-embed-player')\nclass PlayerEmbed extends LitElement {\n static styles = [\n css`\n :host {\n display: flex;\n }\n `\n ];\n\n @property({ type: Object }) data: PlayerEmbedProps['data'];\n @property({ type: String }) vouchId: PlayerEmbedProps['vouchId'];\n @property({ type: String }) templateId: PlayerEmbedProps['templateId'];\n @property({ type: Array }) questions: PlayerEmbedProps['questions'];\n\n @property({ type: String }) env: PlayerEmbedProps['env'] = 'prod';\n @property({ type: String }) apiKey: PlayerEmbedProps['apiKey'] = '';\n @property({ type: Boolean }) disableTracking: PlayerEmbedProps['disableTracking'] = false;\n @property({ type: String }) trackingSource: PlayerEmbedProps['trackingSource'] = 'embedded_player';\n\n @property({ type: Array }) controls: PlayerEmbedProps['controls'];\n @property({ type: String }) preload: PlayerEmbedProps['preload'] = 'auto';\n @property({ type: Boolean }) autoplay: PlayerEmbedProps['autoplay'] = false;\n @property({ type: Number }) aspectRatio: PlayerEmbedProps['aspectRatio'] = 0;\n\n private eventController = new EventForwardController(this, [\n 'durationchange',\n 'ended',\n 'error',\n 'loadeddata',\n 'pause',\n 'stalled',\n 'play',\n 'playing',\n 'ratechange',\n 'scenechange',\n 'seeking',\n 'seeked',\n 'timeupdate',\n 'volumechange',\n 'waiting',\n\n 'video:loadeddata',\n 'video:seeking',\n 'video:seeked',\n 'video:play',\n 'video:playing',\n 'video:pause',\n 'video:stalled',\n 'video:timeupdate',\n 'video:ended',\n 'video:error'\n ]);\n private _fetcherController = new FetcherController(this);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n private _trackingController = new TrackingController(this);\n\n @state() vouch: PlayerEmbedProps['data'];\n @state() template: TemplateInstance | undefined;\n\n get fetching() {\n return this._fetcherController.fetching;\n }\n\n private _mediaPlayerRef = createRef<MediaPlayer>();\n\n get waiting() {\n return this._mediaPlayerRef.value?.waiting;\n }\n\n get initialised() {\n return this._mediaPlayerRef.value?.initialised;\n }\n\n get seeking() {\n return this._mediaPlayerRef.value?.seeking;\n }\n\n get paused() {\n return this._mediaPlayerRef.value?.paused;\n }\n\n get captions() {\n return this._mediaPlayerRef.value?.captions;\n }\n\n get fullscreen() {\n return this._mediaPlayerRef.value?.fullscreen;\n }\n\n get duration() {\n return this._mediaPlayerRef.value?.duration;\n }\n\n set currentTime(value: number) {\n if (this._mediaPlayerRef.value) {\n this._mediaPlayerRef.value.currentTime = value;\n }\n }\n get currentTime() {\n return this._mediaPlayerRef.value?.currentTime ?? 0;\n }\n\n set playbackRate(value: number) {\n if (this._mediaPlayerRef.value) {\n this._mediaPlayerRef.value.playbackRate = value;\n }\n }\n get playbackRate() {\n return this._mediaPlayerRef.value?.playbackRate ?? 1;\n }\n\n set volume(value: number) {\n if (this._mediaPlayerRef.value) {\n this._mediaPlayerRef.value.volume = value;\n }\n }\n get volume() {\n return this._mediaPlayerRef.value?.volume ?? 1;\n }\n\n set muted(value: boolean) {\n if (this._mediaPlayerRef.value) {\n this._mediaPlayerRef.value.muted = value;\n }\n }\n get muted() {\n return this._mediaPlayerRef.value?.muted ?? false;\n }\n\n get scene(): Scene | null {\n return this._mediaPlayerRef.value?.scene ?? null;\n }\n\n get scenes(): Scene[] {\n return this._mediaPlayerRef.value?.scenes ?? [];\n }\n\n get sceneConfig(): Scenes | null {\n return this._mediaPlayerRef.value?.sceneConfig ?? null;\n }\n\n get videoState() {\n return this._mediaPlayerRef.value?.videoState;\n }\n\n get mediaPlayer() {\n return this._mediaPlayerRef.value;\n }\n\n play() {\n this._mediaPlayerRef.value?.play();\n }\n\n pause() {\n this._mediaPlayerRef.value?.pause();\n }\n\n reset(time = 0, play = false) {\n this._mediaPlayerRef.value?.reset(time, play);\n }\n\n setScene(index: number) {\n this._mediaPlayerRef.value?.setScene(index);\n }\n\n private _renderStyles() {\n if (!this.aspectRatio) {\n return html`\n <style>\n :host {\n width: 100%;\n height: 100%;\n }\n </style>\n `;\n }\n\n if (typeof this.aspectRatio === 'number') {\n return html`\n <style>\n :host {\n aspect-ratio: ${this.aspectRatio};\n }\n </style>\n `;\n }\n\n return null;\n }\n\n render() {\n return html`\n ${this._renderStyles()}\n <vmp-media-player\n ${ref(this._mediaPlayerRef)}\n ${this.eventController.register()}\n ?autoplay=${this.autoplay}\n ?loading=${this.fetching}\n .data=${this.vouch}\n .template=${this.template}\n aspectRatio=${ifDefined(this.aspectRatio)}\n preload=${ifDefined(this.preload)}\n .controls=${this.controls}\n ></vmp-media-player>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vouch-embed-player': PlayerEmbed;\n }\n\n namespace JSX {\n interface IntrinsicElements {\n 'vouch-embed-player': PlayerEmbed;\n }\n }\n}\n\nexport { PlayerEmbed };\nexport type { PlayerEmbedProps };\n","import { css, html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { styleMap } from 'lit/directives/style-map.js';\n\nimport type { DialogEmbedProps } from '.';\n\nimport '@a11y/focus-trap';\n\n@customElement('vouch-embed-dialog-overlay')\nclass DialogOverlay extends LitElement {\n static styles = [\n css`\n :host {\n --vouch-media-player-border-radius: var(--vu-media-player-border-radius, 12px);\n --overlay-background-color: var(--vu-overlay-background-color, black);\n --overlay-background-opacity: var(--vu-overlay-background-opacity, 0.4);\n\n --dialog-width: var(--vu-dialog-width, 890px);\n --dialog-height: var(--vu-dialog-height, 500px);\n }\n\n .container {\n position: fixed;\n display: flex;\n inset: 0;\n opacity: 1;\n z-index: 2147483647;\n align-items: center;\n justify-content: center;\n transition: opacity 100ms ease-in;\n }\n\n .hidden {\n opacity: 0;\n pointer-events: none;\n }\n\n .background {\n position: absolute;\n inset: 0;\n opacity: var(--overlay-background-opacity);\n background-color: var(--overlay-background-color);\n }\n\n focus-trap {\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 40px;\n width: var(--dialog-width);\n height: var(--dialog-height);\n max-width: calc(100% - 80px);\n max-height: calc(100% - 80px);\n }\n\n .video-frame {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n max-width: 100%;\n max-height: 100%;\n }\n\n .video-frame.grow {\n width: 100%;\n height: 100%;\n }\n\n vmp-icon-button {\n position: absolute;\n top: 0;\n right: 0;\n margin: 10px;\n }\n `\n ];\n\n @property({ type: Boolean }) open = false;\n @property({ type: Number }) aspectRatio: DialogEmbedProps['aspectRatio'] = 0;\n\n render() {\n return html`\n <div\n class=${classMap({\n container: true,\n hidden: !this.open\n })}\n >\n <div\n class=\"background\"\n @click=${() => this.dispatchEvent(new CustomEvent('overlay:click', { bubbles: true, composed: true }))}\n ></div>\n <focus-trap>\n <div\n class=${classMap({\n 'video-frame': true,\n grow: this.aspectRatio === 0\n })}\n style=${styleMap({\n aspectRatio: this.aspectRatio\n })}\n >\n <slot></slot>\n <vmp-icon-button\n icon=\"close\"\n rounded=\"full\"\n weight=\"heavy\"\n @click=${() => this.dispatchEvent(new CustomEvent('close:click', { bubbles: true, composed: true }))}\n ></vmp-icon-button>\n </div>\n </focus-trap>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vouch-embed-dialog-overlay': DialogOverlay;\n }\n\n namespace JSX {\n interface IntrinsicElements {\n 'vouch-embed-dialog-overlay': DialogOverlay;\n }\n }\n}\n\nexport { DialogOverlay };\n","import { html, LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport { styleMap } from 'lit/directives/style-map.js';\n\nimport type { DialogEmbedProps } from '.';\nimport type { MediaPlayer } from '@vouchfor/media-player';\n\nimport './DialogOverlay';\n\n@customElement('vouch-embed-dialog-portal')\nclass DialogPortal extends LitElement {\n @property({ type: String }) vouchId: DialogEmbedProps['vouchId'];\n @property({ type: String }) templateId: DialogEmbedProps['templateId'];\n @property({ type: Array }) questions: DialogEmbedProps['questions'];\n\n @property({ type: String }) env: DialogEmbedProps['env'] = 'prod';\n @property({ type: String }) apiKey: DialogEmbedProps['apiKey'] = '';\n @property({ type: Boolean }) disableTracking: DialogEmbedProps['disableTracking'] = false;\n @property({ type: String }) trackingSource: DialogEmbedProps['trackingSource'] = 'embedded_player';\n\n @property({ type: Array }) controls: DialogEmbedProps['controls'];\n @property({ type: String }) preload: DialogEmbedProps['preload'] = 'none';\n @property({ type: Boolean }) disableAutoplay: DialogEmbedProps['disableAutoplay'] = false;\n @property({ type: Number }) aspectRatio: DialogEmbedProps['aspectRatio'] = 0;\n\n private _mediaPlayerRef = createRef<MediaPlayer>();\n\n @state() open = false;\n\n private _handleToggle = ({ detail }: CustomEvent<string>) => {\n // Because we have to attach this listener to the document since this element is portalled outside of the button,\n // we also have to make sure that this player is actually the one we want to open and play by passing in an ID\n // from the button wrapper parent and checking against that same ID we pass as the event detail\n if (this.id === detail) {\n this.open = !this.open;\n\n if (this.open) {\n if (!this.disableAutoplay && this._mediaPlayerRef?.value) {\n this._mediaPlayerRef.value.muted = false;\n this._mediaPlayerRef.value.play();\n }\n } else {\n this._mediaPlayerRef?.value?.pause();\n }\n }\n };\n\n // We could do the same thing on close and check for the correct ID but it doesn't really matter\n private _handleClose = () => {\n this.open = false;\n this._mediaPlayerRef?.value?.pause();\n };\n\n private _handleDocumentKeyUp = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n this._handleClose();\n }\n };\n\n connectedCallback(): void {\n super.connectedCallback();\n document.addEventListener('dialogembed:click', this._handleToggle);\n document.addEventListener('keyup', this._handleDocumentKeyUp);\n document.addEventListener('close:click', this._handleClose);\n document.addEventListener('overlay:click', this._handleClose);\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n document.removeEventListener('dialogembed:click', this._handleToggle);\n document.removeEventListener('keyup', this._handleDocumentKeyUp);\n document.removeEventListener('close:click', this._handleClose);\n document.removeEventListener('overlay:click', this._handleClose);\n }\n\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n // We must create a new node here because portalling into the same node (document.body) causes the second\n // element to overwrite the first for some reason (not behaviour really stated in the docs)\n // I am fairly certain this function is only run once as the default behaviour creates the open shadow root\n // and returns that shadow root in this function: https://lit.dev/docs/components/shadow-dom/#implementing-createrenderroot\n const newNode = document.createElement('div');\n document.body.appendChild(newNode);\n return newNode;\n }\n\n render() {\n return html`\n <vouch-embed-dialog-overlay ?open=${this.open} aspectRatio=${this.aspectRatio}>\n <vouch-embed-player\n ${ref(this._mediaPlayerRef)}\n style=${styleMap({\n maxWidth: '100%',\n maxHeight: '100%'\n })}\n ?autoplay=${false}\n vouchId=${ifDefined(this.vouchId)}\n templateId=${ifDefined(this.templateId)}\n .questions=${this.questions}\n .controls=${this.controls}\n env=${ifDefined(this.env)}\n apiKey=${ifDefined(this.apiKey)}\n ?disableTracking=${this.disableTracking}\n trackingSource=${ifDefined(this.trackingSource)}\n preload=${ifDefined(this.preload)}\n aspectRatio=${this.aspectRatio}\n ></vouch-embed-player>\n </vouch-embed-dialog-overlay>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vouch-embed-dialog-portal': DialogPortal;\n }\n\n namespace JSX {\n interface IntrinsicElements {\n 'vouch-embed-dialog-portal': DialogPortal;\n }\n }\n}\n\nexport { DialogPortal };\n","import { css, html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport type { PlayerEmbedProps } from '../PlayerEmbed';\n\nimport '../PlayerEmbed';\nimport './DialogPortal';\n\ntype DialogEmbedProps = Omit<PlayerEmbedProps, 'data'> & {\n disableAutoplay?: boolean;\n};\n\n@customElement('vouch-embed-dialog')\nclass DialogEmbed extends LitElement {\n static styles = [\n css`\n :host {\n --vu-button-padding: 10px 20px;\n --vu-button-background: #287179;\n --vu-button-background-hover: #4faab2;\n\n display: flex;\n width: fit-content;\n height: fit-content;\n }\n `\n ];\n\n @property({ type: String }) vouchId: DialogEmbedProps['vouchId'];\n @property({ type: String }) templateId: DialogEmbedProps['templateId'];\n @property({ type: Array }) questions: DialogEmbedProps['questions'];\n\n @property({ type: String }) env: DialogEmbedProps['env'] = 'prod';\n @property({ type: String }) apiKey: DialogEmbedProps['apiKey'] = '';\n @property({ type: Boolean }) disableTracking: DialogEmbedProps['disableTracking'] = false;\n @property({ type: String }) trackingSource: DialogEmbedProps['trackingSource'] = 'embedded_player';\n\n @property({ type: Array }) controls: DialogEmbedProps['controls'];\n @property({ type: String }) preload: DialogEmbedProps['preload'] = 'none';\n @property({ type: Boolean }) disableAutoplay: DialogEmbedProps['disableAutoplay'] = false;\n @property({ type: Number }) aspectRatio: DialogEmbedProps['aspectRatio'] = 0;\n\n private _id = uuidv4();\n\n private _handleRootClick = () => {\n this.dispatchEvent(new CustomEvent('dialogembed:click', { detail: this._id, bubbles: true, composed: true }));\n };\n\n connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener('click', this._handleRootClick);\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.removeEventListener('click', this._handleRootClick);\n }\n\n render() {\n return html`\n <slot>\n <vmp-button size=\"large\">Play</vmp-button>\n </slot>\n <vouch-embed-dialog-portal\n id=${this._id}\n ?autoplay=${false}\n vouchId=${ifDefined(this.vouchId)}\n templateId=${ifDefined(this.templateId)}\n .questions=${this.questions}\n .controls=${this.controls}\n env=${ifDefined(this.env)}\n apiKey=${ifDefined(this.apiKey)}\n ?disableTracking=${this.disableTracking}\n trackingSource=${ifDefined(this.trackingSource)}\n preload=${ifDefined(this.preload)}\n aspectRatio=${this.aspectRatio}\n ></vouch-embed-dialog-portal>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vouch-embed-dialog': DialogEmbed;\n }\n\n namespace JSX {\n interface IntrinsicElements {\n 'vouch-embed-dialog': DialogEmbed;\n }\n }\n}\n\nexport { DialogEmbed };\nexport type { DialogEmbedProps };\n"],"names":["type","uuidv4","template","copyProperty","property","canCopyProperty","changePrototype","wrappedToString","toStringDescriptor","toStringName","changeToString","name","mimicFunction","cacheStore","clamp","progress","alpha","analyse","v","promise","mimicFn","exports","this","e","n","r","a","i","s","t","u","h","d","g","p","m","y","x","b","w","F","S","I","o","l","f","R","T","c","global","globalThis","fetch","module","Align","Dimension","Direction","Display","Edge","Errata","ExperimentalFeature","FlexDirection","Gutter","Justify","LogLevel","MeasureMode","NodeType","Overflow","PositionType","PrintOptions","Unit","Wrap","wrapAssembly_1","require$$0","nodeInterop","loadYoga","ca","cb","_YGEnums","require$$1","require$$2","filters","helpers","__decorateClass"],"mappings":"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","x_google_ignoreList":[4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34]}
|