@happyvertical/smrt-svelte 0.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +317 -0
- package/CLAUDE.md +1 -0
- package/LICENSE +7 -0
- package/README.md +185 -0
- package/dist/Provider.svelte +204 -0
- package/dist/Provider.svelte.d.ts +73 -0
- package/dist/Provider.svelte.d.ts.map +1 -0
- package/dist/__tests__/app-state.test.js +156 -0
- package/dist/__tests__/warm-clients.test.js +186 -0
- package/dist/browser-ai/adapters/llm/factory.d.ts +38 -0
- package/dist/browser-ai/adapters/llm/factory.d.ts.map +1 -0
- package/dist/browser-ai/adapters/llm/factory.js +91 -0
- package/dist/browser-ai/adapters/llm/index.d.ts +7 -0
- package/dist/browser-ai/adapters/llm/index.d.ts.map +1 -0
- package/dist/browser-ai/adapters/llm/index.js +6 -0
- package/dist/browser-ai/adapters/llm/types.d.ts +182 -0
- package/dist/browser-ai/adapters/llm/types.d.ts.map +1 -0
- package/dist/browser-ai/adapters/llm/types.js +43 -0
- package/dist/browser-ai/adapters/llm/webllm.d.ts +33 -0
- package/dist/browser-ai/adapters/llm/webllm.d.ts.map +1 -0
- package/dist/browser-ai/adapters/llm/webllm.js +225 -0
- package/dist/browser-ai/adapters/stt/browser-speech.d.ts +31 -0
- package/dist/browser-ai/adapters/stt/browser-speech.d.ts.map +1 -0
- package/dist/browser-ai/adapters/stt/browser-speech.js +217 -0
- package/dist/browser-ai/adapters/stt/factory.d.ts +49 -0
- package/dist/browser-ai/adapters/stt/factory.d.ts.map +1 -0
- package/dist/browser-ai/adapters/stt/factory.js +110 -0
- package/dist/browser-ai/adapters/stt/index.d.ts +9 -0
- package/dist/browser-ai/adapters/stt/index.d.ts.map +1 -0
- package/dist/browser-ai/adapters/stt/index.js +8 -0
- package/dist/browser-ai/adapters/stt/types.d.ts +154 -0
- package/dist/browser-ai/adapters/stt/types.d.ts.map +1 -0
- package/dist/browser-ai/adapters/stt/types.js +4 -0
- package/dist/browser-ai/adapters/stt/whisper-cpp.d.ts +46 -0
- package/dist/browser-ai/adapters/stt/whisper-cpp.d.ts.map +1 -0
- package/dist/browser-ai/adapters/stt/whisper-cpp.js +348 -0
- package/dist/browser-ai/adapters/stt/whisper-wasm.d.ts +51 -0
- package/dist/browser-ai/adapters/stt/whisper-wasm.d.ts.map +1 -0
- package/dist/browser-ai/adapters/stt/whisper-wasm.js +380 -0
- package/dist/browser-ai/adapters/tts/browser-synthesis.d.ts +42 -0
- package/dist/browser-ai/adapters/tts/browser-synthesis.d.ts.map +1 -0
- package/dist/browser-ai/adapters/tts/browser-synthesis.js +235 -0
- package/dist/browser-ai/adapters/tts/factory.d.ts +53 -0
- package/dist/browser-ai/adapters/tts/factory.d.ts.map +1 -0
- package/dist/browser-ai/adapters/tts/factory.js +92 -0
- package/dist/browser-ai/adapters/tts/index.d.ts +7 -0
- package/dist/browser-ai/adapters/tts/index.d.ts.map +1 -0
- package/dist/browser-ai/adapters/tts/index.js +6 -0
- package/dist/browser-ai/adapters/tts/types.d.ts +140 -0
- package/dist/browser-ai/adapters/tts/types.d.ts.map +1 -0
- package/dist/browser-ai/adapters/tts/types.js +4 -0
- package/dist/browser-ai/capabilities/detector.d.ts +38 -0
- package/dist/browser-ai/capabilities/detector.d.ts.map +1 -0
- package/dist/browser-ai/capabilities/detector.js +211 -0
- package/dist/browser-ai/core/errors.d.ts +62 -0
- package/dist/browser-ai/core/errors.d.ts.map +1 -0
- package/dist/browser-ai/core/errors.js +92 -0
- package/dist/browser-ai/core/index.d.ts +6 -0
- package/dist/browser-ai/core/index.d.ts.map +1 -0
- package/dist/browser-ai/core/index.js +5 -0
- package/dist/browser-ai/core/types.d.ts +115 -0
- package/dist/browser-ai/core/types.d.ts.map +1 -0
- package/dist/browser-ai/core/types.js +34 -0
- package/dist/browser-ai/index.d.ts +12 -0
- package/dist/browser-ai/index.d.ts.map +1 -0
- package/dist/browser-ai/index.js +16 -0
- package/dist/browser-ai/svelte/components/AILoadingOverlay.svelte +77 -0
- package/dist/browser-ai/svelte/components/AILoadingOverlay.svelte.d.ts +16 -0
- package/dist/browser-ai/svelte/components/AILoadingOverlay.svelte.d.ts.map +1 -0
- package/dist/browser-ai/svelte/components/CapabilityGate.svelte +57 -0
- package/dist/browser-ai/svelte/components/CapabilityGate.svelte.d.ts +15 -0
- package/dist/browser-ai/svelte/components/CapabilityGate.svelte.d.ts.map +1 -0
- package/dist/browser-ai/svelte/components/DownloadProgress.svelte +141 -0
- package/dist/browser-ai/svelte/components/DownloadProgress.svelte.d.ts +15 -0
- package/dist/browser-ai/svelte/components/DownloadProgress.svelte.d.ts.map +1 -0
- package/dist/browser-ai/svelte/components/STTTest.svelte +379 -0
- package/dist/browser-ai/svelte/components/STTTest.svelte.d.ts +9 -0
- package/dist/browser-ai/svelte/components/STTTest.svelte.d.ts.map +1 -0
- package/dist/browser-ai/svelte/components/VoiceInput.svelte +200 -0
- package/dist/browser-ai/svelte/components/VoiceInput.svelte.d.ts +16 -0
- package/dist/browser-ai/svelte/components/VoiceInput.svelte.d.ts.map +1 -0
- package/dist/browser-ai/svelte/index.d.ts +15 -0
- package/dist/browser-ai/svelte/index.d.ts.map +1 -0
- package/dist/browser-ai/svelte/index.js +28 -0
- package/dist/browser-ai/ui.d.ts +16 -0
- package/dist/browser-ai/ui.d.ts.map +1 -0
- package/dist/browser-ai/ui.js +67 -0
- package/dist/components/admin/AgentAdminPanel.svelte +111 -0
- package/dist/components/admin/AgentAdminPanel.svelte.d.ts +25 -0
- package/dist/components/admin/AgentAdminPanel.svelte.d.ts.map +1 -0
- package/dist/components/admin/AgentAdminTabs.svelte +280 -0
- package/dist/components/admin/AgentAdminTabs.svelte.d.ts +23 -0
- package/dist/components/admin/AgentAdminTabs.svelte.d.ts.map +1 -0
- package/dist/components/admin/AgentSettingsShell.svelte +257 -0
- package/dist/components/admin/AgentSettingsShell.svelte.d.ts +33 -0
- package/dist/components/admin/AgentSettingsShell.svelte.d.ts.map +1 -0
- package/dist/components/admin/index.d.ts +5 -0
- package/dist/components/admin/index.d.ts.map +1 -0
- package/dist/components/admin/index.js +6 -0
- package/dist/components/forms/AddressInput.svelte +500 -0
- package/dist/components/forms/AddressInput.svelte.d.ts +36 -0
- package/dist/components/forms/AddressInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/CheckboxInput.svelte +208 -0
- package/dist/components/forms/CheckboxInput.svelte.d.ts +20 -0
- package/dist/components/forms/CheckboxInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/DateRangeInput.svelte +628 -0
- package/dist/components/forms/DateRangeInput.svelte.d.ts +33 -0
- package/dist/components/forms/DateRangeInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/DateTimeInput.svelte +521 -0
- package/dist/components/forms/DateTimeInput.svelte.d.ts +24 -0
- package/dist/components/forms/DateTimeInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/FileUpload.svelte +358 -0
- package/dist/components/forms/FileUpload.svelte.d.ts +22 -0
- package/dist/components/forms/FileUpload.svelte.d.ts.map +1 -0
- package/dist/components/forms/Form.svelte +771 -0
- package/dist/components/forms/Form.svelte.d.ts +26 -0
- package/dist/components/forms/Form.svelte.d.ts.map +1 -0
- package/dist/components/forms/FormGroup.svelte +86 -0
- package/dist/components/forms/FormGroup.svelte.d.ts +13 -0
- package/dist/components/forms/FormGroup.svelte.d.ts.map +1 -0
- package/dist/components/forms/FormMicButton.svelte +179 -0
- package/dist/components/forms/FormMicButton.svelte.d.ts +10 -0
- package/dist/components/forms/FormMicButton.svelte.d.ts.map +1 -0
- package/dist/components/forms/Input.svelte +83 -0
- package/dist/components/forms/Input.svelte.d.ts +9 -0
- package/dist/components/forms/Input.svelte.d.ts.map +1 -0
- package/dist/components/forms/MeasurementInput.svelte +505 -0
- package/dist/components/forms/MeasurementInput.svelte.d.ts +35 -0
- package/dist/components/forms/MeasurementInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/MoneyInput.svelte +412 -0
- package/dist/components/forms/MoneyInput.svelte.d.ts +30 -0
- package/dist/components/forms/MoneyInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/NumberInput.svelte +310 -0
- package/dist/components/forms/NumberInput.svelte.d.ts +28 -0
- package/dist/components/forms/NumberInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/PhoneInput.svelte +530 -0
- package/dist/components/forms/PhoneInput.svelte.d.ts +22 -0
- package/dist/components/forms/PhoneInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/SearchInput.svelte +358 -0
- package/dist/components/forms/SearchInput.svelte.d.ts +33 -0
- package/dist/components/forms/SearchInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/Select.svelte +83 -0
- package/dist/components/forms/Select.svelte.d.ts +11 -0
- package/dist/components/forms/Select.svelte.d.ts.map +1 -0
- package/dist/components/forms/SelectInput.svelte +254 -0
- package/dist/components/forms/SelectInput.svelte.d.ts +25 -0
- package/dist/components/forms/SelectInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/TextInput.svelte +415 -0
- package/dist/components/forms/TextInput.svelte.d.ts +26 -0
- package/dist/components/forms/TextInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/Textarea.svelte +85 -0
- package/dist/components/forms/Textarea.svelte.d.ts +10 -0
- package/dist/components/forms/Textarea.svelte.d.ts.map +1 -0
- package/dist/components/forms/TextareaInput.svelte +386 -0
- package/dist/components/forms/TextareaInput.svelte.d.ts +26 -0
- package/dist/components/forms/TextareaInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/Toggle.svelte +217 -0
- package/dist/components/forms/Toggle.svelte.d.ts +37 -0
- package/dist/components/forms/Toggle.svelte.d.ts.map +1 -0
- package/dist/components/forms/__tests__/AddressInput.behavior.test.js +122 -0
- package/dist/components/forms/__tests__/CheckboxInput.test.js +92 -0
- package/dist/components/forms/__tests__/DateRangeInput.behavior.test.js +135 -0
- package/dist/components/forms/__tests__/DateTimeInput.behavior.test.js +103 -0
- package/dist/components/forms/__tests__/FileUpload.test.js +90 -0
- package/dist/components/forms/__tests__/Form.behavior.test.js +137 -0
- package/dist/components/forms/__tests__/Form.test.js +58 -0
- package/dist/components/forms/__tests__/FormGroup.test.js +48 -0
- package/dist/components/forms/__tests__/FormMicButton.test.js +86 -0
- package/dist/components/forms/__tests__/Input.test.js +49 -0
- package/dist/components/forms/__tests__/MeasurementInput.behavior.test.js +129 -0
- package/dist/components/forms/__tests__/MoneyInput.behavior.test.js +124 -0
- package/dist/components/forms/__tests__/NumberInput.behavior.test.js +141 -0
- package/dist/components/forms/__tests__/PhoneInput.behavior.test.js +96 -0
- package/dist/components/forms/__tests__/SearchInput.test.js +79 -0
- package/dist/components/forms/__tests__/Select.test.js +37 -0
- package/dist/components/forms/__tests__/SelectInput.behavior.test.js +132 -0
- package/dist/components/forms/__tests__/TextInput.behavior.test.js +131 -0
- package/dist/components/forms/__tests__/Textarea.test.js +39 -0
- package/dist/components/forms/__tests__/TextareaInput.behavior.test.js +96 -0
- package/dist/components/forms/__tests__/Toggle.test.js +87 -0
- package/dist/components/forms/__tests__/composite-inputs-a11y.test.js +69 -0
- package/dist/components/forms/__tests__/form-group-input.fixture.svelte +16 -0
- package/dist/components/forms/__tests__/form-group-input.fixture.svelte.d.ts +9 -0
- package/dist/components/forms/__tests__/form-group-input.fixture.svelte.d.ts.map +1 -0
- package/dist/components/forms/__tests__/form-with-fields.fixture.svelte +33 -0
- package/dist/components/forms/__tests__/form-with-fields.fixture.svelte.d.ts +12 -0
- package/dist/components/forms/__tests__/form-with-fields.fixture.svelte.d.ts.map +1 -0
- package/dist/components/forms/__tests__/rich-inputs-a11y.test.js +87 -0
- package/dist/components/forms/index.d.ts +25 -0
- package/dist/components/forms/index.d.ts.map +1 -0
- package/dist/components/forms/index.js +25 -0
- package/dist/components/forms/types.d.ts +33 -0
- package/dist/components/forms/types.d.ts.map +1 -0
- package/dist/components/forms/types.js +4 -0
- package/dist/components/module/ModulePanel.svelte +134 -0
- package/dist/components/module/ModulePanel.svelte.d.ts +22 -0
- package/dist/components/module/ModulePanel.svelte.d.ts.map +1 -0
- package/dist/components/module/index.d.ts +5 -0
- package/dist/components/module/index.d.ts.map +1 -0
- package/dist/components/module/index.js +4 -0
- package/dist/components/workspace/Breadcrumbs.svelte +141 -0
- package/dist/components/workspace/Breadcrumbs.svelte.d.ts +21 -0
- package/dist/components/workspace/Breadcrumbs.svelte.d.ts.map +1 -0
- package/dist/components/workspace/NavTree.svelte +354 -0
- package/dist/components/workspace/NavTree.svelte.d.ts +45 -0
- package/dist/components/workspace/NavTree.svelte.d.ts.map +1 -0
- package/dist/components/workspace/README.md +34 -0
- package/dist/components/workspace/RoleShell.svelte +309 -0
- package/dist/components/workspace/RoleShell.svelte.d.ts +91 -0
- package/dist/components/workspace/RoleShell.svelte.d.ts.map +1 -0
- package/dist/components/workspace/WorkspaceShell.svelte +951 -0
- package/dist/components/workspace/WorkspaceShell.svelte.d.ts +112 -0
- package/dist/components/workspace/WorkspaceShell.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/RoleShell.test.js +772 -0
- package/dist/components/workspace/__tests__/WorkspaceShell.test.js +630 -0
- package/dist/components/workspace/__tests__/breadcrumbs-helpers.test.js +141 -0
- package/dist/components/workspace/__tests__/context-forwarding-harness.svelte +45 -0
- package/dist/components/workspace/__tests__/context-forwarding-harness.svelte.d.ts +21 -0
- package/dist/components/workspace/__tests__/context-forwarding-harness.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/define-tools-dock.test.js +1010 -0
- package/dist/components/workspace/__tests__/harness.svelte +25 -0
- package/dist/components/workspace/__tests__/harness.svelte.d.ts +14 -0
- package/dist/components/workspace/__tests__/harness.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/index.test.js +37 -0
- package/dist/components/workspace/__tests__/manifest-nav-helpers.test.js +24 -0
- package/dist/components/workspace/__tests__/manifest-nav.test.js +599 -0
- package/dist/components/workspace/__tests__/nav-helpers.test.js +95 -0
- package/dist/components/workspace/__tests__/render-harness.svelte +66 -0
- package/dist/components/workspace/__tests__/render-harness.svelte.d.ts +32 -0
- package/dist/components/workspace/__tests__/render-harness.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/render-tools-dock.test.js +243 -0
- package/dist/components/workspace/__tests__/role-shell-bind-harness.svelte +58 -0
- package/dist/components/workspace/__tests__/role-shell-bind-harness.svelte.d.ts +16 -0
- package/dist/components/workspace/__tests__/role-shell-bind-harness.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/role-shell-switch-harness.svelte +41 -0
- package/dist/components/workspace/__tests__/role-shell-switch-harness.svelte.d.ts +13 -0
- package/dist/components/workspace/__tests__/role-shell-switch-harness.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/test-icon.svelte +17 -0
- package/dist/components/workspace/__tests__/test-icon.svelte.d.ts +19 -0
- package/dist/components/workspace/__tests__/test-icon.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture/TypedTool.svelte +38 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture/TypedTool.svelte.d.ts +22 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture/TypedTool.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture/register-typed-tool.d.ts +65 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture/register-typed-tool.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture/register-typed-tool.js +115 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture/typed-tool-types.d.ts +15 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture/typed-tool-types.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture/typed-tool-types.js +7 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture.test.js +115 -0
- package/dist/components/workspace/__tests__/use-harness-orphan.svelte +9 -0
- package/dist/components/workspace/__tests__/use-harness-orphan.svelte.d.ts +19 -0
- package/dist/components/workspace/__tests__/use-harness-orphan.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/use-harness.svelte +23 -0
- package/dist/components/workspace/__tests__/use-harness.svelte.d.ts +8 -0
- package/dist/components/workspace/__tests__/use-harness.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/use-tools-dock.test.js +33 -0
- package/dist/components/workspace/__tests__/workspace-shell-bind-harness.svelte +43 -0
- package/dist/components/workspace/__tests__/workspace-shell-bind-harness.svelte.d.ts +11 -0
- package/dist/components/workspace/__tests__/workspace-shell-bind-harness.svelte.d.ts.map +1 -0
- package/dist/components/workspace/breadcrumbs-helpers.d.ts +44 -0
- package/dist/components/workspace/breadcrumbs-helpers.d.ts.map +1 -0
- package/dist/components/workspace/breadcrumbs-helpers.js +88 -0
- package/dist/components/workspace/index.d.ts +16 -0
- package/dist/components/workspace/index.d.ts.map +1 -0
- package/dist/components/workspace/index.js +14 -0
- package/dist/components/workspace/manifest-nav.d.ts +200 -0
- package/dist/components/workspace/manifest-nav.d.ts.map +1 -0
- package/dist/components/workspace/manifest-nav.js +408 -0
- package/dist/components/workspace/nav-helpers.d.ts +36 -0
- package/dist/components/workspace/nav-helpers.d.ts.map +1 -0
- package/dist/components/workspace/nav-helpers.js +60 -0
- package/dist/components/workspace/server/__tests__/compose-availability.test.js +383 -0
- package/dist/components/workspace/server/__tests__/typed-context-fixture.d.ts +78 -0
- package/dist/components/workspace/server/__tests__/typed-context-fixture.d.ts.map +1 -0
- package/dist/components/workspace/server/__tests__/typed-context-fixture.js +104 -0
- package/dist/components/workspace/server/compose-availability.d.ts +73 -0
- package/dist/components/workspace/server/compose-availability.d.ts.map +1 -0
- package/dist/components/workspace/server/compose-availability.js +114 -0
- package/dist/components/workspace/server/index.d.ts +13 -0
- package/dist/components/workspace/server/index.d.ts.map +1 -0
- package/dist/components/workspace/server/index.js +11 -0
- package/dist/components/workspace/server/types.d.ts +108 -0
- package/dist/components/workspace/server/types.d.ts.map +1 -0
- package/dist/components/workspace/server/types.js +11 -0
- package/dist/components/workspace/tools-dock/ToolsDock.svelte +565 -0
- package/dist/components/workspace/tools-dock/ToolsDock.svelte.d.ts +14 -0
- package/dist/components/workspace/tools-dock/ToolsDock.svelte.d.ts.map +1 -0
- package/dist/components/workspace/tools-dock/define-tools-dock.svelte.d.ts +143 -0
- package/dist/components/workspace/tools-dock/define-tools-dock.svelte.d.ts.map +1 -0
- package/dist/components/workspace/tools-dock/define-tools-dock.svelte.js +487 -0
- package/dist/components/workspace/tools-dock/use-tools-dock.d.ts +41 -0
- package/dist/components/workspace/tools-dock/use-tools-dock.d.ts.map +1 -0
- package/dist/components/workspace/tools-dock/use-tools-dock.js +50 -0
- package/dist/components/workspace/types.d.ts +372 -0
- package/dist/components/workspace/types.d.ts.map +1 -0
- package/dist/components/workspace/types.js +6 -0
- package/dist/hooks/index.d.ts +11 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +10 -0
- package/dist/hooks/useAppState.svelte.d.ts +46 -0
- package/dist/hooks/useAppState.svelte.d.ts.map +1 -0
- package/dist/hooks/useAppState.svelte.js +59 -0
- package/dist/hooks/useAuth.svelte.d.ts +41 -0
- package/dist/hooks/useAuth.svelte.d.ts.map +1 -0
- package/dist/hooks/useAuth.svelte.js +43 -0
- package/dist/hooks/useLLM.svelte.d.ts +69 -0
- package/dist/hooks/useLLM.svelte.d.ts.map +1 -0
- package/dist/hooks/useLLM.svelte.js +85 -0
- package/dist/hooks/useSTT.svelte.d.ts +68 -0
- package/dist/hooks/useSTT.svelte.d.ts.map +1 -0
- package/dist/hooks/useSTT.svelte.js +97 -0
- package/dist/hooks/useSocket.svelte.d.ts +45 -0
- package/dist/hooks/useSocket.svelte.d.ts.map +1 -0
- package/dist/hooks/useSocket.svelte.js +54 -0
- package/dist/hooks/useTTS.svelte.d.ts +65 -0
- package/dist/hooks/useTTS.svelte.d.ts.map +1 -0
- package/dist/hooks/useTTS.svelte.js +93 -0
- package/dist/hooks/useTheme.d.ts +13 -0
- package/dist/hooks/useTheme.d.ts.map +1 -0
- package/dist/hooks/useTheme.js +16 -0
- package/dist/i18n/__tests__/server.spec.js +50 -0
- package/dist/i18n/server.d.ts +47 -0
- package/dist/i18n/server.d.ts.map +1 -0
- package/dist/i18n/server.js +58 -0
- package/dist/i18n/strings.forms.d.ts +33 -0
- package/dist/i18n/strings.forms.d.ts.map +1 -0
- package/dist/i18n/strings.forms.js +54 -0
- package/dist/i18n/strings.workspace.d.ts +34 -0
- package/dist/i18n/strings.workspace.d.ts.map +1 -0
- package/dist/i18n/strings.workspace.js +40 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/state/__tests__/warm-clients.test.js +40 -0
- package/dist/state/app-state.d.ts +308 -0
- package/dist/state/app-state.d.ts.map +1 -0
- package/dist/state/app-state.js +64 -0
- package/dist/state/app-state.svelte.d.ts +196 -0
- package/dist/state/app-state.svelte.d.ts.map +1 -0
- package/dist/state/app-state.svelte.js +774 -0
- package/dist/state/context.d.ts +23 -0
- package/dist/state/context.d.ts.map +1 -0
- package/dist/state/context.js +32 -0
- package/dist/state/form-context.d.ts +59 -0
- package/dist/state/form-context.d.ts.map +1 -0
- package/dist/state/form-context.js +31 -0
- package/dist/state/form-group-context.d.ts +13 -0
- package/dist/state/form-group-context.d.ts.map +1 -0
- package/dist/state/form-group-context.js +28 -0
- package/dist/state/index.d.ts +9 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +8 -0
- package/dist/state/warm-clients.d.ts +136 -0
- package/dist/state/warm-clients.d.ts.map +1 -0
- package/dist/state/warm-clients.js +231 -0
- package/package.json +137 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure helpers for breadcrumb derivation.
|
|
3
|
+
*
|
|
4
|
+
* Extracted so the path-walking logic can be unit-tested without rendering
|
|
5
|
+
* a Svelte component.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Walk a nav tree depth-first and return the label of the item whose
|
|
9
|
+
* `href` matches exactly, or `null` if not found.
|
|
10
|
+
*/
|
|
11
|
+
export function findLabelInNav(items, href) {
|
|
12
|
+
for (const item of items) {
|
|
13
|
+
if (item.href === href)
|
|
14
|
+
return item.label;
|
|
15
|
+
if (item.children?.length) {
|
|
16
|
+
const label = findLabelInNav(item.children, href);
|
|
17
|
+
if (label)
|
|
18
|
+
return label;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Default label fallback for unknown segments: capitalize the first letter
|
|
25
|
+
* and turn dashes/underscores into spaces.
|
|
26
|
+
*/
|
|
27
|
+
export function capitalizeSegment(segment) {
|
|
28
|
+
if (!segment)
|
|
29
|
+
return segment;
|
|
30
|
+
const cleaned = segment.replace(/[-_]/g, ' ');
|
|
31
|
+
return cleaned.charAt(0).toUpperCase() + cleaned.slice(1);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Derive a breadcrumb trail from a pathname + nav tree.
|
|
35
|
+
*
|
|
36
|
+
* Strategy:
|
|
37
|
+
* 1. Optionally prepend `rootCrumb`.
|
|
38
|
+
* 2. Split the pathname into segments.
|
|
39
|
+
* 3. If `startAfter` is set, locate its trailing segment in the
|
|
40
|
+
* pathname and skip everything before/including it. The
|
|
41
|
+
* `startAfter` value may include a leading slash or none and
|
|
42
|
+
* may be a multi-segment path (e.g. `sites/foo`).
|
|
43
|
+
* 4. Walk the remaining segments, building cumulative paths; for
|
|
44
|
+
* each, try to find a matching nav label, otherwise capitalize.
|
|
45
|
+
*/
|
|
46
|
+
export function deriveCrumbsFromNav(pathname, nav, options = {}) {
|
|
47
|
+
const { rootCrumb, startAfter, capitalize = true } = options;
|
|
48
|
+
const result = [];
|
|
49
|
+
if (rootCrumb) {
|
|
50
|
+
result.push(rootCrumb);
|
|
51
|
+
}
|
|
52
|
+
const segments = (pathname || '').split('/').filter(Boolean);
|
|
53
|
+
// Resolve which segment index we start emitting crumbs after.
|
|
54
|
+
let startIndex = 0;
|
|
55
|
+
let basePath = '';
|
|
56
|
+
if (startAfter) {
|
|
57
|
+
const startSegments = startAfter.split('/').filter(Boolean);
|
|
58
|
+
if (startSegments.length > 0) {
|
|
59
|
+
// Match the full contiguous `startSegments` sequence in `segments`,
|
|
60
|
+
// not just the last token — otherwise an ambiguous pathname like
|
|
61
|
+
// `/sites/sites/content` with `startAfter: 'sites/sites'` would
|
|
62
|
+
// anchor on the first `sites` and build the wrong base path.
|
|
63
|
+
let matched = false;
|
|
64
|
+
outer: for (let i = 0; i <= segments.length - startSegments.length; i++) {
|
|
65
|
+
for (let j = 0; j < startSegments.length; j++) {
|
|
66
|
+
if (segments[i + j] !== startSegments[j])
|
|
67
|
+
continue outer;
|
|
68
|
+
}
|
|
69
|
+
startIndex = i + startSegments.length;
|
|
70
|
+
basePath = `/${segments.slice(0, startIndex).join('/')}`;
|
|
71
|
+
matched = true;
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
if (!matched) {
|
|
75
|
+
// startAfter not in path → nothing to walk.
|
|
76
|
+
return result;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
let currentPath = basePath;
|
|
81
|
+
for (const segment of segments.slice(startIndex)) {
|
|
82
|
+
currentPath += `/${segment}`;
|
|
83
|
+
const label = findLabelInNav(nav, currentPath) ??
|
|
84
|
+
(capitalize ? capitalizeSegment(segment) : segment);
|
|
85
|
+
result.push({ label, href: currentPath });
|
|
86
|
+
}
|
|
87
|
+
return result;
|
|
88
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @happyvertical/smrt-svelte/workspace
|
|
3
|
+
*
|
|
4
|
+
* Workspace shell primitives for admin UIs. See packages/smrt-svelte/CLAUDE.md
|
|
5
|
+
* for layering principles. Implementations land via #1227, #1228, #1229.
|
|
6
|
+
*/
|
|
7
|
+
export { default as Breadcrumbs } from './Breadcrumbs.svelte';
|
|
8
|
+
export { type NavSection, type NavTreeFromManifestOptions, navTreeFromManifest, pluralizeClassName, type SmrtManifestEntryLike, type SmrtManifestLike, } from './manifest-nav.js';
|
|
9
|
+
export { default as NavTree } from './NavTree.svelte';
|
|
10
|
+
export { default as RoleShell } from './RoleShell.svelte';
|
|
11
|
+
export { type DefineToolsDockOptions, defineToolsDock, TOOLS_DOCK_KEY, type ToolsDockInstance, } from './tools-dock/define-tools-dock.svelte.js';
|
|
12
|
+
export { default as ToolsDock } from './tools-dock/ToolsDock.svelte';
|
|
13
|
+
export { tryUseToolsDock, useToolsDock } from './tools-dock/use-tools-dock.js';
|
|
14
|
+
export type { AvailableTool, BreadcrumbItem, NavItem, RoleConfig, ToolDef, ToolsDockApi, ToolsDockContext, ToolsDockEvents, } from './types.js';
|
|
15
|
+
export { default as WorkspaceShell } from './WorkspaceShell.svelte';
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/workspace/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EACL,KAAK,UAAU,EACf,KAAK,0BAA0B,EAC/B,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EACL,KAAK,sBAAsB,EAC3B,eAAe,EACf,cAAc,EACd,KAAK,iBAAiB,GACvB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC/E,YAAY,EACV,aAAa,EACb,cAAc,EACd,OAAO,EACP,UAAU,EACV,OAAO,EACP,YAAY,EACZ,gBAAgB,EAChB,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @happyvertical/smrt-svelte/workspace
|
|
3
|
+
*
|
|
4
|
+
* Workspace shell primitives for admin UIs. See packages/smrt-svelte/CLAUDE.md
|
|
5
|
+
* for layering principles. Implementations land via #1227, #1228, #1229.
|
|
6
|
+
*/
|
|
7
|
+
export { default as Breadcrumbs } from './Breadcrumbs.svelte';
|
|
8
|
+
export { navTreeFromManifest, pluralizeClassName, } from './manifest-nav.js';
|
|
9
|
+
export { default as NavTree } from './NavTree.svelte';
|
|
10
|
+
export { default as RoleShell } from './RoleShell.svelte';
|
|
11
|
+
export { defineToolsDock, TOOLS_DOCK_KEY, } from './tools-dock/define-tools-dock.svelte.js';
|
|
12
|
+
export { default as ToolsDock } from './tools-dock/ToolsDock.svelte';
|
|
13
|
+
export { tryUseToolsDock, useToolsDock } from './tools-dock/use-tools-dock.js';
|
|
14
|
+
export { default as WorkspaceShell } from './WorkspaceShell.svelte';
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure helper that turns a SMRT manifest into the `NavItem[]` shape the
|
|
3
|
+
* existing `NavTree` / `RoleShell` primitives expect.
|
|
4
|
+
*
|
|
5
|
+
* This is the "manifest → admin UI" adapter called out as a friction gap in
|
|
6
|
+
* happyvertical/smrt#1235 / #1226 / #1248: every consumer hand-writes its nav
|
|
7
|
+
* config today, with dozens of `@smrt()` classes that boilerplate drifts.
|
|
8
|
+
* Opt in here to manifest-driven nav while keeping the primitives themselves
|
|
9
|
+
* SmrtObject-agnostic.
|
|
10
|
+
*
|
|
11
|
+
* Design constraints (see #1248 for the full brief):
|
|
12
|
+
* - Pure function. No SvelteKit imports, no SSR coupling, no module side
|
|
13
|
+
* effects. Data in → data out.
|
|
14
|
+
* - Cross-industry-safe. Never assumes apparel / furniture / automotive
|
|
15
|
+
* vocabulary; consumers supply their own `sectionHints`.
|
|
16
|
+
* - Deterministic output. Sections and items both sort alphabetically by
|
|
17
|
+
* title so manifest-order churn doesn't shuffle the rendered nav.
|
|
18
|
+
* - Decoupled from any concrete role/permission package. `permittedResources`
|
|
19
|
+
* is just a plain string array of qualified class names.
|
|
20
|
+
*
|
|
21
|
+
* The structural `SmrtManifestLike` / `SmrtManifestEntryLike` shapes here
|
|
22
|
+
* intentionally subset the real `SmartObjectManifest` from `@happyvertical/smrt-core`.
|
|
23
|
+
* Adding a peer dependency on core would create a circular reference (core
|
|
24
|
+
* pulls in svelte primitives downstream), so the helper accepts anything
|
|
25
|
+
* that matches the documented shape. Pass a `SmartObjectManifest` directly
|
|
26
|
+
* and TypeScript is happy.
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* Visibility flavours emitted by `@smrt({ visibility })`. Mirrors
|
|
30
|
+
* `SmrtVisibility` in `@happyvertical/smrt-core` without importing it
|
|
31
|
+
* (see the file-top note on why we avoid a core peer dep).
|
|
32
|
+
*/
|
|
33
|
+
type ManifestVisibility = 'public' | 'internal' | 'test';
|
|
34
|
+
/** Subset of `SmartObjectDefinition` the nav helper reads from. */
|
|
35
|
+
export interface SmrtManifestEntryLike {
|
|
36
|
+
/** Qualified name in `@package/name:ClassName` form. Primary key. */
|
|
37
|
+
qualifiedName?: string;
|
|
38
|
+
/** Simple class name (PascalCase). */
|
|
39
|
+
className: string;
|
|
40
|
+
/** Package name where the class is defined. */
|
|
41
|
+
packageName?: string;
|
|
42
|
+
/** Pluralized resource name (used by the REST generator for the URL path). */
|
|
43
|
+
collection?: string;
|
|
44
|
+
/** Base class name as written in source. */
|
|
45
|
+
extends?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Top-level visibility flag — `SmartObjectDefinition` hoists this out of
|
|
48
|
+
* `decoratorConfig` so it can be read without parsing the raw config. The
|
|
49
|
+
* helper reads here first, then falls back to `decoratorConfig.visibility`
|
|
50
|
+
* for older / hand-built manifests.
|
|
51
|
+
*/
|
|
52
|
+
visibility?: ManifestVisibility;
|
|
53
|
+
/**
|
|
54
|
+
* The `@smrt({...})` config object captured by the AST scanner. Fields
|
|
55
|
+
* are optional in the structural type so partial manifests still satisfy
|
|
56
|
+
* it. The helper specifically looks at `ui?: { icon?, label? }`.
|
|
57
|
+
*/
|
|
58
|
+
decoratorConfig?: {
|
|
59
|
+
ui?: {
|
|
60
|
+
icon?: string;
|
|
61
|
+
label?: string;
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Subset of the `@smrt({ api })` shape we care about for nav filtering —
|
|
65
|
+
* entries with `api: false` (or an `include` that drops `list` / an
|
|
66
|
+
* `exclude` that drops `list`) don't get a REST list route and so
|
|
67
|
+
* can't anchor a nav link.
|
|
68
|
+
*/
|
|
69
|
+
api?: boolean | {
|
|
70
|
+
include?: string[];
|
|
71
|
+
exclude?: string[];
|
|
72
|
+
[key: string]: unknown;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Raw visibility flag as written in source. Read as a fallback when
|
|
76
|
+
* the top-level `visibility` field is absent.
|
|
77
|
+
*/
|
|
78
|
+
visibility?: ManifestVisibility;
|
|
79
|
+
[key: string]: unknown;
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/** Subset of `SmartObjectManifest`. */
|
|
83
|
+
export interface SmrtManifestLike {
|
|
84
|
+
objects: Record<string, SmrtManifestEntryLike>;
|
|
85
|
+
}
|
|
86
|
+
import type { NavItem } from './types.js';
|
|
87
|
+
/**
|
|
88
|
+
* A nav section emitted by `navTreeFromManifest`. Structurally identical to
|
|
89
|
+
* `NavItem` — a top-level entry whose `children` are the resources grouped
|
|
90
|
+
* under it. Aliased for documentation clarity.
|
|
91
|
+
*/
|
|
92
|
+
export type NavSection = NavItem;
|
|
93
|
+
/** Options consumed by {@link navTreeFromManifest}. */
|
|
94
|
+
export interface NavTreeFromManifestOptions {
|
|
95
|
+
/**
|
|
96
|
+
* Qualified class names a role is allowed to see (e.g.
|
|
97
|
+
* `'@happyvertical/smrt-content:Article'`). Entries outside this list are
|
|
98
|
+
* dropped. Omit to include every visible resource.
|
|
99
|
+
*
|
|
100
|
+
* Plain string array on purpose — this helper must not depend on
|
|
101
|
+
* `smrt-users` or any concrete role / permission package. Wire your
|
|
102
|
+
* resolver (`PermissionResolver` from smrt-users etc.) at the
|
|
103
|
+
* `+layout.server.ts` level and pass the resulting allow-list in.
|
|
104
|
+
*/
|
|
105
|
+
permittedResources?: string[];
|
|
106
|
+
/**
|
|
107
|
+
* Map of qualifier substring → section title. A class's qualified name
|
|
108
|
+
* is checked against each key with `String.includes()`; the first match
|
|
109
|
+
* wins. When no hint matches, the section title defaults to the package
|
|
110
|
+
* suffix after the last `/` and before the `:` —
|
|
111
|
+
* `@happyvertical/smrt-content:Article` → "smrt-content".
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```ts
|
|
115
|
+
* sectionHints: {
|
|
116
|
+
* '@happyvertical/smrt-content': 'Content',
|
|
117
|
+
* '@happyvertical/smrt-commerce': 'Commerce',
|
|
118
|
+
* '@acme/apparel': 'Catalog',
|
|
119
|
+
* }
|
|
120
|
+
* ```
|
|
121
|
+
*/
|
|
122
|
+
sectionHints?: Record<string, string>;
|
|
123
|
+
/**
|
|
124
|
+
* Base path for generated hrefs. Defaults to `/api/v1` so the emitted
|
|
125
|
+
* URLs match SMRT's REST generator (`/api/v1/{collection}`). Pass an
|
|
126
|
+
* empty string to emit unprefixed paths like `/articles`.
|
|
127
|
+
*/
|
|
128
|
+
basePath?: string;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Minimal English pluralizer. Handles the common suffix rules sufficient
|
|
132
|
+
* for class-name → label conversion (Article → Articles, Category →
|
|
133
|
+
* Categories, Box → Boxes, etc.). For irregulars or exotic plurals,
|
|
134
|
+
* override with `@smrt({ ui: { label: 'Foo bars' } })`.
|
|
135
|
+
*
|
|
136
|
+
* Exported only for tests / advanced callers; most code should let
|
|
137
|
+
* `navTreeFromManifest` apply it.
|
|
138
|
+
*/
|
|
139
|
+
export declare function pluralizeClassName(name: string): string;
|
|
140
|
+
/**
|
|
141
|
+
* Walk a SMRT manifest and emit the `NavSection[]` shape that
|
|
142
|
+
* `<NavTree items={...}>` and `RoleConfig.sections` consume.
|
|
143
|
+
*
|
|
144
|
+
* Algorithm:
|
|
145
|
+
* 1. Drop collection classes (`*Collection` / `extends: 'SmrtCollection'`).
|
|
146
|
+
* 2. Drop entries marked `@smrt({ visibility: 'internal' | 'test' })` —
|
|
147
|
+
* they're plumbing / fixtures and never belong in admin nav.
|
|
148
|
+
* 3. Drop entries that don't expose a REST `list` route (`@smrt({ api: false })`,
|
|
149
|
+
* `include` without `list`, or `exclude` containing `list`).
|
|
150
|
+
* 4. Drop STI subtypes that share their parent's `collection` value —
|
|
151
|
+
* the REST endpoint at the shared collection URL is polymorphic and
|
|
152
|
+
* shows all subtypes through one link.
|
|
153
|
+
* 5. If `permittedResources` is provided, drop entries whose qualified
|
|
154
|
+
* name isn't in the list. Otherwise keep all remaining entries.
|
|
155
|
+
* 6. Group remaining entries by their resolved section title.
|
|
156
|
+
* 4. For each entry, emit a `NavItem` with:
|
|
157
|
+
* - `label` = `decoratorConfig.ui.label` ?? `pluralizeClassName(className)`
|
|
158
|
+
* - `href` = `${basePath}/${collection}` (defaults to `/api/v1/{collection}`)
|
|
159
|
+
* falling back to `${basePath}/{kebab-case-class}` if the
|
|
160
|
+
* manifest entry omits `collection`.
|
|
161
|
+
* - `icon` = `decoratorConfig.ui.icon` if present.
|
|
162
|
+
* 5. Sort items inside each section by label, then sort sections by title.
|
|
163
|
+
* The result is fully deterministic given a manifest input.
|
|
164
|
+
*
|
|
165
|
+
* @example Plug into RoleShell
|
|
166
|
+
* ```ts
|
|
167
|
+
* import { manifest } from '@my-app/manifest';
|
|
168
|
+
* import { navTreeFromManifest } from '@happyvertical/smrt-svelte/workspace';
|
|
169
|
+
*
|
|
170
|
+
* const sections = navTreeFromManifest(manifest, {
|
|
171
|
+
* sectionHints: {
|
|
172
|
+
* '@happyvertical/smrt-content': 'Content',
|
|
173
|
+
* '@happyvertical/smrt-commerce': 'Commerce',
|
|
174
|
+
* },
|
|
175
|
+
* });
|
|
176
|
+
* const roles: RoleConfig[] = [
|
|
177
|
+
* { id: 'admin', label: 'Admin', sections },
|
|
178
|
+
* ];
|
|
179
|
+
* ```
|
|
180
|
+
*
|
|
181
|
+
* @example Per-role filtering
|
|
182
|
+
* ```ts
|
|
183
|
+
* const editor = navTreeFromManifest(manifest, {
|
|
184
|
+
* permittedResources: [
|
|
185
|
+
* '@happyvertical/smrt-content:Article',
|
|
186
|
+
* '@happyvertical/smrt-content:Document',
|
|
187
|
+
* ],
|
|
188
|
+
* });
|
|
189
|
+
* // editor: [{ label: 'Content', children: [Articles, Documents] }]
|
|
190
|
+
* ```
|
|
191
|
+
*
|
|
192
|
+
* @example Unprefixed hrefs
|
|
193
|
+
* ```ts
|
|
194
|
+
* const sections = navTreeFromManifest(manifest, { basePath: '' });
|
|
195
|
+
* // items[0].href === '/articles' (not '/api/v1/articles')
|
|
196
|
+
* ```
|
|
197
|
+
*/
|
|
198
|
+
export declare function navTreeFromManifest(manifest: SmrtManifestLike, options?: NavTreeFromManifestOptions): NavSection[];
|
|
199
|
+
export {};
|
|
200
|
+
//# sourceMappingURL=manifest-nav.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest-nav.d.ts","sourceRoot":"","sources":["../../../src/components/workspace/manifest-nav.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAQH;;;;GAIG;AACH,KAAK,kBAAkB,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AAEzD,mEAAmE;AACnE,MAAM,WAAW,qBAAqB;IACpC,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC;;;;OAIG;IACH,eAAe,CAAC,EAAE;QAChB,EAAE,CAAC,EAAE;YACH,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,KAAK,CAAC,EAAE,MAAM,CAAC;SAChB,CAAC;QACF;;;;;WAKG;QACH,GAAG,CAAC,EACA,OAAO,GACP;YAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;YAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAC;QACvE;;;WAGG;QACH,UAAU,CAAC,EAAE,kBAAkB,CAAC;QAChC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH;AAED,uCAAuC;AACvC,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;CAChD;AAWD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC;AAEjC,uDAAuD;AACvD,MAAM,WAAW,0BAA0B;IACzC;;;;;;;;;OASG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAWD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAevD;AA6OD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAE,0BAA+B,GACvC,UAAU,EAAE,CAkEd"}
|