@nordcraft/runtime 1.0.70 → 1.0.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/createAPI.d.ts +1 -1
- package/dist/api/createAPI.js.map +1 -1
- package/dist/api/createAPIv2.d.ts +1 -1
- package/dist/api/createAPIv2.js.map +1 -1
- package/dist/components/createComponent.d.ts +1 -1
- package/dist/components/createComponent.js.map +1 -1
- package/dist/components/createElement.d.ts +1 -1
- package/dist/components/createElement.js.map +1 -1
- package/dist/components/createNode.d.ts +1 -1
- package/dist/components/createNode.js.map +1 -1
- package/dist/components/createSlot.d.ts +1 -1
- package/dist/components/createSlot.js.map +1 -1
- package/dist/components/createText.d.ts +2 -2
- package/dist/components/createText.js.map +1 -1
- package/dist/components/createText.test.js.map +1 -1
- package/dist/components/renderComponent.d.ts +1 -1
- package/dist/components/renderComponent.js.map +1 -1
- package/dist/context/subscribeToContext.js.map +1 -1
- package/dist/custom-components/toddle-portal.js.map +1 -1
- package/dist/custom-element/ToddleComponent.js.map +1 -1
- package/dist/custom-element/defineComponents.js.map +1 -1
- package/dist/custom-element.main.esm.js.map +1 -1
- package/dist/custom-element.main.js.map +1 -1
- package/dist/debug/logState.js.map +1 -1
- package/dist/debug/panicScreen.d.ts +1 -1
- package/dist/debug/panicScreen.js.map +1 -1
- package/dist/debug/sendEditorToast.d.ts +1 -1
- package/dist/debug/sendEditorToast.js.map +1 -1
- package/dist/editor/drag-drop/dragEnded.js.map +1 -1
- package/dist/editor/drag-drop/dragMove.js.map +1 -1
- package/dist/editor/drag-drop/dragReorder.js.map +1 -1
- package/dist/editor/drag-drop/dragStarted.d.ts +1 -1
- package/dist/editor/drag-drop/dragStarted.js.map +1 -1
- package/dist/editor/drag-drop/dropHighlight.d.ts +1 -1
- package/dist/editor/drag-drop/dropHighlight.js.map +1 -1
- package/dist/editor/drag-drop/getInsertAreas.d.ts +5 -5
- package/dist/editor/drag-drop/getInsertAreas.js.map +1 -1
- package/dist/editor/graphql.js.map +1 -1
- package/dist/editor/input.js.map +1 -1
- package/dist/editor/links.js.map +1 -1
- package/dist/editor/overlay.js.map +1 -1
- package/dist/editor/types.js +2 -1
- package/dist/editor/types.js.map +1 -1
- package/dist/editor-preview.main.js.map +1 -1
- package/dist/events/handleAction.d.ts +1 -1
- package/dist/events/handleAction.js.map +1 -1
- package/dist/page.main.d.ts +1 -1
- package/dist/page.main.esm.js.map +1 -1
- package/dist/page.main.js.map +1 -1
- package/dist/signal/signal.js.map +1 -1
- package/dist/styles/CustomPropertyStyleSheet.js.map +1 -1
- package/dist/styles/CustomPropertyStyleSheet.test.js.map +1 -1
- package/dist/styles/style.js.map +1 -1
- package/dist/utils/BatchQueue.js.map +1 -1
- package/dist/utils/createFormulaCache.js.map +1 -1
- package/dist/utils/findNearestLine.js.map +1 -1
- package/dist/utils/findNearestLine.test.js.map +1 -1
- package/dist/utils/getDragData.js.map +1 -1
- package/dist/utils/getElementTagName.js.map +1 -1
- package/dist/utils/isElementInViewport.js.map +1 -1
- package/dist/utils/nodes.d.ts +1 -1
- package/dist/utils/nodes.js.map +1 -1
- package/dist/utils/omitStyle.js.map +1 -1
- package/dist/utils/rectHasPoint.js.map +1 -1
- package/dist/utils/setAttribute.js.map +1 -1
- package/dist/utils/storeScrollState.js.map +1 -1
- package/dist/utils/subscribeCustomProperty.d.ts +1 -1
- package/dist/utils/subscribeCustomProperty.js.map +1 -1
- package/dist/utils/tryStartViewTransition.js.map +1 -1
- package/dist/utils/url.js.map +1 -1
- package/package.json +6 -6
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../node_modules/.bun/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js", "../../lib/actions.ts", "../../lib/actions/deleteFromSessionStorage/handler.ts", "../../lib/actions/saveToLocalStorage/handler.ts", "../../lib/actions/interval/handler.ts", "../../core/src/utils/util.ts", "../../lib/actions/deleteFromLocalStorage/handler.ts", "../../lib/actions/setSessionCookies/handler.ts", "../../lib/actions/clearLocalStorage/handler.ts", "../../lib/actions/clearSessionStorage/handler.ts", "../../lib/actions/logToConsole/handler.ts", "../../lib/actions/setHttpOnlyCookie/handler.ts", "../../lib/actions/saveToSessionStorage/handler.ts", "../../lib/actions/copyToClipboard/handler.ts", "../../lib/actions/stopPropagation/handler.ts", "../../lib/actions/setCookie/handler.ts", "../../lib/actions/focus/handler.ts", "../../lib/actions/preventDefault/handler.ts", "../../lib/actions/share/handler.ts", "../../lib/actions/sleep/handler.ts", "../../lib/actions/gotToURL/handler.ts", "../../lib/formulas.ts", "../../lib/formulas/string/handler.ts", "../../lib/formulas/languages/handler.ts", "../../lib/formulas/matches/handler.ts", "../../lib/formulas/decodeURIComponent/handler.ts", "../../lib/formulas/logarithm/handler.ts", "../../lib/formulas/boolean/handler.ts", "../../lib/formulas/capitalize/handler.ts", "../../lib/formulas/power/handler.ts", "../../lib/formulas/encodeURIComponent/handler.ts", "../../lib/formulas/encodeBase64/handler.ts", "../../lib/formulas/encodeJSON/handler.ts", "../../lib/formulas/takeLast/handler.ts", "../../lib/formulas/dateFromTimestamp/handler.ts", "../../lib/formulas/join/handler.ts", "../../lib/formulas/clamp/handler.ts", "../../lib/formulas/roundDown/handler.ts", "../../lib/formulas/minus/handler.ts", "../../lib/formulas/sort_by/handler.ts", "../../lib/formulas/map/handler.ts", "../../lib/formulas/every/handler.ts", "../../lib/formulas/sum/handler.ts", "../../lib/formulas/randomNumber/handler.ts", "../../lib/formulas/squareRoot/handler.ts", "../../lib/formulas/formatDate/handler.ts", "../../lib/formulas/modulo/handler.ts", "../../lib/formulas/now/handler.ts", "../../lib/formulas/prepend/handler.ts", "../../lib/formulas/groupBy/handler.ts", "../../lib/formulas/last/handler.ts", "../../lib/formulas/parseJSON/handler.ts", "../../core/src/utils/json.ts", "../../lib/formulas/uppercase/handler.ts", "../../lib/formulas/round/handler.ts", "../../lib/formulas/dropLast/handler.ts", "../../lib/formulas/canShare/handler.ts", "../../lib/formulas/fromEntries/handler.ts", "../../lib/formulas/greaterThan/handler.ts", "../../lib/formulas/includes/handler.ts", "../../lib/formulas/absolute/handler.ts", "../../lib/formulas/isServer/handler.ts", "../../lib/formulas/parseURL/handler.ts", "../../lib/formulas/lessOrEqual/handler.ts", "../../lib/formulas/typeOf/handler.ts", "../../lib/formulas/findLast/handler.ts", "../../lib/formulas/lessThan/handler.ts", "../../lib/formulas/append/handler.ts", "../../lib/formulas/getFromSessionStorage/handler.ts", "../../lib/formulas/unique/handler.ts", "../../lib/formulas/concatenate/handler.ts", "../../lib/formulas/take/handler.ts", "../../lib/formulas/get/handler.ts", "../../lib/formulas/lowercase/handler.ts", "../../lib/formulas/equals/handler.ts", "../../lib/formulas/first/handler.ts", "../../lib/formulas/json/handler.ts", "../../lib/formulas/max/handler.ts", "../../lib/formulas/dateFromString/handler.ts", "../../lib/formulas/deleteKey/handler.ts", "../../lib/formulas/min/handler.ts", "../../lib/formulas/reverse/handler.ts", "../../lib/formulas/branchName/handler.ts", "../../lib/formulas/greaterOrEqueal/handler.ts", "../../lib/formulas/size/handler.ts", "../../lib/formulas/reduce/handler.ts", "../../lib/formulas/set/handler.ts", "../../lib/formulas/some/handler.ts", "../../lib/formulas/entries/handler.ts", "../../lib/formulas/flatten/handler.ts", "../../lib/formulas/drop/handler.ts", "../../lib/formulas/divide/handler.ts", "../../lib/formulas/find/handler.ts", "../../lib/formulas/filter/handler.ts", "../../lib/formulas/getFromLocalStorage/handler.ts", "../../lib/formulas/number/handler.ts", "../../lib/formulas/shuffle/handler.ts", "../../lib/formulas/add/handler.ts", "../../lib/formulas/defaultTo/handler.ts", "../../lib/formulas/roundUp/handler.ts", "../../lib/formulas/lastIndexOf/handler.ts", "../../lib/formulas/timestamp/handler.ts", "../../lib/formulas/getCookie/handler.ts", "../../lib/formulas/indexOf/handler.ts", "../../lib/formulas/currentURL/handler.ts", "../../lib/formulas/replaceAll/handler.ts", "../../lib/formulas/getElementById/handler.ts", "../../lib/formulas/userAgent/handler.ts", "../../lib/formulas/startsWith/handler.ts", "../../lib/formulas/getHttpOnlyCookie/handler.ts", "../../core/src/api/template.ts", "../../lib/formulas/multiply/handler.ts", "../../lib/formulas/findIndex/handler.ts", "../../lib/formulas/range/handler.ts", "../../lib/formulas/trim/handler.ts", "../../lib/formulas/not/handler.ts", "../../lib/formulas/formatNumber/handler.ts", "../../lib/formulas/notEqual/handler.ts", "../../lib/formulas/keyBy/handler.ts", "../../lib/formulas/decodeBase64/handler.ts", "../../lib/formulas/split/handler.ts", "../src/custom-element.main.ts", "../../core/src/utils/customElements.ts", "../../core/src/formula/formula.ts", "../../core/src/utils/collections.ts", "../../core/src/utils/hash.ts", "../../core/src/api/apiTypes.ts", "../../core/src/api/headers.ts", "../../core/src/formula/formulaUtils.ts", "../../core/src/api/LegacyToddleApi.ts", "../../core/src/component/actionUtils.ts", "../../core/src/api/ToddleApiV2.ts", "../../core/src/api/api.ts", "../../core/src/styling/hash.ts", "../../core/src/styling/className.ts", "../../core/src/styling/customProperty.ts", "../../core/src/styling/theme.const.ts", "../../core/src/styling/theme.ts", "../../core/src/styling/variantSelector.ts", "../../core/src/styling/style.css.ts", "../src/api/apiUtils.ts", "../src/events/handleAction.ts", "../../../node_modules/.bun/path-to-regexp@6.3.0/node_modules/path-to-regexp/src/index.ts", "../src/utils/url.ts", "../src/api/createAPI.ts", "../../core/src/utils/url.ts", "../src/api/createAPIv2.ts", "../src/components/renderComponent.ts", "../src/utils/BatchQueue.ts", "../src/signal/signal.ts", "../src/utils/nodes.ts", "../../core/src/utils/getNodeSelector.ts", "../src/context/isContextProvider.ts", "../src/context/subscribeToContext.ts", "../src/debug/logState.ts", "../src/utils/createFormulaCache.ts", "../src/styles/CustomPropertyStyleSheet.ts", "../src/utils/subscribeCustomProperty.ts", "../src/components/createComponent.ts", "../src/utils/getDragData.ts", "../src/utils/getElementTagName.ts", "../src/utils/setAttribute.ts", "../src/components/createElement.ts", "../src/components/createSlot.ts", "../src/components/createText.ts", "../src/components/createNode.ts", "../src/custom-element/ToddleComponent.ts", "../src/custom-element/defineComponents.ts"],
|
|
4
4
|
"sourcesContent": ["'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n", "import * as deleteFromSessionStorage from \"./actions/deleteFromSessionStorage/handler\"\nimport * as saveToLocalStorage from \"./actions/saveToLocalStorage/handler\"\nimport * as interval from \"./actions/interval/handler\"\nimport * as deleteFromLocalStorage from \"./actions/deleteFromLocalStorage/handler\"\nimport * as setSessionCookies from \"./actions/setSessionCookies/handler\"\nimport * as clearLocalStorage from \"./actions/clearLocalStorage/handler\"\nimport * as clearSessionStorage from \"./actions/clearSessionStorage/handler\"\nimport * as logToConsole from \"./actions/logToConsole/handler\"\nimport * as setHttpOnlyCookie from \"./actions/setHttpOnlyCookie/handler\"\nimport * as saveToSessionStorage from \"./actions/saveToSessionStorage/handler\"\nimport * as copyToClipboard from \"./actions/copyToClipboard/handler\"\nimport * as stopPropagation from \"./actions/stopPropagation/handler\"\nimport * as setCookie from \"./actions/setCookie/handler\"\nimport * as focus from \"./actions/focus/handler\"\nimport * as preventDefault from \"./actions/preventDefault/handler\"\nimport * as share from \"./actions/share/handler\"\nimport * as sleep from \"./actions/sleep/handler\"\nimport * as gotToURL from \"./actions/gotToURL/handler\"\n\nexport {\n deleteFromSessionStorage,\n saveToLocalStorage,\n interval,\n deleteFromLocalStorage,\n setSessionCookies,\n clearLocalStorage,\n clearSessionStorage,\n logToConsole,\n setHttpOnlyCookie,\n saveToSessionStorage,\n copyToClipboard,\n stopPropagation,\n setCookie,\n focus,\n preventDefault,\n share,\n sleep,\n gotToURL\n}\n ", "import type { ActionHandler } from '@nordcraft/core/dist/types'\n\nconst handler: ActionHandler = async function ([key]) {\n if (typeof key !== 'string' || key.length === 0) {\n throw new Error(`Invalid key: ${key}`)\n }\n window.sessionStorage.removeItem(key)\n}\n\nexport default handler\n", "import type { ActionHandler } from '@nordcraft/core/dist/types'\n\nconst handler: ActionHandler = async function ([key, value]) {\n if (typeof key !== 'string' || key.length === 0) {\n throw new Error(`Invalid key: ${key}`)\n }\n window.localStorage.setItem(key, JSON.stringify(value))\n}\n\nexport default handler\n", "import type { ActionHandler } from '@nordcraft/core/dist/types'\nimport { isDefined } from '@nordcraft/core/dist/utils/util'\n\nconst handler: ActionHandler = ([delay], ctx) => {\n // We'll cast delay in case it's passed as a string\n const delayNumber = Number(delay)\n if (!isDefined(delay) || Number.isNaN(delay)) {\n throw new Error('Invalid delay value')\n }\n const interval = setInterval(\n () => ctx.triggerActionEvent('tick', null),\n delayNumber,\n )\n ctx.abortSignal.addEventListener('abort', () => {\n clearInterval(interval)\n })\n}\n\nexport default handler\n", "export const isDefined = <T>(value: T | undefined | null): value is T =>\n value !== null && value !== undefined\n\nexport const isObject = (input: any): input is Record<string, any> =>\n typeof input === 'object' && input !== null\n\nexport const toBoolean = (value: any) =>\n value !== false && value !== undefined && value !== null\n", "import type { ActionHandler } from '@nordcraft/core/dist/types'\n\nconst handler: ActionHandler = async function ([key]) {\n if (typeof key !== 'string' || key.length === 0) {\n throw new Error(`Invalid key: ${key}`)\n }\n window.localStorage.removeItem(key)\n}\n\nexport default handler\n", "import type { ActionHandler } from '@nordcraft/core/dist/types'\n\nconst handler: ActionHandler = async function ([access_token, ttl], ctx) {\n const query = [\n typeof access_token === 'string'\n ? `name=access_token&value=${encodeURIComponent(access_token)}`\n : undefined,\n isNaN(Number(ttl)) ? undefined : `ttl=${ttl}`,\n ]\n .filter((a) => a)\n .join('&')\n const res = await fetch(`/.toddle/cookies/set-session-cookie?${query}`)\n if (res.ok) {\n ctx.triggerActionEvent('Success', undefined)\n } else {\n ctx.triggerActionEvent('Error', new Error(await res.text()))\n }\n}\n\nexport default handler\n", "import type { ActionHandler } from '@nordcraft/core/dist/types'\n\nconst handler: ActionHandler = async function () {\n window.localStorage.clear()\n}\n\nexport default handler\n", "import type { ActionHandler } from '@nordcraft/core/dist/types'\n\nconst handler: ActionHandler = async function () {\n window.sessionStorage.clear()\n}\n\nexport default handler\n", "import type { ActionHandler } from '@nordcraft/core/dist/types'\n\nconst handler: ActionHandler = ([label, data]: unknown[]) => {\n // eslint-disable-next-line no-console\n console.log(label, data)\n}\n\nexport default handler\n", "import type { ActionHandler } from '@nordcraft/core/dist/types'\n\nconst handler: ActionHandler = async function (\n [name, value, ttl, _sameSite, _path, _includeSubdomains],\n ctx,\n) {\n const error = (message: string) =>\n ctx.triggerActionEvent('Error', new Error(message))\n\n if (typeof name !== 'string') {\n error('The \"Name\" argument must be a string')\n return\n }\n if (typeof value !== 'string') {\n error('The \"Value\" argument must be a string')\n return\n }\n const sameSite = _sameSite ?? 'Lax' // Default value\n if (\n typeof sameSite !== 'string' ||\n !['lax', 'strict', 'none'].includes(sameSite.toLocaleLowerCase())\n ) {\n error('The \"SameSite\" argument must be \"Lax\", \"Strict\" or \"None\"')\n return\n }\n const path = _path ?? '/' // Default value\n if (typeof path !== 'string' || !path.startsWith('/')) {\n error('The \"Path\" argument must be a string and start with /')\n return\n }\n if (\n ttl !== undefined &&\n ttl !== null &&\n (typeof ttl !== 'number' || isNaN(ttl))\n ) {\n error('The \"Expires in\" argument must be a number')\n return\n }\n const includeSubdomains = _includeSubdomains ?? true // Default value\n if (typeof includeSubdomains !== 'boolean') {\n error('The \"Include Subdomains\" argument must be a boolean')\n return\n }\n const params = new URLSearchParams()\n params.set('name', name)\n params.set('value', value)\n params.set('sameSite', sameSite)\n params.set('path', path)\n params.set('includeSubdomains', String(includeSubdomains))\n if (typeof ttl === 'number') {\n params.set('ttl', String(ttl))\n }\n try {\n const res = await fetch(\n `/.nordcraft/cookies/set-cookie?${params.toString()}`,\n )\n if (res.ok) {\n ctx.triggerActionEvent('Success', undefined)\n } else {\n error(await res.text())\n }\n } catch (err) {\n error(err instanceof Error ? err.message : 'An unexpected error occurred')\n }\n}\n\nexport default handler\n", "import type { ActionHandler } from '@nordcraft/core/dist/types'\n\nconst handler: ActionHandler = async function ([key, value]) {\n if (typeof key !== 'string' || key.length === 0) {\n throw new Error(`Invalid key: ${key}`)\n }\n window.sessionStorage.setItem(key, JSON.stringify(value))\n}\n\nexport default handler\n", "import type { ActionHandler } from '@nordcraft/core/dist/types'\n\nconst handler: ActionHandler = ([value]) => {\n if (typeof value !== 'string') {\n throw new Error(`Input value must be a string`)\n }\n return navigator.clipboard.writeText(value)\n}\n\nexport default handler\n", "import type { ActionHandler } from '@nordcraft/core/dist/types'\n\nconst handler: ActionHandler = (_, _ctx, event) => {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n event?.stopPropagation?.()\n}\n\nexport default handler\n", "import type { ActionHandler } from '@nordcraft/core/dist/types'\n\nconst handler: ActionHandler = async function (\n [name, value, ttl, _sameSite, _path, _includeSubdomains],\n ctx,\n) {\n const error = (message: string) =>\n ctx.triggerActionEvent('Error', new Error(message))\n if (typeof name !== 'string') {\n error('The \"Name\" argument must be a string')\n return\n }\n if (typeof value !== 'string') {\n error('The \"Value\" argument must be a string')\n return\n }\n const sameSite = _sameSite ?? 'Lax' // Default value\n if (\n typeof sameSite !== 'string' ||\n !['lax', 'strict', 'none'].includes(sameSite.toLocaleLowerCase())\n ) {\n error('The \"SameSite\" argument must be \"Lax\", \"Strict\" or \"None\"')\n return\n }\n const path = _path ?? '/' // Default value\n if (typeof path !== 'string' || !path.startsWith('/')) {\n error('The \"Path\" argument must be a string and start with /')\n return\n }\n if (\n ttl !== undefined &&\n ttl !== null &&\n (typeof ttl !== 'number' || isNaN(ttl))\n ) {\n error('The \"Expires in\" argument must be a number')\n return\n }\n const includeSubdomains = _includeSubdomains ?? true // Default value\n if (typeof includeSubdomains !== 'boolean') {\n error('The \"Include Subdomains\" argument must be a boolean')\n return\n }\n // The cookie will always be set to Secure. Anything else can be configured\n let cookie = `${name}=${value}; SameSite=${sameSite}; Path=${path}`\n // If no ttl is set, the cookie will be a session cookie\n if (typeof ttl === 'number') {\n const date = new Date(Date.now() + ttl * 1000)\n cookie += `; Expires=${date.toUTCString()}`\n }\n if (includeSubdomains) {\n // When the domain is set, the cookie is also available to subdomains - otherwise\n // it is only available on the current domain\n cookie += `; Domain=${window.location.hostname}`\n }\n document.cookie = cookie\n ctx.triggerActionEvent('Success', undefined)\n}\n\nexport default handler\n", "import type { ActionHandler } from '@nordcraft/core/dist/types'\n\nconst handler: ActionHandler = ([elem]) => {\n if (elem instanceof HTMLElement) {\n elem.focus()\n }\n}\n\nexport default handler\n", "import type { ActionHandler } from '@nordcraft/core/dist/types'\n\nconst handler: ActionHandler = (_, _ctx, event) => {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n event?.preventDefault?.()\n}\n\nexport default handler\n", "import type { ActionHandler } from '@nordcraft/core/dist/types'\nimport { isDefined } from '@nordcraft/core/dist/utils/util'\n\nconst handler: ActionHandler = ([url, title, text]) => {\n const validInput = (value: any): value is string =>\n isDefined(value) && typeof value === 'string'\n if (!validInput(url) && !validInput(title) && !validInput(text)) {\n throw new Error(`Either url, text or title must be provided`)\n }\n const data: ShareData = {}\n if (validInput(title)) {\n data.title = title\n }\n if (validInput(text)) {\n data.text = text\n }\n if (validInput(url)) {\n data.url = url\n }\n // Later we can add support for data.files as well\n if (isDefined(navigator.share) && navigator.canShare(data)) {\n return navigator.share(data)\n }\n}\n\nexport default handler\n", "import type { ActionHandler } from '@nordcraft/core/dist/types'\nimport { isDefined } from '@nordcraft/core/dist/utils/util'\n\nconst handler: ActionHandler = ([delay], ctx) => {\n // We'll cast delay in case it's passed as a string\n const delayNumber = Number(delay)\n if (!isDefined(delay) || Number.isNaN(delay)) {\n throw new Error('Invalid delay value')\n }\n const timeout = setTimeout(\n () => ctx.triggerActionEvent('tick', null),\n delayNumber,\n )\n ctx.abortSignal.addEventListener('abort', () => {\n clearTimeout(timeout)\n })\n}\n\nexport default handler\n", "import type { ActionHandler } from '@nordcraft/core/dist/types'\n\nconst handler: ActionHandler = ([url], ctx) => {\n if (typeof url === 'string') {\n if (ctx.env.runtime === 'preview') {\n // Attempt to notify the parent about the failed navigation attempt\n window.parent?.postMessage({ type: 'blockedNavigation', url }, '*')\n } else {\n window.location.href = url\n }\n }\n}\n\nexport default handler\n", "import * as string from \"./formulas/string/handler\"\nimport * as languages from \"./formulas/languages/handler\"\nimport * as matches from \"./formulas/matches/handler\"\nimport * as decodeURIComponent from \"./formulas/decodeURIComponent/handler\"\nimport * as logarithm from \"./formulas/logarithm/handler\"\nimport * as boolean from \"./formulas/boolean/handler\"\nimport * as capitalize from \"./formulas/capitalize/handler\"\nimport * as power from \"./formulas/power/handler\"\nimport * as encodeURIComponent from \"./formulas/encodeURIComponent/handler\"\nimport * as encodeBase64 from \"./formulas/encodeBase64/handler\"\nimport * as encodeJSON from \"./formulas/encodeJSON/handler\"\nimport * as takeLast from \"./formulas/takeLast/handler\"\nimport * as dateFromTimestamp from \"./formulas/dateFromTimestamp/handler\"\nimport * as join from \"./formulas/join/handler\"\nimport * as clamp from \"./formulas/clamp/handler\"\nimport * as roundDown from \"./formulas/roundDown/handler\"\nimport * as minus from \"./formulas/minus/handler\"\nimport * as sort_by from \"./formulas/sort_by/handler\"\nimport * as map from \"./formulas/map/handler\"\nimport * as every from \"./formulas/every/handler\"\nimport * as sum from \"./formulas/sum/handler\"\nimport * as randomNumber from \"./formulas/randomNumber/handler\"\nimport * as squareRoot from \"./formulas/squareRoot/handler\"\nimport * as formatDate from \"./formulas/formatDate/handler\"\nimport * as modulo from \"./formulas/modulo/handler\"\nimport * as now from \"./formulas/now/handler\"\nimport * as prepend from \"./formulas/prepend/handler\"\nimport * as groupBy from \"./formulas/groupBy/handler\"\nimport * as last from \"./formulas/last/handler\"\nimport * as parseJSON from \"./formulas/parseJSON/handler\"\nimport * as uppercase from \"./formulas/uppercase/handler\"\nimport * as round from \"./formulas/round/handler\"\nimport * as dropLast from \"./formulas/dropLast/handler\"\nimport * as canShare from \"./formulas/canShare/handler\"\nimport * as fromEntries from \"./formulas/fromEntries/handler\"\nimport * as greaterThan from \"./formulas/greaterThan/handler\"\nimport * as includes from \"./formulas/includes/handler\"\nimport * as absolute from \"./formulas/absolute/handler\"\nimport * as isServer from \"./formulas/isServer/handler\"\nimport * as parseURL from \"./formulas/parseURL/handler\"\nimport * as lessOrEqual from \"./formulas/lessOrEqual/handler\"\nimport * as typeOf from \"./formulas/typeOf/handler\"\nimport * as findLast from \"./formulas/findLast/handler\"\nimport * as lessThan from \"./formulas/lessThan/handler\"\nimport * as append from \"./formulas/append/handler\"\nimport * as getFromSessionStorage from \"./formulas/getFromSessionStorage/handler\"\nimport * as unique from \"./formulas/unique/handler\"\nimport * as concatenate from \"./formulas/concatenate/handler\"\nimport * as take from \"./formulas/take/handler\"\nimport * as get from \"./formulas/get/handler\"\nimport * as lowercase from \"./formulas/lowercase/handler\"\nimport * as equals from \"./formulas/equals/handler\"\nimport * as first from \"./formulas/first/handler\"\nimport * as json from \"./formulas/json/handler\"\nimport * as max from \"./formulas/max/handler\"\nimport * as dateFromString from \"./formulas/dateFromString/handler\"\nimport * as deleteKey from \"./formulas/deleteKey/handler\"\nimport * as min from \"./formulas/min/handler\"\nimport * as reverse from \"./formulas/reverse/handler\"\nimport * as branchName from \"./formulas/branchName/handler\"\nimport * as greaterOrEqueal from \"./formulas/greaterOrEqueal/handler\"\nimport * as size from \"./formulas/size/handler\"\nimport * as reduce from \"./formulas/reduce/handler\"\nimport * as set from \"./formulas/set/handler\"\nimport * as some from \"./formulas/some/handler\"\nimport * as entries from \"./formulas/entries/handler\"\nimport * as flatten from \"./formulas/flatten/handler\"\nimport * as drop from \"./formulas/drop/handler\"\nimport * as divide from \"./formulas/divide/handler\"\nimport * as find from \"./formulas/find/handler\"\nimport * as filter from \"./formulas/filter/handler\"\nimport * as getFromLocalStorage from \"./formulas/getFromLocalStorage/handler\"\nimport * as number from \"./formulas/number/handler\"\nimport * as shuffle from \"./formulas/shuffle/handler\"\nimport * as add from \"./formulas/add/handler\"\nimport * as defaultTo from \"./formulas/defaultTo/handler\"\nimport * as roundUp from \"./formulas/roundUp/handler\"\nimport * as lastIndexOf from \"./formulas/lastIndexOf/handler\"\nimport * as timestamp from \"./formulas/timestamp/handler\"\nimport * as getCookie from \"./formulas/getCookie/handler\"\nimport * as indexOf from \"./formulas/indexOf/handler\"\nimport * as currentURL from \"./formulas/currentURL/handler\"\nimport * as replaceAll from \"./formulas/replaceAll/handler\"\nimport * as getElementById from \"./formulas/getElementById/handler\"\nimport * as userAgent from \"./formulas/userAgent/handler\"\nimport * as startsWith from \"./formulas/startsWith/handler\"\nimport * as getHttpOnlyCookie from \"./formulas/getHttpOnlyCookie/handler\"\nimport * as multiply from \"./formulas/multiply/handler\"\nimport * as findIndex from \"./formulas/findIndex/handler\"\nimport * as range from \"./formulas/range/handler\"\nimport * as trim from \"./formulas/trim/handler\"\nimport * as not from \"./formulas/not/handler\"\nimport * as formatNumber from \"./formulas/formatNumber/handler\"\nimport * as notEqual from \"./formulas/notEqual/handler\"\nimport * as keyBy from \"./formulas/keyBy/handler\"\nimport * as decodeBase64 from \"./formulas/decodeBase64/handler\"\nimport * as split from \"./formulas/split/handler\"\n\nexport {\n string,\n languages,\n matches,\n decodeURIComponent,\n logarithm,\n boolean,\n capitalize,\n power,\n encodeURIComponent,\n encodeBase64,\n encodeJSON,\n takeLast,\n dateFromTimestamp,\n join,\n clamp,\n roundDown,\n minus,\n sort_by,\n map,\n every,\n sum,\n randomNumber,\n squareRoot,\n formatDate,\n modulo,\n now,\n prepend,\n groupBy,\n last,\n parseJSON,\n uppercase,\n round,\n dropLast,\n canShare,\n fromEntries,\n greaterThan,\n includes,\n absolute,\n isServer,\n parseURL,\n lessOrEqual,\n typeOf,\n findLast,\n lessThan,\n append,\n getFromSessionStorage,\n unique,\n concatenate,\n take,\n get,\n lowercase,\n equals,\n first,\n json,\n max,\n dateFromString,\n deleteKey,\n min,\n reverse,\n branchName,\n greaterOrEqueal,\n size,\n reduce,\n set,\n some,\n entries,\n flatten,\n drop,\n divide,\n find,\n filter,\n getFromLocalStorage,\n number,\n shuffle,\n add,\n defaultTo,\n roundUp,\n lastIndexOf,\n timestamp,\n getCookie,\n indexOf,\n currentURL,\n replaceAll,\n getElementById,\n userAgent,\n startsWith,\n getHttpOnlyCookie,\n multiply,\n findIndex,\n range,\n trim,\n not,\n formatNumber,\n notEqual,\n keyBy,\n decodeBase64,\n split\n}\n ", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\n/**\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String\n */\nconst handler: FormulaHandler<string> = ([input]) => String(input)\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<readonly string[]> = (_, { env }) => {\n if (!env.isServer) {\n // See https://developer.mozilla.org/en-US/docs/Web/API/Navigator/languages\n return window.navigator.languages\n } else {\n return (\n // See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language\n env.request?.headers['accept-language']\n ?.split(',')\n .map((lang) => lang.split(';')[0] ?? '') ?? []\n )\n }\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\nimport { toBoolean } from '@nordcraft/core/dist/utils/util'\n\nconst handler: FormulaHandler<Array<string>> = ([\n inputString,\n regex,\n globalFlag,\n ignoreCaseFlag,\n multiLineFlag,\n]) => {\n if (typeof inputString !== 'string' || typeof regex !== 'string') {\n return []\n }\n const flags = [\n toBoolean(globalFlag) ? 'g' : '',\n toBoolean(ignoreCaseFlag) ? 'i' : '',\n toBoolean(multiLineFlag) ? 'm' : '',\n ].join('')\n\n const re = new RegExp(regex, flags)\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match\n return inputString.match(re) ?? []\n}\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<string> = ([URIComponent]) => {\n if (typeof URIComponent !== 'string') {\n return null\n }\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent\n return decodeURIComponent(URIComponent)\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<number> = ([a]) => {\n // Check if input is not a number or is null\n if (typeof a !== 'number' || Number.isNaN(a)) {\n return null\n }\n // Number must be greater than or equal to 0\n if (a < 0) {\n return null\n }\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log\n return Math.log(a)\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\nimport { toBoolean } from '@nordcraft/core/dist/utils/util'\n\nconst handler: FormulaHandler<boolean> = ([input]) => {\n return toBoolean(input)\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<string> = ([input]) => {\n if (typeof input !== 'string') {\n return null\n }\n const firstChar = input.at(0)\n\n if (input.length === 0 || typeof firstChar !== 'string') {\n return input\n }\n return firstChar.toLocaleUpperCase() + input.substring(1).toLocaleLowerCase()\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<number> = ([a, b]) => {\n if (isNaN(Number(a)) || isNaN(Number(b))) {\n return null\n }\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/pow\n return Number(a) ** Number(b)\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<string> = ([URIComponent]) => {\n if (typeof URIComponent !== 'string') {\n return null\n }\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent\n return encodeURIComponent(URIComponent)\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<string> = ([input]) => {\n if (typeof input !== 'string') {\n return null\n }\n // See https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/btoa\n return btoa(input)\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\nconst handler: FormulaHandler<string> = ([data, indent]) => {\n if (typeof indent !== 'number') {\n return null\n }\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify\n return JSON.stringify(data, null, indent)\n}\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<Array<unknown> | string> = ([list, count]) => {\n if (typeof count !== 'number') {\n return null\n }\n if (Array.isArray(list)) {\n return list.slice(list.length - count)\n }\n if (typeof list === 'string') {\n return list.substring(list.length - count)\n }\n return null\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<Date> = ([timestamp]) => {\n if (typeof timestamp === 'number') {\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date\n return new Date(timestamp)\n } else {\n return null\n }\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<string> = ([list, separator]) => {\n if (Array.isArray(list)) {\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join\n return list.join(String(separator))\n }\n return null\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<number> = ([value, min, max]) => {\n if (typeof value !== 'number') {\n return null\n }\n if (typeof min !== 'number') {\n return null\n }\n if (typeof max !== 'number') {\n return null\n }\n return Math.min(Math.max(value, min), max)\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<number> = ([input, decimals]) => {\n if (typeof input !== 'number') {\n return null\n }\n if (typeof decimals !== 'number') {\n return null\n }\n const multiplier = Math.max(1, Math.pow(10, decimals))\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/floor\n return Math.floor(input * multiplier) / multiplier\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<number> = ([a, b]) => {\n const first = Number(a)\n const second = Number(b)\n if (isNaN(first) || isNaN(second)) {\n return null\n }\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Subtraction\n return first - second\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<Array<unknown>> = ([\n array,\n formula,\n ascending,\n]) => {\n if (!Array.isArray(array)) {\n return null\n }\n if (typeof formula !== 'function') {\n return null\n }\n if (typeof ascending !== 'boolean') {\n return null\n }\n const ascendingModifier = ascending ? 1 : -1\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort\n return [...array].sort((a: any, b: any) => {\n const keyA = formula({ item: a })\n const keyB = formula({ item: b })\n if (Array.isArray(keyA) && Array.isArray(keyB)) {\n for (const i in keyA) {\n if (keyA[i] === keyB[i]) {\n continue\n }\n return (keyA[i] > keyB[i] ? 1 : -1) * ascendingModifier\n }\n return 0\n }\n\n if (keyA === keyB) {\n return 0\n }\n return (keyA > keyB ? 1 : -1) * ascendingModifier\n })\n}\n\nexport default handler\n\nexport const getArgumentInputData = (\n [items]: unknown[],\n argIndex: number,\n input: any,\n) => {\n if (argIndex === 1 && Array.isArray(items)) {\n return { ...input, Args: { item: items[0] } }\n }\n\n return input\n}\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\n/**\n * Similar to https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map\n * but also works for objects\n */\nconst handler: FormulaHandler<Array<unknown> | Record<string, unknown>> = ([\n items,\n fx,\n]) => {\n if (typeof fx !== 'function') {\n return null\n }\n if (Array.isArray(items)) {\n return items.map((item, index) => fx({ item, index }))\n }\n if (items && typeof items === 'object') {\n return Object.fromEntries(\n Object.entries(items).map<any>(([key, value]) => {\n const res = fx({ key, value })\n if ('key' in res && 'value' in res) {\n return [res.key, res.value]\n }\n return null\n }),\n )\n }\n return null\n}\n\nexport const getArgumentInputData = (\n [items]: unknown[],\n argIndex: number,\n input: any,\n) => {\n if (argIndex === 0) {\n return input\n }\n if (Array.isArray(items)) {\n return { ...input, Args: { item: items[0], index: 0 } }\n }\n if (items && typeof items === 'object') {\n const [first] = Object.entries(items)\n if (first) {\n return { ...input, Args: { key: first[0], value: first[1] } }\n }\n }\n return input\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\n/**\n * Similar to https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every\n * but also works with objects\n */\nexport const handler: FormulaHandler<boolean> = ([items, fx]: unknown[]) => {\n if (typeof fx !== 'function') {\n return null\n }\n if (Array.isArray(items)) {\n return items.every((item, index) => fx({ item, index }))\n }\n if (items && typeof items === 'object') {\n return Object.entries(items).every(([key, value]) => fx({ key, value }))\n }\n return null\n}\n\nexport default handler\n\nexport const getArgumentInputData = (\n [items]: unknown[],\n argIndex: number,\n input: any,\n) => {\n if (argIndex === 0) {\n return input\n }\n\n if (Array.isArray(items)) {\n return { ...input, Args: { item: items[0], index: 0 } }\n }\n if (items && typeof items === 'object') {\n const [first] = Object.entries(items)\n if (first) {\n return { ...input, Args: { key: first[0], value: first[1] } }\n }\n }\n return input\n}\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<number> = ([list]) => {\n if (Array.isArray(list)) {\n let sum = 0\n for (const n of list) {\n if (isNaN(n) || typeof n !== 'number') {\n return null\n }\n sum += n\n }\n return sum\n }\n return null\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<number> = () => {\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random\n return Math.random()\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<number> = ([n]) => {\n if (typeof n !== 'number') {\n return null\n }\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sqrt\n return Math.sqrt(n)\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\n/**\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat\n */\nconst handler: FormulaHandler<string> = ([date, loc, opt]) => {\n if (!date || !(date instanceof Date)) {\n return null\n }\n const locales =\n typeof loc === 'string' && loc.length > 0\n ? loc\n : Array.isArray(loc) && loc.every((l) => typeof l === 'string')\n ? (loc as string[])\n : undefined\n if (!opt || typeof opt !== 'object') {\n return Intl.DateTimeFormat(locales).format(date)\n }\n const validateString = <T = string>(\n value: unknown,\n allowedValues?: string[],\n ): T | undefined =>\n typeof value === 'string' && (allowedValues?.includes(value) ?? true)\n ? (value as T)\n : undefined\n\n const options: Partial<\n Intl.DateTimeFormatOptions & { locale: string | string[] }\n > = opt\n const dateStyle = validateString<Intl.DateTimeFormatOptions['dateStyle']>(\n options.dateStyle,\n ['full', 'long', 'medium', 'short'],\n )\n const timeStyle = validateString<Intl.DateTimeFormatOptions['timeStyle']>(\n options.timeStyle,\n ['full', 'long', 'medium', 'short'],\n )\n const calendar = validateString(options.calendar)\n const weekday = validateString<Intl.DateTimeFormatOptions['weekday']>(\n options.weekday,\n ['long', 'short', 'narrow'],\n )\n const era = validateString<Intl.DateTimeFormatOptions['era']>(options.era, [\n 'long',\n 'short',\n 'narrow',\n ])\n const year = validateString<Intl.DateTimeFormatOptions['year']>(\n options.year,\n ['numeric', '2-digit'],\n )\n const month = validateString<Intl.DateTimeFormatOptions['month']>(\n options.month,\n ['long', 'short', 'narrow', 'numeric', '2-digit'],\n )\n const day = validateString<Intl.DateTimeFormatOptions['day']>(options.day, [\n 'numeric',\n '2-digit',\n ])\n const hour = validateString<Intl.DateTimeFormatOptions['hour']>(\n options.hour,\n ['numeric', '2-digit'],\n )\n const minute = validateString<Intl.DateTimeFormatOptions['minute']>(\n options.minute,\n ['numeric', '2-digit'],\n )\n const second = validateString<Intl.DateTimeFormatOptions['second']>(\n options.second,\n ['numeric', '2-digit'],\n )\n const timeZoneName = validateString<\n Intl.DateTimeFormatOptions['timeZoneName']\n >(options.timeZoneName, [\n 'long',\n 'short',\n 'shortOffset',\n 'longOffset',\n 'shortGeneric',\n 'longGeneric',\n ])\n const timeZone = validateString<Intl.DateTimeFormatOptions['timeZone']>(\n options.timeZone,\n )\n const hour12 =\n options.hour12 === true\n ? true\n : options.hour12 === false\n ? false\n : undefined\n\n return Intl.DateTimeFormat(locales, {\n dateStyle,\n timeStyle,\n calendar,\n weekday,\n era,\n year,\n month,\n day,\n hour,\n minute,\n second,\n timeZoneName,\n timeZone,\n hour12,\n }).format(date)\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<number> = ([a, b]) => {\n if (isNaN(Number(a)) || isNaN(Number(b))) {\n return null\n }\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Remainder\n return Number(a) % Number(b)\n}\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<Date> = () => {\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date\n return new Date()\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<Array<unknown>> = ([list, value]) => {\n if (!Array.isArray(list)) {\n return null\n }\n return [value, ...list]\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\n/**\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/groupBy\n */\nexport const handler: FormulaHandler<Record<string, Array<unknown>>> = ([\n items,\n func,\n]) => {\n if (typeof func !== 'function') {\n return null\n }\n if (!items || typeof items !== 'object' || !Array.isArray(items)) {\n return null\n }\n\n const res: Record<string, any> = {}\n for (const index in items) {\n const item = items[index]\n const key = String(func({ item, index }))\n res[key] = res[key] ?? []\n res[key].push(item)\n }\n return res\n}\n\nexport default handler\n\nexport const getArgumentInputData = (\n [items]: unknown[],\n argIndex: number,\n input: any,\n) => {\n if (argIndex === 1 && Array.isArray(items)) {\n return { ...input, Args: { item: items[0], index: 0 } }\n }\n return input\n}\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<unknown> = ([list]) => {\n if (typeof list === 'string' || Array.isArray(list)) {\n return list[list.length - 1]\n }\n return null\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\nimport { parseJSONWithDate } from '@nordcraft/core/dist/utils/json'\n\nconst handler: FormulaHandler<unknown> = ([data]) => {\n if (typeof data !== 'string') {\n return null\n }\n try {\n // Similar to https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse\n return parseJSONWithDate(data)\n } catch {\n return null\n }\n}\nexport default handler\n", "const iso8601Regex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:.\\d{1,3})?Z$/\n\n/**\n * This function is much slower than JSON parse without reviver and is a major\n * bottleneck in the runtime performance. Especially during startup.\n */\nexport function parseJSONWithDate(input: string) {\n return JSON.parse(input, (_, value) => {\n if (\n typeof value === 'string' &&\n value.length === 24 &&\n iso8601Regex.test(value)\n ) {\n return new Date(value)\n }\n return value\n })\n}\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<string> = ([input]) => {\n if (typeof input !== 'string') {\n return null\n }\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLocaleUpperCase\n return input.toLocaleUpperCase()\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<number> = ([input, decimals]) => {\n if (typeof input !== 'number') {\n return null\n }\n if (typeof decimals !== 'number') {\n return null\n }\n const multiplier = Math.max(1, Math.pow(10, decimals))\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round\n return Math.round(input * multiplier) / multiplier\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<Array<unknown> | string> = ([list, count]) => {\n if (typeof count !== 'number' || isNaN(count)) {\n return null\n }\n if (Array.isArray(list)) {\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice\n return list.slice(0, list.length - count)\n }\n if (typeof list === 'string') {\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substring\n return list.substring(0, list.length - count)\n }\n return null\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\nimport { isDefined } from '@nordcraft/core/dist/utils/util'\n\nconst handler: FormulaHandler<boolean> = ([url, title, text]) => {\n if (!isDefined(navigator.canShare)) {\n return false\n }\n const validInput = (value: any): value is string =>\n isDefined(value) && typeof value === 'string'\n if (!validInput(url) && !validInput(title) && !validInput(text)) {\n return false\n }\n const data: ShareData = {}\n if (validInput(title)) {\n data.title = title\n }\n if (validInput(text)) {\n data.text = text\n }\n if (validInput(url)) {\n data.url = url\n }\n // Later we can add support for data.files as well\n // See https://developer.mozilla.org/en-US/docs/Web/API/Navigator/canShare\n return navigator.canShare(data)\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\n/**\n * Similar to https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/fromEntries\n * but requires the input to be an array of objects with `key` and `value` properties named as `key` and `value` respectively\n */\nconst handler: FormulaHandler<Record<string, unknown>> = ([list]) => {\n if (Array.isArray(list)) {\n const object: Record<string, any> = {}\n for (const { key, value } of list) {\n object[key] = value\n }\n return object\n }\n return null\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<boolean> = ([first, second]: any[]) => {\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Greater_than\n return first > second\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\n/**\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n * and https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes\n */\nconst handler: FormulaHandler<boolean> = ([collection, item]) => {\n if (typeof collection === 'string' && typeof item === 'string') {\n return collection.includes(item)\n }\n if (Array.isArray(collection)) {\n return collection.some((collectionItem) =>\n (globalThis as any).toddle.isEqual(collectionItem, item),\n )\n }\n return null\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<number> = ([a]) => {\n if (typeof a !== 'number') {\n return null\n }\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/abs\n return Math.abs(a)\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<boolean> = (_, ctx) => {\n return ctx.env.isServer\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\n/**\n * Create a simplified URL object similar to the native URL\n * while retaining the original URL object's toString method.\n */\nclass NCURL {\n hostname: string\n searchParams: {\n [k: string]: string\n }\n path: string[]\n hash: string\n href: string\n protocol: string\n port: string\n origin: string\n\n constructor(url: URL) {\n this.hostname = url.hostname\n this.searchParams = Object.fromEntries(url.searchParams)\n this.path = url.pathname.split('/').filter((p, i) => i !== 0 || p !== '')\n this.hash = url.hash.replace('#', '')\n this.href = url.href\n this.protocol = url.protocol\n this.port = url.port\n this.origin = url.origin\n }\n\n toString() {\n // This is the same functionality as URL.prototype.toString (https://developer.mozilla.org/en-US/docs/Web/API/URL#instance_methods)\n return this.href\n }\n}\n\n/**\n * Similar to https://developer.mozilla.org/en-US/docs/Web/API/URL/URL\n * but returns searchParams as an object and path as an array without leading empty string\n */\nconst handler: FormulaHandler<{\n hostname: string\n searchParams: {\n [k: string]: string\n }\n path: string[]\n hash: string\n href: string\n protocol: string\n port: string\n origin: string\n}> = ([url, base]) => {\n if (typeof url !== 'string') {\n return null\n }\n try {\n return new NCURL(new URL(url, typeof base === 'string' ? base : undefined))\n } catch {\n // Invalid url\n return null\n }\n}\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<boolean> = ([first, second]: any[]) => {\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Less_than_or_equal\n return first <= second\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\n/**\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof\n */\nconst handler: FormulaHandler<string> = ([value]) => {\n switch (typeof value) {\n case 'number':\n if (isNaN(value)) {\n return null\n }\n return 'Number'\n case 'string':\n return 'String'\n case 'boolean':\n return 'Boolean'\n case 'object':\n return Array.isArray(value) ? 'Array' : value === null ? 'Null' : 'Object'\n case 'undefined':\n return 'Null'\n default:\n return null\n }\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nexport const handler: FormulaHandler<unknown> = ([items, fx]) => {\n if (typeof fx !== 'function') {\n return null\n }\n if (Array.isArray(items)) {\n return items.findLast((item, index) => fx({ item, index }))\n }\n if (items && typeof items === 'object') {\n return Object.entries(items).findLast(([key, value]) =>\n fx({ key, value }),\n )?.[1]\n }\n return null\n}\n\nexport default handler\n\nexport const getArgumentInputData = (\n [items]: unknown[],\n argIndex: number,\n input: any,\n) => {\n if (argIndex === 0) {\n return input\n }\n\n if (Array.isArray(items)) {\n return { ...input, Args: { item: items[0], index: 0 } }\n }\n if (items && typeof items === 'object') {\n const [first] = Object.entries(items)\n if (first) {\n return { ...input, Args: { key: first[0], value: first[1] } }\n }\n }\n return input\n}\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<boolean> = ([first, second]: any[]) => {\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Less_than\n return first < second\n}\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<Array<unknown>> = ([list, value]) => {\n if (!Array.isArray(list)) {\n return null\n }\n // Similar to https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push\n return [...list, value]\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<unknown> = ([key]) => {\n if (typeof key !== 'string' || key.length === 0) {\n return null\n }\n if (typeof window === 'undefined') {\n return null\n }\n // See https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage\n const value = window.sessionStorage.getItem(key)\n if (value === null) {\n return value\n }\n try {\n return JSON.parse(value)\n } catch {\n return value\n }\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<Array<unknown>> = ([list]) => {\n if (!Array.isArray(list)) {\n return null\n }\n const set = new Set()\n return list.filter((item) => {\n const key = typeof item === 'object' ? JSON.stringify(item) : item\n if (set.has(key)) {\n return false\n }\n set.add(key)\n return true\n })\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\nimport { isObject } from '@nordcraft/core/dist/utils/util'\n\nconst handler: FormulaHandler<\n string | Array<unknown> | Record<string, unknown>\n> = (items) => {\n if (items.every(Array.isArray)) {\n const result = []\n for (const item of items) {\n // Similar to https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat\n result.push(...item)\n }\n return result\n }\n if (items.every(isObject)) {\n return Object.assign({}, ...items)\n }\n return items.join('')\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<Array<unknown> | string> = ([list, count]) => {\n if (typeof count !== 'number') {\n return null\n }\n if (Array.isArray(list)) {\n return list.slice(0, count)\n }\n if (typeof list === 'string') {\n return list.substring(0, count)\n }\n return null\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<unknown> = ([collection, key]) => {\n if (typeof collection === 'string') {\n return collection[Number(key)]\n }\n const resolve = (collection: any, path: unknown[]): unknown => {\n if (path.length === 0) {\n return collection\n }\n const [head, ...rest] = path\n return resolve(collection?.[String(head)], rest)\n }\n return resolve(collection, Array.isArray(key) ? key : [key])\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<string> = ([input]) => {\n if (typeof input !== 'string') {\n return null\n }\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLocaleLowerCase\n return input.toLocaleLowerCase()\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\nconst handler: FormulaHandler<boolean> = ([a, b]) => {\n return (globalThis as any).toddle.isEqual(a, b)\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<unknown> = ([list]) => {\n if (typeof list === 'string' || Array.isArray(list)) {\n return list[0]\n }\n return null\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<string> = ([data, indentation]) => {\n const indent = isNaN(Number(indentation)) ? 0 : Number(indentation)\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify\n return JSON.stringify(data, null, indent)\n}\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<number> = (args) => {\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max\n return Math.max(...args.map(Number))\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<Date> = ([date]) => {\n if (typeof date === 'string') {\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date\n return new Date(date)\n } else {\n return null\n }\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\nimport { isObject } from '@nordcraft/core/dist/utils/util'\n\nconst handler: FormulaHandler<Array<unknown> | Record<string, unknown>> = ([\n collection,\n key,\n]) => {\n if (typeof collection !== 'object' || collection === null) {\n return null\n }\n if (\n !Array.isArray(key) &&\n typeof key !== 'string' &&\n typeof key !== 'number'\n ) {\n return null\n }\n\n const run = (\n collection: any,\n [key, ...path]: string[],\n ): Record<string, any> | null => {\n if (Array.isArray(collection)) {\n const index = Number(key)\n if (Number.isNaN(index)) {\n return collection\n }\n if (path.length === 0) {\n return collection.filter((_, i) => i !== Number(key))\n }\n return collection.map((e, i) =>\n i === index ? run(collection[index], path) : e,\n )\n }\n if (isObject(collection)) {\n if (path.length === 0) {\n return Object.fromEntries(\n Object.entries(collection).filter(([k]) => k !== key),\n )\n }\n if (typeof key !== 'string' && typeof key !== 'number') {\n return { ...collection }\n } else {\n return {\n ...collection,\n [key]: run(collection[key], path),\n }\n }\n }\n\n return null\n }\n const path = Array.isArray(key) ? key : [key]\n return run(collection, path)\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<number> = (args) => {\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/min\n return Math.min(...args.map(Number))\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<Array<unknown>> = ([list]) => {\n if (Array.isArray(list)) {\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse\n return [...list].reverse()\n }\n return null\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<string> = (_, ctx) => {\n return ctx.env.branchName\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<boolean> = ([first, second]: any[]) => {\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Greater_than_or_equal\n return first >= second\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\nimport { isObject } from '@nordcraft/core/dist/utils/util'\n\nconst handler: FormulaHandler<number> = ([collection]) => {\n if (Array.isArray(collection)) {\n return collection.length\n }\n if (isObject(collection)) {\n return Object.keys(collection).length\n }\n if (typeof collection === 'string') {\n return collection.length\n }\n return null\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\n/**\n * Similar to https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce\n * but also works with objects\n */\nconst handler: FormulaHandler<unknown> = ([items, fx, init]) => {\n if (typeof fx !== 'function') {\n return null\n }\n if (Array.isArray(items)) {\n return items.reduce(\n (result, item, index) => fx({ result, item, index }),\n init,\n )\n }\n if (items && typeof items === 'object') {\n return Object.entries(items).reduce(\n (result, [key, value]) => fx({ result, key, value }),\n init,\n )\n }\n return null\n}\nexport default handler\n\nexport const getArgumentInputData = (\n [items, _, result]: unknown[],\n argIndex: number,\n input: any,\n) => {\n if (argIndex !== 1) {\n return input\n }\n if (Array.isArray(items)) {\n return {\n ...input,\n Args: {\n item: items[0],\n index: 0,\n result,\n },\n }\n }\n if (items && typeof items === 'object') {\n const [first] = Object.entries(items)\n if (first) {\n return {\n ...input,\n Args: {\n key: first[0],\n value: first[1],\n result,\n },\n }\n }\n }\n return input\n}\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\nimport { isObject } from '@nordcraft/core/dist/utils/util'\n\nconst handler: FormulaHandler<Array<unknown> | Record<string, unknown>> = (\n [collection, key, value],\n ctx,\n): any => {\n if (\n typeof key !== 'string' &&\n typeof key !== 'number' &&\n !Array.isArray(key)\n ) {\n return null\n }\n const [head, ...rest] = Array.isArray(key) ? key : [key]\n if (isObject(collection)) {\n const clone: Record<string, any> = Array.isArray(collection)\n ? [...collection]\n : { ...collection }\n clone[head] =\n rest.length === 0 ? value : handler([clone[head], rest, value], ctx)\n return clone\n }\n return null\n}\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\n/**\n * Similar to https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some\n * but also works with objects\n */\nexport const handler: FormulaHandler<boolean> = ([items, fx]: unknown[]) => {\n if (typeof fx !== 'function') {\n return null\n }\n if (Array.isArray(items)) {\n return items.some((item, index) => fx({ item, index }))\n }\n if (items && typeof items === 'object') {\n return Object.entries(items).some(([key, value]) => fx({ key, value }))\n }\n return null\n}\n\nexport default handler\n\nexport const getArgumentInputData = (\n [items]: unknown[],\n argIndex: number,\n input: any,\n) => {\n if (argIndex === 0) {\n return input\n }\n\n if (Array.isArray(items)) {\n return { ...input, Args: { item: items[0], index: 0 } }\n }\n if (items && typeof items === 'object') {\n const [first] = Object.entries(items)\n if (first) {\n return { ...input, Args: { key: first[0], value: first[1] } }\n }\n }\n return input\n}\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<Array<{ key: string; value: unknown }>> = ([\n object,\n]) => {\n if (typeof object === 'object' && object !== null) {\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries\n return Object.entries(object).map(([key, value]) => ({ key, value }))\n }\n return null\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<Array<unknown>> = ([items]) => {\n if (Array.isArray(items)) {\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat\n return items.flat()\n }\n return null\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<Array<unknown> | string> = ([list, count]) => {\n if (typeof count !== 'number' || isNaN(count)) {\n return null\n }\n if (Array.isArray(list)) {\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice\n return list.slice(count)\n }\n if (typeof list === 'string') {\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substring\n return list.substring(count)\n }\n return null\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<number> = ([a, b]) => {\n if (isNaN(Number(a)) || isNaN(Number(b))) {\n return null\n }\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Division\n return Number(a) / Number(b)\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\n/**\n * Similar to https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\n * but this implementation also supports objects\n */\nexport const handler: FormulaHandler<unknown> = ([items, fx]) => {\n if (typeof fx !== 'function') {\n return null\n }\n if (Array.isArray(items)) {\n return items.find((item, index) => fx({ item, index }))\n }\n if (items && typeof items === 'object') {\n return Object.entries(items).find(([key, value]) => fx({ key, value }))?.[1]\n }\n return null\n}\n\nexport default handler\n\nexport const getArgumentInputData = (\n [items]: unknown[],\n argIndex: number,\n input: any,\n) => {\n if (argIndex === 0) {\n return input\n }\n\n if (Array.isArray(items)) {\n return { ...input, Args: { item: items[0], index: 0 } }\n }\n if (items && typeof items === 'object') {\n const [first] = Object.entries(items)\n if (first) {\n return { ...input, Args: { key: first[0], value: first[1] } }\n }\n }\n return input\n}\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\n/**\n * Similar to https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter\n * but this implementation also supports objects\n */\nexport const handler: FormulaHandler<\n Array<unknown> | Record<string, unknown>\n> = ([items, func]) => {\n if (typeof func !== 'function') {\n return null\n }\n if (Array.isArray(items)) {\n return items.filter((item, index) => func({ item, index }))\n }\n if (items && typeof items === 'object') {\n return Object.fromEntries(\n Object.entries(items).filter(([key, value]) => func({ key, value })),\n )\n }\n if (Array.isArray(items)) {\n return items.filter((item, index) => func({ item, index }))\n }\n return null\n}\n\nexport default handler\n\nexport const getArgumentInputData = (\n [items]: unknown[],\n argIndex: number,\n input: any,\n) => {\n if (argIndex === 0) {\n return input\n }\n\n if (Array.isArray(items)) {\n return { ...input, Args: { item: items[0], index: 0 } }\n }\n if (items && typeof items === 'object') {\n const [first] = Object.entries(items)\n if (first) {\n return { ...input, Args: { value: first[1], key: first[0] } }\n }\n }\n return input\n}\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<unknown> = ([key]) => {\n if (typeof key !== 'string' || key.length === 0) {\n return null\n }\n if (typeof window === 'undefined') {\n return null\n }\n // See https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage\n const value = window.localStorage.getItem(key)\n if (value === null) {\n return value\n }\n try {\n return JSON.parse(value)\n } catch {\n return value\n }\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\n/**\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number\n */\nconst handler: FormulaHandler<number> = ([a]) => Number(a)\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<Array<unknown> | string> = ([list]) => {\n if (Array.isArray(list)) {\n return shuffle(list)\n }\n if (typeof list === 'string') {\n return shuffle(list.split('')).join('')\n }\n return null\n}\n\nfunction shuffle(input: Array<any>) {\n const array = [...input]\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1)) // random index from 0 to i\n\n // swap elements array[i] and array[j]\n // we use \"destructuring assignment\" syntax to achieve that\n // you'll find more details about that syntax in later chapters\n // same can be written as:\n // let t = array[i]; array[i] = array[j]; array[j] = t\n ;[array[i], array[j]] = [array[j], array[i]]\n }\n return array\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<number> = (numbers) => {\n if (\n !Array.isArray(numbers) ||\n numbers.some((n) => n === null || typeof n !== 'number')\n ) {\n return null\n }\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Addition\n return numbers.reduce((result: number, n: any) => {\n return result + Number(n)\n }, 0)\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\nimport { toBoolean } from '@nordcraft/core/dist/utils/util'\n\nconst handler: FormulaHandler<unknown> = (values) => {\n for (const value of values) {\n if (toBoolean(value)) {\n return value\n }\n }\n return null\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<number> = ([input, decimals]) => {\n if (typeof input !== 'number') {\n return null\n }\n if (typeof decimals !== 'number') {\n return null\n }\n\n const multiplier = Math.max(1, Math.pow(10, decimals))\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/ceil\n return Math.ceil(input * multiplier) / multiplier\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<number> = ([collection, item]) => {\n if (typeof collection === 'string') {\n return collection.lastIndexOf(item as any)\n }\n\n if (Array.isArray(collection)) {\n return collection.findLastIndex((i) =>\n (globalThis as any).toddle.isEqual(i, item),\n )\n }\n return null\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<number> = ([date]) => {\n if (!date || !(date instanceof Date)) {\n return null\n }\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime\n return date.getTime()\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<string> = ([name], { env, root }) => {\n if (!name || typeof name !== 'string') {\n return null\n }\n if (!env.isServer) {\n if (root instanceof ShadowRoot) {\n return null\n }\n return (\n // See https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie\n root.cookie\n .split('; ')\n ?.find((row) => row.startsWith(`${name}=`))\n ?.split('=')[1] ?? null\n )\n } else {\n return env.request.cookies[name] ?? null\n }\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\n/**\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf\n * and https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf\n */\nconst handler: FormulaHandler<number> = ([collection, item]) => {\n if (typeof collection === 'string') {\n return collection.indexOf(item as any)\n }\n\n if (Array.isArray(collection)) {\n return collection.findIndex((i) =>\n (globalThis as any).toddle.isEqual(i, item),\n )\n }\n return null\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<string> = (_, { env }) => {\n if (env.isServer) {\n return env.request.url\n } else {\n // See https://developer.mozilla.org/en-US/docs/Web/API/Window/location\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n return window?.location.href ?? null\n }\n}\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<string> = ([\n input,\n searchValue,\n replaceValue,\n]) => {\n if (typeof input !== 'string') {\n return null\n }\n if (typeof searchValue !== 'string') {\n return null\n }\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll\n return input.replaceAll(searchValue, String(replaceValue))\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<HTMLElement> = ([id], { root }) => {\n if (typeof id !== 'string') {\n return null\n }\n // See https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementById\n return root.getElementById(id)\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<string> = (_, { env }) => {\n if (!env.isServer) {\n // See https://developer.mozilla.org/en-US/docs/Web/API/Navigator/userAgent\n return window.navigator.userAgent\n } else {\n // See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent\n return env.request?.headers['user-agent'] ?? null\n }\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<boolean> = ([collection, prefix]) => {\n if (typeof collection !== 'string') {\n return null\n }\n if (typeof prefix !== 'string') {\n return null\n }\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n return collection.startsWith(prefix)\n}\n\nexport default handler\n", "import { STRING_TEMPLATE } from '@nordcraft/core/dist/api/template'\nimport type { FormulaHandler } from '@nordcraft/core/dist/types'\n\n/**\n * Nordcraft uses a custom string template to replace HttpOnly cookies server-side.\n * Learn more about cookies here https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies\n */\nconst handler: FormulaHandler<string> = ([name]) => {\n if (!name || typeof name !== 'string') {\n return null\n }\n return STRING_TEMPLATE('cookies', name)\n}\n\nexport default handler\n", "export const STRING_TEMPLATE = (\n type: keyof typeof templateTypes,\n name: string,\n) => {\n return `{{ ${templateTypes[type]}.${name} }}`\n}\n\nconst templateTypes = {\n cookies: 'cookies',\n}\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<number> = (numbers) => {\n if (numbers.some((n) => isNaN(Number(n)))) {\n return null\n }\n return (numbers as number[]).reduce<number>(\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Multiplication\n (product, num) => product * num,\n 1,\n )\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\n/**\n * Similar to https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex\n * but this implementation also supports objects\n */\nexport const handler: FormulaHandler<number> = ([items, fx]: unknown[]) => {\n if (typeof fx !== 'function') {\n return null\n }\n if (Array.isArray(items)) {\n return items.findIndex((item, index) => fx({ item, index }))\n }\n if (items && typeof items === 'object') {\n return Object.entries(items).findIndex(([key, value]) => fx({ key, value }))\n }\n return null\n}\n\nexport default handler\n\nexport const getArgumentInputData = (\n [items]: unknown[],\n argIndex: number,\n input: any,\n) => {\n if (argIndex === 0) {\n return input\n }\n\n if (Array.isArray(items)) {\n return { ...input, Args: { item: items[0], index: 0 } }\n }\n if (items && typeof items === 'object') {\n const [first] = Object.entries(items)\n if (first) {\n return { ...input, Args: { key: first[0], value: first[1] } }\n }\n }\n return input\n}\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<Array<number>> = ([min, max]) => {\n if (typeof min !== 'number') {\n return null\n }\n if (typeof max !== 'number') {\n return null\n }\n if (min > max) {\n return []\n }\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from\n return Array.from({ length: max - min + 1 }, (_, i) => i + min)\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<string> = ([str]) => {\n if (typeof str !== 'string') {\n return null\n }\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim\n return str.trim()\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\nimport { toBoolean } from '@nordcraft/core/dist/utils/util'\n\nconst handler: FormulaHandler<boolean> = ([a]) => !toBoolean(a)\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\n/**\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat\n */\nconst handler: FormulaHandler<string> = ([input, loc, opt]) => {\n if (typeof input !== 'number' || Number.isNaN(input)) {\n return null\n }\n const locales =\n typeof loc === 'string' && loc.length > 0\n ? loc\n : Array.isArray(loc) && loc.every((l) => typeof l === 'string')\n ? (loc as string[])\n : undefined\n if (!opt || typeof opt !== 'object') {\n return Intl.NumberFormat(locales).format(input)\n }\n const validateString = <T = string>(\n value: unknown,\n allowedValues?: string[],\n ): T | undefined =>\n typeof value === 'string' && (allowedValues?.includes(value) ?? true)\n ? (value as T)\n : undefined\n\n const options: Partial<\n Intl.NumberFormatOptions & { locale: string | string[] }\n > = opt\n const style = validateString<Intl.NumberFormatOptions['style']>(\n options.style,\n ['decimal', 'currency', 'percent', 'unit'],\n )\n const currency =\n typeof options.currency === 'string' && options.currency.length === 3\n ? options.currency\n : undefined\n if (style === 'currency' && typeof currency !== 'string') {\n // currency must be provided when style is currency\n return null\n }\n const currencyDisplay = validateString<\n Intl.NumberFormatOptions['currencyDisplay']\n >(options.currencyDisplay, ['code', 'symbol', 'narrowSymbol', 'name'])\n const unit = typeof options.unit === 'string' ? options.unit : undefined\n if (style === 'unit' && typeof unit !== 'string') {\n // unit must be provided when style is unit\n return null\n }\n const unitDisplay = validateString<Intl.NumberFormatOptions['unitDisplay']>(\n options.unitDisplay,\n ['short', 'narrow', 'long'],\n )\n const minimumIntegerDigits =\n typeof options.minimumIntegerDigits === 'number' &&\n options.minimumIntegerDigits >= 1 &&\n options.minimumIntegerDigits <= 21\n ? options.minimumIntegerDigits\n : undefined\n const minimumFractionDigits =\n typeof options.minimumFractionDigits === 'number' &&\n options.minimumFractionDigits >= 0 &&\n options.minimumFractionDigits <= 100\n ? options.minimumFractionDigits\n : undefined\n const maximumFractionDigits =\n typeof options.maximumFractionDigits === 'number' &&\n options.maximumFractionDigits >= 0 &&\n options.maximumFractionDigits <= 100\n ? options.maximumFractionDigits\n : undefined\n const minimumSignificantDigits =\n typeof options.minimumSignificantDigits === 'number' &&\n options.minimumSignificantDigits >= 1 &&\n options.minimumSignificantDigits <= 21\n ? options.minimumSignificantDigits\n : undefined\n const maximumSignificantDigits =\n typeof options.maximumSignificantDigits === 'number' &&\n options.maximumSignificantDigits >= 1 &&\n options.maximumSignificantDigits <= 21\n ? options.maximumSignificantDigits\n : undefined\n const notation = validateString<Intl.NumberFormatOptions['notation']>(\n options.notation,\n ['standard', 'scientific', 'engineering', 'compact'],\n )\n const compactDisplay = validateString<\n Intl.NumberFormatOptions['compactDisplay']\n >(options.compactDisplay, ['short', 'long'])\n\n // useGrouping can be a boolean, 'always', 'auto', or 'min2'\n const validGroupingValues: Array<\n keyof Intl.NumberFormatOptionsUseGroupingRegistry\n > = ['always', 'auto', 'min2']\n const useGrouping: Intl.NumberFormatOptions['useGrouping'] =\n typeof options.useGrouping === 'boolean'\n ? options.useGrouping\n : validateString<keyof Intl.NumberFormatOptionsUseGroupingRegistry>(\n options.useGrouping,\n validGroupingValues,\n )\n\n return new Intl.NumberFormat(locales, {\n style,\n currency,\n currencyDisplay,\n unit,\n unitDisplay,\n minimumIntegerDigits,\n minimumFractionDigits,\n maximumFractionDigits,\n minimumSignificantDigits,\n maximumSignificantDigits,\n notation,\n compactDisplay,\n useGrouping,\n }).format(input)\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\nconst handler: FormulaHandler<boolean> = ([a, b]) => {\n return !(globalThis as any).toddle.isEqual(a, b)\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nexport const handler: FormulaHandler<Record<string, Array<unknown>>> = ([\n items,\n func,\n]) => {\n if (typeof func !== 'function') {\n return null\n }\n if (!items || typeof items !== 'object') {\n return null\n }\n\n const list = Array.isArray(items) ? items : Object.entries(items)\n\n const res: Record<string, any> = {}\n for (let i = 0; i < list.length; i++) {\n const item = list[i]\n const key = String(func({ item, i }))\n res[key] = item\n }\n return res\n}\n\nexport default handler\n\nexport const getArgumentInputData = (\n [items]: unknown[],\n argIndex: number,\n input: any,\n) => {\n if (argIndex === 0) {\n return input\n }\n\n if (Array.isArray(items)) {\n return { ...input, Args: { item: items[0], index: 0 } }\n }\n if (items && typeof items === 'object') {\n const [first] = Object.entries(items)\n if (first) {\n return { ...input, Args: { value: first[1], key: first[0] } }\n }\n }\n return input\n}\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<string> = ([input]) => {\n if (typeof input !== 'string') {\n return null\n }\n // See https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/atob\n return atob(input)\n}\n\nexport default handler\n", "import type { FormulaHandler } from '@nordcraft/core/dist/types'\n\nconst handler: FormulaHandler<Array<unknown>> = ([inputString, delimiter]) => {\n if (typeof inputString !== 'string') {\n return null\n }\n if (typeof delimiter !== 'string') {\n return null\n }\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split\n return inputString.split(delimiter)\n}\nexport default handler\n", "import * as libActions from '@nordcraft/std-lib/dist/actions'\nimport * as libFormulas from '@nordcraft/std-lib/dist/formulas'\nimport fastDeepEqual from 'fast-deep-equal'\nimport { defineComponents } from './custom-element/defineComponents'\n\nconst loadCorePlugins = (toddle = window.toddle) => {\n toddle.isEqual = fastDeepEqual\n\n // load default formulas and actions\n Object.entries(libFormulas).forEach(([name, module]) =>\n toddle.registerFormula(\n '@toddle/' + name,\n module.default as any,\n 'getArgumentInputData' in module\n ? module.getArgumentInputData\n : undefined,\n ),\n )\n Object.entries(libActions).forEach(([name, module]) =>\n toddle.registerAction('@toddle/' + name, module.default),\n )\n}\n\nexport { defineComponents, loadCorePlugins }\n", "/**\n * Convert a component name to a valid HTML tag name according to the custom-element specs\n *\n * https://html.spec.whatwg.org/multipage/custom-elements.html#custom-element\n */\nexport const safeCustomElementName = (name: string) => {\n // Remove any white spaces from the name\n const tag = name.toLocaleLowerCase().replaceAll(' ', '')\n\n // Add \"toddle-\" prefix if needed\n if (!tag.includes('-')) {\n return `toddle-${tag}`\n }\n\n return tag\n}\n", "/* eslint-disable no-console */\nimport type { Component, ComponentData } from '../component/component.types'\nimport type {\n CustomFormulaHandler,\n FormulaHandler,\n FormulaLookup,\n NordcraftMetadata,\n Runtime,\n Toddle,\n} from '../types'\nimport { isDefined, toBoolean } from '../utils/util'\nimport { type PluginFormula, type ToddleFormula } from './formulaTypes'\n\n// Define the some objects types as union of ServerSide and ClientSide runtime types as applyFormula is used in both\ndeclare const document: Document | undefined\ntype ShadowRoot = DocumentFragment\n\ninterface BaseOperation extends NordcraftMetadata {\n label?: string\n}\n\nexport interface PathOperation extends BaseOperation {\n type: 'path'\n path: string[]\n}\n\nexport interface FunctionArgument {\n name?: string\n isFunction?: boolean\n formula: Formula\n type?: any\n testValue?: any\n}\n\nexport interface FunctionOperation extends BaseOperation {\n type: 'function'\n name: string\n display_name?: string | null\n package?: string\n arguments: FunctionArgument[]\n variableArguments?: boolean\n}\n\nexport interface RecordOperation extends BaseOperation {\n type: 'record'\n entries: FunctionArgument[]\n}\n\nexport interface ObjectOperation extends BaseOperation {\n type: 'object'\n arguments?: FunctionArgument[]\n}\n\nexport interface ArrayOperation extends BaseOperation {\n type: 'array'\n arguments: Array<{ formula: Formula }>\n}\n\nexport interface OrOperation extends BaseOperation {\n type: 'or'\n arguments: Array<{ formula: Formula }>\n}\n\nexport interface AndOperation extends BaseOperation {\n type: 'and'\n arguments: Array<{ formula: Formula }>\n}\n\nexport interface ApplyOperation extends BaseOperation {\n type: 'apply'\n name: string\n arguments: FunctionArgument[]\n}\n\nexport interface ValueOperation extends BaseOperation {\n type: 'value'\n value: ValueOperationValue\n}\n\nexport type ValueOperationValue = string | number | boolean | null | object\n\nexport interface SwitchOperation extends BaseOperation {\n type: 'switch'\n cases: Array<{\n condition: Formula\n formula: Formula\n }>\n default: Formula\n}\n\nexport type Formula =\n | FunctionOperation\n | RecordOperation\n | ObjectOperation\n | ArrayOperation\n | PathOperation\n | SwitchOperation\n | OrOperation\n | AndOperation\n | ValueOperation\n | ApplyOperation\n\nexport type FormulaContext = {\n component: Component | undefined\n formulaCache?: Record<\n string,\n {\n get: (data: ComponentData) => any\n set: (data: ComponentData, result: any) => void\n }\n >\n data: ComponentData\n root?: Document | ShadowRoot | null\n package: string | undefined\n toddle: {\n getFormula: FormulaLookup\n getCustomFormula: CustomFormulaHandler\n errors: Error[]\n }\n env: ToddleEnv | undefined\n}\n\nexport type ToddleServerEnv = {\n branchName: string\n // isServer will be true for SSR + proxied requests\n isServer: true\n request: {\n headers: Record<string, string>\n cookies: Record<string, string>\n url: string\n }\n runtime: never\n logErrors: boolean\n}\n\nexport type ToddleEnv =\n | ToddleServerEnv\n | {\n branchName: string\n // isServer will be false for client-side\n isServer: false\n request: undefined\n runtime: Runtime\n logErrors: boolean\n }\n\nexport function isFormula(f: any): f is Formula {\n return (\n f &&\n typeof f === 'object' &&\n typeof f.type === 'string' &&\n (\n [\n 'path',\n 'function',\n 'record',\n 'object',\n 'array',\n 'or',\n 'and',\n 'apply',\n 'value',\n 'switch',\n ] as Formula['type'][]\n ).includes(f.type)\n )\n}\nexport function isFormulaApplyOperation(\n formula: Formula,\n): formula is ApplyOperation {\n return formula.type === 'apply'\n}\n\nexport const isToddleFormula = <Handler>(\n formula: PluginFormula<Handler>,\n): formula is ToddleFormula =>\n Object.hasOwn(formula, 'formula') &&\n isDefined((formula as ToddleFormula).formula)\n\nexport function applyFormula(\n formula: Formula | string | number | undefined | null | boolean,\n ctx: FormulaContext,\n): any {\n if (!isFormula(formula)) {\n return formula\n }\n try {\n switch (formula.type) {\n case 'value':\n return formula.value\n case 'path': {\n let input: any = ctx.data\n for (const key of formula.path) {\n if (input && typeof input === 'object') {\n input = input[key]\n } else {\n return null\n }\n }\n\n return input\n }\n case 'switch': {\n for (const branch of formula.cases) {\n if (toBoolean(applyFormula(branch.condition, ctx))) {\n return applyFormula(branch.formula, ctx)\n }\n }\n return applyFormula(formula.default, ctx)\n }\n case 'or': {\n for (const entry of formula.arguments) {\n if (toBoolean(applyFormula(entry.formula, ctx))) {\n return true\n }\n }\n return false\n }\n case 'and': {\n for (const entry of formula.arguments) {\n if (!toBoolean(applyFormula(entry.formula, ctx))) {\n return false\n }\n }\n return true\n }\n case 'function': {\n const packageName = formula.package ?? ctx.package\n const newFunc = (\n ctx.toddle ??\n ((globalThis as any).toddle as Toddle<unknown, unknown> | undefined)\n )?.getCustomFormula(formula.name, packageName)\n if (isDefined(newFunc)) {\n ctx.package = packageName\n const args = formula.arguments.reduce<Record<string, unknown>>(\n (args, arg, i) => ({\n ...args,\n [arg.name ?? `${i}`]: arg.isFunction\n ? (Args: any) =>\n applyFormula(arg.formula, {\n ...ctx,\n data: {\n ...ctx.data,\n Args: ctx.data.Args\n ? { ...Args, '@toddle.parent': ctx.data.Args }\n : Args,\n },\n })\n : applyFormula(arg.formula, ctx),\n }),\n {},\n )\n try {\n if (isToddleFormula(newFunc)) {\n return applyFormula(newFunc.formula, {\n ...ctx,\n data: { ...ctx.data, Args: args },\n })\n } else {\n return newFunc.handler(args, {\n root: ctx.root ?? document,\n env: ctx.env,\n } as any)\n }\n } catch (e) {\n ctx.toddle.errors.push(e as Error)\n if (ctx.env?.logErrors) {\n console.error(e)\n }\n return null\n }\n } else {\n // Lookup legacy formula\n const legacyFunc: FormulaHandler | undefined = (\n ctx.toddle ??\n ((globalThis as any).toddle as Toddle<unknown, unknown>)\n ).getFormula(formula.name)\n if (typeof legacyFunc === 'function') {\n const args = (formula.arguments ?? []).map((arg) =>\n arg.isFunction\n ? (Args: any) =>\n applyFormula(arg.formula, {\n ...ctx,\n data: {\n ...ctx.data,\n Args: ctx.data.Args\n ? { ...Args, '@toddle.parent': ctx.data.Args }\n : Args,\n },\n })\n : applyFormula(arg.formula, ctx),\n )\n try {\n return legacyFunc(args, ctx as any)\n } catch (e) {\n ctx.toddle.errors.push(e as Error)\n if (ctx.env?.logErrors) {\n console.error(e)\n }\n return null\n }\n }\n }\n if (ctx.env?.logErrors) {\n console.error(\n `Could not find formula ${formula.name} in package ${\n packageName ?? ''\n }`,\n formula,\n )\n }\n return null\n }\n case 'object':\n return Object.fromEntries(\n formula.arguments?.map((entry) => [\n entry.name,\n applyFormula(entry.formula, ctx),\n ]) ?? [],\n )\n case 'record': // object used to be called record, there are still examples in the wild.\n return Object.fromEntries(\n formula.entries.map((entry) => [\n entry.name,\n applyFormula(entry.formula, ctx),\n ]),\n )\n case 'array':\n return formula.arguments.map((entry) =>\n applyFormula(entry.formula, ctx),\n )\n case 'apply': {\n const componentFormula = ctx.component?.formulas?.[formula.name]\n if (!componentFormula) {\n if (ctx.env?.logErrors) {\n console.log(\n 'Component does not have a formula with the name ',\n formula.name,\n )\n }\n return null\n }\n const Input = Object.fromEntries(\n formula.arguments.map((arg) =>\n arg.isFunction\n ? [\n arg.name,\n (Args: any) =>\n applyFormula(arg.formula, {\n ...ctx,\n data: {\n ...ctx.data,\n Args: ctx.data.Args\n ? { ...Args, '@toddle.parent': ctx.data.Args }\n : Args,\n },\n }),\n ]\n : [arg.name, applyFormula(arg.formula, ctx)],\n ),\n )\n const data = {\n ...ctx.data,\n Args: ctx.data.Args\n ? { ...Input, '@toddle.parent': ctx.data.Args }\n : Input,\n }\n const cache = ctx.formulaCache?.[formula.name]?.get(data)\n\n if (cache?.hit) {\n return cache.data\n } else {\n const result = applyFormula(componentFormula.formula, {\n ...ctx,\n data,\n })\n ctx.formulaCache?.[formula.name]?.set(data, result)\n return result\n }\n }\n\n default:\n if (ctx.env?.logErrors) {\n console.error('Could not recognize formula', formula)\n }\n }\n } catch (e) {\n if (ctx.env?.logErrors) {\n console.error(e)\n }\n return null\n }\n}\n", "import { isDefined } from './util'\n\nexport const isObject = (input: any): input is Record<string, any> =>\n typeof input === 'object' && input !== null\n\nexport const mapObject = <T, T2>(\n object: Record<string, T>,\n f: (kv: [string, T]) => [string, T2],\n): Record<string, T2> => Object.fromEntries(Object.entries(object).map(f))\n\nexport const mapValues = <T, T2>(\n object: Record<string, T>,\n f: (value: T) => T2,\n): Record<string, T2> => mapObject(object, ([key, value]) => [key, f(value)])\n\n/**\n * Deletes potentially nested keys from an object\n * @param collection Array or Object\n * @param path Path to the key to delete. For instance ['foo', 0, 'bar']\n * @returns The updated object/array\n */\nexport const omit = <T = object>(\n collection: T,\n [key, ...rest]: Array<string | number>,\n): T => {\n if (rest.length > 0) {\n const clone: any = Array.isArray(collection)\n ? [...collection]\n : { ...collection }\n if (isDefined(key)) {\n clone[key] = omit(clone[key], rest)\n }\n return clone\n }\n\n if (Array.isArray(collection)) {\n return collection.toSpliced(Number(key), 1) as T\n }\n\n const clone: any = { ...collection }\n if (isDefined(key)) {\n delete clone[key]\n }\n return clone\n}\n\nexport const omitKeys = <T extends Record<string, any>>(\n object: T,\n keys: Array<keyof T>,\n): T =>\n Object.fromEntries(\n Object.entries(object).filter(([k]) => !keys.includes(k)),\n ) as T\n\nexport const omitPaths = (object: Record<string, any>, keys: string[][]) =>\n keys.reduce((acc, key) => omit(acc, key), { ...object })\n\nexport const groupBy = <T>(items: T[], f: (t: T) => string) =>\n items.reduce<Record<string, T[]>>((acc, item) => {\n const key = f(item)\n acc[key] = acc[key] ?? []\n acc[key].push(item)\n return acc\n }, {})\n\nexport const filterObject = <T>(\n object: Record<string, T>,\n f: (kv: [string, T]) => boolean,\n): Record<string, T> => Object.fromEntries(Object.entries(object).filter(f))\n\nexport function get<T = any>(collection: T, [head, ...rest]: string[]): any {\n const headItem = isDefined(head) ? (collection as any)?.[head] : undefined\n if (rest.length === 0) {\n return headItem\n }\n return get(headItem, rest)\n}\n\nexport const set = <T = unknown>(\n collection: T,\n key: Array<string | number>,\n value: any,\n): T => {\n const [head, ...rest] = key\n\n const clone: any = Array.isArray(collection)\n ? [...collection]\n : isObject(collection)\n ? { ...collection }\n : {}\n\n // Cast to any, since it's actually possible to set a property with an undefined key on an object in Javascript\n // and we don't want to introduce a breaking change\n clone[head as any] =\n rest.length === 0 ? value : set(clone[head as any], rest, value)\n return clone as T\n}\n\nexport const sortObjectEntries = <T>(\n object: Record<string, T>,\n f: (kv: [string, T]) => string | number | boolean,\n ascending = true,\n): [string, T][] => easySort(Object.entries(object), f, ascending)\n\nexport const easySort = <T>(\n collection: T[],\n f: (item: T) => string | number | boolean,\n ascending = true,\n) =>\n [...collection].sort((a, b) => {\n const keyA = f(a)\n const keyB = f(b)\n if (keyA === keyB) {\n return 0\n }\n return (keyA > keyB ? 1 : -1) * (ascending ? 1 : -1)\n })\n\nexport const deepSortObject = (\n obj: any,\n): Record<string, any> | Array<any> | undefined | null => {\n if (!isDefined(obj)) {\n return obj\n }\n if (Array.isArray(obj)) {\n return obj.map((val) => deepSortObject(val))\n } else if (typeof obj === 'object' && Object.keys(obj).length > 0) {\n return [...Object.keys(obj)].sort().reduce<any>((acc, key) => {\n acc[key] = deepSortObject(obj[key])\n return acc\n }, {})\n }\n return obj\n}\n", "// Based on https://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript/52171480#52171480\n// This is a simple hash function for strings. It's not secure, but it's fast.\n// It's not suitable for cryptographic purposes, but it's great for hash tables.\nexport const hash = (data: string, seed = 0) => {\n let h1 = 0xdeadbeef ^ seed,\n h2 = 0x41c6ce57 ^ seed\n for (let i = 0, ch; i < data.length; i++) {\n ch = data.charCodeAt(i)\n h1 = Math.imul(h1 ^ ch, 2654435761)\n h2 = Math.imul(h2 ^ ch, 1597334677)\n }\n h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507)\n h1 ^= Math.imul(h2 ^ (h2 >>> 13), 3266489909)\n h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507)\n h2 ^= Math.imul(h1 ^ (h1 >>> 13), 3266489909)\n\n return 4294967296 * (2097151 & h2) + (h1 >>> 0)\n}\n", "import type { EventModel } from '../component/component.types'\nimport type { Formula } from '../formula/formula'\nimport type { NordcraftMetadata } from '../types'\n\nexport type ComponentAPI = LegacyComponentAPI | ApiRequest\n\nexport interface LegacyComponentAPI {\n name: string\n type: 'REST'\n autoFetch?: Formula | null\n url?: Formula\n path?: { formula: Formula }[]\n proxy?: boolean\n queryParams?: Record<string, { name: string; formula: Formula }>\n headers?: Record<string, Formula> | Formula\n method?: 'GET' | 'POST' | 'DELETE' | 'PUT'\n body?: Formula\n auth?: {\n type: 'Bearer id_token' | 'Bearer access_token'\n }\n throttle?: number | null\n debounce?: number | null\n onCompleted: EventModel | null\n onFailed: EventModel | null\n version?: never\n}\n\nexport interface LegacyApiStatus {\n data: unknown\n isLoading: boolean\n error: unknown\n response?: never\n}\n\nexport enum ApiMethod {\n GET = 'GET',\n POST = 'POST',\n DELETE = 'DELETE',\n PUT = 'PUT',\n PATCH = 'PATCH',\n HEAD = 'HEAD',\n OPTIONS = 'OPTIONS',\n}\n\nexport type RedirectStatusCode = 300 | 301 | 302 | 303 | 304 | 307 | 308\n\nexport type ApiParserMode =\n | 'auto'\n | 'text'\n | 'json'\n | 'event-stream'\n | 'json-stream'\n | 'blob'\n\nexport interface ApiBase extends NordcraftMetadata {\n url?: Formula | null\n path?: Record<string, { formula: Formula; index: number }> | null\n queryParams?: Record<\n string,\n // The enabled formula is used to determine if the query parameter should be included in the request or not\n { formula: Formula; enabled?: Formula | null }\n > | null\n // hash is relevant for redirects and rewrites, but not for API calls\n hash?: { formula: Formula } | null\n}\n\nexport interface ApiRequest extends ApiBase {\n version: 2\n name: string\n type: 'http' | 'ws' // The structure for web sockets might look different\n autoFetch?: Formula | null\n headers?: Record<\n string,\n { formula: Formula; enabled?: Formula | null }\n > | null\n method?: ApiMethod | null\n body?: Formula | null\n // inputs for an API request\n inputs: Record<string, { formula: Formula | null }>\n service?: string | null\n servicePath?: string | null\n server?: {\n // We should only accept server side proxy requests if proxy is defined\n proxy?: {\n enabled: { formula: Formula }\n // Allow replacing template values in the body of a proxied request\n // This is useful for cases where the body should include an http only cookie for instance\n useTemplatesInBody?: { formula: Formula } | null\n } | null\n ssr?: {\n // We should only fetch a request server side during SSR if this is true\n // it should probably be true by default for autofetch APIs\n // During SSR we will only fetch autoFetch requests\n enabled?: { formula: Formula } | null\n } | null\n } | null\n client?: {\n debounce?: { formula: Formula } | null\n onCompleted?: EventModel | null\n onFailed?: EventModel | null\n onMessage?: EventModel | null\n // parserMode is used to determine how the response should be handled\n // auto: The response will be handled based on the content type of the response\n // stream: The response will be handled as a stream\n parserMode: ApiParserMode\n // Whether to include credentials (cookies) in the request or not. Default is 'same-origin'\n credentials?: 'include' | 'same-origin' | 'omit' | null\n } | null\n // Shared logic for client/server \uD83D\uDC47\n // The user could distinguish using an environment\n // variable e.g. IS_SERVER when they declare the formula\n\n // Rules for redirecting the user to a different page\n // These rules will run both on server+client - mostly used for 401 response -> 302 redirect\n // We allow multiple rules since it makes it easier to setup multiple conditions/redirect locations\n redirectRules?: Record<\n string,\n {\n // The formula will receive the response from the server including a status code\n // A redirect response will be returned if the formula returns a valid url\n formula: Formula\n // The status code used in the redirect response. Only relevant server side\n statusCode?: RedirectStatusCode | null\n index: number\n }\n > | null\n // Formula for determining whether the response is an error or not. Receives the API response + status code/headers as input\n // The response is considered an error if the formula returns true\n // Default behavior is to check if the status code is 400 or higher\n isError?: { formula: Formula } | null\n // Formula for determining when the request should time out\n timeout?: { formula: Formula } | null\n}\n\nexport interface ApiStatus {\n data: unknown\n isLoading: boolean\n error: unknown\n response?: {\n status?: number\n headers?: Record<string, string> | null\n performance?: ApiPerformance\n debug?: null | unknown\n }\n}\n\nexport interface ApiPerformance {\n requestStart: number | null\n responseStart: number | null\n responseEnd: number | null\n}\n\nexport interface ToddleRequestInit extends RequestInit {\n headers: Headers\n}\n", "/**\n * Checks if a header is a json (content-type) header\n * Also supports edge cases like application/vnd.api+json and application/vnd.contentful.delivery.v1+json\n * See https://jsonapi.org/#mime-types\n */\nexport const isJsonHeader = (header?: string | null) => {\n if (typeof header !== 'string') {\n return false\n }\n return /^application\\/(json|.*\\+json)/.test(header)\n}\n\nexport const isTextHeader = (header?: string | null) => {\n if (typeof header !== 'string') {\n return false\n }\n return /^(text\\/|application\\/x-www-form-urlencoded|application\\/(xml|.*\\+xml))/.test(\n header,\n )\n}\n\nexport const isEventStreamHeader = (header?: string | null) => {\n if (typeof header !== 'string') {\n return false\n }\n return /^text\\/event-stream/.test(header)\n}\n\nexport const isJsonStreamHeader = (header?: string | null) => {\n if (typeof header !== 'string') {\n return false\n }\n return /^(application\\/stream\\+json|application\\/x-ndjson)/.test(header)\n}\n\nexport const isImageHeader = (header?: string | null) => {\n if (typeof header !== 'string') {\n return false\n }\n return /^image\\//.test(header)\n}\n\n/**\n * Returns an object with headers from a Headers object\n * Duplicate header values (set-cookie for instance) are encoded as a comma-separated string\n */\nexport const mapHeadersToObject = (headers: Headers) => {\n const headersObject: Record<string, string> = {}\n for (const [key, value] of headers.entries()) {\n if (headersObject[key]) {\n headersObject[key] += `, ${value}`\n } else {\n headersObject[key] = value\n }\n }\n return headersObject\n}\n", "import type { ActionModel } from '../component/component.types'\nimport { isDefined } from '../utils/util'\nimport type {\n Formula,\n FunctionOperation,\n PathOperation,\n ValueOperation,\n} from './formula'\nimport { isFormula, isToddleFormula } from './formula'\nimport type { GlobalFormulas } from './formulaTypes'\n\nexport const valueFormula = (\n value: string | number | boolean | null | object,\n): ValueOperation => ({\n type: 'value',\n value,\n})\n\nexport const pathFormula = (path: string[]): PathOperation => ({\n type: 'path',\n path,\n})\n\nexport const functionFormula = (\n name: string,\n formula?: Omit<Partial<FunctionOperation>, 'type' | 'name'>,\n): FunctionOperation => ({\n type: 'function',\n name,\n package: formula?.package,\n arguments: formula?.arguments ?? [],\n variableArguments: formula?.variableArguments,\n})\n\nexport function* getFormulasInFormula<Handler>({\n formula,\n globalFormulas,\n path = [],\n visitedFormulas = new Set<string>(),\n packageName,\n}: {\n formula: Formula | undefined | null\n globalFormulas: GlobalFormulas<Handler>\n path?: (string | number)[]\n visitedFormulas?: Set<string>\n packageName?: string\n}): Generator<{\n path: (string | number)[]\n formula: Formula\n packageName?: string\n}> {\n if (!isDefined(formula)) {\n return\n }\n\n yield {\n path,\n formula,\n packageName,\n }\n switch (formula.type) {\n case 'path':\n case 'value':\n break\n case 'record':\n for (const [key, entry] of formula.entries.entries()) {\n yield* getFormulasInFormula({\n formula: entry.formula,\n globalFormulas,\n path: [...path, 'entries', key, 'formula'],\n visitedFormulas,\n packageName,\n })\n }\n break\n case 'function': {\n packageName = formula.package ?? packageName\n const formulaKey = [packageName, formula.name].filter(isDefined).join('/')\n const shouldVisitFormula = !visitedFormulas.has(formulaKey)\n visitedFormulas.add(formulaKey)\n const globalFormula = packageName\n ? globalFormulas.packages?.[packageName]?.formulas?.[formula.name]\n : globalFormulas.formulas?.[formula.name]\n for (const [key, arg] of (\n (formula.arguments as typeof formula.arguments | undefined) ?? []\n ).entries()) {\n yield* getFormulasInFormula({\n formula: arg.formula,\n globalFormulas,\n path: [...path, 'arguments', key, 'formula'],\n visitedFormulas,\n packageName,\n })\n }\n // Lookup the actual function and traverse its potential formula references\n // if this formula wasn't already visited\n if (\n globalFormula &&\n isToddleFormula(globalFormula) &&\n shouldVisitFormula\n ) {\n yield* getFormulasInFormula({\n formula: globalFormula.formula,\n globalFormulas,\n path: [...path, 'formula'],\n visitedFormulas,\n packageName,\n })\n }\n break\n }\n case 'array':\n case 'or':\n case 'and':\n case 'object':\n for (const [key, arg] of (\n (formula.arguments as typeof formula.arguments | undefined) ?? []\n ).entries()) {\n yield* getFormulasInFormula({\n formula: arg.formula,\n globalFormulas,\n path: [...path, 'arguments', key, 'formula'],\n visitedFormulas,\n packageName,\n })\n }\n break\n case 'apply':\n for (const [key, arg] of (\n (formula.arguments as typeof formula.arguments | undefined) ?? []\n ).entries()) {\n yield* getFormulasInFormula({\n formula: arg.formula,\n globalFormulas,\n path: [...path, 'arguments', key, 'formula'],\n visitedFormulas,\n packageName,\n })\n }\n break\n case 'switch':\n for (const [key, c] of formula.cases.entries()) {\n yield* getFormulasInFormula({\n formula: c.condition,\n globalFormulas,\n path: [...path, 'cases', key, 'condition'],\n visitedFormulas,\n packageName,\n })\n yield* getFormulasInFormula({\n formula: c.formula,\n globalFormulas,\n path: [...path, 'cases', key, 'formula'],\n visitedFormulas,\n packageName,\n })\n }\n yield* getFormulasInFormula({\n formula: formula.default,\n globalFormulas,\n path: [...path, 'default'],\n visitedFormulas,\n packageName,\n })\n break\n }\n}\nexport function* getFormulasInAction<Handler>({\n action,\n globalFormulas,\n path = [],\n visitedFormulas = new Set<string>(),\n packageName,\n}: {\n action: ActionModel | null\n globalFormulas: GlobalFormulas<Handler>\n path?: (string | number)[]\n visitedFormulas?: Set<string>\n packageName?: string\n}): Generator<{\n path: (string | number)[]\n formula: Formula\n packageName?: string\n}> {\n if (!isDefined(action)) {\n return\n }\n\n switch (action.type) {\n case 'Fetch':\n for (const [inputKey, input] of Object.entries(action.inputs ?? {})) {\n yield* getFormulasInFormula({\n formula: input.formula,\n globalFormulas,\n path: [...path, 'input', inputKey, 'formula'],\n visitedFormulas,\n packageName,\n })\n }\n for (const [key, a] of Object.entries(action.onSuccess?.actions ?? {})) {\n yield* getFormulasInAction({\n action: a,\n globalFormulas,\n path: [...path, 'onSuccess', 'actions', key],\n visitedFormulas,\n packageName,\n })\n }\n for (const [key, a] of Object.entries(action.onError?.actions ?? {})) {\n yield* getFormulasInAction({\n action: a,\n globalFormulas,\n path: [...path, 'onError', 'actions', key],\n visitedFormulas,\n packageName,\n })\n }\n for (const [key, a] of Object.entries(action.onMessage?.actions ?? {})) {\n yield* getFormulasInAction({\n action: a,\n globalFormulas,\n path: [...path, 'onMessage', 'actions', key],\n visitedFormulas,\n packageName,\n })\n }\n break\n case 'Custom':\n case undefined:\n packageName = action.package ?? packageName\n if (isFormula(action.data)) {\n yield* getFormulasInFormula({\n formula: action.data,\n globalFormulas,\n path: [...path, 'data'],\n visitedFormulas,\n packageName,\n })\n }\n for (const [key, a] of Object.entries(action.arguments ?? {})) {\n if (a) {\n yield* getFormulasInFormula({\n formula: a.formula,\n globalFormulas,\n path: [...path, 'arguments', key, 'formula'],\n visitedFormulas,\n packageName,\n })\n }\n }\n\n for (const [eventKey, event] of Object.entries(action.events ?? {})) {\n for (const [key, a] of Object.entries(event.actions ?? {})) {\n yield* getFormulasInAction({\n action: a,\n globalFormulas,\n path: [...path, 'events', eventKey, 'actions', key],\n visitedFormulas,\n packageName,\n })\n }\n }\n break\n case 'SetVariable':\n case 'TriggerEvent':\n case 'TriggerWorkflowCallback':\n yield* getFormulasInFormula({\n formula: action.data,\n globalFormulas,\n path: [...path, 'data'],\n visitedFormulas,\n packageName,\n })\n break\n case 'SetURLParameter':\n yield* getFormulasInFormula({\n formula: action.data,\n globalFormulas,\n path: [...path, 'data'],\n visitedFormulas,\n })\n break\n case 'SetURLParameters':\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n for (const [key, formula] of Object.entries(action.parameters ?? {})) {\n yield* getFormulasInFormula({\n formula,\n globalFormulas,\n path: [...path, 'parameters', key],\n visitedFormulas,\n })\n }\n break\n case 'TriggerWorkflow':\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n for (const [key, a] of Object.entries(action.parameters ?? {})) {\n if (isDefined(a.formula)) {\n yield* getFormulasInFormula({\n formula: a.formula,\n globalFormulas,\n path: [...path, 'parameters', key, 'formula'],\n visitedFormulas,\n packageName,\n })\n }\n }\n break\n case 'Switch':\n if (isDefined(action.data) && isFormula(action.data)) {\n yield* getFormulasInFormula({\n formula: action.data,\n globalFormulas,\n path: [...path, 'data'],\n visitedFormulas,\n packageName,\n })\n }\n for (const [key, c] of action.cases.entries()) {\n yield* getFormulasInFormula({\n formula: c.condition,\n globalFormulas,\n path: [...path, 'cases', key, 'condition'],\n visitedFormulas,\n packageName,\n })\n for (const [actionKey, a] of Object.entries(c.actions)) {\n yield* getFormulasInAction({\n action: a,\n globalFormulas,\n path: [...path, 'cases', key, 'actions', actionKey],\n visitedFormulas,\n packageName,\n })\n }\n }\n for (const [actionKey, a] of Object.entries(action.default.actions)) {\n yield* getFormulasInAction({\n action: a,\n globalFormulas,\n path: [...path, 'default', 'actions', actionKey],\n visitedFormulas,\n packageName,\n })\n }\n break\n }\n}\n", "import { isFormula, type Formula } from '../formula/formula'\nimport type { GlobalFormulas } from '../formula/formulaTypes'\nimport {\n getFormulasInAction,\n getFormulasInFormula,\n} from '../formula/formulaUtils'\nimport { isDefined } from '../utils/util'\nimport { type LegacyComponentAPI } from './apiTypes'\n\nexport class LegacyToddleApi<Handler> {\n private api: LegacyComponentAPI\n private key: string\n private globalFormulas: GlobalFormulas<Handler>\n private _apiReferences?: Set<string>\n\n constructor(\n api: LegacyComponentAPI,\n key: string,\n globalFormulas: GlobalFormulas<Handler>,\n ) {\n this.api = api\n this.key = key\n this.globalFormulas = globalFormulas\n }\n\n get apiReferences(): Set<string> {\n if (this._apiReferences) {\n // Only compute apiReferences once\n return this._apiReferences\n }\n const apis = new Set<string>()\n const visitFormulaReference = (formula?: Formula | null) => {\n if (!isDefined(formula)) {\n return\n }\n switch (formula.type) {\n case 'path':\n if (formula.path[0] === 'Apis') {\n const apiName = formula.path[1]\n if (typeof apiName === 'string') {\n apis.add(apiName)\n }\n }\n break\n case 'value':\n break\n case 'record':\n formula.entries.forEach((entry) =>\n visitFormulaReference(entry.formula),\n )\n break\n case 'function':\n case 'array':\n case 'or':\n case 'and':\n case 'apply':\n case 'object':\n formula.arguments?.forEach((arg) =>\n visitFormulaReference(arg.formula),\n )\n break\n case 'switch':\n formula.cases.forEach((c) => {\n visitFormulaReference(c.condition)\n visitFormulaReference(c.formula)\n })\n break\n }\n }\n visitFormulaReference(this.api.autoFetch)\n visitFormulaReference(this.api.url)\n Object.values(this.api.path ?? {}).forEach((p) =>\n visitFormulaReference(p.formula),\n )\n Object.values(this.api.queryParams ?? {}).forEach((q) =>\n visitFormulaReference(q.formula),\n )\n\n // this is supporting a few legacy cases where the whole header object was set as a formula. This is no longer possible\n if (isFormula(this.api.headers)) {\n visitFormulaReference(this.api.headers)\n } else {\n Object.values(this.api.headers ?? {}).forEach((h) => {\n visitFormulaReference(h)\n })\n }\n visitFormulaReference(this.api.body)\n this._apiReferences = apis\n return apis\n }\n\n get name() {\n return this.api.name\n }\n get type() {\n return this.api.type\n }\n get autoFetch() {\n return this.api.autoFetch\n }\n get url() {\n return this.api.url\n }\n get path() {\n return this.api.path\n }\n get proxy() {\n return this.api.proxy\n }\n get queryParams() {\n return this.api.queryParams\n }\n get headers() {\n return this.api.headers\n }\n get method() {\n return this.api.method\n }\n get body() {\n return this.api.body\n }\n get auth() {\n return this.api.auth\n }\n get throttle() {\n return this.api.throttle\n }\n get debounce() {\n return this.api.debounce\n }\n get onCompleted() {\n return this.api.onCompleted\n }\n get onFailed() {\n return this.api.onFailed\n }\n *formulasInApi(): Generator<{\n path: (string | number)[]\n formula: Formula\n packageName?: string\n }> {\n const api = this.api\n const apiKey = this.key\n yield* getFormulasInFormula({\n formula: api.autoFetch,\n globalFormulas: this.globalFormulas,\n path: ['apis', apiKey, 'autoFetch'],\n })\n yield* getFormulasInFormula({\n formula: api.url,\n globalFormulas: this.globalFormulas,\n path: ['apis', apiKey, 'url'],\n })\n for (const [pathKey, path] of Object.entries(api.path ?? {})) {\n yield* getFormulasInFormula({\n formula: path.formula,\n globalFormulas: this.globalFormulas,\n path: ['apis', apiKey, 'path', pathKey, 'formula'],\n })\n }\n for (const [queryParamKey, queryParam] of Object.entries(\n api.queryParams ?? {},\n )) {\n yield* getFormulasInFormula({\n formula: queryParam.formula,\n globalFormulas: this.globalFormulas,\n path: ['apis', apiKey, 'queryParams', queryParamKey, 'formula'],\n })\n }\n\n // this is supporting a few legacy cases where the whole header object was set as a formula. This is no longer possible\n if (isFormula(api.headers)) {\n yield* getFormulasInFormula({\n formula: api.headers,\n globalFormulas: this.globalFormulas,\n path: ['apis', apiKey, 'headers'],\n })\n } else {\n for (const [headerKey, header] of Object.entries(api.headers ?? {})) {\n yield* getFormulasInFormula({\n formula: header,\n globalFormulas: this.globalFormulas,\n path: ['apis', apiKey, 'headers', headerKey],\n })\n }\n }\n\n yield* getFormulasInFormula({\n formula: api.body,\n globalFormulas: this.globalFormulas,\n path: ['apis', apiKey, 'body'],\n })\n for (const [actionKey, action] of Object.entries(\n api.onCompleted?.actions ?? {},\n )) {\n yield* getFormulasInAction({\n action,\n globalFormulas: this.globalFormulas,\n path: ['apis', apiKey, 'onCompleted', 'actions', actionKey],\n })\n }\n for (const [actionKey, action] of Object.entries(\n api.onFailed?.actions ?? {},\n )) {\n yield* getFormulasInAction({\n action,\n globalFormulas: this.globalFormulas,\n path: ['apis', apiKey, 'onFailed', 'actions', actionKey],\n })\n }\n }\n}\n", "import type { LegacyPluginAction, PluginActionV2 } from '../types'\nimport { isDefined } from '../utils/util'\nimport type { ActionModel } from './component.types'\n\nexport function* getActionsInAction(\n action: ActionModel | null,\n path: (string | number)[] = [],\n): Generator<[(string | number)[], ActionModel]> {\n if (!isDefined(action)) {\n return\n }\n\n yield [path, action]\n switch (action.type) {\n case 'SetVariable':\n case 'SetURLParameter':\n case 'SetURLParameters':\n case 'TriggerEvent':\n case 'TriggerWorkflow':\n case 'TriggerWorkflowCallback':\n break\n case 'Fetch':\n for (const [key, a] of Object.entries(action.onSuccess?.actions ?? {})) {\n yield* getActionsInAction(a, [...path, 'onSuccess', 'actions', key])\n }\n for (const [key, a] of Object.entries(action.onError?.actions ?? {})) {\n yield* getActionsInAction(a, [...path, 'onError', 'actions', key])\n }\n for (const [key, a] of Object.entries(action.onMessage?.actions ?? {})) {\n yield* getActionsInAction(a, [...path, 'onMessage', 'actions', key])\n }\n break\n case 'Custom':\n case undefined:\n for (const [eventKey, event] of Object.entries(action.events ?? {})) {\n for (const [key, a] of Object.entries(event?.actions ?? {})) {\n yield* getActionsInAction(a, [\n ...path,\n 'events',\n eventKey,\n 'actions',\n key,\n ])\n }\n }\n break\n case 'Switch':\n for (const [key, c] of action.cases.entries()) {\n for (const [actionKey, a] of Object.entries(c?.actions ?? {})) {\n yield* getActionsInAction(a, [\n ...path,\n 'cases',\n key,\n 'actions',\n actionKey,\n ])\n }\n }\n for (const [actionKey, a] of Object.entries(action.default.actions)) {\n yield* getActionsInAction(a, [...path, 'default', 'actions', actionKey])\n }\n break\n }\n}\n\nexport const isLegacyPluginAction = (\n action: LegacyPluginAction | PluginActionV2,\n): action is LegacyPluginAction => {\n return !('version' in action)\n}\n", "import { getActionsInAction } from '../component/actionUtils'\nimport type { ActionModel } from '../component/component.types'\nimport { type Formula } from '../formula/formula'\nimport type { GlobalFormulas } from '../formula/formulaTypes'\nimport {\n getFormulasInAction,\n getFormulasInFormula,\n} from '../formula/formulaUtils'\nimport { isDefined } from '../utils/util'\nimport { HttpMethodsWithAllowedBody } from './api'\nimport { type ApiRequest } from './apiTypes'\n\nexport class ToddleApiV2<Handler> implements ApiRequest {\n private api: ApiRequest\n private _apiReferences?: Set<string>\n private key: string\n private globalFormulas: GlobalFormulas<Handler>\n\n constructor(\n api: ApiRequest,\n apiKey: string,\n globalFormulas: GlobalFormulas<Handler>,\n ) {\n this.api = api\n this.key = apiKey\n this.globalFormulas = globalFormulas\n }\n\n get apiReferences(): Set<string> {\n if (this._apiReferences) {\n // Only compute apiReferences once\n return this._apiReferences\n }\n const apis = new Set<string>()\n const visitFormulaReference = (formula?: Formula | null) => {\n if (!isDefined(formula)) {\n return\n }\n switch (formula.type) {\n case 'path':\n if (formula.path[0] === 'Apis') {\n const apiName = formula.path[1]\n if (typeof apiName === 'string') {\n apis.add(apiName)\n }\n }\n break\n case 'value':\n break\n case 'record':\n formula.entries.forEach((entry) =>\n visitFormulaReference(entry.formula),\n )\n break\n case 'function':\n case 'array':\n case 'or':\n case 'and':\n case 'apply':\n case 'object':\n formula.arguments?.forEach((arg) =>\n visitFormulaReference(arg.formula),\n )\n break\n case 'switch':\n formula.cases.forEach((c) => {\n visitFormulaReference(c.condition)\n visitFormulaReference(c.formula)\n })\n break\n }\n }\n visitFormulaReference(this.api.autoFetch)\n visitFormulaReference(this.api.url)\n Object.values(this.api.path ?? {}).forEach((p) =>\n visitFormulaReference(p.formula),\n )\n Object.values(this.api.headers ?? {}).forEach((h) =>\n visitFormulaReference(h.formula),\n )\n visitFormulaReference(this.api.body)\n Object.values(this.api.inputs).forEach((arg) =>\n visitFormulaReference(arg.formula),\n )\n Object.values(this.api.queryParams ?? {}).forEach((q) => {\n visitFormulaReference(q.formula)\n })\n visitFormulaReference(this.api.server?.proxy?.enabled?.formula)\n visitFormulaReference(this.api.server?.ssr?.enabled?.formula)\n visitFormulaReference(this.api.client?.debounce?.formula)\n Object.values(this.api.redirectRules ?? {}).forEach((rule) => {\n visitFormulaReference(rule.formula)\n })\n visitFormulaReference(this.api.isError?.formula)\n visitFormulaReference(this.api.timeout?.formula)\n // Ensure self references are not included - for instance if an API references its\n // own response in a redirect rule\n apis.delete(this.key)\n\n this._apiReferences = apis\n return apis\n }\n\n get version() {\n return this.api.version\n }\n\n get name() {\n return this.api.name\n }\n\n get type() {\n return this.api.type\n }\n\n get autoFetch() {\n return this.api.autoFetch\n }\n\n get url() {\n return this.api.url\n }\n\n get path() {\n return this.api.path\n }\n\n get headers() {\n return this.api.headers\n }\n\n set headers(headers) {\n this.api.headers = headers\n }\n\n get method() {\n return this.api.method\n }\n\n get body() {\n return this.api.body\n }\n\n get inputs() {\n return this.api.inputs\n }\n\n get queryParams() {\n return this.api.queryParams\n }\n\n get server() {\n return this.api.server\n }\n\n get client() {\n return this.api.client\n }\n\n get redirectRules() {\n return this.api.redirectRules\n }\n\n get isError() {\n return this.api.isError\n }\n\n get timeout() {\n return this.api.timeout\n }\n\n get '@nordcraft/metadata'() {\n return this.api['@nordcraft/metadata']\n }\n\n *formulasInApi(): Generator<{\n path: (string | number)[]\n formula: Formula\n packageName?: string\n }> {\n const api = this.api\n const apiKey = this.key\n for (const [input, value] of Object.entries(this.api.inputs)) {\n yield* getFormulasInFormula({\n formula: value.formula,\n globalFormulas: this.globalFormulas,\n path: ['apis', apiKey, 'inputs', input, 'formula'],\n })\n }\n yield* getFormulasInFormula({\n formula: api.autoFetch,\n globalFormulas: this.globalFormulas,\n path: ['apis', apiKey, 'autoFetch'],\n })\n yield* getFormulasInFormula({\n formula: api.url,\n globalFormulas: this.globalFormulas,\n path: ['apis', apiKey, 'url'],\n })\n for (const [pathKey, path] of Object.entries(api.path ?? {})) {\n yield* getFormulasInFormula({\n formula: path.formula,\n globalFormulas: this.globalFormulas,\n path: ['apis', apiKey, 'path', pathKey, 'formula'],\n })\n }\n for (const [queryParamKey, queryParam] of Object.entries(\n api.queryParams ?? {},\n )) {\n yield* getFormulasInFormula({\n formula: queryParam.formula,\n globalFormulas: this.globalFormulas,\n path: ['apis', apiKey, 'queryParams', queryParamKey, 'formula'],\n })\n yield* getFormulasInFormula({\n formula: queryParam.enabled,\n globalFormulas: this.globalFormulas,\n path: ['apis', apiKey, 'queryParams', queryParamKey, 'enabled'],\n })\n }\n\n for (const [headerKey, header] of Object.entries(api.headers ?? {})) {\n yield* getFormulasInFormula({\n formula: header.formula,\n globalFormulas: this.globalFormulas,\n path: ['apis', apiKey, 'headers', headerKey, 'formula'],\n })\n yield* getFormulasInFormula({\n formula: header.enabled,\n globalFormulas: this.globalFormulas,\n path: ['apis', apiKey, 'headers', headerKey, 'enabled'],\n })\n }\n\n // Only visit the body definition if the method supports having a body\n if (api.method && HttpMethodsWithAllowedBody.includes(api.method)) {\n yield* getFormulasInFormula({\n formula: api.body,\n globalFormulas: this.globalFormulas,\n path: ['apis', apiKey, 'body'],\n })\n }\n for (const [actionKey, action] of Object.entries(\n api.client?.onCompleted?.actions ?? {},\n )) {\n yield* getFormulasInAction({\n action,\n globalFormulas: this.globalFormulas,\n path: ['apis', apiKey, 'client', 'onCompleted', 'actions', actionKey],\n })\n }\n for (const [actionKey, action] of Object.entries(\n api.client?.onFailed?.actions ?? {},\n )) {\n yield* getFormulasInAction({\n action,\n globalFormulas: this.globalFormulas,\n path: ['apis', apiKey, 'client', 'onFailed', 'actions', actionKey],\n })\n }\n yield* getFormulasInFormula({\n formula: api.client?.debounce?.formula,\n globalFormulas: this.globalFormulas,\n path: ['apis', apiKey, 'client', 'debounce', 'formula'],\n })\n for (const [actionKey, action] of Object.entries(\n api.client?.onMessage?.actions ?? {},\n )) {\n yield* getFormulasInAction({\n action,\n globalFormulas: this.globalFormulas,\n path: ['apis', apiKey, 'client', 'onMessage', 'actions', actionKey],\n })\n }\n for (const [rule, value] of Object.entries(api.redirectRules ?? {})) {\n yield* getFormulasInFormula({\n formula: value.formula,\n globalFormulas: this.globalFormulas,\n path: ['apis', apiKey, 'redirectRules', rule, 'formula'],\n })\n }\n yield* getFormulasInFormula({\n formula: api.isError?.formula,\n globalFormulas: this.globalFormulas,\n path: ['apis', apiKey, 'isError', 'formula'],\n })\n yield* getFormulasInFormula({\n formula: api.timeout?.formula,\n globalFormulas: this.globalFormulas,\n path: ['apis', apiKey, 'timeout', 'formula'],\n })\n yield* getFormulasInFormula({\n formula: api.server?.proxy?.enabled.formula,\n globalFormulas: this.globalFormulas,\n path: ['apis', apiKey, 'server', 'proxy', 'enabled', 'formula'],\n })\n yield* getFormulasInFormula({\n formula: api.server?.proxy?.useTemplatesInBody?.formula,\n globalFormulas: this.globalFormulas,\n path: [\n 'apis',\n apiKey,\n 'server',\n 'proxy',\n 'useTemplatesInBody',\n 'formula',\n ],\n })\n yield* getFormulasInFormula({\n formula: api.server?.ssr?.enabled?.formula,\n globalFormulas: this.globalFormulas,\n path: ['apis', apiKey, 'server', 'ssr', 'enabled', 'formula'],\n })\n }\n\n *actionModelsInApi(): Generator<[(string | number)[], ActionModel]> {\n for (const [actionKey, action] of Object.entries(\n this.api.client?.onCompleted?.actions ?? {},\n )) {\n yield* getActionsInAction(action, [\n 'apis',\n this.key,\n 'client',\n 'onCompleted',\n 'actions',\n actionKey,\n ])\n }\n for (const [actionKey, action] of Object.entries(\n this.api.client?.onFailed?.actions ?? {},\n )) {\n yield* getActionsInAction(action, [\n 'apis',\n this.key,\n 'client',\n 'onFailed',\n 'actions',\n actionKey,\n ])\n }\n for (const [actionKey, action] of Object.entries(\n this.api.client?.onMessage?.actions ?? {},\n )) {\n yield* getActionsInAction(action, [\n 'apis',\n this.key,\n 'client',\n 'onData',\n 'actions',\n actionKey,\n ])\n }\n }\n}\n", "import type { Formula, FormulaContext } from '../formula/formula'\nimport { applyFormula } from '../formula/formula'\nimport { omitKeys, sortObjectEntries } from '../utils/collections'\nimport { hash } from '../utils/hash'\nimport { isDefined, isObject, toBoolean } from '../utils/util'\nimport type {\n ApiBase,\n ApiPerformance,\n ApiRequest,\n ComponentAPI,\n LegacyComponentAPI,\n ToddleRequestInit,\n} from './apiTypes'\nimport { ApiMethod } from './apiTypes'\nimport { isJsonHeader } from './headers'\nimport { LegacyToddleApi } from './LegacyToddleApi'\nimport { ToddleApiV2 } from './ToddleApiV2'\n\nexport const NON_BODY_RESPONSE_CODES = [101, 204, 205, 304]\n\nexport const isLegacyApi = <Handler>(\n api: ComponentAPI | LegacyToddleApi<Handler> | ToddleApiV2<Handler>,\n): api is LegacyComponentAPI | LegacyToddleApi<Handler> =>\n api instanceof LegacyToddleApi ? true : !('version' in api)\n\nexport const createApiRequest = <Handler>({\n api,\n formulaContext,\n baseUrl,\n defaultHeaders,\n}: {\n api: ApiRequest | ToddleApiV2<Handler>\n formulaContext: FormulaContext\n baseUrl?: string\n defaultHeaders: Headers | undefined\n}) => {\n const url = getUrl(api, formulaContext, baseUrl)\n const requestSettings = getRequestSettings({\n api,\n formulaContext,\n defaultHeaders,\n })\n\n return { url, requestSettings }\n}\n\nexport const getUrl = (\n api: ApiBase,\n formulaContext: FormulaContext,\n baseUrl?: string,\n): URL => {\n let urlPathname = ''\n let urlQueryParams = new URLSearchParams()\n let parsedUrl: URL | undefined\n const url = applyFormula(api.url, formulaContext)\n if (['string', 'number'].includes(typeof url)) {\n const urlInput = typeof url === 'number' ? String(url) : url\n try {\n // Try to parse the URL to extract potential path and query parameters\n parsedUrl = new URL(urlInput, baseUrl)\n urlPathname = parsedUrl.pathname\n urlQueryParams = parsedUrl.searchParams\n // eslint-disable-next-line no-empty\n } catch {}\n }\n const pathParams = getRequestPath(api.path, formulaContext)\n // Combine potential path parameters from the url declaration with the actual path parameters\n const path = `${urlPathname}${pathParams.length > 0 && !urlPathname.endsWith('/') ? '/' : ''}${pathParams}`\n // Combine potential query parameters from the url declaration with the actual query parameters\n const queryParams = new URLSearchParams([\n ...urlQueryParams,\n ...getRequestQueryParams(api.queryParams, formulaContext),\n ])\n const queryString =\n [...queryParams.entries()].length > 0 ? `?${queryParams.toString()}` : ''\n const hash = applyFormula(api.hash?.formula, formulaContext)\n const hashString =\n typeof hash === 'string' && hash.length > 0 ? `#${hash}` : ''\n if (parsedUrl) {\n const combinedUrl = new URL(parsedUrl.origin, baseUrl)\n combinedUrl.pathname = path\n combinedUrl.search = queryParams.toString()\n combinedUrl.hash = hashString\n return combinedUrl\n } else {\n return new URL(`${path}${queryString}${hashString}`, baseUrl)\n }\n}\n\nexport const HttpMethodsWithAllowedBody: ApiMethod[] = [\n ApiMethod.POST,\n ApiMethod.DELETE,\n ApiMethod.PUT,\n ApiMethod.PATCH,\n ApiMethod.OPTIONS,\n]\n\nexport const applyAbortSignal = (\n api: ApiRequest,\n requestSettings: RequestInit,\n formulaContext: FormulaContext,\n) => {\n if (api.timeout) {\n const timeout = applyFormula(api.timeout.formula, formulaContext)\n if (typeof timeout === 'number' && !Number.isNaN(timeout) && timeout > 0) {\n requestSettings.signal = AbortSignal.timeout(timeout)\n }\n }\n}\n\nconst getRequestSettings = ({\n api,\n formulaContext,\n defaultHeaders,\n}: {\n api: ApiRequest\n formulaContext: FormulaContext\n defaultHeaders: Headers | undefined\n}): ToddleRequestInit => {\n const method = Object.values(ApiMethod).includes(api.method as ApiMethod)\n ? (api.method as ApiMethod)\n : ApiMethod.GET\n const headers = getRequestHeaders({\n apiHeaders: api.headers,\n formulaContext,\n defaultHeaders,\n })\n const body = getRequestBody({ api, formulaContext, headers, method })\n if (headers.get('content-type') === 'multipart/form-data') {\n headers.delete('content-type')\n }\n\n const requestSettings: ToddleRequestInit = {\n method,\n headers,\n body,\n }\n\n applyAbortSignal(api, requestSettings, formulaContext)\n\n return requestSettings\n}\n\nexport const getRequestPath = (\n path: ApiRequest['path'],\n formulaContext: FormulaContext,\n): string =>\n sortObjectEntries(path ?? {}, ([_, p]) => p.index)\n .map(([_, p]) => applyFormula(p.formula, formulaContext))\n .join('/')\n\nexport const getRequestQueryParams = (\n params: ApiRequest['queryParams'],\n formulaContext: FormulaContext,\n): URLSearchParams => {\n const queryParams = new URLSearchParams()\n Object.entries(params ?? {}).forEach(([key, param]) => {\n const enabled = isDefined(param.enabled)\n ? applyFormula(param.enabled, formulaContext)\n : true\n if (!enabled) {\n return\n }\n\n const value = applyFormula(param.formula, formulaContext)\n if (!isDefined(value)) {\n // Ignore null/undefined values\n return\n }\n if (Array.isArray(value)) {\n // Support encoding 1-dimensional arrays\n value.forEach((v) => queryParams.append(key, String(v)))\n } else if (isObject(value)) {\n // Support encoding (nested) objects, but cast any non-object to a String\n const encodeObject = (obj: Record<string, any>, prefix: string) => {\n Object.entries(obj).forEach(([key, val]) => {\n if (!Array.isArray(val) && isObject(val)) {\n return encodeObject(val, `${prefix}[${key}]`)\n } else {\n queryParams.set(`${prefix}[${key}]`, String(val))\n }\n })\n }\n encodeObject(value, key)\n } else {\n queryParams.set(key, String(value))\n }\n })\n return queryParams\n}\n\nexport const getRequestHeaders = ({\n apiHeaders,\n formulaContext,\n defaultHeaders,\n}: {\n apiHeaders: ApiRequest['headers']\n formulaContext: FormulaContext\n defaultHeaders: Headers | undefined\n}) => {\n const headers = new Headers(defaultHeaders)\n Object.entries(apiHeaders ?? {}).forEach(([key, param]) => {\n const enabled = isDefined(param.enabled)\n ? applyFormula(param.enabled, formulaContext)\n : true\n if (enabled) {\n const value = applyFormula(param.formula, formulaContext)\n if (isDefined(value)) {\n try {\n headers.set(\n key.trim(),\n (typeof value === 'string' ? value : String(value)).trim(),\n )\n // eslint-disable-next-line no-empty\n } catch {}\n }\n }\n })\n return headers\n}\n\nexport const getBaseUrl = ({\n origin,\n url,\n}: {\n origin: string\n url?: string\n}) =>\n !isDefined(url) || url === '' || url.startsWith('/') ? origin + url : url\n\n/**\n * Calculate the hash of a Request object based on its properties\n */\nexport const requestHash = (url: URL, request: RequestInit) =>\n hash(\n JSON.stringify({\n url: url.href,\n method: request.method,\n headers: omitKeys(\n Object.fromEntries(Object.entries(request.headers ?? {})),\n ['host', 'cookie'],\n ),\n body: request.body ?? null,\n }),\n )\n\nexport const isApiError = ({\n apiName,\n response,\n formulaContext,\n errorFormula,\n performance,\n}: {\n apiName: string\n response: {\n ok: boolean\n status?: number\n headers?: Record<string, string> | null\n body: unknown\n }\n formulaContext: FormulaContext\n performance: ApiPerformance\n errorFormula?: { formula: Formula } | null\n}) => {\n const errorFormulaRes = errorFormula\n ? applyFormula(errorFormula.formula, {\n component: formulaContext.component,\n package: formulaContext.package,\n toddle: formulaContext.toddle,\n data: {\n Attributes: {},\n Args: formulaContext.data.Args,\n Apis: {\n // The errorFormula will only have access to the data of the current API\n [apiName]: {\n isLoading: false,\n data: response.body,\n error: null,\n response: {\n status: response.status,\n headers: response.headers,\n performance,\n },\n },\n },\n },\n env: formulaContext.env,\n })\n : null\n\n if (errorFormulaRes === null || errorFormulaRes === undefined) {\n return !response.ok\n }\n return toBoolean(errorFormulaRes)\n}\n\nexport const getRequestBody = ({\n api,\n formulaContext,\n headers,\n method,\n}: {\n api: ApiRequest\n formulaContext: FormulaContext\n headers: Headers\n method: ApiMethod\n}): FormData | string | undefined => {\n if (!api.body || !HttpMethodsWithAllowedBody.includes(method)) {\n return\n }\n\n const body = applyFormula(api.body, formulaContext)\n if (!body) {\n return\n }\n const contentType = headers.get('content-type')\n if (!isDefined(contentType) || isJsonHeader(contentType)) {\n // JSON.stringify the body if the content type is JSON or has not been set\n return JSON.stringify(body)\n }\n switch (contentType) {\n case 'application/x-www-form-urlencoded': {\n if (typeof body === 'object' && body !== null) {\n return Object.entries(body)\n .map(([key, value]) => {\n if (Array.isArray(value)) {\n return value\n .map(\n (v) => `${encodeURIComponent(key)}=${encodeURIComponent(v)}`,\n )\n .join('&')\n } else {\n return `${encodeURIComponent(key)}=${encodeURIComponent(\n String(value),\n )}`\n }\n })\n .join('&')\n }\n return ''\n }\n case 'multipart/form-data': {\n const formData = new FormData()\n if (typeof body === 'object' && body !== null) {\n Object.entries(body).forEach(([key, value]) => {\n formData.set(key, value as string | Blob)\n })\n }\n return formData\n }\n case 'text/plain':\n return String(body)\n default:\n // For other content types, we return the body as is\n return body\n }\n}\n\nexport const createApiEvent = (\n eventName: 'message' | 'success' | 'failed',\n detail: any,\n) => {\n return new CustomEvent(eventName, {\n detail,\n })\n}\n\nconst compareApiDependencies = <Handler>(\n a: LegacyToddleApi<Handler> | ToddleApiV2<Handler>,\n b: LegacyToddleApi<Handler> | ToddleApiV2<Handler>,\n) => {\n const isADependentOnB = a.apiReferences.has(b.name)\n const isBDependentOnA = b.apiReferences.has(a.name)\n if (isADependentOnB === isBDependentOnA) {\n return 0\n }\n // 1 means A goes last - hence B is evaluated before A\n return isADependentOnB ? 1 : -1\n}\n\nexport const sortApiObjects = <Handler>(\n apis: Array<[string, ComponentAPI]>,\n) => {\n const apiMap = new Map<\n string,\n LegacyToddleApi<Handler> | ToddleApiV2<Handler>\n >()\n const getApi = (apiObj: ComponentAPI, key: string) => {\n let api = apiMap.get(key)\n if (!api) {\n api =\n apiObj.version === 2\n ? new ToddleApiV2<Handler>(\n apiObj,\n key,\n // global formulas are not required for sorting\n {\n formulas: {},\n packages: {},\n },\n )\n : new LegacyToddleApi<Handler>(\n apiObj,\n key,\n // global formulas are not required for sorting\n {\n formulas: {},\n packages: {},\n },\n )\n apiMap.set(key, api)\n }\n return api\n }\n\n return [...apis].sort(([aKey, aObj], [bKey, bObj]) => {\n const a = getApi(aObj, aKey)\n const b = getApi(bObj, bKey)\n return compareApiDependencies(a, b)\n })\n}\n\nexport const sortApiEntries = <Handler>(\n apis: Array<[string, LegacyToddleApi<Handler> | ToddleApiV2<Handler>]>,\n) => [...apis].sort(([_, a], [__, b]) => compareApiDependencies(a, b))\n", "// cSpell: ignore phash\nconst SEED = 5381\n\n// When we have separate strings it's useful to run a progressive\n// version of djb2 where we pretend that we're still looping over\n// the same string\nconst phash = (h: number, x: string) => {\n let i = x.length\n\n while (i) {\n h = (h * 33) ^ x.charCodeAt(--i)\n }\n\n return h\n}\n\n// This is a djb2 hashing function\nexport const hash = (x: string) => {\n return phash(SEED, x)\n}\n\nconst AD_REPLACER_R = /(a)(d)/gi\n\n/* This is the \"capacity\" of our alphabet i.e. 2x26 for all letters plus their capitalized\n * counterparts */\nconst charsLength = 52\n\n/* start at 75 for 'a' until 'z' (25) and then start at 65 for capitalized letters */\nconst getAlphabeticChar = (code: number) =>\n String.fromCharCode(code + (code > 25 ? 39 : 97))\n\n/* input a number, usually a hash and convert it to base-52 */\nexport function generateAlphabeticName(code: number) {\n let name = ''\n let x\n\n /* get a char and divide by alphabet-length */\n for (x = Math.abs(code); x > charsLength; x = (x / charsLength) | 0) {\n name = getAlphabeticChar(x % charsLength) + name\n }\n\n return (getAlphabeticChar(x % charsLength) + name).replace(\n AD_REPLACER_R,\n '$1-$2',\n )\n}\n", "import { generateAlphabeticName, hash } from './hash'\n\nexport const getClassName = (object: any) => {\n return generateAlphabeticName(hash(JSON.stringify(object)))\n}\n\nexport const toValidClassName = (\n input: string,\n escapeSpecialCharacters = false,\n) => {\n // Replace invalid characters with hyphens\n let className = input\n // Remove leading and trailing whitespace\n .trim()\n // Replace whitespace with hyphens\n .replace(/\\s+/g, '-')\n\n if (escapeSpecialCharacters) {\n className = className.replace(/[^a-zA-Z0-9-_]/g, (match) => `\\\\${match}`)\n }\n\n // Ensure the class name doesn't start with a number or special character\n if (/^[^a-zA-Z]/.test(className)) {\n className = `_${className}`\n }\n\n return className\n}\n", "import type { CustomPropertyName } from '../component/component.types'\nimport { isDefined } from '../utils/util'\nimport type { CustomPropertyDefinition, Theme } from './theme'\n\n// See https://developer.mozilla.org/en-US/docs/Web/CSS/@property/syntax\nexport type CssSyntax =\n | 'angle'\n | 'color'\n | 'custom-ident'\n | 'image'\n | 'integer'\n | 'length'\n | 'length-percentage'\n | 'number'\n | 'percentage'\n | 'resolution'\n | 'string'\n | 'time'\n | 'transform-function'\n | 'transform-list'\n | 'url'\n | '*'\n\nexport type CssSyntaxNode =\n | {\n type: 'primitive'\n name: CssSyntax\n }\n | {\n type: 'keyword'\n keywords: string[]\n }\n\nexport function stringifySyntaxNode(node: CssSyntaxNode): string {\n switch (node.type) {\n case 'primitive':\n return `<${node.name}>`\n case 'keyword':\n return node.keywords.join(' | ')\n default:\n throw new Error(`Unknown syntax node type: ${(node as any).type}`)\n }\n}\n\nexport function renderSyntaxDefinition(\n key: CustomPropertyName,\n { syntax, inherits, initialValue }: CustomPropertyDefinition,\n theme: Theme,\n): string {\n let value = initialValue\n if (initialValue?.includes('var(--')) {\n value = solveVarRecursively(initialValue, theme)\n }\n\n // Fallback in-case of no reference\n if (!isDefined(value) && syntax.type === 'primitive') {\n value = FALLBACK_VALUES[syntax.name]\n }\n\n return `@property ${key} {\n syntax: \"${stringifySyntaxNode(syntax)}\";\n inherits: ${String(inherits)};\n initial-value: ${value};\n}`\n}\n\nfunction solveVarRecursively(initialValue: string, theme: Theme, depth = 0) {\n // This makes a crazy assumption that no person would create a web of style-variable referencing deeper than 256\n if (depth > 2 ** 8) {\n return null\n }\n\n const VAR_REGEX = /var\\((--[a-zA-Z0-9-_]+)\\)/g\n\n let match\n while ((match = VAR_REGEX.exec(initialValue))) {\n const varName = match[1]\n const def = theme.propertyDefinitions?.[varName as CustomPropertyName]\n if (!isDefined(def)) {\n return null\n }\n\n const value = def.initialValue\n const returnValue = initialValue.replace(match[0], String(value))\n if (returnValue.includes('var(--')) {\n return solveVarRecursively(returnValue, theme, depth + 1)\n }\n\n return returnValue\n }\n\n return null\n}\n\nconst FALLBACK_VALUES: Record<CssSyntax, string> = {\n color: 'transparent',\n length: '0px',\n 'length-percentage': '0px',\n percentage: '0%',\n number: '0',\n angle: '0deg',\n time: '0s',\n resolution: '0dpi',\n 'custom-ident': 'none',\n string: '\"\"',\n image: 'none',\n url: 'none',\n 'transform-function': 'none',\n 'transform-list': 'none',\n '*': 'initial',\n integer: '0',\n}\n\nexport const appendUnit = (value: any, unit: string | null | undefined) =>\n isDefined(value) && isDefined(unit) && !String(value).endsWith(unit)\n ? `${value}${unit}`\n : value\n", "import type { OldTheme } from './theme'\n\nexport const CUSTOM_PROPERTIES_STYLESHEET_ID = 'nc-custom-properties'\n\nexport const RESET_STYLES = `\n@layer reset {\n html {\n height:100%;\n }\n\n #App {\n height:100%;\n display:flex;\n flex-direction:column;\n }\n\n body {\n height:100%;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n margin:0;\n }\n\n [data-node-id]:not([data-unset-toddle-styles],[data-node-type=\"text\"],noscript,br,script,style,math,math *,link,template,meta,title,base), [data-node-id]:not([data-unset-toddle-styles],noscript)::before, [data-node-id]:not([data-unset-toddle-styles],noscript)::after {\n display: flex;\n flex-direction: column;\n flex-grow: 0;\n flex-shrink: 0;\n\n position: relative;\n box-sizing: border-box;\n padding: 0;\n margin: 0;\n\n font-size: var(--text-base);\n font-family: var(--font-sans);\n font-weight: var(--font-weight-normal);\n\n background: transparent;\n color: inherit;\n border: none;\n box-shadow: none;\n }\n\n [data-node-id]:not([data-unset-toddle-styles]):is(p, h1, h2, h3, h4, h5, h6, label, span, strong, b, i, address, caption, code, cite, dt, dd, em, figcaption, legend, blockquote, abbr, pre, bdo, bdi) {\n display: inline-block;\n overflow-wrap: break-word;\n color: inherit;\n }\n\n [data-node-id]:not([data-unset-toddle-styles]):is(input, button, textarea, select) {\n outline: none;\n }\n\n [data-node-id]:not([data-unset-toddle-styles]):is(a) {\n color: inherit;\n text-decoration: none;\n }\n\n [data-node-id]:not([data-unset-toddle-styles]):is(ul, ol, li) {\n list-style: none;\n }\n\n [data-node-id]:not([data-unset-toddle-styles]):is(span[data-node-type=\"text\"]) {\n font: inherit;\n display: inline;\n flex-direction: column;\n flex-grow: 0;\n flex-shrink: 0;\n box-sizing: border-box;\n }\n\n [popover]:not(:popover-open):not(dialog[open]) {\n display: revert;\n }\n}`\nexport const theme: OldTheme = {\n colors: {\n grey: {\n order: 0,\n variants: {\n '50': { order: 0, value: '#FAFAFA' },\n '100': { order: 1, value: '#F5F5F5' },\n '200': { order: 2, value: '#E5E5E5' },\n '300': { order: 3, value: '#D4D4D4' },\n '400': { order: 4, value: '#A3A3A3' },\n '500': { order: 5, value: '#737373' },\n '600': { order: 6, value: '#525252' },\n '700': { order: 7, value: '#404040' },\n '800': { order: 8, value: '#262626' },\n '900': { order: 9, value: '#171717' },\n },\n },\n red: {\n order: 1,\n variants: {\n '50': { order: 0, value: '#FEF2F2' },\n '100': { order: 1, value: '#FEE2E2' },\n '200': { order: 2, value: '#FECACA' },\n '300': { order: 3, value: '#FCA5A5' },\n '400': { order: 4, value: '#F87171' },\n '500': { order: 5, value: '#EF4444' },\n '600': { order: 6, value: '#DC2626' },\n '700': { order: 7, value: '#B91C1C' },\n '800': { order: 8, value: '#991B1B' },\n '900': { order: 9, value: '#7F1D1D' },\n },\n },\n rose: {\n order: 3,\n variants: {\n '50': { order: 0, value: '#FFF1F2' },\n '100': { order: 1, value: '#FFE4E6' },\n '200': { order: 2, value: '#FECDD3' },\n '300': { order: 3, value: '#FDA4AF' },\n '400': { order: 4, value: '#FB7185' },\n '500': { order: 5, value: '#F43F5E' },\n '600': { order: 6, value: '#E11D48' },\n '700': { order: 7, value: '#BE123C' },\n '800': { order: 8, value: '#9F1239' },\n '900': { order: 9, value: '#881337' },\n },\n },\n pink: {\n order: 4,\n variants: {\n '50': { order: 0, value: '#FDF2F8' },\n '100': { order: 1, value: '#FCE7F3' },\n '200': { order: 2, value: '#FBCFE8' },\n '300': { order: 3, value: '#F9A8D4' },\n '400': { order: 4, value: '#F472B6' },\n '500': { order: 5, value: '#EC4899' },\n '600': { order: 6, value: '#DB2777' },\n '700': { order: 7, value: '#BE185D' },\n '800': { order: 8, value: '#9D174D' },\n '900': { order: 9, value: '#831843' },\n },\n },\n amber: {\n order: 5,\n variants: {\n '50': { order: 0, value: '#FFFBEB' },\n '100': { order: 1, value: '#FEF3C7' },\n '200': { order: 2, value: '#FDE68A' },\n '300': { order: 3, value: '#FCD34D' },\n '400': { order: 4, value: '#FBBF24' },\n '500': { order: 5, value: '#F59E0B' },\n '600': { order: 6, value: '#D97706' },\n '700': { order: 7, value: '#B45309' },\n '800': { order: 8, value: '#92400E' },\n '900': { order: 9, value: '#78350F' },\n },\n },\n orange: {\n order: 6,\n variants: {\n '50': { order: 0, value: '#FFF7ED' },\n '100': { order: 1, value: '#FFEDD5' },\n '200': { order: 2, value: '#FED7AA' },\n '300': { order: 3, value: '#FDBA74' },\n '400': { order: 4, value: '#FB923C' },\n '500': { order: 5, value: '#F97316' },\n '600': { order: 6, value: '#EA580C' },\n '700': { order: 7, value: '#C2410C' },\n '800': { order: 8, value: '#9A3412' },\n '900': { order: 9, value: '#7C2D12' },\n },\n },\n yellow: {\n order: 7,\n variants: {\n '50': { order: 0, value: '#FFFBEB' },\n '100': { order: 1, value: '#FEF3C7' },\n '200': { order: 2, value: '#FDE68A' },\n '300': { order: 3, value: '#FCD34D' },\n '400': { order: 4, value: '#FBBF24' },\n '500': { order: 5, value: '#F59E0B' },\n '600': { order: 6, value: '#D97706' },\n '700': { order: 7, value: '#B45309' },\n '800': { order: 8, value: '#92400E' },\n '900': { order: 9, value: '#78350F' },\n },\n },\n lime: {\n order: 8,\n variants: {\n '50': { order: 0, value: '#F7FEE7' },\n '100': { order: 1, value: '#ECFCCB' },\n '200': { order: 2, value: '#D9F99D' },\n '300': { order: 3, value: '#BEF264' },\n '400': { order: 4, value: '#A3E635' },\n '500': { order: 5, value: '#84CC16' },\n '600': { order: 6, value: '#65A30D' },\n '700': { order: 7, value: '#4D7C0F' },\n '800': { order: 8, value: '#3F6212' },\n '900': { order: 9, value: '#365314' },\n },\n },\n green: {\n order: 9,\n variants: {\n '50': { order: 0, value: '#ECFDF5' },\n '100': { order: 1, value: '#D1FAE5' },\n '200': { order: 2, value: '#A7F3D0' },\n '300': { order: 3, value: '#6EE7B7' },\n '400': { order: 4, value: '#34D399' },\n '500': { order: 5, value: '#10B981' },\n '600': { order: 6, value: '#059669' },\n '700': { order: 7, value: '#047857' },\n '800': { order: 8, value: '#065F46' },\n '900': { order: 9, value: '#064E3B' },\n },\n },\n emerald: {\n order: 10,\n variants: {\n '50': { order: 0, value: '#ECFDF5' },\n '100': { order: 1, value: '#D1FAE5' },\n '200': { order: 2, value: '#A7F3D0' },\n '300': { order: 3, value: '#6EE7B7' },\n '400': { order: 4, value: '#34D399' },\n '500': { order: 5, value: '#10B981' },\n '600': { order: 6, value: '#059669' },\n '700': { order: 7, value: '#047857' },\n '800': { order: 8, value: '#065F46' },\n '900': { order: 9, value: '#064E3B' },\n },\n },\n teal: {\n order: 11,\n variants: {\n '50': { order: 0, value: '#F0FDFA' },\n '100': { order: 1, value: '#CCFBF1' },\n '200': { order: 2, value: '#99F6E4' },\n '300': { order: 3, value: '#5EEAD4' },\n '400': { order: 4, value: '#2DD4BF' },\n '500': { order: 5, value: '#14B8A6' },\n '600': { order: 6, value: '#0D9488' },\n '700': { order: 7, value: '#0F766E' },\n '800': { order: 8, value: '#115E59' },\n '900': { order: 9, value: '#134E4A' },\n },\n },\n cyan: {\n order: 12,\n variants: {\n '50': { order: 0, value: '#ECFEFF' },\n '100': { order: 1, value: '#CFFAFE' },\n '200': { order: 2, value: '#A5F3FC' },\n '300': { order: 3, value: '#67E8F9' },\n '400': { order: 4, value: '#22D3EE' },\n '500': { order: 5, value: '#06B6D4' },\n '600': { order: 6, value: '#0891B2' },\n '700': { order: 7, value: '#0E7490' },\n '800': { order: 8, value: '#155E75' },\n '900': { order: 9, value: '#164E63' },\n },\n },\n sky: {\n order: 13,\n variants: {\n '50': { order: 0, value: '#F0F9FF' },\n '100': { order: 1, value: '#E0F2FE' },\n '200': { order: 2, value: '#BAE6FD' },\n '300': { order: 3, value: '#7DD3FC' },\n '400': { order: 4, value: '#38BDF8' },\n '500': { order: 5, value: '#0EA5E9' },\n '600': { order: 6, value: '#0284C7' },\n '700': { order: 7, value: '#0369A1' },\n '800': { order: 8, value: '#075985' },\n '900': { order: 9, value: '#0C4A6E' },\n },\n },\n blue: {\n order: 14,\n variants: {\n '50': { order: 0, value: '#EFF6FF' },\n '100': { order: 1, value: '#DBEAFE' },\n '200': { order: 2, value: '#BFDBFE' },\n '300': { order: 3, value: '#93C5FD' },\n '400': { order: 4, value: '#60A5FA' },\n '500': { order: 5, value: '#3B82F6' },\n '600': { order: 6, value: '#2563EB' },\n '700': { order: 7, value: '#1D4ED8' },\n '800': { order: 8, value: '#1E40AF' },\n '900': { order: 9, value: '#1E3A8A' },\n },\n },\n\n indigo: {\n order: 15,\n variants: {\n '50': { order: 0, value: '#EEF2FF' },\n '100': { order: 1, value: '#E0E7FF' },\n '200': { order: 2, value: '#C7D2FE' },\n '300': { order: 3, value: '#A5B4FC' },\n '400': { order: 4, value: '#818CF8' },\n '500': { order: 5, value: '#6366F1' },\n '600': { order: 6, value: '#4F46E5' },\n '700': { order: 7, value: '#4338CA' },\n '800': { order: 8, value: '#3730A3' },\n '900': { order: 9, value: '#312E81' },\n },\n },\n\n purple: {\n order: 16,\n variants: {\n '50': { order: 0, value: '#F5F3FF' },\n '100': { order: 1, value: '#EDE9FE' },\n '200': { order: 2, value: '#DDD6FE' },\n '300': { order: 3, value: '#C4B5FD' },\n '400': { order: 4, value: '#A78BFA' },\n '500': { order: 5, value: '#8B5CF6' },\n '600': { order: 6, value: '#7C3AED' },\n '700': { order: 7, value: '#6D28D9' },\n '800': { order: 8, value: '#5B21B6' },\n '900': { order: 9, value: '#4C1D95' },\n },\n },\n\n fuchsia: {\n order: 17,\n variants: {\n '50': { order: 0, value: '#FDF4FF' },\n '100': { order: 1, value: '#FAE8FF' },\n '200': { order: 2, value: '#F5D0FE' },\n '300': { order: 3, value: '#F0ABFC' },\n '400': { order: 4, value: '#E879F9' },\n '500': { order: 5, value: '#D946EF' },\n '600': { order: 6, value: '#C026D3' },\n '700': { order: 7, value: '#A21CAF' },\n '800': { order: 8, value: '#86198F' },\n '900': { order: 9, value: '#701A75' },\n },\n },\n },\n\n shadow: {\n sm: { order: 0, value: '0 1px 2px 0 rgba(0, 0, 0, 0.25)' },\n base: {\n order: 1,\n value: '0 1px 3px 0 rgba(0, 0, 0, 0.25), 0 1px 2px 0 rgba(0, 0, 0, 0.25)',\n },\n md: {\n order: 2,\n value:\n '0 4px 6px -1px rgba(0, 0, 0, 0.25), 0 2px 4px -1px rgba(0, 0, 0, 0.25)',\n },\n lg: {\n order: 3,\n value:\n '0 10px 15px -3px rgba(0, 0, 0, 0.25), 0 4px 6px -2px rgba(0, 0, 0, 0.25)',\n },\n xl: {\n order: 4,\n value:\n '0 20px 25px -5px rgba(0, 0, 0, 0.25), 0 10px 10px -5px rgba(0, 0, 0, 0.25)',\n },\n '2xl': { order: 5, value: '0 25px 50px -12px rgba(0, 0, 0, 0.25)' },\n },\n\n spacing: 0.25,\n fontSize: {\n lg: { order: 0, value: '1.125rem' },\n sm: { order: 1, value: '0.875rem' },\n xl: { order: 2, value: '1.25rem' },\n xs: { order: 3, value: '0.75rem' },\n '2xl': { order: 4, value: '1.5rem' },\n '3xl': { order: 5, value: '1.875rem' },\n '4xl': { order: 6, value: '2.25rem' },\n '5xl': { order: 7, value: '3rem' },\n xxs: { order: 8, value: '0.625rem' },\n base: { order: 9, value: '1rem', default: true },\n },\n fontFamily: {\n mono: { order: 0, value: ['Fira Code', 'monospace'] },\n sans: { order: 1, value: ['Inter', 'sans-serif'], default: true },\n },\n fontWeight: {\n bold: { order: 0, value: '700' },\n bolder: { order: 1, value: '800' },\n normal: { order: 2, value: '500', default: true },\n regular: { order: 3, value: '400' },\n 'semi-bold': { order: 4, value: '600' },\n },\n breakpoints: {\n large: { order: 2, value: 1440 },\n small: { order: 0, value: 576 },\n medium: { order: 1, value: 960 },\n },\n}\n", "import type { CustomPropertyName } from '../component/component.types'\nimport { isDefined } from '../utils/util'\nimport { renderSyntaxDefinition, type CssSyntaxNode } from './customProperty'\nimport { RESET_STYLES } from './theme.const'\n\nexport interface ThemeOptions {\n includeResetStyle: boolean\n createFontFaces: boolean\n}\n\nexport type StyleToken = {\n name: string\n type: 'value' | 'variable'\n value: string\n}\n\nexport type StyleTokenGroup = {\n name: string\n tokens: StyleToken[]\n}\n\nexport type StyleTokenCategory =\n | 'spacing'\n | 'color'\n | 'font-size'\n | 'font-weight'\n | 'z-index'\n | 'border-radius'\n | 'shadow'\n\nexport type FontFamily = {\n name: string\n family: string\n provider: 'google' | 'upload'\n type: 'serif' | 'sans-serif' | 'monospace' | 'cursive'\n variants: Array<{\n name: string\n weight:\n | '100'\n | '200'\n | '300'\n | '400'\n | '500'\n | '600'\n | '700'\n | '800'\n | '900'\n\n italic: boolean\n url: string\n }>\n}\n\nexport type OldTheme = {\n spacing: number\n colors: Record<\n string,\n {\n order: number\n variants: Record<string, { value: string; order: number }>\n }\n >\n fontFamily: Record<\n string,\n { value: string[]; order: number; default?: boolean }\n >\n fontWeight: Record<\n string,\n { value: string; order: number; default?: boolean }\n >\n fontSize: Record<string, { value: string; order: number; default?: boolean }>\n shadow: Record<string, { value: string; order: number }>\n breakpoints: Record<string, { value: number; order: number }>\n}\n\nexport type Theme = {\n default?: string\n defaultDark?: string\n defaultLight?: string\n propertyDefinitions?: Record<CustomPropertyName, CustomPropertyDefinition>\n themes?: Record<\n string,\n {\n order?: number\n }\n >\n // Legacy support\n scheme?: 'dark' | 'light'\n color?: StyleTokenGroup[]\n fonts: FontFamily[]\n 'font-size'?: StyleTokenGroup[]\n 'font-weight'?: StyleTokenGroup[]\n spacing?: StyleTokenGroup[]\n 'border-radius'?: StyleTokenGroup[]\n shadow?: StyleTokenGroup[]\n 'z-index'?: StyleTokenGroup[]\n}\n\nexport type CustomPropertyDefinition = {\n syntax: CssSyntaxNode\n inherits: boolean\n initialValue: string | null // Required by CSS specs for default-theme, but we can do a fallback so null is allowed\n description: string\n // Values mapped to theme names.\n // Values are not required, if left out, the default theme value will be used. If no default theme value exists, initialValue will be used.\n values: Record<string, string | null>\n}\n\nexport const getThemeCss = (\n themes: Record<string, OldTheme | Theme>,\n options: ThemeOptions,\n) => {\n const [themesV1, themesV2] = Object.entries(themes).reduce(\n ([legacy, modern], [key, value]) => {\n if ('breakpoints' in value) {\n legacy[key] = value\n } else {\n modern[key] = value\n }\n return [legacy, modern]\n },\n [{}, {}] as [Record<string, OldTheme>, Record<string, Theme>],\n )\n\n return `\n ${Object.values(themesV1)\n .map((t) => getOldThemeCss(t))\n .join('\\n')}\n\n ${Object.values(themesV2)\n .map((themeV2) => {\n return `\n ${Object.entries(themeV2.propertyDefinitions ?? {})\n .map(([propertyName, property]) =>\n renderSyntaxDefinition(\n propertyName as CustomPropertyName,\n property,\n themeV2,\n ),\n )\n .join('\\n')}\n\n ${renderThemeValues(':host, :root', getThemeEntries(themeV2, themeV2.default))}\n ${renderThemeValues(':host, :root', getThemeEntries(themeV2, themeV2.defaultDark), '@media (prefers-color-scheme: dark)')}\n ${renderThemeValues(':host, :root', getThemeEntries(themeV2, themeV2.defaultLight), '@media (prefers-color-scheme: light)')}\n ${Object.entries(themeV2.themes ?? {})\n .map(([key, _t]) =>\n renderThemeValues(\n `[data-theme~=\"${key}\"]`,\n getThemeEntries(themeV2, key),\n ),\n )\n .join('\\n')}\n `\n })\n .join('\\n')}\n\n${options.includeResetStyle ? RESET_STYLES : ''}\n@layer base {\n ${\n options.createFontFaces\n ? Object.values(themesV2)\n .map(({ fonts }) => fonts)\n .flat()\n .map(\n (font) => `\n ${font.variants\n .map(\n (variant) => `\n @font-face {\n font-family: \"${font.family}\";\n font-style: ${variant.italic ? 'italic' : 'normal'};\n font-weight: ${variant.weight};\n font-display: auto;\n src: local(\"${variant.url.substring(\n variant.url.lastIndexOf('/') + 1,\n )}\"), url(\"${variant.url.replace(\n 'https://fonts.gstatic.com',\n '/.toddle/fonts/font',\n )}\") format(\"woff2\");\n }\n `,\n )\n .join('\\n')}\n `,\n )\n .join('\\n')\n : ''\n }\n body, :host {\n /* Color */\n ${Object.values(themesV2)\n .map(({ color }) => color ?? [])\n .flat()\n .flatMap((group) =>\n group.tokens.map((color) => `--${color.name}: ${color.value};`),\n )\n .join('\\n')}\n /* Fonts */\n ${Object.values(themesV2)\n .map(({ fonts }) => fonts)\n .flat()\n .map((font) => `--font-${font.name}: '${font.family}',${font.type};`)\n .join('\\n')}\n\n /* Font size */\n ${Object.values(themesV2)\n .map(({ 'font-size': fontSize }) => fontSize ?? [])\n .flat()\n .flatMap((group) =>\n group.tokens.map(\n (variable) =>\n `--${variable.name}: ${\n variable.type === 'variable'\n ? `var(--${variable.value})`\n : variable.value\n };`,\n ),\n )\n .join('\\n')}\n /* Font weight */\n ${Object.values(themesV2)\n .map(({ 'font-weight': fontWeight }) => fontWeight ?? [])\n .flat()\n .flatMap((group) => {\n return group.tokens.map(\n (variable) =>\n `--${variable.name}: ${\n variable.type === 'variable'\n ? `var(--${variable.value})`\n : variable.value\n };`,\n )\n })\n .join('\\n')}\n /* Shadows */\n ${Object.values(themesV2)\n .map(({ shadow }) => shadow ?? [])\n .flat()\n .flatMap((group) => {\n return group.tokens.map(\n (variable) =>\n `--${variable.name}: ${\n variable.type === 'variable'\n ? `var(--${variable.value})`\n : variable.value\n };`,\n )\n })\n .join('\\n')}\n /* Border radius */\n ${Object.values(themesV2)\n .map(({ 'border-radius': borderRadius }) => borderRadius ?? [])\n .flat()\n .flatMap((group) => {\n return group.tokens.map(\n (token) =>\n `--${token.name}: ${\n token.type === 'variable' ? `var(--${token.value})` : token.value\n };`,\n )\n })\n .join('\\n')}\n /* Spacing */\n ${Object.values(themesV2)\n .map(({ spacing }) => spacing ?? [])\n .flat()\n .map((group) => {\n return group.tokens\n .map(\n (token) =>\n `--${token.name}: ${\n token.type === 'variable'\n ? `var(--${token.value})`\n : token.value\n };`,\n )\n .join('\\n')\n })\n .join('\\n')}\n /* Z-index */\n ${Object.values(themesV2)\n .map(({ 'z-index': zIndex }) => zIndex ?? [])\n .flat()\n .map((group) => {\n return group.tokens\n .map(\n (token) =>\n `--${token.name}: ${\n token.type === 'variable'\n ? `var(--${token.value})`\n : token.value\n };`,\n )\n .join('\\n')\n })\n .join('\\n')}\n }\n @keyframes animation-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n }\n @keyframes animation-fade-in {\n from {\n opacity:0;\n }\n to {\n opacity:1;\n }\n }\n @keyframes animation-fade-out {\n from {\n opacity:1;\n }\n to {\n opacity:0;\n }\n }\n}\n`\n}\n\nexport const getOldThemeCss = (theme: OldTheme) => {\n const colorVars = Object.entries(theme.colors).flatMap(\n ([color, { variants }]) =>\n Object.entries(variants).map(\n ([variant, { value }]) => `--${color}-${variant}:${value}`,\n ),\n )\n return `\nbody, :host {\n ${Object.entries(theme.fontFamily)\n .map(\n ([\n name,\n {\n value: [family, ...fallback],\n },\n ]) => `--font-${name}: '${family}',${fallback.join(',')};`,\n )\n .join('\\n')}\n\n ${Object.entries(theme.fontWeight)\n .map(([name, { value }]) => `--font-weight-${name}: ${value};`)\n .join('\\n')}\n\n ${Object.entries(theme.fontSize)\n .map(([name, { value }]) => `--font-size-${name}: ${value};`)\n .join('\\n')}\n\n --spacing:${theme.spacing}rem;\n ${colorVars.join(';\\n')};\n\n --text-xxs:0.625rem;\n --line-height-xxs:0.9rem;\n\n --text-xs:0.75rem;\n --line-height-xs:1rem;\n\n --text-sm:0.875rem;\n --line-height-sm:1.25rem;\n\n --text-base:1rem;\n --line-height-base:1.5rem;\n\n --text-lg:1.125rem;\n --line-height-lg:1.75rem;\n\n --text-xl:1.25rem;\n --line-height-xl:1.75rem;\n\n --text-2xl:1.5rem;\n --line-height-2xl:2rem;\n\n --text-3xl:1.875rem;\n --line-height-3xl:2.25rem;\n\n --text-4xl:2.25rem;\n --line-height-4xl:2.5rem;\n\n --text-5xl:3rem;\n --line-height-5xl:3rem;\n\n ${Object.entries(theme.shadow)\n .map(([name, { value }]) => `--shadow-${name}:${value};`)\n .join('\\n')}\n}\n\n${RESET_STYLES}\n\n@keyframes animation-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes animation-fade-in {\n from {\n opacity:0;\n }\n to {\n opacity:1;\n }\n}\n@keyframes animation-fade-out {\n from {\n opacity:1;\n }\n to {\n opacity:0;\n }\n}`\n}\n\nexport function renderThemeValues(\n selector: string,\n entries: Record<string, string>,\n mediaQuery?: string,\n) {\n if (Object.entries(entries).length === 0) {\n return ''\n }\n\n const css = `${selector} {\n ${Object.entries(entries)\n .map(([propertyName, value]) => `${propertyName}: ${value};`)\n .join('\\n ')}\n}`\n\n if (mediaQuery) {\n return `${mediaQuery} {\n ${css}\n }`\n }\n\n return css\n}\n\nexport function getThemeEntries(\n theme: Theme,\n themeName: string | undefined,\n): Record<string, string> {\n const entries: Record<string, string> = {}\n if (!themeName) {\n return entries\n }\n\n for (const [propertyName, definition] of Object.entries(\n theme.propertyDefinitions ?? {},\n )) {\n const value = definition.values?.[themeName]\n if (!isDefined(value)) {\n continue\n }\n\n entries[propertyName] = value\n }\n\n return entries\n}\n", "import type {\n CustomProperty,\n CustomPropertyName,\n NodeStyleModel,\n} from '../component/component.types'\n\nexport type Shadow = {\n x: number\n y: number\n blur: number\n spread: number\n color: string\n inset: boolean\n}\n\nexport type Filter =\n | {\n name: 'Blur'\n radius: number\n }\n | {\n name: 'Opacity'\n percent: number\n }\n\ntype MediaQuery = {\n 'min-width'?: string\n 'max-width'?: string\n 'min-height'?: string\n 'max-height'?: string\n}\n\nexport interface StyleVariant {\n 'even-child'?: boolean\n 'first-child'?: boolean\n 'first-of-type'?: boolean\n 'focus-visible'?: boolean\n 'focus-within'?: boolean\n 'last-child'?: boolean\n 'last-of-type'?: boolean\n 'nth-child(even)'?: boolean\n 'popover-open'?: boolean\n active?: boolean\n autofill?: boolean\n breakpoint: 'small' | 'medium' | 'large'\n checked?: boolean\n class?: string\n className?: string\n customProperties?: Record<CustomPropertyName, CustomProperty>\n disabled?: boolean\n empty?: boolean\n evenChild?: boolean\n firstChild?: boolean\n focus?: boolean\n focusWithin?: boolean\n hover?: boolean\n id?: string\n invalid?: boolean\n lastChild?: boolean\n link?: boolean\n mediaQuery?: MediaQuery\n pseudoElement?: string\n startingStyle?: boolean\n style: NodeStyleModel\n visited?: boolean\n}\n\nexport const variantSelector = (variant: StyleVariant) =>\n [\n (variant.className ?? variant['class']) && `.${variant.className}`,\n (variant.evenChild ??\n variant['even-child'] ??\n variant['nth-child(even)']) &&\n ':nth-child(even)',\n (variant.firstChild ?? variant['first-child']) && ':first-child',\n (variant.focusWithin ?? variant['focus-within']) && ':focus-within',\n (variant.lastChild ?? variant['last-child']) && ':last-child',\n variant.active && ':active',\n variant.autofill && ':is(:-webkit-autofill, :autofill)',\n variant.checked && ':checked',\n variant.disabled && ':disabled',\n variant.empty && ':empty',\n variant.focus && ':focus',\n variant.hover && ':hover',\n variant.invalid && ':invalid',\n variant.link && ':link',\n variant.visited && ':visited',\n variant['first-of-type'] && ':first-of-type',\n variant['focus-visible'] && ':focus-visible',\n variant['last-of-type'] && ':last-of-type',\n variant['popover-open'] && ':popover-open',\n variant.pseudoElement && `::${variant.pseudoElement}`,\n ]\n .filter(Boolean)\n .join('')\n", "// cSpell:ignore thinn, ABCDEFGHIJKLMNOPQRSTYVWXYZ\nimport type {\n Component,\n ComponentNodeModel,\n ElementNodeModel,\n NodeStyleModel,\n} from '../component/component.types'\nimport { omitKeys } from '../utils/collections'\nimport { isDefined } from '../utils/util'\nimport { getClassName, toValidClassName } from './className'\nimport type { OldTheme, Theme, ThemeOptions } from './theme'\nimport { getThemeCss } from './theme'\nimport { variantSelector, type StyleVariant } from './variantSelector'\n\nconst LEGACY_BREAKPOINTS = {\n large: 1440,\n small: 576,\n medium: 960,\n}\n\nexport function kebabCase(string: string) {\n return string\n .split('')\n .map((char) => {\n return 'ABCDEFGHIJKLMNOPQRSTYVWXYZ'.includes(char)\n ? '-' + char.toLocaleLowerCase()\n : char\n })\n .join('')\n}\n\nconst SIZE_PROPERTIES = new Set([\n 'width',\n 'min-width',\n 'max-width',\n 'height',\n 'min-height',\n 'max-height',\n 'margin',\n 'margin-top',\n 'margin-left',\n 'margin-bottom',\n 'margin-right',\n 'padding',\n 'padding-top',\n 'padding-left',\n 'padding-bottom',\n 'padding-right',\n 'gap',\n 'gap-x',\n 'gap-y',\n 'border-radius',\n 'border-bottom-left-radius',\n 'border-bottom-right-radius',\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-width',\n 'border-top-width',\n 'border-left-width',\n 'border-bottom-width',\n 'border-right-width',\n 'font-size',\n 'top',\n 'right',\n 'bottom',\n 'left',\n 'outline-width',\n])\n\nexport const createStylesheet = (\n root: Component,\n components: Component[],\n themes: Record<string, OldTheme | Theme>,\n options: ThemeOptions,\n // eslint-disable-next-line max-params\n) => {\n const hashes = new Set<string>()\n const animationHashes = new Set<string>()\n\n // Get fonts used on the page\n const fonts = getAllFonts(components)\n\n //Exclude fonts that are not used on this page.\n let stylesheet = getThemeCss(\n Object.fromEntries(\n Object.entries(themes).map(([key, theme]) =>\n 'breakpoints' in theme\n ? [\n key,\n {\n ...theme,\n fontFamily: Object.fromEntries(\n Object.entries(theme.fontFamily).filter(\n ([key, value]) =>\n value.default ?? fonts.has('--font-' + key),\n ),\n ),\n },\n ]\n : [\n key,\n {\n ...theme,\n fonts: theme.fonts,\n },\n ],\n ),\n ),\n options,\n )\n const styleToCss = (style: NodeStyleModel) => {\n return Object.entries(style)\n .map(([property, value]) => {\n if (!isDefined(value)) {\n // ignore undefined/null values\n return\n }\n const propertyName = kebabCase(property)\n const propertyValue =\n String(Number(value)) === String(value) &&\n SIZE_PROPERTIES.has(propertyName)\n ? `${Number(value) * 4}px`\n : value\n return `${propertyName}:${propertyValue};`\n })\n .filter(Boolean)\n .join('\\n ')\n }\n const getNodeStyles = (\n node: ElementNodeModel | ComponentNodeModel,\n classHash: string,\n ) => {\n try {\n const style = omitKeys(node.style ?? {}, [\n 'variants',\n 'breakpoints',\n 'shadows',\n ])\n const styleVariants =\n node.variants ??\n // Support for old style variants stored inside style object\n // Once we have better versioning options, this should be removed\n (node.style?.variants as any as StyleVariant[])\n const renderVariant = (\n selector: string,\n style: NodeStyleModel,\n options?: { startingStyle?: boolean },\n ) => {\n const scrollbarStyles = Object.entries(style).filter(\n ([key]) => key === 'scrollbar-width',\n )\n // If selectorCss is empty, we don't need to render the selector\n let styles = styleToCss(style)\n if (options?.startingStyle) {\n styles = `@starting-style {\n ${styles}\n }`\n }\n\n return `\n ${\n styles.length > 0\n ? `${selector} {\n ${styles}\n }`\n : ''\n }\n ${\n scrollbarStyles.length > 0\n ? `\n${selector}::-webkit-scrollbar {\n ${scrollbarStyles\n .map(([_, value]) => {\n switch (value) {\n case 'none':\n return 'width: 0;'\n case 'thinn':\n case 'thin':\n return 'width: 4px;'\n default:\n return ''\n }\n })\n .join('\\n')}\n}\n`\n : ''\n }\n`\n }\n\n return `\n ${renderVariant('.' + classHash, style)}\n ${(styleVariants ?? [])\n .map((variant) => {\n const renderedVariant = renderVariant(\n `.${classHash}${variantSelector(variant)}`,\n variant.style,\n {\n startingStyle: variant.startingStyle,\n },\n )\n\n if (variant.mediaQuery) {\n return `\n @media (${Object.entries(variant.mediaQuery)\n .map(([key, value]) => `${key}: ${value}`)\n .filter(Boolean)\n .join(') and (')}) {\n ${renderedVariant}\n }\n `\n }\n\n if (variant.breakpoint) {\n return `\n @media (min-width: ${LEGACY_BREAKPOINTS[variant.breakpoint]}px) {\n ${renderedVariant}\n }\n `\n }\n\n return renderedVariant\n })\n .join('\\n')}\n ${\n node.animations\n ? Object.entries(node.animations)\n .map(([animationName, keyframes]) => {\n // Animation names are stored by their hash, so no need to render them more than once.\n if (animationHashes.has(animationName)) {\n return ''\n }\n animationHashes.add(animationName)\n return `\n @keyframes ${animationName} {\n ${Object.values(keyframes)\n .sort((a, b) => a.position - b.position)\n .map(({ key, position, value }) => {\n return `\n ${position * 100}% {\n ${key}: ${value};\n }\n `\n })\n .join('\\n')}\n }\n `\n })\n .join('\\n')\n : ''\n }\n `\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(e)\n return ''\n }\n }\n\n // Make sure that CSS for dependencies are rendered first so that instance styles can override\n const visitedComponents = new Set<string>()\n function insertComponentStyles(\n component: Component,\n package_name?: string,\n ): string | undefined {\n if (visitedComponents.has(component.name)) {\n return\n }\n visitedComponents.add(component.name)\n if (!component.nodes) {\n // eslint-disable-next-line no-console\n console.warn('Unable to find nodes for component', component.name)\n return\n }\n Object.entries(component.nodes).forEach(([id, node]) => {\n if (node.type === 'component') {\n const childComponent = components.find(\n (c) =>\n c.name ===\n [node.package ?? package_name, node.name]\n .filter((c) => c)\n .join('/'),\n )\n if (childComponent) {\n insertComponentStyles(childComponent, node.package ?? package_name)\n stylesheet += getNodeStyles(\n node as any,\n toValidClassName(`${component.name}:${id}`, true),\n )\n\n return\n }\n }\n if (node.type !== 'element') {\n return\n }\n const classHash = getClassName([node.style, node.variants])\n if (hashes.has(classHash)) {\n return ''\n }\n hashes.add(classHash)\n stylesheet += getNodeStyles(node as any, classHash)\n })\n }\n insertComponentStyles(root)\n\n return stylesheet\n}\n\nexport const getAllFonts = (components: Component[]) => {\n return new Set(\n components\n .flatMap((component) => {\n return Object.values(component.nodes).flatMap((node) => {\n if (node.type === 'element') {\n return [\n node.style?.fontFamily,\n node.style?.['font-family'],\n ...(node.variants?.map(\n (v) => v.style.fontFamily ?? v.style['font-family'],\n ) ?? []),\n ].filter(isDefined)\n }\n return []\n })\n })\n .map((f) => f.replace('var(', '').replace(')', '').replace(/'/g, '')),\n )\n}\n", "import type { ContextApi, ContextApiV2 } from '../types'\n\nexport const isContextApiV2 = (api: ContextApi): api is ContextApiV2 =>\n 'triggerActions' in api\n", "/* eslint-disable no-console */\nimport type {\n ActionModel,\n ComponentData,\n SetMultiUrlParameterAction,\n SetURLParameterAction,\n} from '@nordcraft/core/dist/component/component.types'\nimport { applyFormula } from '@nordcraft/core/dist/formula/formula'\nimport { mapValues, omitKeys } from '@nordcraft/core/dist/utils/collections'\nimport { isDefined, toBoolean } from '@nordcraft/core/dist/utils/util'\nimport fastDeepEqual from 'fast-deep-equal'\nimport { isContextApiV2 } from '../api/apiUtils'\nimport type { ComponentContext, Location } from '../types'\nimport { getLocationUrl } from '../utils/url'\n\n// eslint-disable-next-line max-params\nexport function handleAction(\n action: ActionModel,\n data: ComponentData,\n ctx: ComponentContext,\n event?: Event,\n workflowCallback?: (event: string, data: unknown) => void,\n) {\n try {\n if (!action) {\n throw new Error('Action does not exist')\n }\n switch (action.type) {\n case 'Switch': {\n // find the first case that resolves to true.\n // Only one case in a switch will be executed.\n const actionList =\n action.cases.find(({ condition }) =>\n toBoolean(\n applyFormula(condition, {\n data,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n }),\n ),\n ) ?? action.default\n if (!actionList) {\n return\n }\n // handle all actions for the case\n for (const action of actionList.actions) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handleAction(\n action,\n { ...data, ...ctx.dataSignal.get() },\n ctx,\n event,\n workflowCallback,\n )\n }\n break\n }\n case 'SetVariable': {\n const value = applyFormula(action.data, {\n data,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n })\n ctx.dataSignal.update((data) => {\n return {\n ...data,\n Variables: {\n ...data.Variables,\n [action.variable]: value,\n },\n }\n })\n break\n }\n case 'TriggerEvent': {\n const payload = applyFormula(action.data, {\n data,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n })\n ctx.triggerEvent(action.event, payload)\n break\n }\n case 'TriggerWorkflowCallback': {\n const payload = applyFormula(action.data, {\n data,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n })\n workflowCallback?.(action.event, payload)\n break\n }\n case 'SetURLParameter': {\n ctx.toddle.locationSignal.update((current) => {\n const value = applyFormula(action.data, {\n data,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n })\n // historyMode was previously not declared explicitly, and we default\n // to push for state changes and replace for query changes\n let historyMode: SetURLParameterAction['historyMode'] | undefined\n let newLocation: Location | undefined\n // We should only match on p.type === 'param', but\n // that would technically be a breaking change\n if (current.route?.path.some((p) => p.name === action.parameter)) {\n historyMode = 'push'\n newLocation = {\n ...current,\n params: {\n ...omitKeys(current.params, [action.parameter]),\n [action.parameter]: value,\n },\n }\n }\n // We should check if the query parameter exists in the route\n // but that would technically be a breaking change\n // else if (Object.values(current.route?.query ?? {}).some((q) => q.name === action.parameter))\n else {\n historyMode = 'replace'\n newLocation = {\n ...current,\n query: {\n ...omitKeys(current.query, [action.parameter]),\n ...(isDefined(value) ? { [action.parameter]: value } : null),\n },\n }\n }\n if (!historyMode) {\n // No path/query parameter matched\n return current\n }\n\n const currentUrl = getLocationUrl(current)\n const historyUrl = getLocationUrl(newLocation)\n if (historyUrl !== currentUrl) {\n // Default to the historyMode from the action, and fallback\n // to the default (push for path change, replace for query change)\n historyMode = action.historyMode ?? historyMode\n // Update the window's history state\n if (historyMode === 'push') {\n window.history.pushState({}, '', historyUrl)\n } else {\n window.history.replaceState({}, '', historyUrl)\n }\n }\n return newLocation\n })\n break\n }\n case 'SetURLParameters': {\n const parameters = Object.entries(action.parameters ?? {})\n if (parameters.length === 0) {\n return\n }\n ctx.toddle.locationSignal.update((current) => {\n if (!current.route) {\n // A route must exist for us to update/validate against it\n return current\n }\n // We default to push for state changes and replace for query changes\n let historyMode: SetMultiUrlParameterAction['historyMode'] = 'replace'\n const queryUpdates: Record<string, string> = {}\n const pathUpdates: Record<string, string> = {}\n const urlParameterCtx = {\n data,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n }\n // Only match on p.type === 'param'\n const isValidPathParameter = (param: string) =>\n current.route?.path.some(\n (p) => p.name === param && p.type === 'param',\n )\n const isValidQueryParameter = (param: string) =>\n Object.values(current.route?.query ?? {}).some(\n (q) => q.name === param,\n )\n\n for (const [parameter, formula] of parameters) {\n const value = applyFormula(formula, urlParameterCtx) ?? null\n if (isValidPathParameter(parameter)) {\n historyMode = 'push'\n pathUpdates[parameter] = value as string\n } else if (isValidQueryParameter(parameter)) {\n queryUpdates[parameter] = value as string\n }\n }\n if (\n Object.keys(pathUpdates).length === 0 &&\n Object.keys(queryUpdates).length === 0\n ) {\n // No path/query parameter matched\n // We'll exit early to avoid deep equal below\n return current\n }\n\n const newLocation = {\n ...current,\n params: {\n ...omitKeys(current.params, Object.keys(pathUpdates)),\n ...pathUpdates,\n },\n query: {\n ...omitKeys(current.query, Object.keys(queryUpdates)),\n ...queryUpdates,\n },\n }\n if (fastDeepEqual(newLocation, current)) {\n // No path/query parameter matched\n return current\n }\n\n const currentUrl = getLocationUrl(current)\n const historyUrl = getLocationUrl(newLocation)\n if (historyUrl !== currentUrl) {\n // Default to the historyMode from the action, and fallback\n // to the default (push for path change, replace for query change)\n historyMode = action.historyMode ?? historyMode\n // Update the window's history state\n if (historyMode === 'push') {\n window.history.pushState({}, '', historyUrl)\n } else {\n window.history.replaceState({}, '', historyUrl)\n }\n }\n return newLocation\n })\n break\n }\n case 'Fetch': {\n const api = ctx.apis[action.api]\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!api) {\n console.error('The api ', action.api, 'does not exist')\n return\n }\n\n if (isContextApiV2(api)) {\n // Evaluate potential inputs here to make sure the api have the right values\n // This is needed if the inputs are formulas referencing workflow parameters\n const actionInputs = mapValues(action.inputs ?? {}, (input) =>\n applyFormula(input.formula, {\n data,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n }),\n )\n const actionModels = {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n onCompleted: action.onSuccess?.actions ?? [],\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n onFailed: action.onError?.actions ?? [],\n onMessage: action.onMessage?.actions ?? [],\n }\n void api.fetch({\n actionInputs,\n actionModels,\n componentData: data,\n workflowCallback,\n })\n } else {\n const triggerActions = (actions: ActionModel[]) => {\n for (const subAction of actions) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handleAction(\n subAction,\n { ...data, ...ctx.dataSignal.get() },\n ctx,\n event,\n workflowCallback,\n )\n }\n }\n api.fetch().then(\n () => {\n triggerActions(action.onSuccess.actions)\n },\n () => {\n triggerActions(action.onError.actions)\n },\n )\n }\n\n break\n }\n case 'TriggerWorkflow': {\n const parameters = mapValues(action.parameters ?? {}, (parameter) =>\n applyFormula(parameter.formula, {\n data,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n }),\n )\n const callbacks = action.callbacks\n if (action.contextProvider) {\n const provider =\n ctx.providers[\n [ctx.package, action.contextProvider].filter(isDefined).join('/')\n ] ?? ctx.providers[action.contextProvider]\n const workflow = provider?.component.workflows?.[action.workflow]\n if (!workflow) {\n if (provider) {\n console.warn(\n `Cannot find workflow \"${action.workflow}\" on component \"${action.contextProvider}\". It has likely been removed or modified.`,\n )\n }\n return\n }\n\n workflow.actions.forEach((action) =>\n handleAction(\n action,\n {\n ...data,\n ...provider.ctx.dataSignal.get(),\n Parameters: parameters,\n },\n provider.ctx,\n event,\n (callbackName, callbackData) => {\n const callback = callbacks?.[callbackName]\n callback?.actions?.forEach((action) =>\n handleAction(\n action,\n {\n ...data,\n ...ctx.dataSignal.get(),\n Parameters: parameters,\n Event: callbackData,\n },\n ctx,\n event,\n workflowCallback,\n ),\n )\n },\n ),\n )\n return\n }\n\n const workflow = ctx.component.workflows?.[action.workflow]\n if (!workflow) {\n console.warn(\n `Workflow ${action.workflow} does not exist on component ${ctx.component.name}`,\n )\n return\n }\n\n workflow.actions.forEach((action) =>\n handleAction(\n action,\n {\n ...data,\n ...ctx.dataSignal.get(),\n Parameters: parameters,\n },\n ctx,\n event,\n (callbackName, callbackData) => {\n const callback = callbacks?.[callbackName]\n callback?.actions?.forEach((action) =>\n handleAction(\n action,\n {\n ...data,\n ...ctx.dataSignal.get(),\n Parameters: parameters,\n Event: callbackData,\n },\n ctx,\n event,\n workflowCallback,\n ),\n )\n },\n ),\n )\n break\n }\n default: {\n try {\n // create a handler for actions triggering events\n const triggerActionEvent = (trigger: string, eventData: any) => {\n const subEvent = action.events?.[trigger]\n if (subEvent) {\n subEvent.actions.forEach((action) =>\n handleAction(\n action,\n eventData\n ? { ...data, ...ctx.dataSignal.get(), Event: eventData }\n : { ...data, ...ctx.dataSignal.get() },\n ctx,\n eventData ?? event,\n workflowCallback,\n ),\n )\n }\n }\n const newAction =\n action.version === 2\n ? (ctx.toddle.getCustomAction ?? ctx.toddle.getCustomAction)(\n action.name,\n action.package ?? ctx.package,\n )\n : undefined\n if (newAction) {\n // First evaluate any arguments (input) to the action\n const args = (action.arguments ?? []).reduce<\n Record<string, unknown>\n >(\n (args, arg) =>\n arg\n ? {\n ...args,\n [arg.name]: applyFormula(arg.formula, {\n data,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n }),\n }\n : args,\n {},\n )\n const result = newAction.handler?.(\n args,\n {\n root: ctx.root,\n triggerActionEvent,\n },\n event,\n )\n // If the result is a function, then it should behave as a cleanup function, that runs, usually when the component is unmounted.\n // Useful for removeEventListeners, clearTimeout, etc.\n if (\n result &&\n (typeof result === 'function' || result instanceof Promise)\n ) {\n ctx.dataSignal.subscribe((data) => data, {\n destroy: () => {\n if (result instanceof Promise) {\n result\n .then((cleanup) => {\n if (typeof cleanup === 'function') {\n cleanup()\n }\n })\n .catch((err) => console.error(err))\n } else {\n result()\n }\n },\n })\n }\n\n return result\n } else {\n const legacyHandler = ctx.toddle.getAction(action.name)\n if (!legacyHandler) {\n console.error('Missing custom action', action.name)\n return\n }\n // First evaluate any arguments (input) to the action\n const args = action.arguments?.map((arg) =>\n applyFormula(arg?.formula, {\n data,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n }),\n ) ?? [\n applyFormula(action.data, {\n data,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n }),\n ] // action.data is a fallback to handle an older version of the action spec.\n return legacyHandler(args, { ...ctx, triggerActionEvent }, event)\n }\n } catch (err) {\n console.error('Error in Custom Action', err)\n }\n }\n }\n } catch (e) {\n console.error(e)\n return null\n }\n}\n", "/**\n * Tokenizer results.\n */\ninterface LexToken {\n type:\n | \"OPEN\"\n | \"CLOSE\"\n | \"PATTERN\"\n | \"NAME\"\n | \"CHAR\"\n | \"ESCAPED_CHAR\"\n | \"MODIFIER\"\n | \"END\";\n index: number;\n value: string;\n}\n\n/**\n * Tokenize input string.\n */\nfunction lexer(str: string): LexToken[] {\n const tokens: LexToken[] = [];\n let i = 0;\n\n while (i < str.length) {\n const char = str[i];\n\n if (char === \"*\" || char === \"+\" || char === \"?\") {\n tokens.push({ type: \"MODIFIER\", index: i, value: str[i++] });\n continue;\n }\n\n if (char === \"\\\\\") {\n tokens.push({ type: \"ESCAPED_CHAR\", index: i++, value: str[i++] });\n continue;\n }\n\n if (char === \"{\") {\n tokens.push({ type: \"OPEN\", index: i, value: str[i++] });\n continue;\n }\n\n if (char === \"}\") {\n tokens.push({ type: \"CLOSE\", index: i, value: str[i++] });\n continue;\n }\n\n if (char === \":\") {\n let name = \"\";\n let j = i + 1;\n\n while (j < str.length) {\n const code = str.charCodeAt(j);\n\n if (\n // `0-9`\n (code >= 48 && code <= 57) ||\n // `A-Z`\n (code >= 65 && code <= 90) ||\n // `a-z`\n (code >= 97 && code <= 122) ||\n // `_`\n code === 95\n ) {\n name += str[j++];\n continue;\n }\n\n break;\n }\n\n if (!name) throw new TypeError(`Missing parameter name at ${i}`);\n\n tokens.push({ type: \"NAME\", index: i, value: name });\n i = j;\n continue;\n }\n\n if (char === \"(\") {\n let count = 1;\n let pattern = \"\";\n let j = i + 1;\n\n if (str[j] === \"?\") {\n throw new TypeError(`Pattern cannot start with \"?\" at ${j}`);\n }\n\n while (j < str.length) {\n if (str[j] === \"\\\\\") {\n pattern += str[j++] + str[j++];\n continue;\n }\n\n if (str[j] === \")\") {\n count--;\n if (count === 0) {\n j++;\n break;\n }\n } else if (str[j] === \"(\") {\n count++;\n if (str[j + 1] !== \"?\") {\n throw new TypeError(`Capturing groups are not allowed at ${j}`);\n }\n }\n\n pattern += str[j++];\n }\n\n if (count) throw new TypeError(`Unbalanced pattern at ${i}`);\n if (!pattern) throw new TypeError(`Missing pattern at ${i}`);\n\n tokens.push({ type: \"PATTERN\", index: i, value: pattern });\n i = j;\n continue;\n }\n\n tokens.push({ type: \"CHAR\", index: i, value: str[i++] });\n }\n\n tokens.push({ type: \"END\", index: i, value: \"\" });\n\n return tokens;\n}\n\nexport interface ParseOptions {\n /**\n * Set the default delimiter for repeat parameters. (default: `'/'`)\n */\n delimiter?: string;\n /**\n * List of characters to automatically consider prefixes when parsing.\n */\n prefixes?: string;\n}\n\n/**\n * Parse a string for the raw tokens.\n */\nexport function parse(str: string, options: ParseOptions = {}): Token[] {\n const tokens = lexer(str);\n const { prefixes = \"./\", delimiter = \"/#?\" } = options;\n const result: Token[] = [];\n let key = 0;\n let i = 0;\n let path = \"\";\n\n const tryConsume = (type: LexToken[\"type\"]): string | undefined => {\n if (i < tokens.length && tokens[i].type === type) return tokens[i++].value;\n };\n\n const mustConsume = (type: LexToken[\"type\"]): string => {\n const value = tryConsume(type);\n if (value !== undefined) return value;\n const { type: nextType, index } = tokens[i];\n throw new TypeError(`Unexpected ${nextType} at ${index}, expected ${type}`);\n };\n\n const consumeText = (): string => {\n let result = \"\";\n let value: string | undefined;\n while ((value = tryConsume(\"CHAR\") || tryConsume(\"ESCAPED_CHAR\"))) {\n result += value;\n }\n return result;\n };\n\n const isSafe = (value: string): boolean => {\n for (const char of delimiter) if (value.indexOf(char) > -1) return true;\n return false;\n };\n\n const safePattern = (prefix: string) => {\n const prev = result[result.length - 1];\n const prevText = prefix || (prev && typeof prev === \"string\" ? prev : \"\");\n\n if (prev && !prevText) {\n throw new TypeError(\n `Must have text between two parameters, missing text after \"${(prev as Key).name}\"`,\n );\n }\n\n if (!prevText || isSafe(prevText)) return `[^${escapeString(delimiter)}]+?`;\n return `(?:(?!${escapeString(prevText)})[^${escapeString(delimiter)}])+?`;\n };\n\n while (i < tokens.length) {\n const char = tryConsume(\"CHAR\");\n const name = tryConsume(\"NAME\");\n const pattern = tryConsume(\"PATTERN\");\n\n if (name || pattern) {\n let prefix = char || \"\";\n\n if (prefixes.indexOf(prefix) === -1) {\n path += prefix;\n prefix = \"\";\n }\n\n if (path) {\n result.push(path);\n path = \"\";\n }\n\n result.push({\n name: name || key++,\n prefix,\n suffix: \"\",\n pattern: pattern || safePattern(prefix),\n modifier: tryConsume(\"MODIFIER\") || \"\",\n });\n continue;\n }\n\n const value = char || tryConsume(\"ESCAPED_CHAR\");\n if (value) {\n path += value;\n continue;\n }\n\n if (path) {\n result.push(path);\n path = \"\";\n }\n\n const open = tryConsume(\"OPEN\");\n if (open) {\n const prefix = consumeText();\n const name = tryConsume(\"NAME\") || \"\";\n const pattern = tryConsume(\"PATTERN\") || \"\";\n const suffix = consumeText();\n\n mustConsume(\"CLOSE\");\n\n result.push({\n name: name || (pattern ? key++ : \"\"),\n pattern: name && !pattern ? safePattern(prefix) : pattern,\n prefix,\n suffix,\n modifier: tryConsume(\"MODIFIER\") || \"\",\n });\n continue;\n }\n\n mustConsume(\"END\");\n }\n\n return result;\n}\n\nexport interface TokensToFunctionOptions {\n /**\n * When `true` the regexp will be case sensitive. (default: `false`)\n */\n sensitive?: boolean;\n /**\n * Function for encoding input strings for output.\n */\n encode?: (value: string, token: Key) => string;\n /**\n * When `false` the function can produce an invalid (unmatched) path. (default: `true`)\n */\n validate?: boolean;\n}\n\n/**\n * Compile a string to a template function for the path.\n */\nexport function compile<P extends object = object>(\n str: string,\n options?: ParseOptions & TokensToFunctionOptions,\n) {\n return tokensToFunction<P>(parse(str, options), options);\n}\n\nexport type PathFunction<P extends object = object> = (data?: P) => string;\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nexport function tokensToFunction<P extends object = object>(\n tokens: Token[],\n options: TokensToFunctionOptions = {},\n): PathFunction<P> {\n const reFlags = flags(options);\n const { encode = (x: string) => x, validate = true } = options;\n\n // Compile all the tokens into regexps.\n const matches = tokens.map((token) => {\n if (typeof token === \"object\") {\n return new RegExp(`^(?:${token.pattern})$`, reFlags);\n }\n });\n\n return (data: Record<string, any> | null | undefined) => {\n let path = \"\";\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n\n if (typeof token === \"string\") {\n path += token;\n continue;\n }\n\n const value = data ? data[token.name] : undefined;\n const optional = token.modifier === \"?\" || token.modifier === \"*\";\n const repeat = token.modifier === \"*\" || token.modifier === \"+\";\n\n if (Array.isArray(value)) {\n if (!repeat) {\n throw new TypeError(\n `Expected \"${token.name}\" to not repeat, but got an array`,\n );\n }\n\n if (value.length === 0) {\n if (optional) continue;\n\n throw new TypeError(`Expected \"${token.name}\" to not be empty`);\n }\n\n for (let j = 0; j < value.length; j++) {\n const segment = encode(value[j], token);\n\n if (validate && !(matches[i] as RegExp).test(segment)) {\n throw new TypeError(\n `Expected all \"${token.name}\" to match \"${token.pattern}\", but got \"${segment}\"`,\n );\n }\n\n path += token.prefix + segment + token.suffix;\n }\n\n continue;\n }\n\n if (typeof value === \"string\" || typeof value === \"number\") {\n const segment = encode(String(value), token);\n\n if (validate && !(matches[i] as RegExp).test(segment)) {\n throw new TypeError(\n `Expected \"${token.name}\" to match \"${token.pattern}\", but got \"${segment}\"`,\n );\n }\n\n path += token.prefix + segment + token.suffix;\n continue;\n }\n\n if (optional) continue;\n\n const typeOfMessage = repeat ? \"an array\" : \"a string\";\n throw new TypeError(`Expected \"${token.name}\" to be ${typeOfMessage}`);\n }\n\n return path;\n };\n}\n\nexport interface RegexpToFunctionOptions {\n /**\n * Function for decoding strings for params.\n */\n decode?: (value: string, token: Key) => string;\n}\n\n/**\n * A match result contains data about the path match.\n */\nexport interface MatchResult<P extends object = object> {\n path: string;\n index: number;\n params: P;\n}\n\n/**\n * A match is either `false` (no match) or a match result.\n */\nexport type Match<P extends object = object> = false | MatchResult<P>;\n\n/**\n * The match function takes a string and returns whether it matched the path.\n */\nexport type MatchFunction<P extends object = object> = (\n path: string,\n) => Match<P>;\n\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nexport function match<P extends object = object>(\n str: Path,\n options?: ParseOptions & TokensToRegexpOptions & RegexpToFunctionOptions,\n) {\n const keys: Key[] = [];\n const re = pathToRegexp(str, keys, options);\n return regexpToFunction<P>(re, keys, options);\n}\n\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nexport function regexpToFunction<P extends object = object>(\n re: RegExp,\n keys: Key[],\n options: RegexpToFunctionOptions = {},\n): MatchFunction<P> {\n const { decode = (x: string) => x } = options;\n\n return function (pathname: string) {\n const m = re.exec(pathname);\n if (!m) return false;\n\n const { 0: path, index } = m;\n const params = Object.create(null);\n\n for (let i = 1; i < m.length; i++) {\n if (m[i] === undefined) continue;\n\n const key = keys[i - 1];\n\n if (key.modifier === \"*\" || key.modifier === \"+\") {\n params[key.name] = m[i].split(key.prefix + key.suffix).map((value) => {\n return decode(value, key);\n });\n } else {\n params[key.name] = decode(m[i], key);\n }\n }\n\n return { path, index, params };\n };\n}\n\n/**\n * Escape a regular expression string.\n */\nfunction escapeString(str: string) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\n\n/**\n * Get the flags for a regexp from the options.\n */\nfunction flags(options?: { sensitive?: boolean }) {\n return options && options.sensitive ? \"\" : \"i\";\n}\n\n/**\n * Metadata about a key.\n */\nexport interface Key {\n name: string | number;\n prefix: string;\n suffix: string;\n pattern: string;\n modifier: string;\n}\n\n/**\n * A token is a string (nothing special) or key metadata (capture group).\n */\nexport type Token = string | Key;\n\n/**\n * Pull out keys from a regexp.\n */\nfunction regexpToRegexp(path: RegExp, keys?: Key[]): RegExp {\n if (!keys) return path;\n\n const groupsRegex = /\\((?:\\?<(.*?)>)?(?!\\?)/g;\n\n let index = 0;\n let execResult = groupsRegex.exec(path.source);\n while (execResult) {\n keys.push({\n // Use parenthesized substring match if available, index otherwise\n name: execResult[1] || index++,\n prefix: \"\",\n suffix: \"\",\n modifier: \"\",\n pattern: \"\",\n });\n execResult = groupsRegex.exec(path.source);\n }\n\n return path;\n}\n\n/**\n * Transform an array into a regexp.\n */\nfunction arrayToRegexp(\n paths: Array<string | RegExp>,\n keys?: Key[],\n options?: TokensToRegexpOptions & ParseOptions,\n): RegExp {\n const parts = paths.map((path) => pathToRegexp(path, keys, options).source);\n return new RegExp(`(?:${parts.join(\"|\")})`, flags(options));\n}\n\n/**\n * Create a path regexp from string input.\n */\nfunction stringToRegexp(\n path: string,\n keys?: Key[],\n options?: TokensToRegexpOptions & ParseOptions,\n) {\n return tokensToRegexp(parse(path, options), keys, options);\n}\n\nexport interface TokensToRegexpOptions {\n /**\n * When `true` the regexp will be case sensitive. (default: `false`)\n */\n sensitive?: boolean;\n /**\n * When `true` the regexp won't allow an optional trailing delimiter to match. (default: `false`)\n */\n strict?: boolean;\n /**\n * When `true` the regexp will match to the end of the string. (default: `true`)\n */\n end?: boolean;\n /**\n * When `true` the regexp will match from the beginning of the string. (default: `true`)\n */\n start?: boolean;\n /**\n * Sets the final character for non-ending optimistic matches. (default: `/`)\n */\n delimiter?: string;\n /**\n * List of characters that can also be \"end\" characters.\n */\n endsWith?: string;\n /**\n * Encode path tokens for use in the `RegExp`.\n */\n encode?: (value: string) => string;\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n */\nexport function tokensToRegexp(\n tokens: Token[],\n keys?: Key[],\n options: TokensToRegexpOptions = {},\n) {\n const {\n strict = false,\n start = true,\n end = true,\n encode = (x: string) => x,\n delimiter = \"/#?\",\n endsWith = \"\",\n } = options;\n const endsWithRe = `[${escapeString(endsWith)}]|$`;\n const delimiterRe = `[${escapeString(delimiter)}]`;\n let route = start ? \"^\" : \"\";\n\n // Iterate over the tokens and create our regexp string.\n for (const token of tokens) {\n if (typeof token === \"string\") {\n route += escapeString(encode(token));\n } else {\n const prefix = escapeString(encode(token.prefix));\n const suffix = escapeString(encode(token.suffix));\n\n if (token.pattern) {\n if (keys) keys.push(token);\n\n if (prefix || suffix) {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n const mod = token.modifier === \"*\" ? \"?\" : \"\";\n route += `(?:${prefix}((?:${token.pattern})(?:${suffix}${prefix}(?:${token.pattern}))*)${suffix})${mod}`;\n } else {\n route += `(?:${prefix}(${token.pattern})${suffix})${token.modifier}`;\n }\n } else {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n throw new TypeError(\n `Can not repeat \"${token.name}\" without a prefix and suffix`,\n );\n }\n\n route += `(${token.pattern})${token.modifier}`;\n }\n } else {\n route += `(?:${prefix}${suffix})${token.modifier}`;\n }\n }\n }\n\n if (end) {\n if (!strict) route += `${delimiterRe}?`;\n\n route += !options.endsWith ? \"$\" : `(?=${endsWithRe})`;\n } else {\n const endToken = tokens[tokens.length - 1];\n const isEndDelimited =\n typeof endToken === \"string\"\n ? delimiterRe.indexOf(endToken[endToken.length - 1]) > -1\n : endToken === undefined;\n\n if (!strict) {\n route += `(?:${delimiterRe}(?=${endsWithRe}))?`;\n }\n\n if (!isEndDelimited) {\n route += `(?=${delimiterRe}|${endsWithRe})`;\n }\n }\n\n return new RegExp(route, flags(options));\n}\n\n/**\n * Supported `path-to-regexp` input types.\n */\nexport type Path = string | RegExp | Array<string | RegExp>;\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n */\nexport function pathToRegexp(\n path: Path,\n keys?: Key[],\n options?: TokensToRegexpOptions & ParseOptions,\n) {\n if (path instanceof RegExp) return regexpToRegexp(path, keys);\n if (Array.isArray(path)) return arrayToRegexp(path, keys, options);\n return stringToRegexp(path, keys, options);\n}\n", "import { isDefined } from '@nordcraft/core/dist/utils/util'\nimport { compile } from 'path-to-regexp'\nimport type { Location } from '../types'\n\nexport const getLocationUrl = ({\n query,\n page,\n route,\n params,\n hash,\n}: Location) => {\n let path: string\n if (route) {\n const pathSegments: string[] = []\n for (const segment of route.path) {\n if (segment.type === 'static') {\n pathSegments.push(segment.name)\n } else {\n const segmentValue = params[segment.name]\n if (isDefined(segmentValue)) {\n pathSegments.push(segmentValue)\n } else {\n // If a param is missing, we can't build the rest of the path\n break\n }\n }\n }\n path = '/' + pathSegments.join('/')\n } else {\n path = compile(page as string, { encode: encodeURIComponent })(params)\n }\n const hashString = hash === undefined || hash === '' ? '' : '#' + hash\n const queryString = Object.entries(query)\n .filter(([_, q]) => q !== null)\n .map(([key, value]) => {\n return `${encodeURIComponent(\n route?.query[key]?.name ?? key,\n )}=${encodeURIComponent(String(value))}`\n })\n .join('&')\n\n return `${path}${hashString}${\n queryString.length > 0 ? '?' + queryString : ''\n }`\n}\n", "/* eslint-disable @typescript-eslint/no-floating-promises */\nimport type { LegacyComponentAPI } from '@nordcraft/core/dist/api/apiTypes'\nimport { mapHeadersToObject } from '@nordcraft/core/dist/api/headers'\nimport type { ComponentData } from '@nordcraft/core/dist/component/component.types'\nimport { applyFormula, isFormula } from '@nordcraft/core/dist/formula/formula'\nimport { mapValues } from '@nordcraft/core/dist/utils/collections'\nimport { parseJSONWithDate } from '@nordcraft/core/dist/utils/json'\nimport { handleAction } from '../events/handleAction'\nimport type { Signal } from '../signal/signal'\nimport type { ComponentContext } from '../types'\n\nexport type ApiRequest = {\n url: string\n method: 'GET' | 'POST' | 'DELETE' | 'PUT' | 'OPTION' | 'HEAD'\n auth: { type: string } | undefined\n headers: Record<string, string>\n body: any\n}\n\n/**\n * Set up an api for a component.\n * API requests are either proxied through toddle's back-end\n * or sent directly to the api endpoint (when api.proxy === false)\n */\nexport function createLegacyAPI(\n api: LegacyComponentAPI,\n ctx: ComponentContext,\n) {\n let timer: any = null\n\n // Create the payload we send to toddle's back-end\n // This includes url, headers, and content, sent in the body of a post request to /_query/<ComponentName>.<QueryName>\n function constructPayload(\n api: LegacyComponentAPI,\n data: ComponentData,\n ): ApiRequest {\n const formulaContext = {\n data,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n }\n\n // construct the url\n const baseUrl = applyFormula(api.url, formulaContext) ?? ''\n const urlPath =\n api.path && api.path.length > 0\n ? '/' +\n api.path.map((p) => applyFormula(p.formula, formulaContext)).join('/')\n : ''\n\n // build querystring\n const queryParams = Object.values(api.queryParams ?? {})\n const queryString =\n queryParams.length > 0\n ? '?' +\n queryParams\n .map(\n (param) =>\n `${param.name}=${encodeURIComponent(\n applyFormula(param.formula, formulaContext),\n )}`,\n )\n .join('&')\n : ''\n const headers = isFormula(api.headers) // this is supporting a few legacy cases where the whole header object was set as a formula. This is no longer possible\n ? applyFormula(api.headers, {\n data,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n })\n : mapValues(api.headers ?? {}, (value) =>\n applyFormula(value, {\n data,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n }),\n )\n const contentType = String(\n Object.entries(headers).find(\n ([key]) => key.toLocaleLowerCase() === 'content-type',\n )?.[1],\n )\n const method = api.method ?? 'GET'\n const body =\n api.body && ['POST', 'PUT', 'PATCH', 'DELETE'].includes(method)\n ? encodeBody(\n applyFormula(api.body, {\n data,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n }),\n contentType,\n )\n : undefined\n return {\n url: baseUrl + urlPath + queryString,\n method,\n auth: api.auth,\n headers,\n body,\n }\n }\n\n // extract the response body\n async function getBody(res: Response) {\n const textBody = await res.text()\n try {\n return parseJSONWithDate(textBody)\n } catch {\n return textBody\n }\n }\n\n function encodeBody(body: any, contentType?: string): FormData | string {\n switch (contentType) {\n case 'application/x-www-form-urlencoded': {\n if (typeof body === 'object' && body !== null) {\n return Object.entries(body)\n .map(([key, value]) => {\n if (Array.isArray(value)) {\n return value\n .map(\n (v) =>\n `${encodeURIComponent(key)}=${encodeURIComponent(v)}`,\n )\n .join('&')\n } else {\n return `${encodeURIComponent(key)}=${encodeURIComponent(\n String(value),\n )}`\n }\n })\n .join('&')\n }\n return ''\n }\n case 'multipart/form-data': {\n const formData = new FormData()\n if (typeof body === 'object' && body !== null) {\n Object.entries(body).forEach(([key, value]) => {\n formData.set(key, value as string | Blob)\n })\n }\n return formData\n }\n case 'text/plain':\n return String(body)\n default:\n return JSON.stringify(body)\n }\n }\n\n function apiSuccess(data: any) {\n ctx.dataSignal.set({\n ...ctx.dataSignal.get(),\n Apis: {\n ...ctx.dataSignal.get().Apis,\n [api.name]: {\n data,\n error: null,\n isLoading: false,\n },\n },\n })\n api.onCompleted?.actions?.forEach((action) => {\n handleAction(action, ctx.dataSignal.get(), ctx)\n })\n }\n\n function apiError(error: any) {\n ctx.dataSignal.set({\n ...ctx.dataSignal.get(),\n Apis: {\n ...ctx.dataSignal.get().Apis,\n [api.name]: {\n data: null,\n isLoading: false,\n error: error,\n },\n },\n })\n api.onFailed?.actions?.forEach((action) => {\n handleAction(action, ctx.dataSignal.get(), ctx)\n })\n }\n\n // Execute the request to the cloudflare Query proxy\n async function execute(payload: ApiRequest) {\n ctx.dataSignal.set({\n ...ctx.dataSignal.get(),\n Apis: {\n ...ctx.dataSignal.get().Apis,\n [api.name]: {\n data: ctx.dataSignal.get().Apis?.[api.name]?.data ?? null,\n isLoading: true,\n error: null,\n },\n },\n })\n let response\n\n try {\n if (api.proxy === false) {\n response = await fetch(payload.url, {\n method: payload.method,\n headers: payload.headers,\n body: payload.body,\n })\n } else {\n response = await fetch(\n `/_query/${encodeURIComponent(\n ctx.component.name,\n )}.${encodeURIComponent(api.name)}`,\n {\n method: 'POST',\n body: JSON.stringify(payload),\n signal: ctx.abortSignal,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n )\n }\n const data = await getBody(response)\n if (response.ok) {\n apiSuccess(data)\n } else {\n throw data\n }\n } catch (error: any) {\n apiError(error)\n return Promise.reject(error)\n }\n }\n\n // Handles throttle and debounce if set.\n function trigger(body: ApiRequest) {\n if (typeof api.debounce === 'number') {\n return new Promise((resolve, reject) => {\n if (typeof timer === 'number') {\n clearTimeout(timer)\n }\n timer = setTimeout(() => {\n execute(body).then(resolve, reject)\n }, api.debounce as number)\n })\n } else if (typeof api.throttle === 'number') {\n if (typeof timer === 'number') {\n return new Promise(() => {})\n }\n timer = setTimeout(() => {\n if (typeof timer === 'number') {\n clearTimeout(timer)\n }\n }, api.throttle)\n return execute(body)\n } else {\n return execute(body)\n }\n }\n\n let payloadSignal: Signal<ApiRequest> | undefined\n ctx.dataSignal.update((data) => {\n return {\n ...data,\n Apis: {\n ...(data.Apis ?? {}),\n [api.name]: data.Apis?.[api.name] ?? {\n data: null,\n isLoading:\n api.autoFetch &&\n applyFormula(api.autoFetch, {\n data: ctx.dataSignal.get(),\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n })\n ? true\n : false,\n error: null,\n },\n },\n }\n })\n if (api.autoFetch) {\n payloadSignal = ctx.dataSignal.map((data) => constructPayload(api, data))\n let firstRun = true\n payloadSignal.subscribe((body) => {\n if (\n api.autoFetch &&\n applyFormula(api.autoFetch, {\n data: ctx.dataSignal.get(),\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n })\n ) {\n // We should only lookup cached data for pages since\n // we don't fetch data for component APIs during SSR\n if (firstRun && ctx.isRootComponent) {\n firstRun = false\n const cached = ctx.toddle?.pageState?.Apis?.[api.name]\n if (cached && cached.data) {\n if (typeof cached.data === 'string') {\n // Mimic the behavior from getBody and parse\n // the response to JSON if possible\n apiSuccess(parseJSONWithDate(cached.data))\n } else {\n apiSuccess(cached.data)\n }\n } else {\n trigger(body)\n }\n } else {\n trigger(body)\n }\n }\n })\n }\n return {\n fetch: (request?: ApiRequest) => {\n const apiPayload = constructPayload(api, ctx.dataSignal.get())\n let body = apiPayload.body\n // Use a Headers object since it's case insensitive\n const headers = new Headers({\n ...apiPayload.headers,\n ...(request?.headers ?? {}),\n })\n if (request?.body) {\n body = encodeBody(\n request.body,\n headers.get('Content-Type') ?? undefined,\n )\n }\n if (body instanceof FormData) {\n // Remove content type header if body is a FormData object\n // Otherwise fetch won't do its magic when sending the request\n headers.delete('Content-Type')\n }\n const payload: ApiRequest = {\n url: request?.url ?? apiPayload.url,\n method: request?.method ?? apiPayload.method,\n auth: request?.auth ?? apiPayload.auth,\n headers: mapHeadersToObject(headers),\n body,\n }\n return trigger(payload)\n },\n destroy: () => payloadSignal?.destroy(),\n }\n}\n", "const LOCALHOSTS = ['http://localhost:54404', 'http://preview.localhost:54404']\n\nexport const isLocalhostUrl = (hrefOrOrigin: string) =>\n LOCALHOSTS.some((host) => hrefOrOrigin.startsWith(host))\n\nexport const isLocalhostHostname = (hostname: string) =>\n hostname === 'localhost' || hostname === '127.0.0.1'\n\nexport const validateUrl = ({\n path,\n origin,\n}: {\n path: string | null | undefined\n origin: string | undefined\n}) => {\n if (typeof path !== 'string') {\n return false\n }\n try {\n const urlObject = new URL(path, origin)\n // Creating a new URL object will not correctly encode the search params\n // So we need to iterate over them to make sure they are encoded as that happens when setting them explicitly\n const searchCopy = new URLSearchParams(urlObject.searchParams)\n searchCopy.forEach((value, key) => {\n urlObject.searchParams.delete(key, value)\n })\n searchCopy.forEach((value, key) => {\n urlObject.searchParams.append(key, value)\n })\n return urlObject\n } catch {\n return false\n }\n}\n\nexport const PROXY_URL_HEADER = 'x-nordcraft-url'\n\nexport const PROXY_TEMPLATES_IN_BODY = 'x-nordcraft-templates-in-body'\n\nexport const REWRITE_HEADER = 'x-nordcraft-rewrite'\n", "/* eslint-disable @typescript-eslint/no-floating-promises */\nimport {\n createApiEvent,\n createApiRequest,\n isApiError,\n requestHash,\n} from '@nordcraft/core/dist/api/api'\nimport type {\n ApiPerformance,\n ApiRequest,\n ApiStatus,\n ToddleRequestInit,\n} from '@nordcraft/core/dist/api/apiTypes'\nimport {\n isEventStreamHeader,\n isImageHeader,\n isJsonHeader,\n isJsonStreamHeader,\n isTextHeader,\n mapHeadersToObject,\n} from '@nordcraft/core/dist/api/headers'\nimport type { ComponentData } from '@nordcraft/core/dist/component/component.types'\nimport type {\n Formula,\n FormulaContext,\n} from '@nordcraft/core/dist/formula/formula'\nimport { applyFormula } from '@nordcraft/core/dist/formula/formula'\nimport type { NestedOmit } from '@nordcraft/core/dist/types'\nimport {\n omitPaths,\n sortObjectEntries,\n} from '@nordcraft/core/dist/utils/collections'\nimport {\n PROXY_TEMPLATES_IN_BODY,\n PROXY_URL_HEADER,\n validateUrl,\n} from '@nordcraft/core/dist/utils/url'\nimport { isDefined, toBoolean } from '@nordcraft/core/dist/utils/util'\nimport { handleAction } from '../events/handleAction'\nimport type { Signal } from '../signal/signal'\nimport type { ComponentContext, ContextApiV2 } from '../types'\n\n/**\n * Set up an api v2 for a component.\n */\nexport function createAPI({\n apiRequest,\n componentData: initialComponentData,\n ctx,\n}: {\n apiRequest: ApiRequest\n componentData: ComponentData\n ctx: ComponentContext\n}): ContextApiV2 {\n // If `__toddle` isn't found it is in a web component context. We behave as if the page isn't loaded.\n let timer: any = null\n let api = { ...apiRequest }\n\n function constructRequest(\n api: ApiRequest,\n componentData: ComponentData,\n ): ReturnType<typeof createApiRequest> {\n // Get baseUrl and validate it. (It wont be in web component context)\n let baseUrl: string | undefined = window.origin\n try {\n new URL(baseUrl)\n } catch {\n baseUrl = undefined\n }\n\n const request = createApiRequest({\n api,\n formulaContext: getFormulaContext(api, componentData),\n baseUrl,\n defaultHeaders: undefined,\n })\n return {\n ...request,\n requestSettings: {\n ...request.requestSettings,\n // credentials is a browser specific setting and cannot be set in the\n // createApiRequest function directly as it's shared between server and client\n credentials:\n api.client?.credentials &&\n ['include', 'same-origin', 'omit'].includes(api.client.credentials)\n ? api.client.credentials\n : // Default to same-origin\n undefined,\n },\n }\n }\n\n // Create the formula context for the api\n function getFormulaContext(\n api: ApiRequest,\n componentData: ComponentData | undefined,\n ): FormulaContext {\n // Use the general formula context to evaluate the arguments of the api\n const formulaContext = {\n data: ctx.dataSignal.get(),\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n }\n\n // Make sure inputs are also available in the formula context\n const evaluatedInputs = Object.entries(api.inputs).reduce<\n Record<string, unknown>\n >((acc, [key, value]) => {\n acc[key] = applyFormula(value.formula, formulaContext)\n return acc\n }, {})\n\n const data = {\n ...componentData,\n ...formulaContext.data,\n ApiInputs: {\n ...evaluatedInputs,\n },\n }\n\n return {\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n data,\n toddle: ctx.toddle,\n env: ctx.env,\n }\n }\n\n function handleRedirectRules(api: ApiRequest, componentData: ComponentData) {\n for (const [ruleName, rule] of sortObjectEntries(\n api.redirectRules ?? {},\n ([_, rule]) => rule.index,\n )) {\n const formulaContext = getFormulaContext(api, componentData)\n const location = applyFormula(rule.formula, {\n ...formulaContext,\n data: {\n ...formulaContext.data,\n Apis: {\n [api.name]: ctx.dataSignal.get().Apis?.[api.name] as ApiStatus,\n },\n },\n })\n if (typeof location === 'string') {\n const url = validateUrl({\n path: location,\n origin: window.location.origin,\n })\n if (url) {\n if (ctx.env.runtime === 'preview') {\n // Attempt to notify the parent about the failed navigation attempt\n window.parent?.postMessage(\n { type: 'blockedNavigation', url: url.href },\n '*',\n )\n return { name: ruleName, index: rule.index, url }\n } else {\n window.location.replace(url.href)\n }\n }\n }\n }\n }\n\n function triggerActions({\n eventName,\n api,\n data,\n componentData,\n workflowCallback,\n }: {\n eventName: 'message' | 'success' | 'failed'\n api: ApiRequest\n data: {\n body: unknown\n status?: number\n headers?: Record<string, string>\n }\n componentData: ComponentData\n workflowCallback?: (event: string, data: unknown) => void\n }) {\n switch (eventName) {\n case 'message': {\n const event = createApiEvent('message', data.body)\n api.client?.onMessage?.actions?.forEach((action) => {\n handleAction(\n action,\n {\n ...getFormulaContext(api, componentData).data,\n Event: event,\n },\n ctx,\n event,\n workflowCallback,\n )\n })\n break\n }\n case 'success': {\n const event = createApiEvent('success', data.body)\n api.client?.onCompleted?.actions?.forEach((action) => {\n handleAction(\n action,\n {\n ...getFormulaContext(api, componentData).data,\n Event: event,\n },\n ctx,\n event,\n workflowCallback,\n )\n })\n break\n }\n case 'failed': {\n const event = createApiEvent('failed', {\n error: data.body,\n status: data.status,\n })\n api.client?.onFailed?.actions?.forEach((action) => {\n handleAction(\n action,\n {\n ...getFormulaContext(api, componentData).data,\n Event: event,\n },\n ctx,\n event,\n workflowCallback,\n )\n })\n break\n }\n }\n }\n\n function apiSuccess({\n api,\n componentData,\n data,\n performance,\n }: {\n api: ApiRequest\n componentData: ComponentData\n data: {\n body: unknown\n status?: number\n headers?: Record<string, string>\n }\n performance: ApiPerformance\n }) {\n const latestRequestStart =\n ctx.dataSignal.get().Apis?.[api.name]?.response?.performance?.requestStart\n if (\n typeof latestRequestStart === 'number' &&\n latestRequestStart > (performance.requestStart ?? 0)\n ) {\n return\n }\n\n ctx.dataSignal.set({\n ...ctx.dataSignal.get(),\n Apis: {\n ...ctx.dataSignal.get().Apis,\n [api.name]: {\n isLoading: false,\n data: data.body,\n error: null,\n response: {\n status: data.status,\n headers: data.headers,\n performance,\n },\n },\n },\n })\n const appliedRedirectRule = handleRedirectRules(api, componentData)\n if (appliedRedirectRule) {\n ctx.dataSignal.set({\n ...ctx.dataSignal.get(),\n Apis: {\n ...ctx.dataSignal.get().Apis,\n [api.name]: {\n isLoading: false,\n data: data.body,\n error: null,\n response: {\n status: data.status,\n headers: data.headers,\n performance,\n ...(ctx.env.runtime === 'preview'\n ? { debug: { appliedRedirectRule } }\n : {}),\n },\n },\n },\n })\n }\n }\n\n function apiError({\n api,\n componentData,\n data,\n performance,\n }: {\n api: ApiRequest\n componentData: ComponentData\n data: {\n body: unknown\n status?: number\n headers?: Record<string, string>\n }\n performance: ApiPerformance\n }) {\n const latestRequestStart =\n ctx.dataSignal.get().Apis?.[api.name]?.response?.performance?.requestStart\n if (\n typeof latestRequestStart === 'number' &&\n latestRequestStart > (performance.requestStart ?? 0)\n ) {\n return\n }\n ctx.dataSignal.set({\n ...ctx.dataSignal.get(),\n Apis: {\n ...ctx.dataSignal.get().Apis,\n [api.name]: {\n isLoading: false,\n data: null,\n error: data.body,\n response: {\n status: data.status,\n headers: data.headers,\n performance,\n },\n },\n },\n })\n const appliedRedirectRule = handleRedirectRules(api, componentData)\n if (appliedRedirectRule) {\n ctx.dataSignal.set({\n ...ctx.dataSignal.get(),\n Apis: {\n ...ctx.dataSignal.get().Apis,\n [api.name]: {\n isLoading: false,\n data: null,\n error: data.body,\n response: {\n status: data.status,\n headers: data.headers,\n performance,\n ...(ctx.env.runtime === 'preview'\n ? { debug: { appliedRedirectRule } }\n : {}),\n },\n },\n },\n })\n }\n }\n\n // Execute the request - potentially to the cloudflare Query proxy\n async function execute({\n api,\n url,\n requestSettings,\n componentData,\n workflowCallback,\n }: {\n api: ApiRequest\n url: URL\n requestSettings: ToddleRequestInit\n componentData: ComponentData\n workflowCallback?: (event: string, data: unknown) => void\n }) {\n const run = async () => {\n const performance: ApiPerformance = {\n requestStart: Date.now(),\n responseStart: null,\n responseEnd: null,\n }\n ctx.dataSignal.set({\n ...ctx.dataSignal.get(),\n Apis: {\n ...ctx.dataSignal.get().Apis,\n [api.name]: {\n isLoading: true,\n data: ctx.dataSignal.get().Apis?.[api.name]?.data ?? null,\n error: null,\n },\n },\n })\n let response\n\n try {\n const proxy = api.server?.proxy\n ? (applyFormula(\n api.server.proxy.enabled.formula,\n getFormulaContext(api, componentData),\n ) ?? false)\n : false\n\n if (proxy === false) {\n response = await fetch(url, requestSettings)\n } else {\n const proxyUrl = `/.toddle/omvej/components/${encodeURIComponent(\n ctx.component.name,\n )}/apis/${encodeURIComponent(\n ctx.component.name,\n )}:${encodeURIComponent(api.name)}`\n const headers = new Headers(requestSettings.headers)\n headers.set(\n PROXY_URL_HEADER,\n decodeURIComponent(url.href.replace(/\\+/g, ' ')),\n )\n const allowBodyTemplateValues = toBoolean(\n applyFormula(\n api.server?.proxy?.useTemplatesInBody?.formula,\n getFormulaContext(api, componentData),\n ),\n )\n if (allowBodyTemplateValues) {\n headers.set(PROXY_TEMPLATES_IN_BODY, 'true')\n }\n requestSettings.headers = headers\n response = await fetch(proxyUrl, requestSettings)\n }\n\n performance.responseStart = Date.now()\n await handleResponse({\n api,\n componentData,\n res: response,\n performance,\n workflowCallback,\n })\n return\n } catch (error: any) {\n const body = error.cause\n ? { message: error.message, data: error.cause }\n : error.message\n apiError({\n api,\n componentData,\n data: { body },\n performance: { ...performance, responseEnd: Date.now() },\n })\n triggerActions({\n eventName: 'failed',\n api,\n data: { body },\n componentData,\n workflowCallback,\n })\n return Promise.reject(error)\n }\n }\n\n // Debounce the request if needed\n if (api.client?.debounce?.formula) {\n return new Promise((resolve, reject) => {\n if (typeof timer === 'number') {\n clearTimeout(timer)\n }\n timer = setTimeout(\n () => {\n run().then(resolve, reject)\n },\n applyFormula(\n api.client?.debounce?.formula,\n getFormulaContext(api, componentData),\n ),\n )\n })\n }\n\n return run()\n }\n\n function handleResponse({\n api,\n componentData,\n res,\n performance,\n workflowCallback,\n }: {\n api: ApiRequest\n componentData: ComponentData\n res: Response\n performance: ApiPerformance\n workflowCallback?: (event: string, data: unknown) => void\n }) {\n let parserMode = api.client?.parserMode ?? 'auto'\n\n if (parserMode === 'auto') {\n const contentType = res.headers.get('content-type')\n if (isEventStreamHeader(contentType)) {\n parserMode = 'event-stream'\n } else if (isJsonHeader(contentType)) {\n parserMode = 'json'\n } else if (isTextHeader(contentType)) {\n parserMode = 'text'\n } else if (isJsonStreamHeader(contentType)) {\n parserMode = 'json-stream'\n } else if (isImageHeader(contentType)) {\n parserMode = 'blob'\n } else {\n parserMode = 'text'\n }\n }\n\n switch (parserMode) {\n case 'text':\n return textStreamResponse({\n api,\n componentData,\n res,\n performance,\n workflowCallback,\n })\n case 'json':\n return jsonResponse({\n api,\n componentData,\n res,\n performance,\n workflowCallback,\n })\n case 'event-stream':\n return eventStreamingResponse({\n api,\n componentData,\n res,\n performance,\n workflowCallback,\n })\n case 'json-stream':\n return jsonStreamResponse({\n api,\n componentData,\n res,\n performance,\n workflowCallback,\n })\n case 'blob':\n return blobResponse({\n api,\n componentData,\n res,\n performance,\n workflowCallback,\n })\n default:\n return textStreamResponse({\n api,\n componentData,\n res,\n performance,\n workflowCallback,\n })\n }\n }\n\n function textStreamResponse({\n api,\n res,\n performance,\n componentData,\n workflowCallback,\n }: {\n api: ApiRequest\n res: Response\n performance: ApiPerformance\n componentData: ComponentData\n workflowCallback?: (event: string, data: unknown) => void\n }) {\n return handleStreaming({\n api,\n res,\n performance,\n streamType: 'text',\n useTextDecoder: true,\n parseChunk: (chunk) => chunk,\n parseChunksForData: (chunks) => chunks.join(''),\n componentData,\n workflowCallback,\n })\n }\n\n function jsonStreamResponse({\n api,\n res,\n performance,\n componentData,\n workflowCallback,\n }: {\n api: ApiRequest\n res: Response\n performance: ApiPerformance\n componentData: ComponentData\n workflowCallback?: (event: string, data: unknown) => void\n }) {\n const parseChunk = (chunk: any) => {\n let parsedData = chunk\n try {\n parsedData = JSON.parse(chunk)\n } catch {\n throw new Error('Error occurred while parsing the json chunk.', {\n cause: parsedData,\n })\n }\n return parsedData\n }\n\n return handleStreaming({\n api,\n res,\n performance,\n streamType: 'json',\n useTextDecoder: true,\n parseChunk,\n parseChunksForData: (chunks) => [...chunks],\n delimiters: ['\\r\\n', '\\n'],\n componentData,\n workflowCallback,\n })\n }\n\n async function jsonResponse({\n api,\n componentData,\n res,\n performance,\n workflowCallback,\n }: {\n api: ApiRequest\n componentData: ComponentData\n res: Response\n performance: ApiPerformance\n workflowCallback?: (event: string, data: unknown) => void\n }) {\n const body = await res.json()\n\n const status: ApiStatus = {\n data: body,\n isLoading: false,\n error: null,\n response: {\n status: res.status,\n headers: mapHeadersToObject(res.headers),\n },\n }\n return endResponse({\n api,\n apiStatus: status,\n componentData,\n performance,\n workflowCallback,\n })\n }\n\n async function blobResponse({\n api,\n componentData,\n res,\n performance,\n workflowCallback,\n }: {\n api: ApiRequest\n componentData: ComponentData\n res: Response\n performance: ApiPerformance\n workflowCallback?: (event: string, data: unknown) => void\n }) {\n const blob = await res.blob()\n\n const status: ApiStatus = {\n isLoading: false,\n data: URL.createObjectURL(blob),\n error: null,\n response: {\n status: res.status,\n headers: mapHeadersToObject(res.headers),\n },\n }\n return endResponse({\n api,\n apiStatus: status,\n componentData,\n performance,\n workflowCallback,\n })\n }\n\n function eventStreamingResponse({\n api,\n res,\n performance,\n componentData,\n workflowCallback,\n }: {\n api: ApiRequest\n res: Response\n performance: ApiPerformance\n componentData: ComponentData\n workflowCallback?: (event: string, data: unknown) => void\n }) {\n const parseChunk = (chunk: string) => {\n const event = chunk.match(/event: (.*)/)?.[1] ?? 'message'\n const data = chunk.match(/data: (.*)/)?.[1] ?? ''\n const id = chunk.match(/id: (.*)/)?.[1]\n const retry = chunk.match(/retry: (.*)/)?.[1]\n\n let parsedData = data\n try {\n parsedData = JSON.parse(data ?? '')\n // eslint-disable-next-line no-empty\n } catch {}\n const returnData = {\n event,\n data: parsedData,\n ...(id ? { id } : {}),\n ...(retry ? { retry } : {}),\n }\n return returnData\n }\n return handleStreaming({\n api,\n res,\n performance,\n streamType: 'event',\n useTextDecoder: true,\n parseChunk,\n parseChunksForData: (chunks) => [...chunks],\n delimiters: ['\\n\\n', '\\r\\n\\r\\n'],\n componentData,\n workflowCallback,\n })\n }\n\n async function handleStreaming({\n api,\n res,\n performance,\n streamType,\n useTextDecoder,\n parseChunk,\n parseChunksForData,\n delimiters, // There can be various delimiters for the same stream. SSE might use both \\n\\n and \\r\\n\\r\\n,\n componentData,\n workflowCallback,\n }: {\n api: ApiRequest\n res: Response\n performance: ApiPerformance\n streamType: 'json' | 'text' | 'event'\n useTextDecoder: boolean\n parseChunk: (chunk: any) => any\n parseChunksForData: (chunks: any[]) => any\n delimiters?: string[]\n componentData: ComponentData\n workflowCallback?: (event: string, data: unknown) => void\n }) {\n const chunks: {\n chunks: any[]\n currentChunk: string\n add(chunk: string | Uint8Array): void\n processChunk(chunk: string | Uint8Array): void\n } = {\n chunks: [],\n currentChunk: '',\n // Function to add a chunk to the chunks array and emits the data to the onMessage event\n add(chunk: string | Uint8Array) {\n const parsedChunk = parseChunk(chunk)\n this.chunks.push(parsedChunk)\n // Only emit the data if there are any listeners\n if (parsedChunk) {\n ctx.dataSignal.set({\n ...ctx.dataSignal.get(),\n Apis: {\n ...ctx.dataSignal.get().Apis,\n [api.name]: {\n isLoading: true,\n data: parseChunksForData(this.chunks),\n error: null,\n response: {\n headers: mapHeadersToObject(res.headers),\n },\n },\n },\n })\n if ((api.client?.onMessage?.actions ?? []).length > 0) {\n triggerActions({\n eventName: 'message',\n api,\n data: { body: parsedChunk },\n componentData,\n workflowCallback,\n })\n }\n }\n },\n\n // Function to process a chunk and split it by the delimiter.\n processChunk(chunk: any) {\n const delimiter = delimiters?.find((d) => chunk.includes(d))\n const concatenated = this.currentChunk + chunk\n const split = delimiter ? concatenated.split(delimiter) : [concatenated]\n this.currentChunk = split.pop() ?? ''\n split.forEach((c) => this.add(c))\n },\n }\n\n const reader = useTextDecoder\n ? res.body?.pipeThrough(new TextDecoderStream()).getReader()\n : res.body?.getReader()\n\n while (reader) {\n const { done, value } = await reader.read()\n if (done) {\n break\n }\n\n if (delimiters) {\n chunks.processChunk(value)\n } else {\n chunks.add(value)\n }\n }\n\n // First make sure theres no remaining chunk\n if (chunks.currentChunk) {\n chunks.add(chunks.currentChunk)\n }\n\n const status: ApiStatus = {\n isLoading: false,\n data: chunks.chunks,\n error: null,\n response: {\n status: res.status,\n headers: mapHeadersToObject(res.headers),\n },\n }\n\n try {\n if (streamType === 'json') {\n const parsed = JSON.parse(chunks.chunks.join(''))\n status.data = parsed\n } else if (streamType === 'text') {\n status.data = chunks.chunks.join('')\n }\n } catch {\n throw new Error('Error occurred while parsing the json chunk.', {\n cause: chunks.chunks.join(''),\n })\n }\n return endResponse({\n api,\n apiStatus: status,\n componentData,\n performance,\n workflowCallback,\n })\n }\n\n function endResponse({\n api,\n apiStatus,\n componentData,\n performance,\n workflowCallback,\n }: {\n api: ApiRequest\n apiStatus: ApiStatus\n componentData: ComponentData\n performance: ApiPerformance\n workflowCallback?: (event: string, data: unknown) => void\n }) {\n performance.responseEnd = Date.now()\n\n const data = {\n body: apiStatus.data,\n status: apiStatus.response?.status,\n headers: apiStatus.response?.headers ?? undefined,\n }\n\n const isError = isApiError({\n apiName: api.name,\n response: {\n body: data.body,\n ok: Boolean(\n !apiStatus.error &&\n apiStatus.response?.status &&\n apiStatus.response.status < 400,\n ),\n status: data.status,\n headers: data.headers,\n },\n formulaContext: getFormulaContext(api, componentData),\n errorFormula: api.isError,\n performance,\n })\n\n if (isError) {\n if (!data.body && apiStatus.error) {\n data.body = apiStatus.error\n }\n\n apiError({ api, componentData, data, performance })\n triggerActions({\n eventName: 'failed',\n api,\n componentData,\n data,\n workflowCallback,\n })\n } else {\n apiSuccess({ api, componentData, data, performance })\n triggerActions({\n eventName: 'success',\n api,\n componentData,\n data,\n workflowCallback,\n })\n }\n }\n\n function getApiForComparison(api: ApiRequest) {\n return omitPaths(api, [\n ['client', 'onCompleted'],\n ['client', 'onFailed'],\n ['client', 'onMessage'],\n ['service'],\n ['server', 'ssr'],\n ]) as NestedOmit<\n ApiRequest,\n | 'client.onCompleted'\n | 'client.onFailed'\n | 'client.onMessage'\n | 'service'\n | 'server.ssr'\n >\n }\n\n let payloadSignal:\n | Signal<{\n request: ReturnType<typeof constructRequest>\n api: ReturnType<typeof getApiForComparison>\n headers: Array<[string, string]>\n // if the evaluated value of autoFetch changes from false -> true, we need to refetch the api\n autoFetch: boolean\n // currently, the proxy setting is always controlled by a \"value formula\", but in case we later\n // open up for controlling it with a dynamic formula, we should also include it here\n proxy: boolean\n }>\n | undefined\n\n // eslint-disable-next-line prefer-const\n payloadSignal = ctx.dataSignal.map((data) => {\n const payloadContext = getFormulaContext(api, data)\n const request = constructRequest(api, data)\n return {\n request,\n api: getApiForComparison(api),\n // Serialize the Headers object to be able to compare changes\n headers: Array.from(request.requestSettings.headers.entries()),\n autoFetch: api.autoFetch\n ? applyFormula(api.autoFetch, payloadContext)\n : false,\n proxy: applyFormula(api.server?.proxy?.enabled.formula, payloadContext),\n }\n })\n payloadSignal.subscribe(async (apiData) => {\n const { url, requestSettings } = apiData.request\n // Ensure we only use caching if the page is currently loading\n const cacheMatch =\n // We lookup the API from cache as long as autofetch is defined (and not statically falsy)\n // since the autofetch formula could've evaluated to true during SSR\n isDefined(api.autoFetch) &&\n (api.autoFetch.type !== 'value' || api.autoFetch.value === true) &&\n (window?.__toddle?.isPageLoaded ?? false) === false\n ? (ctx.toddle.pageState.Apis?.[\n requestHash(url, requestSettings)\n ] as ApiStatus)\n : undefined\n\n if (cacheMatch) {\n if (cacheMatch.error) {\n apiError({\n api,\n data: {\n body: cacheMatch.error,\n status: cacheMatch.response?.status,\n headers: cacheMatch.response?.headers ?? undefined,\n },\n performance: {\n requestStart:\n cacheMatch.response?.performance?.requestStart ?? null,\n responseStart:\n cacheMatch.response?.performance?.responseStart ?? null,\n responseEnd: cacheMatch.response?.performance?.responseEnd ?? null,\n },\n componentData: initialComponentData,\n })\n } else {\n apiSuccess({\n api,\n data: {\n body: cacheMatch.data,\n status: cacheMatch.response?.status,\n headers: cacheMatch.response?.headers ?? undefined,\n },\n performance: {\n requestStart:\n cacheMatch.response?.performance?.requestStart ?? null,\n responseStart:\n cacheMatch.response?.performance?.responseStart ?? null,\n responseEnd: cacheMatch.response?.performance?.responseEnd ?? null,\n },\n componentData: initialComponentData,\n })\n }\n } else {\n if (\n applyFormula(\n api.autoFetch,\n getFormulaContext(api, initialComponentData),\n )\n ) {\n // Execute will set the initial status of the api in the dataSignal\n await execute({\n api,\n url,\n requestSettings,\n componentData: initialComponentData,\n })\n } else if (!ctx.dataSignal.get().Apis?.[api.name]) {\n // If the api is not set in the dataSignal, we need to initialize it.\n // If it is set and autoFetch is false, we do not want to reset it.\n ctx.dataSignal.update((data) => {\n return {\n ...data,\n Apis: {\n ...(data.Apis ?? {}),\n [api.name]: {\n isLoading: false,\n data: null,\n error: null,\n },\n },\n }\n })\n }\n }\n })\n\n return {\n fetch: ({\n actionInputs,\n actionModels,\n componentData,\n workflowCallback,\n }) => {\n // Inputs might already be evaluated. If they are we add them as a value formula to be evaluated later.\n const inputs = Object.entries(actionInputs ?? {}).reduce<\n Record<\n string,\n {\n formula: Formula\n }\n >\n >((acc, [inputName, input]) => {\n if (input !== null && typeof input === 'object' && 'formula' in input) {\n acc[inputName] = input as {\n formula: Formula\n }\n } else {\n acc[inputName] = {\n formula: { type: 'value', value: input },\n }\n }\n return acc\n }, {})\n\n const apiWithInputsAndActions: ApiRequest = {\n ...api,\n inputs: { ...api.inputs, ...inputs },\n client: {\n ...api.client,\n parserMode: api.client?.parserMode ?? 'auto',\n onCompleted: {\n trigger: api.client?.onCompleted?.trigger ?? 'success',\n actions: [\n ...(api.client?.onCompleted?.actions ?? []),\n ...(actionModels?.onCompleted ?? []),\n ],\n },\n onFailed: {\n trigger: api.client?.onFailed?.trigger ?? 'failed',\n actions: [\n ...(api.client?.onFailed?.actions ?? []),\n ...(actionModels?.onFailed ?? []),\n ],\n },\n onMessage: {\n trigger: api.client?.onMessage?.trigger ?? 'message',\n actions: [\n ...(api.client?.onMessage?.actions ?? []),\n ...(actionModels?.onMessage ?? []),\n ],\n },\n },\n }\n\n const { url, requestSettings } = constructRequest(\n apiWithInputsAndActions,\n componentData,\n )\n\n return execute({\n api: apiWithInputsAndActions,\n url,\n requestSettings,\n componentData,\n workflowCallback,\n })\n },\n update: (newApi, componentData) => {\n api = newApi\n const updateContext = getFormulaContext(api, componentData)\n const autoFetch =\n api.autoFetch && applyFormula(api.autoFetch, updateContext)\n if (autoFetch) {\n const request = constructRequest(newApi, componentData)\n payloadSignal?.set({\n request,\n api: getApiForComparison(newApi),\n autoFetch,\n proxy: applyFormula(\n newApi.server?.proxy?.enabled.formula,\n updateContext,\n ),\n // Serialize the Headers object to be able to compare changes\n headers: Array.from(request.requestSettings.headers.entries()),\n })\n }\n },\n triggerActions: (componentData) => {\n const apiData = ctx.dataSignal.get().Apis?.[api.name]\n if (\n apiData === undefined ||\n (apiData.data === null && apiData.error === null)\n ) {\n return\n }\n if (apiData.error) {\n triggerActions({\n eventName: 'failed',\n api,\n data: {\n body: apiData.error,\n status: apiData.response?.status,\n },\n componentData,\n })\n } else {\n triggerActions({\n eventName: 'success',\n api,\n data: {\n body: apiData.data,\n },\n componentData,\n })\n }\n },\n destroy: () => payloadSignal?.destroy(),\n }\n}\n", "import type {\n Component,\n ComponentData,\n SupportedNamespaces,\n} from '@nordcraft/core/dist/component/component.types'\nimport type { ToddleEnv } from '@nordcraft/core/dist/formula/formula'\nimport type { Toddle } from '@nordcraft/core/dist/types'\nimport fastDeepEqual from 'fast-deep-equal'\nimport { handleAction } from '../events/handleAction'\nimport type { Signal } from '../signal/signal'\nimport type {\n ComponentChild,\n ComponentContext,\n ContextApi,\n FormulaCache,\n LocationSignal,\n PreviewShowSignal,\n} from '../types'\nimport { BatchQueue } from '../utils/BatchQueue'\nimport { createNode } from './createNode'\n\ninterface RenderComponentProps {\n component: Component\n components: Component[]\n dataSignal: Signal<ComponentData>\n apis: Record<string, ContextApi>\n abortSignal: AbortSignal\n onEvent: (event: string, data: unknown) => void\n isRootComponent: boolean\n formulaCache: FormulaCache\n path: string\n children: Record<string, Array<ComponentChild>>\n root: Document | ShadowRoot\n providers: Record<\n string,\n {\n component: Component\n formulaDataSignals: Record<string, Signal<ComponentData>>\n ctx: ComponentContext\n }\n >\n package: string | undefined\n parentElement: Element | ShadowRoot\n instance: Record<string, string>\n toddle: Toddle<LocationSignal, PreviewShowSignal>\n namespace?: SupportedNamespaces\n env: ToddleEnv\n}\n\nconst BATCH_QUEUE = new BatchQueue()\n\nexport function renderComponent({\n component,\n dataSignal,\n onEvent,\n isRootComponent,\n path,\n children,\n formulaCache,\n components,\n apis,\n abortSignal,\n root,\n providers,\n package: packageName,\n parentElement,\n instance,\n toddle,\n namespace,\n env,\n}: RenderComponentProps): ReadonlyArray<Element | Text> {\n const ctx: ComponentContext = {\n triggerEvent: onEvent,\n component,\n components,\n dataSignal,\n isRootComponent,\n apis,\n formulaCache,\n children,\n abortSignal,\n root,\n providers,\n package: packageName,\n toddle,\n env,\n }\n\n const rootElem = createNode({\n id: 'root',\n path,\n dataSignal,\n ctx,\n parentElement,\n namespace,\n instance,\n })\n BATCH_QUEUE.add(() => {\n let prev: Record<string, any> | undefined\n if (\n component.onAttributeChange?.actions &&\n component.onAttributeChange.actions.length > 0\n ) {\n dataSignal\n .map((data) => data.Attributes)\n .subscribe((props) => {\n if (prev) {\n component.onAttributeChange?.actions.forEach((action) => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handleAction(\n action,\n dataSignal.get(),\n ctx,\n new CustomEvent('attribute-change', {\n detail: Object.entries(props).reduce(\n (\n changes: Record<string, { current: any; new: any }>,\n [key, value],\n ) => {\n if (\n fastDeepEqual(value, prev![key]) === false &&\n component.attributes[key]?.name\n ) {\n changes[component.attributes[key]?.name] = {\n current: prev![key],\n new: value,\n }\n }\n return changes\n },\n {},\n ),\n }),\n )\n })\n }\n prev = props\n })\n }\n component.onLoad?.actions.forEach((action) => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handleAction(action, dataSignal.get(), ctx)\n })\n })\n return rootElem\n}\n", "/**\n * A helper class to batch multiple callbacks and process them in a single update step just before the next frame render, but after the current stack.\n * This is more efficient than processing each callback in a separate requestAnimationFrame due to the overhead.\n */\nexport class BatchQueue {\n private batchQueue: Array<() => void> = []\n private isProcessing = false\n private processBatch() {\n if (this.isProcessing) return\n this.isProcessing = true\n\n requestAnimationFrame(() => {\n while (this.batchQueue.length > 0) {\n const callback = this.batchQueue.shift()\n callback?.()\n }\n this.isProcessing = false\n })\n }\n public add(callback: () => void) {\n this.batchQueue.push(callback)\n this.processBatch()\n }\n}\n", "import fastDeepEqual from 'fast-deep-equal'\n\nexport class Signal<T> {\n value: T\n subscribers: Set<{\n notify: (value: T) => void\n destroy?: () => void\n }>\n subscriptions: Array<() => void>\n destroying = false\n\n constructor(value: T) {\n this.value = value\n this.subscribers = new Set()\n this.subscriptions = []\n }\n get() {\n return this.value\n }\n set(value: T) {\n // Short circuit and skip expensive `deepEqual` if there are not currently any subscribers\n if (this.subscribers.size === 0) {\n this.value = value\n return\n }\n\n if (fastDeepEqual(value, this.value) === false) {\n this.value = value\n for (const subscriber of this.subscribers) {\n subscriber.notify(this.value)\n }\n }\n }\n\n update(f: (current: T) => T) {\n this.set(f(this.value))\n }\n subscribe(notify: (value: T) => void, config?: { destroy?: () => void }) {\n const subscriber = { notify, destroy: config?.destroy }\n this.subscribers.add(subscriber)\n notify(this.value)\n return () => {\n this.subscribers.delete(subscriber)\n }\n }\n destroy() {\n // Prevent re-entrancy\n if (this.destroying) {\n return\n }\n\n this.destroying = true\n for (const subscriber of this.subscribers) {\n subscriber.destroy?.()\n }\n this.subscribers.clear()\n for (const subscription of this.subscriptions) {\n subscription()\n }\n this.subscriptions.splice(0, this.subscriptions.length)\n this.destroying = false\n }\n cleanSubscribers() {\n for (const subscriber of this.subscribers) {\n subscriber.destroy?.()\n }\n this.subscribers.clear()\n }\n map<T2>(f: (value: T) => T2): Signal<T2> {\n const signal2 = signal(f(this.value))\n signal2.subscriptions.push(\n this.subscribe((value) => signal2.set(f(value)), {\n destroy: () => signal2.destroy(),\n }),\n )\n return signal2\n }\n}\n\nexport function signal<T>(value: T) {\n return new Signal(value)\n}\n\nif (typeof window !== 'undefined') {\n ;(window as any).signal = signal\n ;(window as any).deepEqual = fastDeepEqual\n}\n", "import type {\n Component,\n NodeModel,\n} from '@nordcraft/core/dist/component/component.types'\n\ntype NodeWithNodeId = NodeModel & { nodeId: string }\n\ninterface NodeAndAncestorLookup {\n node: NodeWithNodeId\n ancestors: NodeWithNodeId[]\n}\n\nexport const getNodeAndAncestors = (\n component: Component,\n root: NodeModel,\n id: unknown,\n): NodeAndAncestorLookup | undefined => {\n if (typeof id !== 'string' || id.length === 0) {\n return undefined\n }\n const path = id.split('.')\n const pathParsed = path.map((n) => parseInt(n))\n const ancestors: NodeWithNodeId[] = []\n // nodePath skips the root element as it's selected as the initial\n // value in the reduce below\n const nodePath = pathParsed.slice(1)\n const node = nodePath.reduce((node: NodeModel | undefined, childIndex, i) => {\n switch (node?.type) {\n // 'text' elements don't have any children\n case 'element':\n case 'component':\n case 'slot':\n // Ancestors are elements before the target node\n if (i <= nodePath.length - 1) {\n ancestors.push({\n ...node,\n // Use the original path as origin to get correct nodeIds\n nodeId: path.slice(0, i + 1).join('.'),\n })\n }\n return component.nodes[node.children[childIndex]]\n default:\n return undefined\n }\n }, root)\n if (node === undefined) {\n return undefined\n }\n return { node: { ...node, nodeId: id }, ancestors }\n}\n\nexport const isNodeOrAncestorConditional = (\n nodeLookup?: NodeAndAncestorLookup,\n): nodeLookup is NodeAndAncestorLookup =>\n nodeLookup?.node?.condition !== undefined ||\n nodeLookup?.ancestors.some((a) => a.condition !== undefined) === true\n\n/**\n * @returns The next sibling element or null if this is the last element. A nc sibling is a sibling with a higher index or the same index but a higher repeat index.\n */\nexport const getNextSiblingElement = (\n path: string,\n parentElement: Element | ShadowRoot,\n) => {\n const pathParts = path.split('.')\n const lastPathPart = pathParts.slice(-1)[0]\n const index = parseInt(lastPathPart)\n const repeatIndex = parseInt(String(lastPathPart.split('(')[1]))\n\n // Find the first child that either has a higher index or a similar index, but higher repeat index\n for (const child of parentElement.children) {\n const childPath = child.getAttribute('data-id')\n const lastChildPathPart = childPath?.split('.').slice(-1)[0]\n const childIndex = parseInt(String(lastChildPathPart))\n if (\n childIndex === index &&\n parseInt(String(lastChildPathPart?.split('(')[1])) > repeatIndex\n ) {\n return child\n }\n\n if (childIndex > index) {\n return child\n }\n }\n\n return null\n}\n\n/**\n * This function efficiently ensures that:\n * 1. New items are added in the correct position.\n * 2. Existing items are not moved if they are already in the correct order.\n */\nexport function ensureEfficientOrdering(\n parentElement: Element | ShadowRoot,\n items: ReadonlyArray<Element | Text>,\n nextElement: Element | Text | null = null,\n) {\n // Identify the starting point for comparisons.\n let insertBeforeElement = nextElement // If insertBeforeElement is null, items will be appended at the end.\n\n // To track the current position in the DOM, we'll use a marker that advances through the sibling elements.\n let currentMarker = insertBeforeElement\n ? insertBeforeElement.previousSibling\n : parentElement.lastChild\n\n // We'll process the items array in reverse order to minimize the number of DOM operations.\n for (let i = items.length - 1; i >= 0; i--) {\n const item = items[i]\n\n // Check if the item is already in the correct position by comparing it with the currentMarker.\n if (item === currentMarker) {\n // The item is in the correct position, move the marker to the previous sibling.\n currentMarker = item.previousSibling\n } else {\n // The item is either not in the DOM or not in the correct position.\n // Insert the item before the insertBeforeElement (or append it if insertBeforeElement is null).\n parentElement.insertBefore(item, insertBeforeElement)\n }\n\n // Update insertBeforeElement to the current item for the next iteration, as we need to insert subsequent items before this one.\n insertBeforeElement = item\n }\n}\n", "import { variantSelector, type StyleVariant } from '../styling/variantSelector'\n\ntype NodeSelectorOptions =\n | {\n componentName: string\n nodeId: string | undefined\n variant?: StyleVariant\n }\n | {\n componentName?: never\n nodeId?: never\n variant?: StyleVariant\n }\n\nexport function getNodeSelector(\n path: string,\n { componentName, nodeId, variant }: NodeSelectorOptions = {},\n): string {\n let selector = `[data-id=\"${path}\"]`\n if (componentName) {\n selector += `.${componentName}`\n }\n if (nodeId) {\n selector += `\\\\:${nodeId}`\n }\n if (variant) {\n selector += variantSelector(variant)\n }\n\n return selector\n}\n", "/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */\nimport type { Component } from '@nordcraft/core/dist/component/component.types'\n\nexport const isContextProvider = (component: Component) =>\n (component.formulas &&\n Object.values(component.formulas).some(\n ({ exposeInContext }) => exposeInContext,\n )) ||\n (component.workflows &&\n Object.values(component.workflows).some(\n ({ exposeInContext }) => exposeInContext,\n ))\n", "import type {\n Component,\n ComponentData,\n} from '@nordcraft/core/dist/component/component.types'\nimport type { FormulaContext } from '@nordcraft/core/dist/formula/formula'\nimport { applyFormula } from '@nordcraft/core/dist/formula/formula'\nimport { mapObject } from '@nordcraft/core/dist/utils/collections'\nimport { isDefined } from '@nordcraft/core/dist/utils/util'\nimport type { Signal } from '../signal/signal'\nimport type { ComponentContext } from '../types'\n\nexport function subscribeToContext(\n componentDataSignal: Signal<ComponentData>,\n component: Component,\n ctx: ComponentContext,\n) {\n Object.entries(component.contexts ?? {}).forEach(\n ([providerName, context]) => {\n const provider =\n ctx.providers[[ctx.package, providerName].filter(isDefined).join('/')]\n\n if (provider) {\n context.formulas.forEach((formulaName) => {\n const formulaDataSignal = provider.formulaDataSignals[formulaName]\n if (!formulaDataSignal) {\n // eslint-disable-next-line no-console\n console.warn(\n `Component error(${component.name}): Provider ${providerName} does not expose a formula named \"${formulaName}\". Available formulas are: [\"${Object.keys(\n provider.formulaDataSignals,\n ).join('\", \"')}\"]`,\n )\n return\n }\n\n formulaDataSignal.subscribe((value) => {\n componentDataSignal.update((data) => ({\n ...data,\n Contexts: {\n ...data.Contexts,\n [providerName]: {\n ...data.Contexts?.[providerName],\n [formulaName]: value,\n },\n },\n }))\n })\n })\n }\n\n // In preview and absence of a real provider, we fake providers with their testData values. This is useful for testing components in isolation.\n // This is for preview mode only, and should preferably be stripped from the page and custom-elements runtime.\n else if (\n !provider &&\n ctx.env.runtime === 'preview' &&\n ctx.toddle._preview\n ) {\n const testProvider = ctx.components?.find(\n (comp) =>\n comp.name ===\n [ctx.package, providerName].filter(isDefined).join('/'),\n )\n\n if (!testProvider) {\n // eslint-disable-next-line no-console\n console.error(\n `Component error(${component.name}): Could not find provider \"${providerName}\". No such component exist.`,\n )\n return\n }\n\n // Derive the package name from the provider name as we do not have a real component to work with\n const [, testProviderPackage] = providerName.split('/').reverse()\n const formulaContext: FormulaContext = {\n data: {\n Attributes: mapObject(testProvider.attributes, ([name, attr]) => [\n name,\n attr.testValue,\n ]),\n },\n component: testProvider,\n root: ctx?.root,\n formulaCache: {},\n package: testProviderPackage ?? ctx?.package,\n toddle: ctx.toddle,\n env: ctx.env,\n }\n\n if (testProvider.route) {\n formulaContext.data['URL parameters'] = {\n ...Object.fromEntries(\n testProvider.route.path\n .filter((p) => p.type === 'param')\n .map((p) => [p.name, p.testValue]),\n ),\n ...mapObject(testProvider.route.query, ([name, { testValue }]) => [\n name,\n testValue,\n ]),\n }\n }\n formulaContext.data.Variables = mapObject(\n testProvider.variables,\n ([name, variable]) => [\n name,\n applyFormula(variable.initialValue, formulaContext),\n ],\n )\n\n componentDataSignal.update((data) => ({\n ...data,\n Contexts: {\n ...data.Contexts,\n [providerName]: Object.fromEntries(\n context.formulas.map((formulaName) => {\n const formula = testProvider.formulas?.[formulaName]\n if (!formula) {\n // eslint-disable-next-line no-console\n console.warn(\n `Component error(${component.name}): Could not find formula \"${formulaName}\" in provider \"${providerName}\"`,\n )\n return [formulaName, null]\n }\n\n return [\n formulaName,\n applyFormula(formula.formula, formulaContext),\n ]\n }),\n ),\n },\n }))\n }\n },\n )\n}\n", "import type {\n Component,\n ComponentData,\n} from '@nordcraft/core/dist/component/component.types'\nimport type { Signal } from '../signal/signal'\n\nexport function initLogState() {\n ;(window as any).logState = () => {\n // eslint-disable-next-line no-console\n console.table(\n Object.entries(window.__components ?? {}).map(([name, sig]) => {\n return {\n name,\n ...(sig as any).get(),\n }\n }),\n )\n }\n}\n\nexport function registerComponentToLogState(\n component: Component,\n dataSignal: Signal<ComponentData>,\n) {\n if (!window.__components) {\n window.__components = {}\n }\n\n window.__components[component.name] = dataSignal\n}\n", "import type {\n Component,\n ComponentData,\n} from '@nordcraft/core/dist/component/component.types'\nimport type {\n Formula,\n FunctionOperation,\n} from '@nordcraft/core/dist/formula/formula'\nimport { get, mapObject } from '@nordcraft/core/dist/utils/collections'\nimport { isDefined } from '@nordcraft/core/dist/utils/util'\nimport type { FormulaCache } from '../types'\n\nexport function createFormulaCache(component: Component): FormulaCache {\n if (!isDefined(component.formulas)) {\n return {}\n }\n return mapObject(component.formulas, ([name, f]) => {\n const { canCache, keys } = f.memoize\n ? getFormulaCacheConfig(f.formula, component)\n : { canCache: false, keys: [] }\n let cacheInput: any\n let cacheData: any\n\n return [\n name,\n {\n get: (data: ComponentData) => {\n if (\n canCache &&\n cacheInput &&\n keys.every((key) => {\n return get(data, key) === get(cacheInput, key)\n })\n ) {\n return { hit: true, data: cacheData }\n }\n return { hit: false }\n },\n set: (data: ComponentData, result: any) => {\n if (canCache) {\n cacheInput = data\n cacheData = result\n }\n },\n },\n ]\n })\n}\n\nfunction getFormulaCacheConfig(formula: Formula, component: Component) {\n const paths: string[][] = []\n function visitOperation(op: Formula) {\n if (!op) {\n return\n }\n if (op.type === 'path' && op.path[0] !== 'Args') {\n paths.push(op.path)\n }\n if (Array.isArray((op as any)?.arguments)) {\n ;(op as FunctionOperation)?.arguments.forEach((arg) =>\n visitOperation(arg.formula),\n )\n }\n if (op.type === 'record' && Array.isArray(op.entries)) {\n op.entries.forEach((arg) => visitOperation(arg.formula))\n }\n\n if (op.type === 'apply') {\n if (!component.formulas?.[op.name]?.memoize) {\n throw new Error('Cannot memoize')\n }\n visitOperation(component.formulas?.[op.name]?.formula)\n }\n }\n try {\n visitOperation(formula)\n } catch {\n return {\n canCache: false,\n keys: [],\n }\n }\n\n const keys: string[][] = []\n paths\n .sort((a, b) => a.length - b.length)\n .forEach((path) => {\n if (!keys.some((key) => key.every((k, i) => k === path[i]))) {\n keys.push(path)\n }\n })\n return {\n canCache: true,\n keys,\n }\n}\n", "import type { MediaQuery } from '@nordcraft/core/dist/component/component.types'\n\n/**\n * CustomPropertyStyleSheet is a utility class that manages CSS custom properties\n * (variables) in a dedicated CSSStyleSheet. It allows for efficient registration,\n * updating, and removal of style properties as fast as setting style properties.\n *\n * It abstracts the complexity of managing CSS rules via. indexing and\n * provides a simple API to register and unregister style properties for specific\n * selectors.\n */\nexport class CustomPropertyStyleSheet {\n private styleSheet: CSSStyleSheet\n\n // Selector to rule index mapping\n private ruleMap: Map<string, CSSStyleRule | CSSNestedDeclarations> | undefined\n\n constructor(root: Document | ShadowRoot, styleSheet?: CSSStyleSheet | null) {\n if (styleSheet) {\n this.styleSheet = styleSheet\n } else {\n this.styleSheet = new CSSStyleSheet()\n root.adoptedStyleSheets.push(this.getStyleSheet())\n }\n }\n\n /**\n * @returns A function to update the property value efficiently.\n */\n public registerProperty(\n selector: string,\n name: string,\n options?: {\n mediaQuery?: MediaQuery\n startingStyle?: boolean\n },\n ): (newValue: string) => void {\n this.ruleMap ??= this.hydrateFromBase()\n const fullSelector = CustomPropertyStyleSheet.getFullSelector(\n selector,\n options,\n )\n\n // Check if the selector already exists\n let rule = this.ruleMap.get(fullSelector)\n if (!rule) {\n const ruleIndex = this.styleSheet.insertRule(\n fullSelector,\n this.styleSheet.cssRules.length,\n )\n let newRule = this.styleSheet.cssRules[ruleIndex]\n\n // We are only interested in the dynamic style, so get the actual style rule, not media or other nested rules. Loop until we are at the bottom most rule.\n while (\n (newRule as any).cssRules &&\n (newRule as CSSGroupingRule).cssRules.length > 0\n ) {\n newRule = (newRule as CSSGroupingRule).cssRules[0]\n }\n rule = newRule as CSSStyleRule | CSSNestedDeclarations\n this.ruleMap.set(fullSelector, rule)\n }\n\n return (value: string) => {\n rule.style.setProperty(name, value)\n }\n }\n\n public unregisterProperty(\n selector: string,\n name: string,\n options?: {\n mediaQuery?: MediaQuery\n startingStyle?: boolean\n deepClean?: boolean\n },\n ): void {\n if (!this.ruleMap) {\n return\n }\n\n const fullSelector = CustomPropertyStyleSheet.getFullSelector(\n selector,\n options,\n )\n\n const rule = this.ruleMap.get(fullSelector)\n if (!rule) {\n return\n }\n\n rule.style.removeProperty(name)\n\n // Cleaning up empty selectors is probably not necessary in production and may have performance implications.\n // However, it is required for the editor-preview as it is a dynamic environment and things may get reordered and canvas reused.\n if (options?.deepClean && rule.style.length === 0) {\n this.styleSheet.deleteRule(\n Array.from(this.ruleMap.keys()).indexOf(fullSelector),\n )\n this.ruleMap.delete(fullSelector)\n }\n }\n\n public getStyleSheet(): CSSStyleSheet {\n return this.styleSheet\n }\n\n /**\n * Maps all selectors to their rule index. This is used to map the initial\n * SSR style variable values to their selectors.\n */\n private hydrateFromBase() {\n const ruleIndex: Map<string, CSSStyleRule> = new Map()\n for (let i = 0; i < this.styleSheet.cssRules.length; i++) {\n let rule = this.styleSheet.cssRules[i]\n const selector = CustomPropertyStyleSheet.selectorFromCSSRule(rule)\n // Get last part of the selector, which is the actual selector we are interested in\n while (\n (rule as CSSGroupingRule).cssRules &&\n (rule as CSSGroupingRule).cssRules.length > 0\n ) {\n rule = (rule as CSSGroupingRule).cssRules[0]\n }\n\n ruleIndex.set(selector, rule as CSSStyleRule)\n }\n return ruleIndex\n }\n\n private static selectorFromCSSRule(rule: CSSRule): string {\n switch (rule.constructor.name) {\n case 'CSSStyleRule':\n // For these rules, we just return (potentially with subrules if any cssRules exist)\n return `${(rule as CSSStyleRule).selectorText} { ${Array.from(\n (rule as CSSStyleRule).cssRules,\n )\n .map(CustomPropertyStyleSheet.selectorFromCSSRule)\n .join(', ')}}`\n case 'CSSStartingStyleRule':\n return `@starting-style { ${Array.from(\n (rule as CSSStartingStyleRule).cssRules,\n )\n .map(CustomPropertyStyleSheet.selectorFromCSSRule)\n .join(', ')}}`\n case 'CSSMediaRule':\n return `@media ${(rule as CSSMediaRule).media.mediaText} { ${Array.from(\n (rule as CSSMediaRule).cssRules,\n )\n .map(CustomPropertyStyleSheet.selectorFromCSSRule)\n .join(', ')}}`\n case 'CSSNestedDeclarations':\n return ''\n default:\n // eslint-disable-next-line no-console\n console.warn(\n `Unsupported CSS rule type: ${rule.constructor.name}. Returning empty selector.`,\n )\n return ''\n }\n }\n\n private static getFullSelector(\n selector: string,\n options?: {\n mediaQuery?: MediaQuery\n startingStyle?: boolean\n },\n ) {\n let result =\n selector + (options?.startingStyle ? ' { @starting-style { }}' : ' { }')\n if (options?.mediaQuery) {\n result = `@media (${Object.entries(options.mediaQuery)\n .map(([key, value]) => `${key}: ${value}`)\n .filter(Boolean)\n .join(') and (')}) { ${result}}`\n }\n\n return result\n }\n}\n", "import type { Signal } from '../signal/signal'\n\nimport { CUSTOM_PROPERTIES_STYLESHEET_ID } from '@nordcraft/core/dist/styling/theme.const'\nimport type { StyleVariant } from '@nordcraft/core/dist/styling/variantSelector'\nimport type { Runtime } from '@nordcraft/core/dist/types'\nimport { CustomPropertyStyleSheet } from '../styles/CustomPropertyStyleSheet'\n\nlet customPropertiesStylesheet: CustomPropertyStyleSheet | undefined\n\nexport function subscribeCustomProperty({\n selector,\n customPropertyName,\n signal,\n variant,\n root,\n runtime,\n}: {\n selector: string\n customPropertyName: string\n signal: Signal<string>\n variant?: StyleVariant\n root: Document | ShadowRoot\n runtime: Runtime\n}) {\n customPropertiesStylesheet ??= new CustomPropertyStyleSheet(\n root,\n (\n root.getElementById(CUSTOM_PROPERTIES_STYLESHEET_ID) as\n | HTMLStyleElement\n | undefined\n )?.sheet,\n )\n\n signal.subscribe(\n customPropertiesStylesheet.registerProperty(\n selector,\n customPropertyName,\n variant,\n ),\n {\n destroy: () => {\n customPropertiesStylesheet?.unregisterProperty(\n selector,\n customPropertyName,\n {\n deepClean: runtime === 'preview',\n mediaQuery: variant?.mediaQuery,\n startingStyle: variant?.startingStyle,\n },\n )\n },\n },\n )\n}\n", "import { isLegacyApi, sortApiObjects } from '@nordcraft/core/dist/api/api'\nimport type {\n ComponentData,\n ComponentNodeModel,\n SupportedNamespaces,\n} from '@nordcraft/core/dist/component/component.types'\nimport { applyFormula } from '@nordcraft/core/dist/formula/formula'\nimport { appendUnit } from '@nordcraft/core/dist/styling/customProperty'\nimport { mapObject } from '@nordcraft/core/dist/utils/collections'\nimport { getNodeSelector } from '@nordcraft/core/dist/utils/getNodeSelector'\nimport { isDefined } from '@nordcraft/core/dist/utils/util'\nimport { isContextApiV2 } from '../api/apiUtils'\nimport { createLegacyAPI } from '../api/createAPI'\nimport { createAPI } from '../api/createAPIv2'\nimport { isContextProvider } from '../context/isContextProvider'\nimport { subscribeToContext } from '../context/subscribeToContext'\nimport { registerComponentToLogState } from '../debug/logState'\nimport { handleAction } from '../events/handleAction'\nimport type { Signal } from '../signal/signal'\nimport { signal } from '../signal/signal'\nimport type { ComponentChild, ComponentContext, ContextApi } from '../types'\nimport { createFormulaCache } from '../utils/createFormulaCache'\nimport { subscribeCustomProperty } from '../utils/subscribeCustomProperty'\nimport { renderComponent } from './renderComponent'\n\nexport type RenderComponentNodeProps = {\n path: string\n node: ComponentNodeModel\n dataSignal: Signal<ComponentData>\n ctx: ComponentContext\n parentElement: Element | ShadowRoot\n instance: Record<string, string>\n namespace?: SupportedNamespaces\n}\n\nexport function createComponent({\n node,\n path,\n dataSignal,\n ctx,\n parentElement,\n instance,\n namespace,\n}: RenderComponentNodeProps): ReadonlyArray<Element | Text> {\n const nodeLookupKey = [ctx.package, node.name].filter(isDefined).join('/')\n const component = ctx.components?.find((comp) => comp.name === nodeLookupKey)\n if (!component) {\n // eslint-disable-next-line no-console\n console.warn(\n `Could not find component \"${nodeLookupKey}\" for component \"${\n ctx.component.name\n }\". Available components are: [\"${ctx.components\n .map((c) => c.name)\n .join('\", \"')}\"]`,\n )\n return []\n }\n const attributesSignal = dataSignal.map((data) => {\n return mapObject(node.attrs, ([attr, value]) => [\n attr,\n value?.type !== 'value'\n ? applyFormula(value, {\n data,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n })\n : value?.value,\n ])\n })\n Object.entries(node.customProperties ?? {}).forEach(\n ([customPropertyName, customProperty]) =>\n subscribeCustomProperty({\n selector: getNodeSelector(path, {\n componentName: ctx.component.name,\n nodeId: node.id,\n }),\n signal: dataSignal.map((data) =>\n appendUnit(\n applyFormula(customProperty.formula, {\n data,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n }),\n customProperty.unit,\n ),\n ),\n customPropertyName,\n root: ctx.root,\n runtime: ctx.env.runtime,\n }),\n )\n node.variants?.forEach((variant) => {\n Object.entries(variant.customProperties ?? {}).forEach(\n ([customPropertyName, customProperty]) =>\n subscribeCustomProperty({\n selector: getNodeSelector(path, {\n componentName: ctx.component.name,\n nodeId: node.id,\n variant,\n }),\n signal: dataSignal.map((data) =>\n appendUnit(\n applyFormula(customProperty.formula, {\n data,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n }),\n customProperty.unit,\n ),\n ),\n customPropertyName,\n variant,\n root: ctx.root,\n runtime: ctx.env.runtime,\n }),\n )\n })\n\n const componentDataSignal = signal<ComponentData>({\n Location: dataSignal.get().Location,\n Attributes: attributesSignal.get(),\n Apis: mapObject(component.apis, ([name, api]) => [\n name,\n {\n data: null,\n isLoading:\n api.autoFetch &&\n applyFormula(api.autoFetch, {\n data: dataSignal.get(),\n component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n })\n ? true\n : false,\n error: null,\n },\n ]),\n })\n // Subscribe context before calculating variable initial values to ensure they can reference context values\n subscribeToContext(componentDataSignal, component, ctx)\n componentDataSignal.update((data) => ({\n ...data,\n Variables: mapObject(component.variables, ([name, variable]) => [\n name,\n applyFormula(variable.initialValue, {\n // Initial value\n data: componentDataSignal.get(),\n component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n }),\n ]),\n }))\n registerComponentToLogState(component, componentDataSignal)\n\n // Call the abort signal if the component's datasignal is destroyed (component unmounted) to cancel any pending requests\n const abortController = new AbortController()\n componentDataSignal.subscribe(() => {}, {\n destroy: () =>\n abortController.abort(`Component ${component.name} unmounted`),\n })\n const formulaCache = createFormulaCache(component)\n\n // Note: this function must run procedurally to ensure apis (which are in correct order) can reference each other\n const apis: Record<string, ContextApi> = {}\n sortApiObjects(Object.entries(component.apis)).forEach(([name, api]) => {\n if (isLegacyApi(api)) {\n apis[name] = createLegacyAPI(api, {\n ...ctx,\n apis,\n component,\n dataSignal: componentDataSignal,\n abortSignal: abortController.signal,\n isRootComponent: false,\n formulaCache,\n package: node.package ?? ctx.package,\n triggerEvent: (eventTrigger, data) => {\n const eventHandler = Object.values(node.events).find(\n (e) => e.trigger === eventTrigger,\n )\n if (eventHandler) {\n eventHandler.actions.forEach((action) =>\n handleAction(action, { ...dataSignal.get(), Event: data }, ctx),\n )\n }\n },\n })\n } else {\n apis[name] = createAPI({\n apiRequest: api,\n ctx: {\n ...ctx,\n apis,\n component,\n dataSignal: componentDataSignal,\n abortSignal: abortController.signal,\n isRootComponent: false,\n formulaCache,\n package: node.package ?? ctx.package,\n triggerEvent: (eventTrigger, data) => {\n const eventHandler = Object.values(node.events).find(\n (e) => e.trigger === eventTrigger,\n )\n if (eventHandler) {\n eventHandler.actions.forEach((action) =>\n handleAction(action, { ...dataSignal.get(), Event: data }, ctx),\n )\n }\n },\n },\n componentData: componentDataSignal.get(),\n })\n }\n })\n Object.values(apis)\n .filter(isContextApiV2)\n .forEach((api) => {\n api.triggerActions(componentDataSignal.get())\n })\n\n const onEvent = (eventTrigger: string, data: any) => {\n const eventHandler = Object.values(node.events).find(\n (e) => e.trigger === eventTrigger,\n )\n if (eventHandler) {\n eventHandler.actions.forEach((action) =>\n handleAction(action, { ...dataSignal.get(), Event: data }, ctx),\n )\n }\n }\n\n let providers = ctx.providers\n if (isContextProvider(component)) {\n // Subscribe to exposed formulas and update the component's data signal\n const formulaDataSignals = Object.fromEntries(\n Object.entries(component.formulas ?? {})\n .filter(([, formula]) => formula.exposeInContext)\n .map(([name, formula]) => [\n name,\n componentDataSignal.map((data) =>\n applyFormula(formula.formula, {\n data,\n component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n }),\n ),\n ]),\n )\n\n providers = {\n ...providers,\n [component.name]: {\n component,\n formulaDataSignals,\n ctx: {\n ...ctx,\n apis,\n component,\n dataSignal: componentDataSignal,\n abortSignal: abortController.signal,\n triggerEvent: onEvent,\n },\n },\n }\n }\n\n const children: Record<string, Array<ComponentChild>> = {}\n for (let i = 0; i < node.children.length; i++) {\n const childId = node.children[i]\n const childNode = ctx.component.nodes[childId]\n const slotName = childNode.slot ?? 'default'\n children[slotName] = children[slotName] ?? []\n children[slotName].push({\n id: childId,\n path: `${path}.${i}[${slotName}]`,\n dataSignal,\n ctx: {\n ...ctx,\n package: node.package ?? ctx.package,\n },\n })\n }\n\n attributesSignal.subscribe(\n (Attributes) =>\n componentDataSignal.update((data) => ({\n ...data,\n Attributes,\n })),\n { destroy: () => componentDataSignal.destroy() },\n )\n\n return renderComponent({\n dataSignal: componentDataSignal,\n component,\n components: ctx.components,\n path,\n root: ctx.root,\n isRootComponent: false,\n children,\n formulaCache,\n providers,\n apis,\n abortSignal: abortController.signal,\n package: node.package ?? ctx.package,\n parentElement,\n onEvent,\n toddle: ctx.toddle,\n env: ctx.env,\n namespace,\n // If the root node is another component, then append and forward previous instance\n instance:\n node.id === 'root'\n ? { ...instance, [ctx.component.name]: 'root' }\n : { [ctx.component.name]: node.id ?? '' },\n })\n}\n", "export function getDragData(event: Event) {\n if (event instanceof DragEvent) {\n return Array.from(event.dataTransfer?.items ?? []).reduce<\n Record<string, any>\n >((dragData, item) => {\n dragData[item.type] = event.dataTransfer?.getData(item.type)\n return dragData\n }, {})\n }\n return\n}\n", "import type { ElementNodeModel } from '@nordcraft/core/dist/component/component.types'\nimport type { ComponentContext } from '../types'\n\nexport function getElementTagName(\n node: ElementNodeModel,\n ctx: ComponentContext,\n id: string,\n) {\n if (ctx.component.version === 2 && id === 'root') {\n return `${ctx.package ?? ctx.toddle.project}-${node.tag}`\n }\n\n return node.tag\n}\n", "import { isDefined, toBoolean } from '@nordcraft/core/dist/utils/util'\n\n/**\n * Some attributes need special handling.\n */\nexport function setAttribute(\n elem: HTMLElement | SVGElement | MathMLElement,\n attr: string,\n value: any,\n) {\n switch (attr) {\n case 'srcObject':\n case 'src':\n if (elem instanceof HTMLMediaElement) {\n ;(elem as any)[attr] = value\n } else {\n elem.setAttribute(attr, String(value))\n }\n break\n case 'value':\n case 'type': {\n if (elem instanceof SVGElement) {\n // The type attribute on SVG elements should just be added as an attribute\n // See https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/type\n if (toBoolean(value)) {\n elem.setAttribute(attr, String(value))\n }\n } else {\n let val = value\n if (elem instanceof HTMLProgressElement) {\n // An HTMLProgressElement will break other elements in our editor if the value is not a (finite) number\n // See docs here https://developer.mozilla.org/en-US/docs/Web/HTML/Element/progress#value\n // and original issue here https://discord.com/channels/972416966683926538/1317827591230722048\n if (!isDefined(value) || !Number.isFinite(Number(value))) {\n val = 0\n }\n }\n ;(elem as any)[attr] = toBoolean(val) ? String(val) : undefined\n }\n break\n }\n case 'muted':\n case 'autoplay':\n if (elem instanceof HTMLMediaElement) {\n ;(elem as any)[attr] = toBoolean(value)\n } else {\n elem.setAttribute(attr, String(value))\n }\n break\n default:\n if (toBoolean(value)) {\n elem.setAttribute(attr, String(value))\n if (\n // autofocus often does not work in the editor\n attr === 'autofocus' &&\n document.body.getAttribute('data-mode') !== 'design'\n ) {\n setTimeout(() => elem.focus(), 100)\n }\n } else {\n elem.removeAttribute(attr)\n }\n }\n}\n", "import type {\n ElementNodeModel,\n NodeModel,\n SupportedNamespaces,\n} from '@nordcraft/core/dist/component/component.types'\nimport { applyFormula } from '@nordcraft/core/dist/formula/formula'\nimport {\n getClassName,\n toValidClassName,\n} from '@nordcraft/core/dist/styling/className'\nimport { appendUnit } from '@nordcraft/core/dist/styling/customProperty'\nimport { getNodeSelector } from '@nordcraft/core/dist/utils/getNodeSelector'\nimport { isDefined, toBoolean } from '@nordcraft/core/dist/utils/util'\nimport type { ComponentData } from '@nordcraft/core/src/component/component.types'\nimport { handleAction } from '../events/handleAction'\nimport type { Signal } from '../signal/signal'\nimport type { ComponentContext } from '../types'\nimport { getDragData } from '../utils/getDragData'\nimport { getElementTagName } from '../utils/getElementTagName'\nimport { setAttribute } from '../utils/setAttribute'\nimport { subscribeCustomProperty } from '../utils/subscribeCustomProperty'\nimport type { NodeRenderer } from './createNode'\nimport { createNode } from './createNode'\n\nexport function createElement({\n node,\n dataSignal,\n id,\n path,\n ctx,\n namespace,\n instance,\n}: NodeRenderer<ElementNodeModel>): Element {\n const tag = getElementTagName(node, ctx, id)\n switch (tag) {\n case 'svg': {\n namespace = 'http://www.w3.org/2000/svg'\n break\n }\n case 'math': {\n namespace = 'http://www.w3.org/1998/Math/MathML'\n break\n }\n }\n\n // Explicitly setting a namespace has precedence over inferring it from the tag\n if (node.attrs['xmlns']?.type === 'value') {\n namespace = String(node.attrs['xmlns'].value) as SupportedNamespaces\n }\n\n const elem = namespace\n ? (document.createElementNS(namespace, tag) as SVGElement | MathMLElement)\n : document.createElement(tag)\n\n elem.setAttribute('data-node-id', id)\n if (path) {\n elem.setAttribute('data-id', path)\n }\n if (ctx.isRootComponent === false && id !== 'root') {\n elem.setAttribute('data-component', ctx.component.name)\n }\n const classHash = getClassName([node.style, node.variants])\n elem.classList.add(classHash)\n if (instance && id === 'root') {\n Object.entries(instance).forEach(([key, value]) => {\n elem.classList.add(toValidClassName(`${key}:${value}`))\n })\n }\n if (node.classes) {\n Object.entries(node.classes)?.forEach(([className, { formula }]) => {\n if (formula) {\n const classSignal = dataSignal.map((data) =>\n toBoolean(\n applyFormula(formula, {\n data,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n }),\n ),\n )\n classSignal.subscribe((show) =>\n show\n ? elem.classList.add(className)\n : elem.classList.remove(className),\n )\n } else {\n elem.classList.add(className)\n }\n })\n }\n\n Object.entries(node.attrs).forEach(([attr, value]) => {\n if (!isDefined(value)) {\n return\n }\n let o: Signal<any> | undefined\n const setupAttribute = () => {\n if (value.type === 'value') {\n setAttribute(elem, attr, value?.value)\n } else {\n o = dataSignal.map((data) =>\n applyFormula(value, {\n data,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n }),\n )\n o.subscribe((val) => {\n setAttribute(elem, attr, val)\n })\n }\n }\n if (\n attr === 'autofocus' &&\n ctx.env.runtime === 'preview' &&\n ctx.toddle._preview\n ) {\n ctx.toddle._preview.showSignal.subscribe(({ testMode }) => {\n if (testMode) {\n setupAttribute()\n } else {\n o?.destroy()\n elem.removeAttribute(attr)\n }\n })\n } else {\n setupAttribute()\n }\n })\n node['style-variables']?.forEach((styleVariable) => {\n const { name, formula, unit } = styleVariable\n const signal = dataSignal.map((data) => {\n const value = applyFormula(formula, {\n data,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n })\n return unit ? value + unit : value\n })\n\n signal.subscribe((value) => elem.style.setProperty(`--${name}`, value))\n })\n\n Object.entries(node.customProperties ?? {}).forEach(\n ([customPropertyName, { formula, unit }]) =>\n subscribeCustomProperty({\n customPropertyName,\n selector:\n ctx.env.runtime === 'custom-element' &&\n ctx.isRootComponent &&\n path === '0'\n ? `${getNodeSelector(path)}, :host`\n : getNodeSelector(path),\n signal: dataSignal.map((data) =>\n appendUnit(\n applyFormula(formula, {\n data,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n }),\n unit,\n ),\n ),\n root: ctx.root,\n runtime: ctx.env.runtime,\n }),\n )\n\n node.variants?.forEach((variant) => {\n Object.entries(variant.customProperties ?? {}).forEach(\n ([customPropertyName, { formula, unit }]) => {\n subscribeCustomProperty({\n customPropertyName,\n selector: getNodeSelector(path, {\n variant,\n }),\n variant,\n signal: dataSignal.map((data) =>\n appendUnit(\n applyFormula(formula, {\n data,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n }),\n unit,\n ),\n ),\n root: ctx.root,\n runtime: ctx.env.runtime,\n })\n },\n )\n })\n\n const eventHandlers: [string, (e: Event) => boolean][] = []\n Object.values(node.events).forEach((event) => {\n if (!event) {\n return\n }\n\n eventHandlers.push([\n event.trigger,\n getEventHandler({ event, dataSignal, ctx }),\n ])\n })\n\n eventHandlers.forEach(([eventName, handler]) => {\n elem.addEventListener(eventName, handler)\n })\n\n // for script, style & SVG<text> tags we only render text child.\n // this can be removed once we fix the editor to handle raw text nodes without wrapping <span>\n const nodeTag = node.tag.toLocaleLowerCase()\n if (nodeTag === 'script' || nodeTag === 'style') {\n const textValues: Array<Signal<string> | string> = []\n node.children\n .map<NodeModel | undefined>((child) => ctx.component.nodes[child])\n .filter((node) => node?.type === 'text')\n .forEach((node) => {\n if (node.value.type === 'value') {\n textValues.push(String(node.value.value))\n } else {\n const textSignal = dataSignal.map((data) => {\n return String(\n applyFormula(node.value, {\n data,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n }),\n )\n })\n textValues.push(textSignal)\n }\n })\n\n // if all values are string, we can directly set textContent\n if (textValues.every((value) => typeof value === 'string')) {\n elem.textContent = textValues.join('')\n }\n\n // for each signal, we subscribe and rewrite the entire textContent from all text nodes\n textValues\n .filter((value) => typeof value !== 'string')\n .forEach((valueSignal) => {\n valueSignal.subscribe(() => {\n elem.textContent = textValues\n .map((value) => (typeof value === 'string' ? value : value.get()))\n .join('')\n })\n })\n } else {\n const childNodes: (Element | Text)[] = []\n node.children.forEach((child, i) => {\n childNodes.push(\n ...createNode({\n parentElement: elem,\n id: child,\n path: path + '.' + i,\n dataSignal,\n ctx,\n namespace,\n instance,\n }),\n )\n })\n elem.append(...childNodes)\n }\n dataSignal.subscribe(() => {}, {\n destroy: () => {\n // TODO: Clean up event listeners, but after destruction of child signals (Maybe we need a \"afterDestroy\" hook on signals?)\n elem.parentNode?.removeChild(elem)\n },\n })\n\n return elem\n}\n\nconst getEventHandler =\n ({\n event,\n dataSignal,\n ctx,\n }: {\n event: ElementNodeModel['events'][string]\n dataSignal: Signal<ComponentData>\n ctx: ComponentContext\n }) =>\n (e: Event) => {\n event?.actions.forEach((action) => {\n if (e instanceof DragEvent) {\n ;(e as any).data = getDragData(e)\n }\n if (e instanceof ClipboardEvent) {\n try {\n ;(e as any).data = Array.from(e.clipboardData?.items ?? []).reduce<\n Record<string, any>\n >((dragData, item) => {\n try {\n dragData[item.type] = JSON.parse(\n e.clipboardData?.getData(item.type) as any,\n )\n } catch {\n dragData[item.type] = e.clipboardData?.getData(item.type)\n }\n return dragData\n }, {})\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('Could not get paste data', e)\n }\n }\n void handleAction(action, { ...dataSignal.get(), Event: e }, ctx, e)\n })\n return false\n }\n", "import type { SlotNodeModel } from '@nordcraft/core/dist/component/component.types'\nimport type { NodeRenderer } from './createNode'\nimport { createNode } from './createNode'\n\nexport function createSlot({\n path,\n node,\n dataSignal,\n ctx,\n parentElement,\n instance,\n namespace,\n}: NodeRenderer<SlotNodeModel>): ReadonlyArray<Element | Text> {\n const slotName = node.name ?? 'default'\n let children: Array<Element | Text> = []\n // Is slotted content provided?\n if (ctx.children[slotName]) {\n children = ctx.children[slotName].flatMap((child) => {\n const childDataSignal = child.dataSignal.map((data) => data)\n dataSignal.subscribe((data) => data, {\n destroy: () => childDataSignal.destroy(),\n })\n return createNode({\n ...child,\n dataSignal: childDataSignal,\n parentElement,\n ctx: {\n ...child.ctx,\n providers: ctx.providers,\n },\n instance,\n namespace,\n })\n })\n } else {\n // Otherwise, return placeholder content\n children = node.children.flatMap((child, i) => {\n return createNode({\n id: child,\n path: path + '.' + i,\n dataSignal,\n ctx,\n parentElement,\n instance,\n namespace,\n })\n })\n }\n\n if (ctx.env.runtime === 'custom-element' && ctx.isRootComponent) {\n const webComponentSlot = document.createElement('slot')\n webComponentSlot.setAttribute('name', slotName)\n children.forEach((child) => {\n webComponentSlot.appendChild(child)\n })\n\n return [webComponentSlot]\n }\n\n return children\n}\n", "import type {\n ComponentData,\n SupportedNamespaces,\n TextNodeModel,\n} from '@nordcraft/core/dist/component/component.types'\nimport { applyFormula } from '@nordcraft/core/dist/formula/formula'\nimport type { Signal } from '../signal/signal'\nimport type { ComponentContext } from '../types'\n\nexport type RenderTextProps = {\n node: TextNodeModel\n dataSignal: Signal<ComponentData>\n id: string\n path: string\n namespace?: SupportedNamespaces\n ctx: ComponentContext\n}\n\n/**\n * Create a text node\n *\n * Note: We wrap the text in a <span> to make it easier to select/highlight the text node in the preview.\n * We should find a better way to do this without wrapping the node, and instead use `createTextNode`.\n */\nexport function createText({\n node,\n id,\n path,\n dataSignal,\n namespace,\n ctx,\n}: RenderTextProps): HTMLSpanElement | Text {\n // Span element is not valid outside of the default namespace\n if (namespace && namespace !== 'http://www.w3.org/1999/xhtml') {\n return createTextNS({ node, dataSignal, ctx })\n }\n\n const { value } = node\n const elem = document.createElement('span')\n elem.setAttribute('data-node-id', id)\n if (typeof id === 'string') {\n elem.setAttribute('data-id', path)\n }\n if (ctx.isRootComponent === false) {\n elem.setAttribute('data-component', ctx.component.name)\n }\n elem.setAttribute('data-node-type', 'text')\n if (value.type !== 'value') {\n const sig = dataSignal.map((data) =>\n String(\n applyFormula(value, {\n data,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n }),\n ),\n )\n sig.subscribe((value) => {\n elem.innerText = value\n })\n } else {\n elem.innerText = String(value.value)\n }\n return elem\n}\n\n/**\n * This function is technically more performant than `createText` because it doesn't create a wrapping <span> element.\n * We would like to use this everywhere eventually, but we need to handle raw text selection in the editor (possibly by utilizing text ranges).\n */\nexport function createTextNS({\n node,\n dataSignal,\n ctx,\n}: Pick<RenderTextProps, 'node' | 'dataSignal' | 'ctx'>): Text {\n const { value } = node\n const textNode = document.createTextNode('')\n if (value.type !== 'value') {\n const sig = dataSignal.map((data) =>\n String(\n applyFormula(value, {\n data,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n }),\n ),\n )\n sig.subscribe((value) => {\n textNode.nodeValue = value\n })\n } else {\n textNode.nodeValue = String(value.value)\n }\n\n return textNode\n}\n", "/* eslint-disable no-console */\nimport type {\n ComponentData,\n NodeModel,\n SupportedNamespaces,\n} from '@nordcraft/core/dist/component/component.types'\nimport { applyFormula } from '@nordcraft/core/dist/formula/formula'\nimport { toBoolean } from '@nordcraft/core/dist/utils/util'\nimport type { Signal } from '../signal/signal'\nimport { signal } from '../signal/signal'\nimport type { ComponentContext } from '../types'\nimport { ensureEfficientOrdering, getNextSiblingElement } from '../utils/nodes'\nimport { createComponent } from './createComponent'\nimport { createElement } from './createElement'\nimport { createSlot } from './createSlot'\nimport { createText } from './createText'\n\nexport function createNode({\n id,\n dataSignal,\n path,\n ctx,\n namespace,\n parentElement,\n instance,\n}: {\n id: string\n dataSignal: Signal<ComponentData>\n path: string\n ctx: ComponentContext\n namespace?: SupportedNamespaces\n parentElement: Element | ShadowRoot\n instance: Record<string, string>\n}): ReadonlyArray<Element | Text> {\n const node = ctx.component.nodes[id]\n if (!node) {\n return []\n }\n const create = ({\n node,\n ...props\n }: NodeRenderer<NodeModel>): ReadonlyArray<Element | Text> => {\n switch (node.type) {\n case 'element':\n return [\n createElement({\n node,\n ...props,\n }),\n ]\n case 'component':\n // eslint-disable-next-line no-case-declarations\n const isLocalComponent = ctx.components.some(\n (c) => c.name === node.name,\n )\n return createComponent({\n node: { ...node, id }, // we need the node id for instance classes\n ...props,\n ctx: {\n ...ctx,\n package:\n node.package ?? (isLocalComponent ? undefined : ctx.package),\n },\n parentElement,\n })\n case 'text':\n return [createText({ ...props, node })]\n case 'slot':\n return createSlot({ ...props, node })\n }\n }\n\n function conditional({\n node,\n dataSignal,\n id,\n path,\n ctx,\n namespace,\n parentElement,\n instance,\n }: NodeRenderer<NodeModel>): ReadonlyArray<Element | Text> {\n let firstRun = true\n let childDataSignal: Signal<ComponentData> | null = null\n const showSignal = dataSignal.map((data) =>\n toBoolean(\n applyFormula(node.condition, {\n data,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n }),\n ),\n )\n\n const elements: Array<Element | Text> = []\n const toggle = (show: boolean) => {\n if (show && elements.length === 0) {\n childDataSignal?.destroy()\n childDataSignal = dataSignal.map((data) => data)\n elements.push(\n ...create({\n node,\n dataSignal: childDataSignal,\n path,\n id,\n ctx,\n namespace,\n parentElement,\n instance,\n }),\n )\n\n // No reason to continue if we are on first run, as the render phase has not yet been reached\n if (firstRun) {\n return\n }\n\n if (!parentElement || ctx.root.contains(parentElement) === false) {\n console.error(\n `Conditional: Parent element does not exist for \"${path}\" This is likely due to the DOM being modified outside of Nordcraft.`,\n )\n return\n }\n\n if (parentElement.querySelector(`[data-id=\"${path}\"]`)) {\n console.warn(\n `Conditional: Element with data-id=\"${path}\" already exists. This is likely due to the DOM being modified outside of Nordcraft`,\n )\n return\n }\n\n const nextPathElement = getNextSiblingElement(path, parentElement)\n for (const element of elements) {\n parentElement.insertBefore(element, nextPathElement)\n }\n } else if (!show) {\n childDataSignal?.destroy()\n elements.forEach((elem) => elem.remove())\n elements.splice(0, elements.length)\n }\n }\n\n showSignal.subscribe(toggle, {\n destroy: () => {\n childDataSignal?.destroy()\n },\n })\n if (ctx.env.runtime === 'preview' && ctx.toddle._preview) {\n ctx.toddle._preview.showSignal.subscribe(\n ({ displayedNodes, testMode }) => {\n if (displayedNodes.includes(path) && !testMode) {\n // only override the default show if we are in design mode (not test mode)\n toggle(true)\n } else {\n toggle(showSignal.get())\n }\n },\n )\n }\n\n firstRun = false\n return elements\n }\n\n function repeat(): ReadonlyArray<Element | Text> {\n let firstRun = true\n let repeatItems = new Map<\n string | number,\n {\n dataSignal: Signal<ComponentData>\n cleanup: () => void\n elements: ReadonlyArray<Element | Text>\n }\n >()\n const repeatSignal = dataSignal.map((data) => {\n const list = applyFormula(node.repeat, {\n data,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n })\n if (typeof list !== 'object') {\n return []\n }\n return Object.entries(list ?? {})\n })\n\n repeatSignal.subscribe(\n (list) => {\n const newRepeatItems = new Map<\n string | number,\n {\n dataSignal: Signal<ComponentData>\n cleanup: () => void\n elements: ReadonlyArray<Element | Text>\n }\n >()\n\n for (let i = 0; i < list.length; i++) {\n const [Key, Item] = list[i]\n const childData = {\n ...dataSignal.get(),\n ListItem: {\n ...(dataSignal.get().ListItem\n ? { Parent: dataSignal.get().ListItem }\n : {}),\n Item,\n Index: Number(i),\n Key,\n },\n }\n let childKey = node.repeatKey\n ? applyFormula(node.repeatKey, {\n data: childData,\n component: ctx.component,\n formulaCache: ctx.formulaCache,\n root: ctx.root,\n package: ctx.package,\n toddle: ctx.toddle,\n env: ctx.env,\n })\n : Key\n\n // Can't we just use the Item reference as key as we have fine-grained reactivity at this point?\n // That way we won't need repeatKey at all as everything will be optimized by reference?!?\n // https://github.com/solidjs/solid/discussions/366#discussioncomment-1220239\n // childKey = Item\n // Do fallback to Key(index) if repeatKey has duplicate values.\n // This will essentially disable the optimization for repeatKey and will always re-render the children on every change.\n if (newRepeatItems.has(childKey)) {\n console.warn(\n `Duplicate key \"${childKey}\" found in repeat. Fallback to index as key. This will cause a re-render of the duplicated children on every change.`,\n )\n childKey = Key\n }\n\n const existingItem = repeatItems.get(childKey)\n if (existingItem) {\n newRepeatItems.set(childKey, existingItem)\n existingItem.dataSignal.update((data) => {\n return {\n ...data,\n ListItem: {\n ...(dataSignal.get().ListItem\n ? { Parent: dataSignal.get().ListItem }\n : {}),\n Item,\n Index: Number(i),\n Key,\n },\n }\n })\n } else {\n const childDataSignal = signal<ComponentData>(childData)\n const cleanup = dataSignal.subscribe(\n (data) => {\n if (firstRun) {\n return\n }\n\n childDataSignal.update(({ ListItem }) => {\n return {\n ...data,\n ListItem,\n }\n })\n },\n {\n destroy: () => childDataSignal.destroy(),\n },\n )\n\n const args = {\n node,\n id,\n dataSignal: childDataSignal,\n path: Key === '0' ? path : `${path}(${Key})`,\n ctx,\n namespace,\n parentElement,\n instance,\n }\n const elements = node.condition ? conditional(args) : create(args)\n newRepeatItems.set(childKey, {\n dataSignal: childDataSignal,\n cleanup,\n elements,\n })\n }\n }\n\n // Cleanup removed items' data\n Array.from(repeatItems.entries()).forEach(([key, item]) => {\n if (!newRepeatItems.has(key)) {\n item.cleanup()\n item.dataSignal.destroy()\n item.elements.forEach((e) => e.remove())\n }\n })\n repeatItems = newRepeatItems\n\n // No reason to continue if we are on first run, as the render-phase for the parent\n // has not yet been reached, or if there are no items to render\n if (firstRun || repeatItems.size === 0) {\n return\n }\n\n if (!parentElement || ctx.root.contains(parentElement) === false) {\n console.error(\n `Repeat: Parent element does not exist for ${path}. This is likely due to the DOM being modified outside of Nordcraft.`,\n )\n return\n }\n\n ensureEfficientOrdering(\n parentElement,\n Array.from(repeatItems.values()).flatMap((e) => e.elements),\n getNextSiblingElement(path, parentElement),\n )\n },\n {\n destroy: () =>\n Array.from(repeatItems.values()).forEach((e) => {\n e.cleanup()\n e.dataSignal.destroy()\n e.elements.forEach((e) => e.remove())\n }),\n },\n )\n\n // We utilize that the signal subscription runs synchronously above,\n // so we already have a populated repeatItems map to return initially.\n // Note: `repeatItems.values()` is okay here, as maps' iterator is ordered by insertion.\n firstRun = false\n return Array.from(repeatItems.values()).flatMap((e) => e.elements)\n }\n\n if (node.repeat) {\n return repeat()\n }\n if (node.condition) {\n return conditional({\n node,\n dataSignal,\n ctx,\n id,\n path,\n namespace,\n parentElement,\n instance,\n })\n }\n return create({\n node,\n dataSignal,\n ctx,\n id,\n path,\n namespace,\n parentElement,\n instance,\n })\n}\nexport type NodeRenderer<NodeType> = {\n node: NodeType\n dataSignal: Signal<ComponentData>\n id: string\n path: string\n ctx: ComponentContext\n namespace?: SupportedNamespaces\n parentElement: Element | ShadowRoot\n instance: Record<string, string>\n}\n", "import { isLegacyApi, sortApiObjects } from '@nordcraft/core/dist/api/api'\nimport type {\n Component,\n ComponentData,\n} from '@nordcraft/core/dist/component/component.types'\nimport type { ToddleEnv } from '@nordcraft/core/dist/formula/formula'\nimport { applyFormula } from '@nordcraft/core/dist/formula/formula'\nimport { createStylesheet } from '@nordcraft/core/dist/styling/style.css'\nimport type { Theme } from '@nordcraft/core/dist/styling/theme'\nimport { theme as defaultTheme } from '@nordcraft/core/dist/styling/theme.const'\nimport type { Toddle } from '@nordcraft/core/dist/types'\nimport { mapObject } from '@nordcraft/core/dist/utils/collections'\nimport { isContextApiV2 } from '../api/apiUtils'\nimport { createLegacyAPI } from '../api/createAPI'\nimport { createAPI } from '../api/createAPIv2'\nimport { renderComponent } from '../components/renderComponent'\nimport { isContextProvider } from '../context/isContextProvider'\nimport type { Signal } from '../signal/signal'\nimport { signal } from '../signal/signal'\nimport type { ComponentContext, LocationSignal } from '../types'\n\n/**\n * Base class for all toddle components\n */\nexport class ToddleComponent extends HTMLElement {\n /**\n * Public reference to the toddle instance for debugging purposes. `el.toddle.errors` can be used to check for non-verbose errors.\n */\n toddle: Toddle<LocationSignal, never>\n #component: Component\n #ctx: ComponentContext\n #shadowRoot: ShadowRoot\n #signal: Signal<ComponentData>\n #files: { themes: Record<string, Theme> }\n\n constructor(\n component: Component,\n options: { components: Component[]; themes: Record<string, Theme> },\n toddle: Toddle<LocationSignal, never>,\n ) {\n super()\n this.toddle = toddle\n const internals = this.attachInternals()\n if (internals.shadowRoot) {\n // Not used yet, but can be used to hydrate rather than render the shadow dom\n this.#shadowRoot = internals.shadowRoot\n } else {\n this.#shadowRoot = this.attachShadow({ mode: 'open' })\n }\n\n const env: ToddleEnv = {\n branchName: toddle.branch || 'main',\n isServer: false,\n request: undefined,\n runtime: 'custom-element',\n logErrors: true,\n }\n\n this.#component = component\n this.#signal = createSignal({\n component,\n root: this.#shadowRoot,\n toddle,\n env,\n })\n this.#files = {\n themes: options.themes,\n }\n\n // Call the abort signal if the component's datasignal is destroyed (component unmounted) to cancel any pending requests\n const abortController = new AbortController()\n this.#signal.subscribe(() => {}, {\n destroy: () =>\n abortController.abort(`Component ${component.name} unmounted`),\n })\n\n this.#ctx = {\n triggerEvent: this.dispatch.bind(this),\n root: this.#shadowRoot,\n isRootComponent: true,\n components: options.components,\n component: this.#component,\n dataSignal: this.#signal,\n formulaCache: {},\n apis: {},\n abortSignal: abortController.signal,\n children: {},\n providers: {},\n package: undefined,\n toddle,\n env,\n }\n }\n\n connectedCallback() {\n sortApiObjects(Object.entries(this.#component.apis)).forEach(\n ([name, api]) => {\n if (isLegacyApi(api)) {\n this.#ctx.apis[name] = createLegacyAPI(api, this.#ctx)\n } else {\n this.#ctx.apis[name] = createAPI({\n apiRequest: api,\n ctx: this.#ctx,\n componentData: this.#signal.get(),\n })\n }\n },\n )\n Object.values(this.#ctx.apis)\n .filter(isContextApiV2)\n .forEach((api) => {\n api.triggerActions(this.#signal.get())\n })\n\n let providers = this.#ctx.providers\n if (isContextProvider(this.#component)) {\n // Subscribe to exposed formulas and update the component's data signal\n const formulaDataSignals = Object.fromEntries(\n Object.entries(this.#component.formulas ?? {})\n .filter(([, formula]) => formula.exposeInContext)\n .map(([name, formula]) => [\n name,\n this.#signal.map((data) =>\n applyFormula(formula.formula, {\n data,\n component: this.#component,\n formulaCache: this.#ctx.formulaCache,\n root: this.#ctx.root,\n package: this.#ctx.package,\n toddle: this.#ctx.toddle,\n env: this.#ctx.env,\n }),\n ),\n ]),\n )\n\n providers = {\n ...providers,\n [this.#component.name]: {\n component: this.#component,\n formulaDataSignals,\n ctx: this.#ctx,\n },\n }\n }\n\n this.#ctx.providers = providers\n this.render()\n }\n\n disconnectedCallback() {\n this.#signal.destroy()\n }\n\n dispatch(eventName: string, data: any) {\n this.dispatchEvent(\n new CustomEvent(eventName, {\n detail: data,\n bubbles: true,\n composed: true,\n }),\n )\n }\n\n render() {\n const elements = renderComponent({\n ...this.#ctx,\n path: '0',\n onEvent: this.dispatch.bind(this),\n parentElement: this.#shadowRoot,\n instance: { [this.#component.name]: 'root' },\n })\n\n this.#shadowRoot.innerHTML = ''\n const styles = createStylesheet(\n this.#ctx.component,\n this.#ctx.components,\n Object.entries(this.#files.themes ?? {}).length > 0\n ? this.#files.themes\n : { defaultTheme },\n { includeResetStyle: true, createFontFaces: false },\n )\n const stylesElem = document.createElement('style')\n stylesElem.appendChild(document.createTextNode(styles))\n this.#shadowRoot.appendChild(stylesElem)\n const rootElement = elements[0] as Element | null\n if (rootElement) {\n this.#shadowRoot.appendChild(rootElement)\n }\n }\n\n // Overload the setAttribute method to allow setting complex attributes\n setAttribute(name: string, value: unknown) {\n switch (typeof value) {\n case 'number':\n super.setAttribute(name, String(value))\n break\n case 'string':\n super.setAttribute(name, value)\n // Return early, as signal is updated through attributeChangedCallback on string values\n return this\n default:\n super.setAttribute(name, `[Object ${typeof value}]`)\n break\n }\n\n // Update the signal with complex value\n this.#signal.set({\n ...this.#signal.get(),\n Attributes: {\n ...this.#signal.get().Attributes,\n [name]: value,\n },\n })\n\n return this\n }\n\n // Overload the getAttribute method to point to source of truth (the signal)\n getAttribute<T>(name: string) {\n return (\n (this.#signal.get().Attributes[name] as T) || super.getAttribute(name)\n )\n }\n\n attributeChangedCallback(name: string, oldValue: never, newValue: string) {\n const attributeName = this.getAttributeCaseInsensitive(name)\n const currentRawValue = this.getAttribute(attributeName)\n // Is this is a complex value that has already been set by `setAttribute`\n if (newValue === '[Object object]') {\n return\n }\n\n //Has this just been set by `setAttribute` as a number\n if (parseFloat(newValue) === currentRawValue) {\n return\n }\n\n this.#signal.set({\n ...this.#signal.get(),\n Attributes: {\n ...this.#signal.get().Attributes,\n [attributeName]: newValue,\n },\n })\n }\n\n private getAttributeCaseInsensitive(name: string) {\n const attributeName = Object.keys(this.#signal.get().Attributes).find(\n (key) => key.toLowerCase() === name.toLowerCase(),\n )\n\n // This should never happen (TM) as we only observe attributes that are defined on the component\n if (!attributeName) {\n throw new Error(\n `Unable to find attribute ${name} on component ${this.#component.name}`,\n )\n }\n\n return attributeName\n }\n\n // Debugging purposes\n get __component() {\n return this.#component\n }\n\n get __ctx() {\n return this.#ctx\n }\n\n get __signal() {\n return this.#signal\n }\n}\n\nexport const createSignal = ({\n component,\n root,\n toddle,\n env,\n}: {\n component: Component\n root: ShadowRoot\n toddle: Toddle<LocationSignal, never>\n env: ToddleEnv\n}) => {\n return signal<ComponentData>({\n // Pages are not supported as custom elements, so no need to add location signal\n Location: undefined,\n Variables: mapObject(component.variables, ([name, { initialValue }]) => {\n if (!component) {\n throw new Error(`Component not found`)\n }\n return [\n name,\n applyFormula(initialValue, {\n data: {\n Attributes: {},\n },\n component: component,\n root,\n package: undefined,\n toddle,\n env,\n }),\n ]\n }),\n Attributes: mapObject(component.attributes, ([name]) => [\n name,\n // TODO: Perhaps we can get it from the DOM already and set initial attributes already?\n undefined,\n ]),\n Apis: mapObject(component.apis, ([name]) => [\n name,\n { data: null, isLoading: false, error: null },\n ]),\n })\n}\n", "import type { Component } from '@nordcraft/core/dist/component/component.types'\nimport type { Theme } from '@nordcraft/core/dist/styling/theme'\nimport type { Toddle } from '@nordcraft/core/dist/types'\nimport { safeCustomElementName } from '@nordcraft/core/dist/utils/customElements'\nimport type { LocationSignal } from '../types'\nimport { ToddleComponent } from './ToddleComponent'\n\n/**\n * Define each component as a new web component\n *\n * Use them like: `<toddle-test my-attr=\"test\" style=\"--my-color: rebeccapurple\"></toddle-test>`\n *\n * You can access the component and `addEventListener` to it like:\n *\n * ```js\n * const component = document.querySelector('toddle-test')\n * component.addEventListener('my-event', (e) => {\n * console.log(e.detail)\n * })\n * ```\n *\n * @param componentNames - The names of the components to define. These should be the names of the components in the app context\n * @param options - A subset of the app context. This holds a list of all the components needed to define the components in `componentNames`\n * @param toddle - Also available at `window.toddle`. However, multiple instances of toddle can exist on the same page, so we pass a reference here. We should ultimately remove the global scope reference as polite web components should be self-contained.\n */\nexport const defineComponents = (\n componentNames: string[],\n options: {\n components: Component[]\n themes: Record<string, Theme>\n },\n toddle: Toddle<LocationSignal, never>,\n) => {\n componentNames\n .map<Component>(\n (name) =>\n options.components.find(\n (component) => component.name === name,\n ) as Component,\n )\n .forEach((component) => {\n const tag = safeCustomElementName(component.name)\n if (customElements.get(tag)) {\n // eslint-disable-next-line no-console\n console.warn(`Component ${tag} already defined`)\n return\n }\n\n customElements.define(\n tag,\n class extends ToddleComponent {\n constructor() {\n super(component, options, toddle)\n }\n\n // When read from DOM, all attributes are lower case, so we must observe them as such\n static get observedAttributes() {\n return Object.keys(component.attributes ?? {}).map((key) =>\n key.toLowerCase(),\n )\n }\n },\n )\n })\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["require_fast_deep_equal", "__commonJSMin", "exports", "module", "equal", "a", "b", "length", "i", "keys", "key", "actions_exports", "__export", "handler_exports", "handler_exports", "__export", "handler_default", "handler", "key", "handler_exports", "__export", "handler_default", "handler", "key", "value", "handler_exports", "__export", "handler_default", "isDefined", "value", "isObject", "input", "toBoolean", "handler", "delay", "ctx", "delayNumber", "isDefined", "interval", "handler_default", "handler_exports", "__export", "handler_default", "handler", "key", "handler_exports", "__export", "handler_default", "handler", "access_token", "ttl", "ctx", "query", "res", "handler_exports", "__export", "handler_default", "handler", "handler_exports", "__export", "handler_default", "handler", "handler_exports", "__export", "handler_default", "handler", "label", "data", "handler_exports", "__export", "handler_default", "handler", "name", "value", "ttl", "_sameSite", "_path", "_includeSubdomains", "ctx", "error", "message", "sameSite", "path", "includeSubdomains", "params", "res", "err", "handler_exports", "__export", "handler_default", "handler", "key", "value", "handler_exports", "__export", "handler_default", "handler", "value", "handler_exports", "__export", "handler_default", "handler", "_", "_ctx", "event", "handler_exports", "__export", "handler_default", "handler", "name", "value", "ttl", "_sameSite", "_path", "_includeSubdomains", "ctx", "error", "message", "sameSite", "path", "includeSubdomains", "cookie", "date", "handler_exports", "__export", "handler_default", "handler", "elem", "handler_exports", "__export", "handler_default", "handler", "_", "_ctx", "event", "handler_exports", "__export", "handler_default", "handler", "url", "title", "text", "validInput", "value", "isDefined", "data", "handler_default", "handler_exports", "__export", "handler_default", "handler", "delay", "ctx", "delayNumber", "isDefined", "timeout", "handler_default", "handler_exports", "__export", "handler_default", "handler", "url", "ctx", "formulas_exports", "__export", "handler_exports", "handler_exports", "__export", "handler_default", "handler", "input", "handler_exports", "__export", "handler_default", "handler", "_", "env", "lang", "handler_exports", "__export", "handler_default", "handler", "inputString", "regex", "globalFlag", "ignoreCaseFlag", "multiLineFlag", "flags", "toBoolean", "re", "handler_default", "handler_exports", "__export", "handler_default", "handler", "URIComponent", "handler_exports", "__export", "handler_default", "handler", "a", "handler_exports", "__export", "handler_default", "handler", "input", "toBoolean", "handler_default", "handler_exports", "__export", "handler_default", "handler", "input", "firstChar", "handler_exports", "__export", "handler_default", "handler", "a", "b", "handler_exports", "__export", "handler_default", "handler", "URIComponent", "handler_exports", "__export", "handler_default", "handler", "input", "handler_exports", "__export", "handler_default", "handler", "data", "indent", "handler_exports", "__export", "handler_default", "handler", "list", "count", "handler_exports", "__export", "handler_default", "handler", "timestamp", "handler_exports", "__export", "handler_default", "handler", "list", "separator", "handler_exports", "__export", "handler_default", "handler", "value", "min", "max", "handler_exports", "__export", "handler_default", "handler", "input", "decimals", "multiplier", "handler_exports", "__export", "handler_default", "handler", "a", "b", "first", "second", "handler_exports", "__export", "handler_default", "getArgumentInputData", "handler", "array", "formula", "ascending", "ascendingModifier", "a", "b", "keyA", "keyB", "items", "argIndex", "input", "handler_exports", "__export", "handler_default", "getArgumentInputData", "handler", "items", "fx", "item", "index", "key", "value", "res", "argIndex", "input", "first", "handler_exports", "__export", "handler_default", "getArgumentInputData", "handler", "items", "fx", "item", "index", "key", "value", "argIndex", "input", "first", "handler_exports", "__export", "handler_default", "handler", "list", "sum", "n", "handler_exports", "__export", "handler_default", "handler", "handler_exports", "__export", "handler_default", "handler", "n", "handler_exports", "__export", "handler_default", "handler", "date", "loc", "opt", "locales", "l", "validateString", "value", "allowedValues", "options", "dateStyle", "timeStyle", "calendar", "weekday", "era", "year", "month", "day", "hour", "minute", "second", "timeZoneName", "timeZone", "hour12", "handler_exports", "__export", "handler_default", "handler", "a", "b", "handler_exports", "__export", "handler_default", "handler", "handler_exports", "__export", "handler_default", "handler", "list", "value", "handler_exports", "__export", "handler_default", "getArgumentInputData", "handler", "items", "func", "res", "index", "item", "key", "argIndex", "input", "handler_exports", "__export", "handler_default", "handler", "list", "handler_exports", "__export", "handler_default", "iso8601Regex", "parseJSONWithDate", "input", "_", "value", "handler", "data", "parseJSONWithDate", "handler_default", "handler_exports", "__export", "handler_default", "handler", "input", "handler_exports", "__export", "handler_default", "handler", "input", "decimals", "multiplier", "handler_exports", "__export", "handler_default", "handler", "list", "count", "handler_exports", "__export", "handler_default", "handler", "url", "title", "text", "isDefined", "validInput", "value", "data", "handler_default", "handler_exports", "__export", "handler_default", "handler", "list", "object", "key", "value", "handler_exports", "__export", "handler_default", "handler", "first", "second", "handler_exports", "__export", "handler_default", "handler", "collection", "item", "collectionItem", "handler_exports", "__export", "handler_default", "handler", "a", "handler_exports", "__export", "handler_default", "handler", "_", "ctx", "handler_exports", "__export", "handler_default", "NCURL", "url", "p", "i", "handler", "base", "handler_exports", "__export", "handler_default", "handler", "first", "second", "handler_exports", "__export", "handler_default", "handler", "value", "handler_exports", "__export", "handler_default", "getArgumentInputData", "handler", "items", "fx", "item", "index", "key", "value", "argIndex", "input", "first", "handler_exports", "__export", "handler_default", "handler", "first", "second", "handler_exports", "__export", "handler_default", "handler", "list", "value", "handler_exports", "__export", "handler_default", "handler", "key", "value", "handler_exports", "__export", "handler_default", "handler", "list", "set", "item", "key", "handler_exports", "__export", "handler_default", "handler", "items", "result", "item", "isObject", "handler_default", "handler_exports", "__export", "handler_default", "handler", "list", "count", "handler_exports", "__export", "handler_default", "handler", "collection", "key", "resolve", "path", "head", "rest", "handler_exports", "__export", "handler_default", "handler", "input", "handler_exports", "__export", "handler_default", "handler", "a", "b", "handler_exports", "__export", "handler_default", "handler", "list", "handler_exports", "__export", "handler_default", "handler", "data", "indentation", "indent", "handler_exports", "__export", "handler_default", "handler", "args", "handler_exports", "__export", "handler_default", "handler", "date", "handler_exports", "__export", "handler_default", "handler", "collection", "key", "run", "path", "index", "_", "i", "e", "isObject", "k", "handler_default", "handler_exports", "__export", "handler_default", "handler", "args", "handler_exports", "__export", "handler_default", "handler", "list", "handler_exports", "__export", "handler_default", "handler", "_", "ctx", "handler_exports", "__export", "handler_default", "handler", "first", "second", "handler_exports", "__export", "handler_default", "handler", "collection", "isObject", "handler_default", "handler_exports", "__export", "handler_default", "getArgumentInputData", "handler", "items", "fx", "init", "result", "item", "index", "key", "value", "_", "argIndex", "input", "first", "handler_exports", "__export", "handler_default", "handler", "collection", "key", "value", "ctx", "head", "rest", "isObject", "clone", "handler_default", "handler_exports", "__export", "handler_default", "getArgumentInputData", "handler", "items", "fx", "item", "index", "key", "value", "argIndex", "input", "first", "handler_exports", "__export", "handler_default", "handler", "object", "key", "value", "handler_exports", "__export", "handler_default", "handler", "items", "handler_exports", "__export", "handler_default", "handler", "list", "count", "handler_exports", "__export", "handler_default", "handler", "a", "b", "handler_exports", "__export", "handler_default", "getArgumentInputData", "handler", "items", "fx", "item", "index", "key", "value", "argIndex", "input", "first", "handler_exports", "__export", "handler_default", "getArgumentInputData", "handler", "items", "func", "item", "index", "key", "value", "argIndex", "input", "first", "handler_exports", "__export", "handler_default", "handler", "key", "value", "handler_exports", "__export", "handler_default", "handler", "a", "handler_exports", "__export", "handler_default", "handler", "list", "shuffle", "input", "array", "i", "j", "handler_exports", "__export", "handler_default", "handler", "numbers", "n", "result", "handler_exports", "__export", "handler_default", "handler", "values", "value", "toBoolean", "handler_default", "handler_exports", "__export", "handler_default", "handler", "input", "decimals", "multiplier", "handler_exports", "__export", "handler_default", "handler", "collection", "item", "i", "handler_exports", "__export", "handler_default", "handler", "date", "handler_exports", "__export", "handler_default", "handler", "name", "env", "root", "row", "handler_exports", "__export", "handler_default", "handler", "collection", "item", "i", "handler_exports", "__export", "handler_default", "handler", "_", "env", "handler_exports", "__export", "handler_default", "handler", "input", "searchValue", "replaceValue", "handler_exports", "__export", "handler_default", "handler", "id", "root", "handler_exports", "__export", "handler_default", "handler", "_", "env", "handler_exports", "__export", "handler_default", "handler", "collection", "prefix", "handler_exports", "__export", "handler_default", "STRING_TEMPLATE", "type", "name", "templateTypes", "handler", "name", "STRING_TEMPLATE", "handler_default", "handler_exports", "__export", "handler_default", "handler", "numbers", "n", "product", "num", "handler_exports", "__export", "handler_default", "getArgumentInputData", "handler", "items", "fx", "item", "index", "key", "value", "argIndex", "input", "first", "handler_exports", "__export", "handler_default", "handler", "min", "max", "_", "i", "handler_exports", "__export", "handler_default", "handler", "str", "handler_exports", "__export", "handler_default", "handler", "a", "toBoolean", "handler_default", "handler_exports", "__export", "handler_default", "handler", "input", "loc", "opt", "locales", "l", "validateString", "value", "allowedValues", "options", "style", "currency", "currencyDisplay", "unit", "unitDisplay", "minimumIntegerDigits", "minimumFractionDigits", "maximumFractionDigits", "minimumSignificantDigits", "maximumSignificantDigits", "notation", "compactDisplay", "validGroupingValues", "useGrouping", "handler_exports", "__export", "handler_default", "handler", "a", "b", "handler_exports", "__export", "handler_default", "getArgumentInputData", "handler", "items", "func", "list", "res", "i", "item", "key", "argIndex", "input", "first", "handler_exports", "__export", "handler_default", "handler", "input", "handler_exports", "__export", "handler_default", "handler", "inputString", "delimiter", "import_fast_deep_equal", "safeCustomElementName", "name", "tag", "isFormula", "f", "isToddleFormula", "formula", "isDefined", "applyFormula", "ctx", "isFormula", "input", "key", "branch", "toBoolean", "entry", "packageName", "newFunc", "args", "arg", "i", "Args", "e", "legacyFunc", "componentFormula", "Input", "data", "cache", "result", "mapObject", "object", "f", "mapValues", "key", "value", "omit", "collection", "rest", "clone", "isDefined", "omitKeys", "keys", "k", "omitPaths", "acc", "get", "collection", "head", "rest", "headItem", "isDefined", "sortObjectEntries", "object", "f", "ascending", "easySort", "collection", "a", "b", "keyA", "keyB", "hash", "data", "seed", "h1", "h2", "i", "ch", "ApiMethod", "isJsonHeader", "header", "isTextHeader", "isEventStreamHeader", "isJsonStreamHeader", "isImageHeader", "mapHeadersToObject", "headers", "headersObject", "key", "value", "getFormulasInFormula", "formula", "globalFormulas", "path", "visitedFormulas", "packageName", "isDefined", "key", "entry", "formulaKey", "shouldVisitFormula", "globalFormula", "arg", "isToddleFormula", "c", "getFormulasInAction", "action", "inputKey", "input", "a", "isFormula", "eventKey", "event", "actionKey", "LegacyToddleApi", "api", "key", "globalFormulas", "apis", "visitFormulaReference", "formula", "isDefined", "apiName", "entry", "arg", "c", "p", "q", "isFormula", "h", "apiKey", "getFormulasInFormula", "pathKey", "path", "queryParamKey", "queryParam", "headerKey", "header", "actionKey", "action", "getFormulasInAction", "getActionsInAction", "action", "path", "isDefined", "key", "a", "eventKey", "event", "c", "actionKey", "ToddleApiV2", "api", "apiKey", "globalFormulas", "apis", "visitFormulaReference", "formula", "isDefined", "apiName", "entry", "arg", "c", "p", "h", "q", "rule", "headers", "input", "value", "getFormulasInFormula", "pathKey", "path", "queryParamKey", "queryParam", "headerKey", "header", "HttpMethodsWithAllowedBody", "actionKey", "action", "getFormulasInAction", "getActionsInAction", "isLegacyApi", "api", "LegacyToddleApi", "createApiRequest", "formulaContext", "baseUrl", "defaultHeaders", "url", "getUrl", "requestSettings", "getRequestSettings", "urlPathname", "urlQueryParams", "parsedUrl", "applyFormula", "urlInput", "pathParams", "getRequestPath", "path", "queryParams", "getRequestQueryParams", "queryString", "hash", "hashString", "combinedUrl", "HttpMethodsWithAllowedBody", "ApiMethod", "applyAbortSignal", "timeout", "method", "headers", "getRequestHeaders", "body", "getRequestBody", "sortObjectEntries", "_", "p", "params", "key", "param", "isDefined", "value", "v", "isObject", "encodeObject", "obj", "prefix", "val", "apiHeaders", "requestHash", "url", "request", "hash", "omitKeys", "isApiError", "apiName", "response", "formulaContext", "errorFormula", "performance", "errorFormulaRes", "applyFormula", "toBoolean", "getRequestBody", "api", "headers", "method", "HttpMethodsWithAllowedBody", "body", "contentType", "isDefined", "isJsonHeader", "key", "value", "v", "formData", "createApiEvent", "eventName", "detail", "compareApiDependencies", "a", "b", "isADependentOnB", "isBDependentOnA", "sortApiObjects", "apis", "apiMap", "getApi", "apiObj", "ToddleApiV2", "LegacyToddleApi", "aKey", "aObj", "bKey", "bObj", "phash", "h", "x", "i", "hash", "AD_REPLACER_R", "getAlphabeticChar", "code", "generateAlphabeticName", "name", "x", "AD_REPLACER_R", "getClassName", "object", "generateAlphabeticName", "hash", "toValidClassName", "input", "escapeSpecialCharacters", "className", "match", "stringifySyntaxNode", "node", "renderSyntaxDefinition", "key", "syntax", "inherits", "initialValue", "theme", "value", "solveVarRecursively", "isDefined", "FALLBACK_VALUES", "depth", "VAR_REGEX", "match", "varName", "def", "returnValue", "appendUnit", "unit", "CUSTOM_PROPERTIES_STYLESHEET_ID", "RESET_STYLES", "theme", "getThemeCss", "themes", "options", "themesV1", "themesV2", "legacy", "modern", "key", "value", "t", "getOldThemeCss", "themeV2", "propertyName", "property", "renderSyntaxDefinition", "renderThemeValues", "getThemeEntries", "_t", "RESET_STYLES", "fonts", "font", "variant", "color", "group", "fontSize", "variable", "fontWeight", "shadow", "borderRadius", "token", "spacing", "zIndex", "theme", "colorVars", "variants", "name", "family", "fallback", "selector", "entries", "mediaQuery", "css", "themeName", "definition", "isDefined", "variantSelector", "variant", "LEGACY_BREAKPOINTS", "kebabCase", "string", "char", "SIZE_PROPERTIES", "createStylesheet", "root", "components", "themes", "options", "hashes", "animationHashes", "fonts", "getAllFonts", "stylesheet", "getThemeCss", "key", "theme", "value", "styleToCss", "style", "property", "isDefined", "propertyName", "propertyValue", "getNodeStyles", "node", "classHash", "omitKeys", "styleVariants", "renderVariant", "selector", "scrollbarStyles", "styles", "_", "variant", "renderedVariant", "variantSelector", "animationName", "keyframes", "a", "b", "position", "e", "visitedComponents", "insertComponentStyles", "component", "package_name", "id", "childComponent", "c", "toValidClassName", "getClassName", "v", "f", "isContextApiV2", "api", "import_fast_deep_equal", "lexer", "str", "tokens", "i", "char", "name", "j", "code", "count", "pattern", "parse", "options", "_a", "prefixes", "_b", "delimiter", "result", "key", "path", "tryConsume", "type", "mustConsume", "value", "nextType", "index", "consumeText", "isSafe", "_i", "delimiter_1", "safePattern", "prefix", "prev", "prevText", "escapeString", "open", "name_1", "pattern_1", "suffix", "compile", "tokensToFunction", "reFlags", "flags", "encode", "x", "validate", "matches", "token", "data", "optional", "repeat", "segment", "typeOfMessage", "escapeString", "str", "flags", "options", "getLocationUrl", "query", "page", "route", "params", "hash", "path", "pathSegments", "segment", "segmentValue", "isDefined", "compile", "hashString", "queryString", "_", "q", "key", "value", "handleAction", "action", "data", "ctx", "event", "workflowCallback", "actionList", "condition", "toBoolean", "applyFormula", "value", "payload", "current", "historyMode", "newLocation", "p", "omitKeys", "isDefined", "currentUrl", "getLocationUrl", "historyUrl", "parameters", "queryUpdates", "pathUpdates", "urlParameterCtx", "isValidPathParameter", "param", "isValidQueryParameter", "q", "parameter", "formula", "fastDeepEqual", "api", "isContextApiV2", "actionInputs", "mapValues", "input", "actionModels", "triggerActions", "actions", "subAction", "callbacks", "provider", "workflow", "callbackName", "callbackData", "triggerActionEvent", "trigger", "eventData", "subEvent", "newAction", "args", "arg", "result", "cleanup", "err", "legacyHandler", "e", "createLegacyAPI", "api", "ctx", "timer", "constructPayload", "data", "formulaContext", "baseUrl", "applyFormula", "urlPath", "queryParams", "queryString", "param", "headers", "isFormula", "mapValues", "value", "contentType", "key", "method", "body", "encodeBody", "getBody", "res", "textBody", "parseJSONWithDate", "v", "formData", "apiSuccess", "action", "handleAction", "apiError", "error", "execute", "payload", "response", "trigger", "resolve", "reject", "payloadSignal", "firstRun", "cached", "request", "apiPayload", "mapHeadersToObject", "validateUrl", "path", "origin", "urlObject", "searchCopy", "value", "key", "PROXY_URL_HEADER", "PROXY_TEMPLATES_IN_BODY", "createAPI", "apiRequest", "initialComponentData", "ctx", "timer", "api", "constructRequest", "componentData", "baseUrl", "request", "createApiRequest", "getFormulaContext", "formulaContext", "evaluatedInputs", "acc", "key", "value", "applyFormula", "data", "handleRedirectRules", "ruleName", "rule", "sortObjectEntries", "_", "location", "url", "validateUrl", "triggerActions", "eventName", "workflowCallback", "event", "createApiEvent", "action", "handleAction", "apiSuccess", "performance", "latestRequestStart", "appliedRedirectRule", "apiError", "execute", "requestSettings", "run", "response", "proxyUrl", "headers", "PROXY_URL_HEADER", "toBoolean", "PROXY_TEMPLATES_IN_BODY", "handleResponse", "error", "body", "resolve", "reject", "res", "parserMode", "contentType", "isEventStreamHeader", "isJsonHeader", "isTextHeader", "isJsonStreamHeader", "isImageHeader", "textStreamResponse", "jsonResponse", "eventStreamingResponse", "jsonStreamResponse", "blobResponse", "handleStreaming", "chunk", "chunks", "parsedData", "status", "mapHeadersToObject", "endResponse", "blob", "id", "retry", "streamType", "useTextDecoder", "parseChunk", "parseChunksForData", "delimiters", "parsedChunk", "delimiter", "d", "concatenated", "split", "c", "reader", "done", "parsed", "apiStatus", "isApiError", "getApiForComparison", "omitPaths", "payloadSignal", "payloadContext", "apiData", "cacheMatch", "isDefined", "requestHash", "actionInputs", "actionModels", "inputs", "inputName", "input", "apiWithInputsAndActions", "newApi", "updateContext", "autoFetch", "import_fast_deep_equal", "BatchQueue", "callback", "import_fast_deep_equal", "Signal", "value", "fastDeepEqual", "subscriber", "f", "notify", "config", "subscription", "signal2", "signal", "getNextSiblingElement", "path", "parentElement", "lastPathPart", "index", "repeatIndex", "child", "lastChildPathPart", "childIndex", "ensureEfficientOrdering", "items", "nextElement", "insertBeforeElement", "currentMarker", "i", "item", "getNodeSelector", "path", "componentName", "nodeId", "variant", "selector", "variantSelector", "isContextProvider", "component", "exposeInContext", "subscribeToContext", "componentDataSignal", "component", "ctx", "providerName", "context", "provider", "isDefined", "formulaName", "formulaDataSignal", "value", "data", "testProvider", "comp", "testProviderPackage", "formulaContext", "mapObject", "name", "attr", "p", "testValue", "variable", "applyFormula", "formula", "registerComponentToLogState", "component", "dataSignal", "createFormulaCache", "component", "isDefined", "mapObject", "name", "f", "canCache", "keys", "getFormulaCacheConfig", "cacheInput", "cacheData", "data", "key", "get", "result", "formula", "paths", "visitOperation", "op", "arg", "b", "path", "k", "CustomPropertyStyleSheet", "_CustomPropertyStyleSheet", "root", "styleSheet", "selector", "name", "options", "fullSelector", "rule", "ruleIndex", "newRule", "value", "i", "result", "key", "customPropertiesStylesheet", "subscribeCustomProperty", "selector", "customPropertyName", "signal", "variant", "root", "runtime", "CustomPropertyStyleSheet", "CUSTOM_PROPERTIES_STYLESHEET_ID", "createComponent", "node", "path", "dataSignal", "ctx", "parentElement", "instance", "namespace", "nodeLookupKey", "isDefined", "component", "comp", "c", "attributesSignal", "data", "mapObject", "attr", "value", "applyFormula", "customPropertyName", "customProperty", "subscribeCustomProperty", "getNodeSelector", "appendUnit", "variant", "componentDataSignal", "signal", "name", "api", "subscribeToContext", "variable", "registerComponentToLogState", "abortController", "formulaCache", "createFormulaCache", "apis", "sortApiObjects", "isLegacyApi", "createLegacyAPI", "eventTrigger", "eventHandler", "e", "action", "handleAction", "createAPI", "isContextApiV2", "onEvent", "providers", "isContextProvider", "formulaDataSignals", "formula", "children", "i", "childId", "slotName", "Attributes", "renderComponent", "getDragData", "event", "dragData", "item", "getElementTagName", "node", "ctx", "id", "setAttribute", "elem", "attr", "value", "toBoolean", "val", "isDefined", "createElement", "node", "dataSignal", "id", "path", "ctx", "namespace", "instance", "tag", "getElementTagName", "elem", "classHash", "getClassName", "key", "value", "toValidClassName", "className", "formula", "data", "toBoolean", "applyFormula", "show", "attr", "isDefined", "o", "setupAttribute", "setAttribute", "val", "testMode", "styleVariable", "name", "unit", "customPropertyName", "subscribeCustomProperty", "getNodeSelector", "appendUnit", "variant", "eventHandlers", "event", "getEventHandler", "eventName", "handler", "nodeTag", "textValues", "child", "textSignal", "valueSignal", "childNodes", "i", "createNode", "e", "action", "getDragData", "dragData", "item", "handleAction", "createSlot", "path", "node", "dataSignal", "ctx", "parentElement", "instance", "namespace", "slotName", "children", "child", "childDataSignal", "data", "createNode", "i", "webComponentSlot", "createText", "node", "id", "path", "dataSignal", "namespace", "ctx", "createTextNS", "value", "elem", "data", "applyFormula", "textNode", "createNode", "id", "dataSignal", "path", "ctx", "namespace", "parentElement", "instance", "node", "create", "props", "createElement", "isLocalComponent", "c", "createComponent", "createText", "createSlot", "conditional", "firstRun", "childDataSignal", "showSignal", "data", "toBoolean", "applyFormula", "elements", "toggle", "show", "nextPathElement", "getNextSiblingElement", "element", "elem", "displayedNodes", "testMode", "repeat", "repeatItems", "list", "newRepeatItems", "i", "Key", "Item", "childData", "childKey", "existingItem", "signal", "cleanup", "ListItem", "args", "key", "item", "e", "ensureEfficientOrdering", "BATCH_QUEUE", "BatchQueue", "renderComponent", "component", "dataSignal", "onEvent", "isRootComponent", "path", "children", "formulaCache", "components", "apis", "abortSignal", "root", "providers", "packageName", "parentElement", "instance", "toddle", "namespace", "env", "ctx", "rootElem", "createNode", "prev", "data", "props", "action", "handleAction", "changes", "key", "value", "fastDeepEqual", "ToddleComponent", "#component", "#ctx", "#shadowRoot", "#signal", "#files", "component", "options", "toddle", "internals", "env", "createSignal", "abortController", "sortApiObjects", "name", "api", "isLegacyApi", "createLegacyAPI", "createAPI", "isContextApiV2", "providers", "isContextProvider", "formulaDataSignals", "formula", "data", "applyFormula", "eventName", "elements", "renderComponent", "styles", "createStylesheet", "theme", "stylesElem", "rootElement", "value", "oldValue", "newValue", "attributeName", "currentRawValue", "key", "root", "signal", "mapObject", "initialValue", "defineComponents", "componentNames", "options", "toddle", "name", "component", "tag", "safeCustomElementName", "ToddleComponent", "key", "loadCorePlugins", "toddle", "fastDeepEqual", "formulas_exports", "name", "module", "actions_exports"]
|
|
7
7
|
}
|