@vireo-ai/trellis-ui 0.1.29 → 0.1.31
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/package.json +2 -2
- package/packages/client/src/components/field/styles.css +71 -0
- package/packages/client/src/components/file-upload/styles.css +68 -0
- package/packages/client/src/components/select/styles.css +4 -0
- package/packages/client/src/components/tabs/styles.css +73 -0
- package/packages/client/src/components/toast/styles.css +65 -0
- package/packages/client/src/styles/components.css +15 -4
- package/packages/client/src/styles/generated/theme-fonts.css +1 -1
- package/packages/client/src/styles/generated/theme-palette.css +77 -1462
- package/packages/client/src/styles/generated/theme-runtime.css +1 -1393
- package/packages/client/src/styles/generated-sources.css +1 -1
- package/packages/client/src/styles/recipes/action.css +85 -0
- package/packages/client/src/styles/recipes/disabled.css +16 -0
- package/packages/client/src/styles/recipes/intent.css +101 -0
- package/packages/client/src/styles/recipes/option.css +123 -0
- package/packages/client/src/styles/recipes/selection.css +78 -0
- package/packages/client/src/styles/theme.css +0 -729
- package/packages/client/types/styles/tailwind-candidates.d.ts +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css +469 -3263
- package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/build-metadata.json +258 -258
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{alpine-machine-D0Kqjm-1.js → alpine-machine-BS13dbK4.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{alpine-machine-D0Kqjm-1.js.map → alpine-machine-BS13dbK4.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-motion-Cog7tKk0.js → capability-motion-wMoceguq.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-motion-Cog7tKk0.js.map → capability-motion-wMoceguq.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-sortable-k107A8WE.js → capability-sortable-BurX5yRd.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-BurX5yRd.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{core-vW9Cglw8.js → core-BuKz1uWk.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{core-vW9Cglw8.js.map → core-BuKz1uWk.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-JnbQA47P.js → entry.generated-9sxiaVVI.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-JnbQA47P.js.map → entry.generated-9sxiaVVI.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BJ0fQYT1.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BJ0fQYT1.js.map +1 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DVPnOfPb.js → entry.generated-BehM6Hle.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DVPnOfPb.js.map → entry.generated-BehM6Hle.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CGgRCeB5.js → entry.generated-BuXeU4zt.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CGgRCeB5.js.map → entry.generated-BuXeU4zt.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Bhvs_TUM.js → entry.generated-C-MH09sf.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Bhvs_TUM.js.map → entry.generated-C-MH09sf.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DFITIl56.js → entry.generated-C5Bueyfb.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DFITIl56.js.map → entry.generated-C5Bueyfb.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Bbm6qhVl.js → entry.generated-CCka3fIO.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Bbm6qhVl.js.map → entry.generated-CCka3fIO.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DMre0DbH.js → entry.generated-CSxEK8G9.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DMre0DbH.js.map → entry.generated-CSxEK8G9.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DiG5fS1F.js → entry.generated-CoJxfxlc.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DiG5fS1F.js.map → entry.generated-CoJxfxlc.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-dTc38DPe.js → entry.generated-D6cdmqiV.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-dTc38DPe.js.map → entry.generated-D6cdmqiV.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Cvgc61x9.js → entry.generated-DBSwLHmm.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Cvgc61x9.js.map → entry.generated-DBSwLHmm.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DnSxEcns.js → entry.generated-DEiL4FhC.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DnSxEcns.js.map → entry.generated-DEiL4FhC.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BgnZZd0A.js → entry.generated-DRqap77P.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BgnZZd0A.js.map → entry.generated-DRqap77P.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DT70Lo44.js → entry.generated-Dzw2Rg5F.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DT70Lo44.js.map → entry.generated-Dzw2Rg5F.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-byAFfb_v.js → entry.generated-EtCfrZfr.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-byAFfb_v.js.map → entry.generated-EtCfrZfr.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CgO0b8V6.js → entry.generated-cMueWbY7.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CgO0b8V6.js.map → entry.generated-cMueWbY7.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-eVXGqjCM.js +2 -0
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DMK37KS0.js.map → entry.generated-eVXGqjCM.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{semantic-observer-DS2ew4dT.js → semantic-observer-BUswpsNx.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{semantic-observer-DS2ew4dT.js.map → semantic-observer-BUswpsNx.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{stream-uyKKe0QF.js → stream-pMBGbBZH.js} +2 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{stream-uyKKe0QF.js.map → stream-pMBGbBZH.js.map} +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +1 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/logical-entry-manifest.json +109 -109
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +8 -8
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +8 -8
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-k107A8WE.js.map +0 -1
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DMK37KS0.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DOV8BDMY.js +0 -2
- package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DOV8BDMY.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-uyKKe0QF.js","names":[],"sources":["../../../../../../../../client/src/runtime/engine/stream.ts"],"sourcesContent":["import type Alpine from 'alpinejs';\nimport {\n findAlpineMachineOwner,\n} from '../alpine-machine';\nimport {\n findClosestDomInvalidationOwners,\n type DomInvalidationOwner,\n} from '../dom-invalidation';\nimport {stableIdentity} from '../identity';\nimport {declareMorphAttributes, preserveDeclaredMorphAttributes} from '../morph';\nimport {isRecord, warn} from '../../utils';\nimport {loadAssets, type AssetDescriptor} from '../../assets/bridge';\nimport {requestWithAlpine, type RequestLifecycleDetail} from './request';\n\ntype PatchMode = 'morph' | 'outer' | 'replace' | 'update' | 'append' | 'prepend' | 'before' | 'after' | 'remove';\n\ntype StreamPatchPayload = {\n html?: string | null;\n target?: string | null;\n selector?: string | null;\n mode?: PatchMode | null;\n requestId?: string | null;\n viewTransition?: boolean;\n assets?: AssetDescriptor[];\n};\n\ntype StreamEventPayload = {\n event: string;\n detail?: Record<string, unknown>;\n};\n\ntype LocationPayload = {\n url: string;\n mode?: 'push' | 'replace' | 'assign';\n requestId?: string;\n};\n\ntype UiEffectPayload =\n | ({type: 'patch'} & StreamPatchPayload)\n | ({type: 'dispatch'} & StreamEventPayload)\n | ({type: 'location'} & LocationPayload);\n\ntype SseFrame = {\n event: string;\n data: string;\n};\n\ntype StreamController = {\n abort(reason?: string): void;\n};\n\ntype StreamLifecycle = {\n open?(): void;\n disconnected?(): void;\n reset?(data: string): void;\n error?(data: string): void;\n};\ntype StreamPatchAnimator = (\n AlpineInstance: StreamAlpine,\n patches: StreamPatchPayload[],\n update: () => void,\n) => void;\n\ntype MorphOptions = {\n key?(el: HTMLElement): string | null;\n updating?(\n from: Node,\n to: Node,\n childrenOnly?: () => void,\n skip?: () => void,\n skipChildren?: () => void,\n skipUntil?: (predicate: (node: Node) => boolean) => void,\n ): void;\n updated?(from: Node, to: Node): void;\n};\n\ntype StreamAlpine = Pick<Alpine.Alpine, 'initTree'> & Partial<Pick<Alpine.Alpine, 'findClosest'>> & {\n morph?: (\n target: HTMLElement,\n html: string,\n options?: MorphOptions,\n ) => void;\n};\n\nconst pendingDomInvalidations = new Set<DomInvalidationOwner>();\nlet domInvalidationQueued = false;\nlet effectRequestFilter: ((requestId: string | null) => boolean) | null = null;\nlet locationEffectHandler: ((payload: LocationPayload) => boolean) | null = null;\nlet morphExclusionFilter: ((requestId: string | null, element: Element) => boolean) | null = null;\nlet streamPatchAnimator: StreamPatchAnimator | null = null;\nlet patchQueue = Promise.resolve();\nlet queuedPatches = 0;\n\nconst queueDomInvalidation = (owners: Iterable<DomInvalidationOwner>): void => {\n for (const owner of owners) pendingDomInvalidations.add(owner);\n if (domInvalidationQueued || pendingDomInvalidations.size === 0) return;\n domInvalidationQueued = true;\n queueMicrotask(() => {\n domInvalidationQueued = false;\n const queued = Array.from(pendingDomInvalidations);\n pendingDomInvalidations.clear();\n queued.forEach((owner) => owner.invalidateDom());\n });\n};\n\nconst parseHtml = (html: string): HTMLTemplateElement => {\n const template = document.createElement('template');\n template.innerHTML = html;\n return template;\n};\n\nconst elementsFromHtml = (html: string): HTMLElement[] => (\n Array.from(parseHtml(html).content.children)\n .filter((child): child is HTMLElement => child instanceof HTMLElement)\n);\n\nconst initInserted = (AlpineInstance: StreamAlpine, elements: HTMLElement[]): void => {\n elements.forEach((element) => AlpineInstance.initTree(element));\n};\n\nconst resolvedMode = (target: Element, payloadMode?: PatchMode | null): PatchMode => {\n if (payloadMode) return payloadMode;\n const merge = target.getAttribute('x-merge');\n if (merge) return merge as PatchMode;\n return 'replace';\n};\n\nconst targetFromPayload = (payload: StreamPatchPayload): Element | null => {\n if (payload.selector) return document.querySelector(payload.selector);\n if (!payload.target) return null;\n\n const id = payload.target.startsWith('#') ? payload.target.slice(1) : payload.target;\n return document.getElementById(id);\n};\n\nconst applyPatchToTarget = (\n AlpineInstance: StreamAlpine,\n target: Element,\n payload: StreamPatchPayload,\n): void => {\n const mode = resolvedMode(target, payload.mode);\n\n if (mode === 'remove') {\n target.remove();\n return;\n }\n\n if (!payload.html) {\n warn('x-ui-stream: received patch with no html');\n return;\n }\n\n if (mode === 'morph' || mode === 'outer') {\n if (typeof AlpineInstance.morph === 'function') {\n const affectedOwners = new Set<DomInvalidationOwner>();\n AlpineInstance.morph(target as HTMLElement, payload.html, {\n key(el: HTMLElement): string | null {\n return stableIdentity(el);\n },\n updating(from: Node, to: Node, _childrenOnly?: () => void, skip?: () => void): void {\n if (\n from instanceof Element\n && morphExclusionFilter?.(payload.requestId ?? null, from)\n ) {\n skip?.();\n return;\n }\n preserveDeclaredMorphAttributes(from, to);\n },\n updated(from: Node): void {\n if (!(from instanceof Element)) return;\n const owner = findAlpineMachineOwner(AlpineInstance as Alpine.Alpine, from);\n if (owner) affectedOwners.add(owner);\n findClosestDomInvalidationOwners(from).forEach((candidate) => {\n affectedOwners.add(candidate);\n });\n },\n });\n queueDomInvalidation(affectedOwners);\n return;\n }\n\n warn('x-ui-stream: morph mode requires an Alpine morph implementation; falling back to replace');\n }\n\n if (mode === 'replace' || mode === 'morph' || mode === 'outer') {\n const [newEl] = elementsFromHtml(payload.html);\n if (!newEl) {\n warn('x-ui-stream: replace mode produced no element');\n return;\n }\n target.replaceWith(newEl);\n AlpineInstance.initTree(newEl);\n return;\n }\n\n if (mode === 'update') {\n const elements = elementsFromHtml(payload.html);\n target.innerHTML = payload.html;\n initInserted(AlpineInstance, Array.from(target.children).filter((child): child is HTMLElement => child instanceof HTMLElement));\n if (elements.length === 0 && payload.html.trim()) AlpineInstance.initTree(target as HTMLElement);\n return;\n }\n\n const template = parseHtml(payload.html);\n const inserted = Array.from(template.content.children)\n .filter((child): child is HTMLElement => child instanceof HTMLElement);\n\n if (mode === 'append') {\n target.append(template.content);\n initInserted(AlpineInstance, inserted);\n return;\n }\n\n if (mode === 'prepend') {\n target.prepend(template.content);\n initInserted(AlpineInstance, inserted);\n return;\n }\n\n if (mode === 'before') {\n target.before(template.content);\n initInserted(AlpineInstance, inserted);\n return;\n }\n\n if (mode === 'after') {\n target.after(template.content);\n initInserted(AlpineInstance, inserted);\n }\n};\n\nconst applyStreamPatchNow = (AlpineInstance: StreamAlpine, payload: StreamPatchPayload): void => {\n const target = targetFromPayload(payload);\n\n if (target) {\n applyPatchToTarget(AlpineInstance, target, payload);\n return;\n }\n\n if (payload.selector || payload.target) {\n warn('x-ui-stream: target not found', payload.selector ?? payload.target);\n return;\n }\n\n if (!payload.html) {\n warn('x-ui-stream: received patch with no html');\n return;\n }\n\n elementsFromHtml(payload.html).forEach((child) => {\n if (!child.id) {\n warn('x-ui-stream: top-level element has no id, skipping', child);\n return;\n }\n\n const inferredTarget = document.getElementById(child.id);\n if (!inferredTarget) return;\n applyPatchToTarget(AlpineInstance, inferredTarget, {...payload, html: child.outerHTML});\n });\n};\n\nconst applyStreamPatches = (AlpineInstance: StreamAlpine, payload: StreamPatchPayload | StreamPatchPayload[]): void => {\n const patches = Array.isArray(payload) ? payload : [payload];\n const apply = (): void => {\n patches.forEach((patch) => applyStreamPatchNow(AlpineInstance, patch));\n };\n\n const applyWithAnimation = (): void => {\n const animatedPatches = patches.filter((patch) => patch.viewTransition === true);\n if (animatedPatches.length === 0) {\n apply();\n return;\n }\n if (streamPatchAnimator) streamPatchAnimator(AlpineInstance, animatedPatches, apply);\n else apply();\n };\n const assets = patches.flatMap((patch) => patch.assets ?? []);\n\n if (assets.length === 0 && queuedPatches === 0) {\n applyWithAnimation();\n return;\n }\n\n queuedPatches += 1;\n const run = async (): Promise<void> => {\n if (assets.length > 0) {\n await loadAssets(assets, AlpineInstance as Alpine.Alpine);\n }\n applyWithAnimation();\n };\n const task = patchQueue.then(run, run);\n patchQueue = task\n .catch(() => undefined)\n .finally(() => {\n queuedPatches -= 1;\n });\n};\n\nconst registerStreamPatchAnimator = (animator: StreamPatchAnimator): void => {\n streamPatchAnimator = animator;\n};\n\nconst applyStreamPatch = (AlpineInstance: StreamAlpine, payload: StreamPatchPayload): void => {\n applyStreamPatchNow(AlpineInstance, payload);\n};\n\nconst dispatchStreamEvent = (payload: StreamEventPayload): void => {\n document.dispatchEvent(new CustomEvent(payload.event, {\n detail: payload.detail ?? {},\n bubbles: true,\n composed: true,\n }));\n};\n\nconst applyLocation = (payload: LocationPayload): void => {\n if (locationEffectHandler?.(payload)) return;\n const mode = payload.mode ?? 'push';\n if (mode === 'assign') {\n window.location.assign(payload.url);\n return;\n }\n\n if (mode === 'replace') {\n window.history.replaceState(window.history.state, '', payload.url);\n return;\n }\n\n window.history.pushState(window.history.state, '', payload.url);\n};\n\nconst applyUiEffect = (AlpineInstance: StreamAlpine, effect: UiEffectPayload): void => {\n if (effect.type === 'patch') {\n const {type: _type, ...payload} = effect;\n applyStreamPatches(AlpineInstance, payload);\n return;\n }\n\n if (effect.type === 'dispatch') {\n const {type: _type, ...payload} = effect;\n dispatchStreamEvent(payload);\n return;\n }\n\n if (effect.type === 'location') {\n applyLocation(effect);\n return;\n }\n\n warn('x-ui-stream: unknown UI effect', effect);\n};\n\nconst applyUiEffects = (AlpineInstance: StreamAlpine, effects: UiEffectPayload | UiEffectPayload[]): void => {\n const events = Array.isArray(effects) ? effects : [effects];\n\n events.forEach((effect) => applyUiEffect(AlpineInstance, effect));\n};\n\nconst commandLines = (frame: SseFrame): Map<string, string[]> | null => {\n const commands = new Map<string, string[]>();\n for (const line of frame.data.split('\\n')) {\n const space = line.indexOf(' ');\n const hasValue = space > 0;\n const key = hasValue ? line.slice(0, space) : line;\n\n if (!hasValue && key !== 'html') {\n warn('x-ui-stream: invalid SSE command line', key);\n return null;\n }\n\n const value = hasValue ? line.slice(space + 1) : '';\n const values = commands.get(key);\n if (values) values.push(value);\n else commands.set(key, [value]);\n }\n\n return commands;\n};\n\nconst scalarCommand = (commands: Map<string, string[]>, key: string): string | undefined => {\n const values = commands.get(key);\n if (!values?.length) return undefined;\n if (values.length > 1) warn('x-ui-stream: duplicate SSE command, using last value', key);\n return values.at(-1);\n};\n\nconst applyPatchFrame = (AlpineInstance: StreamAlpine, frame: SseFrame): void => {\n const commands = commandLines(frame);\n if (!commands || commands.size === 0) return;\n const requestId = scalarCommand(commands, 'request-id');\n if (effectRequestFilter && !effectRequestFilter(requestId ?? null)) return;\n\n let assets: AssetDescriptor[] | undefined;\n const rawAssets = scalarCommand(commands, 'assets');\n if (rawAssets) {\n try {\n const parsed: unknown = JSON.parse(rawAssets);\n if (!Array.isArray(parsed)) throw new TypeError('assets must be an array');\n assets = parsed as AssetDescriptor[];\n } catch {\n warn('x-ui-stream: invalid patch assets JSON', rawAssets);\n return;\n }\n }\n\n const payload: StreamPatchPayload = {\n mode: (scalarCommand(commands, 'mode') ?? 'replace') as PatchMode,\n target: scalarCommand(commands, 'target') ?? null,\n selector: scalarCommand(commands, 'selector') ?? null,\n html: commands.get('html')?.join('\\n') ?? null,\n requestId: requestId ?? null,\n viewTransition: scalarCommand(commands, 'view-transition') === 'true',\n ...(assets ? {assets} : {}),\n };\n\n applyStreamPatches(AlpineInstance, payload);\n};\n\nconst applyDispatchFrame = (frame: SseFrame): void => {\n const commands = commandLines(frame);\n if (!commands) return;\n const requestId = scalarCommand(commands, 'request-id');\n if (effectRequestFilter && !effectRequestFilter(requestId ?? null)) return;\n const event = scalarCommand(commands, 'event');\n if (!event) {\n warn('x-ui-stream: dispatch SSE frame missing event');\n return;\n }\n\n const rawDetail = scalarCommand(commands, 'detail');\n let detail: Record<string, unknown> = {};\n if (rawDetail) {\n try {\n const parsed: unknown = JSON.parse(rawDetail);\n if (isRecord(parsed)) detail = parsed;\n } catch {\n warn('x-ui-stream: invalid dispatch detail JSON', rawDetail);\n return;\n }\n }\n\n dispatchStreamEvent({event, detail});\n};\n\nconst applyLocationFrame = (AlpineInstance: StreamAlpine, frame: SseFrame): void => {\n const commands = commandLines(frame);\n if (!commands) return;\n const requestId = scalarCommand(commands, 'request-id');\n if (effectRequestFilter && !effectRequestFilter(requestId ?? null)) return;\n const url = scalarCommand(commands, 'url');\n if (!url) {\n warn('x-ui-stream: location SSE frame missing url');\n return;\n }\n\n const mode = scalarCommand(commands, 'mode') as 'push' | 'replace' | 'assign' | undefined;\n applyUiEffect(AlpineInstance, {\n type: 'location',\n url,\n ...(requestId ? {requestId} : {}),\n ...(mode ? {mode} : {}),\n });\n};\n\nconst SSE_FRAME_HANDLERS: Record<string, (AlpineInstance: StreamAlpine, frame: SseFrame) => void> = {\n 'trellis-ui-patch': applyPatchFrame,\n 'trellis-ui-dispatch': (_AlpineInstance, frame) => applyDispatchFrame(frame),\n 'trellis-ui-location': applyLocationFrame,\n};\n\nconst TRELLIS_SSE_EVENT_PREFIX = 'trellis-ui-';\n\nconst applySseFrame = (AlpineInstance: StreamAlpine, frame: SseFrame): void => {\n const handler = SSE_FRAME_HANDLERS[frame.event];\n if (!handler) {\n if (frame.event.startsWith(TRELLIS_SSE_EVENT_PREFIX)) {\n warn('x-ui-stream: unsupported SSE event', frame.event);\n }\n return;\n }\n handler(AlpineInstance, frame);\n};\n\nconst streamUrl = (url: string, scopes = '', client = ''): string => {\n const parsed = new URL(url, document.baseURI);\n const normalizedScopes = [...new Set(scopes.split(/\\s+/).filter(Boolean))];\n if (client) parsed.searchParams.set('client', client);\n if (normalizedScopes.length > 0) {\n parsed.searchParams.delete('channel');\n normalizedScopes.forEach((scope) => parsed.searchParams.append('channel', scope));\n }\n\n return /^[a-z][a-z\\d+.-]*:/i.test(url) || url.startsWith('//')\n ? parsed.href\n : `${parsed.pathname}${parsed.search}${parsed.hash}`;\n};\n\nconst connectStream = (\n AlpineInstance: StreamAlpine,\n url: string,\n scopes = '',\n client = '',\n lifecycle: StreamLifecycle = {},\n): StreamController => {\n const source = new EventSource(streamUrl(url, scopes, client));\n let active = true;\n Object.keys(SSE_FRAME_HANDLERS).forEach((eventName) => {\n source.addEventListener(eventName, (event) => {\n if (!active || !(event instanceof MessageEvent)) return;\n applySseFrame(AlpineInstance, {\n event: event.type,\n data: String(event.data),\n });\n });\n });\n source.addEventListener('stream-open', () => {\n if (!active) return;\n lifecycle.open?.();\n });\n source.addEventListener('stream-reset', (event) => {\n if (!active) return;\n lifecycle.reset?.(event instanceof MessageEvent ? String(event.data) : '');\n });\n source.addEventListener('stream-error', (event) => {\n if (!active) return;\n active = false;\n source.close();\n lifecycle.error?.(event instanceof MessageEvent ? String(event.data) : '');\n });\n source.addEventListener('error', () => {\n if (!active) return;\n active = false;\n source.close();\n lifecycle.disconnected?.();\n });\n\n return {\n abort() {\n active = false;\n source.close();\n },\n };\n};\n\ntype StreamControllerKey = Element | string;\n\ntype ManagedStream = {\n configuration: string;\n controller: StreamController | null;\n element: HTMLElement;\n dispose(): void;\n rescheduleRefresh(): void;\n};\n\nconst streamControllers = new Map<StreamControllerKey, ManagedStream>();\nconst pendingStreamReconciliations = new Set<StreamControllerKey>();\n\nconst streamControllerKey = (el: Element): StreamControllerKey => (\n el instanceof HTMLElement && el.id ? el.id : el\n);\n\ntype StreamLifecycleName = 'connecting' | 'open' | 'disconnected' | 'suspended' | 'reset' | 'error';\ntype ClientSessionRefresh = {token: string; expiresAt: number};\n\nconst CLIENT_SESSION_REFRESH_LEAD_MS = 60_000;\nconst STREAM_IDLE_SUSPEND_DELAY_MS = 1_000;\nconst STREAM_MUTATION_DELIVERY_TAIL_MS = 2_000;\nconst STREAM_RETRY_BASE_MS = 1_000;\nconst STREAM_RETRY_MAX_MS = 30_000;\n\nconst dispatchStreamLifecycle = (\n el: HTMLElement,\n name: StreamLifecycleName,\n detail: Record<string, unknown> = {},\n): void => {\n if (name !== 'reset') el.dataset.uiStreamState = name;\n el.dispatchEvent(new CustomEvent(`ui:stream:${name}`, {\n bubbles: true,\n composed: true,\n detail: {source: el, ...detail},\n }));\n};\n\nconst configuredStreamUrl = (el: HTMLElement, expression: string): string => (\n streamUrl(expression, el.dataset.uiStreamScopes, el.dataset.uiStreamClient)\n);\n\nconst streamOpenWhenHidden = (el: HTMLElement): boolean => (\n el.dataset.uiStreamOpenWhenHidden === 'true'\n);\n\nconst configuredStream = (el: HTMLElement, expression: string): string => (\n JSON.stringify({\n openWhenHidden: streamOpenWhenHidden(el),\n url: configuredStreamUrl(el, expression),\n })\n);\n\nconst hasNamedStreamScopes = (el: HTMLElement): boolean => (\n Boolean(el.dataset.uiStreamScopes?.trim())\n);\n\nconst requestLifecycleDetail = (event: Event): RequestLifecycleDetail | null => {\n if (!(event instanceof CustomEvent)) return null;\n const detail = event.detail as Partial<RequestLifecycleDetail> | null;\n if (\n !detail\n || typeof detail.requestId !== 'string'\n || typeof detail.method !== 'string'\n || !(detail.controller instanceof AbortController)\n ) return null;\n return detail as RequestLifecycleDetail;\n};\n\nconst createManagedStream = (\n AlpineInstance: Alpine.Alpine,\n el: HTMLElement,\n expression: string,\n): ManagedStream => {\n let configuration = configuredStream(el, expression);\n let controller: StreamController | null = null;\n let refreshTimer: number | undefined;\n let refreshPromise: Promise<string | null> | null = null;\n let reconnectTimer: number | undefined;\n let suspendTimer: number | undefined;\n let connectedOnce = false;\n let connectionGeneration = 0;\n let reconnectAttempts = 0;\n let terminal = false;\n let disposed = false;\n const activeGets = new Map<string, AbortController>();\n const activeMutations = new Set<string>();\n const openWhenHidden = streamOpenWhenHidden(el);\n\n const shouldBeConnected = (): boolean => (\n !terminal && (openWhenHidden || document.visibilityState === 'visible')\n );\n\n const clearReconnectTimer = (): void => {\n window.clearTimeout(reconnectTimer);\n reconnectTimer = undefined;\n };\n\n const dispatchResumed = (): void => {\n el.dispatchEvent(new CustomEvent('ui:stream:resumed', {\n bubbles: true,\n composed: true,\n }));\n };\n\n const finishResume = async (generation: number): Promise<void> => {\n if (hasNamedStreamScopes(el)) {\n await requestWithAlpine(\n AlpineInstance,\n window.location.href,\n {method: 'GET', cache: 'no-store'},\n ).catch((error: unknown) => {\n warn('x-ui-stream: could not revalidate resumed document', error);\n return null;\n });\n }\n\n if (\n disposed\n || generation !== connectionGeneration\n || el.dataset.uiStreamState !== 'open'\n ) return;\n dispatchResumed();\n };\n\n const connect = (token: string): void => {\n controller?.abort();\n clearReconnectTimer();\n const generation = ++connectionGeneration;\n configuration = configuredStream(el, expression);\n dispatchStreamLifecycle(el, 'connecting');\n controller = connectStream(\n AlpineInstance,\n expression,\n el.dataset.uiStreamScopes,\n token,\n {\n open: () => {\n if (generation !== connectionGeneration) return;\n const resumed = connectedOnce;\n connectedOnce = true;\n reconnectAttempts = 0;\n dispatchStreamLifecycle(el, 'open');\n if (resumed) void finishResume(generation);\n },\n disconnected: () => {\n if (generation !== connectionGeneration || disposed) return;\n controller = null;\n managed.controller = null;\n dispatchStreamLifecycle(el, 'disconnected');\n if (!shouldBeConnected()) return;\n const ceiling = Math.min(\n STREAM_RETRY_BASE_MS * (2 ** reconnectAttempts),\n STREAM_RETRY_MAX_MS,\n );\n reconnectAttempts += 1;\n const delay = Math.floor(Math.random() * ceiling);\n reconnectTimer = window.setTimeout(() => {\n reconnectTimer = undefined;\n void ensureConnected();\n }, delay);\n },\n reset: (data) => dispatchStreamLifecycle(el, 'reset', {data}),\n error: (data) => {\n if (generation !== connectionGeneration || disposed) return;\n terminal = true;\n controller = null;\n managed.controller = null;\n clearReconnectTimer();\n dispatchStreamLifecycle(el, 'error', {data});\n },\n },\n );\n managed.controller = controller;\n managed.configuration = configuration;\n scheduleRefresh();\n };\n\n const scheduleRefresh = (): void => {\n window.clearTimeout(refreshTimer);\n refreshTimer = undefined;\n if (!shouldBeConnected()) return;\n const expiresAt = Number(el.dataset.uiStreamClientExpires);\n if (!Number.isFinite(expiresAt) || expiresAt <= 0) return;\n const delay = expiresAt - Date.now() - CLIENT_SESSION_REFRESH_LEAD_MS;\n if (delay <= 0) {\n void rotateCapability();\n return;\n }\n refreshTimer = window.setTimeout(() => void rotateCapability(), delay);\n };\n\n const refreshCapability = (): Promise<string | null> => {\n if (disposed) return Promise.resolve(null);\n if (refreshPromise) return refreshPromise;\n const refreshUrl = el.dataset.uiStreamClientRefresh;\n if (!refreshUrl) {\n dispatchStreamLifecycle(el, 'error', {reason: 'missing-refresh-url'});\n return Promise.resolve(null);\n }\n\n refreshPromise = fetch(refreshUrl, {\n headers: {Accept: 'application/json'},\n }).then(async (response) => {\n if (!response.ok) throw new Error(`ClientSession refresh failed (${response.status})`);\n const payload = await response.json() as Partial<ClientSessionRefresh>;\n if (typeof payload.token !== 'string' || typeof payload.expiresAt !== 'number') {\n throw new Error('ClientSession refresh returned an invalid payload');\n }\n if (disposed) return null;\n el.dataset.uiStreamClient = payload.token;\n el.dataset.uiStreamClientExpires = String(payload.expiresAt);\n return payload.token;\n }).catch((error: unknown) => {\n warn('x-ui-stream: could not refresh ClientSession', error);\n const expiresAt = Number(el.dataset.uiStreamClientExpires);\n if (!Number.isFinite(expiresAt) || expiresAt <= Date.now()) {\n dispatchStreamLifecycle(el, 'error', {error});\n return null;\n }\n if (shouldBeConnected()) {\n refreshTimer = window.setTimeout(() => void rotateCapability(), 5000);\n }\n return el.dataset.uiStreamClient ?? null;\n }).finally(() => {\n refreshPromise = null;\n });\n return refreshPromise;\n };\n\n const rotateCapability = async (): Promise<void> => {\n if (!shouldBeConnected()) return;\n const token = await refreshCapability();\n if (token && shouldBeConnected() && !disposed) connect(token);\n };\n\n const ensureConnected = async (): Promise<void> => {\n if (disposed || !shouldBeConnected() || controller) return;\n const expiresAt = Number(el.dataset.uiStreamClientExpires);\n const currentToken = el.dataset.uiStreamClient ?? '';\n const needsRefresh = Number.isFinite(expiresAt)\n && expiresAt > 0\n && expiresAt - Date.now() <= CLIENT_SESSION_REFRESH_LEAD_MS;\n const token = needsRefresh\n ? await refreshCapability()\n : currentToken;\n if (token && shouldBeConnected() && !disposed && !controller) connect(token);\n };\n\n const suspend = (): void => {\n suspendTimer = undefined;\n if (disposed || openWhenHidden || document.visibilityState !== 'hidden') return;\n if (activeMutations.size > 0) return;\n activeGets.forEach((requestController) => requestController.abort('Document suspended'));\n activeGets.clear();\n window.clearTimeout(refreshTimer);\n refreshTimer = undefined;\n clearReconnectTimer();\n controller?.abort();\n controller = null;\n dispatchStreamLifecycle(el, 'suspended');\n managed.controller = null;\n };\n\n const scheduleSuspend = (delay: number): void => {\n window.clearTimeout(suspendTimer);\n suspendTimer = undefined;\n if (openWhenHidden || document.visibilityState !== 'hidden') return;\n suspendTimer = window.setTimeout(suspend, delay);\n };\n\n const onRefresh = (): void => {\n if (terminal) return;\n void rotateCapability();\n };\n\n const onRequestStart = (event: Event): void => {\n const detail = requestLifecycleDetail(event);\n if (!detail) return;\n if (detail.method === 'GET') {\n activeGets.set(detail.requestId, detail.controller);\n return;\n }\n activeMutations.add(detail.requestId);\n if (document.visibilityState === 'hidden' && !openWhenHidden) {\n window.clearTimeout(suspendTimer);\n suspendTimer = undefined;\n }\n };\n\n const onRequestFinish = (event: Event): void => {\n const detail = requestLifecycleDetail(event);\n if (!detail) return;\n if (detail.method === 'GET') {\n activeGets.delete(detail.requestId);\n return;\n }\n activeMutations.delete(detail.requestId);\n if (document.visibilityState === 'hidden' && !openWhenHidden) {\n if (activeMutations.size === 0) {\n scheduleSuspend(STREAM_MUTATION_DELIVERY_TAIL_MS);\n }\n }\n };\n\n const onVisibilityChange = (): void => {\n if (openWhenHidden || terminal) return;\n if (document.visibilityState === 'hidden') {\n if (activeMutations.size > 0) {\n return;\n }\n scheduleSuspend(STREAM_IDLE_SUSPEND_DELAY_MS);\n return;\n }\n window.clearTimeout(suspendTimer);\n suspendTimer = undefined;\n if (!controller) void ensureConnected();\n };\n\n const managed: ManagedStream = {\n configuration,\n controller: null,\n element: el,\n dispose(): void {\n if (disposed) return;\n disposed = true;\n window.clearTimeout(refreshTimer);\n window.clearTimeout(suspendTimer);\n clearReconnectTimer();\n el.removeEventListener('ui:stream:refresh', onRefresh);\n document.removeEventListener('visibilitychange', onVisibilityChange);\n document.removeEventListener('ui:request:start', onRequestStart);\n document.removeEventListener('ui:request:finish', onRequestFinish);\n controller?.abort();\n },\n rescheduleRefresh: scheduleRefresh,\n };\n\n declareMorphAttributes(el, 'data-ui-stream-state');\n el.addEventListener('ui:stream:refresh', onRefresh);\n document.addEventListener('visibilitychange', onVisibilityChange);\n document.addEventListener('ui:request:start', onRequestStart);\n document.addEventListener('ui:request:finish', onRequestFinish);\n if (shouldBeConnected()) {\n void ensureConnected();\n } else {\n dispatchStreamLifecycle(el, 'suspended');\n }\n return managed;\n};\n\nconst registerStream = (AlpineInstance: Alpine.Alpine): void => {\n if (typeof AlpineInstance.directive !== 'function') return;\n\n AlpineInstance.directive('ui-stream', (el, {expression}, {cleanup}) => {\n if (!expression) return;\n\n const client = el instanceof HTMLElement ? el.dataset.uiStreamClient : '';\n if (!(el instanceof HTMLElement) || !client) {\n warn('x-ui-stream: missing signed ClientSession capability');\n return;\n }\n const key = streamControllerKey(el);\n const existing = streamControllers.get(key);\n const configuration = configuredStream(el, expression);\n if (existing?.configuration === configuration) {\n el.dataset.uiStreamState = existing.element.dataset.uiStreamState ?? 'connecting';\n declareMorphAttributes(el, 'data-ui-stream-state');\n queueMicrotask(() => existing.rescheduleRefresh());\n return;\n }\n\n if (!el.isConnected && typeof key === 'string') {\n if (!pendingStreamReconciliations.has(key)) {\n pendingStreamReconciliations.add(key);\n queueMicrotask(() => {\n pendingStreamReconciliations.delete(key);\n const live = document.getElementById(key);\n if (!live) return;\n const current = streamControllers.get(key);\n const liveConfiguration = configuredStream(live, expression);\n if (current?.configuration === liveConfiguration) {\n current.rescheduleRefresh();\n return;\n }\n current?.dispose();\n streamControllers.set(key, createManagedStream(AlpineInstance, live, expression));\n });\n }\n return;\n }\n\n existing?.dispose();\n streamControllers.set(key, createManagedStream(AlpineInstance, el, expression));\n\n cleanup(() => {\n const current = streamControllers.get(key);\n if (current?.element !== el) return;\n current.dispose();\n streamControllers.delete(key);\n });\n });\n};\n\nconst setEffectRequestFilter = (filter: ((requestId: string | null) => boolean) | null): void => {\n effectRequestFilter = filter;\n};\n\nconst setMorphExclusionFilter = (\n filter: ((requestId: string | null, element: Element) => boolean) | null,\n): void => {\n morphExclusionFilter = filter;\n};\n\nconst setLocationEffectHandler = (handler: ((payload: LocationPayload) => boolean) | null): void => {\n locationEffectHandler = handler;\n};\n\nexport {\n applyUiEffect,\n applyUiEffects,\n applyStreamPatch,\n applyStreamPatchNow,\n applyStreamPatches,\n applySseFrame,\n connectStream,\n dispatchStreamEvent,\n registerStream,\n registerStreamPatchAnimator,\n setEffectRequestFilter,\n setMorphExclusionFilter,\n setLocationEffectHandler,\n streamUrl,\n};\nexport type {\n LocationPayload,\n PatchMode,\n SseFrame,\n StreamAlpine,\n StreamEventPayload,\n StreamPatchAnimator,\n StreamPatchPayload,\n UiEffectPayload,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stream-pMBGbBZH.js","names":[],"sources":["../../../../../../../../client/src/runtime/engine/stream.ts"],"sourcesContent":["import type Alpine from 'alpinejs';\nimport {\n findAlpineMachineOwner,\n} from '../alpine-machine';\nimport {\n findClosestDomInvalidationOwners,\n type DomInvalidationOwner,\n} from '../dom-invalidation';\nimport {stableIdentity} from '../identity';\nimport {declareMorphAttributes, preserveDeclaredMorphAttributes} from '../morph';\nimport {isRecord, warn} from '../../utils';\nimport {loadAssets, type AssetDescriptor} from '../../assets/bridge';\nimport {requestWithAlpine, type RequestLifecycleDetail} from './request';\n\ntype PatchMode = 'morph' | 'outer' | 'replace' | 'update' | 'append' | 'prepend' | 'before' | 'after' | 'remove';\n\ntype StreamPatchPayload = {\n html?: string | null;\n target?: string | null;\n selector?: string | null;\n mode?: PatchMode | null;\n requestId?: string | null;\n viewTransition?: boolean;\n assets?: AssetDescriptor[];\n};\n\ntype StreamEventPayload = {\n event: string;\n detail?: Record<string, unknown>;\n};\n\ntype LocationPayload = {\n url: string;\n mode?: 'push' | 'replace' | 'assign';\n requestId?: string;\n};\n\ntype UiEffectPayload =\n | ({type: 'patch'} & StreamPatchPayload)\n | ({type: 'dispatch'} & StreamEventPayload)\n | ({type: 'location'} & LocationPayload);\n\ntype SseFrame = {\n event: string;\n data: string;\n};\n\ntype StreamController = {\n abort(reason?: string): void;\n};\n\ntype StreamLifecycle = {\n open?(): void;\n disconnected?(): void;\n reset?(data: string): void;\n error?(data: string): void;\n};\ntype StreamPatchAnimator = (\n AlpineInstance: StreamAlpine,\n patches: StreamPatchPayload[],\n update: () => void,\n) => void;\n\ntype MorphOptions = {\n key?(el: HTMLElement): string | null;\n updating?(\n from: Node,\n to: Node,\n childrenOnly?: () => void,\n skip?: () => void,\n skipChildren?: () => void,\n skipUntil?: (predicate: (node: Node) => boolean) => void,\n ): void;\n updated?(from: Node, to: Node): void;\n};\n\ntype StreamAlpine = Pick<Alpine.Alpine, 'initTree'> & Partial<Pick<Alpine.Alpine, 'findClosest'>> & {\n morph?: (\n target: HTMLElement,\n html: string,\n options?: MorphOptions,\n ) => void;\n};\n\nconst pendingDomInvalidations = new Set<DomInvalidationOwner>();\nlet domInvalidationQueued = false;\nlet effectRequestFilter: ((requestId: string | null) => boolean) | null = null;\nlet locationEffectHandler: ((payload: LocationPayload) => boolean) | null = null;\nlet morphExclusionFilter: ((requestId: string | null, element: Element) => boolean) | null = null;\nlet streamPatchAnimator: StreamPatchAnimator | null = null;\nlet patchQueue = Promise.resolve();\nlet queuedPatches = 0;\n\nconst queueDomInvalidation = (owners: Iterable<DomInvalidationOwner>): void => {\n for (const owner of owners) pendingDomInvalidations.add(owner);\n if (domInvalidationQueued || pendingDomInvalidations.size === 0) return;\n domInvalidationQueued = true;\n queueMicrotask(() => {\n domInvalidationQueued = false;\n const queued = Array.from(pendingDomInvalidations);\n pendingDomInvalidations.clear();\n queued.forEach((owner) => owner.invalidateDom());\n });\n};\n\nconst parseHtml = (html: string): HTMLTemplateElement => {\n const template = document.createElement('template');\n template.innerHTML = html;\n return template;\n};\n\nconst elementsFromHtml = (html: string): HTMLElement[] => (\n Array.from(parseHtml(html).content.children)\n .filter((child): child is HTMLElement => child instanceof HTMLElement)\n);\n\nconst initInserted = (AlpineInstance: StreamAlpine, elements: HTMLElement[]): void => {\n elements.forEach((element) => AlpineInstance.initTree(element));\n};\n\nconst resolvedMode = (target: Element, payloadMode?: PatchMode | null): PatchMode => {\n if (payloadMode) return payloadMode;\n const merge = target.getAttribute('x-merge');\n if (merge) return merge as PatchMode;\n return 'replace';\n};\n\nconst targetFromPayload = (payload: StreamPatchPayload): Element | null => {\n if (payload.selector) return document.querySelector(payload.selector);\n if (!payload.target) return null;\n\n const id = payload.target.startsWith('#') ? payload.target.slice(1) : payload.target;\n return document.getElementById(id);\n};\n\nconst applyPatchToTarget = (\n AlpineInstance: StreamAlpine,\n target: Element,\n payload: StreamPatchPayload,\n): void => {\n const mode = resolvedMode(target, payload.mode);\n\n if (mode === 'remove') {\n target.remove();\n return;\n }\n\n if (!payload.html) {\n warn('x-ui-stream: received patch with no html');\n return;\n }\n\n if (mode === 'morph' || mode === 'outer') {\n if (typeof AlpineInstance.morph === 'function') {\n const affectedOwners = new Set<DomInvalidationOwner>();\n AlpineInstance.morph(target as HTMLElement, payload.html, {\n key(el: HTMLElement): string | null {\n return stableIdentity(el);\n },\n updating(from: Node, to: Node, _childrenOnly?: () => void, skip?: () => void): void {\n if (\n from instanceof Element\n && morphExclusionFilter?.(payload.requestId ?? null, from)\n ) {\n skip?.();\n return;\n }\n preserveDeclaredMorphAttributes(from, to);\n },\n updated(from: Node): void {\n if (!(from instanceof Element)) return;\n const owner = findAlpineMachineOwner(AlpineInstance as Alpine.Alpine, from);\n if (owner) affectedOwners.add(owner);\n findClosestDomInvalidationOwners(from).forEach((candidate) => {\n affectedOwners.add(candidate);\n });\n },\n });\n queueDomInvalidation(affectedOwners);\n return;\n }\n\n warn('x-ui-stream: morph mode requires an Alpine morph implementation; falling back to replace');\n }\n\n if (mode === 'replace' || mode === 'morph' || mode === 'outer') {\n const [newEl] = elementsFromHtml(payload.html);\n if (!newEl) {\n warn('x-ui-stream: replace mode produced no element');\n return;\n }\n target.replaceWith(newEl);\n AlpineInstance.initTree(newEl);\n return;\n }\n\n if (mode === 'update') {\n const elements = elementsFromHtml(payload.html);\n target.innerHTML = payload.html;\n initInserted(AlpineInstance, Array.from(target.children).filter((child): child is HTMLElement => child instanceof HTMLElement));\n if (elements.length === 0 && payload.html.trim()) AlpineInstance.initTree(target as HTMLElement);\n return;\n }\n\n const template = parseHtml(payload.html);\n const inserted = Array.from(template.content.children)\n .filter((child): child is HTMLElement => child instanceof HTMLElement);\n\n if (mode === 'append') {\n target.append(template.content);\n initInserted(AlpineInstance, inserted);\n return;\n }\n\n if (mode === 'prepend') {\n target.prepend(template.content);\n initInserted(AlpineInstance, inserted);\n return;\n }\n\n if (mode === 'before') {\n target.before(template.content);\n initInserted(AlpineInstance, inserted);\n return;\n }\n\n if (mode === 'after') {\n target.after(template.content);\n initInserted(AlpineInstance, inserted);\n }\n};\n\nconst applyStreamPatchNow = (AlpineInstance: StreamAlpine, payload: StreamPatchPayload): void => {\n const target = targetFromPayload(payload);\n\n if (target) {\n applyPatchToTarget(AlpineInstance, target, payload);\n return;\n }\n\n if (payload.selector || payload.target) {\n warn('x-ui-stream: target not found', payload.selector ?? payload.target);\n return;\n }\n\n if (!payload.html) {\n warn('x-ui-stream: received patch with no html');\n return;\n }\n\n elementsFromHtml(payload.html).forEach((child) => {\n if (!child.id) {\n warn('x-ui-stream: top-level element has no id, skipping', child);\n return;\n }\n\n const inferredTarget = document.getElementById(child.id);\n if (!inferredTarget) return;\n applyPatchToTarget(AlpineInstance, inferredTarget, {...payload, html: child.outerHTML});\n });\n};\n\nconst applyStreamPatches = (AlpineInstance: StreamAlpine, payload: StreamPatchPayload | StreamPatchPayload[]): void => {\n const patches = Array.isArray(payload) ? payload : [payload];\n const apply = (): void => {\n patches.forEach((patch) => applyStreamPatchNow(AlpineInstance, patch));\n };\n\n const applyWithAnimation = (): void => {\n const animatedPatches = patches.filter((patch) => patch.viewTransition === true);\n if (animatedPatches.length === 0) {\n apply();\n return;\n }\n if (streamPatchAnimator) streamPatchAnimator(AlpineInstance, animatedPatches, apply);\n else apply();\n };\n const assets = patches.flatMap((patch) => patch.assets ?? []);\n\n if (assets.length === 0 && queuedPatches === 0) {\n applyWithAnimation();\n return;\n }\n\n queuedPatches += 1;\n const run = async (): Promise<void> => {\n if (assets.length > 0) {\n await loadAssets(assets, AlpineInstance as Alpine.Alpine);\n }\n applyWithAnimation();\n };\n const task = patchQueue.then(run, run);\n patchQueue = task\n .catch(() => undefined)\n .finally(() => {\n queuedPatches -= 1;\n });\n};\n\nconst registerStreamPatchAnimator = (animator: StreamPatchAnimator): void => {\n streamPatchAnimator = animator;\n};\n\nconst applyStreamPatch = (AlpineInstance: StreamAlpine, payload: StreamPatchPayload): void => {\n applyStreamPatchNow(AlpineInstance, payload);\n};\n\nconst dispatchStreamEvent = (payload: StreamEventPayload): void => {\n document.dispatchEvent(new CustomEvent(payload.event, {\n detail: payload.detail ?? {},\n bubbles: true,\n composed: true,\n }));\n};\n\nconst applyLocation = (payload: LocationPayload): void => {\n if (locationEffectHandler?.(payload)) return;\n const mode = payload.mode ?? 'push';\n if (mode === 'assign') {\n window.location.assign(payload.url);\n return;\n }\n\n if (mode === 'replace') {\n window.history.replaceState(window.history.state, '', payload.url);\n return;\n }\n\n window.history.pushState(window.history.state, '', payload.url);\n};\n\nconst applyUiEffect = (AlpineInstance: StreamAlpine, effect: UiEffectPayload): void => {\n if (effect.type === 'patch') {\n const {type: _type, ...payload} = effect;\n applyStreamPatches(AlpineInstance, payload);\n return;\n }\n\n if (effect.type === 'dispatch') {\n const {type: _type, ...payload} = effect;\n dispatchStreamEvent(payload);\n return;\n }\n\n if (effect.type === 'location') {\n applyLocation(effect);\n return;\n }\n\n warn('x-ui-stream: unknown UI effect', effect);\n};\n\nconst applyUiEffects = (AlpineInstance: StreamAlpine, effects: UiEffectPayload | UiEffectPayload[]): void => {\n const events = Array.isArray(effects) ? effects : [effects];\n\n events.forEach((effect) => applyUiEffect(AlpineInstance, effect));\n};\n\nconst commandLines = (frame: SseFrame): Map<string, string[]> | null => {\n const commands = new Map<string, string[]>();\n for (const line of frame.data.split('\\n')) {\n const space = line.indexOf(' ');\n const hasValue = space > 0;\n const key = hasValue ? line.slice(0, space) : line;\n\n if (!hasValue && key !== 'html') {\n warn('x-ui-stream: invalid SSE command line', key);\n return null;\n }\n\n const value = hasValue ? line.slice(space + 1) : '';\n const values = commands.get(key);\n if (values) values.push(value);\n else commands.set(key, [value]);\n }\n\n return commands;\n};\n\nconst scalarCommand = (commands: Map<string, string[]>, key: string): string | undefined => {\n const values = commands.get(key);\n if (!values?.length) return undefined;\n if (values.length > 1) warn('x-ui-stream: duplicate SSE command, using last value', key);\n return values.at(-1);\n};\n\nconst applyPatchFrame = (AlpineInstance: StreamAlpine, frame: SseFrame): void => {\n const commands = commandLines(frame);\n if (!commands || commands.size === 0) return;\n const requestId = scalarCommand(commands, 'request-id');\n if (effectRequestFilter && !effectRequestFilter(requestId ?? null)) return;\n\n let assets: AssetDescriptor[] | undefined;\n const rawAssets = scalarCommand(commands, 'assets');\n if (rawAssets) {\n try {\n const parsed: unknown = JSON.parse(rawAssets);\n if (!Array.isArray(parsed)) throw new TypeError('assets must be an array');\n assets = parsed as AssetDescriptor[];\n } catch {\n warn('x-ui-stream: invalid patch assets JSON', rawAssets);\n return;\n }\n }\n\n const payload: StreamPatchPayload = {\n mode: (scalarCommand(commands, 'mode') ?? 'replace') as PatchMode,\n target: scalarCommand(commands, 'target') ?? null,\n selector: scalarCommand(commands, 'selector') ?? null,\n html: commands.get('html')?.join('\\n') ?? null,\n requestId: requestId ?? null,\n viewTransition: scalarCommand(commands, 'view-transition') === 'true',\n ...(assets ? {assets} : {}),\n };\n\n applyStreamPatches(AlpineInstance, payload);\n};\n\nconst applyDispatchFrame = (frame: SseFrame): void => {\n const commands = commandLines(frame);\n if (!commands) return;\n const requestId = scalarCommand(commands, 'request-id');\n if (effectRequestFilter && !effectRequestFilter(requestId ?? null)) return;\n const event = scalarCommand(commands, 'event');\n if (!event) {\n warn('x-ui-stream: dispatch SSE frame missing event');\n return;\n }\n\n const rawDetail = scalarCommand(commands, 'detail');\n let detail: Record<string, unknown> = {};\n if (rawDetail) {\n try {\n const parsed: unknown = JSON.parse(rawDetail);\n if (isRecord(parsed)) detail = parsed;\n } catch {\n warn('x-ui-stream: invalid dispatch detail JSON', rawDetail);\n return;\n }\n }\n\n dispatchStreamEvent({event, detail});\n};\n\nconst applyLocationFrame = (AlpineInstance: StreamAlpine, frame: SseFrame): void => {\n const commands = commandLines(frame);\n if (!commands) return;\n const requestId = scalarCommand(commands, 'request-id');\n if (effectRequestFilter && !effectRequestFilter(requestId ?? null)) return;\n const url = scalarCommand(commands, 'url');\n if (!url) {\n warn('x-ui-stream: location SSE frame missing url');\n return;\n }\n\n const mode = scalarCommand(commands, 'mode') as 'push' | 'replace' | 'assign' | undefined;\n applyUiEffect(AlpineInstance, {\n type: 'location',\n url,\n ...(requestId ? {requestId} : {}),\n ...(mode ? {mode} : {}),\n });\n};\n\nconst SSE_FRAME_HANDLERS: Record<string, (AlpineInstance: StreamAlpine, frame: SseFrame) => void> = {\n 'trellis-ui-patch': applyPatchFrame,\n 'trellis-ui-dispatch': (_AlpineInstance, frame) => applyDispatchFrame(frame),\n 'trellis-ui-location': applyLocationFrame,\n};\n\nconst TRELLIS_SSE_EVENT_PREFIX = 'trellis-ui-';\n\nconst applySseFrame = (AlpineInstance: StreamAlpine, frame: SseFrame): void => {\n const handler = SSE_FRAME_HANDLERS[frame.event];\n if (!handler) {\n if (frame.event.startsWith(TRELLIS_SSE_EVENT_PREFIX)) {\n warn('x-ui-stream: unsupported SSE event', frame.event);\n }\n return;\n }\n handler(AlpineInstance, frame);\n};\n\nconst streamUrl = (url: string, scopes = '', client = ''): string => {\n const parsed = new URL(url, document.baseURI);\n const normalizedScopes = [...new Set(scopes.split(/\\s+/).filter(Boolean))];\n if (client) parsed.searchParams.set('client', client);\n if (normalizedScopes.length > 0) {\n parsed.searchParams.delete('channel');\n normalizedScopes.forEach((scope) => parsed.searchParams.append('channel', scope));\n }\n\n return /^[a-z][a-z\\d+.-]*:/i.test(url) || url.startsWith('//')\n ? parsed.href\n : `${parsed.pathname}${parsed.search}${parsed.hash}`;\n};\n\nconst connectStream = (\n AlpineInstance: StreamAlpine,\n url: string,\n scopes = '',\n client = '',\n lifecycle: StreamLifecycle = {},\n): StreamController => {\n const source = new EventSource(streamUrl(url, scopes, client));\n let active = true;\n Object.keys(SSE_FRAME_HANDLERS).forEach((eventName) => {\n source.addEventListener(eventName, (event) => {\n if (!active || !(event instanceof MessageEvent)) return;\n applySseFrame(AlpineInstance, {\n event: event.type,\n data: String(event.data),\n });\n });\n });\n source.addEventListener('stream-open', () => {\n if (!active) return;\n lifecycle.open?.();\n });\n source.addEventListener('stream-reset', (event) => {\n if (!active) return;\n lifecycle.reset?.(event instanceof MessageEvent ? String(event.data) : '');\n });\n source.addEventListener('stream-error', (event) => {\n if (!active) return;\n active = false;\n source.close();\n lifecycle.error?.(event instanceof MessageEvent ? String(event.data) : '');\n });\n source.addEventListener('error', () => {\n if (!active) return;\n active = false;\n source.close();\n lifecycle.disconnected?.();\n });\n\n return {\n abort() {\n active = false;\n source.close();\n },\n };\n};\n\ntype StreamControllerKey = Element | string;\n\ntype ManagedStream = {\n configuration: string;\n controller: StreamController | null;\n element: HTMLElement;\n dispose(): void;\n rescheduleRefresh(): void;\n};\n\nconst streamControllers = new Map<StreamControllerKey, ManagedStream>();\nconst pendingStreamReconciliations = new Set<StreamControllerKey>();\n\nconst streamControllerKey = (el: Element): StreamControllerKey => (\n el instanceof HTMLElement && el.id ? el.id : el\n);\n\ntype StreamLifecycleName = 'connecting' | 'open' | 'disconnected' | 'suspended' | 'reset' | 'error';\ntype ClientSessionRefresh = {token: string; expiresAt: number};\n\nconst CLIENT_SESSION_REFRESH_LEAD_MS = 60_000;\nconst STREAM_IDLE_SUSPEND_DELAY_MS = 1_000;\nconst STREAM_MUTATION_DELIVERY_TAIL_MS = 2_000;\nconst STREAM_RETRY_BASE_MS = 1_000;\nconst STREAM_RETRY_MAX_MS = 30_000;\n\nconst dispatchStreamLifecycle = (\n el: HTMLElement,\n name: StreamLifecycleName,\n detail: Record<string, unknown> = {},\n): void => {\n if (name !== 'reset') el.dataset.uiStreamState = name;\n el.dispatchEvent(new CustomEvent(`ui:stream:${name}`, {\n bubbles: true,\n composed: true,\n detail: {source: el, ...detail},\n }));\n};\n\nconst configuredStreamUrl = (el: HTMLElement, expression: string): string => (\n streamUrl(expression, el.dataset.uiStreamScopes, el.dataset.uiStreamClient)\n);\n\nconst streamOpenWhenHidden = (el: HTMLElement): boolean => (\n el.dataset.uiStreamOpenWhenHidden === 'true'\n);\n\nconst configuredStream = (el: HTMLElement, expression: string): string => (\n JSON.stringify({\n openWhenHidden: streamOpenWhenHidden(el),\n url: configuredStreamUrl(el, expression),\n })\n);\n\nconst hasNamedStreamScopes = (el: HTMLElement): boolean => (\n Boolean(el.dataset.uiStreamScopes?.trim())\n);\n\nconst requestLifecycleDetail = (event: Event): RequestLifecycleDetail | null => {\n if (!(event instanceof CustomEvent)) return null;\n const detail = event.detail as Partial<RequestLifecycleDetail> | null;\n if (\n !detail\n || typeof detail.requestId !== 'string'\n || typeof detail.method !== 'string'\n || !(detail.controller instanceof AbortController)\n ) return null;\n return detail as RequestLifecycleDetail;\n};\n\nconst createManagedStream = (\n AlpineInstance: Alpine.Alpine,\n el: HTMLElement,\n expression: string,\n): ManagedStream => {\n let configuration = configuredStream(el, expression);\n let controller: StreamController | null = null;\n let refreshTimer: number | undefined;\n let refreshPromise: Promise<string | null> | null = null;\n let reconnectTimer: number | undefined;\n let suspendTimer: number | undefined;\n let connectedOnce = false;\n let connectionGeneration = 0;\n let reconnectAttempts = 0;\n let terminal = false;\n let disposed = false;\n const activeGets = new Map<string, AbortController>();\n const activeMutations = new Set<string>();\n const openWhenHidden = streamOpenWhenHidden(el);\n\n const shouldBeConnected = (): boolean => (\n !terminal && (openWhenHidden || document.visibilityState === 'visible')\n );\n\n const clearReconnectTimer = (): void => {\n window.clearTimeout(reconnectTimer);\n reconnectTimer = undefined;\n };\n\n const dispatchResumed = (): void => {\n el.dispatchEvent(new CustomEvent('ui:stream:resumed', {\n bubbles: true,\n composed: true,\n }));\n };\n\n const finishResume = async (generation: number): Promise<void> => {\n if (hasNamedStreamScopes(el)) {\n await requestWithAlpine(\n AlpineInstance,\n window.location.href,\n {method: 'GET', cache: 'no-store'},\n ).catch((error: unknown) => {\n warn('x-ui-stream: could not revalidate resumed document', error);\n return null;\n });\n }\n\n if (\n disposed\n || generation !== connectionGeneration\n || el.dataset.uiStreamState !== 'open'\n ) return;\n dispatchResumed();\n };\n\n const connect = (token: string): void => {\n controller?.abort();\n clearReconnectTimer();\n const generation = ++connectionGeneration;\n configuration = configuredStream(el, expression);\n dispatchStreamLifecycle(el, 'connecting');\n controller = connectStream(\n AlpineInstance,\n expression,\n el.dataset.uiStreamScopes,\n token,\n {\n open: () => {\n if (generation !== connectionGeneration) return;\n const resumed = connectedOnce;\n connectedOnce = true;\n reconnectAttempts = 0;\n dispatchStreamLifecycle(el, 'open');\n if (resumed) void finishResume(generation);\n },\n disconnected: () => {\n if (generation !== connectionGeneration || disposed) return;\n controller = null;\n managed.controller = null;\n dispatchStreamLifecycle(el, 'disconnected');\n if (!shouldBeConnected()) return;\n const ceiling = Math.min(\n STREAM_RETRY_BASE_MS * (2 ** reconnectAttempts),\n STREAM_RETRY_MAX_MS,\n );\n reconnectAttempts += 1;\n const delay = Math.floor(Math.random() * ceiling);\n reconnectTimer = window.setTimeout(() => {\n reconnectTimer = undefined;\n void ensureConnected();\n }, delay);\n },\n reset: (data) => dispatchStreamLifecycle(el, 'reset', {data}),\n error: (data) => {\n if (generation !== connectionGeneration || disposed) return;\n terminal = true;\n controller = null;\n managed.controller = null;\n clearReconnectTimer();\n dispatchStreamLifecycle(el, 'error', {data});\n },\n },\n );\n managed.controller = controller;\n managed.configuration = configuration;\n scheduleRefresh();\n };\n\n const scheduleRefresh = (): void => {\n window.clearTimeout(refreshTimer);\n refreshTimer = undefined;\n if (!shouldBeConnected()) return;\n const expiresAt = Number(el.dataset.uiStreamClientExpires);\n if (!Number.isFinite(expiresAt) || expiresAt <= 0) return;\n const delay = expiresAt - Date.now() - CLIENT_SESSION_REFRESH_LEAD_MS;\n if (delay <= 0) {\n void rotateCapability();\n return;\n }\n refreshTimer = window.setTimeout(() => void rotateCapability(), delay);\n };\n\n const refreshCapability = (): Promise<string | null> => {\n if (disposed) return Promise.resolve(null);\n if (refreshPromise) return refreshPromise;\n const refreshUrl = el.dataset.uiStreamClientRefresh;\n if (!refreshUrl) {\n dispatchStreamLifecycle(el, 'error', {reason: 'missing-refresh-url'});\n return Promise.resolve(null);\n }\n\n refreshPromise = fetch(refreshUrl, {\n headers: {Accept: 'application/json'},\n }).then(async (response) => {\n if (!response.ok) throw new Error(`ClientSession refresh failed (${response.status})`);\n const payload = await response.json() as Partial<ClientSessionRefresh>;\n if (typeof payload.token !== 'string' || typeof payload.expiresAt !== 'number') {\n throw new Error('ClientSession refresh returned an invalid payload');\n }\n if (disposed) return null;\n el.dataset.uiStreamClient = payload.token;\n el.dataset.uiStreamClientExpires = String(payload.expiresAt);\n return payload.token;\n }).catch((error: unknown) => {\n warn('x-ui-stream: could not refresh ClientSession', error);\n const expiresAt = Number(el.dataset.uiStreamClientExpires);\n if (!Number.isFinite(expiresAt) || expiresAt <= Date.now()) {\n dispatchStreamLifecycle(el, 'error', {error});\n return null;\n }\n if (shouldBeConnected()) {\n refreshTimer = window.setTimeout(() => void rotateCapability(), 5000);\n }\n return el.dataset.uiStreamClient ?? null;\n }).finally(() => {\n refreshPromise = null;\n });\n return refreshPromise;\n };\n\n const rotateCapability = async (): Promise<void> => {\n if (!shouldBeConnected()) return;\n const token = await refreshCapability();\n if (token && shouldBeConnected() && !disposed) connect(token);\n };\n\n const ensureConnected = async (): Promise<void> => {\n if (disposed || !shouldBeConnected() || controller) return;\n const expiresAt = Number(el.dataset.uiStreamClientExpires);\n const currentToken = el.dataset.uiStreamClient ?? '';\n const needsRefresh = Number.isFinite(expiresAt)\n && expiresAt > 0\n && expiresAt - Date.now() <= CLIENT_SESSION_REFRESH_LEAD_MS;\n const token = needsRefresh\n ? await refreshCapability()\n : currentToken;\n if (token && shouldBeConnected() && !disposed && !controller) connect(token);\n };\n\n const suspend = (): void => {\n suspendTimer = undefined;\n if (disposed || openWhenHidden || document.visibilityState !== 'hidden') return;\n if (activeMutations.size > 0) return;\n activeGets.forEach((requestController) => requestController.abort('Document suspended'));\n activeGets.clear();\n window.clearTimeout(refreshTimer);\n refreshTimer = undefined;\n clearReconnectTimer();\n controller?.abort();\n controller = null;\n dispatchStreamLifecycle(el, 'suspended');\n managed.controller = null;\n };\n\n const scheduleSuspend = (delay: number): void => {\n window.clearTimeout(suspendTimer);\n suspendTimer = undefined;\n if (openWhenHidden || document.visibilityState !== 'hidden') return;\n suspendTimer = window.setTimeout(suspend, delay);\n };\n\n const onRefresh = (): void => {\n if (terminal) return;\n void rotateCapability();\n };\n\n const onRequestStart = (event: Event): void => {\n const detail = requestLifecycleDetail(event);\n if (!detail) return;\n if (detail.method === 'GET') {\n activeGets.set(detail.requestId, detail.controller);\n return;\n }\n activeMutations.add(detail.requestId);\n if (document.visibilityState === 'hidden' && !openWhenHidden) {\n window.clearTimeout(suspendTimer);\n suspendTimer = undefined;\n }\n };\n\n const onRequestFinish = (event: Event): void => {\n const detail = requestLifecycleDetail(event);\n if (!detail) return;\n if (detail.method === 'GET') {\n activeGets.delete(detail.requestId);\n return;\n }\n activeMutations.delete(detail.requestId);\n if (document.visibilityState === 'hidden' && !openWhenHidden) {\n if (activeMutations.size === 0) {\n scheduleSuspend(STREAM_MUTATION_DELIVERY_TAIL_MS);\n }\n }\n };\n\n const onVisibilityChange = (): void => {\n if (openWhenHidden || terminal) return;\n if (document.visibilityState === 'hidden') {\n if (activeMutations.size > 0) {\n return;\n }\n scheduleSuspend(STREAM_IDLE_SUSPEND_DELAY_MS);\n return;\n }\n window.clearTimeout(suspendTimer);\n suspendTimer = undefined;\n if (!controller) void ensureConnected();\n };\n\n const managed: ManagedStream = {\n configuration,\n controller: null,\n element: el,\n dispose(): void {\n if (disposed) return;\n disposed = true;\n window.clearTimeout(refreshTimer);\n window.clearTimeout(suspendTimer);\n clearReconnectTimer();\n el.removeEventListener('ui:stream:refresh', onRefresh);\n document.removeEventListener('visibilitychange', onVisibilityChange);\n document.removeEventListener('ui:request:start', onRequestStart);\n document.removeEventListener('ui:request:finish', onRequestFinish);\n controller?.abort();\n },\n rescheduleRefresh: scheduleRefresh,\n };\n\n declareMorphAttributes(el, 'data-ui-stream-state');\n el.addEventListener('ui:stream:refresh', onRefresh);\n document.addEventListener('visibilitychange', onVisibilityChange);\n document.addEventListener('ui:request:start', onRequestStart);\n document.addEventListener('ui:request:finish', onRequestFinish);\n if (shouldBeConnected()) {\n void ensureConnected();\n } else {\n dispatchStreamLifecycle(el, 'suspended');\n }\n return managed;\n};\n\nconst registerStream = (AlpineInstance: Alpine.Alpine): void => {\n if (typeof AlpineInstance.directive !== 'function') return;\n\n AlpineInstance.directive('ui-stream', (el, {expression}, {cleanup}) => {\n if (!expression) return;\n\n const client = el instanceof HTMLElement ? el.dataset.uiStreamClient : '';\n if (!(el instanceof HTMLElement) || !client) {\n warn('x-ui-stream: missing signed ClientSession capability');\n return;\n }\n const key = streamControllerKey(el);\n const existing = streamControllers.get(key);\n const configuration = configuredStream(el, expression);\n if (existing?.configuration === configuration) {\n el.dataset.uiStreamState = existing.element.dataset.uiStreamState ?? 'connecting';\n declareMorphAttributes(el, 'data-ui-stream-state');\n queueMicrotask(() => existing.rescheduleRefresh());\n return;\n }\n\n if (!el.isConnected && typeof key === 'string') {\n if (!pendingStreamReconciliations.has(key)) {\n pendingStreamReconciliations.add(key);\n queueMicrotask(() => {\n pendingStreamReconciliations.delete(key);\n const live = document.getElementById(key);\n if (!live) return;\n const current = streamControllers.get(key);\n const liveConfiguration = configuredStream(live, expression);\n if (current?.configuration === liveConfiguration) {\n current.rescheduleRefresh();\n return;\n }\n current?.dispose();\n streamControllers.set(key, createManagedStream(AlpineInstance, live, expression));\n });\n }\n return;\n }\n\n existing?.dispose();\n streamControllers.set(key, createManagedStream(AlpineInstance, el, expression));\n\n cleanup(() => {\n const current = streamControllers.get(key);\n if (current?.element !== el) return;\n current.dispose();\n streamControllers.delete(key);\n });\n });\n};\n\nconst setEffectRequestFilter = (filter: ((requestId: string | null) => boolean) | null): void => {\n effectRequestFilter = filter;\n};\n\nconst setMorphExclusionFilter = (\n filter: ((requestId: string | null, element: Element) => boolean) | null,\n): void => {\n morphExclusionFilter = filter;\n};\n\nconst setLocationEffectHandler = (handler: ((payload: LocationPayload) => boolean) | null): void => {\n locationEffectHandler = handler;\n};\n\nexport {\n applyUiEffect,\n applyUiEffects,\n applyStreamPatch,\n applyStreamPatchNow,\n applyStreamPatches,\n applySseFrame,\n connectStream,\n dispatchStreamEvent,\n registerStream,\n registerStreamPatchAnimator,\n setEffectRequestFilter,\n setMorphExclusionFilter,\n setLocationEffectHandler,\n streamUrl,\n};\nexport type {\n LocationPayload,\n PatchMode,\n SseFrame,\n StreamAlpine,\n StreamEventPayload,\n StreamPatchAnimator,\n StreamPatchPayload,\n UiEffectPayload,\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,t}from"../chunks/entry.generated-
|
|
1
|
+
import{n as e,t}from"../chunks/entry.generated-DRqap77P.js";export{e as UiAccordion,t as default,t as registerAccordion};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,r as t,t as n}from"../chunks/entry.generated-
|
|
1
|
+
import{n as e,r as t,t as n}from"../chunks/entry.generated-DEiL4FhC.js";export{e as UiCheckbox,t as UiCheckboxGroup,n as default,n as registerCheckbox};
|
package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,t}from"../chunks/entry.generated-
|
|
1
|
+
import{n as e,t}from"../chunks/entry.generated-BuXeU4zt.js";export{e as UiDatePicker,t as default,t as registerDatePicker};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,t}from"../chunks/entry.generated-
|
|
1
|
+
import{n as e,t}from"../chunks/entry.generated-C-MH09sf.js";export{e as UiDropdown,t as default,t as registerDropdown};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,t}from"../chunks/entry.generated-
|
|
1
|
+
import{n as e,t}from"../chunks/entry.generated-BehM6Hle.js";export{e as UiField,t as default,t as registerField};
|
package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,t}from"../chunks/entry.generated-
|
|
1
|
+
import{n as e,t}from"../chunks/entry.generated-9sxiaVVI.js";export{e as UiFileUpload,t as default,t as registerFileUpload};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"../chunks/motion-BRaHJwNf.js";import{n as t,r as n,t as r}from"../chunks/entry.generated-
|
|
1
|
+
import{t as e}from"../chunks/motion-BRaHJwNf.js";import{n as t,r as n,t as r}from"../chunks/entry.generated-Dzw2Rg5F.js";import{t as i}from"../chunks/capability-motion-wMoceguq.js";import{n as ee,t as a}from"../chunks/entry.generated-BJ0fQYT1.js";import{t as o}from"../chunks/drag-and-drop-BV6kB47L.js";import{i as s,n as c,r as te,t as l}from"../chunks/capability-sortable-BurX5yRd.js";import{n as ne,t as u}from"../chunks/entry.generated-DRqap77P.js";import{n as d,t as f}from"../chunks/entry.generated-C-lyYGbo.js";import{n as p,r as m,t as h}from"../chunks/entry.generated-DEiL4FhC.js";import{n as g,t as _}from"../chunks/entry.generated-BuXeU4zt.js";import{n as v,t as y}from"../chunks/entry.generated-C-MH09sf.js";import{n as re,t as b}from"../chunks/entry.generated-BehM6Hle.js";import{n as ie,t as x}from"../chunks/entry.generated-9sxiaVVI.js";import{n as S,t as C}from"../chunks/entry.generated-cMueWbY7.js";import{n as w,r as T,t as E}from"../chunks/entry.generated-CCka3fIO.js";import{t as D}from"../chunks/capability-resizable-C6LKIbpv.js";import{n as O,r as k,t as A}from"../chunks/entry.generated-eVXGqjCM.js";import{n as j,r as M,t as N}from"../chunks/entry.generated-DBSwLHmm.js";import{n as P,t as F}from"../chunks/entry.generated-CoJxfxlc.js";import{i as I,n as L,r as R,t as z}from"../chunks/entry.generated-D6cdmqiV.js";import{n as B,t as V}from"../chunks/entry.generated-EtCfrZfr.js";import{n as H,t as U}from"../chunks/entry.generated-CSxEK8G9.js";import{n as W,t as G}from"../chunks/entry.generated-C5Bueyfb.js";import{_ as K,a as q,b as J,c as Y,d as ae,f as oe,g as se,h as ce,i as le,l as ue,m as de,n as fe,o as pe,p as me,r as he,s as ge,t as X,u as _e,v as ve,x as Z,y as ye}from"../chunks/entry.generated-BhPEF6oz.js";var Q=new WeakSet,$=e=>{Q.has(e)||(Q.add(e),i(e),D(e),l(e),u(e),f(),h(e),_(e),y(e),b(e),x(e),C(e),E(e),A(e),N(e),F(e),a(e),z(e),V(e),U(e),G(e),r(e),X(e))};export{fe as TABLE_ALIGNS,he as TABLE_BORDERS,le as TABLE_COLUMN_SCOPES,q as TABLE_DENSITIES,pe as TABLE_FILTER_AS_VALUES,ge as TABLE_LAYOUTS,Y as TABLE_ROW_HEADER_SCOPES,ue as TABLE_SORTS,_e as TABLE_VALIGNS,ae as TABLE_VARIANTS,oe as TABLE_WIDTHS,ne as UiAccordion,p as UiCheckbox,m as UiCheckboxGroup,g as UiDatePicker,v as UiDropdown,re as UiField,ie as UiFileUpload,S as UiInput,w as UiModal,T as UiModalTrigger,O as UiPanelToggle,k as UiPanels,j as UiRadio,M as UiRadioGroup,P as UiScrollArea,ee as UiSelect,L as UiSidebar,R as UiSidebarEdge,I as UiSidebarToggle,B as UiSlider,H as UiSwitch,W as UiTabs,t as UiToast,n as UiToastOutlet,$ as components,$ as default,o as createResizable,te as createSortableRegistry,e as motion,u as registerAccordion,f as registerButton,h as registerCheckbox,_ as registerDatePicker,y as registerDropdown,b as registerField,x as registerFileUpload,C as registerInput,E as registerModal,i as registerMotionCapability,A as registerPanels,N as registerRadio,D as registerResizableCapability,F as registerScrollArea,a as registerSelect,z as registerSidebar,V as registerSlider,l as registerSortableCapability,c as registerSortableDirective,U as registerSwitch,X as registerTable,G as registerTabs,r as registerToast,s as sortable,me as tableCaptionSchema,de as tableCellSchema,ce as tableColumnFilterSchema,se as tableColumnSchema,K as tableEmptySchema,ve as tableRowHeaderSchema,ye as tableRowSchema,J as tableSchema,Z as tableSectionSchema,d as unregisterButton};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,t}from"../chunks/entry.generated-
|
|
1
|
+
import{n as e,t}from"../chunks/entry.generated-cMueWbY7.js";export{e as UiInput,t as default,t as registerInput};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,r as t,t as n}from"../chunks/entry.generated-
|
|
1
|
+
import{n as e,r as t,t as n}from"../chunks/entry.generated-CCka3fIO.js";export{e as UiModal,t as UiModalTrigger,n as default,n as registerModal};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,r as t,t as n}from"../chunks/entry.generated-
|
|
1
|
+
import{n as e,r as t,t as n}from"../chunks/entry.generated-eVXGqjCM.js";export{e as UiPanelToggle,t as UiPanels,n as default,n as registerPanels};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,r as t,t as n}from"../chunks/entry.generated-
|
|
1
|
+
import{n as e,r as t,t as n}from"../chunks/entry.generated-DBSwLHmm.js";export{e as UiRadio,t as UiRadioGroup,n as default,n as registerRadio};
|
package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,t}from"../chunks/entry.generated-
|
|
1
|
+
import{n as e,t}from"../chunks/entry.generated-CoJxfxlc.js";export{e as UiScrollArea,t as default,t as registerScrollArea};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,t}from"../chunks/entry.generated-
|
|
1
|
+
import{n as e,t}from"../chunks/entry.generated-BJ0fQYT1.js";export{e as UiSelect,t as default,t as registerSelect};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e,n as t,r as n,t as r}from"../chunks/entry.generated-
|
|
1
|
+
import{i as e,n as t,r as n,t as r}from"../chunks/entry.generated-D6cdmqiV.js";export{t as UiSidebar,n as UiSidebarEdge,e as UiSidebarToggle,r as default,r as registerSidebar};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,t}from"../chunks/entry.generated-
|
|
1
|
+
import{n as e,t}from"../chunks/entry.generated-EtCfrZfr.js";export{e as UiSlider,t as default,t as registerSlider};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,t}from"../chunks/entry.generated-
|
|
1
|
+
import{n as e,t}from"../chunks/entry.generated-CSxEK8G9.js";export{e as UiSwitch,t as default,t as registerSwitch};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,t}from"../chunks/entry.generated-
|
|
1
|
+
import{n as e,t}from"../chunks/entry.generated-C5Bueyfb.js";export{e as UiTabs,t as default,t as registerTabs};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,r as t,t as n}from"../chunks/entry.generated-
|
|
1
|
+
import{n as e,r as t,t as n}from"../chunks/entry.generated-Dzw2Rg5F.js";export{e as UiToast,t as UiToastOutlet,n as default,n as registerToast};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e}from"./chunks/ui-H3t7UHMs.js";import{a as t,c as n,f as r,l as i,n as a,o,s}from"./chunks/codecs-Cb1ns_47.js";import{i as c,r as l,t as u}from"./chunks/alpine-machine-
|
|
1
|
+
import{i as e}from"./chunks/ui-H3t7UHMs.js";import{a as t,c as n,f as r,l as i,n as a,o,s}from"./chunks/codecs-Cb1ns_47.js";import{i as c,r as l,t as u}from"./chunks/alpine-machine-BS13dbK4.js";import{t as d}from"./chunks/alpine-data-DZ17j0jc.js";import{i as f,n as p,r as m,t as h}from"./chunks/core-BuKz1uWk.js";import{n as g,t as _}from"./chunks/styles-TfvwVPGw.js";import{t as v}from"./chunks/merge-bindings-C8ewA_FD.js";import{t as y}from"./chunks/machine-Dqut4h89.js";export{a as bool,h as coreRuntime,h as default,u as createAlpineMachine,y as createMachine,l as createTransitionCoordinator,t as decodeProps,d as defineAlpineData,c as defineHook,m as defineManifest,o as defineProps,_ as defineStyles,s as json,v as mergeBindings,n as number,i as oneOf,f as propsFromSchema,p as registerTransitionDirective,g as resolveStyle,r as string,e as ui};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{n as e}from"./chunks/bridge-B4S_D6hV.js";import{t}from"./chunks/motion-BRaHJwNf.js";import{n,r as ee,t as te}from"./chunks/entry.generated-
|
|
1
|
+
import{n as e}from"./chunks/bridge-B4S_D6hV.js";import{t}from"./chunks/motion-BRaHJwNf.js";import{n,r as ee,t as te}from"./chunks/entry.generated-Dzw2Rg5F.js";import{i as r}from"./chunks/ui-H3t7UHMs.js";import{t as i}from"./chunks/capability-motion-wMoceguq.js";import{a,c as o,f as s,l as c,n as l,o as u,s as d}from"./chunks/codecs-Cb1ns_47.js";import{i as f,r as p,t as m}from"./chunks/alpine-machine-BS13dbK4.js";import{t as h}from"./chunks/alpine-data-DZ17j0jc.js";import{i as g,n as _,r as v,t as y}from"./chunks/core-BuKz1uWk.js";import{n as b,t as x}from"./chunks/styles-TfvwVPGw.js";import{t as S}from"./chunks/merge-bindings-C8ewA_FD.js";import{t as C}from"./chunks/machine-Dqut4h89.js";import{n as w,t as T}from"./chunks/entry.generated-BJ0fQYT1.js";import{t as E}from"./chunks/drag-and-drop-BV6kB47L.js";import{i as D,n as O,r as k,t as A}from"./chunks/capability-sortable-BurX5yRd.js";import{n as j,t as M}from"./chunks/entry.generated-DRqap77P.js";import{n as N,t as P}from"./chunks/entry.generated-C-lyYGbo.js";import{n as F,r as I,t as L}from"./chunks/entry.generated-DEiL4FhC.js";import{n as R,t as z}from"./chunks/entry.generated-BuXeU4zt.js";import{n as B,t as V}from"./chunks/entry.generated-C-MH09sf.js";import{n as H,t as U}from"./chunks/entry.generated-BehM6Hle.js";import{n as W,t as G}from"./chunks/entry.generated-9sxiaVVI.js";import{n as K,t as q}from"./chunks/entry.generated-cMueWbY7.js";import{n as J,r as Y,t as X}from"./chunks/entry.generated-CCka3fIO.js";import{t as ne}from"./chunks/capability-resizable-C6LKIbpv.js";import{n as Z,r as re,t as ie}from"./chunks/entry.generated-eVXGqjCM.js";import{n as ae,r as oe,t as se}from"./chunks/entry.generated-DBSwLHmm.js";import{n as ce,t as le}from"./chunks/entry.generated-CoJxfxlc.js";import{i as ue,n as de,r as fe,t as pe}from"./chunks/entry.generated-D6cdmqiV.js";import{n as me,t as he}from"./chunks/entry.generated-EtCfrZfr.js";import{n as ge,t as _e}from"./chunks/entry.generated-CSxEK8G9.js";import{n as ve,t as ye}from"./chunks/entry.generated-C5Bueyfb.js";import{_ as be,a as xe,b as Se,c as Ce,d as we,f as Te,g as Ee,h as De,i as Oe,l as ke,m as Ae,n as je,o as Me,p as Ne,r as Pe,s as Fe,t as Ie,u as Le,v as Re,x as ze,y as Be}from"./chunks/entry.generated-BhPEF6oz.js";import{components as Q}from"./components/index.js";var Ve=[`trellis:core`,`trellis:motion`,`trellis:resizable`,`trellis:sortable`,`trellis:accordion`,`trellis:button`,`trellis:checkbox`,`trellis:date-picker`,`trellis:dropdown`,`trellis:field`,`trellis:file-upload`,`trellis:input`,`trellis:modal`,`trellis:panels`,`trellis:radio`,`trellis:scroll-area`,`trellis:select`,`trellis:sidebar`,`trellis:slider`,`trellis:switch`,`trellis:tabs`,`trellis:toast`,`trellis:table`],$=t=>{y(t),Q(t),e(Ve,t)};export{je as TABLE_ALIGNS,Pe as TABLE_BORDERS,Oe as TABLE_COLUMN_SCOPES,xe as TABLE_DENSITIES,Me as TABLE_FILTER_AS_VALUES,Fe as TABLE_LAYOUTS,Ce as TABLE_ROW_HEADER_SCOPES,ke as TABLE_SORTS,Le as TABLE_VALIGNS,we as TABLE_VARIANTS,Te as TABLE_WIDTHS,j as UiAccordion,F as UiCheckbox,I as UiCheckboxGroup,R as UiDatePicker,B as UiDropdown,H as UiField,W as UiFileUpload,K as UiInput,J as UiModal,Y as UiModalTrigger,Z as UiPanelToggle,re as UiPanels,ae as UiRadio,oe as UiRadioGroup,ce as UiScrollArea,w as UiSelect,de as UiSidebar,fe as UiSidebarEdge,ue as UiSidebarToggle,me as UiSlider,ge as UiSwitch,ve as UiTabs,n as UiToast,ee as UiToastOutlet,l as bool,Q as components,y as coreRuntime,m as createAlpineMachine,C as createMachine,E as createResizable,k as createSortableRegistry,p as createTransitionCoordinator,a as decodeProps,$ as default,$ as trellisUi,h as defineAlpineData,f as defineHook,v as defineManifest,u as defineProps,x as defineStyles,d as json,S as mergeBindings,t as motion,o as number,c as oneOf,g as propsFromSchema,M as registerAccordion,P as registerButton,L as registerCheckbox,z as registerDatePicker,V as registerDropdown,U as registerField,G as registerFileUpload,q as registerInput,X as registerModal,i as registerMotionCapability,ie as registerPanels,se as registerRadio,ne as registerResizableCapability,le as registerScrollArea,T as registerSelect,pe as registerSidebar,he as registerSlider,A as registerSortableCapability,O as registerSortableDirective,_e as registerSwitch,Ie as registerTable,ye as registerTabs,te as registerToast,_ as registerTransitionDirective,b as resolveStyle,D as sortable,s as string,Ne as tableCaptionSchema,Ae as tableCellSchema,De as tableColumnFilterSchema,Ee as tableColumnSchema,be as tableEmptySchema,Re as tableRowHeaderSchema,Be as tableRowSchema,Se as tableSchema,ze as tableSectionSchema,r as ui,N as unregisterButton};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|