@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.
Files changed (96) hide show
  1. package/package.json +2 -2
  2. package/packages/client/src/components/field/styles.css +71 -0
  3. package/packages/client/src/components/file-upload/styles.css +68 -0
  4. package/packages/client/src/components/select/styles.css +4 -0
  5. package/packages/client/src/components/tabs/styles.css +73 -0
  6. package/packages/client/src/components/toast/styles.css +65 -0
  7. package/packages/client/src/styles/components.css +15 -4
  8. package/packages/client/src/styles/generated/theme-fonts.css +1 -1
  9. package/packages/client/src/styles/generated/theme-palette.css +77 -1462
  10. package/packages/client/src/styles/generated/theme-runtime.css +1 -1393
  11. package/packages/client/src/styles/generated-sources.css +1 -1
  12. package/packages/client/src/styles/recipes/action.css +85 -0
  13. package/packages/client/src/styles/recipes/disabled.css +16 -0
  14. package/packages/client/src/styles/recipes/intent.css +101 -0
  15. package/packages/client/src/styles/recipes/option.css +123 -0
  16. package/packages/client/src/styles/recipes/selection.css +78 -0
  17. package/packages/client/src/styles/theme.css +0 -729
  18. package/packages/client/types/styles/tailwind-candidates.d.ts +1 -0
  19. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css +469 -3263
  20. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css +1 -1
  21. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/build-metadata.json +258 -258
  22. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js +1 -1
  23. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js +1 -1
  24. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{alpine-machine-D0Kqjm-1.js → alpine-machine-BS13dbK4.js} +2 -2
  25. 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
  26. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-motion-Cog7tKk0.js → capability-motion-wMoceguq.js} +2 -2
  27. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-motion-Cog7tKk0.js.map → capability-motion-wMoceguq.js.map} +1 -1
  28. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-sortable-k107A8WE.js → capability-sortable-BurX5yRd.js} +2 -2
  29. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-BurX5yRd.js.map +1 -0
  30. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{core-vW9Cglw8.js → core-BuKz1uWk.js} +2 -2
  31. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{core-vW9Cglw8.js.map → core-BuKz1uWk.js.map} +1 -1
  32. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-JnbQA47P.js → entry.generated-9sxiaVVI.js} +2 -2
  33. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-JnbQA47P.js.map → entry.generated-9sxiaVVI.js.map} +1 -1
  34. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BJ0fQYT1.js +2 -0
  35. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BJ0fQYT1.js.map +1 -0
  36. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DVPnOfPb.js → entry.generated-BehM6Hle.js} +2 -2
  37. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DVPnOfPb.js.map → entry.generated-BehM6Hle.js.map} +1 -1
  38. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CGgRCeB5.js → entry.generated-BuXeU4zt.js} +2 -2
  39. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CGgRCeB5.js.map → entry.generated-BuXeU4zt.js.map} +1 -1
  40. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Bhvs_TUM.js → entry.generated-C-MH09sf.js} +2 -2
  41. 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
  42. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DFITIl56.js → entry.generated-C5Bueyfb.js} +2 -2
  43. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DFITIl56.js.map → entry.generated-C5Bueyfb.js.map} +1 -1
  44. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Bbm6qhVl.js → entry.generated-CCka3fIO.js} +2 -2
  45. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Bbm6qhVl.js.map → entry.generated-CCka3fIO.js.map} +1 -1
  46. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DMre0DbH.js → entry.generated-CSxEK8G9.js} +2 -2
  47. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DMre0DbH.js.map → entry.generated-CSxEK8G9.js.map} +1 -1
  48. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DiG5fS1F.js → entry.generated-CoJxfxlc.js} +2 -2
  49. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DiG5fS1F.js.map → entry.generated-CoJxfxlc.js.map} +1 -1
  50. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-dTc38DPe.js → entry.generated-D6cdmqiV.js} +2 -2
  51. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-dTc38DPe.js.map → entry.generated-D6cdmqiV.js.map} +1 -1
  52. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Cvgc61x9.js → entry.generated-DBSwLHmm.js} +2 -2
  53. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Cvgc61x9.js.map → entry.generated-DBSwLHmm.js.map} +1 -1
  54. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DnSxEcns.js → entry.generated-DEiL4FhC.js} +2 -2
  55. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DnSxEcns.js.map → entry.generated-DEiL4FhC.js.map} +1 -1
  56. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BgnZZd0A.js → entry.generated-DRqap77P.js} +2 -2
  57. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-BgnZZd0A.js.map → entry.generated-DRqap77P.js.map} +1 -1
  58. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DT70Lo44.js → entry.generated-Dzw2Rg5F.js} +2 -2
  59. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DT70Lo44.js.map → entry.generated-Dzw2Rg5F.js.map} +1 -1
  60. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-byAFfb_v.js → entry.generated-EtCfrZfr.js} +2 -2
  61. 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
  62. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CgO0b8V6.js → entry.generated-cMueWbY7.js} +2 -2
  63. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CgO0b8V6.js.map → entry.generated-cMueWbY7.js.map} +1 -1
  64. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-eVXGqjCM.js +2 -0
  65. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DMK37KS0.js.map → entry.generated-eVXGqjCM.js.map} +1 -1
  66. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{semantic-observer-DS2ew4dT.js → semantic-observer-BUswpsNx.js} +2 -2
  67. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{semantic-observer-DS2ew4dT.js.map → semantic-observer-BUswpsNx.js.map} +1 -1
  68. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{stream-uyKKe0QF.js → stream-pMBGbBZH.js} +2 -2
  69. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{stream-uyKKe0QF.js.map → stream-pMBGbBZH.js.map} +1 -1
  70. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion.js +1 -1
  71. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox.js +1 -1
  72. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker.js +1 -1
  73. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown.js +1 -1
  74. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field.js +1 -1
  75. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload.js +1 -1
  76. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js +1 -1
  77. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input.js +1 -1
  78. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal.js +1 -1
  79. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels.js +1 -1
  80. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio.js +1 -1
  81. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area.js +1 -1
  82. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select.js +1 -1
  83. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar.js +1 -1
  84. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider.js +1 -1
  85. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch.js +1 -1
  86. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs.js +1 -1
  87. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast.js +1 -1
  88. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core.js +1 -1
  89. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +1 -1
  90. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/logical-entry-manifest.json +109 -109
  91. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +8 -8
  92. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +8 -8
  93. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-k107A8WE.js.map +0 -1
  94. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DMK37KS0.js +0 -2
  95. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DOV8BDMY.js +0 -2
  96. 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-BgnZZd0A.js";export{e as UiAccordion,t as default,t as registerAccordion};
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-DnSxEcns.js";export{e as UiCheckbox,t as UiCheckboxGroup,n as default,n as registerCheckbox};
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};
@@ -1 +1 @@
1
- import{n as e,t}from"../chunks/entry.generated-CGgRCeB5.js";export{e as UiDatePicker,t as default,t as registerDatePicker};
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-Bhvs_TUM.js";export{e as UiDropdown,t as default,t as registerDropdown};
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-DVPnOfPb.js";export{e as UiField,t as default,t as registerField};
1
+ import{n as e,t}from"../chunks/entry.generated-BehM6Hle.js";export{e as UiField,t as default,t as registerField};
@@ -1 +1 @@
1
- import{n as e,t}from"../chunks/entry.generated-JnbQA47P.js";export{e as UiFileUpload,t as default,t as registerFileUpload};
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-DT70Lo44.js";import{t as i}from"../chunks/capability-motion-Cog7tKk0.js";import{n as ee,t as a}from"../chunks/entry.generated-DOV8BDMY.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-k107A8WE.js";import{n as ne,t as u}from"../chunks/entry.generated-BgnZZd0A.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-DnSxEcns.js";import{n as g,t as _}from"../chunks/entry.generated-CGgRCeB5.js";import{n as v,t as y}from"../chunks/entry.generated-Bhvs_TUM.js";import{n as re,t as b}from"../chunks/entry.generated-DVPnOfPb.js";import{n as ie,t as x}from"../chunks/entry.generated-JnbQA47P.js";import{n as S,t as C}from"../chunks/entry.generated-CgO0b8V6.js";import{n as w,r as T,t as E}from"../chunks/entry.generated-Bbm6qhVl.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-DMK37KS0.js";import{n as j,r as M,t as N}from"../chunks/entry.generated-Cvgc61x9.js";import{n as P,t as F}from"../chunks/entry.generated-DiG5fS1F.js";import{i as I,n as L,r as R,t as z}from"../chunks/entry.generated-dTc38DPe.js";import{n as B,t as V}from"../chunks/entry.generated-byAFfb_v.js";import{n as H,t as U}from"../chunks/entry.generated-DMre0DbH.js";import{n as W,t as G}from"../chunks/entry.generated-DFITIl56.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};
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-CgO0b8V6.js";export{e as UiInput,t as default,t as registerInput};
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-Bbm6qhVl.js";export{e as UiModal,t as UiModalTrigger,n as default,n as registerModal};
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-DMK37KS0.js";export{e as UiPanelToggle,t as UiPanels,n as default,n as registerPanels};
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-Cvgc61x9.js";export{e as UiRadio,t as UiRadioGroup,n as default,n as registerRadio};
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};
@@ -1 +1 @@
1
- import{n as e,t}from"../chunks/entry.generated-DiG5fS1F.js";export{e as UiScrollArea,t as default,t as registerScrollArea};
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-DOV8BDMY.js";export{e as UiSelect,t as default,t as registerSelect};
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-dTc38DPe.js";export{t as UiSidebar,n as UiSidebarEdge,e as UiSidebarToggle,r as default,r as registerSidebar};
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-byAFfb_v.js";export{e as UiSlider,t as default,t as registerSlider};
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-DMre0DbH.js";export{e as UiSwitch,t as default,t as registerSwitch};
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-DFITIl56.js";export{e as UiTabs,t as default,t as registerTabs};
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-DT70Lo44.js";export{e as UiToast,t as UiToastOutlet,n as default,n as registerToast};
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-D0Kqjm-1.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-vW9Cglw8.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
+ 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-DT70Lo44.js";import{i as r}from"./chunks/ui-H3t7UHMs.js";import{t as i}from"./chunks/capability-motion-Cog7tKk0.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-D0Kqjm-1.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-vW9Cglw8.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-DOV8BDMY.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-k107A8WE.js";import{n as j,t as M}from"./chunks/entry.generated-BgnZZd0A.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-DnSxEcns.js";import{n as R,t as z}from"./chunks/entry.generated-CGgRCeB5.js";import{n as B,t as V}from"./chunks/entry.generated-Bhvs_TUM.js";import{n as H,t as U}from"./chunks/entry.generated-DVPnOfPb.js";import{n as W,t as G}from"./chunks/entry.generated-JnbQA47P.js";import{n as K,t as q}from"./chunks/entry.generated-CgO0b8V6.js";import{n as J,r as Y,t as X}from"./chunks/entry.generated-Bbm6qhVl.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-DMK37KS0.js";import{n as ae,r as oe,t as se}from"./chunks/entry.generated-Cvgc61x9.js";import{n as ce,t as le}from"./chunks/entry.generated-DiG5fS1F.js";import{i as ue,n as de,r as fe,t as pe}from"./chunks/entry.generated-dTc38DPe.js";import{n as me,t as he}from"./chunks/entry.generated-byAFfb_v.js";import{n as ge,t as _e}from"./chunks/entry.generated-DMre0DbH.js";import{n as ve,t as ye}from"./chunks/entry.generated-DFITIl56.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};
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