@cardstack/boxel-cli 0.13.0-unstable.4 → 0.13.0-unstable.6
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/bundled-realms/pretui/components/doc-report.gts +2 -2
- package/bundled-realms/pretui/components/doc-report.usage.gts +3 -3
- package/bundled-realms/pretui/components/form-field.md +1 -1
- package/bundled-realms/pretui/components/icon-button.md +1 -1
- package/bundled-realms/pretui/components/popup.md +1 -1
- package/bundled-realms/pretui/components/switch.gts +13 -0
- package/bundled-realms/pretui/components/switch.md +5 -3
- package/bundled-realms/pretui/components/theme-frame.gts +49 -22
- package/bundled-realms/pretui/components/tooltip.gts +141 -42
- package/bundled-realms/pretui/components/tooltip.md +10 -12
- package/bundled-realms/pretui/components/tooltip.usage.gts +3 -5
- package/bundled-realms/pretui/docs/structure.md +1 -1
- package/bundled-realms/pretui/internal/overlay.gts +4 -2
- package/bundled-realms/pretui/pretui-css.gts +6 -2
- package/bundled-realms/pretui/theme-scoped-css.gts +262 -0
- package/bundled-test-harness/assets/account-switch-failed-test-DwAZq6Sc.js +45 -0
- package/bundled-test-harness/assets/adapter-C_6pnsx1.js +2 -0
- package/bundled-test-harness/assets/add-field-to-card-definition-tool-test-zMYtJWBv.js +112 -0
- package/bundled-test-harness/assets/ai-assistant-create-workspace-test-CwhAV-Ow.js +130 -0
- package/bundled-test-harness/assets/ai-assistant-panel-relogin-test-DNgclkGJ.js +46 -0
- package/bundled-test-harness/assets/ai-assistant-test-DGYFiRTb.js +2223 -0
- package/bundled-test-harness/assets/ai-function-generation-test-Dj6WzKkh.js +1176 -0
- package/bundled-test-harness/assets/ai-module-creation-test-C4zhhxaZ.js +151 -0
- package/bundled-test-harness/assets/aibot-message-BShcljQ9.js +1312 -0
- package/bundled-test-harness/assets/app-DiEYqT6T.js +14146 -0
- package/bundled-test-harness/assets/apply-markdown-edit-test-CPhfeg1i.js +230 -0
- package/bundled-test-harness/assets/ask-user-picker-NVRkhKwt.js +370 -0
- package/bundled-test-harness/assets/ask-user-picker-test-SsZqFm9W.js +39 -0
- package/bundled-test-harness/assets/assistant-transcript-test-DesuBCIB.js +57 -0
- package/bundled-test-harness/assets/audio-metadata-extractor-test-8JM6oZXG.js +1176 -0
- package/bundled-test-harness/assets/authed-fetch-test-yPTMe-9V.js +73 -0
- package/bundled-test-harness/assets/avif-image-def-test-Kyknj908.js +187 -0
- package/bundled-test-harness/assets/basic-test-D9OrrMaq.js +139 -0
- package/bundled-test-harness/assets/binary-upload-dedupe-test-C0RFmHma.js +308 -0
- package/bundled-test-harness/assets/bot-registration-test-Bk2lTaCW.js +97 -0
- package/bundled-test-harness/assets/box-test-BbV9sMyU.js +50 -0
- package/bundled-test-harness/assets/brand-guide-attachments-test-z4wTsKbI.js +84 -0
- package/bundled-test-harness/assets/brand-guide-custom-css-test-BlSJE8xo.js +196 -0
- package/bundled-test-harness/assets/brand-guide-edit-test-DJ1OQ6IB.js +140 -0
- package/bundled-test-harness/assets/brand-logo-mark-field-test-ux7eetkO.js +86 -0
- package/bundled-test-harness/assets/broken-link-template-test-CqB3MWyw.js +192 -0
- package/bundled-test-harness/assets/bundled-base-modules-test-B2oNLZSJ.js +54 -0
- package/bundled-test-harness/assets/bundled-base-oracle-test-DelPfFjn.js +37 -0
- package/bundled-test-harness/assets/buried-stack-item-scroll-test-Ixsl1tS0.js +236 -0
- package/bundled-test-harness/assets/button-BvYQm_A1.js +141 -0
- package/bundled-test-harness/assets/bxl-cyclic-graph-test-p23WCLRW.js +47 -0
- package/bundled-test-harness/assets/bxl-expression-test-CVTQYT_C.js +250 -0
- package/bundled-test-harness/assets/bxl-indexing-test-D_A7X2sr.js +212 -0
- package/bundled-test-harness/assets/bxl-platform-module-test-Cltfyybp.js +71 -0
- package/bundled-test-harness/assets/can-invoke-test-CVfE1l1V.js +455 -0
- package/bundled-test-harness/assets/can-read-realm-test-CIz6WX_K.js +56 -0
- package/bundled-test-harness/assets/cancel-indexing-job-test-0LlrOgYK.js +69 -0
- package/bundled-test-harness/assets/capture-test-diHIWmh0.js +360 -0
- package/bundled-test-harness/assets/card-api-test-Ci9b0ghP.js +198 -0
- package/bundled-test-harness/assets/card-basics-test-RKQoQWZD.js +5364 -0
- package/bundled-test-harness/assets/card-chooser-paging-test-BN21sDpP.js +235 -0
- package/bundled-test-harness/assets/card-chooser-test-C9jDiIgM.js +393 -0
- package/bundled-test-harness/assets/card-context-search-results-KmkXJbmC.js +30 -0
- package/bundled-test-harness/assets/card-context-search-results-test-CpMr8OlX.js +184 -0
- package/bundled-test-harness/assets/card-def-field-def-relationships-test-D_30xak6.js +562 -0
- package/bundled-test-harness/assets/card-def-menu-items-test-ohuHc0b4.js +228 -0
- package/bundled-test-harness/assets/card-delete-test-BlsD9Xw4.js +466 -0
- package/bundled-test-harness/assets/card-error-3q1o3i0e.js +72 -0
- package/bundled-test-harness/assets/card-error-awaiting-index-test-DPgYKfbF.js +53 -0
- package/bundled-test-harness/assets/card-info-thumbnail-picker-test-CVfeJyjt.js +219 -0
- package/bundled-test-harness/assets/card-playground-test-D-7bi4PQ.js +1491 -0
- package/bundled-test-harness/assets/card-prerender-DemTfK_a.js +12939 -0
- package/bundled-test-harness/assets/card-thunk-error-test-DCBh1vRT.js +48 -0
- package/bundled-test-harness/assets/card-type-service-test-DXPrfVYk.js +161 -0
- package/bundled-test-harness/assets/check-correctness-test-DjE7r1X2.js +1093 -0
- package/bundled-test-harness/assets/check-domain-availability-test-U10xSKbY.js +98 -0
- package/bundled-test-harness/assets/chip-0r_r9SC8.js +44 -0
- package/bundled-test-harness/assets/choreo-CZUXQKjf.js +1110 -0
- package/bundled-test-harness/assets/choreo-D8RcLuoq.js +2 -0
- package/bundled-test-harness/assets/choreo-feature-reel-test-DRGloCAJ.js +155 -0
- package/bundled-test-harness/assets/choreo-gallery-build-order-test-BR-r7gaw.js +436 -0
- package/bundled-test-harness/assets/choreo-gallery-compositor-test-CWRLfcNT.js +399 -0
- package/bundled-test-harness/assets/choreo-gallery-cover-test-BT05gNKC.js +214 -0
- package/bundled-test-harness/assets/choreo-gallery-crossing-stage-test-WJ7FmjYi.js +133 -0
- package/bundled-test-harness/assets/choreo-gallery-demos-alive-test-C-yxdVT_.js +42 -0
- package/bundled-test-harness/assets/choreo-gallery-drift-test-HX1mK3od.js +620 -0
- package/bundled-test-harness/assets/choreo-gallery-escort-test-jZEVk_V4.js +187 -0
- package/bundled-test-harness/assets/choreo-gallery-films-test-DLDQzsxb.js +140 -0
- package/bundled-test-harness/assets/choreo-gallery-filter-test-BJv8KEeP.js +46 -0
- package/bundled-test-harness/assets/choreo-gallery-fold-test-BssKC8A8.js +180 -0
- package/bundled-test-harness/assets/choreo-gallery-guide-pages-test-DS41eNNV.js +114 -0
- package/bundled-test-harness/assets/choreo-gallery-guides-test-DTj7yEKp.js +321 -0
- package/bundled-test-harness/assets/choreo-gallery-hang-test-BqJLmeFF.js +426 -0
- package/bundled-test-harness/assets/choreo-gallery-highlight-test-B1Q7-ICm.js +60 -0
- package/bundled-test-harness/assets/choreo-gallery-inline-edit-test-7My9lVam.js +370 -0
- package/bundled-test-harness/assets/choreo-gallery-interruption-test-BlIAaGrw.js +176 -0
- package/bundled-test-harness/assets/choreo-gallery-lone-stack-test-C9NnYIP8.js +104 -0
- package/bundled-test-harness/assets/choreo-gallery-navigation-test-CWzXkvbW.js +193 -0
- package/bundled-test-harness/assets/choreo-gallery-playhead-transport-test-CwdiZWeI.js +111 -0
- package/bundled-test-harness/assets/choreo-gallery-poplayout-subtree-test-D55fxwTn.js +127 -0
- package/bundled-test-harness/assets/choreo-gallery-presence-modes-test-D8Wxv0lb.js +100 -0
- package/bundled-test-harness/assets/choreo-gallery-presentation-test-BLoWfp6G.js +157 -0
- package/bundled-test-harness/assets/choreo-gallery-reduced-motion-test-D5XxTBDS.js +145 -0
- package/bundled-test-harness/assets/choreo-gallery-sheet-standalone-test-DrHTTvss.js +89 -0
- package/bundled-test-harness/assets/choreo-gallery-sheet-test-BFVdnM_b.js +48 -0
- package/bundled-test-harness/assets/choreo-gallery-site-test-BhEBHdvI.js +237 -0
- package/bundled-test-harness/assets/choreo-gallery-stage-DcKKsdcu.js +256 -0
- package/bundled-test-harness/assets/choreo-gallery-stage-keyboard-test-Fcc6SC3F.js +102 -0
- package/bundled-test-harness/assets/choreo-gallery-stages-test-Cb-ADpxK.js +35 -0
- package/bundled-test-harness/assets/choreo-gallery-subdivision-test-DMJ6C9FW.js +138 -0
- package/bundled-test-harness/assets/choreo-gallery-table-plan-test-CAjSUdLJ.js +144 -0
- package/bundled-test-harness/assets/choreo-gallery-theater-test-B-3IZMj9.js +252 -0
- package/bundled-test-harness/assets/choreo-gallery-tuning-test-BVxK5Ry_.js +95 -0
- package/bundled-test-harness/assets/choreo-gallery-widget-room-test-uWBH1EKE.js +88 -0
- package/bundled-test-harness/assets/choreo-gallery-wires-test-Bo4Sd1Vn.js +148 -0
- package/bundled-test-harness/assets/client-telemetry-test-DFM4mML2.js +340 -0
- package/bundled-test-harness/assets/clip-DY6N6K67.js +92 -0
- package/bundled-test-harness/assets/clip-DzXoPdp-.js +2 -0
- package/bundled-test-harness/assets/code-block-DRE8KQZQ.js +502 -0
- package/bundled-test-harness/assets/code-ref-test-CDcqE8_C.js +163 -0
- package/bundled-test-harness/assets/code-submode-availability-test-DPTqZYYm.js +198 -0
- package/bundled-test-harness/assets/code-submode-test-AHV4mzJ4.js +1839 -0
- package/bundled-test-harness/assets/codeblocks-test-D6ijVvEL.js +418 -0
- package/bundled-test-harness/assets/codemirror-editor-test-BeAMVivu.js +1512 -0
- package/bundled-test-harness/assets/codemirror-embed-toolbar-test-Bnb7_KUT.js +366 -0
- package/bundled-test-harness/assets/color-field-test-CR6gGEqE.js +212 -0
- package/bundled-test-harness/assets/compaction-test-CjEsY0uG.js +150 -0
- package/bundled-test-harness/assets/computed-test-DtyZGgdc.js +1320 -0
- package/bundled-test-harness/assets/container-BYGZImLU.css +5101 -0
- package/bundled-test-harness/assets/container-CBZZ8uFw.js +10925 -0
- package/bundled-test-harness/assets/content-preview-components-test-BztI4fz-.js +462 -0
- package/bundled-test-harness/assets/copy-and-edit-test-Cqw7kcur.js +292 -0
- package/bundled-test-harness/assets/copy-card-test-D5m3eVEH.js +218 -0
- package/bundled-test-harness/assets/copy-file-to-realm-test-FPY-6Ddm.js +148 -0
- package/bundled-test-harness/assets/copy-source-test-9pJD-qey.js +56 -0
- package/bundled-test-harness/assets/create-file-test-DjMf88u_.js +1086 -0
- package/bundled-test-harness/assets/create-file-test-XbgOqg38.js +464 -0
- package/bundled-test-harness/assets/create-listing-modal-test-De7b4vu3.js +273 -0
- package/bundled-test-harness/assets/create-listing-pr-request-test-CBtIV0Z8.js +117 -0
- package/bundled-test-harness/assets/create-spec-test-4xR0gM7E.js +256 -0
- package/bundled-test-harness/assets/create-submission-workflow-test-DQpWrpGT.js +132 -0
- package/bundled-test-harness/assets/create-workspace-test-BQAudgpS.js +104 -0
- package/bundled-test-harness/assets/credential-fields-test-DXKBdbZD.js +200 -0
- package/bundled-test-harness/assets/csv-file-def-test-Cnp4y834.js +102 -0
- package/bundled-test-harness/assets/dashboard-CmuOhIYC.js +3628 -0
- package/bundled-test-harness/assets/dashboard-CzN49x74.css +2400 -0
- package/bundled-test-harness/assets/dashboard-add-workspace-test-T32hWB-g.js +50 -0
- package/bundled-test-harness/assets/dashboard-agents-test-BN5maCgQ.js +334 -0
- package/bundled-test-harness/assets/dashboard-archive-test-BzwUte_Z.js +128 -0
- package/bundled-test-harness/assets/dashboard-delete-test-D2Gcp81V.js +163 -0
- package/bundled-test-harness/assets/dashboard-duplicate-offer-test-BgKNIr35.js +71 -0
- package/bundled-test-harness/assets/dashboard-duplicate-test-D7JEWylc.js +222 -0
- package/bundled-test-harness/assets/dashboard-get-started-test-DOGPzGoA.js +374 -0
- package/bundled-test-harness/assets/dashboard-ir2bakJS.js +142 -0
- package/bundled-test-harness/assets/dashboard-pinned-cards-test-Bn_P9xJU.js +220 -0
- package/bundled-test-harness/assets/dashboard-publish-test-64sGQ0nG.js +70 -0
- package/bundled-test-harness/assets/dashboard-reindex-test-DJjYq1ct.js +115 -0
- package/bundled-test-harness/assets/dashboard-section-rail-test-ZkAhWu5V.js +169 -0
- package/bundled-test-harness/assets/dashboard-state-test-BbkpPB5L.js +162 -0
- package/bundled-test-harness/assets/dashboard-test-CBLdPrSt.js +545 -0
- package/bundled-test-harness/assets/dashboard-unreachable-notice-test-DFT3R1Zx.js +62 -0
- package/bundled-test-harness/assets/dashboard-workspace-test-DqBdCFo2.js +537 -0
- package/bundled-test-harness/assets/dashboard-workspaces-section-test-CH1HDfxR.js +410 -0
- package/bundled-test-harness/assets/data-file-def-preview-test-CNsZwQEJ.js +155 -0
- package/bundled-test-harness/assets/date-time-fields-test-CEFaZTnF.js +359 -0
- package/bundled-test-harness/assets/debug-message-test-Ck3BfFv3.js +117 -0
- package/bundled-test-harness/assets/declared-captures-test-C-0yPRU7.js +879 -0
- package/bundled-test-harness/assets/delete-workspace-test-CZOwGy78.js +102 -0
- package/bundled-test-harness/assets/diffing-test-BEKI905O.js +210 -0
- package/bundled-test-harness/assets/download-file-to-realm-test-C1kAGDll.js +119 -0
- package/bundled-test-harness/assets/editor-test-C9x5ZY6g.js +688 -0
- package/bundled-test-harness/assets/edits-D76-aanh.js +651 -0
- package/bundled-test-harness/assets/email-field-test-LGkrB_2B.js +75 -0
- package/bundled-test-harness/assets/enum-field-test-CPyV1J-m.js +935 -0
- package/bundled-test-harness/assets/error-display-test-bWuUtfIG.js +343 -0
- package/bundled-test-harness/assets/evaluate-module-test-CbS5h8t3.js +91 -0
- package/bundled-test-harness/assets/execute-atomic-operations-test-B4Kfco0k.js +113 -0
- package/bundled-test-harness/assets/externals-k-2ZBepK.js +4393 -0
- package/bundled-test-harness/assets/fallback-banner-live-delete-test-CuFiH1D8.js +207 -0
- package/bundled-test-harness/assets/fallback-banner-test-CqSRN7D8.js +225 -0
- package/bundled-test-harness/assets/fallback-banner-test-DQkrFE4-.js +53 -0
- package/bundled-test-harness/assets/fallback-models-test-BWekNxC0.js +161 -0
- package/bundled-test-harness/assets/fetch-card-json-test-DULUqUEu.js +61 -0
- package/bundled-test-harness/assets/field-configuration-test-BXZq28xa.js +551 -0
- package/bundled-test-harness/assets/field-markdown-domain-test-DdXCifs6.js +616 -0
- package/bundled-test-harness/assets/field-markdown-oversize-test-DouPPTHX.js +88 -0
- package/bundled-test-harness/assets/field-markdown-primitives-test-DSRGJeyl.js +365 -0
- package/bundled-test-harness/assets/field-markdown-specialized-test-DlTYLl_s.js +534 -0
- package/bundled-test-harness/assets/field-playground-test-NhS4VvoN.js +894 -0
- package/bundled-test-harness/assets/field-support-predicates-test-DWpyT1Qf.js +167 -0
- package/bundled-test-harness/assets/file-attachment-test-LwZf-BSY.js +796 -0
- package/bundled-test-harness/assets/file-chooser-panel-test-DuAqD9bn.js +153 -0
- package/bundled-test-harness/assets/file-chooser-test-CjaXXwpT.js +504 -0
- package/bundled-test-harness/assets/file-def-format-templates-test-BDs4OmHq.js +380 -0
- package/bundled-test-harness/assets/file-def-live-reload-test-BqTdnq-W.js +124 -0
- package/bundled-test-harness/assets/file-def-menu-items-test-DqdINXsD.js +138 -0
- package/bundled-test-harness/assets/file-def-navigation-test-BPGr0SQy.js +109 -0
- package/bundled-test-harness/assets/file-def-serialization-test-CvjW-FlC.js +89 -0
- package/bundled-test-harness/assets/file-def-test-C-Yv_NjS.js +216 -0
- package/bundled-test-harness/assets/file-preview-live-reload-test-MzwGwasU.js +310 -0
- package/bundled-test-harness/assets/file-resource-primitives-test-D3GmfqNs.js +255 -0
- package/bundled-test-harness/assets/file-tree-from-index-test-CfldnUgm.js +96 -0
- package/bundled-test-harness/assets/file-tree-test--0ZCPRe9.js +851 -0
- package/bundled-test-harness/assets/file-view-model-test-BDIAeBV8.js +346 -0
- package/bundled-test-harness/assets/filedef-export-shape-test-B2tgU404.js +61 -0
- package/bundled-test-harness/assets/film-Bf73ypzi.js +4074 -0
- package/bundled-test-harness/assets/film-C54lhaiU.js +2 -0
- package/bundled-test-harness/assets/film-DPcMEHYu.js +13 -0
- package/bundled-test-harness/assets/flac-audio-def-test-ByoXMoQ1.js +143 -0
- package/bundled-test-harness/assets/font-metadata-extractor-test-hawLTDTG.js +415 -0
- package/bundled-test-harness/assets/formatted-aibot-message-test-BahBj3x8.js +109 -0
- package/bundled-test-harness/assets/formatted-user-message-test-CodbrU3t.js +43 -0
- package/bundled-test-harness/assets/freestyle-test-faQhSciz.js +17 -0
- package/bundled-test-harness/assets/full-reindex-realm-test-CE5RJTIC.js +101 -0
- package/bundled-test-harness/assets/garbage-collection-test-v-3sev77.js +403 -0
- package/bundled-test-harness/assets/general-test-DKZPBtSb.js +923 -0
- package/bundled-test-harness/assets/generate-example-cards-one-shot-test-CucWyrkH.js +65 -0
- package/bundled-test-harness/assets/generic-file-def-preview-test-_EDRsebi.js +71 -0
- package/bundled-test-harness/assets/get-available-realm-identifiers-test-CV023yek.js +47 -0
- package/bundled-test-harness/assets/get-catalog-realm-identifiers-test--DOu3DyV.js +47 -0
- package/bundled-test-harness/assets/get-default-writable-realm-test-Bic8jl6R.js +54 -0
- package/bundled-test-harness/assets/get-published-realms-test-DrA5YcFN.js +71 -0
- package/bundled-test-harness/assets/get-realm-of-resource-identifier-test-jfU6SIWn.js +54 -0
- package/bundled-test-harness/assets/get-relationship-membership-state-test-Ccy2Z7MN.js +1308 -0
- package/bundled-test-harness/assets/get-user-system-card-test-Bmq2lmWv.js +67 -0
- package/bundled-test-harness/assets/gif-image-def-test-N1mMQC-X.js +188 -0
- package/bundled-test-harness/assets/glimmer-motion-and-choreo-in-cards-test-BkUDjiTs.js +160 -0
- package/bundled-test-harness/assets/glimmer-motion-and-choreo-test-DsFWCzTs.js +74 -0
- package/bundled-test-harness/assets/gts-file-def-test-BL1jpQ9J.js +100 -0
- package/bundled-test-harness/assets/head-format-preview-test-BVCaPQqc.js +158 -0
- package/bundled-test-harness/assets/helpers-Ds68JxHe.js +5 -0
- package/bundled-test-harness/assets/host-mode-service-B4bisRdR.js +262 -0
- package/bundled-test-harness/assets/host-mode-test-BmkN2PCJ.js +831 -0
- package/bundled-test-harness/assets/host-submode-test-C6SxQ796.js +1392 -0
- package/bundled-test-harness/assets/html-component-test-CNQ9wF0Q.js +65 -0
- package/bundled-test-harness/assets/html-def-test-BcaCVVQq.js +160 -0
- package/bundled-test-harness/assets/html-meta-extractor-test-BU1hjkTp.js +60 -0
- package/bundled-test-harness/assets/hydratable-card-test-CX6MWiti.js +426 -0
- package/bundled-test-harness/assets/icon-button-C1zH38Nc.js +67 -0
- package/bundled-test-harness/assets/image-metadata-extractor-test-CakSBPZ_.js +1109 -0
- package/bundled-test-harness/assets/index-changes-test-D8RtgfyG.js +367 -0
- package/bundled-test-harness/assets/index-query-engine-test-BETfoYOK.js +2593 -0
- package/bundled-test-harness/assets/index-writer-test-B_bR2fjw.js +3040 -0
- package/bundled-test-harness/assets/inspector-test-BwPXJj1S.js +2058 -0
- package/bundled-test-harness/assets/instance-filter-matcher-test-BSVCg59b.js +788 -0
- package/bundled-test-harness/assets/instantiate-card-test-BVQhZjpq.js +164 -0
- package/bundled-test-harness/assets/interact-submode-creation-and-permissions-test-DzQLG41H.js +475 -0
- package/bundled-test-harness/assets/interact-submode-setup-C5bKXq73.js +566 -0
- package/bundled-test-harness/assets/invalidate-realm-identifiers-test-Cd3dpjhB.js +99 -0
- package/bundled-test-harness/assets/invite-user-to-room-test-Brabz1tt.js +142 -0
- package/bundled-test-harness/assets/invoke-card-operation-test-C1Q1FUf4.js +333 -0
- package/bundled-test-harness/assets/isolated-render-test-BLJfS7BU.js +51 -0
- package/bundled-test-harness/assets/job-scoped-doc-cache-test-Bgv5woaB.js +181 -0
- package/bundled-test-harness/assets/job-scoped-instance-residency-test-C_bB6KpR.js +103 -0
- package/bundled-test-harness/assets/jpg-image-def-test-gdLIKocD.js +697 -0
- package/bundled-test-harness/assets/json-file-def-test-CPYMRBY-.js +95 -0
- package/bundled-test-harness/assets/key-notices-badge-test-DemslfLw.js +155 -0
- package/bundled-test-harness/assets/key-readiness-test-5tq5JycL.js +190 -0
- package/bundled-test-harness/assets/linksto-broken-link-placeholder-test-BbhDZ2PH.js +398 -0
- package/bundled-test-harness/assets/linksto-error-sentinel-test-C2t7fFPi.js +238 -0
- package/bundled-test-harness/assets/linksto-many-broken-link-placeholder-test--U_UvUty.js +354 -0
- package/bundled-test-harness/assets/linksto-many-per-slot-access-test-Dj3Xy0ZF.js +303 -0
- package/bundled-test-harness/assets/linksto-sentinel-reload-test-D0dK4Jjs.js +197 -0
- package/bundled-test-harness/assets/linksto-sentinel-roundtrip-test---IYiXok.js +260 -0
- package/bundled-test-harness/assets/linksto-singular-js-access-contract-test-CT04MhES.js +196 -0
- package/bundled-test-harness/assets/lint-and-fix-test-aadgx7rX.js +51 -0
- package/bundled-test-harness/assets/live-test-BGij_vuc.js +100 -0
- package/bundled-test-harness/assets/live-test-CppvValf.js +2 -0
- package/bundled-test-harness/assets/load-default-skills-test-Cp2m_ebp.js +74 -0
- package/bundled-test-harness/assets/loader-parallel-prefetch-test-vU_26Jqu.js +257 -0
- package/bundled-test-harness/assets/loader-test-CTaw8K_B.js +482 -0
- package/bundled-test-harness/assets/loading-test-DGGt4qZZ.js +63 -0
- package/bundled-test-harness/assets/m4a-audio-def-test-DAiReOXH.js +190 -0
- package/bundled-test-harness/assets/main-bXHwJ0CN.js +5 -0
- package/bundled-test-harness/assets/markdown-embed-chooser-modal-test-CIXq9FqR.js +470 -0
- package/bundled-test-harness/assets/markdown-embed-chooser-test-zFGh9WfP.js +334 -0
- package/bundled-test-harness/assets/markdown-embed-preview-pane-test-Byn_WFwY.js +447 -0
- package/bundled-test-harness/assets/markdown-embed-preview-test-Y3iFMttg.js +368 -0
- package/bundled-test-harness/assets/markdown-fallback-test-Br1TPkLZ.js +316 -0
- package/bundled-test-harness/assets/markdown-file-def-test-Crm2MAnq.js +380 -0
- package/bundled-test-harness/assets/markdown-helpers-test-CZ9Vvywc.js +188 -0
- package/bundled-test-harness/assets/markdown-highlighting-test-CFMkoVDl.js +244 -0
- package/bundled-test-harness/assets/markdown-preview-lOh-MyqF.js +72 -0
- package/bundled-test-harness/assets/markdown-preview-test-B8w0fFIy.js +238 -0
- package/bundled-test-harness/assets/markdown-skill-frontmatter-test-aH6HQly1.js +146 -0
- package/bundled-test-harness/assets/markdown-skill-search-test-CiNLQs-5.js +80 -0
- package/bundled-test-harness/assets/matrix-service-account-switch-sessions-test-DaA8w1Jj.js +63 -0
- package/bundled-test-harness/assets/matrix-service-boot-assembly-test-21GIlf55.js +300 -0
- package/bundled-test-harness/assets/matrix-service-personal-realm-test-jn9DUENm.js +125 -0
- package/bundled-test-harness/assets/matrix-service-realm-servers-test-eNZVJakl.js +55 -0
- package/bundled-test-harness/assets/matrix-service-realms-list-updated-test-Cabm8_dY.js +132 -0
- package/bundled-test-harness/assets/matrix-service-relogin-test-C77EFgjc.js +59 -0
- package/bundled-test-harness/assets/matrix-service-sliding-sync-test-BgM0fPiO.js +35 -0
- package/bundled-test-harness/assets/menu-Cl50TSFe.js +3561 -0
- package/bundled-test-harness/assets/message-service-subscription-test-CfEqH2jP.js +110 -0
- package/bundled-test-harness/assets/message-service-test-DsTzH1In.js +144 -0
- package/bundled-test-harness/assets/message-tool-test-C5xVfTtj.js +33 -0
- package/bundled-test-harness/assets/midi-audio-def-test-goLRCNCZ.js +182 -0
- package/bundled-test-harness/assets/migrate-skill-test-yPCbVfxG.js +161 -0
- package/bundled-test-harness/assets/mini-YXjrY_tH.js +1404 -0
- package/bundled-test-harness/assets/mini-card-chooser-test-DrllikHB.js +272 -0
- package/bundled-test-harness/assets/mini-file-chooser-test-BfqayhmI.js +201 -0
- package/bundled-test-harness/assets/mock-matrix-C7BrPS6S.js +2 -0
- package/bundled-test-harness/assets/mock-matrix-FjsXmU7-.js +15107 -0
- package/bundled-test-harness/assets/modal-BgaZavcs.js +322 -0
- package/bundled-test-harness/assets/model-cost-tier-test-BGg-sJML.js +174 -0
- package/bundled-test-harness/assets/model-file-extract-test-CjEBupY5.js +206 -0
- package/bundled-test-harness/assets/module-transpile-cache-test-XW6DDsmz.js +67 -0
- package/bundled-test-harness/assets/monaco-test-DkoRuFiQ.js +100 -0
- package/bundled-test-harness/assets/mp3-audio-def-test-v369NNsQ.js +133 -0
- package/bundled-test-harness/assets/multiple-stacks-test-CJpYPWdM.js +208 -0
- package/bundled-test-harness/assets/nested-query-field-render-test-CfDrBcUN.js +249 -0
- package/bundled-test-harness/assets/no-stacks-test-MmsJeLpz.js +48 -0
- package/bundled-test-harness/assets/number-field-test-A7B2r0M5.js +184 -0
- package/bundled-test-harness/assets/office-file-def-test-BNRvFmCB.js +263 -0
- package/bundled-test-harness/assets/office-metadata-extractor-test-zlDoEIEp.js +218 -0
- package/bundled-test-harness/assets/office-poster-capture-test-DdFEaOxR.js +203 -0
- package/bundled-test-harness/assets/ogg-audio-def-test-kk91BzQY.js +196 -0
- package/bundled-test-harness/assets/open-create-listing-modal-test-D1Dl1pov.js +131 -0
- package/bundled-test-harness/assets/open-image-in-new-tab-test-DyCmdMyO.js +52 -0
- package/bundled-test-harness/assets/open-secure-window-test-dz1vPudF.js +253 -0
- package/bundled-test-harness/assets/open-workspace-test-BvTcskzP.js +46 -0
- package/bundled-test-harness/assets/operation-lowering-test-omU66bkJ.js +2957 -0
- package/bundled-test-harness/assets/operations-invocation-test-BMj42rQe.js +523 -0
- package/bundled-test-harness/assets/operations-optimistic-test-KJLyzT8v.js +203 -0
- package/bundled-test-harness/assets/operations-query-test-J3HcnaoK.js +459 -0
- package/bundled-test-harness/assets/operations-store-reconciliation-test-CkbGBMBQ.js +406 -0
- package/bundled-test-harness/assets/operations-test-C7zXXpRW.js +2518 -0
- package/bundled-test-harness/assets/operator-mode-acceptance-test-BPolI_RD.js +1195 -0
- package/bundled-test-harness/assets/operator-mode-card-chooser-test-DjTQgizt.js +1036 -0
- package/bundled-test-harness/assets/operator-mode-links-test-DSEqy5Db.js +797 -0
- package/bundled-test-harness/assets/operator-mode-test-CB7BNDNE.js +696 -0
- package/bundled-test-harness/assets/operator-mode-ui-test-C1OhF1il.js +1045 -0
- package/bundled-test-harness/assets/overlay-D2rQi8lJ.js +427 -0
- package/bundled-test-harness/assets/overlay-menu-items-test-CPN31yBJ.js +331 -0
- package/bundled-test-harness/assets/overlays-B-qMEPhY.js +2 -0
- package/bundled-test-harness/assets/overlays-DSf2je0c.js +75 -0
- package/bundled-test-harness/assets/overlays-detached-element-test-C73nMXes.js +56 -0
- package/bundled-test-harness/assets/panel-DjrC7DxA.js +15124 -0
- package/bundled-test-harness/assets/past-sessions-test-BSIS2Hlq.js +321 -0
- package/bundled-test-harness/assets/patch-fields-test-Bp2IE0Jw.js +1014 -0
- package/bundled-test-harness/assets/patch-instance-test-DssuRGKP.js +348 -0
- package/bundled-test-harness/assets/pdf-file-def-test-Barj9ffD.js +111 -0
- package/bundled-test-harness/assets/pdf-metadata-extractor-test-B7KnXcIm.js +130 -0
- package/bundled-test-harness/assets/permission-checking-realm-test-BD4O0nen.js +306 -0
- package/bundled-test-harness/assets/persist-module-inspector-view-test-BIdbkdPr.js +60 -0
- package/bundled-test-harness/assets/persist-scroll-position-test-Bhb7wJiy.js +254 -0
- package/bundled-test-harness/assets/phone-number-field-test-C2yuCrXY.js +73 -0
- package/bundled-test-harness/assets/pill-menu-test-BIp91YXi.js +60 -0
- package/bundled-test-harness/assets/plate-CJq1veVA.js +41 -0
- package/bundled-test-harness/assets/plate-CwAvOUfL.js +2 -0
- package/bundled-test-harness/assets/player-Digk7omr.js +2 -0
- package/bundled-test-harness/assets/player-vsjosoN_.js +82 -0
- package/bundled-test-harness/assets/playground-B02e8uqB.js +58 -0
- package/bundled-test-harness/assets/plural-field-components-test-C1acuN-A.js +198 -0
- package/bundled-test-harness/assets/png-image-def-test-B9QeVo1f.js +266 -0
- package/bundled-test-harness/assets/policy-audit-confirmation-test-CeVquvc_.js +155 -0
- package/bundled-test-harness/assets/policy-scoped-search-test-SFPiIqR3.js +339 -0
- package/bundled-test-harness/assets/prerender-file-extract-test-HSJKAHyO.js +346 -0
- package/bundled-test-harness/assets/prerender-html-test-BTAcFCme.js +670 -0
- package/bundled-test-harness/assets/prerender-meta-test-Csyz2b21.js +614 -0
- package/bundled-test-harness/assets/prerender-module-test-DpTYAbmI.js +409 -0
- package/bundled-test-harness/assets/prerender-persistence-block-test-BhIt-7kK.js +124 -0
- package/bundled-test-harness/assets/prerender-pre-model-error-test-DxKPQKqx.js +61 -0
- package/bundled-test-harness/assets/prerender-serialize-cycle-test-C8V5YWQO.js +134 -0
- package/bundled-test-harness/assets/prerendered-html-read-test-Cq7JVGwg.js +191 -0
- package/bundled-test-harness/assets/pretui-components-test-Ducr9fLT.css +743 -0
- package/bundled-test-harness/assets/pretui-components-test-Hs0uyIUQ.js +992 -0
- package/bundled-test-harness/assets/pretui-primitives-CRs8NRm0.js +69 -0
- package/bundled-test-harness/assets/preview-format-test-cCqLrfdY.js +103 -0
- package/bundled-test-harness/assets/preview-test-BMqJSoR1.js +474 -0
- package/bundled-test-harness/assets/process-card-test-578tfDvr.js +94 -0
- package/bundled-test-harness/assets/profile-settings-modal-CVnNl7Yu.js +990 -0
- package/bundled-test-harness/assets/publish-realm-COoeWexp.js +82 -0
- package/bundled-test-harness/assets/publish-realm-test-a5nkx0Ov.js +210 -0
- package/bundled-test-harness/assets/query-field-barrier-test-qX3xVPfk.js +113 -0
- package/bundled-test-harness/assets/query-field-error-sentinel-test-V6JDPFLX.js +201 -0
- package/bundled-test-harness/assets/query-field-membership-status-test-CK7eDf-K.js +323 -0
- package/bundled-test-harness/assets/query-field-page-optin-test-B5YBHUvU.js +126 -0
- package/bundled-test-harness/assets/query-field-schema-test-D4SjOGlK.js +231 -0
- package/bundled-test-harness/assets/query-field-search-throttle-test-BVkm1-D8.js +154 -0
- package/bundled-test-harness/assets/query-field-stale-prerender-test-9g7hcD91.js +152 -0
- package/bundled-test-harness/assets/query-fields-test-CQYqhzpN.js +535 -0
- package/bundled-test-harness/assets/quick-look-test-CE0o6lJ4.js +139 -0
- package/bundled-test-harness/assets/read-card-for-ai-assistant-test-D0mJorwH.js +91 -0
- package/bundled-test-harness/assets/read-file-for-ai-assistant-test-B_F_2GEB.js +45 -0
- package/bundled-test-harness/assets/read-source-test-BgJV4B4F.js +67 -0
- package/bundled-test-harness/assets/read-text-file-test-DaeLzg4u.js +124 -0
- package/bundled-test-harness/assets/realm-C_a9su1j.js +2858 -0
- package/bundled-test-harness/assets/realm-api-keys-D5USFOoS.js +2 -0
- package/bundled-test-harness/assets/realm-api-keys-m_VOcixC.js +578 -0
- package/bundled-test-harness/assets/realm-api-keys-test-BVs7f5Dz.js +109 -0
- package/bundled-test-harness/assets/realm-api-keys-test-C_uZnTmq.js +588 -0
- package/bundled-test-harness/assets/realm-config-m5eccPW8.js +833 -0
- package/bundled-test-harness/assets/realm-config-policy-standing-test-Ber-IXpc.js +290 -0
- package/bundled-test-harness/assets/realm-config-routing-rule-edit-test-3Xqt5VlM.js +274 -0
- package/bundled-test-harness/assets/realm-config-settings-test-CkalhbDF.js +187 -0
- package/bundled-test-harness/assets/realm-field-test-B_PUoqnk.js +100 -0
- package/bundled-test-harness/assets/realm-indexing-test-8iLjeV_e.js +4380 -0
- package/bundled-test-harness/assets/realm-policy-fitted-test-Bptvra0U.js +206 -0
- package/bundled-test-harness/assets/realm-policy-test-DwG0qqXE.js +1141 -0
- package/bundled-test-harness/assets/realm-querying-test-Dvw26A6Q.js +1067 -0
- package/bundled-test-harness/assets/realm-server-form-agnostic-test-DrXQH0UP.js +96 -0
- package/bundled-test-harness/assets/realm-server-subscriber-test-Dkj23vQK.js +46 -0
- package/bundled-test-harness/assets/realm-service-info-test-CdRlDhj-.js +67 -0
- package/bundled-test-harness/assets/realm-test-DGYN48Qx.js +2364 -0
- package/bundled-test-harness/assets/realm-token-refresh-test-CEWATL9h.js +153 -0
- package/bundled-test-harness/assets/realm-url-tooltip-test-8ZjTNPuy.js +78 -0
- package/bundled-test-harness/assets/reasoning-test-BV49AYg2.js +221 -0
- package/bundled-test-harness/assets/recent-files-test-Dc6L6Dm4.js +450 -0
- package/bundled-test-harness/assets/reindex-realm-test-CFRSt39u.js +117 -0
- package/bundled-test-harness/assets/relationship-loading-state-test-FKbtOFUr.js +290 -0
- package/bundled-test-harness/assets/remix-card-test-CKGC_Sgq.js +58 -0
- package/bundled-test-harness/assets/rendered-markdown-DXiDN91F.js +292 -0
- package/bundled-test-harness/assets/rendered-markdown-test-n3MlXmmu.js +587 -0
- package/bundled-test-harness/assets/resident-instance-reuse-test-BjdhE6CM.js +82 -0
- package/bundled-test-harness/assets/result-tile-o6dtjgX4.js +144 -0
- package/bundled-test-harness/assets/rich-markdown-field-test-VXr6l20h.js +1647 -0
- package/bundled-test-harness/assets/room-message-test-BrjJ2wMs.js +484 -0
- package/bundled-test-harness/assets/run-P_7TsreC.js +4017 -0
- package/bundled-test-harness/assets/run-realm-code-DsBUf1si.js +2964 -0
- package/bundled-test-harness/assets/run-realm-code-test-cS0DzaKo.js +3844 -0
- package/bundled-test-harness/assets/sanitize-module-list-test-CvuOOiUY.js +85 -0
- package/bundled-test-harness/assets/save-card-skip-index-wait-test-fpJ1eq32.js +89 -0
- package/bundled-test-harness/assets/schema-editor-test-NkKjCgyf.js +785 -0
- package/bundled-test-harness/assets/schema-generation-test-Dmg3lWl7.js +28 -0
- package/bundled-test-harness/assets/scrolling-test-B0GNYGYc.js +412 -0
- package/bundled-test-harness/assets/search-adorn-test-CZebk7_y.js +136 -0
- package/bundled-test-harness/assets/search-and-choose-test-Bd4NZUup.js +154 -0
- package/bundled-test-harness/assets/search-correlation-id-test-DXKlEO55.js +139 -0
- package/bundled-test-harness/assets/search-entries-result-test-QQawA8Fm.js +234 -0
- package/bundled-test-harness/assets/search-entries-test-3DlqGPQq.js +1486 -0
- package/bundled-test-harness/assets/search-entries-tool-test-D1TvDE9D.js +504 -0
- package/bundled-test-harness/assets/search-google-images-test-DqsoQGr1.js +166 -0
- package/bundled-test-harness/assets/search-results-DGrNaPxh.js +266 -0
- package/bundled-test-harness/assets/search-results-test-CqVHYNRt.js +578 -0
- package/bundled-test-harness/assets/search-selection-menu-test-D6bIjKiH.js +108 -0
- package/bundled-test-harness/assets/search-sheet-files-test-Bf37TQXo.js +126 -0
- package/bundled-test-harness/assets/search-sheet-persistence-test-CV4_XdxR.js +131 -0
- package/bundled-test-harness/assets/search-test-Dlb-wg3a.js +2249 -0
- package/bundled-test-harness/assets/search-tool-test-BJLgVMoL.js +156 -0
- package/bundled-test-harness/assets/searchable-option-test-CcbfMqIL.js +322 -0
- package/bundled-test-harness/assets/searchable-search-doc-test-yH9fLGNS.js +1271 -0
- package/bundled-test-harness/assets/section-rail-CNFCebtT.js +113 -0
- package/bundled-test-harness/assets/section-rail-test-KNJAWWl6.js +256 -0
- package/bundled-test-harness/assets/secure-sign-in-Dyljp0Th.js +174 -0
- package/bundled-test-harness/assets/secure-sign-in-test-QnqNuTP3.js +373 -0
- package/bundled-test-harness/assets/segmented-control-DxJdoJ4Z.js +173 -0
- package/bundled-test-harness/assets/select-BiQTg2ts.js +175 -0
- package/bundled-test-harness/assets/send-ai-assistant-message-test-CAn7M2dZ.js +52 -0
- package/bundled-test-harness/assets/send-bot-trigger-event-test-qBu5E_jy.js +56 -0
- package/bundled-test-harness/assets/send-request-via-proxy-test-CLuwLBq_.js +380 -0
- package/bundled-test-harness/assets/sending-test-H0AaBSgi.js +659 -0
- package/bundled-test-harness/assets/serialization-rri-form-audit-test-hMJukiKt.js +136 -0
- package/bundled-test-harness/assets/serialization-test-W5e3wKbz.js +8758 -0
- package/bundled-test-harness/assets/set-user-system-card-test-CjgWLkNV.js +59 -0
- package/bundled-test-harness/assets/setup-CssMNvui.js +772 -0
- package/bundled-test-harness/assets/setup-D8YXvK-p.js +2 -0
- package/bundled-test-harness/assets/shared-link-target-reuse-test-D42UO8DC.js +207 -0
- package/bundled-test-harness/assets/show-card-test-CHEaS514.js +365 -0
- package/bundled-test-harness/assets/signed-capture-link-test-BgEu0F-S.js +132 -0
- package/bundled-test-harness/assets/single-stack-test-DYcu_v7Z.js +652 -0
- package/bundled-test-harness/assets/skills-test-ChmKhADX.js +648 -0
- package/bundled-test-harness/assets/skip-boot-index-guard-test-BzRIncDN.js +46 -0
- package/bundled-test-harness/assets/spec-test-BYvFR6Xb.js +1077 -0
- package/bundled-test-harness/assets/spinner-Bx9x55NA.js +49 -0
- package/bundled-test-harness/assets/src-C1hYFgVl.js +216 -0
- package/bundled-test-harness/assets/src-CIlLx7Lu.js +5 -0
- package/bundled-test-harness/assets/stick-to-bottom-resize-test-DMHsAG0v.js +56 -0
- package/bundled-test-harness/assets/store-add-test-D_9IHQjZ.js +50 -0
- package/bundled-test-harness/assets/store-module-rebuild-test-BRGZoLRV.js +454 -0
- package/bundled-test-harness/assets/store-search-test-3G8JHuj2.js +175 -0
- package/bundled-test-harness/assets/store-test-BiKKDqqW.js +3672 -0
- package/bundled-test-harness/assets/structured-theme-test-11TNsgUW.js +377 -0
- package/bundled-test-harness/assets/summarize-session-test-CwzD_ZbD.js +172 -0
- package/bundled-test-harness/assets/svg-image-def-test-zV6aMK9q.js +167 -0
- package/bundled-test-harness/assets/switch-submode-test-DQU2cP5_.js +168 -0
- package/bundled-test-harness/assets/sync-openrouter-models-test-xrXVaC2H.js +97 -0
- package/bundled-test-harness/assets/test-support-BGl3rthw.js +3 -0
- package/bundled-test-harness/assets/test-support-BcBv__98.js +99 -0
- package/bundled-test-harness/assets/tests-CmM9imwB.js +3598 -0
- package/bundled-test-harness/assets/text-file-def-test-Cyq78UFY.js +94 -0
- package/bundled-test-harness/assets/text-input-validator-test-DBj7TaM_.js +156 -0
- package/bundled-test-harness/assets/text-suggestion-test-C4XAqWqY.js +340 -0
- package/bundled-test-harness/assets/theme-card-test-dVNz4tgU.js +621 -0
- package/bundled-test-harness/assets/theme-dashboard-nav-test-DYSn5pqo.js +196 -0
- package/bundled-test-harness/assets/theme-scheme-island-test-C1WpkfEP.js +264 -0
- package/bundled-test-harness/assets/theme-scoped-css-parity-test-BVluppsE.js +176 -0
- package/bundled-test-harness/assets/titles-DCvAhECF.js +52 -0
- package/bundled-test-harness/assets/titles-ZPeArtS1.js +2 -0
- package/bundled-test-harness/assets/to-device-streaming-test-BJ4J1cXe.js +163 -0
- package/bundled-test-harness/assets/token-usage-test-WUf4r4fQ.js +160 -0
- package/bundled-test-harness/assets/tools-J_Knr_W6.js +774 -0
- package/bundled-test-harness/assets/tools-calling-test-CfqZX0Ed.js +200 -0
- package/bundled-test-harness/assets/tools-test-B4x58ZmI.js +1624 -0
- package/bundled-test-harness/assets/tools-test-Cvau5219.js +3204 -0
- package/bundled-test-harness/assets/tooltip-B0rEgyMW.css +66 -0
- package/bundled-test-harness/assets/tooltip-DvUMUgVX.js +195 -0
- package/bundled-test-harness/assets/transform-cards-test-CYQbZeD9.js +341 -0
- package/bundled-test-harness/assets/ts-file-def-preview-test-m39f8Zio.js +95 -0
- package/bundled-test-harness/assets/ts-file-def-test-xIcL5xWe.js +92 -0
- package/bundled-test-harness/assets/ttf-font-def-test-ClQ2SzFF.js +206 -0
- package/bundled-test-harness/assets/turn-settling-test-DZoL2mRT.js +160 -0
- package/bundled-test-harness/assets/turn-summary-Bmt7ZxTS.js +1039 -0
- package/bundled-test-harness/assets/unpublish-realm-test-0ToTJczx.js +102 -0
- package/bundled-test-harness/assets/update-room-skills-test-o_j8NOUV.js +240 -0
- package/bundled-test-harness/assets/use-ai-assistant-test-D7HFpxKJ.js +384 -0
- package/bundled-test-harness/assets/user-message-BAOt1hS3.js +262 -0
- package/bundled-test-harness/assets/validate-realm-test-e3xIbNLB.js +67 -0
- package/bundled-test-harness/assets/video-metadata-extractor-test-D8naLSlg.js +520 -0
- package/bundled-test-harness/assets/view-visually-test-BuhGau5E.js +335 -0
- package/bundled-test-harness/assets/virtual-network-reset-test-CgaFNGPi.js +96 -0
- package/bundled-test-harness/assets/wav-audio-def-test-CWG_UdCh.js +160 -0
- package/bundled-test-harness/assets/webp-image-def-test-sN4yw8Zu.js +226 -0
- package/bundled-test-harness/assets/workspace-0LfPqbYB.js +445 -0
- package/bundled-test-harness/assets/workspace-a11y-test-DQxYDRAP.js +197 -0
- package/bundled-test-harness/assets/workspace-actions-jGJSfl8M.js +588 -0
- package/bundled-test-harness/assets/workspace-behavior-test-BnF-bmBN.js +338 -0
- package/bundled-test-harness/assets/workspace-delete-multiple-test-D-rxPDuT.js +212 -0
- package/bundled-test-harness/assets/workspace-delete-summary-test-C2-Mve5R.js +63 -0
- package/bundled-test-harness/assets/workspace-hosting-test-BvDKdlOb.js +138 -0
- package/bundled-test-harness/assets/workspace-indexing-test-B34T3kqD.js +71 -0
- package/bundled-test-harness/assets/workspace-test-CJivgv-m.js +51 -0
- package/bundled-test-harness/assets/workspace-test-CuSRpPnQ.js +385 -0
- package/bundled-test-harness/assets/workspace-timestamp-labels-test-aWgjdbCp.js +68 -0
- package/bundled-test-harness/assets/workspace-unit-test-DHMUf2KT.js +122 -0
- package/bundled-test-harness/assets/write-binary-file-test-P-hVQuin.js +124 -0
- package/bundled-test-harness/assets/write-text-file-test-fXvJueDd.js +191 -0
- package/bundled-test-harness/assets/zip-archive-test-C2P5CUSR.js +285 -0
- package/bundled-test-harness/assets/zip-file-def-test-BfJZAmGt.js +164 -0
- package/bundled-test-harness/boxel-ui-checksum.txt +1 -1
- package/bundled-test-harness/index.html +48 -48
- package/bundled-test-harness/tests/index.html +50 -50
- package/bundled-types/boxel-ui/helpers/theme-scoped-css.ts +4 -0
- package/bundled-types/choreo/choreo.gts +58 -2
- package/bundled-types/choreo/compile.ts +5 -0
- package/bundled-types/choreo/layout-probe.ts +100 -0
- package/bundled-types/choreo/run.ts +99 -4
- package/bundled-types/host-app/components/operator-mode/dashboard/get-started.gts +152 -7
- package/bundled-types/host-app/components/operator-mode/dashboard/index.gts +2 -0
- package/bundled-types/host-app/components/operator-mode/dashboard/workspace.gts +5 -3
- package/bundled-types/host-app/components/operator-mode/dashboard-modals/workspace-modals.gts +5 -22
- package/bundled-types/host-app/components/operator-mode/host-submode/publishing-realm-popover.gts +1 -1
- package/bundled-types/host-app/components/operator-mode/host-submode.gts +111 -37
- package/bundled-types/host-app/components/operator-mode/motion/stack-motion.gts +92 -33
- package/bundled-types/host-app/components/operator-mode/publish-realm-modal.gts +1 -0
- package/bundled-types/host-app/components/operator-mode/stack-item.gts +2 -2
- package/bundled-types/host-app/components/operator-mode/stack.gts +36 -25
- package/bundled-types/host-app/components/operator-mode/submode-layout.gts +2 -2
- package/bundled-types/host-app/lib/modal-focus-trap.ts +33 -0
- package/bundled-types/host-app/lib/workspace-actions.ts +21 -0
- package/bundled-types/host-app/services/host-mode-service.ts +39 -0
- package/bundled-types/host-app/services/realm.ts +14 -0
- package/bundled-types/host-tests/helpers/dashboard.ts +67 -0
- package/package.json +1 -1
- package/bundled-test-harness/assets/account-switch-failed-test-FytUFiPO.js +0 -45
- package/bundled-test-harness/assets/adapter-DvmPwSZv.js +0 -2
- package/bundled-test-harness/assets/add-field-to-card-definition-tool-test-DN525jiY.js +0 -112
- package/bundled-test-harness/assets/ai-assistant-create-workspace-test-q3tKqVJQ.js +0 -130
- package/bundled-test-harness/assets/ai-assistant-panel-relogin-test-DgeXcCyi.js +0 -46
- package/bundled-test-harness/assets/ai-assistant-test-lDIGPKFP.js +0 -2223
- package/bundled-test-harness/assets/ai-function-generation-test-D5GbLyvL.js +0 -1176
- package/bundled-test-harness/assets/ai-module-creation-test-I3-j2beD.js +0 -151
- package/bundled-test-harness/assets/aibot-message-Dmsjifs6.js +0 -1312
- package/bundled-test-harness/assets/app-BS9_-DhN.js +0 -14146
- package/bundled-test-harness/assets/apply-markdown-edit-test-4zlwt0Db.js +0 -230
- package/bundled-test-harness/assets/ask-user-picker-Dr-0qpNr.js +0 -370
- package/bundled-test-harness/assets/ask-user-picker-test-633AFdmS.js +0 -39
- package/bundled-test-harness/assets/assistant-transcript-test-BgRnLvMg.js +0 -57
- package/bundled-test-harness/assets/audio-metadata-extractor-test-4xsQqL-0.js +0 -1176
- package/bundled-test-harness/assets/authed-fetch-test-663mT5_N.js +0 -73
- package/bundled-test-harness/assets/avif-image-def-test-h01BPIJy.js +0 -187
- package/bundled-test-harness/assets/basic-test-DiD6T-8Q.js +0 -139
- package/bundled-test-harness/assets/binary-upload-dedupe-test-CkjMPO_e.js +0 -308
- package/bundled-test-harness/assets/bot-registration-test-CFZHpwdj.js +0 -97
- package/bundled-test-harness/assets/box-test-C3pSy5ED.js +0 -50
- package/bundled-test-harness/assets/brand-guide-attachments-test-EoC_u7Vc.js +0 -84
- package/bundled-test-harness/assets/brand-guide-custom-css-test-Dn3fvblr.js +0 -196
- package/bundled-test-harness/assets/brand-guide-edit-test-NeiT3MyK.js +0 -140
- package/bundled-test-harness/assets/brand-logo-mark-field-test-C2A1EnBB.js +0 -86
- package/bundled-test-harness/assets/broken-link-template-test-CWn6V5zZ.js +0 -192
- package/bundled-test-harness/assets/bundled-base-modules-test-D7mLzpsw.js +0 -54
- package/bundled-test-harness/assets/bundled-base-oracle-test-I7xCId_k.js +0 -37
- package/bundled-test-harness/assets/buried-stack-item-scroll-test-DFBev0h-.js +0 -236
- package/bundled-test-harness/assets/button-BeSuhveJ.js +0 -207
- package/bundled-test-harness/assets/bxl-cyclic-graph-test-DPykwvvx.js +0 -47
- package/bundled-test-harness/assets/bxl-expression-test-LBWJiFb9.js +0 -250
- package/bundled-test-harness/assets/bxl-indexing-test-BuZmLk7y.js +0 -212
- package/bundled-test-harness/assets/bxl-platform-module-test-BNIvlkCM.js +0 -71
- package/bundled-test-harness/assets/can-invoke-test-t-bFIIeX.js +0 -455
- package/bundled-test-harness/assets/can-read-realm-test-2Q_MzRT9.js +0 -56
- package/bundled-test-harness/assets/cancel-indexing-job-test-QeYxEukn.js +0 -69
- package/bundled-test-harness/assets/capture-test-CJmJG8YR.js +0 -360
- package/bundled-test-harness/assets/card-api-test-B43I510H.js +0 -198
- package/bundled-test-harness/assets/card-basics-test-CBClzP2y.js +0 -5364
- package/bundled-test-harness/assets/card-chooser-paging-test-HEVzf6pR.js +0 -235
- package/bundled-test-harness/assets/card-chooser-test-GfjBRPFI.js +0 -393
- package/bundled-test-harness/assets/card-context-search-results-CoSr4EdS.js +0 -30
- package/bundled-test-harness/assets/card-context-search-results-test-BLMlZu9t.js +0 -184
- package/bundled-test-harness/assets/card-def-field-def-relationships-test-DEBOzKan.js +0 -562
- package/bundled-test-harness/assets/card-def-menu-items-test-88_h8o0D.js +0 -228
- package/bundled-test-harness/assets/card-delete-test-DKom1phy.js +0 -466
- package/bundled-test-harness/assets/card-error-awaiting-index-test-DEwgFZMP.js +0 -53
- package/bundled-test-harness/assets/card-error-r6_cXst9.js +0 -72
- package/bundled-test-harness/assets/card-info-thumbnail-picker-test-B7LiY15e.js +0 -219
- package/bundled-test-harness/assets/card-playground-test-CgyIJHui.js +0 -1491
- package/bundled-test-harness/assets/card-prerender-rPfzpIOU.js +0 -12939
- package/bundled-test-harness/assets/card-thunk-error-test-L0pvg4Ce.js +0 -48
- package/bundled-test-harness/assets/card-type-service-test-B2dhqxSD.js +0 -161
- package/bundled-test-harness/assets/check-correctness-test-DgqaLlCW.js +0 -1093
- package/bundled-test-harness/assets/check-domain-availability-test-B0hJHY5l.js +0 -98
- package/bundled-test-harness/assets/chip-D01NW3WH.js +0 -44
- package/bundled-test-harness/assets/choreo-D2Jl79RU.js +0 -1019
- package/bundled-test-harness/assets/choreo-_E8SOEe-.js +0 -2
- package/bundled-test-harness/assets/choreo-feature-reel-test-WLjsZDmS.js +0 -155
- package/bundled-test-harness/assets/choreo-gallery-build-order-test-6jnS8PsS.js +0 -436
- package/bundled-test-harness/assets/choreo-gallery-compositor-test-CbUZsVB6.js +0 -399
- package/bundled-test-harness/assets/choreo-gallery-cover-test-CbvAStgk.js +0 -214
- package/bundled-test-harness/assets/choreo-gallery-crossing-stage-test-tdjvUSa6.js +0 -133
- package/bundled-test-harness/assets/choreo-gallery-demos-alive-test-CsnM3hQK.js +0 -42
- package/bundled-test-harness/assets/choreo-gallery-drift-test-DG2LQTa7.js +0 -620
- package/bundled-test-harness/assets/choreo-gallery-escort-test-mn3-qXP1.js +0 -187
- package/bundled-test-harness/assets/choreo-gallery-films-test-BuktaC0D.js +0 -140
- package/bundled-test-harness/assets/choreo-gallery-filter-test-Dd-zpps0.js +0 -46
- package/bundled-test-harness/assets/choreo-gallery-fold-test-CWc1ijGc.js +0 -180
- package/bundled-test-harness/assets/choreo-gallery-guide-pages-test-tk2QmYPU.js +0 -114
- package/bundled-test-harness/assets/choreo-gallery-guides-test-DVbf1zM4.js +0 -321
- package/bundled-test-harness/assets/choreo-gallery-hang-test-B7EFp2dx.js +0 -426
- package/bundled-test-harness/assets/choreo-gallery-highlight-test-BFgbdesP.js +0 -60
- package/bundled-test-harness/assets/choreo-gallery-inline-edit-test-DJb8FC5R.js +0 -370
- package/bundled-test-harness/assets/choreo-gallery-interruption-test-DWyMXo5D.js +0 -176
- package/bundled-test-harness/assets/choreo-gallery-lone-stack-test-D3b8LsJ6.js +0 -104
- package/bundled-test-harness/assets/choreo-gallery-navigation-test-CjjU6Rvn.js +0 -193
- package/bundled-test-harness/assets/choreo-gallery-playhead-transport-test-Le_h3QWU.js +0 -111
- package/bundled-test-harness/assets/choreo-gallery-poplayout-subtree-test-Cp-DlWj4.js +0 -127
- package/bundled-test-harness/assets/choreo-gallery-presence-modes-test-DayS4GCJ.js +0 -100
- package/bundled-test-harness/assets/choreo-gallery-presentation-test-DeAfuFS7.js +0 -157
- package/bundled-test-harness/assets/choreo-gallery-reduced-motion-test-BgPWpggq.js +0 -145
- package/bundled-test-harness/assets/choreo-gallery-sheet-standalone-test-PzyoMNYv.js +0 -89
- package/bundled-test-harness/assets/choreo-gallery-sheet-test-CxaiNBkL.js +0 -48
- package/bundled-test-harness/assets/choreo-gallery-site-test-6xtSntS5.js +0 -237
- package/bundled-test-harness/assets/choreo-gallery-stage-E6Q5r-zU.js +0 -256
- package/bundled-test-harness/assets/choreo-gallery-stage-keyboard-test-C7aWMr9a.js +0 -102
- package/bundled-test-harness/assets/choreo-gallery-stages-test-CDWWgC61.js +0 -35
- package/bundled-test-harness/assets/choreo-gallery-subdivision-test-Bkp15XJv.js +0 -138
- package/bundled-test-harness/assets/choreo-gallery-table-plan-test-CcGRi_3O.js +0 -144
- package/bundled-test-harness/assets/choreo-gallery-theater-test-Qph5pLT_.js +0 -252
- package/bundled-test-harness/assets/choreo-gallery-tuning-test-C4DhFLVA.js +0 -95
- package/bundled-test-harness/assets/choreo-gallery-widget-room-test-LK493r1M.js +0 -88
- package/bundled-test-harness/assets/choreo-gallery-wires-test-B7SeUCc8.js +0 -148
- package/bundled-test-harness/assets/client-telemetry-test-DGmHzAFx.js +0 -340
- package/bundled-test-harness/assets/clip-BpYQPVz_.js +0 -2
- package/bundled-test-harness/assets/clip-CNaYbIwL.js +0 -92
- package/bundled-test-harness/assets/code-block-Cp2CJo5-.js +0 -502
- package/bundled-test-harness/assets/code-ref-test-C8JBHDb-.js +0 -163
- package/bundled-test-harness/assets/code-submode-availability-test-CzG1Tv6L.js +0 -198
- package/bundled-test-harness/assets/code-submode-test-BclVWjm5.js +0 -1839
- package/bundled-test-harness/assets/codeblocks-test-CmQlyxN7.js +0 -418
- package/bundled-test-harness/assets/codemirror-editor-test-B74H_yn8.js +0 -1512
- package/bundled-test-harness/assets/codemirror-embed-toolbar-test-Bz6VEysU.js +0 -366
- package/bundled-test-harness/assets/color-field-test-DMCPQKIP.js +0 -212
- package/bundled-test-harness/assets/compaction-test-saQCLBrQ.js +0 -150
- package/bundled-test-harness/assets/computed-test-C05HliJC.js +0 -1320
- package/bundled-test-harness/assets/container-Cqcwrd-m.js +0 -10857
- package/bundled-test-harness/assets/container-h3Wc26qn.css +0 -5097
- package/bundled-test-harness/assets/content-preview-components-test-DZPj4_CU.js +0 -462
- package/bundled-test-harness/assets/copy-and-edit-test-DiXTQNTF.js +0 -292
- package/bundled-test-harness/assets/copy-card-test-ys7GquUY.js +0 -218
- package/bundled-test-harness/assets/copy-file-to-realm-test-Gn0Wn4vT.js +0 -148
- package/bundled-test-harness/assets/copy-source-test-BTLrOmPm.js +0 -56
- package/bundled-test-harness/assets/create-file-test-BCeIW-Rt.js +0 -464
- package/bundled-test-harness/assets/create-file-test-DbHQ5JsS.js +0 -1086
- package/bundled-test-harness/assets/create-listing-modal-test-CeHc4ter.js +0 -273
- package/bundled-test-harness/assets/create-listing-pr-request-test-DXbJNfMh.js +0 -117
- package/bundled-test-harness/assets/create-spec-test-BDIZoyHT.js +0 -256
- package/bundled-test-harness/assets/create-submission-workflow-test-Bix5J-3A.js +0 -132
- package/bundled-test-harness/assets/create-workspace-test-BmNnLHwC.js +0 -104
- package/bundled-test-harness/assets/credential-fields-test-NK1F4QWn.js +0 -200
- package/bundled-test-harness/assets/csv-file-def-test-BSfs4TTP.js +0 -102
- package/bundled-test-harness/assets/dashboard-C4T7ffKY.js +0 -3576
- package/bundled-test-harness/assets/dashboard-CFeHuP5-.js +0 -81
- package/bundled-test-harness/assets/dashboard-DQlpW-ux.css +0 -2392
- package/bundled-test-harness/assets/dashboard-add-workspace-test--rr6objf.js +0 -50
- package/bundled-test-harness/assets/dashboard-agents-test-D1y8H4xH.js +0 -334
- package/bundled-test-harness/assets/dashboard-archive-test-bN4EQaXv.js +0 -128
- package/bundled-test-harness/assets/dashboard-delete-test-BvsASb8B.js +0 -163
- package/bundled-test-harness/assets/dashboard-duplicate-offer-test-DEsd5ZzZ.js +0 -71
- package/bundled-test-harness/assets/dashboard-duplicate-test-BnR0sTgB.js +0 -222
- package/bundled-test-harness/assets/dashboard-get-started-test-DG4uUXLv.js +0 -246
- package/bundled-test-harness/assets/dashboard-pinned-cards-test-AoGGVRAS.js +0 -220
- package/bundled-test-harness/assets/dashboard-reindex-test-BN9a96Xp.js +0 -115
- package/bundled-test-harness/assets/dashboard-section-rail-test-B3OT9V2T.js +0 -169
- package/bundled-test-harness/assets/dashboard-state-test-BY0Zqrmj.js +0 -162
- package/bundled-test-harness/assets/dashboard-test-C13oNpWt.js +0 -545
- package/bundled-test-harness/assets/dashboard-unreachable-notice-test-DZIV4x5j.js +0 -62
- package/bundled-test-harness/assets/dashboard-workspace-test-CBnOQViI.js +0 -537
- package/bundled-test-harness/assets/dashboard-workspaces-section-test-KU8ZVOYp.js +0 -396
- package/bundled-test-harness/assets/data-file-def-preview-test-CI5gcdtK.js +0 -155
- package/bundled-test-harness/assets/date-time-fields-test-D2CpR_Pb.js +0 -359
- package/bundled-test-harness/assets/debug-message-test-Df1kHesw.js +0 -117
- package/bundled-test-harness/assets/declared-captures-test-hQ43zuox.js +0 -879
- package/bundled-test-harness/assets/delete-workspace-test-BhfMKsix.js +0 -102
- package/bundled-test-harness/assets/diffing-test-CHRh55mC.js +0 -210
- package/bundled-test-harness/assets/download-file-to-realm-test-CC1HURCi.js +0 -119
- package/bundled-test-harness/assets/editor-test-DkeCv28f.js +0 -688
- package/bundled-test-harness/assets/edits-BSJqtUXM.js +0 -651
- package/bundled-test-harness/assets/email-field-test-DihK0suO.js +0 -75
- package/bundled-test-harness/assets/enum-field-test-Gja3bzt5.js +0 -935
- package/bundled-test-harness/assets/error-display-test-GhYZu7cp.js +0 -343
- package/bundled-test-harness/assets/evaluate-module-test-D_t4CiUq.js +0 -91
- package/bundled-test-harness/assets/execute-atomic-operations-test-xtou8Zeg.js +0 -113
- package/bundled-test-harness/assets/externals-B02-sD_L.js +0 -4393
- package/bundled-test-harness/assets/fallback-banner-live-delete-test-DtxzNXdE.js +0 -207
- package/bundled-test-harness/assets/fallback-banner-test-BfmiQ_68.js +0 -53
- package/bundled-test-harness/assets/fallback-banner-test-DLtTdmvn.js +0 -225
- package/bundled-test-harness/assets/fallback-models-test-BxNJxhfd.js +0 -161
- package/bundled-test-harness/assets/fetch-card-json-test-DofKbzvC.js +0 -61
- package/bundled-test-harness/assets/field-configuration-test-SUoPaXWy.js +0 -551
- package/bundled-test-harness/assets/field-markdown-domain-test-BwtR0dPP.js +0 -616
- package/bundled-test-harness/assets/field-markdown-oversize-test-D8UJcBc3.js +0 -88
- package/bundled-test-harness/assets/field-markdown-primitives-test-D5_ZdoDO.js +0 -365
- package/bundled-test-harness/assets/field-markdown-specialized-test-Dpd5hs04.js +0 -534
- package/bundled-test-harness/assets/field-playground-test-CzhYzKGv.js +0 -894
- package/bundled-test-harness/assets/field-support-predicates-test-BSvVOFth.js +0 -167
- package/bundled-test-harness/assets/file-attachment-test-fM-yFedm.js +0 -796
- package/bundled-test-harness/assets/file-chooser-panel-test-CKj8YTdY.js +0 -153
- package/bundled-test-harness/assets/file-chooser-test-Bs8jFXqa.js +0 -504
- package/bundled-test-harness/assets/file-def-format-templates-test-CxrRoWoD.js +0 -380
- package/bundled-test-harness/assets/file-def-live-reload-test-X_8YEkve.js +0 -124
- package/bundled-test-harness/assets/file-def-menu-items-test-Dx879o_o.js +0 -138
- package/bundled-test-harness/assets/file-def-navigation-test-MMI_EEO1.js +0 -109
- package/bundled-test-harness/assets/file-def-serialization-test-B5lguBQD.js +0 -89
- package/bundled-test-harness/assets/file-def-test-Di9QWcrj.js +0 -216
- package/bundled-test-harness/assets/file-preview-live-reload-test-aqx93A7c.js +0 -310
- package/bundled-test-harness/assets/file-resource-primitives-test-a5abpcSB.js +0 -255
- package/bundled-test-harness/assets/file-tree-from-index-test-CnruGxJ8.js +0 -96
- package/bundled-test-harness/assets/file-tree-test-BCyWDdSE.js +0 -851
- package/bundled-test-harness/assets/file-view-model-test-BfpLa01Y.js +0 -346
- package/bundled-test-harness/assets/filedef-export-shape-test-CQ9XbrzS.js +0 -61
- package/bundled-test-harness/assets/film-CL1zj_bJ.js +0 -2
- package/bundled-test-harness/assets/film-Dq_quZ31.js +0 -13
- package/bundled-test-harness/assets/film-xbkQa060.js +0 -4074
- package/bundled-test-harness/assets/flac-audio-def-test-BmVp9dMx.js +0 -143
- package/bundled-test-harness/assets/focus-Dm4wkM72.js +0 -306
- package/bundled-test-harness/assets/font-metadata-extractor-test-OWEh9_MS.js +0 -415
- package/bundled-test-harness/assets/formatted-aibot-message-test-BpHsWpuV.js +0 -109
- package/bundled-test-harness/assets/formatted-user-message-test-DZW5TAr0.js +0 -43
- package/bundled-test-harness/assets/freestyle-test-D_uaPU_3.js +0 -17
- package/bundled-test-harness/assets/full-reindex-realm-test-C6vHL5kC.js +0 -101
- package/bundled-test-harness/assets/garbage-collection-test-D-Ao4t2n.js +0 -403
- package/bundled-test-harness/assets/general-test-PSGI8W0z.js +0 -923
- package/bundled-test-harness/assets/generate-example-cards-one-shot-test-J-m-0E6W.js +0 -65
- package/bundled-test-harness/assets/generic-file-def-preview-test-BAsOhTYU.js +0 -71
- package/bundled-test-harness/assets/get-available-realm-identifiers-test-D5PBOr97.js +0 -47
- package/bundled-test-harness/assets/get-catalog-realm-identifiers-test-NM9UURHE.js +0 -47
- package/bundled-test-harness/assets/get-default-writable-realm-test-BxXc9a3J.js +0 -54
- package/bundled-test-harness/assets/get-published-realms-test-C8TJEc4-.js +0 -71
- package/bundled-test-harness/assets/get-realm-of-resource-identifier-test-Dt8CB6lS.js +0 -54
- package/bundled-test-harness/assets/get-relationship-membership-state-test-9_8x3myJ.js +0 -1308
- package/bundled-test-harness/assets/get-user-system-card-test-k0UO-uba.js +0 -67
- package/bundled-test-harness/assets/gif-image-def-test-BWrqPGDX.js +0 -188
- package/bundled-test-harness/assets/glimmer-motion-and-choreo-in-cards-test-BgG8QI9E.js +0 -160
- package/bundled-test-harness/assets/glimmer-motion-and-choreo-test-BKOvNyCN.js +0 -74
- package/bundled-test-harness/assets/gts-file-def-test-BCRHwDeZ.js +0 -100
- package/bundled-test-harness/assets/head-format-preview-test-DnfUhniI.js +0 -158
- package/bundled-test-harness/assets/helpers-DklkegO_.js +0 -5
- package/bundled-test-harness/assets/host-mode-service-vOfN0smp.js +0 -232
- package/bundled-test-harness/assets/host-mode-test-CCCJFz6_.js +0 -831
- package/bundled-test-harness/assets/host-submode-test-CtCfbuPA.js +0 -1342
- package/bundled-test-harness/assets/html-component-test-CWyhb5ZX.js +0 -65
- package/bundled-test-harness/assets/html-def-test-Cb8C2lUx.js +0 -160
- package/bundled-test-harness/assets/html-meta-extractor-test-BHT9Rtir.js +0 -60
- package/bundled-test-harness/assets/hydratable-card-test-DpgpdesD.js +0 -426
- package/bundled-test-harness/assets/icon-button-ABCGVF3C.js +0 -67
- package/bundled-test-harness/assets/image-metadata-extractor-test-ClhPTouq.js +0 -1109
- package/bundled-test-harness/assets/index-changes-test-CgnVr3LH.js +0 -367
- package/bundled-test-harness/assets/index-query-engine-test-CQTwju5_.js +0 -2593
- package/bundled-test-harness/assets/index-writer-test-IoVOoZT2.js +0 -3040
- package/bundled-test-harness/assets/inspector-test-BN2Ieb77.js +0 -2058
- package/bundled-test-harness/assets/instance-filter-matcher-test-Bq-_Sy89.js +0 -788
- package/bundled-test-harness/assets/instantiate-card-test-DEeDTzFV.js +0 -164
- package/bundled-test-harness/assets/interact-submode-creation-and-permissions-test-DP6kOyJS.js +0 -475
- package/bundled-test-harness/assets/interact-submode-setup-B0_cHqH-.js +0 -566
- package/bundled-test-harness/assets/invalidate-realm-identifiers-test-9uUD91Pw.js +0 -99
- package/bundled-test-harness/assets/invite-user-to-room-test-CcDA45Ac.js +0 -142
- package/bundled-test-harness/assets/invoke-card-operation-test-DmUtgueM.js +0 -333
- package/bundled-test-harness/assets/isolated-render-test-B2eXNHu6.js +0 -51
- package/bundled-test-harness/assets/job-scoped-doc-cache-test-DF9D7cOc.js +0 -181
- package/bundled-test-harness/assets/job-scoped-instance-residency-test-CSS8xUU5.js +0 -103
- package/bundled-test-harness/assets/jpg-image-def-test-voECMTht.js +0 -697
- package/bundled-test-harness/assets/json-file-def-test-8Y4KLjUC.js +0 -95
- package/bundled-test-harness/assets/key-notices-badge-test-d1mYqx0e.js +0 -155
- package/bundled-test-harness/assets/key-readiness-test-BtCg7PCk.js +0 -190
- package/bundled-test-harness/assets/linksto-broken-link-placeholder-test-CyCMbJnN.js +0 -398
- package/bundled-test-harness/assets/linksto-error-sentinel-test-BDW572-v.js +0 -238
- package/bundled-test-harness/assets/linksto-many-broken-link-placeholder-test-B4wM97hD.js +0 -354
- package/bundled-test-harness/assets/linksto-many-per-slot-access-test-BhJmtJ0_.js +0 -303
- package/bundled-test-harness/assets/linksto-sentinel-reload-test-BpBQ5V_i.js +0 -197
- package/bundled-test-harness/assets/linksto-sentinel-roundtrip-test-pkBBl4e9.js +0 -260
- package/bundled-test-harness/assets/linksto-singular-js-access-contract-test-Bb6wjUdD.js +0 -196
- package/bundled-test-harness/assets/lint-and-fix-test-CcMLn-co.js +0 -51
- package/bundled-test-harness/assets/live-test-AyBnq7BX.js +0 -2
- package/bundled-test-harness/assets/live-test-CgnAcIDw.js +0 -100
- package/bundled-test-harness/assets/load-default-skills-test-BIOwtx0Y.js +0 -74
- package/bundled-test-harness/assets/loader-parallel-prefetch-test-D5_oRSER.js +0 -257
- package/bundled-test-harness/assets/loader-test-DSc_jR1c.js +0 -482
- package/bundled-test-harness/assets/loading-test-8pldx7S-.js +0 -63
- package/bundled-test-harness/assets/m4a-audio-def-test-BDI5apzM.js +0 -190
- package/bundled-test-harness/assets/main-5kHyCkdm.js +0 -5
- package/bundled-test-harness/assets/markdown-embed-chooser-modal-test-Wud0s7WZ.js +0 -470
- package/bundled-test-harness/assets/markdown-embed-chooser-test-DVzzS-0C.js +0 -334
- package/bundled-test-harness/assets/markdown-embed-preview-pane-test-B5W_iqsi.js +0 -447
- package/bundled-test-harness/assets/markdown-embed-preview-test-CZF_s0fB.js +0 -368
- package/bundled-test-harness/assets/markdown-fallback-test-fT6BS4W7.js +0 -316
- package/bundled-test-harness/assets/markdown-file-def-test-B1aTzazR.js +0 -380
- package/bundled-test-harness/assets/markdown-helpers-test-gNKZf7Mw.js +0 -188
- package/bundled-test-harness/assets/markdown-highlighting-test-Du5_CQmD.js +0 -244
- package/bundled-test-harness/assets/markdown-preview-h-_aJhRc.js +0 -72
- package/bundled-test-harness/assets/markdown-preview-test-DJvoVsXw.js +0 -238
- package/bundled-test-harness/assets/markdown-skill-frontmatter-test-VwJi3Paj.js +0 -146
- package/bundled-test-harness/assets/markdown-skill-search-test-ysCdf0xM.js +0 -80
- package/bundled-test-harness/assets/matrix-service-account-switch-sessions-test-K2JuMy36.js +0 -63
- package/bundled-test-harness/assets/matrix-service-boot-assembly-test-CkdL_-os.js +0 -300
- package/bundled-test-harness/assets/matrix-service-personal-realm-test-Dy1DultK.js +0 -125
- package/bundled-test-harness/assets/matrix-service-realm-servers-test-DHDDKuEg.js +0 -55
- package/bundled-test-harness/assets/matrix-service-realms-list-updated-test-DcTbZpMl.js +0 -132
- package/bundled-test-harness/assets/matrix-service-relogin-test-D3NQktoa.js +0 -59
- package/bundled-test-harness/assets/matrix-service-sliding-sync-test-6CAflWOA.js +0 -35
- package/bundled-test-harness/assets/menu-kUSaJIPq.js +0 -3562
- package/bundled-test-harness/assets/message-service-subscription-test-DaQdgDWi.js +0 -110
- package/bundled-test-harness/assets/message-service-test-BsGEgM_m.js +0 -144
- package/bundled-test-harness/assets/message-tool-test-BB_4kw1V.js +0 -33
- package/bundled-test-harness/assets/midi-audio-def-test-BbbkFjqf.js +0 -182
- package/bundled-test-harness/assets/migrate-skill-test-X9xImDuq.js +0 -161
- package/bundled-test-harness/assets/mini-AwF31elJ.js +0 -1404
- package/bundled-test-harness/assets/mini-card-chooser-test-BZtrEiWu.js +0 -272
- package/bundled-test-harness/assets/mini-file-chooser-test-MIHW3kCI.js +0 -201
- package/bundled-test-harness/assets/mock-matrix-Dd8k0DNa.js +0 -15107
- package/bundled-test-harness/assets/mock-matrix-DhPN_34j.js +0 -2
- package/bundled-test-harness/assets/modal-LTh3_oHK.js +0 -322
- package/bundled-test-harness/assets/model-cost-tier-test-h1IkU9mp.js +0 -174
- package/bundled-test-harness/assets/model-file-extract-test-ntSo0wZF.js +0 -206
- package/bundled-test-harness/assets/module-transpile-cache-test-CDeRaaeP.js +0 -67
- package/bundled-test-harness/assets/monaco-test-C0Fa744D.js +0 -100
- package/bundled-test-harness/assets/mp3-audio-def-test-B4j4qR9H.js +0 -133
- package/bundled-test-harness/assets/multiple-stacks-test-BhA25ywL.js +0 -208
- package/bundled-test-harness/assets/nested-query-field-render-test-S9Y8YNKB.js +0 -249
- package/bundled-test-harness/assets/no-stacks-test-B7VciWyg.js +0 -48
- package/bundled-test-harness/assets/number-field-test-CS74lDPN.js +0 -184
- package/bundled-test-harness/assets/office-file-def-test-2cKc1pmd.js +0 -263
- package/bundled-test-harness/assets/office-metadata-extractor-test-DC8Fo-OW.js +0 -218
- package/bundled-test-harness/assets/office-poster-capture-test-Ba0_5UrT.js +0 -203
- package/bundled-test-harness/assets/ogg-audio-def-test-CIPQ1d4w.js +0 -196
- package/bundled-test-harness/assets/open-create-listing-modal-test-bmQkY5Zl.js +0 -131
- package/bundled-test-harness/assets/open-image-in-new-tab-test-DBD7_vMH.js +0 -52
- package/bundled-test-harness/assets/open-secure-window-test-BgeuYAqz.js +0 -253
- package/bundled-test-harness/assets/open-workspace-test-DRHGljV0.js +0 -46
- package/bundled-test-harness/assets/operation-lowering-test-CH1c0pSH.js +0 -2957
- package/bundled-test-harness/assets/operations-invocation-test-B1YkCLrv.js +0 -523
- package/bundled-test-harness/assets/operations-optimistic-test-DAbtOwsC.js +0 -203
- package/bundled-test-harness/assets/operations-query-test-9p1ZIDe-.js +0 -459
- package/bundled-test-harness/assets/operations-store-reconciliation-test-D0EQh3w2.js +0 -406
- package/bundled-test-harness/assets/operations-test-BQhlrfe3.js +0 -2518
- package/bundled-test-harness/assets/operator-mode-acceptance-test-DtHnonEb.js +0 -1195
- package/bundled-test-harness/assets/operator-mode-card-chooser-test-DQUxZxaq.js +0 -1036
- package/bundled-test-harness/assets/operator-mode-links-test-BJ26HllS.js +0 -797
- package/bundled-test-harness/assets/operator-mode-test-DIPDI0qt.js +0 -696
- package/bundled-test-harness/assets/operator-mode-ui-test-CfA-fAh4.js +0 -1045
- package/bundled-test-harness/assets/overlay-DecPh3nt.js +0 -123
- package/bundled-test-harness/assets/overlay-menu-items-test-C6XqjLtu.js +0 -331
- package/bundled-test-harness/assets/overlays-Ctp8ePzZ.js +0 -75
- package/bundled-test-harness/assets/overlays-CzWpSg5T.js +0 -2
- package/bundled-test-harness/assets/overlays-detached-element-test-DvL_8Bb5.js +0 -56
- package/bundled-test-harness/assets/panel-CImumikB.js +0 -15124
- package/bundled-test-harness/assets/past-sessions-test-N6riGN_I.js +0 -321
- package/bundled-test-harness/assets/patch-fields-test-D30_-KwQ.js +0 -1014
- package/bundled-test-harness/assets/patch-instance-test-C5rGscZq.js +0 -348
- package/bundled-test-harness/assets/pdf-file-def-test-DtiqGRvZ.js +0 -111
- package/bundled-test-harness/assets/pdf-metadata-extractor-test-FU02KmdV.js +0 -130
- package/bundled-test-harness/assets/permission-checking-realm-test-DqdNJDwU.js +0 -306
- package/bundled-test-harness/assets/persist-module-inspector-view-test-BHOAgPVy.js +0 -60
- package/bundled-test-harness/assets/persist-scroll-position-test-qtmS518r.js +0 -254
- package/bundled-test-harness/assets/phone-number-field-test-DhdaM7uL.js +0 -73
- package/bundled-test-harness/assets/pill-menu-test-C9Mrrepl.js +0 -60
- package/bundled-test-harness/assets/plate-9n-sXyCw.js +0 -41
- package/bundled-test-harness/assets/plate-BnZcAk-_.js +0 -2
- package/bundled-test-harness/assets/player-Cu5b4LEJ.js +0 -82
- package/bundled-test-harness/assets/player-unk2mkxV.js +0 -2
- package/bundled-test-harness/assets/playground-BwA8wFGK.js +0 -58
- package/bundled-test-harness/assets/plural-field-components-test-CFNQKETg.js +0 -198
- package/bundled-test-harness/assets/png-image-def-test-DG5Vhlqb.js +0 -266
- package/bundled-test-harness/assets/policy-audit-confirmation-test-yfKU47LR.js +0 -155
- package/bundled-test-harness/assets/policy-scoped-search-test-BjQRDYqR.js +0 -339
- package/bundled-test-harness/assets/prerender-file-extract-test-CEU4SaAZ.js +0 -346
- package/bundled-test-harness/assets/prerender-html-test-CGB3ClCS.js +0 -670
- package/bundled-test-harness/assets/prerender-meta-test-xqc4fW_0.js +0 -614
- package/bundled-test-harness/assets/prerender-module-test-CI1TmZw-.js +0 -409
- package/bundled-test-harness/assets/prerender-persistence-block-test-Da0dJO_N.js +0 -124
- package/bundled-test-harness/assets/prerender-pre-model-error-test-BVLyhk8R.js +0 -61
- package/bundled-test-harness/assets/prerender-serialize-cycle-test-glJFfxHU.js +0 -134
- package/bundled-test-harness/assets/prerendered-html-read-test-Mp4L0VHQ.js +0 -191
- package/bundled-test-harness/assets/pretui-components-test-BBpA9UnA.js +0 -991
- package/bundled-test-harness/assets/pretui-components-test-BqFq7rw_.css +0 -730
- package/bundled-test-harness/assets/preview-format-test-C55Bwcur.js +0 -103
- package/bundled-test-harness/assets/preview-test-CTAhRGU8.js +0 -474
- package/bundled-test-harness/assets/process-card-test-UjqpuxB7.js +0 -94
- package/bundled-test-harness/assets/profile-settings-modal-C8bCgTMK.js +0 -989
- package/bundled-test-harness/assets/publish-realm-ixUB4FPK.js +0 -82
- package/bundled-test-harness/assets/publish-realm-test-CrrsdL4W.js +0 -210
- package/bundled-test-harness/assets/query-field-barrier-test-DjivFE93.js +0 -113
- package/bundled-test-harness/assets/query-field-error-sentinel-test-0HwnV4Mw.js +0 -201
- package/bundled-test-harness/assets/query-field-membership-status-test-C8yTTBkc.js +0 -323
- package/bundled-test-harness/assets/query-field-page-optin-test-D4l_GcII.js +0 -126
- package/bundled-test-harness/assets/query-field-schema-test-DDbcNNm5.js +0 -231
- package/bundled-test-harness/assets/query-field-search-throttle-test-CXp50Ax0.js +0 -154
- package/bundled-test-harness/assets/query-field-stale-prerender-test-DErzt-Cv.js +0 -152
- package/bundled-test-harness/assets/query-fields-test-Dz67fdSl.js +0 -535
- package/bundled-test-harness/assets/quick-look-test-B1ijDsh_.js +0 -139
- package/bundled-test-harness/assets/read-card-for-ai-assistant-test-DJxZ16H_.js +0 -91
- package/bundled-test-harness/assets/read-file-for-ai-assistant-test-BoRQkZ8c.js +0 -45
- package/bundled-test-harness/assets/read-source-test-Bl-NjchO.js +0 -67
- package/bundled-test-harness/assets/read-text-file-test-CP37CZoo.js +0 -124
- package/bundled-test-harness/assets/realm-CaK5mkT-.js +0 -2852
- package/bundled-test-harness/assets/realm-api-keys-BNUFWbGR.js +0 -579
- package/bundled-test-harness/assets/realm-api-keys-CkshxhXC.js +0 -2
- package/bundled-test-harness/assets/realm-api-keys-test-BP8xifjn.js +0 -109
- package/bundled-test-harness/assets/realm-api-keys-test-CwdK9YXp.js +0 -588
- package/bundled-test-harness/assets/realm-config-iKwE3Htp.js +0 -833
- package/bundled-test-harness/assets/realm-config-policy-standing-test-BgVEIDnB.js +0 -290
- package/bundled-test-harness/assets/realm-config-routing-rule-edit-test-BoJoKzmX.js +0 -274
- package/bundled-test-harness/assets/realm-config-settings-test-Kxw-GHye.js +0 -187
- package/bundled-test-harness/assets/realm-field-test-CdGOxrFb.js +0 -100
- package/bundled-test-harness/assets/realm-indexing-test-CHtsBV2b.js +0 -4380
- package/bundled-test-harness/assets/realm-policy-fitted-test--DhNZSdC.js +0 -206
- package/bundled-test-harness/assets/realm-policy-test-D7714iVa.js +0 -1141
- package/bundled-test-harness/assets/realm-querying-test-Cj1ekZ0H.js +0 -1067
- package/bundled-test-harness/assets/realm-server-form-agnostic-test-CZFPNJfD.js +0 -96
- package/bundled-test-harness/assets/realm-server-subscriber-test-C86WmBp0.js +0 -46
- package/bundled-test-harness/assets/realm-service-info-test-CdgcwKDR.js +0 -67
- package/bundled-test-harness/assets/realm-test-DPoLsvKz.js +0 -2364
- package/bundled-test-harness/assets/realm-token-refresh-test-Ch35Siwi.js +0 -153
- package/bundled-test-harness/assets/realm-url-tooltip-test-x8xWOENK.js +0 -78
- package/bundled-test-harness/assets/reasoning-test-BxpE8Jvf.js +0 -221
- package/bundled-test-harness/assets/recent-files-test-DTmEzPLq.js +0 -450
- package/bundled-test-harness/assets/reindex-realm-test-BQ8KULn4.js +0 -117
- package/bundled-test-harness/assets/relationship-loading-state-test-BJoArPWf.js +0 -290
- package/bundled-test-harness/assets/remix-card-test-DsTA1KoG.js +0 -58
- package/bundled-test-harness/assets/rendered-markdown-DvukulDO.js +0 -292
- package/bundled-test-harness/assets/rendered-markdown-test-DxGptXSV.js +0 -587
- package/bundled-test-harness/assets/resident-instance-reuse-test-ZWnVu8uj.js +0 -82
- package/bundled-test-harness/assets/result-tile-CPyI6Vmv.js +0 -144
- package/bundled-test-harness/assets/rich-markdown-field-test-CdygoXIO.js +0 -1647
- package/bundled-test-harness/assets/room-message-test-D3NfMqH0.js +0 -484
- package/bundled-test-harness/assets/run-D_Px28eF.js +0 -3956
- package/bundled-test-harness/assets/run-realm-code-qWCZxmJ7.js +0 -2964
- package/bundled-test-harness/assets/run-realm-code-test-UzyeEJq6.js +0 -3844
- package/bundled-test-harness/assets/sanitize-module-list-test-Babq44bP.js +0 -85
- package/bundled-test-harness/assets/save-card-skip-index-wait-test-BcELXlQ_.js +0 -89
- package/bundled-test-harness/assets/schema-editor-test-CEvruZbt.js +0 -785
- package/bundled-test-harness/assets/schema-generation-test-hYAMdCrn.js +0 -28
- package/bundled-test-harness/assets/scrolling-test-DVIsh-_1.js +0 -412
- package/bundled-test-harness/assets/search-adorn-test-CkVhqFd0.js +0 -136
- package/bundled-test-harness/assets/search-and-choose-test-DUhOB3FV.js +0 -154
- package/bundled-test-harness/assets/search-correlation-id-test-Drn4r26N.js +0 -139
- package/bundled-test-harness/assets/search-entries-result-test-DTCRJ_wc.js +0 -234
- package/bundled-test-harness/assets/search-entries-test-CE0B47pw.js +0 -1486
- package/bundled-test-harness/assets/search-entries-tool-test-C4aG0ckM.js +0 -504
- package/bundled-test-harness/assets/search-google-images-test-LyhcB2f3.js +0 -166
- package/bundled-test-harness/assets/search-results-D4pSne0x.js +0 -266
- package/bundled-test-harness/assets/search-results-test-CRZHhqhn.js +0 -578
- package/bundled-test-harness/assets/search-selection-menu-test-B7Y3E_nj.js +0 -108
- package/bundled-test-harness/assets/search-sheet-files-test-C2y534g8.js +0 -126
- package/bundled-test-harness/assets/search-sheet-persistence-test-DePC59Bk.js +0 -131
- package/bundled-test-harness/assets/search-test-Dy8NxFkU.js +0 -2249
- package/bundled-test-harness/assets/search-tool-test-lctDaMH3.js +0 -156
- package/bundled-test-harness/assets/searchable-option-test-CE64M8oM.js +0 -322
- package/bundled-test-harness/assets/searchable-search-doc-test-C6u3mVvT.js +0 -1271
- package/bundled-test-harness/assets/section-rail-B_UQX00B.js +0 -113
- package/bundled-test-harness/assets/section-rail-test-DIda7MIw.js +0 -256
- package/bundled-test-harness/assets/secure-sign-in-CqqqfQG8.js +0 -174
- package/bundled-test-harness/assets/secure-sign-in-test-DimbVr_W.js +0 -373
- package/bundled-test-harness/assets/segmented-control-iePxSdTS.js +0 -173
- package/bundled-test-harness/assets/select-tNs6_xwW.js +0 -175
- package/bundled-test-harness/assets/send-ai-assistant-message-test-2GVrMF9Z.js +0 -52
- package/bundled-test-harness/assets/send-bot-trigger-event-test-B_3dKfGN.js +0 -56
- package/bundled-test-harness/assets/send-request-via-proxy-test-_clNWyYc.js +0 -380
- package/bundled-test-harness/assets/sending-test-DCPFXUVg.js +0 -659
- package/bundled-test-harness/assets/serialization-rri-form-audit-test-BI0zCs8Y.js +0 -136
- package/bundled-test-harness/assets/serialization-test-bjdtVlZL.js +0 -8758
- package/bundled-test-harness/assets/set-user-system-card-test-BUv1vL08.js +0 -59
- package/bundled-test-harness/assets/setup-BW1mmC7C.js +0 -772
- package/bundled-test-harness/assets/setup-DsIcFT-T.js +0 -2
- package/bundled-test-harness/assets/shared-link-target-reuse-test-9NeJEjkb.js +0 -207
- package/bundled-test-harness/assets/show-card-test-mfyLwusD.js +0 -365
- package/bundled-test-harness/assets/signed-capture-link-test-BOtKNCAM.js +0 -132
- package/bundled-test-harness/assets/single-stack-test-B4MGjaLk.js +0 -652
- package/bundled-test-harness/assets/skills-test-BuP-Yzk1.js +0 -648
- package/bundled-test-harness/assets/skip-boot-index-guard-test-Cmrx2-K7.js +0 -46
- package/bundled-test-harness/assets/spec-test-BhZDdhVQ.js +0 -1077
- package/bundled-test-harness/assets/spinner-CpIBUG9m.js +0 -49
- package/bundled-test-harness/assets/src-DGHttmW-.js +0 -216
- package/bundled-test-harness/assets/src-DaNDSbp7.js +0 -5
- package/bundled-test-harness/assets/stick-to-bottom-resize-test-Dpy3OVum.js +0 -56
- package/bundled-test-harness/assets/store-add-test-_IYS8o74.js +0 -50
- package/bundled-test-harness/assets/store-module-rebuild-test-B5VMaICy.js +0 -454
- package/bundled-test-harness/assets/store-search-test-C2VZabrH.js +0 -175
- package/bundled-test-harness/assets/store-test-D6PObxoD.js +0 -3672
- package/bundled-test-harness/assets/structured-theme-test-BHjVeMf-.js +0 -377
- package/bundled-test-harness/assets/summarize-session-test-BFtTuhe0.js +0 -172
- package/bundled-test-harness/assets/svg-image-def-test-BL6lkWUX.js +0 -167
- package/bundled-test-harness/assets/switch-submode-test-6Uv3bZMl.js +0 -168
- package/bundled-test-harness/assets/sync-openrouter-models-test-Dp9E05tL.js +0 -97
- package/bundled-test-harness/assets/test-support-DYm8XZ0E.js +0 -3
- package/bundled-test-harness/assets/test-support-DfnhiIMV.js +0 -99
- package/bundled-test-harness/assets/tests-CZk0Iag2.js +0 -3596
- package/bundled-test-harness/assets/text-file-def-test-CHdC0yIU.js +0 -94
- package/bundled-test-harness/assets/text-input-validator-test-B9ZR8XPU.js +0 -156
- package/bundled-test-harness/assets/text-suggestion-test-CGLspKFQ.js +0 -340
- package/bundled-test-harness/assets/theme-card-test-CXZvSEvG.js +0 -621
- package/bundled-test-harness/assets/theme-dashboard-nav-test-CkEE0ILk.js +0 -196
- package/bundled-test-harness/assets/theme-scheme-island-test-URXTjipF.js +0 -264
- package/bundled-test-harness/assets/titles-C6enAdIv.js +0 -2
- package/bundled-test-harness/assets/titles-Dft1HoUT.js +0 -52
- package/bundled-test-harness/assets/to-device-streaming-test-D33ZOc9o.js +0 -163
- package/bundled-test-harness/assets/token-usage-test-BHQlU4J4.js +0 -160
- package/bundled-test-harness/assets/tools-CrudqfS3.js +0 -774
- package/bundled-test-harness/assets/tools-calling-test-jo7IREau.js +0 -200
- package/bundled-test-harness/assets/tools-test-D1wMfUa0.js +0 -1624
- package/bundled-test-harness/assets/tools-test-Dn1LYsXp.js +0 -3204
- package/bundled-test-harness/assets/tooltip-8Wyz4IIn.css +0 -68
- package/bundled-test-harness/assets/tooltip-CqwLzRz5.js +0 -134
- package/bundled-test-harness/assets/transform-cards-test-BPhwPFtp.js +0 -341
- package/bundled-test-harness/assets/ts-file-def-preview-test-Bq3zTgw8.js +0 -95
- package/bundled-test-harness/assets/ts-file-def-test-GLswMl7O.js +0 -92
- package/bundled-test-harness/assets/ttf-font-def-test-DQulvUWs.js +0 -206
- package/bundled-test-harness/assets/turn-settling-test-BspmOUQP.js +0 -160
- package/bundled-test-harness/assets/turn-summary-9A8nvC0-.js +0 -1039
- package/bundled-test-harness/assets/unpublish-realm-test-SkYPEhDz.js +0 -102
- package/bundled-test-harness/assets/update-room-skills-test-cTxb-WU6.js +0 -240
- package/bundled-test-harness/assets/use-ai-assistant-test-uaqW1T_A.js +0 -384
- package/bundled-test-harness/assets/user-message-BudkIP-3.js +0 -262
- package/bundled-test-harness/assets/validate-realm-test-DxrGgH9n.js +0 -67
- package/bundled-test-harness/assets/video-metadata-extractor-test-B2pe-Iqa.js +0 -520
- package/bundled-test-harness/assets/view-visually-test-PNon6fUo.js +0 -335
- package/bundled-test-harness/assets/virtual-network-reset-test-uYJLaQHf.js +0 -96
- package/bundled-test-harness/assets/wav-audio-def-test-F4OrFFR4.js +0 -160
- package/bundled-test-harness/assets/webp-image-def-test-B0a_-Vya.js +0 -226
- package/bundled-test-harness/assets/workspace-Cyftysy9.js +0 -440
- package/bundled-test-harness/assets/workspace-a11y-test-sKiPDcbl.js +0 -197
- package/bundled-test-harness/assets/workspace-actions-BuawjFmZ.js +0 -561
- package/bundled-test-harness/assets/workspace-behavior-test-CKa-pb3T.js +0 -338
- package/bundled-test-harness/assets/workspace-delete-multiple-test-Dt2weG5R.js +0 -212
- package/bundled-test-harness/assets/workspace-delete-summary-test-CkqgFqZ8.js +0 -63
- package/bundled-test-harness/assets/workspace-hosting-test-Ci7EEtHP.js +0 -138
- package/bundled-test-harness/assets/workspace-indexing-test-BPVxxY6W.js +0 -71
- package/bundled-test-harness/assets/workspace-test-CWr7vFbg.js +0 -385
- package/bundled-test-harness/assets/workspace-test-INNpQovc.js +0 -51
- package/bundled-test-harness/assets/workspace-timestamp-labels-test-CigQb5wr.js +0 -68
- package/bundled-test-harness/assets/workspace-unit-test-BwVKpuXT.js +0 -122
- package/bundled-test-harness/assets/write-binary-file-test-BKP3gv1k.js +0 -124
- package/bundled-test-harness/assets/write-text-file-test-B6ijTKTa.js +0 -191
- package/bundled-test-harness/assets/zip-archive-test-C-PBzkTn.js +0 -285
- package/bundled-test-harness/assets/zip-file-def-test-FyCzJT-9.js +0 -164
|
@@ -0,0 +1,3628 @@
|
|
|
1
|
+
import { r as __exportAll } from "./chunk-Rp0pCe6z.js";
|
|
2
|
+
import { n as decorateMethodV2, r as initializeDeferredDecorator, t as decorateFieldV2 } from "./runtime--fcdnjmJ-BoCBNIsz.js";
|
|
3
|
+
import { Fn as APP_BOXEL_ACTIVE_LLM, Gn as APP_BOXEL_LLM_MODE, Jo as isCardInstance, ks as logger, nr as APP_BOXEL_ROOM_SKILLS_EVENT_TYPE, pr as DEFAULT_FALLBACK_MODELS } from "./runtime-common-BTaLJEw-.js";
|
|
4
|
+
import { C as resolveRRIReference, T as rri } from "./paths-C9-NYXnM.js";
|
|
5
|
+
import { O as baseRealm } from "./constants-Icc0nFW-.js";
|
|
6
|
+
import { A as trimJsonExtension } from "./bfm-card-references-Cjos2rOp.js";
|
|
7
|
+
import { Vn as guidFor, et as tracked, wt as setComponentTemplate } from "./cache-DtDz7X5V-Wn8jRDfL.js";
|
|
8
|
+
import { d as action, r as service, t as Service } from "./service-LFpJ8EEP.js";
|
|
9
|
+
import { H as templateFactory, S as on, ht as typeOf } from "./index-DaCZcoCY-CgzbilMy.js";
|
|
10
|
+
import { n as src_default } from "./src-DPaAwa4H.js";
|
|
11
|
+
import { l as NewSessionIdPersistenceKey } from "./local-storage-keys-CS7XLz7J.js";
|
|
12
|
+
import { l as didCancel, n as buildTask } from "./async-arrow-runtime-STsj7E8Y.js";
|
|
13
|
+
import { t as cached } from "./tracking-CNiq91Pk.js";
|
|
14
|
+
import { i as fn, r as concat } from "./helper-BHX0HLF2.js";
|
|
15
|
+
import "./modifier-D0EP-FQ7.js";
|
|
16
|
+
import { n as Submodes, r as capitalize } from "./submode-switcher-BpDa9Rui.js";
|
|
17
|
+
import "./component-BJO47HTh.js";
|
|
18
|
+
import { t as Component } from "./dist-CkA1rgqO.js";
|
|
19
|
+
import { n as tracked$1, t as cached$1 } from "./tracking-800VJb8b.js";
|
|
20
|
+
import "./template-factory-ds9s0u8l.js";
|
|
21
|
+
import { t as templateOnly } from "./template-only-6nVzLWF-.js";
|
|
22
|
+
import { T as add, c as eq, f as not, it as cn_default, l as gt, z as css_var_default } from "./helpers-U4_dLjnS.js";
|
|
23
|
+
import { K as RealmIcon, mt as IconComponent$5, x as IconComponent$6 } from "./components-Ck24ubaT.js";
|
|
24
|
+
import { B as IconComponent$8, n as IconComponent$7 } from "./icons-Ctk-4xDe.js";
|
|
25
|
+
import { r as modifier } from "./dist-nMt-N14r.js";
|
|
26
|
+
import "./internals-BTorg710.js";
|
|
27
|
+
import { n as IconComponent$10, r as IconComponent$11, t as IconComponent$9 } from "./check-R9s-cqQx.js";
|
|
28
|
+
import { t as IconComponent$12 } from "./copy-CQfP-SsZ.js";
|
|
29
|
+
import { a as allSettled, r as timeout } from "./dist-DEVZvbin.js";
|
|
30
|
+
import { t as IconComponent$13 } from "./chevron-down-DUSOcdba.js";
|
|
31
|
+
import "./operator-mode-state-service-Bh__jfq7.js";
|
|
32
|
+
import { t as importResource } from "./import-B4ndFN20.js";
|
|
33
|
+
import { r as provide } from "./dist-Ble0L9o7.js";
|
|
34
|
+
import { t as SearchResults } from "./search-results-DGrNaPxh.js";
|
|
35
|
+
import { i as realmIdentifierSegments } from "./realm-utils-C4Js9BAW.js";
|
|
36
|
+
import { n as getSearchEntriesResource } from "./search-entries-0TMjLUAc.js";
|
|
37
|
+
import { n as isMatrixError } from "./matrix-utils-DgdkiqON.js";
|
|
38
|
+
import { t as CreateAiAssistantRoomTool } from "./create-ai-assistant-room-C41ylhDb.js";
|
|
39
|
+
import { t as SummarizeSessionTool } from "./summarize-session-Dy9LE5PI.js";
|
|
40
|
+
import { t as UpdateRoomSkillsTool } from "./update-room-skills-BmB0o3wG.js";
|
|
41
|
+
import { t as catalogRealmURL } from "./utils-DjDK6b6F.js";
|
|
42
|
+
import { a as resolveSize, i as firstDefined, o as resolveTone, r as emit } from "./pretui-primitives-CRs8NRm0.js";
|
|
43
|
+
import { t as Button } from "./button-BvYQm_A1.js";
|
|
44
|
+
import { a as resolveOpen, d as focusWhen, f as listen, g as rovingTabindex, r as modalBehavior, t as POPUPS_IN_PLACE } from "./overlay-D2rQi8lJ.js";
|
|
45
|
+
import { n as IconButton } from "./icon-button-C1zH38Nc.js";
|
|
46
|
+
import { t as VisuallyHidden } from "./visually-hidden-KvpJ_iic.js";
|
|
47
|
+
import { a as cssValue, i as cssStyleFrom, t as cssDeclaration } from "./pretui-css-BX-BJj3t.js";
|
|
48
|
+
import { t as RealmURLTooltip } from "./realm-url-tooltip-D2wwSzyR.js";
|
|
49
|
+
import { t as perform } from "./perform-g9ba6YNZ.js";
|
|
50
|
+
import { t as keepStyle } from "./keep-style-BE2XHAZs.js";
|
|
51
|
+
import { t as ProgressBar } from "./progress-bar-esZEZGws.js";
|
|
52
|
+
import { t as Spinner } from "./spinner-Bx9x55NA.js";
|
|
53
|
+
import { a as IconComponent$14, i as IconComponent$15, t as Menu } from "./menu-Cl50TSFe.js";
|
|
54
|
+
import { t as IconComponent$16 } from "./alert-triangle-W33oN1Fi.js";
|
|
55
|
+
import { n as IconComponent$17 } from "./play-CwV6e-PP.js";
|
|
56
|
+
import { n as ai_assist_icon_2x_default, t as SegmentedControl } from "./segmented-control-DxJdoJ4Z.js";
|
|
57
|
+
import { o as IconComponent$18 } from "./workspace-actions-jGJSfl8M.js";
|
|
58
|
+
import { a as nearestNavIndexInRow, c as unreachableRealmServersMessage, i as listedFavoriteRealmIdentifiers, l as wallpaperImage, n as isHostedRealm, o as orderedCatalogRealmURLs, r as isOffScreen } from "./workspace-list-7bSufR_6.js";
|
|
59
|
+
import { t as AddWorkspace } from "./add-workspace-CPnNIXS9.js";
|
|
60
|
+
import { t as Select } from "./select-BiQTg2ts.js";
|
|
61
|
+
import { t as IconComponent$19 } from "./settings-BMkO30Yi.js";
|
|
62
|
+
import { i as linkedIds, s as storiesFrom, t as LISTING_FIELDS } from "./catalog-stories-C4pan19Z.js";
|
|
63
|
+
import { a as fitPage, n as HostedPill, t as Workspace } from "./workspace-0LfPqbYB.js";
|
|
64
|
+
import { t as greetingFor } from "./greeting-CKacu-Rn.js";
|
|
65
|
+
//#region app/utils/titleize.ts
|
|
66
|
+
var titleize_exports = /* @__PURE__ */ __exportAll({ titleize: () => titleize });
|
|
67
|
+
function titleize(val) {
|
|
68
|
+
if (!val || typeOf(val) !== "string") return;
|
|
69
|
+
return (val.includes("-") ? val.split("-") : val.split(" ")).map((el) => capitalize(el)).join(" ");
|
|
70
|
+
}
|
|
71
|
+
//#endregion
|
|
72
|
+
//#region app/services/ai-assistant-panel-service.ts
|
|
73
|
+
var ai_assistant_panel_service_exports = /* @__PURE__ */ __exportAll({
|
|
74
|
+
NEW_SESSION_NAME: () => NEW_SESSION_NAME,
|
|
75
|
+
default: () => AiAssistantPanelService
|
|
76
|
+
});
|
|
77
|
+
var NEW_SESSION_NAME = "New AI Assistant Chat";
|
|
78
|
+
var AiAssistantPanelService = class extends Service {
|
|
79
|
+
static {
|
|
80
|
+
decorateFieldV2(this.prototype, "codeSemanticsService", [service]);
|
|
81
|
+
}
|
|
82
|
+
#codeSemanticsService = (initializeDeferredDecorator(this, "codeSemanticsService"), void 0);
|
|
83
|
+
static {
|
|
84
|
+
decorateFieldV2(this.prototype, "toolService", [service]);
|
|
85
|
+
}
|
|
86
|
+
#toolService = (initializeDeferredDecorator(this, "toolService"), void 0);
|
|
87
|
+
static {
|
|
88
|
+
decorateFieldV2(this.prototype, "matrixService", [service]);
|
|
89
|
+
}
|
|
90
|
+
#matrixService = (initializeDeferredDecorator(this, "matrixService"), void 0);
|
|
91
|
+
static {
|
|
92
|
+
decorateFieldV2(this.prototype, "monacoService", [service]);
|
|
93
|
+
}
|
|
94
|
+
#monacoService = (initializeDeferredDecorator(this, "monacoService"), void 0);
|
|
95
|
+
static {
|
|
96
|
+
decorateFieldV2(this.prototype, "operatorModeStateService", [service]);
|
|
97
|
+
}
|
|
98
|
+
#operatorModeStateService = (initializeDeferredDecorator(this, "operatorModeStateService"), void 0);
|
|
99
|
+
static {
|
|
100
|
+
decorateFieldV2(this.prototype, "localPersistenceService", [service]);
|
|
101
|
+
}
|
|
102
|
+
#localPersistenceService = (initializeDeferredDecorator(this, "localPersistenceService"), void 0);
|
|
103
|
+
static {
|
|
104
|
+
decorateFieldV2(this.prototype, "session", [service]);
|
|
105
|
+
}
|
|
106
|
+
#session = (initializeDeferredDecorator(this, "session"), void 0);
|
|
107
|
+
static {
|
|
108
|
+
decorateFieldV2(this.prototype, "store", [service]);
|
|
109
|
+
}
|
|
110
|
+
#store = (initializeDeferredDecorator(this, "store"), void 0);
|
|
111
|
+
static {
|
|
112
|
+
decorateFieldV2(this.prototype, "displayRoomError", [tracked$1], function() {
|
|
113
|
+
return false;
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
#displayRoomError = (initializeDeferredDecorator(this, "displayRoomError"), void 0);
|
|
117
|
+
static {
|
|
118
|
+
decorateFieldV2(this.prototype, "isShowingPastSessions", [tracked$1], function() {
|
|
119
|
+
return false;
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
#isShowingPastSessions = (initializeDeferredDecorator(this, "isShowingPastSessions"), void 0);
|
|
123
|
+
deletedRoomIds = /* @__PURE__ */ new Set();
|
|
124
|
+
static {
|
|
125
|
+
decorateFieldV2(this.prototype, "roomToRename", [tracked$1], function() {});
|
|
126
|
+
}
|
|
127
|
+
#roomToRename = (initializeDeferredDecorator(this, "roomToRename"), void 0);
|
|
128
|
+
static {
|
|
129
|
+
decorateFieldV2(this.prototype, "roomToDelete", [tracked$1], function() {});
|
|
130
|
+
}
|
|
131
|
+
#roomToDelete = (initializeDeferredDecorator(this, "roomToDelete"), void 0);
|
|
132
|
+
static {
|
|
133
|
+
decorateFieldV2(this.prototype, "roomDeleteError", [tracked$1], function() {});
|
|
134
|
+
}
|
|
135
|
+
#roomDeleteError = (initializeDeferredDecorator(this, "roomDeleteError"), void 0);
|
|
136
|
+
constructor(owner) {
|
|
137
|
+
super(owner);
|
|
138
|
+
this.resetState();
|
|
139
|
+
this.session.register(this);
|
|
140
|
+
}
|
|
141
|
+
sessionStarted() {
|
|
142
|
+
this.ensureRoomsLoaded();
|
|
143
|
+
}
|
|
144
|
+
ensureRoomsLoaded() {
|
|
145
|
+
if (!this.isOpen) return;
|
|
146
|
+
if (!this.matrixService.currentRoomId && !this.loadRoomsTask.isRunning) return this.loadRoomsTask.perform();
|
|
147
|
+
}
|
|
148
|
+
resetState() {
|
|
149
|
+
this.displayRoomError = false;
|
|
150
|
+
this.isShowingPastSessions = false;
|
|
151
|
+
this.roomToRename = void 0;
|
|
152
|
+
this.roomToDelete = void 0;
|
|
153
|
+
this.roomDeleteError = void 0;
|
|
154
|
+
this.deletedRoomIds.clear();
|
|
155
|
+
src_default.localStorage.removeItem(NewSessionIdPersistenceKey);
|
|
156
|
+
this.loadRoomsTask.cancelAll();
|
|
157
|
+
this.doCreateRoom.cancelAll();
|
|
158
|
+
this.summarizeSessionTask.cancelAll();
|
|
159
|
+
this.copyFileHistoryTask.cancelAll();
|
|
160
|
+
this.prepareSessionContextTask.cancelAll();
|
|
161
|
+
}
|
|
162
|
+
commandModuleResource = importResource(this, () => "@cardstack/base/command");
|
|
163
|
+
get commandModule() {
|
|
164
|
+
if (this.commandModuleResource.error) throw new Error(`Error loading commandModule: ${JSON.stringify(this.commandModuleResource.error)}`);
|
|
165
|
+
if (!this.commandModuleResource.module) throw new Error(`bug: SkillConfigField has not loaded yet--make sure to await this.loaded before using the api`);
|
|
166
|
+
return this.commandModuleResource.module;
|
|
167
|
+
}
|
|
168
|
+
get isAiAssistantHidden() {
|
|
169
|
+
return this.operatorModeStateService.state.submode === Submodes.Host;
|
|
170
|
+
}
|
|
171
|
+
get isOpen() {
|
|
172
|
+
return this.operatorModeStateService.aiAssistantOpen && !this.isAiAssistantHidden;
|
|
173
|
+
}
|
|
174
|
+
get isFocusPillVisible() {
|
|
175
|
+
return !!this.focusPillLabel;
|
|
176
|
+
}
|
|
177
|
+
get focusPillLabel() {
|
|
178
|
+
if (this.operatorModeStateService.state.submode !== Submodes.Code) return;
|
|
179
|
+
let selectedCodeRef = this.codeSemanticsService.selectedCodeRef;
|
|
180
|
+
if (selectedCodeRef?.name) return selectedCodeRef?.name;
|
|
181
|
+
if (this.operatorModeStateService.isViewingCardInCodeMode) return "Card";
|
|
182
|
+
}
|
|
183
|
+
get focusPillItemType() {
|
|
184
|
+
if (this.operatorModeStateService.isViewingCardInCodeMode) return;
|
|
185
|
+
return titleize(this.operatorModeStateService.state.moduleInspector ?? "schema");
|
|
186
|
+
}
|
|
187
|
+
get focusPillFormat() {
|
|
188
|
+
const format = this.operatorModeStateService.currentViewingFormat;
|
|
189
|
+
if (!format) return;
|
|
190
|
+
return titleize(format);
|
|
191
|
+
}
|
|
192
|
+
get focusPillCodeRange() {
|
|
193
|
+
let selection = this.monacoService.trackedSelection;
|
|
194
|
+
if (!selection) return;
|
|
195
|
+
if (!(selection.startLineNumber !== selection.endLineNumber || selection.startColumn !== selection.endColumn)) return;
|
|
196
|
+
if (selection.startLineNumber === selection.endLineNumber) return `Line ${selection.startLineNumber}`;
|
|
197
|
+
return `Lines ${selection.startLineNumber}-${selection.endLineNumber}`;
|
|
198
|
+
}
|
|
199
|
+
get focusPillMetaPills() {
|
|
200
|
+
const metaPills = [];
|
|
201
|
+
const itemType = this.focusPillItemType;
|
|
202
|
+
if (itemType) metaPills.push(itemType);
|
|
203
|
+
const format = this.focusPillFormat;
|
|
204
|
+
if (format) metaPills.push(format);
|
|
205
|
+
const codeRange = this.focusPillCodeRange;
|
|
206
|
+
if (codeRange) metaPills.push(codeRange);
|
|
207
|
+
return metaPills;
|
|
208
|
+
}
|
|
209
|
+
openPanel() {
|
|
210
|
+
this.operatorModeStateService.openAiAssistant();
|
|
211
|
+
return this.loadRoomsTask.perform();
|
|
212
|
+
}
|
|
213
|
+
static {
|
|
214
|
+
decorateMethodV2(this.prototype, "openPanel", [action]);
|
|
215
|
+
}
|
|
216
|
+
closePanel() {
|
|
217
|
+
this.operatorModeStateService.closeAiAssistant();
|
|
218
|
+
}
|
|
219
|
+
static {
|
|
220
|
+
decorateMethodV2(this.prototype, "closePanel", [action]);
|
|
221
|
+
}
|
|
222
|
+
displayPastSessions() {
|
|
223
|
+
this.isShowingPastSessions = true;
|
|
224
|
+
}
|
|
225
|
+
static {
|
|
226
|
+
decorateMethodV2(this.prototype, "displayPastSessions", [action]);
|
|
227
|
+
}
|
|
228
|
+
hidePastSessions() {
|
|
229
|
+
this.isShowingPastSessions = false;
|
|
230
|
+
}
|
|
231
|
+
static {
|
|
232
|
+
decorateMethodV2(this.prototype, "hidePastSessions", [action]);
|
|
233
|
+
}
|
|
234
|
+
enterRoom(roomId, hidePastSessionsList = true) {
|
|
235
|
+
this.matrixService.currentRoomId = roomId;
|
|
236
|
+
this.localPersistenceService.setCurrentRoomId(roomId);
|
|
237
|
+
if (hidePastSessionsList) this.hidePastSessions();
|
|
238
|
+
}
|
|
239
|
+
static {
|
|
240
|
+
decorateMethodV2(this.prototype, "enterRoom", [action]);
|
|
241
|
+
}
|
|
242
|
+
async openNewSession() {
|
|
243
|
+
try {
|
|
244
|
+
await this.openPanel();
|
|
245
|
+
await this.createNewSession();
|
|
246
|
+
} catch (error) {
|
|
247
|
+
if (!didCancel(error)) throw error;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
async createNewSession(opts = {
|
|
251
|
+
addSameSkills: false,
|
|
252
|
+
shouldCopyFileHistory: false,
|
|
253
|
+
shouldSummarizeSession: false
|
|
254
|
+
}) {
|
|
255
|
+
this.displayRoomError = false;
|
|
256
|
+
if (this.newSessionId && !opts.addSameSkills && !opts.shouldSummarizeSession && !opts.shouldCopyFileHistory) {
|
|
257
|
+
this.enterRoom(this.newSessionId);
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
260
|
+
await this.doCreateRoom.perform(NEW_SESSION_NAME, opts);
|
|
261
|
+
}
|
|
262
|
+
static {
|
|
263
|
+
decorateMethodV2(this.prototype, "createNewSession", [action]);
|
|
264
|
+
}
|
|
265
|
+
get newSessionId() {
|
|
266
|
+
let id = src_default.localStorage.getItem(NewSessionIdPersistenceKey);
|
|
267
|
+
if (id && this.matrixService.roomResources.has(id) && this.matrixService.roomResources.get(id)?.messages.length === 0) return id;
|
|
268
|
+
}
|
|
269
|
+
get isCreateRoomIdle() {
|
|
270
|
+
return this.doCreateRoom.isIdle;
|
|
271
|
+
}
|
|
272
|
+
get currentRoomResource() {
|
|
273
|
+
if (!this.matrixService.currentRoomId) return;
|
|
274
|
+
return this.matrixService.roomResources.get(this.matrixService.currentRoomId);
|
|
275
|
+
}
|
|
276
|
+
extractSkillIdsFromCurrentRoom() {
|
|
277
|
+
let skillConfig = this.currentRoomResource?.matrixRoom?.skillsConfig;
|
|
278
|
+
let toIds = (fileDefs) => (fileDefs ?? []).map((fileDef) => fileDef.sourceUrl).filter((id) => Boolean(id));
|
|
279
|
+
return {
|
|
280
|
+
enabledSkillIds: toIds(skillConfig?.enabledSkillCards),
|
|
281
|
+
disabledSkillIds: toIds(skillConfig?.disabledSkillCards)
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
getPreferredLLMMode() {
|
|
285
|
+
let currentMode = this.currentRoomResource?.activeLLMMode;
|
|
286
|
+
if (currentMode) return currentMode;
|
|
287
|
+
let latestRoom = this.latestRoom;
|
|
288
|
+
if (!latestRoom) return;
|
|
289
|
+
return this.matrixService.roomResources.get(latestRoom.roomId)?.activeLLMMode;
|
|
290
|
+
}
|
|
291
|
+
collectFileHistory(roomId) {
|
|
292
|
+
if (!roomId) return {
|
|
293
|
+
attachedFiles: [],
|
|
294
|
+
attachedCards: []
|
|
295
|
+
};
|
|
296
|
+
const roomResource = this.matrixService.roomResources.get(roomId);
|
|
297
|
+
if (!roomResource) return {
|
|
298
|
+
attachedFiles: [],
|
|
299
|
+
attachedCards: []
|
|
300
|
+
};
|
|
301
|
+
const seenFileUrls = /* @__PURE__ */ new Set();
|
|
302
|
+
const seenCardUrls = /* @__PURE__ */ new Set();
|
|
303
|
+
const attachedFiles = [];
|
|
304
|
+
const attachedCards = [];
|
|
305
|
+
for (const message of roomResource.messages) {
|
|
306
|
+
if (message.attachedFiles) {
|
|
307
|
+
for (const file of message.attachedFiles) if (file.sourceUrl && !seenFileUrls.has(file.sourceUrl)) {
|
|
308
|
+
seenFileUrls.add(file.sourceUrl);
|
|
309
|
+
attachedFiles.push(file);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
if (message.attachedCardIds) {
|
|
313
|
+
for (const cardId of message.attachedCardIds) if (cardId && !seenCardUrls.has(cardId)) {
|
|
314
|
+
seenCardUrls.add(cardId);
|
|
315
|
+
const card = this.store.peek(cardId);
|
|
316
|
+
if (card && isCardInstance(card)) attachedCards.push(card);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
return {
|
|
321
|
+
attachedFiles,
|
|
322
|
+
attachedCards
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
doCreateRoom = buildTask(() => ({
|
|
326
|
+
context: this,
|
|
327
|
+
generator: function* (name = NEW_SESSION_NAME, opts) {
|
|
328
|
+
let { addSameSkills, shouldCopyFileHistory, shouldSummarizeSession, deferDefaultSkills } = opts;
|
|
329
|
+
try {
|
|
330
|
+
let roomId;
|
|
331
|
+
let oldRoomId = this.matrixService.currentRoomId;
|
|
332
|
+
if (deferDefaultSkills) roomId = yield this.createFallbackRoom(name);
|
|
333
|
+
else {
|
|
334
|
+
let createRoomCommand = new CreateAiAssistantRoomTool(this.toolService.toolContext);
|
|
335
|
+
let input = { name };
|
|
336
|
+
let llmMode = this.getPreferredLLMMode();
|
|
337
|
+
if (llmMode) input.llmMode = llmMode;
|
|
338
|
+
let enabledSkillIds = [];
|
|
339
|
+
let disabledSkillIds = [];
|
|
340
|
+
if (addSameSkills) ({enabledSkillIds, disabledSkillIds} = this.extractSkillIdsFromCurrentRoom());
|
|
341
|
+
if (enabledSkillIds.length || disabledSkillIds.length) {
|
|
342
|
+
input.enabledSkillIds = enabledSkillIds;
|
|
343
|
+
input.disabledSkillIds = disabledSkillIds;
|
|
344
|
+
} else input.enabledSkillIds = yield this.matrixService.loadDefaultSkills();
|
|
345
|
+
({roomId} = yield createRoomCommand.execute(input));
|
|
346
|
+
}
|
|
347
|
+
src_default.localStorage.setItem(NewSessionIdPersistenceKey, roomId);
|
|
348
|
+
this.enterRoom(roomId);
|
|
349
|
+
if (deferDefaultSkills) this.applyDefaultSkillsToRoom(roomId);
|
|
350
|
+
if (oldRoomId && (shouldSummarizeSession || shouldCopyFileHistory)) this.prepareSessionContextTask.perform(oldRoomId, roomId, {
|
|
351
|
+
shouldSummarizeSession,
|
|
352
|
+
shouldCopyFileHistory
|
|
353
|
+
});
|
|
354
|
+
} catch (e) {
|
|
355
|
+
console.error(e);
|
|
356
|
+
this.displayRoomError = true;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}), null, "doCreateRoom", "restartable");
|
|
360
|
+
async createFallbackRoom(name) {
|
|
361
|
+
let userId = this.matrixService.userId;
|
|
362
|
+
if (!userId) throw new Error("Requires userId to create a fallback room");
|
|
363
|
+
let aiBotFullId = this.matrixService.aiBotUserId;
|
|
364
|
+
let llmMode = this.getPreferredLLMMode();
|
|
365
|
+
let systemCard = this.matrixService.systemCard;
|
|
366
|
+
let configuration = systemCard?.defaultModelConfiguration ?? systemCard?.modelConfigurations?.[0];
|
|
367
|
+
let model = configuration?.modelId ?? "anthropic/claude-haiku-5.5";
|
|
368
|
+
let fallback = DEFAULT_FALLBACK_MODELS.find((m) => m.modelId === model);
|
|
369
|
+
let roomPromise = this.matrixService.createRoom({
|
|
370
|
+
preset: this.matrixService.privateChatPreset,
|
|
371
|
+
invite: [aiBotFullId],
|
|
372
|
+
name,
|
|
373
|
+
room_alias_name: encodeURIComponent(`${name} - ${(/* @__PURE__ */ new Date()).toISOString()} - ${userId}`),
|
|
374
|
+
power_level_content_override: { users: {
|
|
375
|
+
[userId]: 100,
|
|
376
|
+
[aiBotFullId]: this.matrixService.aiBotPowerLevel
|
|
377
|
+
} },
|
|
378
|
+
initial_state: [
|
|
379
|
+
{
|
|
380
|
+
type: APP_BOXEL_ACTIVE_LLM,
|
|
381
|
+
content: {
|
|
382
|
+
model,
|
|
383
|
+
toolsSupported: configuration?.toolsSupported ?? fallback?.toolsSupported ?? false,
|
|
384
|
+
inputModalities: configuration?.inputModalities ?? fallback?.inputModalities,
|
|
385
|
+
reasoningEffort: configuration?.reasoningEffort ?? void 0
|
|
386
|
+
}
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
type: APP_BOXEL_LLM_MODE,
|
|
390
|
+
content: { mode: llmMode || "ask" }
|
|
391
|
+
},
|
|
392
|
+
{
|
|
393
|
+
type: APP_BOXEL_ROOM_SKILLS_EVENT_TYPE,
|
|
394
|
+
content: {
|
|
395
|
+
enabledSkillCards: [],
|
|
396
|
+
disabledSkillCards: [],
|
|
397
|
+
toolDefinitions: []
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
]
|
|
401
|
+
});
|
|
402
|
+
let timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(/* @__PURE__ */ new Error("Room creation timed out waiting for sync")), 3e4));
|
|
403
|
+
let { room_id: roomId } = await Promise.race([roomPromise, timeoutPromise]);
|
|
404
|
+
return roomId;
|
|
405
|
+
}
|
|
406
|
+
async applyDefaultSkillsToRoom(roomId) {
|
|
407
|
+
try {
|
|
408
|
+
let skillIds = await this.matrixService.loadDefaultSkills();
|
|
409
|
+
if (!skillIds.length) return;
|
|
410
|
+
await new UpdateRoomSkillsTool(this.toolService.toolContext).execute({
|
|
411
|
+
roomId,
|
|
412
|
+
skillCardIdsToActivate: skillIds
|
|
413
|
+
});
|
|
414
|
+
} catch (e) {
|
|
415
|
+
console.error("Failed to apply default skills to room:", e);
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
summarizeSessionTask = buildTask(() => ({
|
|
419
|
+
context: this,
|
|
420
|
+
generator: function* (oldRoomId, newRoomId) {
|
|
421
|
+
try {
|
|
422
|
+
const result = yield new SummarizeSessionTool(this.toolService.toolContext).execute({ roomId: oldRoomId });
|
|
423
|
+
if (!result.summary) return;
|
|
424
|
+
const messageContent = `This is a summary of the previous conversation that should be included as context for our discussion:\n\n${result.summary}`;
|
|
425
|
+
yield this.matrixService.sendMessage(newRoomId, messageContent, [], []);
|
|
426
|
+
} catch (error) {
|
|
427
|
+
console.error("Failed to summarize session:", error);
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
}), null, "summarizeSessionTask", "restartable");
|
|
431
|
+
copyFileHistoryTask = buildTask(() => ({
|
|
432
|
+
context: this,
|
|
433
|
+
generator: function* (oldRoomId, roomId) {
|
|
434
|
+
try {
|
|
435
|
+
const { attachedCards, attachedFiles } = this.collectFileHistory(oldRoomId);
|
|
436
|
+
if (attachedFiles.length > 0 || attachedCards.length > 0) yield this.matrixService.sendMessage(roomId, "This session includes files and cards from the previous conversation for context.", attachedCards, attachedFiles);
|
|
437
|
+
} catch (error) {
|
|
438
|
+
console.error("Failed to copy file history:", error);
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
}), null, "copyFileHistoryTask", "restartable");
|
|
442
|
+
prepareSessionContextTask = buildTask(() => ({
|
|
443
|
+
context: this,
|
|
444
|
+
generator: function* (oldRoomId, newRoomId, opts) {
|
|
445
|
+
const { shouldSummarizeSession, shouldCopyFileHistory } = opts;
|
|
446
|
+
if (shouldSummarizeSession) yield this.summarizeSessionTask.perform(oldRoomId, newRoomId);
|
|
447
|
+
if (shouldCopyFileHistory) yield this.copyFileHistoryTask.perform(oldRoomId, newRoomId);
|
|
448
|
+
}
|
|
449
|
+
}), null, "prepareSessionContextTask", "restartable");
|
|
450
|
+
get isSummarizingSession() {
|
|
451
|
+
return this.summarizeSessionTask.isRunning;
|
|
452
|
+
}
|
|
453
|
+
get isCopyingFileHistory() {
|
|
454
|
+
return this.copyFileHistoryTask.isRunning;
|
|
455
|
+
}
|
|
456
|
+
get isPreparingSession() {
|
|
457
|
+
return this.isSummarizingSession || this.isCopyingFileHistory;
|
|
458
|
+
}
|
|
459
|
+
skipSessionPreparation() {
|
|
460
|
+
this.summarizeSessionTask.cancelAll();
|
|
461
|
+
this.copyFileHistoryTask.cancelAll();
|
|
462
|
+
this.prepareSessionContextTask.cancelAll();
|
|
463
|
+
}
|
|
464
|
+
static {
|
|
465
|
+
decorateMethodV2(this.prototype, "skipSessionPreparation", [action]);
|
|
466
|
+
}
|
|
467
|
+
get loadingRooms() {
|
|
468
|
+
return this.loadRoomsTask.isRunning;
|
|
469
|
+
}
|
|
470
|
+
async waitForSessionRooms() {
|
|
471
|
+
await this.matrixService.waitForInitialSync();
|
|
472
|
+
await this.matrixService.flushAll;
|
|
473
|
+
await allSettled([...this.matrixService.roomResources.values()].map((r) => r.processing));
|
|
474
|
+
}
|
|
475
|
+
loadRoomsTask = buildTask(() => ({
|
|
476
|
+
context: this,
|
|
477
|
+
generator: function* () {
|
|
478
|
+
yield this.waitForSessionRooms();
|
|
479
|
+
yield this.enterRoomInitially();
|
|
480
|
+
}
|
|
481
|
+
}), null, "loadRoomsTask", "restartable");
|
|
482
|
+
async enterRoomInitially() {
|
|
483
|
+
let persistedRoomId = this.localPersistenceService.getCurrentRoomId();
|
|
484
|
+
if (persistedRoomId) {
|
|
485
|
+
let roomToEnter = this.aiSessionRooms.find((r) => r.roomId === persistedRoomId);
|
|
486
|
+
if (!roomToEnter) {
|
|
487
|
+
let interval;
|
|
488
|
+
try {
|
|
489
|
+
await Promise.race([timeout(2e3), new Promise((resolve) => {
|
|
490
|
+
interval = src_default.setInterval(() => {
|
|
491
|
+
roomToEnter = this.aiSessionRooms.find((r) => r.roomId === persistedRoomId);
|
|
492
|
+
if (roomToEnter) {
|
|
493
|
+
if (interval !== void 0) {
|
|
494
|
+
src_default.clearInterval(interval);
|
|
495
|
+
interval = void 0;
|
|
496
|
+
}
|
|
497
|
+
resolve();
|
|
498
|
+
}
|
|
499
|
+
}, 250);
|
|
500
|
+
})]);
|
|
501
|
+
} finally {
|
|
502
|
+
if (interval !== void 0) src_default.clearInterval(interval);
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
if (roomToEnter) {
|
|
506
|
+
this.enterRoom(roomToEnter.roomId);
|
|
507
|
+
return;
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
let latestRoom = this.latestRoom;
|
|
511
|
+
if (latestRoom) {
|
|
512
|
+
this.enterRoom(latestRoom.roomId);
|
|
513
|
+
return;
|
|
514
|
+
}
|
|
515
|
+
await this.createNewSession();
|
|
516
|
+
}
|
|
517
|
+
get aiSessionRooms() {
|
|
518
|
+
let sessions = [];
|
|
519
|
+
for (let resource of this.matrixService.roomResources.values()) {
|
|
520
|
+
if (!resource.matrixRoom) continue;
|
|
521
|
+
if (!resource.matrixRoom.hasActiveMember(this.matrixService.aiBotUserId)) continue;
|
|
522
|
+
if (resource.roomId && this.deletedRoomIds.has(resource.roomId)) continue;
|
|
523
|
+
if (this.matrixService.userId && !resource.matrixRoom.hasActiveMember(this.matrixService.userId)) continue;
|
|
524
|
+
if (resource.name && resource.roomId) sessions.push({
|
|
525
|
+
roomId: resource.roomId,
|
|
526
|
+
name: resource.name,
|
|
527
|
+
lastMessage: resource.messages[resource.messages.length - 1],
|
|
528
|
+
created: resource.created,
|
|
529
|
+
lastActiveTimestamp: resource.lastActiveTimestamp
|
|
530
|
+
});
|
|
531
|
+
}
|
|
532
|
+
return sessions.sort((a, b) => this.matrixService.getLastActiveTimestamp(b.roomId, b.lastActiveTimestamp) - this.matrixService.getLastActiveTimestamp(a.roomId, a.lastActiveTimestamp));
|
|
533
|
+
}
|
|
534
|
+
get latestRoom() {
|
|
535
|
+
if (this.aiSessionRooms.length !== 0) return this.aiSessionRooms[0];
|
|
536
|
+
}
|
|
537
|
+
setRoomToRename(room) {
|
|
538
|
+
this.roomToRename = room;
|
|
539
|
+
this.hidePastSessions();
|
|
540
|
+
}
|
|
541
|
+
static {
|
|
542
|
+
decorateMethodV2(this.prototype, "setRoomToRename", [action]);
|
|
543
|
+
}
|
|
544
|
+
onCloseRename() {
|
|
545
|
+
this.roomToRename = void 0;
|
|
546
|
+
this.displayPastSessions();
|
|
547
|
+
}
|
|
548
|
+
static {
|
|
549
|
+
decorateMethodV2(this.prototype, "onCloseRename", [action]);
|
|
550
|
+
}
|
|
551
|
+
setRoomToDelete(room) {
|
|
552
|
+
this.roomDeleteError = void 0;
|
|
553
|
+
if (!room) {
|
|
554
|
+
this.roomToDelete = void 0;
|
|
555
|
+
return;
|
|
556
|
+
}
|
|
557
|
+
this.roomToDelete = {
|
|
558
|
+
id: room.roomId,
|
|
559
|
+
name: room.name || room.roomId
|
|
560
|
+
};
|
|
561
|
+
}
|
|
562
|
+
static {
|
|
563
|
+
decorateMethodV2(this.prototype, "setRoomToDelete", [action]);
|
|
564
|
+
}
|
|
565
|
+
leaveRoom(roomId) {
|
|
566
|
+
this.doLeaveRoom.perform(roomId);
|
|
567
|
+
}
|
|
568
|
+
static {
|
|
569
|
+
decorateMethodV2(this.prototype, "leaveRoom", [action]);
|
|
570
|
+
}
|
|
571
|
+
doLeaveRoom = buildTask(() => ({
|
|
572
|
+
context: this,
|
|
573
|
+
generator: function* (roomId) {
|
|
574
|
+
try {
|
|
575
|
+
this.deletedRoomIds.add(roomId);
|
|
576
|
+
this.matrixService.roomResourcesCache.delete(roomId);
|
|
577
|
+
if (src_default.localStorage.getItem("aiPanelNewSessionId") === roomId) src_default.localStorage.removeItem(NewSessionIdPersistenceKey);
|
|
578
|
+
if (this.matrixService.currentRoomId === roomId) {
|
|
579
|
+
this.localPersistenceService.setCurrentRoomId(void 0);
|
|
580
|
+
if (this.latestRoom) this.enterRoom(this.latestRoom.roomId, false);
|
|
581
|
+
else yield this.createNewSession({
|
|
582
|
+
addSameSkills: false,
|
|
583
|
+
shouldCopyFileHistory: false,
|
|
584
|
+
shouldSummarizeSession: false,
|
|
585
|
+
deferDefaultSkills: true
|
|
586
|
+
});
|
|
587
|
+
}
|
|
588
|
+
this.roomToDelete = void 0;
|
|
589
|
+
yield this.matrixService.leave(roomId);
|
|
590
|
+
yield this.matrixService.forget(roomId);
|
|
591
|
+
} catch (e) {
|
|
592
|
+
this.deletedRoomIds.delete(roomId);
|
|
593
|
+
console.error(e);
|
|
594
|
+
this.roomDeleteError = "Error deleting room";
|
|
595
|
+
if (isMatrixError(e)) this.roomDeleteError += `: ${e.data.error}`;
|
|
596
|
+
else if (e instanceof Error) this.roomDeleteError += `: ${e.message}`;
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
}), null, "doLeaveRoom", "restartable");
|
|
600
|
+
};
|
|
601
|
+
//#endregion
|
|
602
|
+
//#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/bot.js
|
|
603
|
+
var IconComponent$4 = setComponentTemplate(templateFactory({
|
|
604
|
+
"id": "i3vJib5D",
|
|
605
|
+
"block": "[[[1,\"\\n \"],[11,\"svg\"],[24,\"xmlns\",\"http://www.w3.org/2000/svg\",\"http://www.w3.org/2000/xmlns/\"],[24,\"width\",\"24\"],[24,\"height\",\"24\"],[24,\"fill\",\"none\"],[24,\"stroke\",\"currentColor\"],[24,\"stroke-linecap\",\"round\"],[24,\"stroke-linejoin\",\"round\"],[24,\"stroke-width\",\"2\"],[24,0,\"lucide lucide-bot\"],[24,\"viewBox\",\"0 0 24 24\"],[17,1],[12],[10,\"path\"],[14,\"d\",\"M12 8V4H8\"],[12],[13],[10,\"rect\"],[14,\"width\",\"16\"],[14,\"height\",\"12\"],[14,\"x\",\"4\"],[14,\"y\",\"8\"],[14,\"rx\",\"2\"],[12],[13],[10,\"path\"],[14,\"d\",\"M2 14h2M20 14h2M15 13v2M9 13v2\"],[12],[13],[13],[1,\"\\n\"]],[\"&attrs\"],[]]",
|
|
606
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/bot.gts",
|
|
607
|
+
"isStrictMode": true
|
|
608
|
+
}), templateOnly());
|
|
609
|
+
IconComponent$4.name = "bot";
|
|
610
|
+
//#endregion
|
|
611
|
+
//#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/store.js
|
|
612
|
+
var IconComponent$3 = setComponentTemplate(templateFactory({
|
|
613
|
+
"id": "oBsj54YK",
|
|
614
|
+
"block": "[[[1,\"\\n \"],[11,\"svg\"],[24,\"xmlns\",\"http://www.w3.org/2000/svg\",\"http://www.w3.org/2000/xmlns/\"],[24,\"width\",\"24\"],[24,\"height\",\"24\"],[24,\"fill\",\"none\"],[24,\"stroke\",\"currentColor\"],[24,\"stroke-linecap\",\"round\"],[24,\"stroke-linejoin\",\"round\"],[24,\"stroke-width\",\"2\"],[24,0,\"lucide lucide-store\"],[24,\"viewBox\",\"0 0 24 24\"],[17,1],[12],[10,\"path\"],[14,\"d\",\"M15 21v-5a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v5M17.774 10.31a1.12 1.12 0 0 0-1.549 0 2.5 2.5 0 0 1-3.451 0 1.12 1.12 0 0 0-1.548 0 2.5 2.5 0 0 1-3.452 0 1.12 1.12 0 0 0-1.549 0 2.5 2.5 0 0 1-3.77-3.248l2.889-4.184A2 2 0 0 1 7 2h10a2 2 0 0 1 1.653.873l2.895 4.192a2.5 2.5 0 0 1-3.774 3.244\"],[12],[13],[10,\"path\"],[14,\"d\",\"M4 10.95V19a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8.05\"],[12],[13],[13],[1,\"\\n\"]],[\"&attrs\"],[]]",
|
|
615
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/store.gts",
|
|
616
|
+
"isStrictMode": true
|
|
617
|
+
}), templateOnly());
|
|
618
|
+
IconComponent$3.name = "store";
|
|
619
|
+
//#endregion
|
|
620
|
+
//#region ../pretui/internal/structure-layout.gts
|
|
621
|
+
/** Every spelling of a size this kit will accept. */
|
|
622
|
+
/** Resolve any accepted size spelling to the house enum. */ function pretuiSize(raw, fallback = "m") {
|
|
623
|
+
return resolveSize(raw, fallback);
|
|
624
|
+
}
|
|
625
|
+
Object.assign(Object.create(null), {
|
|
626
|
+
horizontal: "horizontal",
|
|
627
|
+
row: "horizontal",
|
|
628
|
+
vertical: "vertical",
|
|
629
|
+
column: "vertical"
|
|
630
|
+
});
|
|
631
|
+
//#endregion
|
|
632
|
+
//#region ../pretui/components/collapsible.gts
|
|
633
|
+
/**
|
|
634
|
+
* One trigger, one disclosed region.
|
|
635
|
+
*
|
|
636
|
+
* ```hbs
|
|
637
|
+
* <Collapsible @label='Advanced' @defaultOpen={{false}}>
|
|
638
|
+
* <FormRow …/>
|
|
639
|
+
* </Collapsible>
|
|
640
|
+
* ```
|
|
641
|
+
*/
|
|
642
|
+
var Collapsible = class extends Component {
|
|
643
|
+
static {
|
|
644
|
+
decorateFieldV2(this.prototype, "internal", [tracked], function() {
|
|
645
|
+
return this.args.defaultOpen ?? false;
|
|
646
|
+
});
|
|
647
|
+
}
|
|
648
|
+
#internal = (initializeDeferredDecorator(this, "internal"), void 0);
|
|
649
|
+
contentId = `${guidFor(this)}-content`;
|
|
650
|
+
triggerId = `${guidFor(this)}-trigger`;
|
|
651
|
+
get open() {
|
|
652
|
+
return this.args.open ?? this.internal;
|
|
653
|
+
}
|
|
654
|
+
get size() {
|
|
655
|
+
return pretuiSize(this.args.size);
|
|
656
|
+
}
|
|
657
|
+
get state() {
|
|
658
|
+
return this.open ? "open" : "closed";
|
|
659
|
+
}
|
|
660
|
+
toggle = () => {
|
|
661
|
+
if (this.args.disabled) return;
|
|
662
|
+
let next = !this.open;
|
|
663
|
+
if (this.args.open === void 0) this.internal = next;
|
|
664
|
+
this.args.onOpenChange?.(next);
|
|
665
|
+
};
|
|
666
|
+
static {
|
|
667
|
+
setComponentTemplate(templateFactory({
|
|
668
|
+
"id": "HbmHqx5Y",
|
|
669
|
+
"block": "[[[11,0],[24,0,\"pretui-collapsible\"],[16,\"data-state\",[30,0,[\"state\"]]],[16,\"data-size\",[30,0,[\"size\"]]],[16,\"data-disabled\",[52,[30,1],\"true\",\"false\"]],[24,\"data-test-pretui-collapsible\",\"\"],[17,2],[24,\"data-scopedcss-21cf1356bc-55cb741b11\",\"\"],[12],[1,\"\\n \"],[11,\"button\"],[16,1,[30,0,[\"triggerId\"]]],[24,0,\"pretui-collapsible-trigger\"],[16,\"aria-expanded\",[52,[30,0,[\"open\"]],\"true\",\"false\"]],[16,\"aria-controls\",[30,0,[\"contentId\"]]],[16,\"aria-disabled\",[52,[30,1],\"true\"]],[16,\"data-state\",[30,0,[\"state\"]]],[24,\"data-test-pretui-collapsible-trigger\",\"\"],[24,\"data-scopedcss-21cf1356bc-55cb741b11\",\"\"],[24,4,\"button\"],[4,[32,0],[\"click\",[30,0,[\"toggle\"]]],null],[12],[1,\"\\n\"],[41,[51,[30,3]],[[[1,\" \"],[10,1],[14,0,\"pretui-collapsible-caret\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-21cf1356bc-55cb741b11\",\"\"],[12],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[10,1],[14,0,\"pretui-collapsible-label\"],[14,\"data-scopedcss-21cf1356bc-55cb741b11\",\"\"],[12],[1,\"\\n\"],[41,[48,[30,5]],[[[1,\" \"],[18,5,[[30,0,[\"open\"]]]],[1,\"\\n\"]],[]],[[[1,\" \"],[1,[30,4]],[1,\"\\n\"]],[]]],[1,\" \"],[13],[1,\"\\n \"],[13],[1,\"\\n\\n\"],[1,\" \"],[10,0],[15,1,[30,0,[\"contentId\"]]],[14,0,\"pretui-collapsible-fold\"],[14,\"role\",\"region\"],[15,\"aria-labelledby\",[30,0,[\"triggerId\"]]],[15,\"data-state\",[30,0,[\"state\"]]],[14,\"data-test-pretui-collapsible-content\",\"\"],[14,\"data-scopedcss-21cf1356bc-55cb741b11\",\"\"],[12],[1,\"\\n \"],[10,0],[14,0,\"pretui-collapsible-inner\"],[14,\"data-scopedcss-21cf1356bc-55cb741b11\",\"\"],[12],[18,6,null],[13],[1,\"\\n \"],[13],[1,\"\\n\"],[13],[1,\"\\n\\n\"]],[\"@disabled\",\"&attrs\",\"@hideCaret\",\"@label\",\"&trigger\",\"&default\"],[\"if\",\"unless\",\"has-block\",\"yield\"]]",
|
|
670
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/collapsible.gts",
|
|
671
|
+
"scope": () => [on],
|
|
672
|
+
"isStrictMode": true
|
|
673
|
+
}), this);
|
|
674
|
+
}
|
|
675
|
+
};
|
|
676
|
+
//#endregion
|
|
677
|
+
//#region ../pretui/internal/choice-cards.gts
|
|
678
|
+
var OptionCard = setComponentTemplate(templateFactory({
|
|
679
|
+
"id": "mO2Hqqne",
|
|
680
|
+
"block": "[[[11,\"label\"],[24,0,\"pretui-optioncard\"],[16,\"data-kind\",[30,1]],[16,\"data-selected\",[52,[30,2],\"true\",\"false\"]],[16,\"data-disabled\",[52,[30,3],\"true\",\"false\"]],[16,\"data-test-pretui-choice-card\",[30,4,[\"value\"]]],[17,5],[24,\"data-scopedcss-8f2c6951d3-fb0eb20c4a\",\"\"],[12],[1,\"\\n \"],[11,\"input\"],[24,0,\"pretui-optioncard-input\"],[16,3,[30,6]],[16,2,[30,4,[\"value\"]]],[16,\"checked\",[30,2]],[16,\"disabled\",[30,3]],[24,\"data-scopedcss-8f2c6951d3-fb0eb20c4a\",\"\"],[16,4,[30,1]],[4,[32,0],[\"change\",[30,7]],null],[12],[13],[1,\"\\n\"],[41,[30,8],[[[1,\" \"],[10,1],[14,0,\"pretui-optioncard-media\"],[14,\"data-scopedcss-8f2c6951d3-fb0eb20c4a\",\"\"],[12],[18,10,[[30,4]]],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[10,1],[14,0,\"pretui-optioncard-body\"],[14,\"data-scopedcss-8f2c6951d3-fb0eb20c4a\",\"\"],[12],[1,\"\\n\"],[41,[30,9],[[[1,\" \"],[18,11,[[30,4],[30,2]]],[1,\"\\n\"]],[]],[[[1,\" \"],[10,1],[14,0,\"pretui-optioncard-title\"],[14,\"data-scopedcss-8f2c6951d3-fb0eb20c4a\",\"\"],[12],[1,[30,4,[\"title\"]]],[13],[1,\"\\n\"],[41,[30,4,[\"description\"]],[[[1,\" \"],[10,1],[14,0,\"pretui-optioncard-desc\"],[14,\"data-scopedcss-8f2c6951d3-fb0eb20c4a\",\"\"],[12],[1,[30,4,[\"description\"]]],[13],[1,\"\\n\"]],[]],null]],[]]],[1,\" \"],[13],[1,\"\\n\"],[41,[30,4,[\"meta\"]],[[[1,\" \"],[10,1],[14,0,\"pretui-optioncard-meta\"],[14,\"data-scopedcss-8f2c6951d3-fb0eb20c4a\",\"\"],[12],[1,[30,4,[\"meta\"]]],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[10,1],[14,0,\"pretui-optioncard-mark\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-8f2c6951d3-fb0eb20c4a\",\"\"],[12],[13],[1,\"\\n\"],[13],[1,\"\\n\"]],[\"@kind\",\"@selected\",\"@disabled\",\"@option\",\"&attrs\",\"@name\",\"@onChange\",\"@hasMedia\",\"@custom\",\"&media\",\"&default\"],[\"if\",\"yield\"]]",
|
|
681
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/internal/choice-cards.gts",
|
|
682
|
+
"scope": () => [on],
|
|
683
|
+
"isStrictMode": true
|
|
684
|
+
}), templateOnly());
|
|
685
|
+
var ChoiceGrid = setComponentTemplate(templateFactory({
|
|
686
|
+
"id": "wNaY4vbT",
|
|
687
|
+
"block": "[[[11,0],[24,0,\"pretui-choicecards\"],[17,1],[24,\"data-scopedcss-8f2c6951d3-c7147e5aa6\",\"\"],[12],[18,2,null],[13],[1,\"\\n\"]],[\"&attrs\",\"&default\"],[\"yield\"]]",
|
|
688
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/internal/choice-cards.gts",
|
|
689
|
+
"isStrictMode": true
|
|
690
|
+
}), templateOnly());
|
|
691
|
+
//#endregion
|
|
692
|
+
//#region ../pretui/components/radio-card.gts
|
|
693
|
+
var RadioCard = class extends Component {
|
|
694
|
+
static {
|
|
695
|
+
decorateFieldV2(this.prototype, "internal", [tracked], function() {
|
|
696
|
+
return this.args.defaultValue;
|
|
697
|
+
});
|
|
698
|
+
}
|
|
699
|
+
#internal = (initializeDeferredDecorator(this, "internal"), void 0);
|
|
700
|
+
generatedName = `${guidFor(this)}-rc`;
|
|
701
|
+
get name() {
|
|
702
|
+
return this.args.name ?? this.generatedName;
|
|
703
|
+
}
|
|
704
|
+
get options() {
|
|
705
|
+
return firstDefined(this.args.options, this.args.items) ?? [];
|
|
706
|
+
}
|
|
707
|
+
get value() {
|
|
708
|
+
return this.args.value ?? this.internal;
|
|
709
|
+
}
|
|
710
|
+
get groupDisabled() {
|
|
711
|
+
return firstDefined(this.args.disabled, this.args.isDisabled) ?? false;
|
|
712
|
+
}
|
|
713
|
+
get orientation() {
|
|
714
|
+
return this.args.orientation ?? "vertical";
|
|
715
|
+
}
|
|
716
|
+
pick = (option, ev) => {
|
|
717
|
+
if (this.args.value === void 0) this.internal = option.value;
|
|
718
|
+
emit([this.args.onValueChange, this.args.onChange], option.value);
|
|
719
|
+
if (this.args.value !== void 0) ev.target.closest(".pretui-choicecards")?.querySelectorAll("input[type=\"radio\"]").forEach((input) => input.checked = input.value === this.value);
|
|
720
|
+
};
|
|
721
|
+
isOn = (option) => this.value === option.value;
|
|
722
|
+
isDisabled = (option) => this.groupDisabled || Boolean(option.disabled);
|
|
723
|
+
static {
|
|
724
|
+
setComponentTemplate(templateFactory({
|
|
725
|
+
"id": "tSyJpYXV",
|
|
726
|
+
"block": "[[[8,[32,0],[[24,\"role\",\"radiogroup\"],[16,\"aria-label\",[30,1]],[16,\"data-orientation\",[30,0,[\"orientation\"]]],[16,\"data-columns\",[30,2]],[24,\"data-test-pretui-radio-card\",\"\"],[17,3]],null,[[\"default\"],[[[[1,\"\\n\"],[42,[28,[31,1],[[28,[31,1],[[30,0,[\"options\"]]],null]],null],null,[[[1,\" \"],[8,[32,1],null,[[\"@kind\",\"@name\",\"@option\",\"@selected\",\"@disabled\",\"@onChange\",\"@custom\",\"@hasMedia\"],[\"radio\",[30,0,[\"name\"]],[30,4],[28,[30,0,[\"isOn\"]],[[30,4]],null],[28,[30,0,[\"isDisabled\"]],[[30,4]],null],[28,[32,2],[[30,0,[\"pick\"]],[30,4]],null],[48,[30,8]],[48,[30,9]]]],[[\"default\",\"media\"],[[[[18,8,[[30,5],[30,6]]]],[5,6]],[[[18,9,[[30,7]]]],[7]]]]],[1,\"\\n\"]],[4]],null]],[]]]]]],[\"@label\",\"@columns\",\"&attrs\",\"option\",\"o\",\"selected\",\"o\",\"&default\",\"&media\"],[\"each\",\"-track-array\",\"has-block\",\"yield\"]]",
|
|
727
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/radio-card.gts",
|
|
728
|
+
"scope": () => [
|
|
729
|
+
ChoiceGrid,
|
|
730
|
+
OptionCard,
|
|
731
|
+
fn
|
|
732
|
+
],
|
|
733
|
+
"isStrictMode": true
|
|
734
|
+
}), this);
|
|
735
|
+
}
|
|
736
|
+
};
|
|
737
|
+
//#endregion
|
|
738
|
+
//#region app/components/operator-mode/dashboard/agent-kinds.ts
|
|
739
|
+
var CLI_STEP = {
|
|
740
|
+
title: "Install the Boxel CLI",
|
|
741
|
+
note: "In a terminal, or ask your agent to run it",
|
|
742
|
+
text: "npm install -g @cardstack/boxel-cli"
|
|
743
|
+
};
|
|
744
|
+
var AGENT_KINDS = [
|
|
745
|
+
{
|
|
746
|
+
id: "claude",
|
|
747
|
+
label: "Claude Code",
|
|
748
|
+
hint: "Boxel plugin",
|
|
749
|
+
setup: [
|
|
750
|
+
CLI_STEP,
|
|
751
|
+
{
|
|
752
|
+
title: "Add the Boxel marketplace",
|
|
753
|
+
note: "Type it in Claude Code’s chat",
|
|
754
|
+
text: "/plugin marketplace add cardstack/boxel"
|
|
755
|
+
},
|
|
756
|
+
{
|
|
757
|
+
title: "Install the Boxel plugin",
|
|
758
|
+
text: "/plugin install boxel-cli@cardstack-boxel"
|
|
759
|
+
}
|
|
760
|
+
]
|
|
761
|
+
},
|
|
762
|
+
{
|
|
763
|
+
id: "codex",
|
|
764
|
+
label: "Codex",
|
|
765
|
+
hint: "Boxel plugin",
|
|
766
|
+
setup: [
|
|
767
|
+
CLI_STEP,
|
|
768
|
+
{
|
|
769
|
+
title: "Add the Boxel marketplace",
|
|
770
|
+
note: "In a terminal, or ask Codex to run it",
|
|
771
|
+
text: "codex plugin marketplace add cardstack/boxel"
|
|
772
|
+
},
|
|
773
|
+
{
|
|
774
|
+
title: "Install both Boxel plugins",
|
|
775
|
+
note: "Open Plugins, add boxel-cli and boxel-skills, then start a new chat",
|
|
776
|
+
text: "/plugins"
|
|
777
|
+
}
|
|
778
|
+
]
|
|
779
|
+
},
|
|
780
|
+
{
|
|
781
|
+
id: "boxel",
|
|
782
|
+
label: "Boxel AI Assistant",
|
|
783
|
+
hint: "Built into Boxel"
|
|
784
|
+
}
|
|
785
|
+
];
|
|
786
|
+
function agentKindFor(agent) {
|
|
787
|
+
return AGENT_KINDS.find((kind) => kind.id === agent) ?? AGENT_KINDS[0];
|
|
788
|
+
}
|
|
789
|
+
function usesCodingAgent(agent, agentSetup) {
|
|
790
|
+
return AGENT_KINDS.some((kind) => Boolean(kind.setup) && (kind.id === agent || (agentSetup?.[kind.id] ?? 0) > 0));
|
|
791
|
+
}
|
|
792
|
+
function shownAgentFor(agent, agentSetup) {
|
|
793
|
+
return agentKindFor(usesCodingAgent(agent, agentSetup) ? agent : "boxel");
|
|
794
|
+
}
|
|
795
|
+
function setupStepsFor(kind, workspaceURL) {
|
|
796
|
+
if (!kind.setup) return [];
|
|
797
|
+
return [
|
|
798
|
+
...kind.setup,
|
|
799
|
+
{
|
|
800
|
+
title: "Open a workspace",
|
|
801
|
+
note: "Your agent signs you in and syncs it",
|
|
802
|
+
text: `Work on my Boxel workspace ${workspaceURL ?? "<workspace URL>"}`,
|
|
803
|
+
isWorkspacePick: true
|
|
804
|
+
},
|
|
805
|
+
{
|
|
806
|
+
title: "Ask for a change",
|
|
807
|
+
text: "Make me a card for tracking tasks in this workspace"
|
|
808
|
+
},
|
|
809
|
+
{
|
|
810
|
+
title: "See it in Boxel",
|
|
811
|
+
note: "Boxel opens with the change live",
|
|
812
|
+
text: "Show it to me in Boxel"
|
|
813
|
+
}
|
|
814
|
+
];
|
|
815
|
+
}
|
|
816
|
+
//#endregion
|
|
817
|
+
//#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/brand-openai.js
|
|
818
|
+
var IconComponent$2 = setComponentTemplate(templateFactory({
|
|
819
|
+
"id": "+NE/ow3a",
|
|
820
|
+
"block": "[[[1,\"\\n \"],[11,\"svg\"],[24,\"xmlns\",\"http://www.w3.org/2000/svg\",\"http://www.w3.org/2000/xmlns/\"],[24,\"width\",\"24\"],[24,\"height\",\"24\"],[24,\"fill\",\"none\"],[24,\"stroke\",\"currentColor\"],[24,\"stroke-linecap\",\"round\"],[24,\"stroke-linejoin\",\"round\"],[24,\"stroke-width\",\"2\"],[24,0,\"icon icon-tabler icons-tabler-outline icon-tabler-brand-openai\"],[24,\"viewBox\",\"0 0 24 24\"],[17,1],[12],[10,\"path\"],[14,\"stroke\",\"none\"],[14,\"d\",\"M0 0h24v24H0z\"],[12],[13],[10,\"path\"],[14,\"d\",\"M11.217 19.384A3.501 3.501 0 0 0 18 18.167V13l-6-3.35\"],[12],[13],[10,\"path\"],[14,\"d\",\"M5.214 15.014A3.501 3.501 0 0 0 9.66 20.28L14 17.746V10.8\"],[12],[13],[10,\"path\"],[14,\"d\",\"M6 7.63c-1.391-.236-2.787.395-3.534 1.689a3.474 3.474 0 0 0 1.271 4.745L8 16.578l6-3.348\"],[12],[13],[10,\"path\"],[14,\"d\",\"M12.783 4.616A3.501 3.501 0 0 0 6 5.833V10.9l6 3.45\"],[12],[13],[10,\"path\"],[14,\"d\",\"M18.786 8.986A3.501 3.501 0 0 0 14.34 3.72L10 6.254V13.2\"],[12],[13],[10,\"path\"],[14,\"d\",\"M18 16.302c1.391.236 2.787-.395 3.534-1.689a3.474 3.474 0 0 0-1.271-4.745l-4.308-2.514L10 10.774\"],[12],[13],[13],[1,\"\\n\"]],[\"&attrs\"],[]]",
|
|
821
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/brand-openai.gts",
|
|
822
|
+
"isStrictMode": true
|
|
823
|
+
}), templateOnly());
|
|
824
|
+
IconComponent$2.name = "brand-openai";
|
|
825
|
+
//#endregion
|
|
826
|
+
//#region app/components/operator-mode/dashboard/claude-mark.gts
|
|
827
|
+
var ClaudeMark = setComponentTemplate(templateFactory({
|
|
828
|
+
"id": "or8My7t1",
|
|
829
|
+
"block": "[[[11,\"svg\"],[24,\"xmlns\",\"http://www.w3.org/2000/svg\",\"http://www.w3.org/2000/xmlns/\"],[24,\"width\",\"24\"],[24,\"height\",\"24\"],[24,\"viewBox\",\"0 0 24 24\"],[24,\"fill\",\"#D97757\"],[17,1],[12],[10,\"path\"],[14,\"d\",\"m4.7144 15.9555 4.7174-2.6471.079-.2307-.079-.1275h-.2307l-.7893-.0486-2.6956-.0729-2.3375-.0971-2.2646-.1214-.5707-.1215-.5343-.7042.0546-.3522.4797-.3218.686.0608 1.5179.1032 2.2767.1578 1.6514.0972 2.4468.255h.3886l.0546-.1579-.1336-.0971-.1032-.0972L6.973 9.8356l-2.55-1.6879-1.3356-.9714-.7225-.4918-.3643-.4614-.1578-1.0078.6557-.7225.8803.0607.2246.0607.8925.686 1.9064 1.4754 2.4893 1.8336.3643.3035.1457-.1032.0182-.0728-.164-.2733-1.3539-2.4467-1.445-2.4893-.6435-1.032-.17-.6194c-.0607-.255-.1032-.4674-.1032-.7285L6.287.1335 6.6997 0l.9957.1336.419.3642.6192 1.4147 1.0018 2.2282 1.5543 3.0296.4553.8985.2429.8318.091.255h.1579v-.1457l.1275-1.706.2368-2.0947.2307-2.6957.0789-.7589.3764-.9107.7468-.4918.5828.2793.4797.686-.0668.4433-.2853 1.8517-.5586 2.9021-.3643 1.9429h.2125l.2429-.2429.9835-1.3053 1.6514-2.0643.7286-.8196.85-.9046.5464-.4311h1.0321l.759 1.1293-.34 1.1657-1.0625 1.3478-.8804 1.1414-1.2628 1.7-.7893 1.36.0729.1093.1882-.0183 2.8535-.607 1.5421-.2794 1.8396-.3157.8318.3886.091.3946-.3278.8075-1.967.4857-2.3072.4614-3.4364.8136-.0425.0304.0486.0607 1.5482.1457.6618.0364h1.621l3.0175.2247.7892.522.4736.6376-.079.4857-1.2142.6193-1.6393-.3886-3.825-.9107-1.3113-.3279h-.1822v.1093l1.0929 1.0686 2.0035 1.8092 2.5075 2.3314.1275.5768-.3218.4554-.34-.0486-2.2039-1.6575-.85-.7468-1.9246-1.621h-.1275v.17l.4432.6496 2.3436 3.5214.1214 1.0807-.17.3521-.6071.2125-.6679-.1214-1.3721-1.9246L14.38 17.959l-1.1414-1.9428-.1397.079-.674 7.2552-.3156.3703-.7286.2793-.6071-.4614-.3218-.7468.3218-1.4753.3886-1.9246.3157-1.53.2853-1.9004.17-.6314-.0121-.0425-.1397.0182-1.4328 1.9672-2.1796 2.9446-1.7243 1.8456-.4128.164-.7164-.3704.0667-.6618.4008-.5889 2.386-3.0357 1.4389-1.882.929-1.0868-.0062-.1579h-.0546l-6.3385 4.1164-1.1293.1457-.4857-.4554.0608-.7467.2307-.2429 1.9064-1.3114Z\"],[12],[13],[13]],[\"&attrs\"],[]]",
|
|
830
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/claude-mark.gts",
|
|
831
|
+
"isStrictMode": true
|
|
832
|
+
}), templateOnly());
|
|
833
|
+
//#endregion
|
|
834
|
+
//#region app/components/operator-mode/dashboard/agent-mark.gts
|
|
835
|
+
var AgentMark = setComponentTemplate(templateFactory({
|
|
836
|
+
"id": "ZKWJB6pU",
|
|
837
|
+
"block": "[[[11,1],[16,0,[28,[32,0],[\"agent-mark\"],[[\"is-small\"],[[28,[32,1],[[30,1],\"small\"],null]]]]],[16,\"data-test-agent-mark\",[30,2,[\"id\"]]],[17,3],[24,\"data-scopedcss-6925226061-a445c6f0a0\",\"\"],[12],[1,\"\\n\"],[41,[28,[32,1],[[30,2,[\"id\"]],\"claude\"],null],[[[1,\" \"],[10,1],[14,0,\"agent-mark-tile\"],[14,\"data-scopedcss-6925226061-a445c6f0a0\",\"\"],[12],[1,\"\\n \"],[8,[32,2],[[24,0,\"agent-mark-icon\"],[24,\"width\",\"24\"],[24,\"height\",\"24\"],[24,\"aria-hidden\",\"true\"],[24,\"data-scopedcss-6925226061-a445c6f0a0\",\"\"]],null,null],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],[[[41,[28,[32,1],[[30,2,[\"id\"]],\"codex\"],null],[[[1,\" \"],[10,1],[14,0,\"agent-mark-tile\"],[14,\"data-scopedcss-6925226061-a445c6f0a0\",\"\"],[12],[1,\"\\n \"],[8,[32,3],[[24,0,\"agent-mark-icon\"],[24,\"width\",\"24\"],[24,\"height\",\"24\"],[24,\"aria-hidden\",\"true\"],[24,\"data-scopedcss-6925226061-a445c6f0a0\",\"\"]],null,null],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],[[[1,\" \"],[10,\"img\"],[14,0,\"agent-mark-image\"],[15,\"src\",[32,4]],[14,\"alt\",\"\"],[14,\"width\",\"32\"],[14,\"height\",\"32\"],[14,\"data-scopedcss-6925226061-a445c6f0a0\",\"\"],[12],[13],[1,\"\\n \"]],[]]]],[]]],[13],[1,\"\\n\"]],[\"@size\",\"@kind\",\"&attrs\"],[\"if\"]]",
|
|
838
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/agent-mark.gts",
|
|
839
|
+
"scope": () => [
|
|
840
|
+
cn_default,
|
|
841
|
+
eq,
|
|
842
|
+
ClaudeMark,
|
|
843
|
+
IconComponent$2,
|
|
844
|
+
ai_assist_icon_2x_default
|
|
845
|
+
],
|
|
846
|
+
"isStrictMode": true
|
|
847
|
+
}), templateOnly());
|
|
848
|
+
//#endregion
|
|
849
|
+
//#region app/components/operator-mode/dashboard/agents.gts
|
|
850
|
+
var log$3 = logger("component:dashboard/agents");
|
|
851
|
+
var COPIED_FEEDBACK_MS = 2e3;
|
|
852
|
+
var HOW_BOXEL_AI_WORKS = [
|
|
853
|
+
{
|
|
854
|
+
title: "Describe what you want",
|
|
855
|
+
note: "In your own words, from any workspace"
|
|
856
|
+
},
|
|
857
|
+
{
|
|
858
|
+
title: "Boxel AI Assistant builds it",
|
|
859
|
+
note: "Cards, fields and data, right in the workspace"
|
|
860
|
+
},
|
|
861
|
+
{
|
|
862
|
+
title: "Refine it in the chat",
|
|
863
|
+
note: "Ask for changes as you look"
|
|
864
|
+
}
|
|
865
|
+
];
|
|
866
|
+
var Agents = class extends Component {
|
|
867
|
+
static {
|
|
868
|
+
decorateFieldV2(this.prototype, "aiAssistantPanelService", [service]);
|
|
869
|
+
}
|
|
870
|
+
#aiAssistantPanelService = (initializeDeferredDecorator(this, "aiAssistantPanelService"), void 0);
|
|
871
|
+
static {
|
|
872
|
+
decorateFieldV2(this.prototype, "matrixService", [service]);
|
|
873
|
+
}
|
|
874
|
+
#matrixService = (initializeDeferredDecorator(this, "matrixService"), void 0);
|
|
875
|
+
static {
|
|
876
|
+
decorateFieldV2(this.prototype, "network", [service]);
|
|
877
|
+
}
|
|
878
|
+
#network = (initializeDeferredDecorator(this, "network"), void 0);
|
|
879
|
+
static {
|
|
880
|
+
decorateFieldV2(this.prototype, "realm", [service]);
|
|
881
|
+
}
|
|
882
|
+
#realm = (initializeDeferredDecorator(this, "realm"), void 0);
|
|
883
|
+
static {
|
|
884
|
+
decorateFieldV2(this.prototype, "realmServer", [service]);
|
|
885
|
+
}
|
|
886
|
+
#realmServer = (initializeDeferredDecorator(this, "realmServer"), void 0);
|
|
887
|
+
static {
|
|
888
|
+
decorateFieldV2(this.prototype, "copied", [tracked$1], function() {
|
|
889
|
+
return null;
|
|
890
|
+
});
|
|
891
|
+
}
|
|
892
|
+
#copied = (initializeDeferredDecorator(this, "copied"), void 0);
|
|
893
|
+
static {
|
|
894
|
+
decorateFieldV2(this.prototype, "pickedWorkspaceURL", [tracked$1]);
|
|
895
|
+
}
|
|
896
|
+
#pickedWorkspaceURL = (initializeDeferredDecorator(this, "pickedWorkspaceURL"), void 0);
|
|
897
|
+
static {
|
|
898
|
+
decorateFieldV2(this.prototype, "expandedAgent", [tracked$1], function() {
|
|
899
|
+
return null;
|
|
900
|
+
});
|
|
901
|
+
}
|
|
902
|
+
#expandedAgent = (initializeDeferredDecorator(this, "expandedAgent"), void 0);
|
|
903
|
+
static {
|
|
904
|
+
decorateFieldV2(this.prototype, "showsCodingAgents", [tracked$1], function() {
|
|
905
|
+
return false;
|
|
906
|
+
});
|
|
907
|
+
}
|
|
908
|
+
#showsCodingAgents = (initializeDeferredDecorator(this, "showsCodingAgents"), void 0);
|
|
909
|
+
static {
|
|
910
|
+
decorateFieldV2(this.prototype, "openedAgent", [tracked$1]);
|
|
911
|
+
}
|
|
912
|
+
#openedAgent = (initializeDeferredDecorator(this, "openedAgent"), void 0);
|
|
913
|
+
focusPicker = false;
|
|
914
|
+
stepsId = `${guidFor(this)}-steps`;
|
|
915
|
+
agentOptions = AGENT_KINDS.map((kind) => ({
|
|
916
|
+
value: kind.id,
|
|
917
|
+
title: kind.label,
|
|
918
|
+
description: kind.hint
|
|
919
|
+
}));
|
|
920
|
+
get usesCodingAgent() {
|
|
921
|
+
return usesCodingAgent(this.matrixService.dashboardAgent, this.matrixService.dashboardState.agentSetup);
|
|
922
|
+
}
|
|
923
|
+
get isMinimized() {
|
|
924
|
+
return !this.showsCodingAgents && !this.usesCodingAgent;
|
|
925
|
+
}
|
|
926
|
+
get kind() {
|
|
927
|
+
if (this.showsCodingAgents && !this.usesCodingAgent) return agentKindFor(this.openedAgent ?? this.matrixService.dashboardAgent);
|
|
928
|
+
return shownAgentFor(this.matrixService.dashboardAgent, this.matrixService.dashboardState.agentSetup);
|
|
929
|
+
}
|
|
930
|
+
showCodingAgents() {
|
|
931
|
+
this.showsCodingAgents = true;
|
|
932
|
+
this.openedAgent = AGENT_KINDS.find((kind) => kind.setup)?.id;
|
|
933
|
+
this.focusPicker = true;
|
|
934
|
+
}
|
|
935
|
+
static {
|
|
936
|
+
decorateMethodV2(this.prototype, "showCodingAgents", [action]);
|
|
937
|
+
}
|
|
938
|
+
focusIfOpened = modifier((picker) => {
|
|
939
|
+
if (this.focusPicker) {
|
|
940
|
+
this.focusPicker = false;
|
|
941
|
+
picker.querySelector("input:checked")?.focus();
|
|
942
|
+
}
|
|
943
|
+
});
|
|
944
|
+
get copiedResult() {
|
|
945
|
+
return this.copied?.agent === this.kind.id ? this.copied : null;
|
|
946
|
+
}
|
|
947
|
+
copyFailed = (index) => this.copiedResult?.index === index && !this.copiedResult.ok;
|
|
948
|
+
copyTooltip = (index) => this.copiedResult?.index !== index ? "Copy" : this.copiedResult.ok ? "Copied" : "Copy failed";
|
|
949
|
+
copyIcon = (index) => this.copiedResult?.index !== index ? IconComponent$12 : this.copiedResult.ok ? IconComponent$9 : IconComponent$10;
|
|
950
|
+
copyIconStroke = (index) => this.copiedResult?.index === index ? "3" : void 0;
|
|
951
|
+
get isBuiltIn() {
|
|
952
|
+
return !this.kind.setup;
|
|
953
|
+
}
|
|
954
|
+
get workspaceOptions() {
|
|
955
|
+
let own = this.realmServer.userRealmIdentifiers.filter((url) => this.realm.canWrite(url));
|
|
956
|
+
let ownSet = new Set(own);
|
|
957
|
+
let favorites = this.matrixService.workspaceFavorites.filter((url) => ownSet.has(url));
|
|
958
|
+
return [...new Set([...favorites, ...own])].map((url) => ({
|
|
959
|
+
value: url,
|
|
960
|
+
label: this.realm.info(url).name
|
|
961
|
+
}));
|
|
962
|
+
}
|
|
963
|
+
static {
|
|
964
|
+
decorateMethodV2(this.prototype, "workspaceOptions", [cached$1]);
|
|
965
|
+
}
|
|
966
|
+
get workspaceURL() {
|
|
967
|
+
let options = this.workspaceOptions;
|
|
968
|
+
return options.find(({ value }) => value === this.pickedWorkspaceURL)?.value ?? options[0]?.value;
|
|
969
|
+
}
|
|
970
|
+
get steps() {
|
|
971
|
+
let id = this.workspaceURL;
|
|
972
|
+
return setupStepsFor(this.kind, id ? this.toURL(id) : void 0);
|
|
973
|
+
}
|
|
974
|
+
static {
|
|
975
|
+
decorateMethodV2(this.prototype, "steps", [cached$1]);
|
|
976
|
+
}
|
|
977
|
+
toURL(id) {
|
|
978
|
+
try {
|
|
979
|
+
return this.network.virtualNetwork.toURL(id).href;
|
|
980
|
+
} catch {
|
|
981
|
+
return id;
|
|
982
|
+
}
|
|
983
|
+
}
|
|
984
|
+
get copiedCount() {
|
|
985
|
+
let copied = this.matrixService.dashboardState.agentSetup?.[this.kind.id];
|
|
986
|
+
return Math.min(copied ?? 0, this.steps.length);
|
|
987
|
+
}
|
|
988
|
+
get copiedMessage() {
|
|
989
|
+
let result = this.copiedResult;
|
|
990
|
+
if (!result) return "";
|
|
991
|
+
let step = `Step ${result.index + 1}`;
|
|
992
|
+
return result.ok ? `${step} copied` : `${step} copy failed`;
|
|
993
|
+
}
|
|
994
|
+
get isSetupDone() {
|
|
995
|
+
return this.steps.length > 0 && this.copiedCount === this.steps.length;
|
|
996
|
+
}
|
|
997
|
+
get showsSteps() {
|
|
998
|
+
return !this.isSetupDone || this.expandedAgent === this.kind.id;
|
|
999
|
+
}
|
|
1000
|
+
toggleSteps() {
|
|
1001
|
+
this.expandedAgent = this.showsSteps ? null : this.kind.id;
|
|
1002
|
+
}
|
|
1003
|
+
static {
|
|
1004
|
+
decorateMethodV2(this.prototype, "toggleSteps", [action]);
|
|
1005
|
+
}
|
|
1006
|
+
stepState = (index) => index < this.copiedCount ? "is-done" : index === this.copiedCount ? "is-next" : "is-later";
|
|
1007
|
+
isCopied = (index) => index < this.copiedCount;
|
|
1008
|
+
async pickAgent(value) {
|
|
1009
|
+
let kind = AGENT_KINDS.find(({ id }) => id === value);
|
|
1010
|
+
if (!kind) return;
|
|
1011
|
+
this.openedAgent = void 0;
|
|
1012
|
+
try {
|
|
1013
|
+
await this.matrixService.pickDashboardAgent(kind.id);
|
|
1014
|
+
} catch (error) {
|
|
1015
|
+
log$3.warn(`saving the picked agent failed: ${error}`);
|
|
1016
|
+
}
|
|
1017
|
+
}
|
|
1018
|
+
static {
|
|
1019
|
+
decorateMethodV2(this.prototype, "pickAgent", [action]);
|
|
1020
|
+
}
|
|
1021
|
+
pickWorkspace(url) {
|
|
1022
|
+
this.pickedWorkspaceURL = url;
|
|
1023
|
+
}
|
|
1024
|
+
static {
|
|
1025
|
+
decorateMethodV2(this.prototype, "pickWorkspace", [action]);
|
|
1026
|
+
}
|
|
1027
|
+
copyTask = buildTask(() => ({
|
|
1028
|
+
context: this,
|
|
1029
|
+
generator: function* (index, text) {
|
|
1030
|
+
let agent = this.kind.id;
|
|
1031
|
+
let copied = {
|
|
1032
|
+
agent,
|
|
1033
|
+
index,
|
|
1034
|
+
ok: true
|
|
1035
|
+
};
|
|
1036
|
+
this.expandedAgent = agent;
|
|
1037
|
+
try {
|
|
1038
|
+
try {
|
|
1039
|
+
yield navigator.clipboard.writeText(text);
|
|
1040
|
+
} catch (error) {
|
|
1041
|
+
log$3.warn(`copying setup step ${index + 1} failed: ${error}`);
|
|
1042
|
+
copied = {
|
|
1043
|
+
agent,
|
|
1044
|
+
index,
|
|
1045
|
+
ok: false
|
|
1046
|
+
};
|
|
1047
|
+
}
|
|
1048
|
+
this.copied = copied;
|
|
1049
|
+
if (copied.ok) {
|
|
1050
|
+
this.saveProgress(agent, index);
|
|
1051
|
+
if (this.openedAgent === agent) {
|
|
1052
|
+
this.openedAgent = void 0;
|
|
1053
|
+
this.matrixService.pickDashboardAgent(agent).catch((error) => {
|
|
1054
|
+
log$3.warn(`saving the picked agent failed: ${error}`);
|
|
1055
|
+
});
|
|
1056
|
+
}
|
|
1057
|
+
}
|
|
1058
|
+
yield timeout(COPIED_FEEDBACK_MS);
|
|
1059
|
+
} finally {
|
|
1060
|
+
if (this.copied === copied) this.copied = null;
|
|
1061
|
+
}
|
|
1062
|
+
}
|
|
1063
|
+
}), null, "copyTask", "restartable");
|
|
1064
|
+
saveProgress(agent, index) {
|
|
1065
|
+
this.matrixService.updateDashboardState((stored) => ({ agentSetup: { [agent]: Math.max(stored.agentSetup?.[agent] ?? 0, index + 1) } })).catch((error) => {
|
|
1066
|
+
log$3.warn(`saving setup progress failed: ${error}`);
|
|
1067
|
+
});
|
|
1068
|
+
}
|
|
1069
|
+
async describeIt() {
|
|
1070
|
+
await this.aiAssistantPanelService.openNewSession();
|
|
1071
|
+
}
|
|
1072
|
+
static {
|
|
1073
|
+
decorateMethodV2(this.prototype, "describeIt", [action]);
|
|
1074
|
+
}
|
|
1075
|
+
static {
|
|
1076
|
+
setComponentTemplate(templateFactory({
|
|
1077
|
+
"id": "SL6zYC8e",
|
|
1078
|
+
"block": "[[[11,0],[24,0,\"agents\"],[24,\"data-test-agents\",\"\"],[17,1],[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"\\n\"],[41,[51,[30,0,[\"isMinimized\"]]],[[[1,\" \"],[8,[32,0],[[24,\"data-test-agent-picker\",\"\"],[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[4,[30,0,[\"focusIfOpened\"]],null,null]],[[\"@options\",\"@value\",\"@onValueChange\",\"@orientation\",\"@label\"],[[30,0,[\"agentOptions\"]],[30,0,[\"kind\",\"id\"]],[30,0,[\"pickAgent\"]],\"horizontal\",\"Your agent\"]],[[\"media\"],[[[[1,\"\\n \"],[8,[32,1],[[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"]],[[\"@kind\"],[[28,[32,2],[[30,2,[\"value\"]]],null]]],null],[1,\"\\n \"]],[2]]]]],[1,\"\\n\"]],[]],null],[1,\"\\n\"],[1,\" \"],[10,0],[14,0,\"agent-panel-row\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"\\n \"],[10,\"section\"],[14,0,\"agent-panel\"],[15,\"aria-labelledby\",[28,[32,3],[[30,0,[\"stepsId\"]],\"-title\"],null]],[15,\"data-test-agent-panel\",[30,0,[\"kind\",\"id\"]]],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"\\n \"],[10,0],[14,0,\"panel-head\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"\\n \"],[8,[32,1],[[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"]],[[\"@kind\",\"@size\"],[[30,0,[\"kind\"]],\"small\"]],null],[1,\"\\n \"],[10,\"h4\"],[14,0,\"panel-title\"],[15,1,[28,[32,3],[[30,0,[\"stepsId\"]],\"-title\"],null]],[14,\"data-test-agent-panel-title\",\"\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"\\n \"],[1,[52,[30,0,[\"isBuiltIn\"]],\"Build with\",\"Connect\"]],[1,\"\\n \"],[1,[30,0,[\"kind\",\"label\"]]],[1,\"\\n \"],[13],[1,\"\\n \"],[13],[1,\"\\n\"],[41,[30,0,[\"isBuiltIn\"]],[[[1,\" \"],[10,2],[14,0,\"panel-note\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"Built into Boxel, with nothing to install.\\n Uses credits.\"],[13],[1,\"\\n \"],[10,\"ol\"],[14,0,\"step-list\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"\\n\"],[42,[28,[31,3],[[28,[31,3],[[32,4]],null]],null],null,[[[1,\" \"],[10,\"li\"],[14,0,\"step is-later\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"step-number\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,[28,[32,5],[[30,4],1],null]],[13],[1,\"\\n \"],[10,0],[14,0,\"step-content\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"step-title\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,[30,3,[\"title\"]]],[13],[1,\"\\n \"],[10,1],[14,0,\"step-note\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,[30,3,[\"note\"]]],[13],[1,\"\\n \"],[13],[1,\"\\n \"],[13],[1,\"\\n\"]],[3,4]],null],[1,\" \"],[13],[1,\"\\n \"],[8,[32,6],[[24,0,\"describe-it\"],[24,\"data-test-agent-describe-it\",\"\"],[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[4,[32,7],[\"click\",[30,0,[\"describeIt\"]]],null]],[[\"@tone\",\"@appearance\"],[\"primary\",\"accent\"]],[[\"default\"],[[[[1,\"\\n Describe it\\n \"]],[]]]]],[1,\"\\n\"]],[]],[[[1,\" \"],[8,[32,8],[[24,\"data-test-agent-setup-progress\",\"\"],[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"]],[[\"@value\",\"@max\",\"@count\",\"@label\"],[[30,0,[\"copiedCount\"]],[30,0,[\"steps\",\"length\"]],[28,[32,3],[[30,0,[\"copiedCount\"]],\" of \",[30,0,[\"steps\",\"length\"]],\" copied\"],null],\"Setup\"]],null],[1,\"\\n\"],[41,[30,0,[\"isSetupDone\"]],[[[1,\" \"],[8,[32,6],[[24,0,\"steps-toggle\"],[16,\"aria-expanded\",[52,[30,0,[\"showsSteps\"]],\"true\",\"false\"]],[16,\"aria-controls\",[52,[30,0,[\"showsSteps\"]],[30,0,[\"stepsId\"]]]],[24,\"data-test-agent-steps-toggle\",\"\"],[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[4,[32,7],[\"click\",[30,0,[\"toggleSteps\"]]],null]],[[\"@appearance\",\"@size\"],[\"link\",\"s\"]],[[\"default\"],[[[[1,\"\\n \"],[1,[52,[30,0,[\"showsSteps\"]],\"Hide steps\",\"Show steps\"]],[1,\"\\n \"]],[]]]]],[1,\"\\n\"]],[]],null],[41,[30,0,[\"showsSteps\"]],[[[1,\" \"],[10,\"ol\"],[14,0,\"step-list\"],[15,1,[30,0,[\"stepsId\"]]],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"\\n\"],[42,[28,[31,3],[[28,[31,3],[[30,0,[\"steps\"]]],null]],null],\"title\",[[[1,\" \"],[10,\"li\"],[15,0,[28,[32,9],[\"step\",[28,[30,0,[\"stepState\"]],[[30,6]],null]],null]],[15,\"data-test-agent-step\",[28,[32,5],[[30,6],1],null]],[15,\"data-test-agent-step-copied\",[52,[28,[30,0,[\"isCopied\"]],[[30,6]],null],\"true\",\"false\"]],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"step-number\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"\\n\"],[41,[28,[30,0,[\"isCopied\"]],[[30,6]],null],[[[1,\" \"],[8,[32,10],[[24,\"width\",\"14\"],[24,\"height\",\"14\"],[24,\"stroke-width\",\"3\"],[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"]],null,null],[1,\"\\n\"]],[]],[[[1,\" \"],[1,[28,[32,5],[[30,6],1],null]],[1,\"\\n\"]],[]]],[1,\" \"],[13],[1,\"\\n \"],[10,0],[14,0,\"step-content\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"step-title\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"\\n \"],[1,[30,5,[\"title\"]]],[1,\"\\n\"],[41,[28,[30,0,[\"isCopied\"]],[[30,6]],null],[[[1,\" \"],[8,[32,11],[[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"]],null,[[\"default\"],[[[[1,\"(copied)\"]],[]]]]],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n\"],[41,[30,5,[\"note\"]],[[[1,\" \"],[10,1],[14,0,\"step-note\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,[30,5,[\"note\"]]],[13],[1,\"\\n\"]],[]],null],[41,[30,5,[\"isWorkspacePick\"]],[[[41,[30,0,[\"workspaceOptions\",\"length\"]],[[[1,\" \"],[8,[32,12],[[24,0,\"workspace-pick\"],[24,\"data-test-agent-workspace-pick\",\"\"],[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"]],[[\"@options\",\"@value\",\"@onValueChange\",\"@label\"],[[30,0,[\"workspaceOptions\"]],[30,0,[\"workspaceURL\"]],[30,0,[\"pickWorkspace\"]],\"Workspace to open\"]],null],[1,\"\\n\"]],[]],null]],[]],null],[1,\" \"],[10,0],[14,0,\"step-text\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,\"\\n \"],[10,\"code\"],[14,0,\"step-code\"],[15,1,[28,[32,3],[[30,0,[\"stepsId\"]],\"-\",[30,6],\"-text\"],null]],[14,\"data-test-agent-step-text\",\"\"],[14,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[12],[1,[30,5,[\"text\"]]],[13],[1,\"\\n\"],[1,\" \"],[8,[32,13],[[24,0,\"copy\"],[16,\"aria-describedby\",[28,[32,3],[[30,0,[\"stepsId\"]],\"-\",[30,6],\"-text\"],null]],[16,\"data-test-agent-copy\",[28,[32,5],[[30,6],1],null]],[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[4,[32,7],[\"click\",[28,[32,14],[[30,0,[\"copyTask\",\"perform\"]],[30,6],[30,5,[\"text\"]]],null]],null]],[[\"@label\",\"@tooltip\",\"@tone\",\"@appearance\",\"@size\"],[\"Copy\",[28,[30,0,[\"copyTooltip\"]],[[30,6]],null],[52,[28,[30,0,[\"copyFailed\"]],[[30,6]],null],\"danger\",\"neutral\"],\"plain\",\"xs\"]],[[\"default\"],[[[[1,\"\\n\"],[44,[[28,[30,0,[\"copyIcon\"]],[[30,6]],null]],[[[1,\" \"],[8,[30,7],[[24,\"width\",\"14\"],[24,\"height\",\"14\"],[16,\"stroke-width\",[28,[30,0,[\"copyIconStroke\"]],[[30,6]],null]],[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"]],null,null],[1,\"\\n\"]],[7]]],[1,\" \"]],[]]]]],[1,\"\\n \"],[13],[1,\"\\n \"],[13],[1,\"\\n \"],[13],[1,\"\\n\"]],[5,6]],null],[1,\" \"],[13],[1,\"\\n\"]],[]],null]],[]]],[1,\" \"],[13],[1,\"\\n \"],[13],[1,\"\\n\"],[41,[30,0,[\"isMinimized\"]],[[[1,\" \"],[8,[32,6],[[24,0,\"show-coding-agents\"],[24,\"data-test-agents-show-coding\",\"\"],[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"],[4,[32,7],[\"click\",[30,0,[\"showCodingAgents\"]]],null]],[[\"@appearance\",\"@size\"],[\"link\",\"s\"]],[[\"default\"],[[[[1,\"\\n Use Claude Code or Codex?\\n \"],[8,[32,15],[[24,0,\"show-coding-agents-icon\"],[24,\"width\",\"14\"],[24,\"height\",\"14\"],[24,\"aria-hidden\",\"true\"],[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"]],null,null],[1,\"\\n \"]],[]]]]],[1,\"\\n\"]],[]],null],[1,\" \"],[8,[32,11],[[24,\"role\",\"status\"],[24,\"data-test-agent-copy-status\",\"\"],[24,\"data-scopedcss-882b8dc7d2-df271e6598\",\"\"]],null,[[\"default\"],[[[[1,\"\\n \"],[1,[30,0,[\"copiedMessage\"]]],[1,\"\\n \"]],[]]]]],[1,\"\\n\"],[13],[1,\"\\n\\n\"]],[\"&attrs\",\"option\",\"step\",\"index\",\"step\",\"index\",\"CopyIcon\"],[\"unless\",\"if\",\"each\",\"-track-array\",\"let\"]]",
|
|
1079
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/agents.gts",
|
|
1080
|
+
"scope": () => [
|
|
1081
|
+
RadioCard,
|
|
1082
|
+
AgentMark,
|
|
1083
|
+
agentKindFor,
|
|
1084
|
+
concat,
|
|
1085
|
+
HOW_BOXEL_AI_WORKS,
|
|
1086
|
+
add,
|
|
1087
|
+
Button,
|
|
1088
|
+
on,
|
|
1089
|
+
ProgressBar,
|
|
1090
|
+
cn_default,
|
|
1091
|
+
IconComponent$9,
|
|
1092
|
+
VisuallyHidden,
|
|
1093
|
+
Select,
|
|
1094
|
+
IconButton,
|
|
1095
|
+
fn,
|
|
1096
|
+
IconComponent$5
|
|
1097
|
+
],
|
|
1098
|
+
"isStrictMode": true
|
|
1099
|
+
}), this);
|
|
1100
|
+
}
|
|
1101
|
+
};
|
|
1102
|
+
//#endregion
|
|
1103
|
+
//#region app/components/operator-mode/dashboard/agents-flyout.gts
|
|
1104
|
+
var log$2 = logger("component:dashboard/agents-flyout");
|
|
1105
|
+
var RECENT_SESSION_COUNT = 3;
|
|
1106
|
+
var AgentsFlyout = class extends Component {
|
|
1107
|
+
static {
|
|
1108
|
+
decorateFieldV2(this.prototype, "aiAssistantPanelService", [service]);
|
|
1109
|
+
}
|
|
1110
|
+
#aiAssistantPanelService = (initializeDeferredDecorator(this, "aiAssistantPanelService"), void 0);
|
|
1111
|
+
static {
|
|
1112
|
+
decorateFieldV2(this.prototype, "matrixService", [service]);
|
|
1113
|
+
}
|
|
1114
|
+
#matrixService = (initializeDeferredDecorator(this, "matrixService"), void 0);
|
|
1115
|
+
agentKinds = AGENT_KINDS;
|
|
1116
|
+
sessionsHeadId = `${guidFor(this)}-sessions`;
|
|
1117
|
+
get pickedId() {
|
|
1118
|
+
return shownAgentFor(this.matrixService.dashboardAgent, this.matrixService.dashboardState.agentSetup).id;
|
|
1119
|
+
}
|
|
1120
|
+
get recentSessions() {
|
|
1121
|
+
return this.aiAssistantPanelService.aiSessionRooms.slice(0, RECENT_SESSION_COUNT);
|
|
1122
|
+
}
|
|
1123
|
+
async pickAgent(kind) {
|
|
1124
|
+
this.args.close();
|
|
1125
|
+
this.args.showSection();
|
|
1126
|
+
try {
|
|
1127
|
+
await this.matrixService.pickDashboardAgent(kind.id);
|
|
1128
|
+
} catch (error) {
|
|
1129
|
+
log$2.warn(`saving the picked agent failed: ${error}`);
|
|
1130
|
+
}
|
|
1131
|
+
}
|
|
1132
|
+
static {
|
|
1133
|
+
decorateMethodV2(this.prototype, "pickAgent", [action]);
|
|
1134
|
+
}
|
|
1135
|
+
async openSession(roomId) {
|
|
1136
|
+
this.args.close();
|
|
1137
|
+
this.aiAssistantPanelService.enterRoom(roomId);
|
|
1138
|
+
try {
|
|
1139
|
+
await this.aiAssistantPanelService.openPanel();
|
|
1140
|
+
} catch (error) {
|
|
1141
|
+
if (!didCancel(error)) throw error;
|
|
1142
|
+
}
|
|
1143
|
+
}
|
|
1144
|
+
static {
|
|
1145
|
+
decorateMethodV2(this.prototype, "openSession", [action]);
|
|
1146
|
+
}
|
|
1147
|
+
async newSession() {
|
|
1148
|
+
this.args.close();
|
|
1149
|
+
await this.aiAssistantPanelService.openNewSession();
|
|
1150
|
+
}
|
|
1151
|
+
static {
|
|
1152
|
+
decorateMethodV2(this.prototype, "newSession", [action]);
|
|
1153
|
+
}
|
|
1154
|
+
static {
|
|
1155
|
+
setComponentTemplate(templateFactory({
|
|
1156
|
+
"id": "paD8YaSw",
|
|
1157
|
+
"block": "[[[10,\"header\"],[14,0,\"flyout-header\"],[14,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"flyout-title\"],[15,1,[30,1]],[14,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[12],[1,\"Agents\"],[13],[1,\"\\n \"],[10,1],[14,0,\"flyout-hint\"],[14,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[12],[1,\"Build with the agent you use\"],[13],[1,\"\\n\"],[13],[1,\"\\n\"],[42,[28,[31,1],[[28,[31,1],[[30,0,[\"agentKinds\"]]],null]],null],\"id\",[[[1,\" \"],[8,[32,0],[[24,0,\"flyout-row\"],[16,\"data-test-section-rail-agent\",[30,2,[\"id\"]]],[24,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[4,[32,1],[\"click\",[28,[32,2],[[30,0,[\"pickAgent\"]],[30,2]],null]],null]],[[\"@appearance\"],[\"plain\"]],[[\"default\"],[[[[1,\"\\n \"],[10,1],[14,0,\"row-content\"],[14,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[12],[1,\"\\n \"],[8,[32,3],[[24,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"]],[[\"@kind\",\"@size\"],[[30,2],\"small\"]],null],[1,\"\\n \"],[10,1],[14,0,\"row-title\"],[14,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[12],[1,[30,2,[\"label\"]]],[13],[1,\"\\n\"],[41,[28,[32,4],[[30,0,[\"pickedId\"]],[30,2,[\"id\"]]],null],[[[1,\" \"],[8,[32,5],[[24,0,\"row-picked\"],[24,\"width\",\"14\"],[24,\"height\",\"14\"],[24,\"aria-hidden\",\"true\"],[24,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"]],null,null],[1,\"\\n \"],[8,[32,6],[[24,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"]],null,[[\"default\"],[[[[1,\"(picked)\"]],[]]]]],[1,\"\\n\"]],[]],[[[1,\" \"],[10,1],[14,0,\"row-meta\"],[14,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[12],[1,[30,2,[\"hint\"]]],[13],[1,\"\\n\"]],[]]],[1,\" \"],[13],[1,\"\\n \"]],[]]]]],[1,\"\\n\"]],[2]],null],[1,\"\\n\"],[10,0],[14,\"role\",\"group\"],[15,\"aria-labelledby\",[30,0,[\"sessionsHeadId\"]]],[14,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"flyout-subhead\"],[15,1,[30,0,[\"sessionsHeadId\"]]],[14,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[12],[1,\"Boxel AI Assistant\\n sessions\"],[13],[1,\"\\n\"],[42,[28,[31,1],[[28,[31,1],[[30,0,[\"recentSessions\"]]],null]],null],\"roomId\",[[[1,\" \"],[8,[32,0],[[24,0,\"flyout-row\"],[16,\"data-test-section-rail-ai-session\",[30,3,[\"roomId\"]]],[24,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[4,[32,1],[\"click\",[28,[32,2],[[30,0,[\"openSession\"]],[30,3,[\"roomId\"]]],null]],null]],[[\"@appearance\"],[\"plain\"]],[[\"default\"],[[[[1,\"\\n \"],[10,1],[14,0,\"row-content\"],[14,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"row-title\"],[14,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[12],[1,[30,3,[\"name\"]]],[13],[1,\"\\n \"],[13],[1,\"\\n \"]],[]]]]],[1,\"\\n\"]],[3]],null],[1,\" \"],[8,[32,0],[[24,0,\"flyout-row\"],[24,\"data-test-section-rail-ai-new-session\",\"\"],[24,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[4,[32,1],[\"click\",[30,0,[\"newSession\"]]],null]],[[\"@appearance\"],[\"plain\"]],[[\"default\"],[[[[1,\"\\n \"],[10,1],[14,0,\"row-content\"],[14,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[12],[1,\"\\n \"],[8,[32,7],[[24,\"width\",\"16\"],[24,\"height\",\"16\"],[24,\"aria-hidden\",\"true\"],[24,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"]],null,null],[1,\"\\n \"],[10,1],[14,0,\"row-title\"],[14,\"data-scopedcss-c93971a45c-d9e0d2e7e6\",\"\"],[12],[1,\"New session\"],[13],[1,\"\\n \"],[13],[1,\"\\n \"]],[]]]]],[1,\"\\n\"],[13],[1,\"\\n\\n\"]],[\"@titleId\",\"kind\",\"session\"],[\"each\",\"-track-array\",\"if\"]]",
|
|
1158
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/agents-flyout.gts",
|
|
1159
|
+
"scope": () => [
|
|
1160
|
+
Button,
|
|
1161
|
+
on,
|
|
1162
|
+
fn,
|
|
1163
|
+
AgentMark,
|
|
1164
|
+
eq,
|
|
1165
|
+
IconComponent$9,
|
|
1166
|
+
VisuallyHidden,
|
|
1167
|
+
IconComponent$11
|
|
1168
|
+
],
|
|
1169
|
+
"isStrictMode": true
|
|
1170
|
+
}), this);
|
|
1171
|
+
}
|
|
1172
|
+
};
|
|
1173
|
+
//#endregion
|
|
1174
|
+
//#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/archive-restore.js
|
|
1175
|
+
var IconComponent$1 = setComponentTemplate(templateFactory({
|
|
1176
|
+
"id": "QeRCR7YA",
|
|
1177
|
+
"block": "[[[1,\"\\n \"],[11,\"svg\"],[24,\"xmlns\",\"http://www.w3.org/2000/svg\",\"http://www.w3.org/2000/xmlns/\"],[24,\"width\",\"24\"],[24,\"height\",\"24\"],[24,\"fill\",\"none\"],[24,\"stroke\",\"currentColor\"],[24,\"stroke-linecap\",\"round\"],[24,\"stroke-linejoin\",\"round\"],[24,\"stroke-width\",\"2\"],[24,0,\"lucide lucide-archive-restore\"],[24,\"viewBox\",\"0 0 24 24\"],[17,1],[12],[10,\"rect\"],[14,\"width\",\"20\"],[14,\"height\",\"5\"],[14,\"x\",\"2\"],[14,\"y\",\"3\"],[14,\"rx\",\"1\"],[12],[13],[10,\"path\"],[14,\"d\",\"M4 8v11a2 2 0 0 0 2 2h2M20 8v11a2 2 0 0 1-2 2h-2M9 15l3-3 3 3M12 12v9\"],[12],[13],[13],[1,\"\\n\"]],[\"&attrs\"],[]]",
|
|
1178
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/archive-restore.gts",
|
|
1179
|
+
"isStrictMode": true
|
|
1180
|
+
}), templateOnly());
|
|
1181
|
+
IconComponent$1.name = "archive-restore";
|
|
1182
|
+
//#endregion
|
|
1183
|
+
//#region app/components/operator-mode/dashboard/archived-workspace.gts
|
|
1184
|
+
var ArchivedWorkspace = class extends Component {
|
|
1185
|
+
static {
|
|
1186
|
+
decorateFieldV2(this.prototype, "realmServer", [service]);
|
|
1187
|
+
}
|
|
1188
|
+
#realmServer = (initializeDeferredDecorator(this, "realmServer"), void 0);
|
|
1189
|
+
static {
|
|
1190
|
+
decorateFieldV2(this.prototype, "restoreError", [tracked$1]);
|
|
1191
|
+
}
|
|
1192
|
+
#restoreError = (initializeDeferredDecorator(this, "restoreError"), void 0);
|
|
1193
|
+
get realmInfo() {
|
|
1194
|
+
return {
|
|
1195
|
+
name: this.args.archivedRealm.name,
|
|
1196
|
+
iconURL: this.args.archivedRealm.iconURL,
|
|
1197
|
+
publishable: null
|
|
1198
|
+
};
|
|
1199
|
+
}
|
|
1200
|
+
static {
|
|
1201
|
+
decorateMethodV2(this.prototype, "realmInfo", [cached$1]);
|
|
1202
|
+
}
|
|
1203
|
+
get name() {
|
|
1204
|
+
return this.args.archivedRealm.name;
|
|
1205
|
+
}
|
|
1206
|
+
restoreTask = buildTask(() => ({
|
|
1207
|
+
context: this,
|
|
1208
|
+
generator: function* () {
|
|
1209
|
+
this.restoreError = void 0;
|
|
1210
|
+
try {
|
|
1211
|
+
yield this.realmServer.unarchiveRealm(this.args.archivedRealm.url);
|
|
1212
|
+
} catch (error) {
|
|
1213
|
+
this.restoreError = error.message;
|
|
1214
|
+
}
|
|
1215
|
+
}
|
|
1216
|
+
}), null, "restoreTask", "drop");
|
|
1217
|
+
static {
|
|
1218
|
+
setComponentTemplate(templateFactory({
|
|
1219
|
+
"id": "hRJFSGVP",
|
|
1220
|
+
"block": "[[[11,0],[24,0,\"archived-row\"],[16,\"data-test-archived-workspace\",[30,0,[\"name\"]]],[17,1],[24,\"data-scopedcss-443a7d4fc7-d92e4623bf\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"thumb\"],[14,\"data-scopedcss-443a7d4fc7-d92e4623bf\",\"\"],[12],[1,\"\\n \"],[8,[32,0],[[24,\"data-scopedcss-443a7d4fc7-d92e4623bf\",\"\"]],[[\"@realmURL\",\"@label\",\"@announce\"],[[30,2,[\"url\"]],[30,0,[\"name\"]],true]],[[\"default\"],[[[[1,\"\\n \"],[10,1],[14,0,\"realm-icon-wrapper\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-443a7d4fc7-d92e4623bf\",\"\"],[12],[1,\"\\n \"],[8,[32,1],[[24,0,\"realm-icon\"],[24,\"data-scopedcss-443a7d4fc7-d92e4623bf\",\"\"]],[[\"@realmInfo\"],[[30,0,[\"realmInfo\"]]]],null],[1,\"\\n \"],[13],[1,\"\\n \"]],[]]]]],[1,\"\\n \"],[13],[1,\"\\n \"],[10,0],[14,0,\"info\"],[14,\"data-scopedcss-443a7d4fc7-d92e4623bf\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"name\"],[14,\"data-test-archived-workspace-name\",\"\"],[14,\"data-scopedcss-443a7d4fc7-d92e4623bf\",\"\"],[12],[1,\"\\n \"],[1,[30,0,[\"name\"]]],[1,\"\\n \"],[13],[1,\"\\n\"],[41,[30,0,[\"restoreError\"]],[[[1,\" \"],[10,1],[14,0,\"restore-error\"],[14,\"role\",\"alert\"],[14,\"data-test-restore-workspace-error\",\"\"],[14,\"data-scopedcss-443a7d4fc7-d92e4623bf\",\"\"],[12],[1,[30,0,[\"restoreError\"]]],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n\"],[1,\" \"],[8,[32,2],[[24,0,\"restore-btn\"],[16,\"data-test-restore-workspace-btn\",[30,2,[\"url\"]]],[24,\"data-scopedcss-443a7d4fc7-d92e4623bf\",\"\"],[4,[32,4],[\"click\",[28,[32,5],[[30,0,[\"restoreTask\"]]],null]],null]],[[\"@appearance\",\"@shape\",\"@size\",\"@icon\",\"@busy\",\"@busyLabel\"],[\"outlined\",\"pill\",\"s\",[32,3],[30,0,[\"restoreTask\",\"isRunning\"]],\"Restoring\"]],[[\"default\"],[[[[1,\"Restore\"]],[]]]]],[1,\"\\n\"],[13],[1,\"\\n\"]],[\"&attrs\",\"@archivedRealm\"],[\"if\"]]",
|
|
1221
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/archived-workspace.gts",
|
|
1222
|
+
"scope": () => [
|
|
1223
|
+
RealmURLTooltip,
|
|
1224
|
+
RealmIcon,
|
|
1225
|
+
Button,
|
|
1226
|
+
IconComponent$1,
|
|
1227
|
+
on,
|
|
1228
|
+
perform
|
|
1229
|
+
],
|
|
1230
|
+
"isStrictMode": true
|
|
1231
|
+
}), this);
|
|
1232
|
+
}
|
|
1233
|
+
};
|
|
1234
|
+
//#endregion
|
|
1235
|
+
//#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/info-small.js
|
|
1236
|
+
var IconComponent = setComponentTemplate(templateFactory({
|
|
1237
|
+
"id": "aSlui7An",
|
|
1238
|
+
"block": "[[[1,\"\\n \"],[11,\"svg\"],[24,\"xmlns\",\"http://www.w3.org/2000/svg\",\"http://www.w3.org/2000/xmlns/\"],[24,\"width\",\"24\"],[24,\"height\",\"24\"],[24,\"fill\",\"none\"],[24,\"stroke\",\"currentColor\"],[24,\"stroke-linecap\",\"round\"],[24,\"stroke-linejoin\",\"round\"],[24,\"stroke-width\",\"2\"],[24,0,\"icon icon-tabler icons-tabler-outline icon-tabler-info-small\"],[24,\"viewBox\",\"0 0 24 24\"],[17,1],[12],[10,\"path\"],[14,\"stroke\",\"none\"],[14,\"d\",\"M0 0h24v24H0z\"],[12],[13],[10,\"path\"],[14,\"d\",\"M12 9h.01M11 12h1v4h1\"],[12],[13],[13],[1,\"\\n\"]],[\"&attrs\"],[]]",
|
|
1239
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/info-small.gts",
|
|
1240
|
+
"isStrictMode": true
|
|
1241
|
+
}), templateOnly());
|
|
1242
|
+
IconComponent.name = "info-small";
|
|
1243
|
+
//#endregion
|
|
1244
|
+
//#region ../pretui/components/alert.gts
|
|
1245
|
+
var ALERT_TONES = [
|
|
1246
|
+
"info",
|
|
1247
|
+
"success",
|
|
1248
|
+
"warning",
|
|
1249
|
+
"danger"
|
|
1250
|
+
];
|
|
1251
|
+
var ALERT_VARIANTS = {
|
|
1252
|
+
default: "info",
|
|
1253
|
+
destructive: "danger"
|
|
1254
|
+
};
|
|
1255
|
+
var ALERT_COLORS = {
|
|
1256
|
+
info: {
|
|
1257
|
+
hue: "var(--info)",
|
|
1258
|
+
onHue: "var(--info-foreground)"
|
|
1259
|
+
},
|
|
1260
|
+
success: {
|
|
1261
|
+
hue: "var(--success)",
|
|
1262
|
+
onHue: "var(--success-foreground)"
|
|
1263
|
+
},
|
|
1264
|
+
warning: {
|
|
1265
|
+
hue: "var(--warning)",
|
|
1266
|
+
onHue: "var(--warning-foreground)"
|
|
1267
|
+
},
|
|
1268
|
+
danger: {
|
|
1269
|
+
hue: "var(--destructive)",
|
|
1270
|
+
onHue: "var(--destructive-foreground)"
|
|
1271
|
+
}
|
|
1272
|
+
};
|
|
1273
|
+
var ALERT_ICONS = {
|
|
1274
|
+
info: IconComponent,
|
|
1275
|
+
success: IconComponent$9,
|
|
1276
|
+
warning: IconComponent$16,
|
|
1277
|
+
danger: IconComponent$10
|
|
1278
|
+
};
|
|
1279
|
+
var ALERT_TONE_LABELS = {
|
|
1280
|
+
info: "Info",
|
|
1281
|
+
success: "Success",
|
|
1282
|
+
warning: "Warning",
|
|
1283
|
+
danger: "Error"
|
|
1284
|
+
};
|
|
1285
|
+
var Alert = class extends Component {
|
|
1286
|
+
get tone() {
|
|
1287
|
+
let fromVariant = this.args.variant ? ALERT_VARIANTS[this.args.variant] : void 0;
|
|
1288
|
+
return resolveTone(this.args.tone, ALERT_TONES, fromVariant ?? "info");
|
|
1289
|
+
}
|
|
1290
|
+
get role() {
|
|
1291
|
+
return this.tone === "danger" ? "alert" : "status";
|
|
1292
|
+
}
|
|
1293
|
+
get keptStyle() {
|
|
1294
|
+
let { hue, onHue } = ALERT_COLORS[this.tone];
|
|
1295
|
+
return [{
|
|
1296
|
+
property: "--pretui-alert-hue",
|
|
1297
|
+
value: hue,
|
|
1298
|
+
strength: "arg"
|
|
1299
|
+
}, {
|
|
1300
|
+
property: "--pretui-alert-on-hue",
|
|
1301
|
+
value: onHue,
|
|
1302
|
+
strength: "arg"
|
|
1303
|
+
}];
|
|
1304
|
+
}
|
|
1305
|
+
get Glyph() {
|
|
1306
|
+
return ALERT_ICONS[this.tone];
|
|
1307
|
+
}
|
|
1308
|
+
get spokenTone() {
|
|
1309
|
+
return `${this.args.toneLabel ?? ALERT_TONE_LABELS[this.tone]}:`;
|
|
1310
|
+
}
|
|
1311
|
+
static {
|
|
1312
|
+
setComponentTemplate(templateFactory({
|
|
1313
|
+
"id": "AW1vKexa",
|
|
1314
|
+
"block": "[[[11,0],[24,0,\"pretui-alert\"],[16,\"role\",[30,0,[\"role\"]]],[24,\"data-test-pretui-alert\",\"\"],[17,1],[24,\"data-scopedcss-b6fa244805-fb5a3b5d57\",\"\"],[4,[32,0],[[30,0,[\"keptStyle\"]]],null],[12],[1,\"\\n \"],[10,1],[14,0,\"pretui-alert-glyph\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-b6fa244805-fb5a3b5d57\",\"\"],[12],[1,\"\\n \"],[8,[30,0,[\"Glyph\"]],[[24,\"width\",\"12\"],[24,\"height\",\"12\"],[24,\"data-scopedcss-b6fa244805-fb5a3b5d57\",\"\"]],null,null],[1,\"\\n \"],[13],[1,\"\\n \"],[8,[32,1],[[24,\"data-scopedcss-b6fa244805-fb5a3b5d57\",\"\"]],null,[[\"default\"],[[[[1,[30,0,[\"spokenTone\"]]]],[]]]]],[1,\"\\n \"],[10,0],[14,0,\"pretui-alert-body\"],[14,\"data-scopedcss-b6fa244805-fb5a3b5d57\",\"\"],[12],[1,\"\\n \"],[41,[30,2],[[[10,2],[14,0,\"pretui-alert-title\"],[14,\"data-scopedcss-b6fa244805-fb5a3b5d57\",\"\"],[12],[1,[30,2]],[13]],[]],null],[1,\"\\n \"],[41,[48,[30,3]],[[[10,0],[14,\"data-scopedcss-b6fa244805-fb5a3b5d57\",\"\"],[12],[18,3,null],[13]],[]],null],[1,\"\\n \"],[41,[48,[30,4]],[[[10,0],[14,0,\"pretui-alert-action\"],[14,\"data-scopedcss-b6fa244805-fb5a3b5d57\",\"\"],[12],[18,4,null],[13]],[]],null],[1,\"\\n \"],[13],[1,\"\\n\"],[13],[1,\"\\n\"]],[\"&attrs\",\"@title\",\"&default\",\"&action\"],[\"if\",\"has-block\",\"yield\"]]",
|
|
1315
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/alert.gts",
|
|
1316
|
+
"scope": () => [keepStyle, VisuallyHidden],
|
|
1317
|
+
"isStrictMode": true
|
|
1318
|
+
}), this);
|
|
1319
|
+
}
|
|
1320
|
+
};
|
|
1321
|
+
//#endregion
|
|
1322
|
+
//#region ../pretui/internal/ink.gts
|
|
1323
|
+
function statusHue(value) {
|
|
1324
|
+
let h = 0;
|
|
1325
|
+
let s = String(value);
|
|
1326
|
+
for (let i = 0; i < s.length; i++) h = h * 31 + s.charCodeAt(i) >>> 0;
|
|
1327
|
+
return `var(--chart-${h % 5 + 1})`;
|
|
1328
|
+
}
|
|
1329
|
+
//#endregion
|
|
1330
|
+
//#region ../pretui/components/avatar.gts
|
|
1331
|
+
var STARTS_WITH_WORD_CHAR = /* @__PURE__ */ new RegExp("^[\\p{L}\\p{N}]", "u");
|
|
1332
|
+
var SIZE_PROPERTY = "--pretui-avatar-size";
|
|
1333
|
+
var HUE_PROPERTY = "--pretui-chip-hue";
|
|
1334
|
+
var Avatar = class extends Component {
|
|
1335
|
+
static {
|
|
1336
|
+
decorateFieldV2(this.prototype, "failedSrc", [tracked]);
|
|
1337
|
+
}
|
|
1338
|
+
#failedSrc = (initializeDeferredDecorator(this, "failedSrc"), void 0);
|
|
1339
|
+
get initials() {
|
|
1340
|
+
return (this.args.name ?? "").split(/\s+/).filter((w) => STARTS_WITH_WORD_CHAR.test(w)).map((w) => w[0]).slice(0, 2).join("").toUpperCase();
|
|
1341
|
+
}
|
|
1342
|
+
get showImage() {
|
|
1343
|
+
return Boolean(this.args.src) && this.args.src !== this.failedSrc;
|
|
1344
|
+
}
|
|
1345
|
+
imageError = () => {
|
|
1346
|
+
this.failedSrc = this.args.src;
|
|
1347
|
+
};
|
|
1348
|
+
get size() {
|
|
1349
|
+
let size = Number(this.args.size) || void 0;
|
|
1350
|
+
return size === void 0 ? void 0 : `${size / 16}rem`;
|
|
1351
|
+
}
|
|
1352
|
+
get shape() {
|
|
1353
|
+
let { shape } = this.args;
|
|
1354
|
+
return shape === "rounded" || shape === "square" ? shape : void 0;
|
|
1355
|
+
}
|
|
1356
|
+
get explicitHue() {
|
|
1357
|
+
return this.args.hue ?? void 0;
|
|
1358
|
+
}
|
|
1359
|
+
get hue() {
|
|
1360
|
+
let hue = this.explicitHue;
|
|
1361
|
+
return hue === void 0 ? statusHue(this.args.name ?? "") : cssValue(hue);
|
|
1362
|
+
}
|
|
1363
|
+
get style() {
|
|
1364
|
+
return cssStyleFrom([cssDeclaration(SIZE_PROPERTY, this.size), cssDeclaration(HUE_PROPERTY, this.hue)]);
|
|
1365
|
+
}
|
|
1366
|
+
get keptStyle() {
|
|
1367
|
+
return [{
|
|
1368
|
+
property: SIZE_PROPERTY,
|
|
1369
|
+
value: this.size,
|
|
1370
|
+
strength: "arg"
|
|
1371
|
+
}, {
|
|
1372
|
+
property: HUE_PROPERTY,
|
|
1373
|
+
value: this.hue,
|
|
1374
|
+
strength: this.explicitHue === void 0 ? "default" : "arg"
|
|
1375
|
+
}];
|
|
1376
|
+
}
|
|
1377
|
+
static {
|
|
1378
|
+
setComponentTemplate(templateFactory({
|
|
1379
|
+
"id": "1puKX5ao",
|
|
1380
|
+
"block": "[[[11,1],[24,0,\"pretui-avatar\"],[16,\"title\",[30,1]],[16,\"role\",[52,[51,[30,0,[\"showImage\"]]],\"img\"]],[16,\"aria-label\",[52,[51,[30,0,[\"showImage\"]]],[30,1]]],[16,\"data-has-image\",[52,[30,0,[\"showImage\"]],\"true\"]],[16,\"data-shape\",[30,0,[\"shape\"]]],[16,5,[30,0,[\"style\"]]],[24,\"data-test-pretui-avatar\",\"\"],[17,2],[24,\"data-scopedcss-5178d38d8c-2454ccc101\",\"\"],[4,[32,0],[[30,0,[\"keptStyle\"]]],null],[12],[1,\"\\n \"],[41,[30,0,[\"showImage\"]],[[[11,\"img\"],[16,\"src\",[30,3]],[16,\"alt\",[30,1]],[24,\"data-scopedcss-5178d38d8c-2454ccc101\",\"\"],[4,[32,1],[\"error\",[30,0,[\"imageError\"]]],null],[12],[13]],[]],[[[1,[30,0,[\"initials\"]]]],[]]],[1,\"\\n\"],[13],[1,\"\\n\"]],[\"@name\",\"&attrs\",\"@src\"],[\"unless\",\"if\"]]",
|
|
1381
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/avatar.gts",
|
|
1382
|
+
"scope": () => [keepStyle, on],
|
|
1383
|
+
"isStrictMode": true
|
|
1384
|
+
}), this);
|
|
1385
|
+
}
|
|
1386
|
+
};
|
|
1387
|
+
//#endregion
|
|
1388
|
+
//#region ../pretui/components/dialog.gts
|
|
1389
|
+
var DIALOG_SIZES = {
|
|
1390
|
+
xs: "s",
|
|
1391
|
+
s: "s",
|
|
1392
|
+
m: "m",
|
|
1393
|
+
l: "l",
|
|
1394
|
+
xl: "l"
|
|
1395
|
+
};
|
|
1396
|
+
var Dialog = class extends Component {
|
|
1397
|
+
get popupsInPlace() {
|
|
1398
|
+
return true;
|
|
1399
|
+
}
|
|
1400
|
+
static {
|
|
1401
|
+
decorateMethodV2(this.prototype, "popupsInPlace", [provide(POPUPS_IN_PLACE)]);
|
|
1402
|
+
}
|
|
1403
|
+
get dismissible() {
|
|
1404
|
+
return this.args.dismissible ?? true;
|
|
1405
|
+
}
|
|
1406
|
+
get open() {
|
|
1407
|
+
return resolveOpen(this.args);
|
|
1408
|
+
}
|
|
1409
|
+
get size() {
|
|
1410
|
+
return DIALOG_SIZES[resolveSize(this.args.size)] ?? "m";
|
|
1411
|
+
}
|
|
1412
|
+
requestClose() {
|
|
1413
|
+
emit([this.args.onClose]);
|
|
1414
|
+
emit([this.args.onOpenChange], false);
|
|
1415
|
+
}
|
|
1416
|
+
onCancel = (e) => {
|
|
1417
|
+
e.preventDefault();
|
|
1418
|
+
if (this.dismissible) this.requestClose();
|
|
1419
|
+
};
|
|
1420
|
+
onClick = (e) => {
|
|
1421
|
+
if (this.dismissible && e.target === e.currentTarget) this.requestClose();
|
|
1422
|
+
};
|
|
1423
|
+
static {
|
|
1424
|
+
setComponentTemplate(templateFactory({
|
|
1425
|
+
"id": "Xsw334hr",
|
|
1426
|
+
"block": "[[[11,\"dialog\"],[24,0,\"pretui-dialog\"],[16,\"data-size\",[30,0,[\"size\"]]],[16,\"aria-label\",[30,1]],[24,\"data-test-pretui-dialog\",\"\"],[17,2],[24,\"data-scopedcss-fd5ccb4071-98262ab512\",\"\"],[4,[32,0],[[30,0,[\"open\"]],[30,0,[\"onCancel\"]],[30,0,[\"onClick\"]]],null],[12],[1,\"\\n \"],[10,0],[14,0,\"pretui-dialog-inner\"],[14,\"data-scopedcss-fd5ccb4071-98262ab512\",\"\"],[12],[1,\"\\n\"],[41,[48,[30,3]],[[[1,\" \"],[10,\"header\"],[14,0,\"pretui-dialog-title\"],[14,\"data-scopedcss-fd5ccb4071-98262ab512\",\"\"],[12],[18,3,null],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[10,0],[14,0,\"pretui-dialog-body\"],[14,\"data-scopedcss-fd5ccb4071-98262ab512\",\"\"],[12],[18,4,null],[13],[1,\"\\n\"],[41,[48,[30,5]],[[[1,\" \"],[10,\"footer\"],[14,0,\"pretui-dialog-footer\"],[14,\"data-scopedcss-fd5ccb4071-98262ab512\",\"\"],[12],[18,5,null],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n\"],[13],[1,\"\\n\"]],[\"@label\",\"&attrs\",\"&title\",\"&default\",\"&footer\"],[\"if\",\"has-block\",\"yield\"]]",
|
|
1427
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/dialog.gts",
|
|
1428
|
+
"scope": () => [modalBehavior],
|
|
1429
|
+
"isStrictMode": true
|
|
1430
|
+
}), this);
|
|
1431
|
+
}
|
|
1432
|
+
};
|
|
1433
|
+
//#endregion
|
|
1434
|
+
//#region ../pretui/components/item.gts
|
|
1435
|
+
var Item = class extends Component {
|
|
1436
|
+
get size() {
|
|
1437
|
+
return resolveSize(this.args.size);
|
|
1438
|
+
}
|
|
1439
|
+
get align() {
|
|
1440
|
+
return this.args.alignStart ? "start" : "center";
|
|
1441
|
+
}
|
|
1442
|
+
static {
|
|
1443
|
+
setComponentTemplate(templateFactory({
|
|
1444
|
+
"id": "ko3oU85L",
|
|
1445
|
+
"block": "[[[11,0],[24,0,\"pretui-item\"],[24,\"data-test-pretui-item\",\"\"],[16,\"data-size\",[30,0,[\"size\"]]],[16,\"data-align\",[30,0,[\"align\"]]],[16,\"data-wrap\",[52,[30,1],\"true\"]],[17,2],[24,\"data-scopedcss-8d0ffb3c65-113e8e2955\",\"\"],[12],[1,\"\\n\"],[41,[48,[30,6]],[[[1,\" \"],[10,0],[14,0,\"pretui-item-lead\"],[14,\"data-scopedcss-8d0ffb3c65-113e8e2955\",\"\"],[12],[18,6,null],[13],[1,\"\\n\"]],[]],null],[1,\"\\n \"],[10,0],[14,0,\"pretui-item-body\"],[14,\"data-scopedcss-8d0ffb3c65-113e8e2955\",\"\"],[12],[1,\"\\n\"],[41,[48,[30,7]],[[[1,\" \"],[10,1],[14,0,\"pretui-item-title\"],[14,\"data-scopedcss-8d0ffb3c65-113e8e2955\",\"\"],[12],[18,7,null],[13],[1,\"\\n\"]],[]],[[[41,[30,3],[[[41,[30,4],[[[1,\" \"],[10,3],[14,0,\"pretui-item-title pretui-item-link\"],[15,6,[30,4]],[14,\"data-scopedcss-8d0ffb3c65-113e8e2955\",\"\"],[12],[1,[30,3]],[13],[1,\"\\n\"]],[]],[[[1,\" \"],[10,1],[14,0,\"pretui-item-title\"],[14,\"data-scopedcss-8d0ffb3c65-113e8e2955\",\"\"],[12],[1,[30,3]],[13],[1,\"\\n\"]],[]]],[1,\" \"]],[]],null]],[]]],[1,\"\\n\"],[41,[48,[30,8]],[[[1,\" \"],[10,1],[14,0,\"pretui-item-desc\"],[14,\"data-scopedcss-8d0ffb3c65-113e8e2955\",\"\"],[12],[18,8,null],[13],[1,\"\\n\"]],[]],[[[41,[30,5],[[[1,\" \"],[10,1],[14,0,\"pretui-item-desc\"],[14,\"data-scopedcss-8d0ffb3c65-113e8e2955\",\"\"],[12],[1,[30,5]],[13],[1,\"\\n \"]],[]],null]],[]]],[1,\"\\n\"],[41,[48,[30,9]],[[[1,\" \"],[10,0],[14,0,\"pretui-item-content\"],[14,\"data-scopedcss-8d0ffb3c65-113e8e2955\",\"\"],[12],[18,9,null],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n\\n\"],[41,[48,[30,10]],[[[1,\" \"],[10,0],[14,0,\"pretui-item-trail\"],[14,\"data-scopedcss-8d0ffb3c65-113e8e2955\",\"\"],[12],[18,10,null],[13],[1,\"\\n\"]],[]],null],[41,[48,[30,11]],[[[1,\" \"],[10,0],[14,0,\"pretui-item-actions\"],[14,\"data-scopedcss-8d0ffb3c65-113e8e2955\",\"\"],[12],[18,11,null],[13],[1,\"\\n\"]],[]],null],[13],[1,\"\\n\"]],[\"@wrap\",\"&attrs\",\"@title\",\"@href\",\"@description\",\"&leading\",\"&title\",\"&description\",\"&default\",\"&trailing\",\"&actions\"],[\"if\",\"has-block\",\"yield\"]]",
|
|
1446
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/item.gts",
|
|
1447
|
+
"isStrictMode": true
|
|
1448
|
+
}), this);
|
|
1449
|
+
}
|
|
1450
|
+
};
|
|
1451
|
+
//#endregion
|
|
1452
|
+
//#region ../pretui/components/broken-link.gts
|
|
1453
|
+
var BrokenLink = class extends Component {
|
|
1454
|
+
get label() {
|
|
1455
|
+
return this.args.label ?? "missing card";
|
|
1456
|
+
}
|
|
1457
|
+
static {
|
|
1458
|
+
setComponentTemplate(templateFactory({
|
|
1459
|
+
"id": "ANxE2OLx",
|
|
1460
|
+
"block": "[[[11,1],[24,0,\"pretui-broken\"],[24,\"title\",\"This reference is gone\"],[24,\"data-test-pretui-broken-link\",\"\"],[17,1],[24,\"data-scopedcss-ff94cba008-71a083bb1d\",\"\"],[12],[1,\"\\n \"],[10,\"svg\"],[14,\"width\",\"11\"],[14,\"height\",\"11\"],[14,\"viewBox\",\"0 0 12 12\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-ff94cba008-71a083bb1d\",\"\"],[12],[10,\"path\"],[14,\"d\",\"M4.5 7.5 2.8 9.2a1.7 1.7 0 0 1-2.4-2.4L2.8 4.4M7.5 4.5l1.7-1.7a1.7 1.7 0 0 1 2.4 2.4L9.2 7.6M1 1l10 10\"],[14,\"fill\",\"none\"],[14,\"stroke\",\"currentColor\"],[14,\"stroke-width\",\"1.3\"],[14,\"stroke-linecap\",\"round\"],[14,\"data-scopedcss-ff94cba008-71a083bb1d\",\"\"],[12],[13],[13],[1,\"\\n \"],[10,1],[14,\"data-scopedcss-ff94cba008-71a083bb1d\",\"\"],[12],[1,[30,0,[\"label\"]]],[13],[1,\"\\n \"],[41,[30,2],[[[10,1],[14,0,\"pretui-broken-id\"],[14,\"data-scopedcss-ff94cba008-71a083bb1d\",\"\"],[12],[1,[30,2]],[13]],[]],null],[1,\"\\n\"],[13],[1,\"\\n\"]],[\"&attrs\",\"@refId\"],[\"if\"]]",
|
|
1461
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/broken-link.gts",
|
|
1462
|
+
"isStrictMode": true
|
|
1463
|
+
}), this);
|
|
1464
|
+
}
|
|
1465
|
+
};
|
|
1466
|
+
//#endregion
|
|
1467
|
+
//#region ../pretui/components/empty-state.gts
|
|
1468
|
+
var EMPTY_STATE_SIZES = {
|
|
1469
|
+
xs: "s",
|
|
1470
|
+
s: "s",
|
|
1471
|
+
m: "m",
|
|
1472
|
+
l: "m",
|
|
1473
|
+
xl: "m"
|
|
1474
|
+
};
|
|
1475
|
+
var EmptyState = class extends Component {
|
|
1476
|
+
get showTexture() {
|
|
1477
|
+
return this.args.texture ?? true;
|
|
1478
|
+
}
|
|
1479
|
+
get separator() {
|
|
1480
|
+
return this.args.separator ?? "or";
|
|
1481
|
+
}
|
|
1482
|
+
get size() {
|
|
1483
|
+
return EMPTY_STATE_SIZES[resolveSize(this.args.size)] ?? "m";
|
|
1484
|
+
}
|
|
1485
|
+
static {
|
|
1486
|
+
setComponentTemplate(templateFactory({
|
|
1487
|
+
"id": "yJcwZ0yC",
|
|
1488
|
+
"block": "[[[11,0],[24,0,\"pretui-empty\"],[16,\"data-size\",[30,0,[\"size\"]]],[24,\"data-test-pretui-empty\",\"\"],[17,1],[24,\"data-scopedcss-b2f493050b-b045568bce\",\"\"],[12],[1,\"\\n \"],[41,[30,0,[\"showTexture\"]],[[[10,0],[14,0,\"pretui-empty-texture\"],[14,\"data-scopedcss-b2f493050b-b045568bce\",\"\"],[12],[13]],[]],null],[1,\"\\n \"],[10,0],[14,0,\"pretui-empty-title\"],[14,\"data-scopedcss-b2f493050b-b045568bce\",\"\"],[12],[1,[30,2]],[13],[1,\"\\n\"],[41,[48,[30,4]],[[[1,\" \"],[10,0],[14,0,\"pretui-empty-msg\"],[14,\"data-scopedcss-b2f493050b-b045568bce\",\"\"],[12],[18,4,null],[13],[1,\"\\n\"]],[]],[[[41,[30,3],[[[1,\" \"],[10,2],[14,0,\"pretui-empty-msg\"],[14,\"data-scopedcss-b2f493050b-b045568bce\",\"\"],[12],[1,[30,3]],[13],[1,\"\\n \"]],[]],null]],[]]],[41,[48,[30,5]],[[[1,\" \"],[10,0],[14,0,\"pretui-empty-paths\"],[14,\"data-scopedcss-b2f493050b-b045568bce\",\"\"],[12],[1,\"\\n \"],[10,0],[14,0,\"pretui-empty-action\"],[14,\"data-scopedcss-b2f493050b-b045568bce\",\"\"],[12],[18,6,null],[13],[1,\"\\n \"],[10,0],[14,0,\"pretui-empty-sep\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-b2f493050b-b045568bce\",\"\"],[12],[1,[30,0,[\"separator\"]]],[13],[1,\"\\n \"],[10,0],[14,0,\"pretui-empty-action\"],[14,\"data-scopedcss-b2f493050b-b045568bce\",\"\"],[12],[18,5,null],[13],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],[[[41,[48,[30,6]],[[[1,\" \"],[10,0],[14,0,\"pretui-empty-action\"],[14,\"data-scopedcss-b2f493050b-b045568bce\",\"\"],[12],[18,6,null],[13],[1,\"\\n \"]],[]],null]],[]]],[13],[1,\"\\n\"]],[\"&attrs\",\"@title\",\"@message\",\"&default\",\"&altAction\",\"&action\"],[\"if\",\"has-block\",\"yield\"]]",
|
|
1489
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/empty-state.gts",
|
|
1490
|
+
"isStrictMode": true
|
|
1491
|
+
}), this);
|
|
1492
|
+
}
|
|
1493
|
+
};
|
|
1494
|
+
//#endregion
|
|
1495
|
+
//#region ../pretui/components/skeleton.gts
|
|
1496
|
+
var Skeleton = class extends Component {
|
|
1497
|
+
get style() {
|
|
1498
|
+
return cssStyleFrom([cssDeclaration("--_w", this.args.width ?? "100%"), cssDeclaration("--_h", this.args.height ?? "12px")]);
|
|
1499
|
+
}
|
|
1500
|
+
static {
|
|
1501
|
+
setComponentTemplate(templateFactory({
|
|
1502
|
+
"id": "6lgKSRT5",
|
|
1503
|
+
"block": "[[[11,1],[24,0,\"pretui-skeleton\"],[16,5,[30,0,[\"style\"]]],[24,\"aria-hidden\",\"true\"],[24,\"data-test-pretui-skeleton\",\"\"],[17,1],[24,\"data-scopedcss-537b3a02bc-0566fde4f2\",\"\"],[12],[13],[1,\"\\n\"]],[\"&attrs\"],[]]",
|
|
1504
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/skeleton.gts",
|
|
1505
|
+
"isStrictMode": true
|
|
1506
|
+
}), this);
|
|
1507
|
+
}
|
|
1508
|
+
};
|
|
1509
|
+
//#endregion
|
|
1510
|
+
//#region ../pretui/data-component.gts
|
|
1511
|
+
/** What a row is keyed by. Strings and numbers only — a key is compared with
|
|
1512
|
+
* `===` and must survive being written into a `data-` attribute. */
|
|
1513
|
+
/** Caller-supplied key accessor: stable identity for one row. */
|
|
1514
|
+
/** The dataset loader. Deliberately knows nothing about HTTP: it is any
|
|
1515
|
+
* function returning a promise of rows. */
|
|
1516
|
+
/** How many rows may be selected at once. */
|
|
1517
|
+
/** Sort direction. */
|
|
1518
|
+
/** The current sort: a column key plus a direction. `null` means unsorted,
|
|
1519
|
+
* which is a third state the asc/desc cycle passes through. */
|
|
1520
|
+
/**
|
|
1521
|
+
* THE documented key fallback, shared by every collection in the kit.
|
|
1522
|
+
*
|
|
1523
|
+
* 1. `@key` accessor if the caller supplied one — always prefer this.
|
|
1524
|
+
* 2. otherwise the row's own `id` when it is a string or number (the shape
|
|
1525
|
+
* Boxel cards, `FeedItem` and every fixture in examples.gts already have);
|
|
1526
|
+
* 3. otherwise the row's 0-based index.
|
|
1527
|
+
*
|
|
1528
|
+
* Branch 3 is a real, documented compromise, not a silent one: an
|
|
1529
|
+
* index-keyed row's identity MOVES when the collection is re-sorted or
|
|
1530
|
+
* spliced, so selection and the active row follow the position rather than
|
|
1531
|
+
* the record. Any collection whose rows can be re-ordered should pass `@key`.
|
|
1532
|
+
*/
|
|
1533
|
+
function defaultRowKey(row, index) {
|
|
1534
|
+
if (row && typeof row === "object") {
|
|
1535
|
+
let id = row["id"];
|
|
1536
|
+
if (typeof id === "string" || typeof id === "number") return id;
|
|
1537
|
+
}
|
|
1538
|
+
return index;
|
|
1539
|
+
}
|
|
1540
|
+
/** Reads one field off a row for the default comparator. Rows are generic,
|
|
1541
|
+
* so the read is an explicit widening rather than an `any`. */
|
|
1542
|
+
function readField(row, key) {
|
|
1543
|
+
return row && typeof row === "object" ? row[key] : void 0;
|
|
1544
|
+
}
|
|
1545
|
+
/** Total order over unknown values: numbers numerically, everything else by
|
|
1546
|
+
* locale-free string compare, with null/undefined last in either direction.
|
|
1547
|
+
* Anything richer (dates as objects, money, nested paths) wants `@comparator`. */
|
|
1548
|
+
function compareValues(a, b) {
|
|
1549
|
+
let aMissing = a === void 0 || a === null;
|
|
1550
|
+
let bMissing = b === void 0 || b === null;
|
|
1551
|
+
if (aMissing || bMissing) return aMissing && bMissing ? 0 : aMissing ? 1 : -1;
|
|
1552
|
+
if (typeof a === "number" && typeof b === "number") return a - b;
|
|
1553
|
+
if (typeof a === "boolean" && typeof b === "boolean") return Number(a) - Number(b);
|
|
1554
|
+
let as = String(a);
|
|
1555
|
+
let bs = String(b);
|
|
1556
|
+
return as < bs ? -1 : as > bs ? 1 : 0;
|
|
1557
|
+
}
|
|
1558
|
+
/** Everything is an Error by the time it reaches tracked state — a thrown
|
|
1559
|
+
* string, a rejected `{ message }`, or a genuine Error. Never swallowed. */
|
|
1560
|
+
function toError(thrown) {
|
|
1561
|
+
if (thrown instanceof Error) return thrown;
|
|
1562
|
+
if (typeof thrown === "string") return new Error(thrown);
|
|
1563
|
+
let message = readField(thrown, "message");
|
|
1564
|
+
return new Error(typeof message === "string" ? message : "Load failed");
|
|
1565
|
+
}
|
|
1566
|
+
/** Re-runs `beginLoad()` whenever the loader, its key, or the reload epoch
|
|
1567
|
+
* changes. Exported so a subclass that writes its own `<template>` (and
|
|
1568
|
+
* therefore does not render `<DataShell>`) can still wire the loader. */
|
|
1569
|
+
var dataLoad = modifier((_el, [state, _load, _key, _epoch]) => {
|
|
1570
|
+
state.beginLoad();
|
|
1571
|
+
});
|
|
1572
|
+
/**
|
|
1573
|
+
* The narrow, non-generic slice of a data component that the shared chrome
|
|
1574
|
+
* needs. `DataComponent` implements it; a component that cannot extend
|
|
1575
|
+
* `DataComponent` (because it already extends something else) can implement
|
|
1576
|
+
* this instead and still wear the same chrome.
|
|
1577
|
+
*/
|
|
1578
|
+
/**
|
|
1579
|
+
* The small amount of shared chrome that goes with the base class: the
|
|
1580
|
+
* `aria-busy` root, the polite live region, and the four state slots. It is a
|
|
1581
|
+
* separate component precisely so a subclass that writes its own
|
|
1582
|
+
* `<template>` keeps every accessibility guarantee without copying it.
|
|
1583
|
+
*/
|
|
1584
|
+
var DataShell = class extends Component {
|
|
1585
|
+
get isLoading() {
|
|
1586
|
+
return this.args.state.status === "loading";
|
|
1587
|
+
}
|
|
1588
|
+
get isError() {
|
|
1589
|
+
return this.args.state.status === "error";
|
|
1590
|
+
}
|
|
1591
|
+
get isEmpty() {
|
|
1592
|
+
return this.args.state.status === "empty";
|
|
1593
|
+
}
|
|
1594
|
+
get skeletonRows() {
|
|
1595
|
+
let n = Math.max(1, Math.floor(this.args.skeletonRows ?? 3));
|
|
1596
|
+
let out = [];
|
|
1597
|
+
for (let i = 0; i < n; i++) out.push(i);
|
|
1598
|
+
return out;
|
|
1599
|
+
}
|
|
1600
|
+
get loadingLabel() {
|
|
1601
|
+
return this.args.loadingLabel ?? "Loading";
|
|
1602
|
+
}
|
|
1603
|
+
get emptyTitle() {
|
|
1604
|
+
return this.args.emptyTitle ?? "Nothing to show yet";
|
|
1605
|
+
}
|
|
1606
|
+
get emptyMessage() {
|
|
1607
|
+
return this.args.emptyMessage ?? "No records match this view. Adjust the filters, or check back once the desk has logged something.";
|
|
1608
|
+
}
|
|
1609
|
+
get errorTitle() {
|
|
1610
|
+
return this.args.errorTitle ?? "Could not load";
|
|
1611
|
+
}
|
|
1612
|
+
retry = () => {
|
|
1613
|
+
this.args.state.reload();
|
|
1614
|
+
};
|
|
1615
|
+
static {
|
|
1616
|
+
setComponentTemplate(templateFactory({
|
|
1617
|
+
"id": "MNDOTS8w",
|
|
1618
|
+
"block": "[[[11,0],[24,0,\"pretui-data\"],[24,\"data-test-pretui-data\",\"\"],[16,\"data-status\",[30,1,[\"status\"]]],[16,\"aria-busy\",[30,1,[\"busy\"]]],[17,2],[24,\"data-scopedcss-cf92ce48c1-f088545998\",\"\"],[4,[32,0],[[30,1],[30,1,[\"loadFn\"]],[30,1,[\"loadKey\"]],[30,1,[\"epoch\"]]],null],[12],[1,\"\\n\"],[1,\" \"],[10,2],[14,0,\"pretui-sr\"],[14,\"role\",\"status\"],[14,\"data-test-pretui-data-live\",\"\"],[14,\"data-scopedcss-cf92ce48c1-f088545998\",\"\"],[12],[1,\"\\n \"],[1,[30,1,[\"announcement\"]]],[1,\"\\n \"],[13],[1,\"\\n\\n\"],[41,[30,0,[\"isLoading\"]],[[[41,[30,3],[[[1,\" \"],[18,7,null],[1,\"\\n\"]],[]],[[[1,\" \"],[10,0],[14,0,\"pretui-data-loading\"],[14,\"data-scopedcss-cf92ce48c1-f088545998\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"pretui-data-loading-head\"],[14,\"data-scopedcss-cf92ce48c1-f088545998\",\"\"],[12],[1,\"\\n \"],[8,[32,1],[[24,\"data-scopedcss-cf92ce48c1-f088545998\",\"\"]],null,null],[1,\"\\n \"],[10,1],[14,\"data-scopedcss-cf92ce48c1-f088545998\",\"\"],[12],[1,[30,0,[\"loadingLabel\"]]],[13],[1,\"\\n \"],[13],[1,\"\\n\"],[42,[28,[31,3],[[28,[31,3],[[30,0,[\"skeletonRows\"]]],null]],null],\"@index\",[[[1,\" \"],[10,1],[14,0,\"pretui-data-skeleton\"],[15,\"data-row\",[30,4]],[14,\"data-scopedcss-cf92ce48c1-f088545998\",\"\"],[12],[1,\"\\n \"],[8,[32,2],[[24,\"data-scopedcss-cf92ce48c1-f088545998\",\"\"]],[[\"@width\",\"@height\"],[\"34%\",\"11px\"]],null],[1,\"\\n \"],[8,[32,2],[[24,\"data-scopedcss-cf92ce48c1-f088545998\",\"\"]],[[\"@height\"],[\"11px\"]],null],[1,\"\\n \"],[13],[1,\"\\n\"]],[4]],null],[1,\" \"],[13],[1,\"\\n\"]],[]]]],[]],[[[41,[30,0,[\"isError\"]],[[[41,[30,5],[[[1,\" \"],[18,8,null],[1,\"\\n\"]],[]],[[[1,\" \"],[8,[32,3],[[24,\"data-scopedcss-cf92ce48c1-f088545998\",\"\"]],[[\"@tone\",\"@title\"],[\"danger\",[30,0,[\"errorTitle\"]]]],[[\"default\",\"action\"],[[[[1,\"\\n \"],[10,2],[14,0,\"pretui-data-errmsg\"],[14,\"data-scopedcss-cf92ce48c1-f088545998\",\"\"],[12],[1,[30,1,[\"errorMessage\"]]],[13],[1,\"\\n\"],[41,[30,1,[\"loadRef\"]],[[[1,\" \"],[8,[32,4],[[24,\"data-scopedcss-cf92ce48c1-f088545998\",\"\"]],[[\"@label\",\"@refId\"],[\"dataset unavailable\",[30,1,[\"loadRef\"]]]],null],[1,\"\\n\"]],[]],null],[1,\" \"]],[]],[[[1,\"\\n\"],[41,[30,1,[\"canRetry\"]],[[[1,\" \"],[8,[32,5],[[24,\"data-test-pretui-data-retry\",\"\"],[24,\"data-scopedcss-cf92ce48c1-f088545998\",\"\"],[4,[32,6],[\"click\",[30,0,[\"retry\"]]],null]],[[\"@appearance\",\"@size\"],[\"outlined\",\"s\"]],[[\"default\"],[[[[1,\"Try again\"]],[]]]]],[1,\"\\n\"]],[]],null],[1,\" \"]],[]]]]],[1,\"\\n\"]],[]]]],[]],[[[41,[30,0,[\"isEmpty\"]],[[[41,[30,6],[[[1,\" \"],[18,9,null],[1,\"\\n\"]],[]],[[[1,\" \"],[8,[32,7],[[24,\"data-scopedcss-cf92ce48c1-f088545998\",\"\"]],[[\"@title\",\"@message\"],[[30,0,[\"emptyTitle\"]],[30,0,[\"emptyMessage\"]]]],null],[1,\"\\n\"]],[]]]],[]],[[[1,\" \"],[18,10,null],[1,\"\\n \"]],[]]]],[]]]],[]]],[13],[1,\"\\n\"]],[\"@state\",\"&attrs\",\"@hasLoading\",\"row\",\"@hasError\",\"@hasEmpty\",\"&loading\",\"&error\",\"&empty\",\"&default\"],[\"if\",\"yield\",\"each\",\"-track-array\"]]",
|
|
1619
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/data-component.gts",
|
|
1620
|
+
"scope": () => [
|
|
1621
|
+
dataLoad,
|
|
1622
|
+
Spinner,
|
|
1623
|
+
Skeleton,
|
|
1624
|
+
Alert,
|
|
1625
|
+
BrokenLink,
|
|
1626
|
+
Button,
|
|
1627
|
+
on,
|
|
1628
|
+
EmptyState
|
|
1629
|
+
],
|
|
1630
|
+
"isStrictMode": true
|
|
1631
|
+
}), this);
|
|
1632
|
+
}
|
|
1633
|
+
};
|
|
1634
|
+
/**
|
|
1635
|
+
* Everything a data component accepts. Subclasses widen this through the
|
|
1636
|
+
* `Extra` type parameter rather than re-declaring it.
|
|
1637
|
+
*/
|
|
1638
|
+
/** The interaction surface yielded to the default block alongside the rows.
|
|
1639
|
+
* Everything here is safe to call from a template. */
|
|
1640
|
+
/** The expanded-rows args DataTable and List share. */
|
|
1641
|
+
/** One row's expansion, everything its expander and detail need. */
|
|
1642
|
+
/**
|
|
1643
|
+
* Which rows are expanded, by key, and the ARIA wiring for each row's
|
|
1644
|
+
* expander. Controlled when `@expandedKeys` is passed (the host never moves
|
|
1645
|
+
* itself, it only reports), uncontrolled otherwise, seeded from
|
|
1646
|
+
* `@defaultExpandedKeys`. Takes a thunk for the same reason DataSource does:
|
|
1647
|
+
* every read goes through the live args. DataTable and List both use it, so
|
|
1648
|
+
* the state rule and the ARIA contract cannot drift between them.
|
|
1649
|
+
*/
|
|
1650
|
+
var ExpansionState = class {
|
|
1651
|
+
constructor(readArgs, idPrefix) {
|
|
1652
|
+
this.readArgs = readArgs;
|
|
1653
|
+
this.idPrefix = idPrefix;
|
|
1654
|
+
}
|
|
1655
|
+
static {
|
|
1656
|
+
decorateFieldV2(this.prototype, "internal", [tracked], function() {});
|
|
1657
|
+
}
|
|
1658
|
+
#internal = (initializeDeferredDecorator(this, "internal"), void 0);
|
|
1659
|
+
get keys() {
|
|
1660
|
+
let a = this.readArgs();
|
|
1661
|
+
if (a.expandedKeys !== void 0) return a.expandedKeys;
|
|
1662
|
+
return this.internal ?? a.defaultExpandedKeys ?? [];
|
|
1663
|
+
}
|
|
1664
|
+
/** A Set keeps 1 and '1' distinct, as `includes` does. */
|
|
1665
|
+
get keySet() {
|
|
1666
|
+
return new Set(this.keys);
|
|
1667
|
+
}
|
|
1668
|
+
static {
|
|
1669
|
+
decorateMethodV2(this.prototype, "keySet", [cached]);
|
|
1670
|
+
}
|
|
1671
|
+
isExpanded = (key) => this.keySet.has(key);
|
|
1672
|
+
/** The detail id is built from the row's position: a key can hold
|
|
1673
|
+
* spaces, and 1 and '1' are distinct keys. */
|
|
1674
|
+
viewFor(key, index, label) {
|
|
1675
|
+
let expanded = this.isExpanded(key);
|
|
1676
|
+
let detailId = this.idPrefix + "-d-" + String(index);
|
|
1677
|
+
return {
|
|
1678
|
+
expanded,
|
|
1679
|
+
expandedFlag: expanded ? "true" : "false",
|
|
1680
|
+
detailId,
|
|
1681
|
+
controls: expanded ? detailId : void 0,
|
|
1682
|
+
expandLabel: (expanded ? "Collapse " : "Expand ") + label
|
|
1683
|
+
};
|
|
1684
|
+
}
|
|
1685
|
+
toggle = (key) => {
|
|
1686
|
+
let current = this.keys;
|
|
1687
|
+
let next = current.includes(key) ? current.filter((k) => k !== key) : [...current, key];
|
|
1688
|
+
let a = this.readArgs();
|
|
1689
|
+
if (a.expandedKeys === void 0) this.internal = next;
|
|
1690
|
+
a.onExpandedChange?.([...next]);
|
|
1691
|
+
};
|
|
1692
|
+
};
|
|
1693
|
+
/**
|
|
1694
|
+
* THE state machine, as a plain class rather than a component.
|
|
1695
|
+
*
|
|
1696
|
+
* It is separate from `DataComponent` for a reason that is worth stating,
|
|
1697
|
+
* because it is the difference between a base class that only serves its own
|
|
1698
|
+
* demo and one the whole kit can use. Glint infers a component's row type
|
|
1699
|
+
* from its `Args` type — and inference dies the moment `Args` is anything
|
|
1700
|
+
* but a bare `DataArgs<T>`: an intersection with an `Extra` type parameter
|
|
1701
|
+
* (`DataArgs<T> & Extra`) makes every caller's `T` collapse to `{}`. So a
|
|
1702
|
+
* base class cannot both infer `T` and let subclasses add their own args.
|
|
1703
|
+
*
|
|
1704
|
+
* Inheritance therefore covers the plain case, and DELEGATION covers the
|
|
1705
|
+
* rest: a component with its own signature — `@columns`, `@series`, extra
|
|
1706
|
+
* blocks, a different Element — holds a DataSource, points `<DataShell>` at
|
|
1707
|
+
* it, and gets the identical state machine:
|
|
1708
|
+
*
|
|
1709
|
+
* class KitTable<T> extends Component<KitTableSignature<T>> {
|
|
1710
|
+
* data = new DataSource<T>(() => this.args);
|
|
1711
|
+
* <template><DataShell @state={{this.data}}> … </DataShell></template>
|
|
1712
|
+
* }
|
|
1713
|
+
*
|
|
1714
|
+
* The constructor takes a THUNK, not the args object, so every read goes
|
|
1715
|
+
* through the live `this.args` and autotracking stays intact.
|
|
1716
|
+
*/
|
|
1717
|
+
var DataSource = class {
|
|
1718
|
+
constructor(readArgs) {
|
|
1719
|
+
this.readArgs = readArgs;
|
|
1720
|
+
}
|
|
1721
|
+
/** the host's current args — read through the thunk on every access so
|
|
1722
|
+
* tracked argument changes are observed normally */
|
|
1723
|
+
get a() {
|
|
1724
|
+
return this.readArgs();
|
|
1725
|
+
}
|
|
1726
|
+
static {
|
|
1727
|
+
decorateFieldV2(this.prototype, "loadedRows", [tracked], function() {
|
|
1728
|
+
return [];
|
|
1729
|
+
});
|
|
1730
|
+
}
|
|
1731
|
+
#loadedRows = (initializeDeferredDecorator(this, "loadedRows"), void 0);
|
|
1732
|
+
static {
|
|
1733
|
+
decorateFieldV2(this.prototype, "inFlight", [tracked], function() {
|
|
1734
|
+
return false;
|
|
1735
|
+
});
|
|
1736
|
+
}
|
|
1737
|
+
#inFlight = (initializeDeferredDecorator(this, "inFlight"), void 0);
|
|
1738
|
+
static {
|
|
1739
|
+
decorateFieldV2(this.prototype, "settled", [tracked], function() {
|
|
1740
|
+
return false;
|
|
1741
|
+
});
|
|
1742
|
+
}
|
|
1743
|
+
#settled = (initializeDeferredDecorator(this, "settled"), void 0);
|
|
1744
|
+
static {
|
|
1745
|
+
decorateFieldV2(this.prototype, "failure", [tracked], function() {});
|
|
1746
|
+
}
|
|
1747
|
+
#failure = (initializeDeferredDecorator(this, "failure"), void 0);
|
|
1748
|
+
static {
|
|
1749
|
+
decorateFieldV2(this.prototype, "epoch", [tracked], function() {
|
|
1750
|
+
return 0;
|
|
1751
|
+
});
|
|
1752
|
+
}
|
|
1753
|
+
#epoch = (initializeDeferredDecorator(this, "epoch"), void 0);
|
|
1754
|
+
requestToken = 0;
|
|
1755
|
+
static {
|
|
1756
|
+
decorateFieldV2(this.prototype, "internalSelected", [tracked], function() {});
|
|
1757
|
+
}
|
|
1758
|
+
#internalSelected = (initializeDeferredDecorator(this, "internalSelected"), void 0);
|
|
1759
|
+
static {
|
|
1760
|
+
decorateFieldV2(this.prototype, "internalActive", [tracked], function() {});
|
|
1761
|
+
}
|
|
1762
|
+
#internalActive = (initializeDeferredDecorator(this, "internalActive"), void 0);
|
|
1763
|
+
static {
|
|
1764
|
+
decorateFieldV2(this.prototype, "internalSort", [tracked], function() {});
|
|
1765
|
+
}
|
|
1766
|
+
#internalSort = (initializeDeferredDecorator(this, "internalSort"), void 0);
|
|
1767
|
+
get loadFn() {
|
|
1768
|
+
return this.a.load;
|
|
1769
|
+
}
|
|
1770
|
+
get loadKey() {
|
|
1771
|
+
return this.a.loadKey;
|
|
1772
|
+
}
|
|
1773
|
+
get loadRef() {
|
|
1774
|
+
let key = this.a.loadKey;
|
|
1775
|
+
return typeof key === "string" || typeof key === "number" ? String(key) : void 0;
|
|
1776
|
+
}
|
|
1777
|
+
get canRetry() {
|
|
1778
|
+
return this.a.load !== void 0 && this.a.rows === void 0;
|
|
1779
|
+
}
|
|
1780
|
+
/**
|
|
1781
|
+
* Called by the `dataLoad` modifier on insert and on every change to
|
|
1782
|
+
* `@load` / `@loadKey` / `epoch`. Writes NO tracked state synchronously —
|
|
1783
|
+
* the modifier runs inside the render transaction, and a tracked write
|
|
1784
|
+
* there is the backtracking-rerender assertion.
|
|
1785
|
+
*/
|
|
1786
|
+
beginLoad = () => {
|
|
1787
|
+
let load = this.a.load;
|
|
1788
|
+
let token = ++this.requestToken;
|
|
1789
|
+
if (!load || this.a.rows !== void 0) return;
|
|
1790
|
+
this.runLoad(load, token);
|
|
1791
|
+
};
|
|
1792
|
+
/** Discards whatever is in flight and loads again. */
|
|
1793
|
+
reload = () => {
|
|
1794
|
+
this.epoch = this.epoch + 1;
|
|
1795
|
+
};
|
|
1796
|
+
async runLoad(load, token) {
|
|
1797
|
+
await Promise.resolve();
|
|
1798
|
+
if (token !== this.requestToken) return;
|
|
1799
|
+
this.inFlight = true;
|
|
1800
|
+
this.failure = void 0;
|
|
1801
|
+
try {
|
|
1802
|
+
let rows = await load();
|
|
1803
|
+
if (token !== this.requestToken) return;
|
|
1804
|
+
this.loadedRows = rows ?? [];
|
|
1805
|
+
this.failure = void 0;
|
|
1806
|
+
} catch (thrown) {
|
|
1807
|
+
if (token !== this.requestToken) return;
|
|
1808
|
+
this.failure = toError(thrown);
|
|
1809
|
+
} finally {
|
|
1810
|
+
if (token === this.requestToken) {
|
|
1811
|
+
this.inFlight = false;
|
|
1812
|
+
this.settled = true;
|
|
1813
|
+
}
|
|
1814
|
+
}
|
|
1815
|
+
}
|
|
1816
|
+
/**
|
|
1817
|
+
* The single readable state. DERIVED — nothing assigns it:
|
|
1818
|
+
* error a captured failure outranks everything, so a stale row set can
|
|
1819
|
+
* never read as success;
|
|
1820
|
+
* loading a request is in flight, OR one is about to start and has never
|
|
1821
|
+
* settled (which is what closes the empty-flash on first paint);
|
|
1822
|
+
* ready settled with rows;
|
|
1823
|
+
* empty settled with none — only ever reachable when nothing is
|
|
1824
|
+
* loading, which is the bug this ordering exists to prevent;
|
|
1825
|
+
* idle no rows and no loader: nobody has asked for anything.
|
|
1826
|
+
*/
|
|
1827
|
+
get status() {
|
|
1828
|
+
if (this.a.rows !== void 0) return this.a.rows.length > 0 ? "ready" : "empty";
|
|
1829
|
+
if (this.failure) return "error";
|
|
1830
|
+
if (this.inFlight) return "loading";
|
|
1831
|
+
if (this.a.load === void 0) return "idle";
|
|
1832
|
+
if (!this.settled) return "loading";
|
|
1833
|
+
return this.loadedRows.length > 0 ? "ready" : "empty";
|
|
1834
|
+
}
|
|
1835
|
+
get busy() {
|
|
1836
|
+
return this.status === "loading" ? "true" : "false";
|
|
1837
|
+
}
|
|
1838
|
+
get errorMessage() {
|
|
1839
|
+
return this.a.rows === void 0 && this.failure ? this.failure.message : "";
|
|
1840
|
+
}
|
|
1841
|
+
/** The rows as given: `@rows` when eager, the loaded set otherwise. */
|
|
1842
|
+
get rows() {
|
|
1843
|
+
return this.a.rows ?? this.loadedRows;
|
|
1844
|
+
}
|
|
1845
|
+
/** The rows as rendered: sorted when a sort is active. Never mutates the
|
|
1846
|
+
* caller's array. */
|
|
1847
|
+
get visibleRows() {
|
|
1848
|
+
let rows = this.rows;
|
|
1849
|
+
let sort = this.sort;
|
|
1850
|
+
if (!sort) return rows.slice();
|
|
1851
|
+
let dir = sort.dir === "desc" ? -1 : 1;
|
|
1852
|
+
let active = sort;
|
|
1853
|
+
return rows.slice().sort((a, b) => this.compare(a, b, active, dir));
|
|
1854
|
+
}
|
|
1855
|
+
get count() {
|
|
1856
|
+
return this.visibleRows.length;
|
|
1857
|
+
}
|
|
1858
|
+
/**
|
|
1859
|
+
* The polite announcement. Derived ONLY from settled state, which is how
|
|
1860
|
+
* "do not announce on every keystroke" is enforced structurally rather than
|
|
1861
|
+
* by remembering to: while a request is in flight the text is empty, so a
|
|
1862
|
+
* caller-driven filter that re-queries announces once when the new results
|
|
1863
|
+
* land, not once per key. Identical text is not re-announced by assistive
|
|
1864
|
+
* technology, so re-sorting the same 6 rows stays silent too.
|
|
1865
|
+
*/
|
|
1866
|
+
get announcement() {
|
|
1867
|
+
if (this.a.silentCount) return "";
|
|
1868
|
+
let noun = this.a.itemNoun ?? "result";
|
|
1869
|
+
switch (this.status) {
|
|
1870
|
+
case "ready": {
|
|
1871
|
+
let n = this.count;
|
|
1872
|
+
return `${n} ${n === 1 ? noun : `${noun}s`}`;
|
|
1873
|
+
}
|
|
1874
|
+
case "empty": return `No ${noun}s`;
|
|
1875
|
+
case "error": return `Could not load: ${this.errorMessage}`;
|
|
1876
|
+
default: return "";
|
|
1877
|
+
}
|
|
1878
|
+
}
|
|
1879
|
+
keyFor = (row, index) => this.a.key ? this.a.key(row, index) : defaultRowKey(row, index);
|
|
1880
|
+
rowsForKeys(keys) {
|
|
1881
|
+
let wanted = new Set(keys);
|
|
1882
|
+
return this.visibleRows.filter((row, i) => wanted.has(this.keyFor(row, i)));
|
|
1883
|
+
}
|
|
1884
|
+
get selectionMode() {
|
|
1885
|
+
return this.a.selectionMode ?? "none";
|
|
1886
|
+
}
|
|
1887
|
+
get selectedKeys() {
|
|
1888
|
+
if (this.a.selected !== void 0) return this.a.selected;
|
|
1889
|
+
return this.internalSelected ?? this.a.defaultSelected ?? [];
|
|
1890
|
+
}
|
|
1891
|
+
get selectedRows() {
|
|
1892
|
+
return this.rowsForKeys(this.selectedKeys);
|
|
1893
|
+
}
|
|
1894
|
+
/** Every row the reader can see is selected; keys for rows outside the
|
|
1895
|
+
* current view do not count either way. */
|
|
1896
|
+
get allSelected() {
|
|
1897
|
+
let visible = this.visibleRows;
|
|
1898
|
+
if (visible.length === 0) return false;
|
|
1899
|
+
let selected = new Set(this.selectedKeys);
|
|
1900
|
+
return visible.every((row, index) => selected.has(this.keyFor(row, index)));
|
|
1901
|
+
}
|
|
1902
|
+
isSelected = (row, index) => this.selectedKeys.includes(this.keyFor(row, index));
|
|
1903
|
+
toggleSelected = (row, index) => {
|
|
1904
|
+
let mode = this.selectionMode;
|
|
1905
|
+
if (mode === "none") return;
|
|
1906
|
+
let key = this.keyFor(row, index);
|
|
1907
|
+
let current = this.selectedKeys;
|
|
1908
|
+
let next;
|
|
1909
|
+
if (mode === "single") next = current.length === 1 && current[0] === key ? [] : [key];
|
|
1910
|
+
else next = current.includes(key) ? current.filter((k) => k !== key) : [...current, key];
|
|
1911
|
+
this.commitSelection(next);
|
|
1912
|
+
};
|
|
1913
|
+
selectAll = () => {
|
|
1914
|
+
if (this.selectionMode !== "multi") return;
|
|
1915
|
+
let visible = this.visibleRows.map((r, i) => this.keyFor(r, i));
|
|
1916
|
+
let shown = new Set(visible);
|
|
1917
|
+
let kept = this.selectedKeys.filter((key) => !shown.has(key));
|
|
1918
|
+
this.commitSelection(this.allSelected ? kept : [...kept, ...visible]);
|
|
1919
|
+
};
|
|
1920
|
+
clearSelection = () => {
|
|
1921
|
+
this.commitSelection([]);
|
|
1922
|
+
};
|
|
1923
|
+
commitSelection(next) {
|
|
1924
|
+
if (this.a.selected === void 0) this.internalSelected = next;
|
|
1925
|
+
this.a.onSelectionChange?.(next, this.rowsForKeys(next));
|
|
1926
|
+
}
|
|
1927
|
+
get activeKey() {
|
|
1928
|
+
if (this.a.activeKey !== void 0) return this.a.activeKey;
|
|
1929
|
+
return this.internalActive !== void 0 ? this.internalActive : this.a.defaultActiveKey ?? null;
|
|
1930
|
+
}
|
|
1931
|
+
isActive = (row, index) => this.activeKey !== null && this.activeKey === this.keyFor(row, index);
|
|
1932
|
+
setActive = (row, index) => {
|
|
1933
|
+
let next = row === null ? null : this.keyFor(row, index);
|
|
1934
|
+
if (this.a.activeKey === void 0) this.internalActive = next;
|
|
1935
|
+
this.a.onActiveChange?.(next, row ?? void 0);
|
|
1936
|
+
};
|
|
1937
|
+
get sort() {
|
|
1938
|
+
if (this.a.sort !== void 0) return this.a.sort;
|
|
1939
|
+
return this.internalSort !== void 0 ? this.internalSort : this.a.defaultSort ?? null;
|
|
1940
|
+
}
|
|
1941
|
+
/** asc → desc → unsorted, the three-step cycle DataGrid already used. */
|
|
1942
|
+
toggleSort = (key) => {
|
|
1943
|
+
let current = this.sort;
|
|
1944
|
+
let next = !current || current.key !== key ? {
|
|
1945
|
+
key,
|
|
1946
|
+
dir: "asc"
|
|
1947
|
+
} : current.dir === "asc" ? {
|
|
1948
|
+
key,
|
|
1949
|
+
dir: "desc"
|
|
1950
|
+
} : null;
|
|
1951
|
+
if (this.a.sort === void 0) this.internalSort = next;
|
|
1952
|
+
this.a.onSortChange?.(next);
|
|
1953
|
+
};
|
|
1954
|
+
ariaSort = (key) => {
|
|
1955
|
+
let current = this.sort;
|
|
1956
|
+
if (!current || current.key !== key) return "none";
|
|
1957
|
+
return current.dir === "asc" ? "ascending" : "descending";
|
|
1958
|
+
};
|
|
1959
|
+
compare(a, b, sort, dir) {
|
|
1960
|
+
if (this.a.comparator) return this.a.comparator(a, b, sort) * dir;
|
|
1961
|
+
let x = readField(a, sort.key);
|
|
1962
|
+
let y = readField(b, sort.key);
|
|
1963
|
+
if (x === void 0 || x === null || y === void 0 || y === null) return compareValues(x, y);
|
|
1964
|
+
return compareValues(x, y) * dir;
|
|
1965
|
+
}
|
|
1966
|
+
get data() {
|
|
1967
|
+
return {
|
|
1968
|
+
status: this.status,
|
|
1969
|
+
count: this.count,
|
|
1970
|
+
errorMessage: this.errorMessage,
|
|
1971
|
+
keyFor: this.keyFor,
|
|
1972
|
+
selectionMode: this.selectionMode,
|
|
1973
|
+
selectedKeys: this.selectedKeys,
|
|
1974
|
+
selectedRows: this.selectedRows,
|
|
1975
|
+
allSelected: this.allSelected,
|
|
1976
|
+
isSelected: this.isSelected,
|
|
1977
|
+
toggleSelected: this.toggleSelected,
|
|
1978
|
+
selectAll: this.selectAll,
|
|
1979
|
+
clearSelection: this.clearSelection,
|
|
1980
|
+
activeKey: this.activeKey,
|
|
1981
|
+
isActive: this.isActive,
|
|
1982
|
+
setActive: this.setActive,
|
|
1983
|
+
sort: this.sort,
|
|
1984
|
+
toggleSort: this.toggleSort,
|
|
1985
|
+
ariaSort: this.ariaSort,
|
|
1986
|
+
reload: this.reload
|
|
1987
|
+
};
|
|
1988
|
+
}
|
|
1989
|
+
};
|
|
1990
|
+
(class extends Component {
|
|
1991
|
+
/** the state machine — pass it to `<DataShell @state={{this.source}}>` */ source = new DataSource(() => this.args);
|
|
1992
|
+
get status() {
|
|
1993
|
+
return this.source.status;
|
|
1994
|
+
}
|
|
1995
|
+
get busy() {
|
|
1996
|
+
return this.source.busy;
|
|
1997
|
+
}
|
|
1998
|
+
get errorMessage() {
|
|
1999
|
+
return this.source.errorMessage;
|
|
2000
|
+
}
|
|
2001
|
+
get announcement() {
|
|
2002
|
+
return this.source.announcement;
|
|
2003
|
+
}
|
|
2004
|
+
get rows() {
|
|
2005
|
+
return this.source.rows;
|
|
2006
|
+
}
|
|
2007
|
+
get visibleRows() {
|
|
2008
|
+
return this.source.visibleRows;
|
|
2009
|
+
}
|
|
2010
|
+
get count() {
|
|
2011
|
+
return this.source.count;
|
|
2012
|
+
}
|
|
2013
|
+
get selectionMode() {
|
|
2014
|
+
return this.source.selectionMode;
|
|
2015
|
+
}
|
|
2016
|
+
get selectedKeys() {
|
|
2017
|
+
return this.source.selectedKeys;
|
|
2018
|
+
}
|
|
2019
|
+
get selectedRows() {
|
|
2020
|
+
return this.source.selectedRows;
|
|
2021
|
+
}
|
|
2022
|
+
get allSelected() {
|
|
2023
|
+
return this.source.allSelected;
|
|
2024
|
+
}
|
|
2025
|
+
get activeKey() {
|
|
2026
|
+
return this.source.activeKey;
|
|
2027
|
+
}
|
|
2028
|
+
get sort() {
|
|
2029
|
+
return this.source.sort;
|
|
2030
|
+
}
|
|
2031
|
+
get data() {
|
|
2032
|
+
return this.source.data;
|
|
2033
|
+
}
|
|
2034
|
+
keyFor = this.source.keyFor;
|
|
2035
|
+
isSelected = this.source.isSelected;
|
|
2036
|
+
toggleSelected = this.source.toggleSelected;
|
|
2037
|
+
selectAll = this.source.selectAll;
|
|
2038
|
+
clearSelection = this.source.clearSelection;
|
|
2039
|
+
isActive = this.source.isActive;
|
|
2040
|
+
setActive = this.source.setActive;
|
|
2041
|
+
toggleSort = this.source.toggleSort;
|
|
2042
|
+
ariaSort = this.source.ariaSort;
|
|
2043
|
+
reload = this.source.reload;
|
|
2044
|
+
static {
|
|
2045
|
+
setComponentTemplate(templateFactory({
|
|
2046
|
+
"id": "WDfnfAER",
|
|
2047
|
+
"block": "[[[8,[32,0],[[17,1]],[[\"@state\",\"@hasLoading\",\"@hasEmpty\",\"@hasError\",\"@emptyTitle\",\"@emptyMessage\",\"@loadingLabel\",\"@skeletonRows\"],[[30,0,[\"source\"]],[48,[30,6]],[48,[30,7]],[48,[30,8]],[30,2],[30,3],[30,4],[30,5]]],[[\"default\",\"loading\",\"empty\",\"error\"],[[[[18,9,[[30,0,[\"visibleRows\"]],[30,0,[\"data\"]]]]],[]],[[[18,6,null]],[]],[[[18,7,null]],[]],[[[18,8,null]],[]]]]]],[\"&attrs\",\"@emptyTitle\",\"@emptyMessage\",\"@loadingLabel\",\"@skeletonRows\",\"&loading\",\"&empty\",\"&error\",\"&default\"],[\"has-block\",\"yield\"]]",
|
|
2048
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/data-component.gts",
|
|
2049
|
+
"scope": () => [DataShell],
|
|
2050
|
+
"isStrictMode": true
|
|
2051
|
+
}), this);
|
|
2052
|
+
}
|
|
2053
|
+
});
|
|
2054
|
+
modifier((el, [mixed]) => {
|
|
2055
|
+
el.indeterminate = mixed;
|
|
2056
|
+
});
|
|
2057
|
+
/**
|
|
2058
|
+
* The roving keyboard cursor a row collection needs: one tab stop for the
|
|
2059
|
+
* whole list, arrows to move within it, Home/End to the ends.
|
|
2060
|
+
*
|
|
2061
|
+
* It is a plain class, not a component and not a modifier, for the reason
|
|
2062
|
+
* `DataSource` is one: it is testable without a DOM and it can be held by
|
|
2063
|
+
* anything. `<List>` holds one. `<DataTable>` deliberately does NOT — a
|
|
2064
|
+
* plain `<table>` must leave Tab alone so the links, buttons and checkboxes
|
|
2065
|
+
* inside its cells stay reachable in document order. Roving row focus is a
|
|
2066
|
+
* `role='grid'` behaviour, and this file does not claim that role.
|
|
2067
|
+
*/
|
|
2068
|
+
var RowCursor = class {
|
|
2069
|
+
constructor(readCount) {
|
|
2070
|
+
this.readCount = readCount;
|
|
2071
|
+
}
|
|
2072
|
+
static {
|
|
2073
|
+
decorateFieldV2(this.prototype, "index", [tracked], function() {
|
|
2074
|
+
return 0;
|
|
2075
|
+
});
|
|
2076
|
+
}
|
|
2077
|
+
#index = (initializeDeferredDecorator(this, "index"), void 0);
|
|
2078
|
+
static {
|
|
2079
|
+
decorateFieldV2(this.prototype, "navigating", [tracked], function() {
|
|
2080
|
+
return false;
|
|
2081
|
+
});
|
|
2082
|
+
}
|
|
2083
|
+
#navigating = (initializeDeferredDecorator(this, "navigating"), void 0);
|
|
2084
|
+
/** true only while the KEYBOARD is driving, so `focusWhen` never steals
|
|
2085
|
+
* focus on a pointer path or a plain re-render */
|
|
2086
|
+
get count() {
|
|
2087
|
+
return this.readCount();
|
|
2088
|
+
}
|
|
2089
|
+
/** the cursor, clamped to the collection as it is right now */
|
|
2090
|
+
get active() {
|
|
2091
|
+
return Math.min(this.index, Math.max(0, this.count - 1));
|
|
2092
|
+
}
|
|
2093
|
+
isActive = (index) => index === this.active;
|
|
2094
|
+
isFocusTarget = (index) => this.navigating && this.isActive(index);
|
|
2095
|
+
/** move the cursor and take focus with it */
|
|
2096
|
+
moveTo = (index) => {
|
|
2097
|
+
if (index < 0 || index >= this.count) return;
|
|
2098
|
+
this.navigating = true;
|
|
2099
|
+
this.index = index;
|
|
2100
|
+
};
|
|
2101
|
+
/** follow focus that arrived some other way (a click, a Tab from outside)
|
|
2102
|
+
* without taking it — the early return is what keeps `focusWhen`'s
|
|
2103
|
+
* synchronous `el.focus()` from re-entering as a backtracking re-render */
|
|
2104
|
+
follow = (index) => {
|
|
2105
|
+
if (index === this.active) return;
|
|
2106
|
+
this.navigating = false;
|
|
2107
|
+
this.index = index;
|
|
2108
|
+
};
|
|
2109
|
+
/** returns true when the key was consumed and the caller should
|
|
2110
|
+
* `preventDefault()` */
|
|
2111
|
+
handleKey = (key) => {
|
|
2112
|
+
switch (key) {
|
|
2113
|
+
case "ArrowDown":
|
|
2114
|
+
this.moveTo(this.active + 1);
|
|
2115
|
+
return true;
|
|
2116
|
+
case "ArrowUp":
|
|
2117
|
+
this.moveTo(this.active - 1);
|
|
2118
|
+
return true;
|
|
2119
|
+
case "Home":
|
|
2120
|
+
this.moveTo(0);
|
|
2121
|
+
return true;
|
|
2122
|
+
case "End":
|
|
2123
|
+
this.moveTo(this.count - 1);
|
|
2124
|
+
return true;
|
|
2125
|
+
default: return false;
|
|
2126
|
+
}
|
|
2127
|
+
};
|
|
2128
|
+
};
|
|
2129
|
+
//#endregion
|
|
2130
|
+
//#region ../pretui/components/list.gts
|
|
2131
|
+
/**
|
|
2132
|
+
* A collapse removes the detail, and focus inside it would fall to <body>.
|
|
2133
|
+
* The row remembers (from focusin) that focus was in its detail; after a
|
|
2134
|
+
* collapse — by the expander, a controlled `@expandedKeys` change or a
|
|
2135
|
+
* reload — focus lands on the row's expander instead, unless it has already
|
|
2136
|
+
* moved somewhere real.
|
|
2137
|
+
*/
|
|
2138
|
+
var restoreFocusOnCollapse = modifier((row, [expanded]) => {
|
|
2139
|
+
if (expanded || row.dataset["detailFocus"] !== "true") return;
|
|
2140
|
+
row.dataset["detailFocus"] = "false";
|
|
2141
|
+
let doc = row.ownerDocument;
|
|
2142
|
+
let active = doc.activeElement;
|
|
2143
|
+
if (!active || active === doc.body) row.querySelector(".pretui-list-expbtn")?.focus();
|
|
2144
|
+
});
|
|
2145
|
+
var List = class extends Component {
|
|
2146
|
+
guid = guidFor(this);
|
|
2147
|
+
/** The shared state machine: load status, `aria-busy`, the polite result
|
|
2148
|
+
* count, the row-key contract, and THE selection model `<DataTable>` uses.
|
|
2149
|
+
* One implementation, two components. */
|
|
2150
|
+
source = new DataSource(() => this.dataArgs);
|
|
2151
|
+
cursor = new RowCursor(() => this.rows.length);
|
|
2152
|
+
/** The same expanded-rows state DataTable uses. */
|
|
2153
|
+
expansion = new ExpansionState(() => this.args, this.guid);
|
|
2154
|
+
get dataArgs() {
|
|
2155
|
+
let a = this.args;
|
|
2156
|
+
return {
|
|
2157
|
+
rows: a.items ?? a.options ?? a.dataSource,
|
|
2158
|
+
load: a.load,
|
|
2159
|
+
loadKey: a.loadKey,
|
|
2160
|
+
key: a.key,
|
|
2161
|
+
selectionMode: a.selectionMode,
|
|
2162
|
+
selected: a.selected,
|
|
2163
|
+
defaultSelected: a.defaultSelected,
|
|
2164
|
+
onSelectionChange: a.onSelectionChange,
|
|
2165
|
+
itemNoun: a.itemNoun,
|
|
2166
|
+
emptyTitle: a.emptyTitle,
|
|
2167
|
+
emptyMessage: a.emptyMessage,
|
|
2168
|
+
loadingLabel: a.loadingLabel,
|
|
2169
|
+
skeletonRows: a.skeletonRows
|
|
2170
|
+
};
|
|
2171
|
+
}
|
|
2172
|
+
get rows() {
|
|
2173
|
+
return this.source.visibleRows;
|
|
2174
|
+
}
|
|
2175
|
+
get size() {
|
|
2176
|
+
return resolveSize(this.args.size);
|
|
2177
|
+
}
|
|
2178
|
+
get label() {
|
|
2179
|
+
return this.args.label ?? "List";
|
|
2180
|
+
}
|
|
2181
|
+
get selectionMode() {
|
|
2182
|
+
return this.source.selectionMode;
|
|
2183
|
+
}
|
|
2184
|
+
get selectable() {
|
|
2185
|
+
return this.selectionMode !== "none";
|
|
2186
|
+
}
|
|
2187
|
+
get multi() {
|
|
2188
|
+
return this.selectionMode === "multi";
|
|
2189
|
+
}
|
|
2190
|
+
get radioName() {
|
|
2191
|
+
return this.guid + "-list";
|
|
2192
|
+
}
|
|
2193
|
+
get divided() {
|
|
2194
|
+
return this.args.divided ?? true ? "true" : void 0;
|
|
2195
|
+
}
|
|
2196
|
+
get bordered() {
|
|
2197
|
+
return this.args.bordered ? "true" : void 0;
|
|
2198
|
+
}
|
|
2199
|
+
get busy() {
|
|
2200
|
+
return this.args.busy ?? this.args.loading ? "true" : void 0;
|
|
2201
|
+
}
|
|
2202
|
+
labelFor = (row, index) => this.args.rowLabel?.(row, index) ?? "Row " + String(index + 1);
|
|
2203
|
+
get lines() {
|
|
2204
|
+
return this.rows.map((row, index) => {
|
|
2205
|
+
let selected = this.source.isSelected(row, index);
|
|
2206
|
+
let key = this.source.keyFor(row, index);
|
|
2207
|
+
let label = this.labelFor(row, index);
|
|
2208
|
+
return {
|
|
2209
|
+
key,
|
|
2210
|
+
row,
|
|
2211
|
+
index,
|
|
2212
|
+
selected,
|
|
2213
|
+
selectedFlag: selected ? "true" : void 0,
|
|
2214
|
+
active: this.cursor.isActive(index),
|
|
2215
|
+
api: {
|
|
2216
|
+
index,
|
|
2217
|
+
selected,
|
|
2218
|
+
active: this.cursor.isActive(index),
|
|
2219
|
+
toggle: () => this.source.toggleSelected(row, index)
|
|
2220
|
+
},
|
|
2221
|
+
label,
|
|
2222
|
+
expansion: this.expansion.viewFor(key, index, label)
|
|
2223
|
+
};
|
|
2224
|
+
});
|
|
2225
|
+
}
|
|
2226
|
+
isRoving = (index) => this.cursor.isActive(index);
|
|
2227
|
+
isFocusTarget = (index) => this.cursor.isFocusTarget(index);
|
|
2228
|
+
indexFromEvent(event) {
|
|
2229
|
+
let raw = (event.target?.closest("[data-list-index]"))?.dataset["listIndex"];
|
|
2230
|
+
return raw === void 0 ? void 0 : Number(raw);
|
|
2231
|
+
}
|
|
2232
|
+
onFocusIn = (event) => {
|
|
2233
|
+
let target = event.target;
|
|
2234
|
+
let row = target?.closest("[data-list-index]");
|
|
2235
|
+
if (row) row.dataset["detailFocus"] = target?.closest(".pretui-list-detail") ? "true" : "false";
|
|
2236
|
+
let index = this.indexFromEvent(event);
|
|
2237
|
+
if (index !== void 0) this.cursor.follow(index);
|
|
2238
|
+
};
|
|
2239
|
+
onKeydown = (event) => {
|
|
2240
|
+
let ev = event;
|
|
2241
|
+
if (this.rows.length === 0) return;
|
|
2242
|
+
if (!!!ev.target?.matches("[data-list-index]")) return;
|
|
2243
|
+
if (this.cursor.handleKey(ev.key)) {
|
|
2244
|
+
ev.preventDefault();
|
|
2245
|
+
return;
|
|
2246
|
+
}
|
|
2247
|
+
let index = this.cursor.active;
|
|
2248
|
+
let row = this.rows[index];
|
|
2249
|
+
if (row === void 0) return;
|
|
2250
|
+
if (ev.key === "Enter") {
|
|
2251
|
+
ev.preventDefault();
|
|
2252
|
+
this.args.onActivate?.(row, index);
|
|
2253
|
+
} else if (ev.key === " " && this.selectable) {
|
|
2254
|
+
ev.preventDefault();
|
|
2255
|
+
this.source.toggleSelected(row, index);
|
|
2256
|
+
}
|
|
2257
|
+
};
|
|
2258
|
+
toggleExpanded = (key) => this.expansion.toggle(key);
|
|
2259
|
+
detailLabel = (line) => line.label + " details";
|
|
2260
|
+
toggleRow = (row, index) => {
|
|
2261
|
+
this.source.toggleSelected(row, index);
|
|
2262
|
+
};
|
|
2263
|
+
activate = (row, index) => {
|
|
2264
|
+
this.args.onActivate?.(row, index);
|
|
2265
|
+
};
|
|
2266
|
+
/** A click on a row activates it, unless it landed on a control or in the
|
|
2267
|
+
* row's expanded detail. */
|
|
2268
|
+
onClick = (event) => {
|
|
2269
|
+
if (!this.args.onActivate) return;
|
|
2270
|
+
let target = event.target;
|
|
2271
|
+
let li = target?.closest?.("li[data-list-index]");
|
|
2272
|
+
if (!li || target?.closest?.("a[href], button, input, select, textarea, label, summary, [role=\"button\"], [role=\"link\"], [contenteditable=\"\"], [contenteditable=\"true\"]") || target?.closest?.(".pretui-list-detail")) return;
|
|
2273
|
+
let index = Number(li.getAttribute("data-list-index"));
|
|
2274
|
+
let row = this.rows[index];
|
|
2275
|
+
if (row !== void 0) this.args.onActivate(row, index);
|
|
2276
|
+
};
|
|
2277
|
+
static {
|
|
2278
|
+
setComponentTemplate(templateFactory({
|
|
2279
|
+
"id": "XELOR1Am",
|
|
2280
|
+
"block": "[[[11,0],[24,0,\"pretui-list\"],[24,\"data-test-pretui-list\",\"\"],[16,\"data-size\",[30,0,[\"size\"]]],[16,\"data-divided\",[30,0,[\"divided\"]]],[16,\"data-bordered\",[30,0,[\"bordered\"]]],[16,\"aria-busy\",[30,0,[\"busy\"]]],[17,1],[24,\"data-scopedcss-d9a8b45361-cd067b2df8\",\"\"],[12],[1,\"\\n\"],[41,[48,[30,7]],[[[1,\" \"],[10,0],[14,0,\"pretui-list-header\"],[14,\"data-scopedcss-d9a8b45361-cd067b2df8\",\"\"],[12],[18,7,null],[13],[1,\"\\n\"]],[]],null],[1,\"\\n \"],[8,[32,0],[[24,\"data-scopedcss-d9a8b45361-cd067b2df8\",\"\"]],[[\"@state\",\"@hasLoading\",\"@hasEmpty\",\"@hasError\",\"@emptyTitle\",\"@emptyMessage\",\"@loadingLabel\",\"@skeletonRows\"],[[30,0,[\"source\"]],[48,[30,8]],[48,[30,9]],[48,[30,10]],[30,2],[30,3],[30,4],[30,5]]],[[\"default\",\"loading\",\"empty\",\"error\"],[[[[1,\"\\n \"],[11,\"ul\"],[24,0,\"pretui-list-rows\"],[16,\"aria-label\",[30,0,[\"label\"]]],[24,\"data-scopedcss-d9a8b45361-cd067b2df8\",\"\"],[4,[32,1],[\"keydown\",[30,0,[\"onKeydown\"]]],null],[4,[32,1],[\"focusin\",[30,0,[\"onFocusIn\"]]],null],[4,[32,1],[\"click\",[30,0,[\"onClick\"]]],null],[12],[1,\"\\n\"],[42,[28,[31,4],[[28,[31,4],[[30,0,[\"lines\"]]],null]],null],\"key\",[[[1,\" \"],[11,\"li\"],[24,0,\"pretui-list-row\"],[16,\"data-list-index\",[30,6,[\"index\"]]],[16,\"data-selected\",[30,6,[\"selectedFlag\"]]],[16,\"data-expanded\",[52,[48,[30,11]],[30,6,[\"expansion\",\"expandedFlag\"]]]],[24,\"data-test-pretui-list-row\",\"\"],[24,\"data-scopedcss-d9a8b45361-cd067b2df8\",\"\"],[4,[32,2],[[28,[30,0,[\"isRoving\"]],[[30,6,[\"index\"]]],null]],null],[4,[32,3],[[28,[30,0,[\"isFocusTarget\"]],[[30,6,[\"index\"]]],null]],null],[4,[32,4],[[30,6,[\"expansion\",\"expanded\"]]],null],[12],[1,\"\\n \"],[10,0],[14,0,\"pretui-list-line\"],[14,\"data-scopedcss-d9a8b45361-cd067b2df8\",\"\"],[12],[1,\"\\n\"],[41,[30,0,[\"selectable\"]],[[[1,\" \"],[10,1],[14,0,\"pretui-list-pick\"],[14,\"data-scopedcss-d9a8b45361-cd067b2df8\",\"\"],[12],[1,\"\\n\"],[41,[30,0,[\"multi\"]],[[[1,\" \"],[11,\"input\"],[24,0,\"pretui-list-box\"],[16,\"checked\",[30,6,[\"selected\"]]],[16,\"aria-label\",[30,6,[\"label\"]]],[24,\"data-test-pretui-list-select\",\"\"],[24,\"data-scopedcss-d9a8b45361-cd067b2df8\",\"\"],[24,4,\"checkbox\"],[4,[32,5],[\"change\",[28,[32,6],[[30,0,[\"toggleRow\"]],[30,6,[\"row\"]],[30,6,[\"index\"]]],null]],null],[12],[13],[1,\"\\n\"]],[]],[[[1,\" \"],[11,\"input\"],[24,0,\"pretui-list-box pretui-list-radio\"],[16,3,[30,0,[\"radioName\"]]],[16,\"checked\",[30,6,[\"selected\"]]],[16,\"aria-label\",[30,6,[\"label\"]]],[24,\"data-test-pretui-list-select\",\"\"],[24,\"data-scopedcss-d9a8b45361-cd067b2df8\",\"\"],[24,4,\"radio\"],[4,[32,5],[\"change\",[28,[32,6],[[30,0,[\"toggleRow\"]],[30,6,[\"row\"]],[30,6,[\"index\"]]],null]],null],[12],[13],[1,\"\\n\"]],[]]],[1,\" \"],[13],[1,\"\\n\"]],[]],null],[41,[48,[30,11]],[[[1,\" \"],[11,\"button\"],[24,0,\"pretui-list-expbtn\"],[16,\"aria-expanded\",[30,6,[\"expansion\",\"expandedFlag\"]]],[16,\"aria-controls\",[30,6,[\"expansion\",\"controls\"]]],[16,\"aria-label\",[30,6,[\"expansion\",\"expandLabel\"]]],[24,\"data-test-pretui-list-expand\",\"\"],[24,\"data-scopedcss-d9a8b45361-cd067b2df8\",\"\"],[24,4,\"button\"],[4,[32,5],[\"click\",[28,[32,6],[[30,0,[\"toggleExpanded\"]],[30,6,[\"key\"]]],null]],null],[12],[1,\"\\n \"],[10,1],[14,0,\"pretui-list-chev\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-d9a8b45361-cd067b2df8\",\"\"],[12],[1,\"›\"],[13],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[10,0],[14,0,\"pretui-list-body\"],[14,\"data-scopedcss-d9a8b45361-cd067b2df8\",\"\"],[12],[1,\"\\n \"],[18,12,[[30,6,[\"row\"]],[30,6,[\"index\"]],[30,6,[\"api\"]]]],[1,\"\\n \"],[13],[1,\"\\n \"],[13],[1,\"\\n\"],[41,[48,[30,11]],[[[41,[30,6,[\"expansion\",\"expanded\"]],[[[1,\" \"],[10,0],[14,0,\"pretui-list-detail\"],[15,1,[30,6,[\"expansion\",\"detailId\"]]],[14,\"role\",\"region\"],[14,\"tabindex\",\"-1\"],[15,\"aria-label\",[28,[30,0,[\"detailLabel\"]],[[30,6]],null]],[14,\"data-test-pretui-list-detail\",\"\"],[14,\"data-scopedcss-d9a8b45361-cd067b2df8\",\"\"],[12],[1,\"\\n \"],[18,11,[[30,6,[\"row\"]],[30,6,[\"index\"]]]],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],null]],[]],null],[1,\" \"],[13],[1,\"\\n\"]],[6]],null],[1,\" \"],[13],[1,\"\\n \"]],[]],[[[18,8,null]],[]],[[[18,9,null]],[]],[[[18,10,null]],[]]]]],[1,\"\\n\\n\"],[41,[48,[30,13]],[[[1,\" \"],[10,0],[14,0,\"pretui-list-footer\"],[14,\"data-scopedcss-d9a8b45361-cd067b2df8\",\"\"],[12],[18,13,null],[13],[1,\"\\n\"]],[]],null],[13],[1,\"\\n\"]],[\"&attrs\",\"@emptyTitle\",\"@emptyMessage\",\"@loadingLabel\",\"@skeletonRows\",\"line\",\"&header\",\"&loading\",\"&empty\",\"&error\",\"&expanded\",\"&item\",\"&footer\"],[\"if\",\"has-block\",\"yield\",\"each\",\"-track-array\"]]",
|
|
2281
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/list.gts",
|
|
2282
|
+
"scope": () => [
|
|
2283
|
+
DataShell,
|
|
2284
|
+
listen,
|
|
2285
|
+
rovingTabindex,
|
|
2286
|
+
focusWhen,
|
|
2287
|
+
restoreFocusOnCollapse,
|
|
2288
|
+
on,
|
|
2289
|
+
fn
|
|
2290
|
+
],
|
|
2291
|
+
"isStrictMode": true
|
|
2292
|
+
}), this);
|
|
2293
|
+
}
|
|
2294
|
+
};
|
|
2295
|
+
//#endregion
|
|
2296
|
+
//#region ../pretui/components/loading-state.gts
|
|
2297
|
+
var LoadingState = class extends Component {
|
|
2298
|
+
get label() {
|
|
2299
|
+
return this.args.label ?? "Working";
|
|
2300
|
+
}
|
|
2301
|
+
get variant() {
|
|
2302
|
+
return this.args.variant ?? "drive";
|
|
2303
|
+
}
|
|
2304
|
+
get pixels() {
|
|
2305
|
+
let chev = Array.from({ length: 9 }, (_, i) => {
|
|
2306
|
+
let r = Math.floor(i / 3);
|
|
2307
|
+
return (i % 3 + Math.abs(r - 1)) * 90;
|
|
2308
|
+
});
|
|
2309
|
+
let order = [
|
|
2310
|
+
0,
|
|
2311
|
+
1,
|
|
2312
|
+
2,
|
|
2313
|
+
5,
|
|
2314
|
+
8,
|
|
2315
|
+
7,
|
|
2316
|
+
6,
|
|
2317
|
+
3
|
|
2318
|
+
];
|
|
2319
|
+
let orbit = Array.from({ length: 9 }, (_, i) => {
|
|
2320
|
+
let k = order.indexOf(i);
|
|
2321
|
+
return k === -1 ? null : k * 110;
|
|
2322
|
+
});
|
|
2323
|
+
return (this.variant === "orbit" ? orbit : chev).map((d) => ({
|
|
2324
|
+
idle: d === null,
|
|
2325
|
+
kept: d === null ? [] : [{
|
|
2326
|
+
property: "--pretui-pixel-delay",
|
|
2327
|
+
value: `${d}ms`,
|
|
2328
|
+
strength: "arg"
|
|
2329
|
+
}]
|
|
2330
|
+
}));
|
|
2331
|
+
}
|
|
2332
|
+
static {
|
|
2333
|
+
setComponentTemplate(templateFactory({
|
|
2334
|
+
"id": "1UXlUkx6",
|
|
2335
|
+
"block": "[[[11,1],[24,0,\"pretui-loading\"],[24,\"role\",\"status\"],[24,\"data-test-pretui-loading-state\",\"\"],[17,1],[24,\"data-scopedcss-cae5827e83-d4debe2552\",\"\"],[12],[1,\"\\n \"],[10,1],[14,\"aria-hidden\",\"true\"],[14,0,\"pretui-pixelgrid\"],[15,\"data-variant\",[30,0,[\"variant\"]]],[14,\"data-scopedcss-cae5827e83-d4debe2552\",\"\"],[12],[1,\"\\n\"],[42,[28,[31,1],[[28,[31,1],[[30,0,[\"pixels\"]]],null]],null],null,[[[1,\" \"],[11,1],[24,0,\"pretui-pixel\"],[16,\"data-idle\",[52,[30,2,[\"idle\"]],\"true\"]],[24,\"data-scopedcss-cae5827e83-d4debe2552\",\"\"],[4,[32,0],[[30,2,[\"kept\"]]],null],[12],[13],[1,\"\\n\"]],[2]],null],[1,\" \"],[13],[1,\"\\n \"],[10,1],[14,0,\"pretui-shimmer-label\"],[14,\"data-scopedcss-cae5827e83-d4debe2552\",\"\"],[12],[1,[30,0,[\"label\"]]],[13],[1,\"\\n \"],[41,[30,3],[[[10,1],[14,0,\"pretui-elapsed\"],[14,\"data-scopedcss-cae5827e83-d4debe2552\",\"\"],[12],[1,[30,3]],[13]],[]],null],[1,\"\\n\"],[13],[1,\"\\n\"]],[\"&attrs\",\"p\",\"@elapsed\"],[\"each\",\"-track-array\",\"if\"]]",
|
|
2336
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/loading-state.gts",
|
|
2337
|
+
"scope": () => [keepStyle],
|
|
2338
|
+
"isStrictMode": true
|
|
2339
|
+
}), this);
|
|
2340
|
+
}
|
|
2341
|
+
};
|
|
2342
|
+
//#endregion
|
|
2343
|
+
//#region ../pretui/components/scroller.gts
|
|
2344
|
+
/**
|
|
2345
|
+
* Maintains the four edge facts as DATA ATTRIBUTES on the viewport, and
|
|
2346
|
+
* makes the viewport keyboard-reachable exactly when it actually scrolls.
|
|
2347
|
+
*
|
|
2348
|
+
* Written as attributes rather than tracked state on purpose: a scroll
|
|
2349
|
+
* listener that writes tracked state re-renders the component on every
|
|
2350
|
+
* frame of a flick. These attributes are read only by CSS, so the whole
|
|
2351
|
+
* affordance costs one `setAttribute` and no render at all.
|
|
2352
|
+
*
|
|
2353
|
+
* `tabindex` is managed here too. A scroll container that a mouse user can
|
|
2354
|
+
* reach and a keyboard user cannot is a keyboard trap in reverse — the
|
|
2355
|
+
* content is simply unreachable. Chromium and Firefox have started making
|
|
2356
|
+
* scrollers focusable natively; this keeps the guarantee everywhere, and
|
|
2357
|
+
* REMOVES the tab stop again when the content shrinks and no longer
|
|
2358
|
+
* overflows, which is the part native focusable-scrollers gets right and
|
|
2359
|
+
* hand-rolled `tabindex='0'` does not.
|
|
2360
|
+
*/
|
|
2361
|
+
var scrollEdges = modifier((element, [orientation]) => {
|
|
2362
|
+
let update = () => {
|
|
2363
|
+
let horizontal = orientation !== "vertical";
|
|
2364
|
+
let vertical = orientation !== "horizontal";
|
|
2365
|
+
let overflowX = element.scrollWidth - element.clientWidth > 1;
|
|
2366
|
+
let overflowY = element.scrollHeight - element.clientHeight > 1;
|
|
2367
|
+
let left = Math.abs(element.scrollLeft);
|
|
2368
|
+
element.dataset["startX"] = horizontal && overflowX && left > 1 ? "clipped" : "flush";
|
|
2369
|
+
element.dataset["endX"] = horizontal && overflowX && left < element.scrollWidth - element.clientWidth - 1 ? "clipped" : "flush";
|
|
2370
|
+
element.dataset["startY"] = vertical && overflowY && element.scrollTop > 1 ? "clipped" : "flush";
|
|
2371
|
+
element.dataset["endY"] = vertical && overflowY && element.scrollTop < element.scrollHeight - element.clientHeight - 1 ? "clipped" : "flush";
|
|
2372
|
+
if (horizontal && overflowX || vertical && overflowY) {
|
|
2373
|
+
if (element.getAttribute("tabindex") === null) element.setAttribute("tabindex", "0");
|
|
2374
|
+
} else if (element.getAttribute("tabindex") === "0") element.removeAttribute("tabindex");
|
|
2375
|
+
};
|
|
2376
|
+
element.addEventListener("scroll", update, { passive: true });
|
|
2377
|
+
let frame;
|
|
2378
|
+
let schedule = () => {
|
|
2379
|
+
if (frame !== void 0) return;
|
|
2380
|
+
frame = requestAnimationFrame(() => {
|
|
2381
|
+
frame = void 0;
|
|
2382
|
+
update();
|
|
2383
|
+
});
|
|
2384
|
+
};
|
|
2385
|
+
let observer = new ResizeObserver(schedule);
|
|
2386
|
+
let observeChildren = () => {
|
|
2387
|
+
for (let child of Array.from(element.children)) observer.observe(child);
|
|
2388
|
+
};
|
|
2389
|
+
observer.observe(element);
|
|
2390
|
+
observeChildren();
|
|
2391
|
+
let mutations = new MutationObserver(() => {
|
|
2392
|
+
observeChildren();
|
|
2393
|
+
schedule();
|
|
2394
|
+
});
|
|
2395
|
+
mutations.observe(element, {
|
|
2396
|
+
childList: true,
|
|
2397
|
+
subtree: true,
|
|
2398
|
+
characterData: true
|
|
2399
|
+
});
|
|
2400
|
+
update();
|
|
2401
|
+
return () => {
|
|
2402
|
+
element.removeEventListener("scroll", update);
|
|
2403
|
+
observer.disconnect();
|
|
2404
|
+
mutations.disconnect();
|
|
2405
|
+
if (frame !== void 0) cancelAnimationFrame(frame);
|
|
2406
|
+
};
|
|
2407
|
+
});
|
|
2408
|
+
/**
|
|
2409
|
+
* A scroll container that says when it is clipped.
|
|
2410
|
+
*
|
|
2411
|
+
* ```hbs
|
|
2412
|
+
* <Scroller @label='Recent lots' @orientation='horizontal'>
|
|
2413
|
+
* <div class='row'>…</div>
|
|
2414
|
+
* </Scroller>
|
|
2415
|
+
* ```
|
|
2416
|
+
*
|
|
2417
|
+
* Better than the inspiration (`wa-scroller`): upstream ships one shadow
|
|
2418
|
+
* treatment, both axes always on, and no notion of whether the region is
|
|
2419
|
+
* reachable by keyboard. Here the axis is explicit, the treatment is a knob,
|
|
2420
|
+
* the tab stop appears and DISAPPEARS with the overflow, and the affordance
|
|
2421
|
+
* is driven by data attributes rather than by re-rendering on every scroll
|
|
2422
|
+
* frame.
|
|
2423
|
+
*/
|
|
2424
|
+
var Scroller = class extends Component {
|
|
2425
|
+
get orientation() {
|
|
2426
|
+
return this.args.orientation ?? "horizontal";
|
|
2427
|
+
}
|
|
2428
|
+
get edge() {
|
|
2429
|
+
return this.args.edge ?? "fade";
|
|
2430
|
+
}
|
|
2431
|
+
get role() {
|
|
2432
|
+
return this.args.label ? "region" : void 0;
|
|
2433
|
+
}
|
|
2434
|
+
static {
|
|
2435
|
+
setComponentTemplate(templateFactory({
|
|
2436
|
+
"id": "dA5kczpk",
|
|
2437
|
+
"block": "[[[11,0],[24,0,\"pretui-scroller\"],[24,\"data-test-pretui-scroller\",\"\"],[16,\"data-edge\",[30,0,[\"edge\"]]],[17,1],[24,\"data-scopedcss-11ca330a13-f16dc4fa82\",\"\"],[12],[1,\"\\n \"],[11,0],[24,0,\"pretui-scroller-viewport\"],[16,\"data-orientation\",[30,0,[\"orientation\"]]],[16,\"data-hide-scrollbar\",[52,[30,2],\"true\"]],[16,\"role\",[30,0,[\"role\"]]],[16,\"aria-label\",[30,3]],[24,\"data-test-pretui-scroller-viewport\",\"\"],[24,\"data-scopedcss-11ca330a13-f16dc4fa82\",\"\"],[4,[32,0],[[30,0,[\"orientation\"]]],null],[12],[1,\"\\n \"],[18,4,null],[1,\"\\n \"],[13],[1,\"\\n\"],[1,\" \"],[10,1],[14,0,\"pretui-scroller-edge\"],[14,\"data-side\",\"start-x\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-11ca330a13-f16dc4fa82\",\"\"],[12],[13],[1,\"\\n \"],[10,1],[14,0,\"pretui-scroller-edge\"],[14,\"data-side\",\"end-x\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-11ca330a13-f16dc4fa82\",\"\"],[12],[13],[1,\"\\n \"],[10,1],[14,0,\"pretui-scroller-edge\"],[14,\"data-side\",\"start-y\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-11ca330a13-f16dc4fa82\",\"\"],[12],[13],[1,\"\\n \"],[10,1],[14,0,\"pretui-scroller-edge\"],[14,\"data-side\",\"end-y\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-11ca330a13-f16dc4fa82\",\"\"],[12],[13],[1,\"\\n\"],[13],[1,\"\\n\\n\"]],[\"&attrs\",\"@hideScrollbar\",\"@label\",\"&default\"],[\"if\",\"yield\"]]",
|
|
2438
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/scroller.gts",
|
|
2439
|
+
"scope": () => [scrollEdges],
|
|
2440
|
+
"isStrictMode": true
|
|
2441
|
+
}), this);
|
|
2442
|
+
}
|
|
2443
|
+
};
|
|
2444
|
+
//#endregion
|
|
2445
|
+
//#region app/components/operator-mode/dashboard-modals/manage-catalogs.gts
|
|
2446
|
+
var ManageCatalogsModal = class extends Component {
|
|
2447
|
+
static {
|
|
2448
|
+
decorateFieldV2(this.prototype, "matrixService", [service]);
|
|
2449
|
+
}
|
|
2450
|
+
#matrixService = (initializeDeferredDecorator(this, "matrixService"), void 0);
|
|
2451
|
+
static {
|
|
2452
|
+
decorateFieldV2(this.prototype, "realmServer", [service]);
|
|
2453
|
+
}
|
|
2454
|
+
#realmServer = (initializeDeferredDecorator(this, "realmServer"), void 0);
|
|
2455
|
+
static {
|
|
2456
|
+
decorateFieldV2(this.prototype, "choices", [tracked$1], function() {
|
|
2457
|
+
return null;
|
|
2458
|
+
});
|
|
2459
|
+
}
|
|
2460
|
+
#choices = (initializeDeferredDecorator(this, "choices"), void 0);
|
|
2461
|
+
static {
|
|
2462
|
+
decorateFieldV2(this.prototype, "loadError", [tracked$1], function() {
|
|
2463
|
+
return null;
|
|
2464
|
+
});
|
|
2465
|
+
}
|
|
2466
|
+
#loadError = (initializeDeferredDecorator(this, "loadError"), void 0);
|
|
2467
|
+
static {
|
|
2468
|
+
decorateFieldV2(this.prototype, "selected", [tracked$1]);
|
|
2469
|
+
}
|
|
2470
|
+
#selected = (initializeDeferredDecorator(this, "selected"), void 0);
|
|
2471
|
+
static {
|
|
2472
|
+
decorateFieldV2(this.prototype, "saveError", [tracked$1], function() {
|
|
2473
|
+
return null;
|
|
2474
|
+
});
|
|
2475
|
+
}
|
|
2476
|
+
#saveError = (initializeDeferredDecorator(this, "saveError"), void 0);
|
|
2477
|
+
constructor(owner, args) {
|
|
2478
|
+
super(owner, args);
|
|
2479
|
+
this.selected = this.realmServer.userCatalogPicks;
|
|
2480
|
+
this.loadChoices.perform();
|
|
2481
|
+
}
|
|
2482
|
+
get listedElsewhere() {
|
|
2483
|
+
return new Set([
|
|
2484
|
+
baseRealm.url,
|
|
2485
|
+
...this.realmServer.catalogRealmIdentifiers,
|
|
2486
|
+
...this.realmServer.userRealmIdentifiers
|
|
2487
|
+
]);
|
|
2488
|
+
}
|
|
2489
|
+
loadChoices = buildTask(() => ({
|
|
2490
|
+
context: this,
|
|
2491
|
+
generator: function* () {
|
|
2492
|
+
this.loadError = null;
|
|
2493
|
+
try {
|
|
2494
|
+
let listedElsewhere = this.listedElsewhere;
|
|
2495
|
+
let realms = yield this.realmServer.fetchPublicRealms();
|
|
2496
|
+
this.choices = realms.filter(({ url }) => !listedElsewhere.has(url)).sort((a, b) => displayName(a).localeCompare(displayName(b)));
|
|
2497
|
+
} catch (e) {
|
|
2498
|
+
this.loadError = e.message;
|
|
2499
|
+
}
|
|
2500
|
+
}
|
|
2501
|
+
}), null, "loadChoices", "restartable");
|
|
2502
|
+
save = buildTask(() => ({
|
|
2503
|
+
context: this,
|
|
2504
|
+
generator: function* () {
|
|
2505
|
+
this.saveError = null;
|
|
2506
|
+
try {
|
|
2507
|
+
let selected = new Set(this.selected);
|
|
2508
|
+
let listedElsewhere = this.listedElsewhere;
|
|
2509
|
+
let kept = this.realmServer.userCatalogPicks.filter((url) => listedElsewhere.has(url));
|
|
2510
|
+
let chosen = (this.choices ?? []).map(({ url }) => url).filter((url) => selected.has(url));
|
|
2511
|
+
yield this.matrixService.setUserCatalogRealms([...new Set([...kept, ...chosen])]);
|
|
2512
|
+
this.args.onClose();
|
|
2513
|
+
} catch (e) {
|
|
2514
|
+
this.saveError = e.message;
|
|
2515
|
+
}
|
|
2516
|
+
}
|
|
2517
|
+
}), null, "save", null);
|
|
2518
|
+
rowKey = (realm) => realm.url;
|
|
2519
|
+
rowLabel = (realm) => displayName(realm);
|
|
2520
|
+
iconSrc = (realm) => realm.iconURL ?? void 0;
|
|
2521
|
+
setSelected = (keys) => {
|
|
2522
|
+
this.selected = keys.map(String);
|
|
2523
|
+
};
|
|
2524
|
+
toggle = (realm) => {
|
|
2525
|
+
this.selected = this.selected.includes(realm.url) ? this.selected.filter((url) => url !== realm.url) : [...this.selected, realm.url];
|
|
2526
|
+
};
|
|
2527
|
+
get rows() {
|
|
2528
|
+
return this.choices ?? [];
|
|
2529
|
+
}
|
|
2530
|
+
get isSaveDisabled() {
|
|
2531
|
+
return this.choices === null;
|
|
2532
|
+
}
|
|
2533
|
+
static {
|
|
2534
|
+
setComponentTemplate(templateFactory({
|
|
2535
|
+
"id": "6efOiZ2E",
|
|
2536
|
+
"block": "[[[8,[32,0],[[24,0,\"manage-catalogs-dialog\"],[24,\"data-test-manage-catalogs-modal\",\"\"],[24,\"data-scopedcss-6121faa312-c411e9d408\",\"\"]],[[\"@open\",\"@onClose\",\"@label\",\"@size\"],[true,[30,1],\"Choose Catalogs\",\"m\"]],[[\"title\",\"default\",\"footer\"],[[[[1,\"Choose Catalogs\"]],[]],[[[1,\"\\n \"],[10,2],[14,0,\"intro\"],[14,\"data-scopedcss-6121faa312-c411e9d408\",\"\"],[12],[1,\"\\n Choose public realms to show in your Catalogs section.\\n \"],[13],[1,\"\\n\"],[41,[30,0,[\"loadChoices\",\"isRunning\"]],[[[1,\" \"],[8,[32,1],[[24,0,\"loading\"],[24,\"data-test-public-realms-loading\",\"\"],[24,\"data-scopedcss-6121faa312-c411e9d408\",\"\"]],[[\"@label\"],[\"Loading public realms\"]],null],[1,\"\\n\"]],[]],[[[41,[30,0,[\"loadError\"]],[[[1,\" \"],[8,[32,2],[[24,\"data-test-manage-catalogs-error\",\"\"],[24,\"data-scopedcss-6121faa312-c411e9d408\",\"\"]],[[\"@tone\",\"@title\"],[\"danger\",\"Couldn't load the public realms\"]],[[\"default\"],[[[[1,\"\\n \"],[1,[30,0,[\"loadError\"]]],[1,\"\\n \"]],[]]]]],[1,\"\\n\"]],[]],[[[1,\" \"],[10,0],[14,0,\"realm-list-frame\"],[14,\"data-scopedcss-6121faa312-c411e9d408\",\"\"],[12],[1,\"\\n \"],[8,[32,3],[[24,\"data-scopedcss-6121faa312-c411e9d408\",\"\"]],[[\"@orientation\"],[\"vertical\"]],[[\"default\"],[[[[1,\"\\n \"],[8,[32,4],[[24,\"data-test-public-realm-list\",\"\"],[24,\"data-scopedcss-6121faa312-c411e9d408\",\"\"]],[[\"@items\",\"@key\",\"@rowLabel\",\"@label\",\"@selectionMode\",\"@selected\",\"@onSelectionChange\",\"@onActivate\",\"@itemNoun\",\"@emptyTitle\",\"@emptyMessage\"],[[30,0,[\"rows\"]],[30,0,[\"rowKey\"]],[30,0,[\"rowLabel\"]],\"Public realms\",\"multi\",[30,0,[\"selected\"]],[30,0,[\"setSelected\"]],[30,0,[\"toggle\"]],\"realm\",\"Nothing more to add\",\"Every public realm is already in your Catalogs or Your Workspaces.\"]],[[\"item\"],[[[[1,\"\\n \"],[8,[32,5],[[16,\"data-test-public-realm\",[30,2,[\"url\"]]],[24,\"data-scopedcss-6121faa312-c411e9d408\",\"\"]],[[\"@title\",\"@description\"],[[28,[32,6],[[30,2]],null],[30,2,[\"url\"]]]],[[\"leading\"],[[[[1,\"\\n \"],[10,1],[14,0,\"realm-icon\"],[14,\"data-scopedcss-6121faa312-c411e9d408\",\"\"],[12],[1,\"\\n \"],[8,[32,7],[[24,\"data-scopedcss-6121faa312-c411e9d408\",\"\"]],[[\"@name\",\"@src\",\"@size\"],[[28,[32,6],[[30,2]],null],[28,[30,0,[\"iconSrc\"]],[[30,2]],null],32]],null],[1,\"\\n \"],[13],[1,\"\\n \"]],[]]]]],[1,\"\\n \"]],[2]]]]],[1,\"\\n \"]],[]]]]],[1,\"\\n \"],[13],[1,\"\\n \"]],[]]]],[]]],[41,[30,0,[\"saveError\"]],[[[1,\" \"],[8,[32,2],[[24,\"data-test-manage-catalogs-error\",\"\"],[24,\"data-scopedcss-6121faa312-c411e9d408\",\"\"]],[[\"@tone\",\"@title\"],[\"danger\",\"Couldn't save your catalogs\"]],[[\"default\"],[[[[1,\"\\n \"],[1,[30,0,[\"saveError\"]]],[1,\"\\n \"]],[]]]]],[1,\"\\n\"]],[]],null],[1,\" \"]],[]],[[[1,\"\\n \"],[8,[32,8],[[24,\"data-test-cancel-manage-catalogs\",\"\"],[24,\"data-scopedcss-6121faa312-c411e9d408\",\"\"],[4,[32,9],[\"click\",[30,1]],null]],[[\"@variant\"],[\"secondary\"]],[[\"default\"],[[[[1,\"\\n Cancel\\n \"]],[]]]]],[1,\"\\n \"],[8,[32,8],[[24,\"data-test-save-manage-catalogs\",\"\"],[24,\"data-scopedcss-6121faa312-c411e9d408\",\"\"],[4,[32,9],[\"click\",[28,[32,10],[[30,0,[\"save\"]]],null]],null]],[[\"@variant\",\"@busy\",\"@disabled\"],[\"primary\",[30,0,[\"save\",\"isRunning\"]],[30,0,[\"isSaveDisabled\"]]]],[[\"default\"],[[[[1,\"\\n Save\\n \"]],[]]]]],[1,\"\\n \"]],[]]]]],[1,\"\\n\"]],[\"@onClose\",\"realm\"],[\"if\"]]",
|
|
2537
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard-modals/manage-catalogs.gts",
|
|
2538
|
+
"scope": () => [
|
|
2539
|
+
Dialog,
|
|
2540
|
+
LoadingState,
|
|
2541
|
+
Alert,
|
|
2542
|
+
Scroller,
|
|
2543
|
+
List,
|
|
2544
|
+
Item,
|
|
2545
|
+
displayName,
|
|
2546
|
+
Avatar,
|
|
2547
|
+
Button,
|
|
2548
|
+
on,
|
|
2549
|
+
perform
|
|
2550
|
+
],
|
|
2551
|
+
"isStrictMode": true
|
|
2552
|
+
}), this);
|
|
2553
|
+
}
|
|
2554
|
+
};
|
|
2555
|
+
function displayName(realm) {
|
|
2556
|
+
return realm.name ?? realm.url;
|
|
2557
|
+
}
|
|
2558
|
+
var ManageCatalogs = class extends Component {
|
|
2559
|
+
static {
|
|
2560
|
+
decorateFieldV2(this.prototype, "isModalOpen", [tracked$1], function() {
|
|
2561
|
+
return false;
|
|
2562
|
+
});
|
|
2563
|
+
}
|
|
2564
|
+
#isModalOpen = (initializeDeferredDecorator(this, "isModalOpen"), void 0);
|
|
2565
|
+
setIsModalOpen = (value) => {
|
|
2566
|
+
this.isModalOpen = value;
|
|
2567
|
+
};
|
|
2568
|
+
static {
|
|
2569
|
+
setComponentTemplate(templateFactory({
|
|
2570
|
+
"id": "vkjyxb8V",
|
|
2571
|
+
"block": "[[[10,1],[14,0,\"manage-catalogs\"],[14,\"data-scopedcss-6121faa312-bfb1490ce6\",\"\"],[12],[1,\"\\n \"],[8,[32,0],[[24,\"data-test-manage-catalogs\",\"\"],[24,\"data-scopedcss-6121faa312-bfb1490ce6\",\"\"],[4,[32,2],[\"click\",[28,[32,3],[[30,0,[\"setIsModalOpen\"]],true],null]],null]],[[\"@label\",\"@tooltip\",\"@icon\",\"@iconWidth\",\"@iconHeight\",\"@variant\",\"@size\"],[\"Choose Catalogs\",\"Choose Catalogs\",[32,1],\"16\",\"16\",\"ghost\",\"s\"]],null],[1,\"\\n\"],[13],[1,\"\\n\"],[41,[30,0,[\"isModalOpen\"]],[[[1,\" \"],[8,[32,4],[[24,\"data-scopedcss-6121faa312-bfb1490ce6\",\"\"]],[[\"@onClose\"],[[28,[32,3],[[30,0,[\"setIsModalOpen\"]],false],null]]],null],[1,\"\\n\"]],[]],null]],[],[\"if\"]]",
|
|
2572
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard-modals/manage-catalogs.gts",
|
|
2573
|
+
"scope": () => [
|
|
2574
|
+
IconButton,
|
|
2575
|
+
IconComponent$19,
|
|
2576
|
+
on,
|
|
2577
|
+
fn,
|
|
2578
|
+
ManageCatalogsModal
|
|
2579
|
+
],
|
|
2580
|
+
"isStrictMode": true
|
|
2581
|
+
}), this);
|
|
2582
|
+
}
|
|
2583
|
+
};
|
|
2584
|
+
//#endregion
|
|
2585
|
+
//#region app/components/operator-mode/dashboard/catalog-shelf.gts
|
|
2586
|
+
var ART_PAGE_WIDTH_PX = 1e3;
|
|
2587
|
+
var OTHER_LISTINGS_FETCHED = 12;
|
|
2588
|
+
var PENDING_STORIES = Array.from({ length: 4 }, (_, i) => i);
|
|
2589
|
+
var LISTING_TYPE = {
|
|
2590
|
+
module: rri("@cardstack/catalog/catalog-app/listing/listing"),
|
|
2591
|
+
name: "Listing"
|
|
2592
|
+
};
|
|
2593
|
+
var lastAnswers = /* @__PURE__ */ new Map();
|
|
2594
|
+
var CatalogShelf = class extends Component {
|
|
2595
|
+
static {
|
|
2596
|
+
decorateFieldV2(this.prototype, "network", [service]);
|
|
2597
|
+
}
|
|
2598
|
+
#network = (initializeDeferredDecorator(this, "network"), void 0);
|
|
2599
|
+
static {
|
|
2600
|
+
decorateFieldV2(this.prototype, "operatorModeStateService", [service]);
|
|
2601
|
+
}
|
|
2602
|
+
#operatorModeStateService = (initializeDeferredDecorator(this, "operatorModeStateService"), void 0);
|
|
2603
|
+
resolve = (link, base) => {
|
|
2604
|
+
try {
|
|
2605
|
+
return this.network.virtualNetwork.toURL(resolveRRIReference(link, rri(base))).href;
|
|
2606
|
+
} catch {
|
|
2607
|
+
return link;
|
|
2608
|
+
}
|
|
2609
|
+
};
|
|
2610
|
+
toListingEntry = (entry) => ({
|
|
2611
|
+
id: this.resolve(trimJsonExtension(entry.id), this.args.realmURL),
|
|
2612
|
+
item: entry.item
|
|
2613
|
+
});
|
|
2614
|
+
index = getSearchEntriesResource(this, () => ({
|
|
2615
|
+
realms: [this.args.realmURL],
|
|
2616
|
+
cardUrls: [`${this.args.realmURL}index.json`],
|
|
2617
|
+
scope: "cards",
|
|
2618
|
+
fields: { entry: ["item.featured"] }
|
|
2619
|
+
}));
|
|
2620
|
+
get featuredIds() {
|
|
2621
|
+
let index = this.index.entries[0];
|
|
2622
|
+
return index ? linkedIds(this.toListingEntry(index), "featured", this.resolve) : [];
|
|
2623
|
+
}
|
|
2624
|
+
static {
|
|
2625
|
+
decorateMethodV2(this.prototype, "featuredIds", [cached$1]);
|
|
2626
|
+
}
|
|
2627
|
+
get featuredCardUrls() {
|
|
2628
|
+
return this.featuredIds.map((id) => `${id}.json`);
|
|
2629
|
+
}
|
|
2630
|
+
static {
|
|
2631
|
+
decorateMethodV2(this.prototype, "featuredCardUrls", [cached$1]);
|
|
2632
|
+
}
|
|
2633
|
+
featured = getSearchEntriesResource(this, () => this.featuredCardUrls.length ? {
|
|
2634
|
+
realms: [this.args.realmURL],
|
|
2635
|
+
cardUrls: this.featuredCardUrls,
|
|
2636
|
+
scope: "cards",
|
|
2637
|
+
fields: { entry: LISTING_FIELDS }
|
|
2638
|
+
} : void 0);
|
|
2639
|
+
others = getSearchEntriesResource(this, () => ({
|
|
2640
|
+
realms: [this.args.realmURL],
|
|
2641
|
+
filter: { "item.on": LISTING_TYPE },
|
|
2642
|
+
page: {
|
|
2643
|
+
number: 0,
|
|
2644
|
+
size: OTHER_LISTINGS_FETCHED
|
|
2645
|
+
},
|
|
2646
|
+
scope: "cards",
|
|
2647
|
+
fields: { entry: LISTING_FIELDS }
|
|
2648
|
+
}));
|
|
2649
|
+
get isAnswered() {
|
|
2650
|
+
let answered = (resource) => resource.entriesQuery !== void 0 || resource.errors !== void 0;
|
|
2651
|
+
if (!answered(this.index) || !answered(this.others)) return false;
|
|
2652
|
+
let wanted = this.featuredCardUrls;
|
|
2653
|
+
if (wanted.length === 0 || this.featured.errors && !this.featured.isLoading) return true;
|
|
2654
|
+
let asked = this.featured.entriesQuery?.cardUrls ?? [];
|
|
2655
|
+
return asked.length === wanted.length && wanted.every((url, i) => asked[i] === url);
|
|
2656
|
+
}
|
|
2657
|
+
get stories() {
|
|
2658
|
+
if (!this.isAnswered) return lastAnswers.get(this.args.realmURL) ?? [];
|
|
2659
|
+
let stories = storiesFrom({
|
|
2660
|
+
featuredIds: this.featuredIds,
|
|
2661
|
+
featured: this.featured.entries.map(this.toListingEntry),
|
|
2662
|
+
others: this.others.entries.map(this.toListingEntry),
|
|
2663
|
+
resolve: this.resolve
|
|
2664
|
+
});
|
|
2665
|
+
lastAnswers.set(this.args.realmURL, stories);
|
|
2666
|
+
return stories;
|
|
2667
|
+
}
|
|
2668
|
+
static {
|
|
2669
|
+
decorateMethodV2(this.prototype, "stories", [cached$1]);
|
|
2670
|
+
}
|
|
2671
|
+
get isPending() {
|
|
2672
|
+
return !this.isAnswered && this.stories.length === 0;
|
|
2673
|
+
}
|
|
2674
|
+
get artQuery() {
|
|
2675
|
+
let exampleIds = this.stories.map((story) => story.exampleId).filter((id) => Boolean(id));
|
|
2676
|
+
if (exampleIds.length === 0) return;
|
|
2677
|
+
return {
|
|
2678
|
+
realms: [this.args.realmURL],
|
|
2679
|
+
cardUrls: exampleIds.map((id) => `${id}.json`),
|
|
2680
|
+
scope: "cards",
|
|
2681
|
+
filter: { eq: { htmlQuery: { eq: { format: "isolated" } } } },
|
|
2682
|
+
fields: { entry: ["html"] }
|
|
2683
|
+
};
|
|
2684
|
+
}
|
|
2685
|
+
artFor = (entries, exampleId) => exampleId ? entries.find((entry) => entry.html?.html != null && this.toListingEntry(entry).id === exampleId) : void 0;
|
|
2686
|
+
headlineId = (index) => `${guidFor(this)}-story-${index}`;
|
|
2687
|
+
open(cardId) {
|
|
2688
|
+
this.operatorModeStateService.openCardInInteractMode(cardId);
|
|
2689
|
+
this.operatorModeStateService.closeWorkspaceChooser();
|
|
2690
|
+
}
|
|
2691
|
+
static {
|
|
2692
|
+
decorateMethodV2(this.prototype, "open", [action]);
|
|
2693
|
+
}
|
|
2694
|
+
async openCatalog() {
|
|
2695
|
+
await this.operatorModeStateService.openWorkspace(this.args.realmURL);
|
|
2696
|
+
}
|
|
2697
|
+
static {
|
|
2698
|
+
decorateMethodV2(this.prototype, "openCatalog", [action]);
|
|
2699
|
+
}
|
|
2700
|
+
static {
|
|
2701
|
+
setComponentTemplate(templateFactory({
|
|
2702
|
+
"id": "DDDZj/cK",
|
|
2703
|
+
"block": "[[[41,[30,0,[\"stories\",\"length\"]],[[[1,\" \"],[11,0],[24,0,\"catalog-shelf\"],[24,\"data-test-catalog-shelf\",\"\"],[17,1],[24,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,\"\\n \"],[8,[32,0],[[24,\"data-scopedcss-3416374426-c845240858\",\"\"]],[[\"@query\",\"@mode\",\"@overlays\"],[[30,0,[\"artQuery\"]],\"none\",false]],[[\"default\"],[[[[1,\"\\n \"],[10,\"ul\"],[14,0,\"stories\"],[14,\"aria-label\",\"From the catalog\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,\"\\n\"],[42,[28,[31,2],[[28,[31,2],[[30,0,[\"stories\"]]],null]],null],\"id\",[[[44,[[28,[30,0,[\"artFor\"]],[[30,2,[\"entries\"]],[30,3,[\"exampleId\"]]],null]],[[[1,\" \"],[10,\"li\"],[15,0,[29,[\"story tint-\",[30,3,[\"tint\"]]]]],[15,\"data-theme\",[30,3,[\"scheme\"]]],[15,\"data-test-catalog-story\",[30,3,[\"id\"]]],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,\"\\n \"],[10,2],[14,0,\"eyebrow\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,[30,3,[\"eyebrow\"]]],[13],[1,\"\\n\"],[1,\" \"],[10,\"h3\"],[14,0,\"headline\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,\"\\n \"],[11,\"button\"],[16,1,[28,[30,0,[\"headlineId\"]],[[30,4]],null]],[24,0,\"story-open\"],[24,\"data-test-catalog-story-open\",\"\"],[24,\"data-scopedcss-3416374426-c845240858\",\"\"],[24,4,\"button\"],[4,[32,1],[\"click\",[28,[32,2],[[30,0,[\"open\"]],[30,3,[\"id\"]]],null]],null],[12],[10,1],[14,0,\"headline-text\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,[30,3,[\"name\"]]],[13],[13],[1,\"\\n \"],[13],[1,\"\\n \"],[11,0],[24,0,\"art\"],[24,\"data-scopedcss-3416374426-c845240858\",\"\"],[4,[32,3],[[32,4]],null],[12],[1,\"\\n\"],[41,[30,5],[[[1,\" \"],[10,0],[14,0,\"art-page\"],[14,\"data-theme\",\"light\"],[14,\"inert\",\"\"],[15,\"data-test-catalog-story-example\",[30,3,[\"exampleId\"]]],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,\"\\n \"],[8,[30,5,[\"component\"]],[[24,\"data-scopedcss-3416374426-c845240858\",\"\"]],null,null],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],[[[41,[30,3,[\"thumbnailURL\"]],[[[1,\" \"],[10,\"img\"],[14,0,\"thumbnail\"],[15,\"src\",[30,3,[\"thumbnailURL\"]]],[14,\"alt\",\"\"],[14,\"loading\",\"lazy\"],[14,\"data-test-catalog-story-thumbnail\",\"\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[13],[1,\"\\n \"]],[]],null]],[]]],[1,\" \"],[13],[1,\"\\n \"],[10,2],[14,0,\"copy\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,[30,3,[\"copy\"]]],[13],[1,\"\\n \"],[10,0],[14,0,\"actions\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,\"\\n\"],[41,[30,3,[\"exampleId\"]],[[[1,\" \"],[8,[32,5],[[24,0,\"action\"],[16,\"aria-describedby\",[28,[30,0,[\"headlineId\"]],[[30,4]],null]],[24,\"data-test-catalog-story-try\",\"\"],[24,\"data-scopedcss-3416374426-c845240858\",\"\"],[4,[32,1],[\"click\",[28,[32,2],[[30,0,[\"open\"]],[30,3,[\"exampleId\"]]],null]],null]],[[\"@tone\",\"@appearance\",\"@shape\"],[\"neutral\",\"outlined\",\"pill\"]],[[\"default\"],[[[[1,\"Try it\"]],[]]]]],[1,\"\\n\"]],[]],null],[1,\" \"],[8,[32,5],[[24,0,\"action\"],[16,\"aria-describedby\",[28,[30,0,[\"headlineId\"]],[[30,4]],null]],[24,\"data-test-catalog-story-action\",\"\"],[24,\"data-scopedcss-3416374426-c845240858\",\"\"],[4,[32,1],[\"click\",[28,[32,2],[[30,0,[\"open\"]],[30,3,[\"id\"]]],null]],null]],[[\"@tone\",\"@appearance\",\"@shape\"],[\"neutral\",\"accent\",\"pill\"]],[[\"default\"],[[[[1,\"Details\"]],[]]]]],[1,\"\\n \"],[13],[1,\"\\n \"],[13],[1,\"\\n\"]],[5]]]],[3,4]],null],[1,\" \"],[13],[1,\"\\n \"]],[2]]]]],[1,\"\\n \"],[8,[32,5],[[24,0,\"see-all\"],[24,\"data-test-catalog-see-all\",\"\"],[24,\"data-scopedcss-3416374426-c845240858\",\"\"],[4,[32,1],[\"click\",[30,0,[\"openCatalog\"]]],null]],[[\"@tone\",\"@appearance\"],[\"neutral\",\"link\"]],[[\"default\"],[[[[1,\"See the full catalog \"],[10,1],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,\"→\"],[13]],[]]]]],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],[[[41,[30,0,[\"isPending\"]],[[[1,\" \"],[11,0],[24,0,\"catalog-shelf\"],[24,\"aria-hidden\",\"true\"],[24,\"inert\",\"\"],[24,\"data-test-catalog-shelf-pending\",\"\"],[17,1],[24,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,\"\\n \"],[10,\"ul\"],[14,0,\"stories\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,\"\\n\"],[42,[28,[31,2],[[28,[31,2],[[32,6]],null]],null],null,[[[1,\" \"],[10,\"li\"],[14,0,\"story is-pending\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,\"\\n \"],[10,2],[14,0,\"eyebrow\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,\"\xA0\"],[13],[1,\"\\n \"],[10,2],[14,0,\"headline\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,\"\xA0\"],[13],[1,\"\\n \"],[10,0],[14,0,\"art\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[13],[1,\"\\n \"],[10,2],[14,0,\"copy\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[13],[1,\"\\n \"],[10,0],[14,0,\"actions\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"pending-action\"],[14,\"data-scopedcss-3416374426-c845240858\",\"\"],[12],[13],[1,\"\\n \"],[13],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n \"],[8,[32,5],[[24,0,\"see-all is-pending\"],[24,\"data-scopedcss-3416374426-c845240858\",\"\"]],[[\"@tone\",\"@appearance\"],[\"neutral\",\"link\"]],[[\"default\"],[[[[1,\"See the full catalog\"]],[]]]]],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],null]],[]]],[1,\"\\n\"]],[\"&attrs\",\"art\",\"story\",\"i\",\"artEntry\"],[\"if\",\"each\",\"-track-array\",\"let\"]]",
|
|
2704
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/catalog-shelf.gts",
|
|
2705
|
+
"scope": () => [
|
|
2706
|
+
SearchResults,
|
|
2707
|
+
on,
|
|
2708
|
+
fn,
|
|
2709
|
+
fitPage,
|
|
2710
|
+
ART_PAGE_WIDTH_PX,
|
|
2711
|
+
Button,
|
|
2712
|
+
PENDING_STORIES
|
|
2713
|
+
],
|
|
2714
|
+
"isStrictMode": true
|
|
2715
|
+
}), this);
|
|
2716
|
+
}
|
|
2717
|
+
};
|
|
2718
|
+
//#endregion
|
|
2719
|
+
//#region app/components/operator-mode/dashboard/section-count.gts
|
|
2720
|
+
var SectionCount = setComponentTemplate(templateFactory({
|
|
2721
|
+
"id": "bADZiith",
|
|
2722
|
+
"block": "[[[11,1],[24,0,\"section-count\"],[17,1],[24,\"data-scopedcss-39a875b699-c0208536ed\",\"\"],[12],[1,[30,2]],[13],[1,\"\\n\\n\"]],[\"&attrs\",\"@count\"],[]]",
|
|
2723
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/section-count.gts",
|
|
2724
|
+
"isStrictMode": true
|
|
2725
|
+
}), templateOnly());
|
|
2726
|
+
//#endregion
|
|
2727
|
+
//#region app/components/operator-mode/dashboard/section-head.gts
|
|
2728
|
+
var SectionHead = setComponentTemplate(templateFactory({
|
|
2729
|
+
"id": "HKS+UKPy",
|
|
2730
|
+
"block": "[[[11,0],[24,0,\"section-head\"],[17,1],[24,\"data-scopedcss-67d76ed2b2-b2ee99fc89\",\"\"],[12],[1,\"\\n \"],[10,\"h2\"],[14,0,\"section-title\"],[14,\"data-scopedcss-67d76ed2b2-b2ee99fc89\",\"\"],[12],[1,\"\\n \"],[8,[30,2],[[24,0,\"section-icon\"],[24,\"width\",\"20\"],[24,\"height\",\"20\"],[24,\"aria-hidden\",\"true\"],[24,\"data-scopedcss-67d76ed2b2-b2ee99fc89\",\"\"]],null,null],[1,\"\\n \"],[10,1],[15,1,[30,3]],[14,\"data-scopedcss-67d76ed2b2-b2ee99fc89\",\"\"],[12],[1,[30,4]],[13],[1,\"\\n\"],[41,[30,5],[[[1,\" \"],[8,[32,0],[[24,\"data-scopedcss-67d76ed2b2-b2ee99fc89\",\"\"]],[[\"@count\"],[[30,5]]],null],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n \"],[18,6,null],[1,\"\\n \"],[10,2],[14,0,\"section-hint\"],[14,\"data-scopedcss-67d76ed2b2-b2ee99fc89\",\"\"],[12],[18,7,null],[13],[1,\"\\n\"],[13],[1,\"\\n\\n\"]],[\"&attrs\",\"@icon\",\"@titleId\",\"@title\",\"@count\",\"&actions\",\"&default\"],[\"if\",\"yield\"]]",
|
|
2731
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/section-head.gts",
|
|
2732
|
+
"scope": () => [SectionCount],
|
|
2733
|
+
"isStrictMode": true
|
|
2734
|
+
}), templateOnly());
|
|
2735
|
+
//#endregion
|
|
2736
|
+
//#region app/components/operator-mode/dashboard/catalog-section.gts
|
|
2737
|
+
var CatalogSection = class extends Component {
|
|
2738
|
+
headingId = `${guidFor(this)}-catalogs`;
|
|
2739
|
+
get shelfRealmURL() {
|
|
2740
|
+
return this.args.showShelf ? catalogRealmURL : null;
|
|
2741
|
+
}
|
|
2742
|
+
static {
|
|
2743
|
+
setComponentTemplate(templateFactory({
|
|
2744
|
+
"id": "ZtNCU0sl",
|
|
2745
|
+
"block": "[[[11,\"section\"],[24,0,\"dashboard-section\"],[16,\"aria-labelledby\",[30,0,[\"headingId\"]]],[24,\"data-test-dashboard-section\",\"catalogs\"],[17,1],[24,\"data-scopedcss-6b5900f04f-602032c2d9\",\"\"],[12],[1,\"\\n \"],[8,[32,0],[[24,\"data-scopedcss-6b5900f04f-602032c2d9\",\"\"]],[[\"@icon\",\"@title\",\"@titleId\",\"@count\"],[[32,1],\"Catalogs\",[30,0,[\"headingId\"]],[30,2,[\"length\"]]]],[[\"actions\",\"default\"],[[[[8,[32,2],[[24,\"data-scopedcss-6b5900f04f-602032c2d9\",\"\"]],null,null]],[]],[[[1,\"Apps, fields and themes to use in your workspaces.\"]],[]]]]],[1,\"\\n\"],[41,[30,0,[\"shelfRealmURL\"]],[[[1,\" \"],[8,[32,3],[[24,\"data-scopedcss-6b5900f04f-602032c2d9\",\"\"]],[[\"@realmURL\"],[[30,0,[\"shelfRealmURL\"]]]],null],[1,\"\\n\"]],[]],null],[41,[30,2,[\"length\"]],[[[1,\" \"],[10,0],[14,0,\"catalog-list\"],[14,\"data-test-catalog-list\",\"\"],[14,\"data-scopedcss-6b5900f04f-602032c2d9\",\"\"],[12],[1,\"\\n\"],[42,[28,[31,2],[[28,[31,2],[[30,2]],null]],null],null,[[[44,[[28,[32,4],[[30,5],[30,4]],null]],[[[1,\" \"],[8,[32,5],[[24,\"data-scopedcss-6b5900f04f-602032c2d9\",\"\"]],[[\"@realmIdentifier\",\"@variant\",\"@navIndex\",\"@isSelected\",\"@selectionActive\"],[[30,3],\"tile\",[30,6],[28,[32,6],[[30,7,[\"currentIndex\"]],[30,6]],null],[30,7,[\"isRingShown\"]]]],null],[1,\"\\n\"]],[6]]]],[3,4]],null],[1,\" \"],[13],[1,\"\\n\"]],[]],[[[1,\" \"],[10,2],[14,0,\"group-empty\"],[14,\"data-test-catalog-empty\",\"\"],[14,\"data-scopedcss-6b5900f04f-602032c2d9\",\"\"],[12],[1,[30,8]],[13],[1,\"\\n\"]],[]]],[13],[1,\"\\n\\n\"]],[\"&attrs\",\"@realmIdentifiers\",\"realmIdentifier\",\"i\",\"@navBase\",\"navIndex\",\"@cursor\",\"@emptyMessage\"],[\"if\",\"each\",\"-track-array\",\"let\"]]",
|
|
2746
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/catalog-section.gts",
|
|
2747
|
+
"scope": () => [
|
|
2748
|
+
SectionHead,
|
|
2749
|
+
IconComponent$3,
|
|
2750
|
+
ManageCatalogs,
|
|
2751
|
+
CatalogShelf,
|
|
2752
|
+
add,
|
|
2753
|
+
Workspace,
|
|
2754
|
+
eq
|
|
2755
|
+
],
|
|
2756
|
+
"isStrictMode": true
|
|
2757
|
+
}), this);
|
|
2758
|
+
}
|
|
2759
|
+
};
|
|
2760
|
+
function recentWorkspaceCount(columns) {
|
|
2761
|
+
return (columns ? columns * 3 : 13) - 1;
|
|
2762
|
+
}
|
|
2763
|
+
function sortByUpdatedAtDesc(urls, infoFor) {
|
|
2764
|
+
let times = new Map(urls.map((url) => {
|
|
2765
|
+
let { updatedAt } = infoFor(url);
|
|
2766
|
+
let time = updatedAt ? new Date(updatedAt).getTime() : NaN;
|
|
2767
|
+
return [url, Number.isNaN(time) ? -Infinity : time];
|
|
2768
|
+
}));
|
|
2769
|
+
return [...urls].sort((a, b) => {
|
|
2770
|
+
let aTime = times.get(a);
|
|
2771
|
+
let bTime = times.get(b);
|
|
2772
|
+
return aTime === bTime ? 0 : bTime > aTime ? 1 : -1;
|
|
2773
|
+
});
|
|
2774
|
+
}
|
|
2775
|
+
function gridColumnCount(grid) {
|
|
2776
|
+
let columns = getComputedStyle(grid).gridTemplateColumns;
|
|
2777
|
+
return columns && columns !== "none" ? columns.split(" ").length : 0;
|
|
2778
|
+
}
|
|
2779
|
+
//#endregion
|
|
2780
|
+
//#region app/components/operator-mode/dashboard/get-started.gts
|
|
2781
|
+
var log$1 = logger("component:dashboard/get-started");
|
|
2782
|
+
var AUTO_DISMISS_RETRY_DELAYS = [5e3, 3e4];
|
|
2783
|
+
var ChangeCounter = class {
|
|
2784
|
+
seen;
|
|
2785
|
+
changes = 0;
|
|
2786
|
+
count(value) {
|
|
2787
|
+
if (!this.seen || this.seen.value !== value) {
|
|
2788
|
+
this.seen = { value };
|
|
2789
|
+
this.changes++;
|
|
2790
|
+
}
|
|
2791
|
+
return this.changes;
|
|
2792
|
+
}
|
|
2793
|
+
};
|
|
2794
|
+
function countOf(values, value) {
|
|
2795
|
+
return values.filter((other) => other === value).length;
|
|
2796
|
+
}
|
|
2797
|
+
var GetStarted = class extends Component {
|
|
2798
|
+
static {
|
|
2799
|
+
decorateFieldV2(this.prototype, "aiAssistantPanelService", [service]);
|
|
2800
|
+
}
|
|
2801
|
+
#aiAssistantPanelService = (initializeDeferredDecorator(this, "aiAssistantPanelService"), void 0);
|
|
2802
|
+
static {
|
|
2803
|
+
decorateFieldV2(this.prototype, "matrixService", [service]);
|
|
2804
|
+
}
|
|
2805
|
+
#matrixService = (initializeDeferredDecorator(this, "matrixService"), void 0);
|
|
2806
|
+
static {
|
|
2807
|
+
decorateFieldV2(this.prototype, "operatorModeStateService", [service]);
|
|
2808
|
+
}
|
|
2809
|
+
#operatorModeStateService = (initializeDeferredDecorator(this, "operatorModeStateService"), void 0);
|
|
2810
|
+
static {
|
|
2811
|
+
decorateFieldV2(this.prototype, "realm", [service]);
|
|
2812
|
+
}
|
|
2813
|
+
#realm = (initializeDeferredDecorator(this, "realm"), void 0);
|
|
2814
|
+
static {
|
|
2815
|
+
decorateFieldV2(this.prototype, "realmServer", [service]);
|
|
2816
|
+
}
|
|
2817
|
+
#realmServer = (initializeDeferredDecorator(this, "realmServer"), void 0);
|
|
2818
|
+
static {
|
|
2819
|
+
decorateFieldV2(this.prototype, "hostModeService", [service]);
|
|
2820
|
+
}
|
|
2821
|
+
#hostModeService = (initializeDeferredDecorator(this, "hostModeService"), void 0);
|
|
2822
|
+
static {
|
|
2823
|
+
decorateFieldV2(this.prototype, "recentCardsService", [service]);
|
|
2824
|
+
}
|
|
2825
|
+
#recentCardsService = (initializeDeferredDecorator(this, "recentCardsService"), void 0);
|
|
2826
|
+
static {
|
|
2827
|
+
decorateFieldV2(this.prototype, "openedIn", [tracked$1]);
|
|
2828
|
+
}
|
|
2829
|
+
#openedIn = (initializeDeferredDecorator(this, "openedIn"), void 0);
|
|
2830
|
+
static {
|
|
2831
|
+
decorateFieldV2(this.prototype, "isExpanded", [tracked$1], function() {
|
|
2832
|
+
return true;
|
|
2833
|
+
});
|
|
2834
|
+
}
|
|
2835
|
+
#isExpanded = (initializeDeferredDecorator(this, "isExpanded"), void 0);
|
|
2836
|
+
static {
|
|
2837
|
+
decorateFieldV2(this.prototype, "dismissedIn", [tracked$1]);
|
|
2838
|
+
}
|
|
2839
|
+
#dismissedIn = (initializeDeferredDecorator(this, "dismissedIn"), void 0);
|
|
2840
|
+
dismissalChanges = new ChangeCounter();
|
|
2841
|
+
focusNext;
|
|
2842
|
+
panelId = `${guidFor(this)}-panel`;
|
|
2843
|
+
titleId = `${guidFor(this)}-title`;
|
|
2844
|
+
stepsId = `${guidFor(this)}-steps`;
|
|
2845
|
+
dismissedNoteId = `${guidFor(this)}-dismissed`;
|
|
2846
|
+
constructor(owner, args) {
|
|
2847
|
+
super(owner, args);
|
|
2848
|
+
this.loadTask.perform().catch((error) => {
|
|
2849
|
+
if (!didCancel(error)) log$1.warn(`waiting for Get started's signals failed: ${error}`);
|
|
2850
|
+
});
|
|
2851
|
+
}
|
|
2852
|
+
loadTask = buildTask(() => ({
|
|
2853
|
+
context: this,
|
|
2854
|
+
generator: function* () {
|
|
2855
|
+
yield this.aiAssistantPanelService.waitForSessionRooms();
|
|
2856
|
+
}
|
|
2857
|
+
}), null, "loadTask", null);
|
|
2858
|
+
get isLoaded() {
|
|
2859
|
+
return Boolean(this.loadTask.lastSuccessful || this.loadTask.lastErrored);
|
|
2860
|
+
}
|
|
2861
|
+
get steps() {
|
|
2862
|
+
return [
|
|
2863
|
+
{
|
|
2864
|
+
id: "open-card",
|
|
2865
|
+
title: "Open a card in a workspace",
|
|
2866
|
+
hint: "Cards hold your data, documents and apps.",
|
|
2867
|
+
done: this.recentCardsService.recentCards.length > 0
|
|
2868
|
+
},
|
|
2869
|
+
this.buildStep,
|
|
2870
|
+
{
|
|
2871
|
+
id: "publish",
|
|
2872
|
+
title: "Put a workspace on the web",
|
|
2873
|
+
hint: "Publish one from its menu to share it at its own address.",
|
|
2874
|
+
done: this.realmServer.userRealmIdentifiers.some((url) => isHostedRealm(this.realm.info(url)))
|
|
2875
|
+
}
|
|
2876
|
+
];
|
|
2877
|
+
}
|
|
2878
|
+
static {
|
|
2879
|
+
decorateMethodV2(this.prototype, "steps", [cached$1]);
|
|
2880
|
+
}
|
|
2881
|
+
get buildStep() {
|
|
2882
|
+
let { agentSetup } = this.matrixService.dashboardState;
|
|
2883
|
+
if (usesCodingAgent(this.matrixService.dashboardAgent, agentSetup)) return {
|
|
2884
|
+
id: "agent",
|
|
2885
|
+
title: "Connect your own agent",
|
|
2886
|
+
hint: "Claude Code or Codex can build in your workspaces through the Boxel plugin.",
|
|
2887
|
+
done: AGENT_KINDS.some(({ id }) => (agentSetup?.[id] ?? 0) > 0)
|
|
2888
|
+
};
|
|
2889
|
+
return {
|
|
2890
|
+
id: "ask-ai",
|
|
2891
|
+
title: "Ask Boxel AI Assistant to build something",
|
|
2892
|
+
hint: "It can make your first cards from a sentence.",
|
|
2893
|
+
done: this.aiAssistantPanelService.aiSessionRooms.some((session) => Boolean(session.lastMessage) || session.name !== "New AI Assistant Chat")
|
|
2894
|
+
};
|
|
2895
|
+
}
|
|
2896
|
+
get doneCount() {
|
|
2897
|
+
return this.steps.filter((step) => step.done).length;
|
|
2898
|
+
}
|
|
2899
|
+
get isDismissed() {
|
|
2900
|
+
return Boolean(this.matrixService.dashboardState.onboardingDismissed);
|
|
2901
|
+
}
|
|
2902
|
+
get dismissalEpoch() {
|
|
2903
|
+
return this.dismissalChanges.count(this.isDismissed);
|
|
2904
|
+
}
|
|
2905
|
+
get isOpen() {
|
|
2906
|
+
return this.openedIn === this.dismissalEpoch;
|
|
2907
|
+
}
|
|
2908
|
+
toggle() {
|
|
2909
|
+
this.openedIn = this.isOpen ? void 0 : this.dismissalEpoch;
|
|
2910
|
+
this.isExpanded = true;
|
|
2911
|
+
}
|
|
2912
|
+
static {
|
|
2913
|
+
decorateMethodV2(this.prototype, "toggle", [action]);
|
|
2914
|
+
}
|
|
2915
|
+
toggleExpanded() {
|
|
2916
|
+
this.isExpanded = !this.isExpanded;
|
|
2917
|
+
}
|
|
2918
|
+
static {
|
|
2919
|
+
decorateMethodV2(this.prototype, "toggleExpanded", [action]);
|
|
2920
|
+
}
|
|
2921
|
+
get nextStep() {
|
|
2922
|
+
return this.steps.find((step) => !step.done);
|
|
2923
|
+
}
|
|
2924
|
+
get isAvailable() {
|
|
2925
|
+
return this.isLoaded && !this.isDismissed && this.nextStep !== void 0;
|
|
2926
|
+
}
|
|
2927
|
+
get isFinished() {
|
|
2928
|
+
return this.isLoaded && !this.isDismissed && this.nextStep === void 0;
|
|
2929
|
+
}
|
|
2930
|
+
get showsDismissedNote() {
|
|
2931
|
+
return this.dismissedIn === this.dismissalEpoch;
|
|
2932
|
+
}
|
|
2933
|
+
get toggleState() {
|
|
2934
|
+
return {
|
|
2935
|
+
isReady: this.isAvailable,
|
|
2936
|
+
isOpen: this.isAvailable && this.isOpen,
|
|
2937
|
+
panelId: this.panelId,
|
|
2938
|
+
toggle: this.toggle
|
|
2939
|
+
};
|
|
2940
|
+
}
|
|
2941
|
+
dismissWhenFinished = modifier(() => {
|
|
2942
|
+
this.autoDismissTask.perform();
|
|
2943
|
+
});
|
|
2944
|
+
autoDismissTask = buildTask(() => ({
|
|
2945
|
+
context: this,
|
|
2946
|
+
generator: function* () {
|
|
2947
|
+
for (let delay of [0, ...AUTO_DISMISS_RETRY_DELAYS]) {
|
|
2948
|
+
yield timeout(delay);
|
|
2949
|
+
if (yield this.saveDismissal()) return;
|
|
2950
|
+
}
|
|
2951
|
+
}
|
|
2952
|
+
}), null, "autoDismissTask", "drop");
|
|
2953
|
+
async saveDismissal() {
|
|
2954
|
+
try {
|
|
2955
|
+
await this.matrixService.updateDashboardState({ onboardingDismissed: true });
|
|
2956
|
+
return true;
|
|
2957
|
+
} catch (error) {
|
|
2958
|
+
log$1.warn(`dismissing Get started failed: ${error}`);
|
|
2959
|
+
return false;
|
|
2960
|
+
}
|
|
2961
|
+
}
|
|
2962
|
+
focusIfNext = modifier((element, [control]) => {
|
|
2963
|
+
if (this.focusNext !== control) return;
|
|
2964
|
+
this.focusNext = void 0;
|
|
2965
|
+
let { activeElement, body } = element.ownerDocument;
|
|
2966
|
+
if (!activeElement || activeElement === body) element.focus();
|
|
2967
|
+
});
|
|
2968
|
+
dismissTask = buildTask(() => ({
|
|
2969
|
+
context: this,
|
|
2970
|
+
generator: function* () {
|
|
2971
|
+
if (!(yield this.saveDismissal())) return;
|
|
2972
|
+
this.focusNext = "undo";
|
|
2973
|
+
this.openedIn = void 0;
|
|
2974
|
+
this.dismissedIn = this.dismissalEpoch;
|
|
2975
|
+
}
|
|
2976
|
+
}), null, "dismissTask", "drop");
|
|
2977
|
+
undoDismissTask = buildTask(() => ({
|
|
2978
|
+
context: this,
|
|
2979
|
+
generator: function* () {
|
|
2980
|
+
this.focusNext = "dismiss";
|
|
2981
|
+
this.isExpanded = true;
|
|
2982
|
+
this.openedIn = this.dismissalEpoch + 1;
|
|
2983
|
+
try {
|
|
2984
|
+
yield this.matrixService.updateDashboardState({ onboardingDismissed: false });
|
|
2985
|
+
} catch (error) {
|
|
2986
|
+
log$1.warn(`undoing the dismissal of Get started failed: ${error}`);
|
|
2987
|
+
this.focusNext = void 0;
|
|
2988
|
+
this.openedIn = void 0;
|
|
2989
|
+
return;
|
|
2990
|
+
}
|
|
2991
|
+
if (!this.isAvailable) {
|
|
2992
|
+
this.focusNext = void 0;
|
|
2993
|
+
this.openedIn = void 0;
|
|
2994
|
+
}
|
|
2995
|
+
}
|
|
2996
|
+
}), null, "undoDismissTask", "drop");
|
|
2997
|
+
async openFirstWorkspace() {
|
|
2998
|
+
let [first] = this.realmServer.userRealmIdentifiers;
|
|
2999
|
+
if (first) await this.operatorModeStateService.openWorkspace(first);
|
|
3000
|
+
}
|
|
3001
|
+
static {
|
|
3002
|
+
decorateMethodV2(this.prototype, "openFirstWorkspace", [action]);
|
|
3003
|
+
}
|
|
3004
|
+
get workspacesToPublish() {
|
|
3005
|
+
return sortByUpdatedAtDesc(this.realmServer.userRealmIdentifiers.filter((url) => this.realm.canPublish(url)), this.realm.info);
|
|
3006
|
+
}
|
|
3007
|
+
static {
|
|
3008
|
+
decorateMethodV2(this.prototype, "workspacesToPublish", [cached$1]);
|
|
3009
|
+
}
|
|
3010
|
+
get publishUnavailableNote() {
|
|
3011
|
+
return this.realmServer.userRealmIdentifiers.some((url) => this.realm.isRealmOwner(url)) ? "None of your workspaces can be published. Create a new one to publish it." : "Publishing needs a workspace you own. Create one to publish it.";
|
|
3012
|
+
}
|
|
3013
|
+
get showsPublishUnavailableNote() {
|
|
3014
|
+
return this.workspacesToPublish.length === 0 && this.realmServer.userRealmIdentifiers.filter((url) => this.realm.isRealmOwner(url)).every((url) => this.realm.isInfoLoaded(url));
|
|
3015
|
+
}
|
|
3016
|
+
get onlyWorkspaceToPublish() {
|
|
3017
|
+
let [only, ...rest] = this.workspacesToPublish;
|
|
3018
|
+
return rest.length === 0 ? only : void 0;
|
|
3019
|
+
}
|
|
3020
|
+
get publishMenuItems() {
|
|
3021
|
+
let workspaces = this.workspacesToPublish;
|
|
3022
|
+
let names = workspaces.map((url) => this.realm.info(url).name);
|
|
3023
|
+
let withSegment = workspaces.map((url, index) => {
|
|
3024
|
+
let segment = realmIdentifierSegments(url).at(-1);
|
|
3025
|
+
return segment ? `${names[index]} (${segment})` : void 0;
|
|
3026
|
+
});
|
|
3027
|
+
return workspaces.map((url, index) => {
|
|
3028
|
+
let label = names[index];
|
|
3029
|
+
if (countOf(names, label) > 1) {
|
|
3030
|
+
let short = withSegment[index];
|
|
3031
|
+
label = short && countOf(withSegment, short) === 1 ? short : `${label} (${this.realm.realmURLTextOf(url) ?? url})`;
|
|
3032
|
+
}
|
|
3033
|
+
return {
|
|
3034
|
+
label,
|
|
3035
|
+
onSelect: () => this.openToPublish(url)
|
|
3036
|
+
};
|
|
3037
|
+
});
|
|
3038
|
+
}
|
|
3039
|
+
openToPublish(workspace) {
|
|
3040
|
+
this.hostModeService.openToPublishTask.perform(workspace);
|
|
3041
|
+
}
|
|
3042
|
+
static {
|
|
3043
|
+
decorateMethodV2(this.prototype, "openToPublish", [action]);
|
|
3044
|
+
}
|
|
3045
|
+
async askBoxelAi() {
|
|
3046
|
+
await this.aiAssistantPanelService.openNewSession();
|
|
3047
|
+
}
|
|
3048
|
+
static {
|
|
3049
|
+
decorateMethodV2(this.prototype, "askBoxelAi", [action]);
|
|
3050
|
+
}
|
|
3051
|
+
static {
|
|
3052
|
+
setComponentTemplate(templateFactory({
|
|
3053
|
+
"id": "aTKK32V5",
|
|
3054
|
+
"block": "[[[18,6,[[30,0,[\"toggleState\"]]]],[1,\"\\n\"],[41,[30,0,[\"toggleState\",\"isOpen\"]],[[[1,\" \"],[11,\"section\"],[24,0,\"get-started\"],[16,1,[30,0,[\"panelId\"]]],[16,\"aria-labelledby\",[30,0,[\"titleId\"]]],[24,\"data-test-get-started\",\"\"],[17,1],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,\"\\n \"],[10,0],[14,0,\"get-started-body\"],[14,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,\"\\n \"],[10,\"header\"],[14,0,\"get-started-head\"],[14,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,\"\\n \"],[10,\"h2\"],[14,0,\"get-started-title\"],[15,1,[30,0,[\"titleId\"]]],[14,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,\"Get started\"],[13],[1,\"\\n \"],[8,[32,0],[[24,0,\"get-started-progress\"],[16,\"aria-labelledby\",[30,0,[\"titleId\"]]],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"]],[[\"@value\",\"@max\"],[[30,0,[\"doneCount\"]],[30,0,[\"steps\",\"length\"]]]],null],[1,\"\\n \"],[10,2],[14,0,\"get-started-count\"],[14,\"data-test-get-started-count\",\"\"],[14,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,\"\\n \"],[1,[30,0,[\"doneCount\"]]],[1,\"\\n of\\n \"],[1,[30,0,[\"steps\",\"length\"]]],[1,\"\\n done\\n\"],[41,[51,[30,0,[\"isExpanded\"]]],[[[41,[30,0,[\"nextStep\"]],[[[1,\" · Next:\\n \"],[1,[30,0,[\"nextStep\",\"title\"]]],[1,\"\\n\"]],[]],null]],[]],null],[1,\" \"],[13],[1,\"\\n \"],[8,[32,1],[[24,0,\"get-started-dismiss\"],[24,\"data-test-get-started-dismiss\",\"\"],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[4,[32,2],[\"click\",[30,0,[\"dismissTask\",\"perform\"]]],null],[4,[30,0,[\"focusIfNext\"]],[\"dismiss\"],null]],[[\"@tone\",\"@appearance\",\"@size\",\"@busy\"],[\"danger\",\"link\",\"s\",[30,0,[\"dismissTask\",\"isRunning\"]]]],[[\"default\"],[[[[1,\"\\n Dismiss\\n \"]],[]]]]],[1,\"\\n\"],[1,\" \"],[10,0],[14,0,\"get-started-actions\"],[14,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,\"\\n \"],[8,[32,3],[[16,\"aria-expanded\",[52,[30,0,[\"isExpanded\"]],\"true\",\"false\"]],[16,\"aria-controls\",[52,[30,0,[\"isExpanded\"]],[30,0,[\"stepsId\"]]]],[24,\"data-test-get-started-toggle\",\"\"],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[4,[32,2],[\"click\",[30,0,[\"toggleExpanded\"]]],null]],[[\"@icon\",\"@label\",\"@tooltip\",\"@appearance\",\"@size\"],[[52,[30,0,[\"isExpanded\"]],[32,4],[32,5]],[52,[30,0,[\"isExpanded\"]],\"Minimize steps\",\"Expand steps\"],[52,[30,0,[\"isExpanded\"]],\"Minimize steps\",\"Expand steps\"],\"plain\",\"s\"]],null],[1,\"\\n \"],[13],[1,\"\\n \"],[13],[1,\"\\n\\n\"],[41,[30,0,[\"isExpanded\"]],[[[1,\" \"],[10,\"ol\"],[14,0,\"get-started-steps\"],[15,1,[30,0,[\"stepsId\"]]],[14,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,\"\\n\"],[42,[28,[31,4],[[28,[31,4],[[30,0,[\"steps\"]]],null]],null],\"id\",[[[1,\" \"],[10,\"li\"],[15,0,[28,[32,6],[\"get-started-step\"],[[\"is-done\"],[[30,2,[\"done\"]]]]]],[15,\"data-test-get-started-step\",[30,2,[\"id\"]]],[15,\"data-test-get-started-step-done\",[52,[30,2,[\"done\"]],\"true\",\"false\"]],[14,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"tick\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,\"\\n\"],[41,[30,2,[\"done\"]],[[[1,\" \"],[8,[32,7],[[24,\"width\",\"14\"],[24,\"height\",\"14\"],[24,\"stroke-width\",\"3\"],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"]],null,null],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n \"],[10,1],[14,0,\"step-words\"],[14,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"step-title\"],[14,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,\"\\n \"],[1,[30,2,[\"title\"]]],[1,\"\\n\"],[41,[30,2,[\"done\"]],[[[1,\" \"],[8,[32,8],[[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"]],null,[[\"default\"],[[[[1,\"(done)\"]],[]]]]],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n \"],[10,1],[14,0,\"step-hint\"],[14,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,[30,2,[\"hint\"]]],[13],[1,\"\\n\"],[41,[28,[32,9],[[30,2,[\"id\"]],\"publish\"],null],[[[41,[51,[30,2,[\"done\"]]],[[[41,[30,0,[\"showsPublishUnavailableNote\"]],[[[1,\" \"],[10,1],[14,0,\"step-note\"],[14,\"data-test-get-started-publish-unavailable\",\"\"],[14,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,[30,0,[\"publishUnavailableNote\"]]],[13],[1,\"\\n\"]],[]],null]],[]],null]],[]],null],[1,\" \"],[13],[1,\"\\n\"],[41,[28,[32,9],[[30,2,[\"id\"]],\"publish\"],null],[[[41,[30,0,[\"onlyWorkspaceToPublish\"]],[[[1,\" \"],[8,[32,1],[[24,0,\"step-action\"],[16,\"data-test-get-started-action\",[30,2,[\"id\"]]],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[4,[32,2],[\"click\",[28,[32,10],[[30,0,[\"openToPublish\"]],[30,0,[\"onlyWorkspaceToPublish\"]]],null]],null]],[[\"@appearance\",\"@size\"],[\"outlined\",\"s\"]],[[\"default\"],[[[[1,\"Publish a workspace\"]],[]]]]],[1,\"\\n\"]],[]],[[[41,[30,0,[\"workspacesToPublish\",\"length\"]],[[[1,\" \"],[8,[32,11],[[24,0,\"step-action\"],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"]],[[\"@items\",\"@label\",\"@align\"],[[30,0,[\"publishMenuItems\"]],\"Workspaces to publish\",\"end\"]],[[\"trigger\"],[[[[1,\"\\n \"],[8,[32,1],[[16,\"data-test-get-started-action\",[30,2,[\"id\"]]],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[4,[32,2],[\"click\",[30,4]],null]],[[\"@appearance\",\"@size\"],[\"outlined\",\"s\"]],[[\"default\"],[[[[1,\"Publish a workspace\\n\"],[41,[30,3],[[[1,\" \"],[8,[32,4],[[24,\"width\",\"14\"],[24,\"height\",\"14\"],[24,0,\"publish-chevron\"],[24,\"aria-hidden\",\"true\"],[24,\"data-test-get-started-publish-chevron\",\"up\"],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"]],null,null],[1,\"\\n\"]],[]],[[[1,\" \"],[8,[32,5],[[24,\"width\",\"14\"],[24,\"height\",\"14\"],[24,0,\"publish-chevron\"],[24,\"aria-hidden\",\"true\"],[24,\"data-test-get-started-publish-chevron\",\"down\"],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"]],null,null],[1,\"\\n \"]],[]]]],[]]]]],[1,\"\\n \"]],[3,4]]]]],[1,\"\\n \"]],[]],null]],[]]]],[]],[[[41,[28,[32,12],[[30,2,[\"done\"]]],null],[[[41,[28,[32,9],[[30,2,[\"id\"]],\"open-card\"],null],[[[41,[30,0,[\"realmServer\",\"userRealmIdentifiers\",\"length\"]],[[[1,\" \"],[8,[32,1],[[24,0,\"step-action\"],[16,\"data-test-get-started-action\",[30,2,[\"id\"]]],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[4,[32,2],[\"click\",[30,0,[\"openFirstWorkspace\"]]],null]],[[\"@appearance\",\"@size\"],[\"outlined\",\"s\"]],[[\"default\"],[[[[1,\"Open a workspace\"]],[]]]]],[1,\"\\n\"]],[]],null]],[]],[[[41,[28,[32,9],[[30,2,[\"id\"]],\"ask-ai\"],null],[[[1,\" \"],[8,[32,1],[[24,0,\"step-action\"],[16,\"data-test-get-started-action\",[30,2,[\"id\"]]],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[4,[32,2],[\"click\",[30,0,[\"askBoxelAi\"]]],null]],[[\"@appearance\",\"@size\"],[\"outlined\",\"s\"]],[[\"default\"],[[[[1,\"Ask Boxel AI Assistant\"]],[]]]]],[1,\"\\n\"]],[]],[[[41,[28,[32,9],[[30,2,[\"id\"]],\"agent\"],null],[[[1,\" \"],[8,[32,1],[[24,0,\"step-action\"],[16,\"data-test-get-started-action\",[30,2,[\"id\"]]],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[4,[32,2],[\"click\",[30,5]],null]],[[\"@appearance\",\"@size\"],[\"outlined\",\"s\"]],[[\"default\"],[[[[1,\"Set up an agent\"]],[]]]]],[1,\"\\n \"]],[]],null]],[]]]],[]]],[1,\" \"]],[]],null]],[]]],[1,\" \"],[13],[1,\"\\n\"]],[2]],null],[1,\" \"],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],[[[41,[30,0,[\"showsDismissedNote\"]],[[[1,\" \"],[10,0],[14,0,\"get-started-dismissed\"],[14,\"data-test-get-started-dismissed\",\"\"],[14,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,\"\\n \"],[10,2],[14,0,\"dismissed-note\"],[15,1,[30,0,[\"dismissedNoteId\"]]],[14,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[12],[1,\"Get started won’t\\n show again.\"],[13],[1,\"\\n \"],[8,[32,1],[[16,\"aria-describedby\",[30,0,[\"dismissedNoteId\"]]],[24,\"data-test-get-started-undo-dismiss\",\"\"],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[4,[32,2],[\"click\",[30,0,[\"undoDismissTask\",\"perform\"]]],null],[4,[30,0,[\"focusIfNext\"]],[\"undo\"],null]],[[\"@appearance\",\"@size\",\"@busy\"],[\"link\",\"s\",[30,0,[\"undoDismissTask\",\"isRunning\"]]]],[[\"default\"],[[[[1,\"\\n Undo\\n \"]],[]]]]],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],[[[41,[30,0,[\"isFinished\"]],[[[1,\" \"],[11,1],[24,\"hidden\",\"\"],[24,\"data-scopedcss-697a231739-8115cad5a6\",\"\"],[4,[30,0,[\"dismissWhenFinished\"]],null,null],[12],[13],[1,\"\\n\"]],[]],null]],[]]]],[]]],[1,\"\\n\"]],[\"&attrs\",\"step\",\"isMenuOpen\",\"toggle\",\"@showAgents\",\"&head\"],[\"yield\",\"if\",\"unless\",\"each\",\"-track-array\"]]",
|
|
3055
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/get-started.gts",
|
|
3056
|
+
"scope": () => [
|
|
3057
|
+
ProgressBar,
|
|
3058
|
+
Button,
|
|
3059
|
+
on,
|
|
3060
|
+
IconButton,
|
|
3061
|
+
IconComponent$6,
|
|
3062
|
+
IconComponent$13,
|
|
3063
|
+
cn_default,
|
|
3064
|
+
IconComponent$9,
|
|
3065
|
+
VisuallyHidden,
|
|
3066
|
+
eq,
|
|
3067
|
+
fn,
|
|
3068
|
+
Menu,
|
|
3069
|
+
not
|
|
3070
|
+
],
|
|
3071
|
+
"isStrictMode": true
|
|
3072
|
+
}), this);
|
|
3073
|
+
}
|
|
3074
|
+
};
|
|
3075
|
+
//#endregion
|
|
3076
|
+
//#region app/components/operator-mode/dashboard/keyboard-cursor.ts
|
|
3077
|
+
var KeyboardCursor = class {
|
|
3078
|
+
static {
|
|
3079
|
+
decorateFieldV2(this.prototype, "selected", [tracked$1], function() {
|
|
3080
|
+
return null;
|
|
3081
|
+
});
|
|
3082
|
+
}
|
|
3083
|
+
#selected = (initializeDeferredDecorator(this, "selected"), void 0);
|
|
3084
|
+
static {
|
|
3085
|
+
decorateFieldV2(this.prototype, "keyboardEngaged", [tracked$1], function() {
|
|
3086
|
+
return false;
|
|
3087
|
+
});
|
|
3088
|
+
}
|
|
3089
|
+
#keyboardEngaged = (initializeDeferredDecorator(this, "keyboardEngaged"), void 0);
|
|
3090
|
+
constructor(walk) {
|
|
3091
|
+
this.walk = walk;
|
|
3092
|
+
}
|
|
3093
|
+
get currentIndex() {
|
|
3094
|
+
let keys = this.walk.keys();
|
|
3095
|
+
if (keys.length === 0) return 0;
|
|
3096
|
+
let index;
|
|
3097
|
+
if (this.selected) {
|
|
3098
|
+
let found = keys.indexOf(this.selected.key);
|
|
3099
|
+
index = found >= 0 ? found : this.selected.index;
|
|
3100
|
+
} else index = this.walk.defaultIndex();
|
|
3101
|
+
return Math.min(Math.max(index, 0), keys.length - 1);
|
|
3102
|
+
}
|
|
3103
|
+
static {
|
|
3104
|
+
decorateMethodV2(this.prototype, "currentIndex", [cached$1]);
|
|
3105
|
+
}
|
|
3106
|
+
get isRingShown() {
|
|
3107
|
+
return this.keyboardEngaged;
|
|
3108
|
+
}
|
|
3109
|
+
select(index) {
|
|
3110
|
+
let key = this.walk.keys()[index];
|
|
3111
|
+
if (key !== void 0) this.selected = {
|
|
3112
|
+
key,
|
|
3113
|
+
index
|
|
3114
|
+
};
|
|
3115
|
+
}
|
|
3116
|
+
onPointerUp = () => {
|
|
3117
|
+
this.keyboardEngaged = false;
|
|
3118
|
+
};
|
|
3119
|
+
onFocusIn = (event) => {
|
|
3120
|
+
let target = event.target;
|
|
3121
|
+
let item = target.closest("[data-nav-index]") ?? target.closest("[data-workspace-tile]")?.querySelector("[data-nav-index]");
|
|
3122
|
+
if (!item) return;
|
|
3123
|
+
let index = Number(item.dataset.navIndex);
|
|
3124
|
+
if (Number.isNaN(index)) return;
|
|
3125
|
+
if (index !== this.currentIndex || !this.selected && target !== item) this.select(index);
|
|
3126
|
+
};
|
|
3127
|
+
onKeydown = (keydown) => {
|
|
3128
|
+
let event = keydown;
|
|
3129
|
+
let container = event.currentTarget;
|
|
3130
|
+
let count = this.walk.keys().length;
|
|
3131
|
+
if (count === 0) return;
|
|
3132
|
+
if (event.key === "Tab") this.keyboardEngaged = true;
|
|
3133
|
+
if (event.target === container) {
|
|
3134
|
+
let item = this.itemAt(container, this.currentIndex);
|
|
3135
|
+
if (event.key.startsWith("Arrow") || event.key === "Enter" && item && !isOffScreen(item)) {
|
|
3136
|
+
event.preventDefault();
|
|
3137
|
+
this.showCursor(item);
|
|
3138
|
+
item?.focus({ preventScroll: true });
|
|
3139
|
+
}
|
|
3140
|
+
return;
|
|
3141
|
+
}
|
|
3142
|
+
if (!event.target.closest("[data-nav-index]")) return;
|
|
3143
|
+
if (!this.keyboardEngaged && event.key.startsWith("Arrow")) {
|
|
3144
|
+
event.preventDefault();
|
|
3145
|
+
this.showCursor(this.itemAt(container, this.currentIndex));
|
|
3146
|
+
return;
|
|
3147
|
+
}
|
|
3148
|
+
switch (event.key) {
|
|
3149
|
+
case "ArrowRight":
|
|
3150
|
+
event.preventDefault();
|
|
3151
|
+
this.select(Math.min(this.currentIndex + 1, count - 1));
|
|
3152
|
+
break;
|
|
3153
|
+
case "ArrowLeft":
|
|
3154
|
+
event.preventDefault();
|
|
3155
|
+
this.select(Math.max(this.currentIndex - 1, 0));
|
|
3156
|
+
break;
|
|
3157
|
+
case "ArrowDown":
|
|
3158
|
+
case "ArrowUp": {
|
|
3159
|
+
event.preventDefault();
|
|
3160
|
+
let index = nearestNavIndexInRow(container, this.currentIndex, event.key === "ArrowDown" ? 1 : -1);
|
|
3161
|
+
if (index !== void 0) this.select(index);
|
|
3162
|
+
break;
|
|
3163
|
+
}
|
|
3164
|
+
case "Enter":
|
|
3165
|
+
event.preventDefault();
|
|
3166
|
+
event.stopPropagation();
|
|
3167
|
+
this.itemAt(container, this.currentIndex)?.click();
|
|
3168
|
+
break;
|
|
3169
|
+
}
|
|
3170
|
+
};
|
|
3171
|
+
showCursor(item) {
|
|
3172
|
+
this.keyboardEngaged = true;
|
|
3173
|
+
item?.scrollIntoView({ block: "nearest" });
|
|
3174
|
+
}
|
|
3175
|
+
itemAt(container, index) {
|
|
3176
|
+
return container.querySelector(`[data-nav-index='${index}']`);
|
|
3177
|
+
}
|
|
3178
|
+
};
|
|
3179
|
+
//#endregion
|
|
3180
|
+
//#region app/components/operator-mode/dashboard/realm-list-flyout.gts
|
|
3181
|
+
var RealmListFlyout = class extends Component {
|
|
3182
|
+
static {
|
|
3183
|
+
decorateFieldV2(this.prototype, "operatorModeStateService", [service]);
|
|
3184
|
+
}
|
|
3185
|
+
#operatorModeStateService = (initializeDeferredDecorator(this, "operatorModeStateService"), void 0);
|
|
3186
|
+
static {
|
|
3187
|
+
decorateFieldV2(this.prototype, "realm", [service]);
|
|
3188
|
+
}
|
|
3189
|
+
#realm = (initializeDeferredDecorator(this, "realm"), void 0);
|
|
3190
|
+
get realms() {
|
|
3191
|
+
return this.args.realmURLs.map((url) => {
|
|
3192
|
+
let info = this.realm.info(url);
|
|
3193
|
+
return {
|
|
3194
|
+
url,
|
|
3195
|
+
info,
|
|
3196
|
+
isHosted: isHostedRealm(info),
|
|
3197
|
+
wallpaper: wallpaperImage(info.backgroundURL)
|
|
3198
|
+
};
|
|
3199
|
+
});
|
|
3200
|
+
}
|
|
3201
|
+
static {
|
|
3202
|
+
decorateMethodV2(this.prototype, "realms", [cached$1]);
|
|
3203
|
+
}
|
|
3204
|
+
async openWorkspace(url) {
|
|
3205
|
+
this.args.close();
|
|
3206
|
+
await this.operatorModeStateService.openWorkspace(url);
|
|
3207
|
+
}
|
|
3208
|
+
static {
|
|
3209
|
+
decorateMethodV2(this.prototype, "openWorkspace", [action]);
|
|
3210
|
+
}
|
|
3211
|
+
static {
|
|
3212
|
+
setComponentTemplate(templateFactory({
|
|
3213
|
+
"id": "utJJbZtc",
|
|
3214
|
+
"block": "[[[10,\"header\"],[14,0,\"flyout-header\"],[14,\"data-scopedcss-156e4716fe-7ffa82dbb4\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"flyout-title\"],[15,1,[30,1]],[14,\"data-scopedcss-156e4716fe-7ffa82dbb4\",\"\"],[12],[1,[30,2]],[13],[1,\"\\n\"],[41,[30,0,[\"realms\",\"length\"]],[[[1,\" \"],[8,[32,0],[[24,\"data-test-section-rail-flyout-count\",\"\"],[24,\"data-scopedcss-156e4716fe-7ffa82dbb4\",\"\"]],[[\"@count\"],[[30,0,[\"realms\",\"length\"]]]],null],[1,\"\\n\"]],[]],null],[13],[1,\"\\n\"],[42,[28,[31,2],[[28,[31,2],[[30,0,[\"realms\"]]],null]],null],\"url\",[[[1,\" \"],[8,[32,1],[[24,0,\"realm\"],[16,\"data-test-section-rail-realm\",[30,3,[\"info\",\"name\"]]],[24,\"data-scopedcss-156e4716fe-7ffa82dbb4\",\"\"],[4,[32,2],[\"click\",[28,[32,3],[[30,0,[\"openWorkspace\"]],[30,3,[\"url\"]]],null]],null]],[[\"@appearance\"],[\"plain\"]],[[\"default\"],[[[[1,\"\\n \"],[10,1],[14,0,\"realm-content\"],[14,\"data-scopedcss-156e4716fe-7ffa82dbb4\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"realm-thumb\"],[15,5,[28,[32,4],null,[[\"realm-wallpaper\"],[[30,3,[\"wallpaper\"]]]]]],[14,\"data-scopedcss-156e4716fe-7ffa82dbb4\",\"\"],[12],[1,\"\\n \"],[8,[32,5],[[24,0,\"realm-icon\"],[24,\"aria-hidden\",\"true\"],[24,\"data-scopedcss-156e4716fe-7ffa82dbb4\",\"\"]],[[\"@realmInfo\"],[[30,3,[\"info\"]]]],null],[1,\"\\n \"],[13],[1,\"\\n \"],[10,1],[14,0,\"realm-name\"],[14,\"data-scopedcss-156e4716fe-7ffa82dbb4\",\"\"],[12],[1,[30,3,[\"info\",\"name\"]]],[13],[1,\"\\n\"],[41,[30,3,[\"isHosted\"]],[[[1,\" \"],[8,[32,6],[[24,\"data-scopedcss-156e4716fe-7ffa82dbb4\",\"\"]],null,null],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n \"]],[]]]]],[1,\"\\n\"]],[3]],[[[1,\" \"],[10,2],[14,0,\"flyout-empty\"],[14,\"data-test-section-rail-flyout-empty\",\"\"],[14,\"data-scopedcss-156e4716fe-7ffa82dbb4\",\"\"],[12],[1,\"\\n \"],[1,[30,4]],[1,\"\\n \"],[13],[1,\"\\n\"]],[]]],[1,\"\\n\"]],[\"@titleId\",\"@title\",\"realm\",\"@emptyMessage\"],[\"if\",\"each\",\"-track-array\"]]",
|
|
3215
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/realm-list-flyout.gts",
|
|
3216
|
+
"scope": () => [
|
|
3217
|
+
SectionCount,
|
|
3218
|
+
Button,
|
|
3219
|
+
on,
|
|
3220
|
+
fn,
|
|
3221
|
+
css_var_default,
|
|
3222
|
+
RealmIcon,
|
|
3223
|
+
HostedPill
|
|
3224
|
+
],
|
|
3225
|
+
"isStrictMode": true
|
|
3226
|
+
}), this);
|
|
3227
|
+
}
|
|
3228
|
+
};
|
|
3229
|
+
function realmListFlyout(title, realmURLs, emptyMessage) {
|
|
3230
|
+
return setComponentTemplate(templateFactory({
|
|
3231
|
+
"id": "mBa+wnpb",
|
|
3232
|
+
"block": "[[[8,[32,0],null,[[\"@title\",\"@titleId\",\"@close\",\"@realmURLs\",\"@emptyMessage\"],[[32,1],[30,1],[30,2],[28,[32,2],null,null],[28,[32,3],null,null]]],null]],[\"@titleId\",\"@close\"],[]]",
|
|
3233
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/realm-list-flyout.gts",
|
|
3234
|
+
"scope": () => [
|
|
3235
|
+
RealmListFlyout,
|
|
3236
|
+
title,
|
|
3237
|
+
realmURLs,
|
|
3238
|
+
emptyMessage
|
|
3239
|
+
],
|
|
3240
|
+
"isStrictMode": true
|
|
3241
|
+
}), templateOnly());
|
|
3242
|
+
}
|
|
3243
|
+
//#endregion
|
|
3244
|
+
//#region app/components/operator-mode/dashboard/index.gts
|
|
3245
|
+
var log = logger("component:dashboard");
|
|
3246
|
+
var SCOPE_OPTIONS = [{
|
|
3247
|
+
value: "all",
|
|
3248
|
+
label: "All"
|
|
3249
|
+
}, {
|
|
3250
|
+
value: "hosted",
|
|
3251
|
+
label: "Hosted"
|
|
3252
|
+
}];
|
|
3253
|
+
var Dashboard = class extends Component {
|
|
3254
|
+
static {
|
|
3255
|
+
decorateFieldV2(this.prototype, "matrixService", [service]);
|
|
3256
|
+
}
|
|
3257
|
+
#matrixService = (initializeDeferredDecorator(this, "matrixService"), void 0);
|
|
3258
|
+
static {
|
|
3259
|
+
decorateFieldV2(this.prototype, "network", [service]);
|
|
3260
|
+
}
|
|
3261
|
+
#network = (initializeDeferredDecorator(this, "network"), void 0);
|
|
3262
|
+
static {
|
|
3263
|
+
decorateFieldV2(this.prototype, "operatorModeStateService", [service]);
|
|
3264
|
+
}
|
|
3265
|
+
#operatorModeStateService = (initializeDeferredDecorator(this, "operatorModeStateService"), void 0);
|
|
3266
|
+
static {
|
|
3267
|
+
decorateFieldV2(this.prototype, "realmServer", [service]);
|
|
3268
|
+
}
|
|
3269
|
+
#realmServer = (initializeDeferredDecorator(this, "realmServer"), void 0);
|
|
3270
|
+
static {
|
|
3271
|
+
decorateFieldV2(this.prototype, "realm", [service]);
|
|
3272
|
+
}
|
|
3273
|
+
#realm = (initializeDeferredDecorator(this, "realm"), void 0);
|
|
3274
|
+
returnRealmURL = this.readReturnRealmURL();
|
|
3275
|
+
readReturnRealmURL() {
|
|
3276
|
+
try {
|
|
3277
|
+
return this.operatorModeStateService.openRealmURL || void 0;
|
|
3278
|
+
} catch {
|
|
3279
|
+
return;
|
|
3280
|
+
}
|
|
3281
|
+
}
|
|
3282
|
+
static {
|
|
3283
|
+
decorateFieldV2(this.prototype, "hour", [tracked$1], function() {
|
|
3284
|
+
return (/* @__PURE__ */ new Date()).getHours();
|
|
3285
|
+
});
|
|
3286
|
+
}
|
|
3287
|
+
#hour = (initializeDeferredDecorator(this, "hour"), void 0);
|
|
3288
|
+
get greeting() {
|
|
3289
|
+
return greetingFor(this.hour, this.matrixService.profile.displayName);
|
|
3290
|
+
}
|
|
3291
|
+
trackHour = modifier(() => {
|
|
3292
|
+
let timer;
|
|
3293
|
+
let schedule = () => {
|
|
3294
|
+
let now = /* @__PURE__ */ new Date();
|
|
3295
|
+
let nextHour = new Date(now);
|
|
3296
|
+
nextHour.setHours(now.getHours() + 1, 0, 0, 0);
|
|
3297
|
+
timer = setTimeout(update, nextHour.getTime() - now.getTime());
|
|
3298
|
+
};
|
|
3299
|
+
let update = () => {
|
|
3300
|
+
clearTimeout(timer);
|
|
3301
|
+
this.hour = (/* @__PURE__ */ new Date()).getHours();
|
|
3302
|
+
schedule();
|
|
3303
|
+
};
|
|
3304
|
+
let onVisibilityChange = () => {
|
|
3305
|
+
if (document.visibilityState === "visible") update();
|
|
3306
|
+
};
|
|
3307
|
+
schedule();
|
|
3308
|
+
document.addEventListener("visibilitychange", onVisibilityChange);
|
|
3309
|
+
return () => {
|
|
3310
|
+
clearTimeout(timer);
|
|
3311
|
+
document.removeEventListener("visibilitychange", onVisibilityChange);
|
|
3312
|
+
};
|
|
3313
|
+
});
|
|
3314
|
+
headingId = (section) => `${guidFor(this)}-${section}`;
|
|
3315
|
+
rowListId = `${guidFor(this)}-workspace-rows`;
|
|
3316
|
+
static {
|
|
3317
|
+
decorateFieldV2(this.prototype, "scope", [tracked$1], function() {
|
|
3318
|
+
return "all";
|
|
3319
|
+
});
|
|
3320
|
+
}
|
|
3321
|
+
#scope = (initializeDeferredDecorator(this, "scope"), void 0);
|
|
3322
|
+
scopeOptions = SCOPE_OPTIONS;
|
|
3323
|
+
setScope(value) {
|
|
3324
|
+
let option = SCOPE_OPTIONS.find((option) => option.value === value);
|
|
3325
|
+
if (option) {
|
|
3326
|
+
this.scope = option.value;
|
|
3327
|
+
this.showAllWorkspaces = false;
|
|
3328
|
+
}
|
|
3329
|
+
}
|
|
3330
|
+
static {
|
|
3331
|
+
decorateMethodV2(this.prototype, "setScope", [action]);
|
|
3332
|
+
}
|
|
3333
|
+
static {
|
|
3334
|
+
decorateFieldV2(this.prototype, "isArchivedExpanded", [tracked$1], function() {
|
|
3335
|
+
return false;
|
|
3336
|
+
});
|
|
3337
|
+
}
|
|
3338
|
+
#isArchivedExpanded = (initializeDeferredDecorator(this, "isArchivedExpanded"), void 0);
|
|
3339
|
+
get archivedRealms() {
|
|
3340
|
+
return this.realmServer.archivedRealms;
|
|
3341
|
+
}
|
|
3342
|
+
get unreachableRealmServers() {
|
|
3343
|
+
return this.realmServer.unreachableRealmServers;
|
|
3344
|
+
}
|
|
3345
|
+
get unreachableRealmServersMessage() {
|
|
3346
|
+
return unreachableRealmServersMessage(this.unreachableRealmServers, this.isRetryingUnreachableRealmServers);
|
|
3347
|
+
}
|
|
3348
|
+
get isRetryingUnreachableRealmServers() {
|
|
3349
|
+
return this.matrixService.isRetryingUnreachableRealmServers;
|
|
3350
|
+
}
|
|
3351
|
+
get unreachableNoticeIcon() {
|
|
3352
|
+
return this.isRetryingUnreachableRealmServers ? IconComponent$7 : IconComponent$8;
|
|
3353
|
+
}
|
|
3354
|
+
get showArchivedCount() {
|
|
3355
|
+
return Boolean(this.loadArchivedRealmsTask.lastSuccessful) || this.archivedRealms.length > 0;
|
|
3356
|
+
}
|
|
3357
|
+
loadArchivedRealmsTask = buildTask(() => ({
|
|
3358
|
+
context: this,
|
|
3359
|
+
generator: function* () {
|
|
3360
|
+
yield this.realmServer.fetchArchivedRealms();
|
|
3361
|
+
}
|
|
3362
|
+
}), null, "loadArchivedRealmsTask", "drop");
|
|
3363
|
+
get archivedLoadFailed() {
|
|
3364
|
+
return Boolean(this.loadArchivedRealmsTask.last?.isError);
|
|
3365
|
+
}
|
|
3366
|
+
setArchivedExpanded(isExpanded) {
|
|
3367
|
+
this.isArchivedExpanded = isExpanded;
|
|
3368
|
+
if (this.isArchivedExpanded) this.loadArchivedRealms();
|
|
3369
|
+
}
|
|
3370
|
+
static {
|
|
3371
|
+
decorateMethodV2(this.prototype, "setArchivedExpanded", [action]);
|
|
3372
|
+
}
|
|
3373
|
+
loadArchivedRealms() {
|
|
3374
|
+
if (!this.loadArchivedRealmsTask.lastSuccessful && !this.loadArchivedRealmsTask.isRunning) this.loadArchivedRealmsTask.perform().catch((error) => {
|
|
3375
|
+
if (didCancel(error)) return;
|
|
3376
|
+
log.warn(`loading archived realms failed: ${error}`);
|
|
3377
|
+
});
|
|
3378
|
+
}
|
|
3379
|
+
static {
|
|
3380
|
+
decorateMethodV2(this.prototype, "loadArchivedRealms", [action]);
|
|
3381
|
+
}
|
|
3382
|
+
isHosted = (url) => isHostedRealm(this.realm.info(url));
|
|
3383
|
+
filterByScope(urls) {
|
|
3384
|
+
return this.scope === "hosted" ? urls.filter(this.isHosted) : urls;
|
|
3385
|
+
}
|
|
3386
|
+
get userRealmIdentifiers() {
|
|
3387
|
+
return this.filterByScope(this.realmServer.userRealmIdentifiers);
|
|
3388
|
+
}
|
|
3389
|
+
static {
|
|
3390
|
+
decorateMethodV2(this.prototype, "userRealmIdentifiers", [cached$1]);
|
|
3391
|
+
}
|
|
3392
|
+
get filteredCatalogRealmIdentifiers() {
|
|
3393
|
+
return this.filterByScope(orderedCatalogRealmURLs(this.realmServer.displayedCatalogRealmIdentifiers, this.realm.info));
|
|
3394
|
+
}
|
|
3395
|
+
static {
|
|
3396
|
+
decorateMethodV2(this.prototype, "filteredCatalogRealmIdentifiers", [cached$1]);
|
|
3397
|
+
}
|
|
3398
|
+
get listedFavorites() {
|
|
3399
|
+
return listedFavoriteRealmIdentifiers(this.matrixService.workspaceFavorites, this.realmServer.userRealmIdentifiers, this.realmServer.displayedCatalogRealmIdentifiers);
|
|
3400
|
+
}
|
|
3401
|
+
static {
|
|
3402
|
+
decorateMethodV2(this.prototype, "listedFavorites", [cached$1]);
|
|
3403
|
+
}
|
|
3404
|
+
get favoriteRealmIdentifiers() {
|
|
3405
|
+
return this.filterByScope(this.listedFavorites);
|
|
3406
|
+
}
|
|
3407
|
+
static {
|
|
3408
|
+
decorateMethodV2(this.prototype, "favoriteRealmIdentifiers", [cached$1]);
|
|
3409
|
+
}
|
|
3410
|
+
trackFavoriteCounts = modifier((_el, [urls, _revision]) => {
|
|
3411
|
+
this.realm.loadIndexCounts(urls);
|
|
3412
|
+
});
|
|
3413
|
+
get isFavoritesShown() {
|
|
3414
|
+
return this.listedFavorites.length > 0;
|
|
3415
|
+
}
|
|
3416
|
+
get userWorkspacesEmptyMessage() {
|
|
3417
|
+
if (this.scope === "hosted" && this.userRealmIdentifiers.length === 0) return "No matching results";
|
|
3418
|
+
return null;
|
|
3419
|
+
}
|
|
3420
|
+
static {
|
|
3421
|
+
decorateFieldV2(this.prototype, "recentColumns", [tracked$1], function() {
|
|
3422
|
+
return 0;
|
|
3423
|
+
});
|
|
3424
|
+
}
|
|
3425
|
+
#recentColumns = (initializeDeferredDecorator(this, "recentColumns"), void 0);
|
|
3426
|
+
static {
|
|
3427
|
+
decorateFieldV2(this.prototype, "rowColumns", [tracked$1], function() {
|
|
3428
|
+
return 0;
|
|
3429
|
+
});
|
|
3430
|
+
}
|
|
3431
|
+
#rowColumns = (initializeDeferredDecorator(this, "rowColumns"), void 0);
|
|
3432
|
+
measureColumns = modifier((grid, [which]) => {
|
|
3433
|
+
if (typeof ResizeObserver === "undefined") return;
|
|
3434
|
+
let observer = new ResizeObserver(() => {
|
|
3435
|
+
let columns = gridColumnCount(grid);
|
|
3436
|
+
if (which === "recent" && columns !== this.recentColumns) this.recentColumns = columns;
|
|
3437
|
+
else if (which === "rows" && columns !== this.rowColumns) this.rowColumns = columns;
|
|
3438
|
+
});
|
|
3439
|
+
observer.observe(grid);
|
|
3440
|
+
return () => observer.disconnect();
|
|
3441
|
+
});
|
|
3442
|
+
get rowsPerGridRow() {
|
|
3443
|
+
return this.rowColumns || 3;
|
|
3444
|
+
}
|
|
3445
|
+
get recentRealmIdentifiers() {
|
|
3446
|
+
return sortByUpdatedAtDesc(this.userRealmIdentifiers, this.realm.info).slice(0, recentWorkspaceCount(this.recentColumns));
|
|
3447
|
+
}
|
|
3448
|
+
static {
|
|
3449
|
+
decorateMethodV2(this.prototype, "recentRealmIdentifiers", [cached$1]);
|
|
3450
|
+
}
|
|
3451
|
+
get rowRealmIdentifiers() {
|
|
3452
|
+
let recent = new Set(this.recentRealmIdentifiers);
|
|
3453
|
+
return this.userRealmIdentifiers.filter((url) => !recent.has(url));
|
|
3454
|
+
}
|
|
3455
|
+
static {
|
|
3456
|
+
decorateMethodV2(this.prototype, "rowRealmIdentifiers", [cached$1]);
|
|
3457
|
+
}
|
|
3458
|
+
static {
|
|
3459
|
+
decorateFieldV2(this.prototype, "showAllWorkspaces", [tracked$1]);
|
|
3460
|
+
}
|
|
3461
|
+
#showAllWorkspaces = (initializeDeferredDecorator(this, "showAllWorkspaces"), void 0);
|
|
3462
|
+
get isShowingAllWorkspaces() {
|
|
3463
|
+
return this.showAllWorkspaces ?? this.isReturnRowCollapsed;
|
|
3464
|
+
}
|
|
3465
|
+
toggleAllWorkspaces() {
|
|
3466
|
+
this.showAllWorkspaces = !this.isShowingAllWorkspaces;
|
|
3467
|
+
}
|
|
3468
|
+
static {
|
|
3469
|
+
decorateMethodV2(this.prototype, "toggleAllWorkspaces", [action]);
|
|
3470
|
+
}
|
|
3471
|
+
get isReturnRowCollapsed() {
|
|
3472
|
+
let target = this.returnRealmURL;
|
|
3473
|
+
if (!target) return false;
|
|
3474
|
+
return this.rowRealmIdentifiers.findIndex((url) => this.toURL(url) === target) >= this.collapsedRowCount;
|
|
3475
|
+
}
|
|
3476
|
+
get collapsedRowCount() {
|
|
3477
|
+
return this.rowsPerGridRow * 10;
|
|
3478
|
+
}
|
|
3479
|
+
get isRowListCollapsible() {
|
|
3480
|
+
return this.rowRealmIdentifiers.length > this.collapsedRowCount;
|
|
3481
|
+
}
|
|
3482
|
+
get visibleRowRealmIdentifiers() {
|
|
3483
|
+
return this.isShowingAllWorkspaces ? this.rowRealmIdentifiers : this.rowRealmIdentifiers.slice(0, this.collapsedRowCount);
|
|
3484
|
+
}
|
|
3485
|
+
static {
|
|
3486
|
+
decorateMethodV2(this.prototype, "visibleRowRealmIdentifiers", [cached$1]);
|
|
3487
|
+
}
|
|
3488
|
+
get hiddenRowCount() {
|
|
3489
|
+
return this.rowRealmIdentifiers.length - this.visibleRowRealmIdentifiers.length;
|
|
3490
|
+
}
|
|
3491
|
+
get favoritesCount() {
|
|
3492
|
+
return this.favoriteRealmIdentifiers.length;
|
|
3493
|
+
}
|
|
3494
|
+
get userWorkspacesCount() {
|
|
3495
|
+
return this.userRealmIdentifiers.length;
|
|
3496
|
+
}
|
|
3497
|
+
get isAddWorkspaceShown() {
|
|
3498
|
+
return !this.userWorkspacesEmptyMessage;
|
|
3499
|
+
}
|
|
3500
|
+
get renderedCatalogCount() {
|
|
3501
|
+
return this.filteredCatalogRealmIdentifiers.length;
|
|
3502
|
+
}
|
|
3503
|
+
get catalogEmptyMessage() {
|
|
3504
|
+
return this.scope === "hosted" ? "No matching results" : "No catalogs yet. Add public realms with the gear.";
|
|
3505
|
+
}
|
|
3506
|
+
get isCatalogShelfShown() {
|
|
3507
|
+
return this.scope !== "hosted";
|
|
3508
|
+
}
|
|
3509
|
+
get addWorkspaceNavIndex() {
|
|
3510
|
+
return this.favoritesCount;
|
|
3511
|
+
}
|
|
3512
|
+
get recentNavBase() {
|
|
3513
|
+
return this.addWorkspaceNavIndex + (this.isAddWorkspaceShown ? 1 : 0);
|
|
3514
|
+
}
|
|
3515
|
+
get rowsNavBase() {
|
|
3516
|
+
return this.recentNavBase + this.recentRealmIdentifiers.length;
|
|
3517
|
+
}
|
|
3518
|
+
get catalogNavBase() {
|
|
3519
|
+
return this.rowsNavBase + this.visibleRowRealmIdentifiers.length;
|
|
3520
|
+
}
|
|
3521
|
+
get walkKeys() {
|
|
3522
|
+
return [
|
|
3523
|
+
...this.favoriteRealmIdentifiers.map((url) => `desk:${url}`),
|
|
3524
|
+
...this.isAddWorkspaceShown ? ["new-workspace"] : [],
|
|
3525
|
+
...this.recentRealmIdentifiers.map((url) => `workspace:${url}`),
|
|
3526
|
+
...this.visibleRowRealmIdentifiers.map((url) => `workspace:${url}`),
|
|
3527
|
+
...this.filteredCatalogRealmIdentifiers.map((url) => `catalog:${url}`)
|
|
3528
|
+
];
|
|
3529
|
+
}
|
|
3530
|
+
static {
|
|
3531
|
+
decorateMethodV2(this.prototype, "walkKeys", [cached$1]);
|
|
3532
|
+
}
|
|
3533
|
+
get returnNavIndex() {
|
|
3534
|
+
let target = this.returnRealmURL;
|
|
3535
|
+
if (!target) return;
|
|
3536
|
+
let index = this.walkKeys.findIndex((key) => {
|
|
3537
|
+
let separator = key.indexOf(":");
|
|
3538
|
+
return separator >= 0 && this.toURL(key.slice(separator + 1)) === target;
|
|
3539
|
+
});
|
|
3540
|
+
return index >= 0 ? index : void 0;
|
|
3541
|
+
}
|
|
3542
|
+
static {
|
|
3543
|
+
decorateMethodV2(this.prototype, "returnNavIndex", [cached$1]);
|
|
3544
|
+
}
|
|
3545
|
+
toURL(id) {
|
|
3546
|
+
try {
|
|
3547
|
+
return this.network.virtualNetwork.toURL(id).href;
|
|
3548
|
+
} catch {
|
|
3549
|
+
return id;
|
|
3550
|
+
}
|
|
3551
|
+
}
|
|
3552
|
+
get defaultSelectedIndex() {
|
|
3553
|
+
let returnIndex = this.returnNavIndex;
|
|
3554
|
+
if (returnIndex !== void 0) return returnIndex;
|
|
3555
|
+
if (this.favoritesCount > 0) return 0;
|
|
3556
|
+
if (this.userWorkspacesCount > 0) return this.recentNavBase;
|
|
3557
|
+
if (this.renderedCatalogCount > 0) return this.catalogNavBase;
|
|
3558
|
+
return 0;
|
|
3559
|
+
}
|
|
3560
|
+
favoritesSection = {
|
|
3561
|
+
id: "favorites",
|
|
3562
|
+
label: "Favorites",
|
|
3563
|
+
icon: IconComponent$17,
|
|
3564
|
+
flyout: realmListFlyout("Favorites", () => this.favoriteRealmIdentifiers, () => "No matching results")
|
|
3565
|
+
};
|
|
3566
|
+
workspacesSection = {
|
|
3567
|
+
id: "workspaces",
|
|
3568
|
+
label: "Workspaces",
|
|
3569
|
+
icon: IconComponent$14,
|
|
3570
|
+
flyout: realmListFlyout("Workspaces", () => sortByUpdatedAtDesc(this.userRealmIdentifiers, this.realm.info), () => this.userWorkspacesEmptyMessage ?? "No workspaces yet. Create one from the Workspaces section.")
|
|
3571
|
+
};
|
|
3572
|
+
agentsSection = {
|
|
3573
|
+
id: "agents",
|
|
3574
|
+
label: "Agents",
|
|
3575
|
+
icon: IconComponent$4,
|
|
3576
|
+
flyout: AgentsFlyout
|
|
3577
|
+
};
|
|
3578
|
+
showAgents() {
|
|
3579
|
+
this.args.sections.scrollTo(this.agentsSection.id);
|
|
3580
|
+
}
|
|
3581
|
+
static {
|
|
3582
|
+
decorateMethodV2(this.prototype, "showAgents", [action]);
|
|
3583
|
+
}
|
|
3584
|
+
catalogsSection = {
|
|
3585
|
+
id: "catalogs",
|
|
3586
|
+
label: "Catalogs",
|
|
3587
|
+
icon: IconComponent$3,
|
|
3588
|
+
flyout: realmListFlyout("Catalogs", () => this.filteredCatalogRealmIdentifiers, () => this.catalogEmptyMessage)
|
|
3589
|
+
};
|
|
3590
|
+
cursor = new KeyboardCursor({
|
|
3591
|
+
keys: () => this.walkKeys,
|
|
3592
|
+
defaultIndex: () => this.defaultSelectedIndex
|
|
3593
|
+
});
|
|
3594
|
+
static {
|
|
3595
|
+
setComponentTemplate(templateFactory({
|
|
3596
|
+
"id": "0jDYQinL",
|
|
3597
|
+
"block": "[[[11,\"section\"],[16,0,[28,[32,0],[\"dashboard\"],[[\"is-compact\"],[[30,1,[\"isCompact\"]]]]]],[24,\"aria-label\",\"Dashboard\"],[24,\"data-theme\",\"dark\"],[24,\"data-keyboard-cursor\",\"\"],[24,\"data-test-dashboard\",\"\"],[17,2],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[4,[32,1],[\"keydown\",[30,0,[\"cursor\",\"onKeydown\"]]],null],[4,[32,1],[\"focusin\",[30,0,[\"cursor\",\"onFocusIn\"]]],null],[4,[32,1],[\"pointerup\",[30,0,[\"cursor\",\"onPointerUp\"]]],null],[12],[1,\"\\n \"],[11,0],[24,0,\"dashboard-scroller boxel-dark-scrollbar\"],[24,\"data-test-dashboard-scroller\",\"\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[4,[30,1,[\"trackScroller\"]],null,null],[12],[1,\"\\n \"],[10,0],[14,0,\"frosted-band\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[13],[1,\"\\n \"],[10,0],[14,0,\"dashboard-page\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"\\n\"],[1,\" \"],[10,0],[14,0,\"unreachable-status\"],[14,\"role\",\"status\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"\\n\"],[41,[30,0,[\"unreachableRealmServers\",\"length\"]],[[[1,\" \"],[10,0],[14,0,\"unreachable-notice\"],[14,\"data-test-unreachable-realm-servers-notice\",\"\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"\\n \"],[8,[30,0,[\"unreachableNoticeIcon\"]],[[24,\"width\",\"20\"],[24,\"height\",\"20\"],[24,0,\"unreachable-notice-icon\"],[24,\"aria-hidden\",\"true\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],null,null],[1,\"\\n \"],[10,1],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,[30,0,[\"unreachableRealmServersMessage\"]]],[13],[1,\"\\n\"],[41,[30,0,[\"isRetryingUnreachableRealmServers\"]],[[[1,\" \"],[8,[32,2],[[24,0,\"unreachable-notice-icon\"],[24,\"aria-hidden\",\"true\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],[[\"@size\"],[20]],null],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n\\n\"],[1,\" \"],[8,[32,3],[[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],[[\"@showAgents\"],[[30,0,[\"showAgents\"]]]],[[\"head\"],[[[[1,\"\\n \"],[10,\"header\"],[14,0,\"page-head\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"\\n \"],[10,0],[14,0,\"greeting-line\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"\\n\"],[1,\" \"],[11,\"h1\"],[24,0,\"greeting\"],[24,\"data-test-dashboard-greeting\",\"\"],[24,\"data-test-percy-hide\",\"\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[4,[30,0,[\"trackHour\"]],null,null],[12],[1,[30,0,[\"greeting\"]]],[13],[1,\"\\n\"],[41,[30,3,[\"isReady\"]],[[[1,\" \"],[8,[32,4],[[16,0,[28,[32,0],[\"get-started-button\"],[[\"is-open\"],[[30,3,[\"isOpen\"]]]]]],[16,\"aria-expanded\",[52,[30,3,[\"isOpen\"]],\"true\",\"false\"]],[16,\"aria-controls\",[52,[30,3,[\"isOpen\"]],[30,3,[\"panelId\"]]]],[24,\"data-theme\",\"light\"],[24,\"data-test-get-started-button\",\"\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[4,[32,1],[\"click\",[30,3,[\"toggle\"]]],null]],[[\"@tone\",\"@appearance\",\"@size\",\"@shape\"],[[52,[30,3,[\"isOpen\"]],\"neutral\",\"primary\"],\"accent\",\"m\",\"pill\"]],[[\"default\"],[[[[1,\"Get started\"]],[]]]]],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n \"],[8,[32,5],[[24,0,\"scope-filter\"],[24,\"data-test-dashboard-filter\",\"\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],[[\"@options\",\"@value\",\"@onValueChange\",\"@label\"],[[30,0,[\"scopeOptions\"]],[30,0,[\"scope\"]],[30,0,[\"setScope\"]],\"Filter workspaces\"]],null],[1,\"\\n \"],[13],[1,\"\\n \"]],[3]]]]],[1,\"\\n\\n\"],[41,[30,0,[\"isFavoritesShown\"]],[[[1,\" \"],[11,\"section\"],[24,0,\"dashboard-section\"],[16,\"aria-labelledby\",[28,[30,0,[\"headingId\"]],[\"favorites\"],null]],[24,\"data-test-dashboard-section\",\"favorites\"],[24,\"data-test-favorites-section\",\"\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[4,[30,1,[\"register\"]],[[30,0,[\"favoritesSection\"]]],null],[12],[1,\"\\n \"],[8,[32,6],[[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],[[\"@icon\",\"@title\",\"@titleId\",\"@count\"],[[32,7],\"Favorites\",[28,[30,0,[\"headingId\"]],[\"favorites\"],null],[30,0,[\"favoritesCount\"]]]],[[\"default\"],[[[[1,\"Workspaces you favorited, kept at the top.\"]],[]]]]],[1,\"\\n\"],[41,[30,0,[\"favoritesCount\"]],[[[1,\" \"],[11,0],[24,0,\"desk-list\"],[24,\"data-test-favorites-list\",\"\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[4,[30,0,[\"trackFavoriteCounts\"]],[[30,0,[\"favoriteRealmIdentifiers\"]],[30,0,[\"realm\",\"indexCountsRevision\"]]],null],[12],[1,\"\\n\"],[42,[28,[31,2],[[28,[31,2],[[30,0,[\"favoriteRealmIdentifiers\"]]],null]],null],null,[[[1,\" \"],[8,[32,8],[[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],[[\"@realmIdentifier\",\"@variant\",\"@navIndex\",\"@isSelected\",\"@selectionActive\"],[[30,4],\"desk\",[30,5],[28,[32,9],[[30,0,[\"cursor\",\"currentIndex\"]],[30,5]],null],[30,0,[\"cursor\",\"isRingShown\"]]]],null],[1,\"\\n\"]],[4,5]],null],[1,\" \"],[13],[1,\"\\n\"]],[]],[[[1,\" \"],[10,2],[14,0,\"group-empty\"],[14,\"data-test-favorites-empty\",\"\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"No matching\\n results\"],[13],[1,\"\\n\"]],[]]],[1,\" \"],[13],[1,\"\\n\"]],[]],null],[1,\"\\n \"],[11,\"section\"],[24,0,\"dashboard-section\"],[16,\"aria-labelledby\",[28,[30,0,[\"headingId\"]],[\"workspaces\"],null]],[24,\"data-test-dashboard-section\",\"workspaces\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[4,[30,1,[\"register\"]],[[30,0,[\"workspacesSection\"]]],null],[12],[1,\"\\n \"],[8,[32,6],[[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],[[\"@icon\",\"@title\",\"@titleId\"],[[32,10],\"Workspaces\",[28,[30,0,[\"headingId\"]],[\"workspaces\"],null]]],[[\"default\"],[[[[1,\"Where your cards live.\"]],[]]]]],[1,\"\\n\\n \"],[10,0],[14,0,\"group\"],[14,\"data-test-your-workspaces-section\",\"\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"\\n \"],[10,\"h3\"],[14,0,\"group-head\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"\\n \"],[8,[32,11],[[24,0,\"group-icon\"],[24,\"width\",\"14\"],[24,\"height\",\"14\"],[24,\"aria-hidden\",\"true\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],null,null],[1,\"\\n \"],[10,1],[14,0,\"group-title\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"Your Workspaces\"],[13],[1,\"\\n\"],[41,[30,0,[\"userWorkspacesCount\"]],[[[1,\" \"],[10,1],[14,0,\"group-count\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,[30,0,[\"userWorkspacesCount\"]]],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n\"],[41,[30,0,[\"userWorkspacesEmptyMessage\"]],[[[1,\" \"],[10,2],[14,0,\"group-empty\"],[14,\"data-test-workspaces-empty\",\"\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,[30,0,[\"userWorkspacesEmptyMessage\"]]],[13],[1,\"\\n\"]],[]],[[[1,\" \"],[10,0],[14,0,\"your-workspaces\"],[14,\"data-test-workspace-list\",\"\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"\\n \"],[11,0],[24,0,\"recent-list\"],[24,\"data-test-workspace-recent-list\",\"\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[4,[30,0,[\"measureColumns\"]],[\"recent\"],null],[12],[1,\"\\n \"],[8,[32,12],[[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],[[\"@navIndex\",\"@isSelected\",\"@selectionActive\"],[[30,0,[\"addWorkspaceNavIndex\"]],[28,[32,9],[[30,0,[\"cursor\",\"currentIndex\"]],[30,0,[\"addWorkspaceNavIndex\"]]],null],[30,0,[\"cursor\",\"isRingShown\"]]]],null],[1,\"\\n\"],[42,[28,[31,2],[[28,[31,2],[[30,0,[\"recentRealmIdentifiers\"]]],null]],null],null,[[[44,[[28,[32,13],[[30,0,[\"recentNavBase\"]],[30,7]],null]],[[[1,\" \"],[8,[32,8],[[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],[[\"@realmIdentifier\",\"@variant\",\"@navIndex\",\"@isSelected\",\"@selectionActive\"],[[30,6],\"tile\",[30,8],[28,[32,9],[[30,0,[\"cursor\",\"currentIndex\"]],[30,8]],null],[30,0,[\"cursor\",\"isRingShown\"]]]],null],[1,\"\\n\"]],[8]]]],[6,7]],null],[1,\" \"],[13],[1,\"\\n\"],[41,[30,0,[\"rowRealmIdentifiers\",\"length\"]],[[[1,\" \"],[11,0],[16,1,[30,0,[\"rowListId\"]]],[16,0,[28,[32,0],[\"row-list\"],[[\"is-clipped\"],[[28,[32,14],[[30,0,[\"hiddenRowCount\"]],0],null]]]]],[24,\"data-test-workspace-rows\",\"\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[4,[30,0,[\"measureColumns\"]],[\"rows\"],null],[12],[1,\"\\n\"],[42,[28,[31,2],[[28,[31,2],[[30,0,[\"visibleRowRealmIdentifiers\"]]],null]],null],null,[[[44,[[28,[32,13],[[30,0,[\"rowsNavBase\"]],[30,10]],null]],[[[1,\" \"],[8,[32,8],[[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],[[\"@realmIdentifier\",\"@variant\",\"@navIndex\",\"@isSelected\",\"@selectionActive\"],[[30,9],\"row\",[30,11],[28,[32,9],[[30,0,[\"cursor\",\"currentIndex\"]],[30,11]],null],[30,0,[\"cursor\",\"isRingShown\"]]]],null],[1,\"\\n\"]],[11]]]],[9,10]],null],[41,[30,0,[\"hiddenRowCount\"]],[[[1,\" \"],[10,0],[14,0,\"list-scrim\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n\"],[41,[30,0,[\"isRowListCollapsible\"]],[[[1,\" \"],[8,[32,4],[[16,0,[28,[32,0],[\"list-toggle\"],[[\"is-collapsed\"],[[28,[32,15],[[30,0,[\"isShowingAllWorkspaces\"]]],null]]]]],[16,\"aria-controls\",[30,0,[\"rowListId\"]]],[16,\"aria-expanded\",[52,[30,0,[\"isShowingAllWorkspaces\"]],\"true\",\"false\"]],[24,\"data-test-workspace-list-toggle\",\"\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[4,[32,1],[\"click\",[30,0,[\"toggleAllWorkspaces\"]]],null]],[[\"@appearance\",\"@shape\"],[\"accent\",\"pill\"]],[[\"default\"],[[[[1,\"\\n\"],[41,[30,0,[\"isShowingAllWorkspaces\"]],[[[1,\" Show fewer\\n\"]],[]],[[[1,\" Show\\n \"],[1,[30,0,[\"hiddenRowCount\"]]],[1,\"\\n more\\n\"]],[]]],[1,\" \"]],[]]]]],[1,\"\\n\"]],[]],null]],[]],null],[1,\" \"],[13],[1,\"\\n\"]],[]]],[1,\" \"],[13],[1,\"\\n\\n \"],[10,0],[14,0,\"group\"],[14,\"data-test-archived-section\",\"\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"\\n \"],[8,[32,16],[[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],[[\"@open\",\"@onOpenChange\"],[[30,0,[\"isArchivedExpanded\"]],[30,0,[\"setArchivedExpanded\"]]]],[[\"trigger\",\"default\"],[[[[1,\"\\n \"],[10,1],[14,0,\"group-head\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"\\n \"],[8,[32,17],[[24,0,\"group-icon\"],[24,\"width\",\"14\"],[24,\"height\",\"14\"],[24,\"aria-hidden\",\"true\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],null,null],[1,\"\\n \"],[10,1],[14,0,\"group-title\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"Archived\"],[13],[1,\"\\n\"],[41,[30,0,[\"showArchivedCount\"]],[[[1,\" \"],[10,1],[14,0,\"group-count\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,[30,0,[\"archivedRealms\",\"length\"]]],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n \"]],[]],[[[1,\"\\n \"],[10,0],[14,0,\"archived-content\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"\\n\"],[41,[30,0,[\"loadArchivedRealmsTask\",\"isRunning\"]],[[[1,\" \"],[8,[32,2],[[24,\"aria-label\",\"Loading archived workspaces\"],[24,\"data-test-archived-loading\",\"\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],[[\"@size\"],[20]],null],[1,\"\\n\"]],[]],[[[41,[30,0,[\"archivedRealms\",\"length\"]],[[[1,\" \"],[10,0],[14,0,\"row-list\"],[14,\"data-test-archived-list\",\"\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"\\n\"],[42,[28,[31,2],[[28,[31,2],[[30,0,[\"archivedRealms\"]]],null]],null],null,[[[1,\" \"],[8,[32,18],[[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],[[\"@archivedRealm\"],[[30,12]]],null],[1,\"\\n\"]],[12]],null],[1,\" \"],[13],[1,\"\\n\"]],[]],[[[41,[30,0,[\"archivedLoadFailed\"]],[[[1,\" \"],[10,2],[14,0,\"group-empty\"],[14,\"role\",\"alert\"],[14,\"data-test-archived-error\",\"\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"\\n Couldn’t load archived workspaces.\\n \"],[8,[32,4],[[24,\"data-test-archived-retry\",\"\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[4,[32,1],[\"click\",[30,0,[\"loadArchivedRealms\"]]],null]],[[\"@tone\",\"@appearance\"],[\"primary\",\"link\"]],[[\"default\"],[[[[1,\"Try again\"]],[]]]]],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],[[[1,\" \"],[10,2],[14,0,\"group-empty\"],[14,\"data-test-archived-empty\",\"\"],[14,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[12],[1,\"No\\n archived workspaces\"],[13],[1,\"\\n \"]],[]]]],[]]]],[]]],[1,\" \"],[13],[1,\"\\n \"]],[]]]]],[1,\"\\n \"],[13],[1,\"\\n \"],[13],[1,\"\\n\\n \"],[8,[32,19],[[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[4,[30,1,[\"register\"]],[[30,0,[\"catalogsSection\"]]],null]],[[\"@realmIdentifiers\",\"@emptyMessage\",\"@showShelf\",\"@navBase\",\"@cursor\"],[[30,0,[\"filteredCatalogRealmIdentifiers\"]],[30,0,[\"catalogEmptyMessage\"]],[30,0,[\"isCatalogShelfShown\"]],[30,0,[\"catalogNavBase\"]],[30,0,[\"cursor\"]]]],null],[1,\"\\n\\n \"],[11,\"section\"],[24,0,\"dashboard-section\"],[16,\"aria-labelledby\",[28,[30,0,[\"headingId\"]],[\"agents\"],null]],[24,\"data-test-dashboard-section\",\"agents\"],[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"],[4,[30,1,[\"register\"]],[[30,0,[\"agentsSection\"]]],null],[12],[1,\"\\n \"],[8,[32,6],[[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],[[\"@icon\",\"@title\",\"@titleId\"],[[32,20],\"Agents\",[28,[30,0,[\"headingId\"]],[\"agents\"],null]]],[[\"default\"],[[[[1,\"Build with Boxel AI Assistant, or connect your own agent.\"]],[]]]]],[1,\"\\n \"],[8,[32,21],[[24,\"data-scopedcss-fdd799e0b9-ce558d6f95\",\"\"]],null,null],[1,\"\\n \"],[13],[1,\"\\n \"],[13],[1,\"\\n \"],[13],[1,\"\\n\"],[13],[1,\"\\n\\n\"]],[\"@sections\",\"&attrs\",\"getStarted\",\"realmIdentifier\",\"i\",\"realmIdentifier\",\"i\",\"navIndex\",\"realmIdentifier\",\"i\",\"navIndex\",\"archivedRealm\"],[\"if\",\"each\",\"-track-array\",\"let\"]]",
|
|
3598
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/dashboard/index.gts",
|
|
3599
|
+
"scope": () => [
|
|
3600
|
+
cn_default,
|
|
3601
|
+
on,
|
|
3602
|
+
Spinner,
|
|
3603
|
+
GetStarted,
|
|
3604
|
+
Button,
|
|
3605
|
+
SegmentedControl,
|
|
3606
|
+
SectionHead,
|
|
3607
|
+
IconComponent$17,
|
|
3608
|
+
Workspace,
|
|
3609
|
+
eq,
|
|
3610
|
+
IconComponent$14,
|
|
3611
|
+
IconComponent$15,
|
|
3612
|
+
AddWorkspace,
|
|
3613
|
+
add,
|
|
3614
|
+
gt,
|
|
3615
|
+
not,
|
|
3616
|
+
Collapsible,
|
|
3617
|
+
IconComponent$18,
|
|
3618
|
+
ArchivedWorkspace,
|
|
3619
|
+
CatalogSection,
|
|
3620
|
+
IconComponent$4,
|
|
3621
|
+
Agents
|
|
3622
|
+
],
|
|
3623
|
+
"isStrictMode": true
|
|
3624
|
+
}), this);
|
|
3625
|
+
}
|
|
3626
|
+
};
|
|
3627
|
+
//#endregion
|
|
3628
|
+
export { titleize_exports as i, ai_assistant_panel_service_exports as n, titleize as r, Dashboard as t };
|