@cardstack/boxel-cli 0.9.0 → 0.10.0-unstable.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -0
- package/bundled-test-harness/assets/account-switch-failed-GCSVbJML.js +23 -0
- package/bundled-test-harness/assets/account-switch-failed-GsWni_Gk.css +18 -0
- package/bundled-test-harness/assets/account-switch-failed-test-CdZWNths.js +45 -0
- package/bundled-test-harness/assets/add-workspace-c7L50Gx8.js +141 -0
- package/bundled-test-harness/assets/add-workspace-test-BZxHa6Pe.js +72 -0
- package/bundled-test-harness/assets/advanced-color-picker-0pGF-3WG.js +504 -0
- package/bundled-test-harness/assets/advanced-color-picker-pbO4HWc_.js +2 -0
- package/bundled-test-harness/assets/ai-assistant-test-Dnm4o9vK.js +2211 -0
- package/bundled-test-harness/assets/ai-module-creation-test-C6253CMt.js +151 -0
- package/bundled-test-harness/assets/aibot-message-miKyGeKk.js +278 -0
- package/bundled-test-harness/assets/app-i8pGdQkw.js +22855 -0
- package/bundled-test-harness/assets/app-zC7o6PyQ.css +2718 -0
- package/bundled-test-harness/assets/audio-file-def-DHnydP0t.js +133 -0
- package/bundled-test-harness/assets/auth-container-BP2gSoo4.css +51 -0
- package/bundled-test-harness/assets/auth-container-DN94iVfX.js +24 -0
- package/bundled-test-harness/assets/avif-meta-extractor-Bo5zRX1V.js +162 -0
- package/bundled-test-harness/assets/base64-image-B0RYxzHT.js +2 -0
- package/bundled-test-harness/assets/base64-image-Bxjqdwew.js +262 -0
- package/bundled-test-harness/assets/big-integer-7RLj5_7H.js +89 -0
- package/bundled-test-harness/assets/big-integer-C9sJxKVy.js +2 -0
- package/bundled-test-harness/assets/binary-upload-dedupe-test-DZo3EaV0.js +308 -0
- package/bundled-test-harness/assets/boolean-CcKPYUph.js +94 -0
- package/bundled-test-harness/assets/boolean-DvsSmtM7.js +2 -0
- package/bundled-test-harness/assets/brand-functional-palette-KpVSY2Sa.js +137 -0
- package/bundled-test-harness/assets/brand-logo-DDiOec0t.js +295 -0
- package/bundled-test-harness/assets/broken-link-template-test-DAngUbFJ.js +192 -0
- package/bundled-test-harness/assets/bundled-base-C_lumba6.js +254 -0
- package/bundled-test-harness/assets/bundled-base-modules-test-CSF7Rl4Z.js +54 -0
- package/bundled-test-harness/assets/buried-stack-item-scroll-test-B0J_EP88.js +236 -0
- package/bundled-test-harness/assets/bxl-expression-test-Dej7WgI6.js +250 -0
- package/bundled-test-harness/assets/can-invoke-test-elyUcOKT.js +401 -0
- package/bundled-test-harness/assets/card-api-CjWXCkqh.js +8 -0
- package/bundled-test-harness/assets/card-api-Dzje0smT.js +4393 -0
- package/bundled-test-harness/assets/card-api-test-DA8d4Ooc.js +198 -0
- package/bundled-test-harness/assets/card-basics-test-mp1Odo-l.js +5364 -0
- package/bundled-test-harness/assets/card-chooser-paging-test-y8OfboYd.js +235 -0
- package/bundled-test-harness/assets/card-chooser-test-nmg2zkDj.js +393 -0
- package/bundled-test-harness/assets/card-collection-BXiO3i7R.js +118 -0
- package/bundled-test-harness/assets/card-context-search-results-Dbhn7lvW.js +30 -0
- package/bundled-test-harness/assets/card-context-search-results-test-DVXT-YC5.js +184 -0
- package/bundled-test-harness/assets/card-def-field-def-relationships-test-mX4rxrtO.js +562 -0
- package/bundled-test-harness/assets/card-delete-test-BxFsqFnX.js +466 -0
- package/bundled-test-harness/assets/card-error-C-7hjxu9.js +72 -0
- package/bundled-test-harness/assets/card-error-awaiting-index-test-BvfY2eaW.js +53 -0
- package/bundled-test-harness/assets/card-error-detail-nMwopDir.js +271 -0
- package/bundled-test-harness/assets/card-info-CTFxdohf.js +2 -0
- package/bundled-test-harness/assets/card-list-B9QrkJ97.js +2 -0
- package/bundled-test-harness/assets/card-list-XbwLCXZS.js +202 -0
- package/bundled-test-harness/assets/card-resource-JGLjQUy6.js +86 -0
- package/bundled-test-harness/assets/cards-grid-CWG41hZE.js +344 -0
- package/bundled-test-harness/assets/cards-grid-DSpX99p6.js +2 -0
- package/bundled-test-harness/assets/cards-grid-layout-Bht0LwZy.js +2 -0
- package/bundled-test-harness/assets/cards-grid-layout-CdpKlHUb.js +111 -0
- package/bundled-test-harness/assets/check-correctness-test-C4BrUeKA.js +554 -0
- package/bundled-test-harness/assets/clip-BEVvLrXx.js +2 -0
- package/bundled-test-harness/assets/clip-CoB714qX.js +92 -0
- package/bundled-test-harness/assets/code-ref-C2uguisI.js +2 -0
- package/bundled-test-harness/assets/code-ref-Cy7sV5a4.js +138 -0
- package/bundled-test-harness/assets/code-submode-availability-test-BsA_Ul01.js +198 -0
- package/bundled-test-harness/assets/code-submode-test-DkBhpEPB.js +1839 -0
- package/bundled-test-harness/assets/codeblocks-test-B1eZ2_JF.js +418 -0
- package/bundled-test-harness/assets/codemirror-editor-C6pxSm5y.js +2 -0
- package/bundled-test-harness/assets/codemirror-editor-DzM46Cd8.js +701 -0
- package/bundled-test-harness/assets/codemirror-embed-toolbar-test-BemP-ZdG.js +366 -0
- package/bundled-test-harness/assets/color-C-jGNFWZ.js +2 -0
- package/bundled-test-harness/assets/color-field-test-DPIRaBec.js +212 -0
- package/bundled-test-harness/assets/color-picker-field-Bv4IjS-d.js +139 -0
- package/bundled-test-harness/assets/color-picker-field-D1bYCQIg.js +2 -0
- package/bundled-test-harness/assets/color-wheel-picker-IIaCQplL.js +283 -0
- package/bundled-test-harness/assets/color-wheel-picker-Kw-UN3kV.js +2 -0
- package/bundled-test-harness/assets/color-zzCBneih.js +65 -0
- package/bundled-test-harness/assets/command-data-BMBtjT1E.js +95 -0
- package/bundled-test-harness/assets/command-data-BXC5Z0oA.js +2 -0
- package/bundled-test-harness/assets/compaction-test-CxUKnxlQ.js +150 -0
- package/bundled-test-harness/assets/components-Ct_agx0G.js +14294 -0
- package/bundled-test-harness/assets/computed-test-C-lpGQQ3.js +1320 -0
- package/bundled-test-harness/assets/container-BdPu8rvc.css +5565 -0
- package/bundled-test-harness/assets/container-Dj-5prh9.js +11288 -0
- package/bundled-test-harness/assets/contains-many-component-CAWqzX8W.js +2 -0
- package/bundled-test-harness/assets/contrast-checker-addon-BTLD7oMx.js +2 -0
- package/bundled-test-harness/assets/contrast-checker-addon-DBzizR04.js +71 -0
- package/bundled-test-harness/assets/convert-to-class-name-test-zZuKxYvF.js +17 -0
- package/bundled-test-harness/assets/coordinate-Bw8va6tO.js +48 -0
- package/bundled-test-harness/assets/copy-file-to-realm-test-DtCKPzqj.js +148 -0
- package/bundled-test-harness/assets/country-B_tWpLlO.js +199 -0
- package/bundled-test-harness/assets/create-file-modal-D-VPyEYp.js +570 -0
- package/bundled-test-harness/assets/create-listing-modal-test-hyLkQY0u.js +273 -0
- package/bundled-test-harness/assets/create-listing-pr-request-test-rjWFA_5S.js +117 -0
- package/bundled-test-harness/assets/create-spec-test-HKIxZGxK.js +256 -0
- package/bundled-test-harness/assets/create-specs-9-ELVyJP.js +215 -0
- package/bundled-test-harness/assets/create-submission-workflow-test-DNZrbRX8.js +132 -0
- package/bundled-test-harness/assets/credential-fields-test-xPEdA911.js +157 -0
- package/bundled-test-harness/assets/css-value-Du3HL39X.js +48 -0
- package/bundled-test-harness/assets/csv-file-def-EHRmilrp.js +277 -0
- package/bundled-test-harness/assets/currency-y6ZCHIqG.js +134 -0
- package/bundled-test-harness/assets/date-B27PrSFT.js +183 -0
- package/bundled-test-harness/assets/date-CiP5Eb9i.js +2 -0
- package/bundled-test-harness/assets/date-time-fields-test-Clf5vxRW.js +359 -0
- package/bundled-test-harness/assets/datetime-BEbR9YgU.js +201 -0
- package/bundled-test-harness/assets/datetime-DPnrt1wl.js +2 -0
- package/bundled-test-harness/assets/datetime-stamp-AuT7F7qn.js +2 -0
- package/bundled-test-harness/assets/datetime-stamp-CGwP2P3f.js +81 -0
- package/bundled-test-harness/assets/day-BFLxZ9bQ.js +2 -0
- package/bundled-test-harness/assets/day-CQoEkqgE.js +113 -0
- package/bundled-test-harness/assets/debug-message-test-CzgOpfcI.js +117 -0
- package/bundled-test-harness/assets/dist-B-fYvxfL.js +389 -0
- package/bundled-test-harness/assets/dist-C2IXvIKX.js +323 -0
- package/bundled-test-harness/assets/dist-CdNZu43l.js +1710 -0
- package/bundled-test-harness/assets/docx-file-def-BQMw460_.js +60 -0
- package/bundled-test-harness/assets/docx-meta-extractor-DBlmH_kV.js +60 -0
- package/bundled-test-harness/assets/docx-meta-extractor-Dw4gZ0ae.js +2 -0
- package/bundled-test-harness/assets/duration-B0SnEiw1.js +184 -0
- package/bundled-test-harness/assets/duration-DbjJTFeA.js +2 -0
- package/bundled-test-harness/assets/email-C-8cyWiQ.js +80 -0
- package/bundled-test-harness/assets/email-field-test-BOBmvQqx.js +75 -0
- package/bundled-test-harness/assets/email-xUgCst-p.js +2 -0
- package/bundled-test-harness/assets/enum-BWiCyJlu.js +167 -0
- package/bundled-test-harness/assets/enum-CzYjivhO.js +2 -0
- package/bundled-test-harness/assets/enum-field-test-Bea9EsQR.js +953 -0
- package/bundled-test-harness/assets/error-display-test-Cbl2D_0c.js +343 -0
- package/bundled-test-harness/assets/ethereum-address-Bw_J05bD.js +78 -0
- package/bundled-test-harness/assets/ethereum-address-C9wHMBt3.js +2 -0
- package/bundled-test-harness/assets/expiration-warning-BHcJEjZt.js +90 -0
- package/bundled-test-harness/assets/expiration-warning-_G8SKZd0.js +2 -0
- package/bundled-test-harness/assets/externals-CKblKBo1.js +4393 -0
- package/bundled-test-harness/assets/fallback-banner-BqCrvTDt.js +24 -0
- package/bundled-test-harness/assets/fallback-banner-live-delete-test-D_AYMvf6.js +207 -0
- package/bundled-test-harness/assets/fallback-banner-test-B8Ne9a5g.js +225 -0
- package/bundled-test-harness/assets/fallback-banner-test-C7oaSxd1.js +53 -0
- package/bundled-test-harness/assets/fallback-models-test-DY-PvU9k.js +161 -0
- package/bundled-test-harness/assets/field-component-Bj8YthPE.js +2 -0
- package/bundled-test-harness/assets/field-configuration-test-B5LztQ47.js +548 -0
- package/bundled-test-harness/assets/field-edit-Cx_haspD.js +36 -0
- package/bundled-test-harness/assets/field-edit-DQZWUz3F.js +2 -0
- package/bundled-test-harness/assets/field-markdown-domain-test-DnqK3CrE.js +616 -0
- package/bundled-test-harness/assets/field-markdown-oversize-test-BEpbXIvl.js +88 -0
- package/bundled-test-harness/assets/field-markdown-primitives-test-BDORWoOk.js +365 -0
- package/bundled-test-harness/assets/field-markdown-specialized-test-BmIzadYq.js +534 -0
- package/bundled-test-harness/assets/field-test-helpers-CRF9-jFw.js +45 -0
- package/bundled-test-harness/assets/file-api-DPMJghBY.js +7 -0
- package/bundled-test-harness/assets/file-attachment-test-DFLXg3xV.js +796 -0
- package/bundled-test-harness/assets/file-chooser-panel-test-B4DzCWkt.js +153 -0
- package/bundled-test-harness/assets/file-chooser-test-DpjOWgpB.js +504 -0
- package/bundled-test-harness/assets/file-def-edit-Bstl7Kkl.js +2 -0
- package/bundled-test-harness/assets/file-def-edit-C1dzJxmQ.js +26 -0
- package/bundled-test-harness/assets/file-def-embedded-CUy4G7Vc.js +2 -0
- package/bundled-test-harness/assets/file-def-embedded-DJs6P5t0.js +38 -0
- package/bundled-test-harness/assets/file-def-fitted-BlrBFfLh.js +38 -0
- package/bundled-test-harness/assets/file-def-fitted-Bo5Qfkyf.js +2 -0
- package/bundled-test-harness/assets/file-def-isolated-BsHydanv.js +38 -0
- package/bundled-test-harness/assets/file-def-isolated-Dp-Lc99-.js +2 -0
- package/bundled-test-harness/assets/file-def-serialization-test-CISKpt_o.js +89 -0
- package/bundled-test-harness/assets/file-menu-items-7_ltrFZq.js +117 -0
- package/bundled-test-harness/assets/file-menu-items-BnRG9ydE.js +2 -0
- package/bundled-test-harness/assets/file-preview-stage-CV3qZpiK.js +72 -0
- package/bundled-test-harness/assets/file-preview-stage-DTA5X8rX.js +2 -0
- package/bundled-test-harness/assets/file-shell-embedded-BpmiVzIG.js +2 -0
- package/bundled-test-harness/assets/file-shell-embedded-CEv0-6OE.js +68 -0
- package/bundled-test-harness/assets/file-shell-fitted-C6k3GnMc.js +2 -0
- package/bundled-test-harness/assets/file-shell-fitted-iSTg3PJa.js +98 -0
- package/bundled-test-harness/assets/file-shell-isolated-C-pEod2J.js +195 -0
- package/bundled-test-harness/assets/file-shell-isolated-DI9oU7ix.js +2 -0
- package/bundled-test-harness/assets/file-tree-from-index-BtOOMqnb.js +151 -0
- package/bundled-test-harness/assets/file-tree-from-index-test-T8w3hPw_.js +96 -0
- package/bundled-test-harness/assets/film-5n9_gRqZ.js +4074 -0
- package/bundled-test-harness/assets/film-Ca2Vzlfu.js +13 -0
- package/bundled-test-harness/assets/film-DEvhBbBu.js +2 -0
- package/bundled-test-harness/assets/fitted-6OGuHgoU.js +2 -0
- package/bundled-test-harness/assets/fitted-B2l1jlSp.js +34 -0
- package/bundled-test-harness/assets/flac-meta-extractor-BoJqvmDC.js +99 -0
- package/bundled-test-harness/assets/font-file-def-Czzt5paT.js +64 -0
- package/bundled-test-harness/assets/font-meta-extractor-DQYT_e5b.js +2 -0
- package/bundled-test-harness/assets/font-meta-extractor-IHD-pG8V.js +303 -0
- package/bundled-test-harness/assets/formatted-aibot-message-test-Djsl8RzE.js +109 -0
- package/bundled-test-harness/assets/from-elsewhere-BXcLYxxu.js +131 -0
- package/bundled-test-harness/assets/frontmatter-field-CciolgL3.js +41 -0
- package/bundled-test-harness/assets/garbage-collection-test-BTOLAfB6.js +403 -0
- package/bundled-test-harness/assets/gauge-C1loqGq3.js +2 -0
- package/bundled-test-harness/assets/gauge-u8dxl90d.js +106 -0
- package/bundled-test-harness/assets/general-test-Cd5WtVvd.js +926 -0
- package/bundled-test-harness/assets/get-relationship-membership-state-test-DJAuhOVM.js +1308 -0
- package/bundled-test-harness/assets/gif-meta-extractor-tSaPtuYW.js +114 -0
- package/bundled-test-harness/assets/glimmer-motion-and-choreo-in-cards-test-DNSy5l59.js +160 -0
- package/bundled-test-harness/assets/glimmer-motion-and-choreo-test-B6BbQxYq.js +74 -0
- package/bundled-test-harness/assets/helper-m6jA5HmU.js +478 -0
- package/bundled-test-harness/assets/host-submode-test-CsgdksBi.js +1243 -0
- package/bundled-test-harness/assets/html-file-def-yKtdMSa-.js +82 -0
- package/bundled-test-harness/assets/hydratable-card-CxNfbqly.js +147 -0
- package/bundled-test-harness/assets/hydratable-card-test-NJ4CI4ey.js +426 -0
- package/bundled-test-harness/assets/icons-B3SAtRoj.js +894 -0
- package/bundled-test-harness/assets/image-file-def-B0rpS3Yy.js +3 -0
- package/bundled-test-harness/assets/image-file-def-DUFmjNL8.js +65 -0
- package/bundled-test-harness/assets/image-olOUqgMQ.js +47 -0
- package/bundled-test-harness/assets/index-changes-test-D7OE-99k.js +367 -0
- package/bundled-test-harness/assets/index-query-engine-test-BBKqgSmg.js +2593 -0
- package/bundled-test-harness/assets/inspector-test-DV6Ms2uz.js +1930 -0
- package/bundled-test-harness/assets/instance-filter-matcher-test-Bs4kf7E8.js +788 -0
- package/bundled-test-harness/assets/interact-submode-creation-and-permissions-test-DIfgRhIN.js +475 -0
- package/bundled-test-harness/assets/interact-submode-setup-D4M_e580.js +566 -0
- package/bundled-test-harness/assets/is-component-declaration-test-jPGRTVh1.js +50 -0
- package/bundled-test-harness/assets/iso-bmff-DHtkSbQM.js +205 -0
- package/bundled-test-harness/assets/iso-bmff-zmOHoSVg.js +2 -0
- package/bundled-test-harness/assets/isolated-and-edit-BAnwcK1T.js +2 -0
- package/bundled-test-harness/assets/job-priority-header-test-7j2f3Dtl.js +81 -0
- package/bundled-test-harness/assets/job-scoped-instance-residency-test-DPzVQUL3.js +103 -0
- package/bundled-test-harness/assets/join-the-community-Ft5fjeIA.js +86 -0
- package/bundled-test-harness/assets/jpg-meta-extractor-Dsq6rZ8F.js +88 -0
- package/bundled-test-harness/assets/json-field-CxOZvp3k.js +19 -0
- package/bundled-test-harness/assets/json-field-ojdwGD6T.js +2 -0
- package/bundled-test-harness/assets/json-file-def-Da_5-zSM.js +298 -0
- package/bundled-test-harness/assets/last-modified-date-BnyJsc04.js +43 -0
- package/bundled-test-harness/assets/last-modified-date-test-DFl2mo1B.js +28 -0
- package/bundled-test-harness/assets/links-to-editor-DO24-71w.js +2 -0
- package/bundled-test-harness/assets/links-to-many-component-C7DabwAY.js +2 -0
- package/bundled-test-harness/assets/linksto-broken-link-placeholder-test-D4lDhvnQ.js +398 -0
- package/bundled-test-harness/assets/linksto-error-sentinel-test-oWgDz00K.js +238 -0
- package/bundled-test-harness/assets/linksto-many-broken-link-placeholder-test-CpSl7zJ7.js +354 -0
- package/bundled-test-harness/assets/linksto-many-per-slot-access-test-DJY3J8Xl.js +303 -0
- package/bundled-test-harness/assets/linksto-sentinel-reload-test-BxzfoONe.js +197 -0
- package/bundled-test-harness/assets/linksto-sentinel-roundtrip-test-DyE99km_.js +260 -0
- package/bundled-test-harness/assets/linksto-singular-js-access-contract-test-dcWAAgxt.js +196 -0
- package/bundled-test-harness/assets/llm-model-DrswiczZ.js +64 -0
- package/bundled-test-harness/assets/login-C-EIG0-Q.css +543 -0
- package/bundled-test-harness/assets/login-CNeL-9IC.js +408 -0
- package/bundled-test-harness/assets/login-error-text-test-CEH2tjNP.js +51 -0
- package/bundled-test-harness/assets/login-test-BpMx7qwV.js +246 -0
- package/bundled-test-harness/assets/m4a-meta-extractor-BJkMHUIK.js +204 -0
- package/bundled-test-harness/assets/main-BaUgfpPE.js +5 -0
- package/bundled-test-harness/assets/markdown-ByEGbwov.js +7 -0
- package/bundled-test-harness/assets/markdown-KJzgTg-A.js +2 -0
- package/bundled-test-harness/assets/markdown-editor-mode-select-BUGPXaSE.js +2 -0
- package/bundled-test-harness/assets/markdown-editor-mode-select-DBk8dG0O.js +54 -0
- package/bundled-test-harness/assets/markdown-embed-chooser-modal-test-BIlEmna9.js +470 -0
- package/bundled-test-harness/assets/markdown-embed-preview-pane-test-B6rscKpk.js +447 -0
- package/bundled-test-harness/assets/markdown-embed-preview-test-CTQw1wq-.js +368 -0
- package/bundled-test-harness/assets/markdown-fallback-BVsco6gJ.js +2 -0
- package/bundled-test-harness/assets/markdown-fallback-test-C_CIFEzH.js +316 -0
- package/bundled-test-harness/assets/markdown-highlighting-test-D6YvywF5.js +244 -0
- package/bundled-test-harness/assets/markdown-preview-1TSMSUv0.js +64 -0
- package/bundled-test-harness/assets/markdown-preview-jbuUjLoD.js +72 -0
- package/bundled-test-harness/assets/markdown-preview-test-zuU5uoA_.js +238 -0
- package/bundled-test-harness/assets/markdown-skill-frontmatter-test-CoicGRkb.js +146 -0
- package/bundled-test-harness/assets/menu-items-DZ_uOoYu.js +2 -0
- package/bundled-test-harness/assets/message-tool-test-K6LgTq5d.js +33 -0
- package/bundled-test-harness/assets/metadata-fields-WiOuUCDl.js +1415 -0
- package/bundled-test-harness/assets/metadata-fields-iu5AfQp3.js +2 -0
- package/bundled-test-harness/assets/midi-audio-def-CD2-4Wjx.js +52 -0
- package/bundled-test-harness/assets/midi-meta-extractor-CE3sLiEV.js +284 -0
- package/bundled-test-harness/assets/midi-meta-extractor-O7c8LHYV.js +2 -0
- package/bundled-test-harness/assets/migrate-skill-test-Beh-AeSN.js +161 -0
- package/bundled-test-harness/assets/mini-BNXINKKF.js +85 -0
- package/bundled-test-harness/assets/mini-C43Q4BWp.js +1519 -0
- package/bundled-test-harness/assets/mini-card-chooser-test-B1GMp-31.js +272 -0
- package/bundled-test-harness/assets/mini-file-chooser-test-CbI1vrQn.js +201 -0
- package/bundled-test-harness/assets/missing-template-BPhJRbDs.js +48 -0
- package/bundled-test-harness/assets/missing-template-DP-Pi-HQ.js +2 -0
- package/bundled-test-harness/assets/modal-KpPz2f8x.js +322 -0
- package/bundled-test-harness/assets/modal-container-0Efz_h2z.js +40 -0
- package/bundled-test-harness/assets/model-cost-tier-test-D-5VSjh6.js +173 -0
- package/bundled-test-harness/assets/module-contents-service-BRkTETb6.js +256 -0
- package/bundled-test-harness/assets/moment-Cln59YUK.js +3474 -0
- package/bundled-test-harness/assets/monaco-AbHCoDJY.js +143 -0
- package/bundled-test-harness/assets/monaco-test-DCPi18sy.js +100 -0
- package/bundled-test-harness/assets/monaco-test-waiter-lvFEYpFj.js +190 -0
- package/bundled-test-harness/assets/month-1eUIsvWN.js +2 -0
- package/bundled-test-harness/assets/month-BeUdWMWQ.js +123 -0
- package/bundled-test-harness/assets/month-day-Bbsd8YbR.js +192 -0
- package/bundled-test-harness/assets/month-day-Dks5STJu.js +2 -0
- package/bundled-test-harness/assets/month-year-pL_rpUhX.js +2 -0
- package/bundled-test-harness/assets/month-year-wH_YnYgL.js +93 -0
- package/bundled-test-harness/assets/mp3-meta-extractor-C3u34UHM.js +476 -0
- package/bundled-test-harness/assets/mp4-meta-extractor-Bj3F7dxs.js +188 -0
- package/bundled-test-harness/assets/multiple-stacks-test-mkNdTUMI.js +208 -0
- package/bundled-test-harness/assets/nested-query-field-render-test-BQLn3wg9.js +249 -0
- package/bundled-test-harness/assets/no-stacks-test-DpwZQAJ-.js +48 -0
- package/bundled-test-harness/assets/number-DZa-fHpu.js +151 -0
- package/bundled-test-harness/assets/number-Dvua76YP.js +3 -0
- package/bundled-test-harness/assets/number-field-test-BiaH2eaB.js +184 -0
- package/bundled-test-harness/assets/number-input-D5nDYDkK.js +82 -0
- package/bundled-test-harness/assets/office-extract-JzYva33g.js +27 -0
- package/bundled-test-harness/assets/office-extract-XMpsyYRh.js +2 -0
- package/bundled-test-harness/assets/ogg-meta-extractor-DJosZ9LA.js +225 -0
- package/bundled-test-harness/assets/on-key-BBVkS8Bi.js +472 -0
- package/bundled-test-harness/assets/ooxml-BlAE2w4d.js +172 -0
- package/bundled-test-harness/assets/ooxml-D-p8OmuM.js +2 -0
- package/bundled-test-harness/assets/open-image-in-new-tab-test-DWBU5pw9.js +52 -0
- package/bundled-test-harness/assets/operation-lowering-test-nzqprueU.js +2812 -0
- package/bundled-test-harness/assets/operations-CPvfTuY3.js +766 -0
- package/bundled-test-harness/assets/operations-invocation-test-C75T6zn3.js +523 -0
- package/bundled-test-harness/assets/operations-query-test-BoCszQEW.js +459 -0
- package/bundled-test-harness/assets/operations-test-79ipSnpM.js +2518 -0
- package/bundled-test-harness/assets/operations-x3Aw2Nky.js +3 -0
- package/bundled-test-harness/assets/operator-mode-acceptance-test-jjsYtt96.js +1188 -0
- package/bundled-test-harness/assets/operator-mode-card-chooser-test-hZP9gEQK.js +1036 -0
- package/bundled-test-harness/assets/operator-mode-links-test-DN16SuIx.js +793 -0
- package/bundled-test-harness/assets/operator-mode-state-service-gwiTSiWX.js +1275 -0
- package/bundled-test-harness/assets/operator-mode-state-service-test-Dt2qnKKP.js +206 -0
- package/bundled-test-harness/assets/operator-mode-test-BZnnxO9q.js +683 -0
- package/bundled-test-harness/assets/operator-mode-ui-test-O--qEo-y.js +1027 -0
- package/bundled-test-harness/assets/overlay-menu-items-test-Bl2k0aAa.js +317 -0
- package/bundled-test-harness/assets/overlays-CdN_JokA.js +270 -0
- package/bundled-test-harness/assets/overlays-clip-test-DpbR1ZTz.js +91 -0
- package/bundled-test-harness/assets/overlays-detached-element-test-cLgEGvMs.js +56 -0
- package/bundled-test-harness/assets/pane-PYdezM7g.js +330 -0
- package/bundled-test-harness/assets/panel-7FDqkxrr.js +474 -0
- package/bundled-test-harness/assets/panel-C3E0s49q.js +3540 -0
- package/bundled-test-harness/assets/past-sessions-test-BsjEeoze.js +321 -0
- package/bundled-test-harness/assets/patch-fields-test-CsixJmSr.js +1014 -0
- package/bundled-test-harness/assets/patch-instance-test-CBDgTi0L.js +348 -0
- package/bundled-test-harness/assets/pdf-file-def-9VNjnqDa.js +76 -0
- package/bundled-test-harness/assets/pdf-meta-extractor-BF4e5kMR.js +156 -0
- package/bundled-test-harness/assets/pdf-meta-extractor-D8Bxh2cc.js +2 -0
- package/bundled-test-harness/assets/pdf-viewer-Bu413sN8.js +112 -0
- package/bundled-test-harness/assets/pdf-viewer-GKDi_xmf.js +2 -0
- package/bundled-test-harness/assets/percentage-TOr6qK2T.js +84 -0
- package/bundled-test-harness/assets/permission-checking-realm-test-BRNVYszm.js +306 -0
- package/bundled-test-harness/assets/phone-number-D5SR8nWu.js +236 -0
- package/bundled-test-harness/assets/phone-number-field-test-DffwtqGd.js +73 -0
- package/bundled-test-harness/assets/phone-number-hf_xIVGQ.js +2 -0
- package/bundled-test-harness/assets/plate-Vojc88hM.js +41 -0
- package/bundled-test-harness/assets/plate-dTUzEMj5.js +2 -0
- package/bundled-test-harness/assets/player-CmRw0uM5.js +82 -0
- package/bundled-test-harness/assets/player-Dt85lPZl.js +2 -0
- package/bundled-test-harness/assets/plural-field-components-test-DNpGuH1D.js +198 -0
- package/bundled-test-harness/assets/png-image-def-GY7gjqya.js +48 -0
- package/bundled-test-harness/assets/png-meta-extractor-4pI611re.js +2 -0
- package/bundled-test-harness/assets/png-meta-extractor-CHp_rpAi.js +111 -0
- package/bundled-test-harness/assets/policy-scoped-search-test-CipPu7tY.js +339 -0
- package/bundled-test-harness/assets/pptx-file-def-lBBiebvn.js +60 -0
- package/bundled-test-harness/assets/pptx-meta-extractor-BjJYWiOJ.js +77 -0
- package/bundled-test-harness/assets/pptx-meta-extractor-DbT-dPRg.js +2 -0
- package/bundled-test-harness/assets/prerender-persistence-block-test-ClHMVvJt.js +124 -0
- package/bundled-test-harness/assets/prerender-serialize-cycle-test-LdqaMTK8.js +134 -0
- package/bundled-test-harness/assets/preview-CYlam_aW.js +74 -0
- package/bundled-test-harness/assets/preview-format-CiSo4kEa.js +41 -0
- package/bundled-test-harness/assets/preview-format-test-MsB1TOLB.js +103 -0
- package/bundled-test-harness/assets/process-card-B3xBGkv1.js +2 -0
- package/bundled-test-harness/assets/process-card-DumVcx9E.js +114 -0
- package/bundled-test-harness/assets/process-card-test-C44H8yVy.js +94 -0
- package/bundled-test-harness/assets/profile-settings-modal-ipYzrVTz.js +708 -0
- package/bundled-test-harness/assets/progress-circle-DJ6WSO2E.js +95 -0
- package/bundled-test-harness/assets/progress-circle-q358_9Sn.js +2 -0
- package/bundled-test-harness/assets/quarter-BjO5DlU2.js +2 -0
- package/bundled-test-harness/assets/quarter-_D72FwfS.js +168 -0
- package/bundled-test-harness/assets/query-field-membership-status-test-CzDyfK49.js +323 -0
- package/bundled-test-harness/assets/query-field-page-optin-test-B-x3vsmC.js +126 -0
- package/bundled-test-harness/assets/query-field-schema-test-DFw6KuYv.js +231 -0
- package/bundled-test-harness/assets/query-field-stale-prerender-test-DSQ-cv_O.js +152 -0
- package/bundled-test-harness/assets/query-fields-test-DQiMFRCe.js +535 -0
- package/bundled-test-harness/assets/rail-CNspDFyn.js +44 -0
- package/bundled-test-harness/assets/rail-D2YcQ0VP.js +2 -0
- package/bundled-test-harness/assets/realm-82Z5RUM_.js +95 -0
- package/bundled-test-harness/assets/realm-config-SgrwqjRu.js +844 -0
- package/bundled-test-harness/assets/realm-config-policy-standing-test-C6sQNk2u.js +290 -0
- package/bundled-test-harness/assets/realm-config-routing-rule-edit-test-DcYXBlvi.js +274 -0
- package/bundled-test-harness/assets/realm-config-settings-test-DblJv06X.js +187 -0
- package/bundled-test-harness/assets/realm-dropdown-CDvL8k3B.js +560 -0
- package/bundled-test-harness/assets/realm-et890flh.js +2 -0
- package/bundled-test-harness/assets/realm-field-test-pBK_x-Xw.js +100 -0
- package/bundled-test-harness/assets/realm-indexing-test-DSFn2F8F.js +4380 -0
- package/bundled-test-harness/assets/realm-policy-test-DYnLqzTS.js +1141 -0
- package/bundled-test-harness/assets/realm-test-DOZT2EG5.js +2363 -0
- package/bundled-test-harness/assets/realm-url-tooltip-qaXTjRb-.js +56 -0
- package/bundled-test-harness/assets/realm-url-tooltip-test-DGTEeLH9.js +78 -0
- package/bundled-test-harness/assets/reasoning-test-BRkhvYjr.js +234 -0
- package/bundled-test-harness/assets/recent-colors-addon-BreXcpg8.js +2 -0
- package/bundled-test-harness/assets/recent-colors-addon-CmCkbJ2_.js +61 -0
- package/bundled-test-harness/assets/relationship-loading-state-test-B6UGYKzG.js +290 -0
- package/bundled-test-harness/assets/relative-time-BjHvL023.js +2 -0
- package/bundled-test-harness/assets/relative-time-ChYKOMIM.js +129 -0
- package/bundled-test-harness/assets/remix-card-test-CpV0kKfq.js +58 -0
- package/bundled-test-harness/assets/rendered-markdown-CJa7IzCC.js +263 -0
- package/bundled-test-harness/assets/rendered-markdown-test-CVKsHS4P.js +587 -0
- package/bundled-test-harness/assets/resident-instance-reuse-test-jQfW1NMn.js +82 -0
- package/bundled-test-harness/assets/response-field-B2-daCl2.js +38 -0
- package/bundled-test-harness/assets/result-tile-BSg4mzbc.js +140 -0
- package/bundled-test-harness/assets/rich-markdown-BtP1yamM.js +2 -0
- package/bundled-test-harness/assets/rich-markdown-C6rQUngb.js +218 -0
- package/bundled-test-harness/assets/rich-markdown-field-test-9yB6ykCe.js +1647 -0
- package/bundled-test-harness/assets/room-C7tKd02X.js +1008 -0
- package/bundled-test-harness/assets/room-message-test-DsMmRYpV.js +445 -0
- package/bundled-test-harness/assets/room-test-golI1H61.js +95 -0
- package/bundled-test-harness/assets/run-realm-code-CbXk6bnK.js +1600 -0
- package/bundled-test-harness/assets/run-realm-code-test-B9JeesaW.js +2468 -0
- package/bundled-test-harness/assets/schema-generation-test-uLLGm5Vh.js +28 -0
- package/bundled-test-harness/assets/score-BQhCQdUP.js +2 -0
- package/bundled-test-harness/assets/score-CoWEzENH.js +100 -0
- package/bundled-test-harness/assets/scrolling-test-WHWEkKeZ.js +384 -0
- package/bundled-test-harness/assets/search-BkQYpQDY.js +605 -0
- package/bundled-test-harness/assets/search-adorn-test-CW92JPOk.js +136 -0
- package/bundled-test-harness/assets/search-entries-BU4w6Ymc.js +472 -0
- package/bundled-test-harness/assets/search-entries-result-test-9eydsDtD.js +234 -0
- package/bundled-test-harness/assets/search-entries-test-ByUREx0G.js +1486 -0
- package/bundled-test-harness/assets/search-result-header-UFkdo0Bx.js +128 -0
- package/bundled-test-harness/assets/search-results-DrHTuVRZ.js +266 -0
- package/bundled-test-harness/assets/search-results-test-krtQQM57.js +578 -0
- package/bundled-test-harness/assets/search-selection-menu-test-DoqSbez7.js +108 -0
- package/bundled-test-harness/assets/search-sheet-persistence-test-4ZPaEY-y.js +131 -0
- package/bundled-test-harness/assets/search-test-BYpq32RM.js +2241 -0
- package/bundled-test-harness/assets/searchable-BXw4T11q.js +192 -0
- package/bundled-test-harness/assets/searchable-CVvPDA3Q.js +2 -0
- package/bundled-test-harness/assets/searchable-option-test-BhLFI4ei.js +322 -0
- package/bundled-test-harness/assets/searchable-search-doc-test-DrNLCF73.js +1271 -0
- package/bundled-test-harness/assets/secure-sign-in-VNQhe0ae.js +130 -0
- package/bundled-test-harness/assets/secure-sign-in-Za8PX9cD.css +24 -0
- package/bundled-test-harness/assets/secure-sign-in-aunWHCrB.js +73 -0
- package/bundled-test-harness/assets/secure-sign-in-test-BcY1TcNd.js +32 -0
- package/bundled-test-harness/assets/secure-sign-in-test-DRdz89BT.js +245 -0
- package/bundled-test-harness/assets/sending-test-mbHpGZUu.js +576 -0
- package/bundled-test-harness/assets/serialization-rri-form-audit-test-nypV9J82.js +136 -0
- package/bundled-test-harness/assets/serialization-test-aLwrFv4d.js +8758 -0
- package/bundled-test-harness/assets/setup-Dgn0s6Zk.js +772 -0
- package/bundled-test-harness/assets/shared-link-target-reuse-test-D9MR2UNc.js +207 -0
- package/bundled-test-harness/assets/show-card-Dwfk332M.js +67 -0
- package/bundled-test-harness/assets/show-card-test-CRPwwJvc.js +365 -0
- package/bundled-test-harness/assets/show-file-DLdFPHMR.js +34 -0
- package/bundled-test-harness/assets/signed-capture-DUR9PohQ.js +204 -0
- package/bundled-test-harness/assets/signed-capture-link-test-DfTAB6OT.js +132 -0
- package/bundled-test-harness/assets/single-stack-test-Crr_8nti.js +652 -0
- package/bundled-test-harness/assets/skill-DQ00VonZ.js +3 -0
- package/bundled-test-harness/assets/skill-reference-LEitQV9i.js +112 -0
- package/bundled-test-harness/assets/skill-yZXS1VHQ.js +76 -0
- package/bundled-test-harness/assets/skills-test-D3-C-Dbm.js +648 -0
- package/bundled-test-harness/assets/slider-picker-B6AxKL2j.js +245 -0
- package/bundled-test-harness/assets/slider-picker-C4Tc5o-s.js +2 -0
- package/bundled-test-harness/assets/spec-Cl_LB6nC.js +602 -0
- package/bundled-test-harness/assets/spinner-BHFM7zcR.js +39 -0
- package/bundled-test-harness/assets/spinner-DvAvsyDT.css +21 -0
- package/bundled-test-harness/assets/store-BV6WX8oV.js +2205 -0
- package/bundled-test-harness/assets/store-module-rebuild-test-HyphFJiF.js +454 -0
- package/bundled-test-harness/assets/store-search-test-nUeJ5opb.js +175 -0
- package/bundled-test-harness/assets/store-test-BebUIJAg.js +3460 -0
- package/bundled-test-harness/assets/string-BHZZwNlZ.js +9 -0
- package/bundled-test-harness/assets/submode-switcher-D-U9cXo0.js +169 -0
- package/bundled-test-harness/assets/svg-meta-extractor-BsG4w2nX.js +42 -0
- package/bundled-test-harness/assets/swatches-picker-4vFztxHo.js +33 -0
- package/bundled-test-harness/assets/swatches-picker-C7RE7uJ8.js +2 -0
- package/bundled-test-harness/assets/switch-submode-CuA0Zfjn.js +79 -0
- package/bundled-test-harness/assets/switch-submode-test-i1Qic_Cp.js +168 -0
- package/bundled-test-harness/assets/tag-CZNs3DPN.js +105 -0
- package/bundled-test-harness/assets/tests-BneuP252.js +3523 -0
- package/bundled-test-harness/assets/text-area-DAShQQBe.js +9 -0
- package/bundled-test-harness/assets/text-file-def-D2Rs6nS1.js +151 -0
- package/bundled-test-harness/assets/text-input-validator-test-C9IG-1GZ.js +156 -0
- package/bundled-test-harness/assets/theme-Dm8LWaRK.js +9 -0
- package/bundled-test-harness/assets/theme-card-test-Cbb6tAap.js +621 -0
- package/bundled-test-harness/assets/theme-scheme-island-test-DOVLakx3.js +264 -0
- package/bundled-test-harness/assets/three-d-model-def-DWSPQGgD.js +70 -0
- package/bundled-test-harness/assets/time--_Txqya1.js +126 -0
- package/bundled-test-harness/assets/time-DKD7Bdjd.js +2 -0
- package/bundled-test-harness/assets/time-slots-BZaugjq_.js +2 -0
- package/bundled-test-harness/assets/time-slots-C85M0rWl.js +85 -0
- package/bundled-test-harness/assets/timeline-B3KGDm3M.js +2 -0
- package/bundled-test-harness/assets/timeline-BMwgaZZu.js +59 -0
- package/bundled-test-harness/assets/to-device-streaming-test-CMp5bFiz.js +163 -0
- package/bundled-test-harness/assets/token-usage-test-CXA0b8Ep.js +166 -0
- package/bundled-test-harness/assets/tool-field-BGLelnsr.js +94 -0
- package/bundled-test-harness/assets/tool-field-BOFuDDt3.js +2 -0
- package/bundled-test-harness/assets/tools-CTjy7Aub.js +725 -0
- package/bundled-test-harness/assets/tools-calling-test--JR-7AK7.js +200 -0
- package/bundled-test-harness/assets/tools-test-6yAW3W5I.js +2820 -0
- package/bundled-test-harness/assets/tools-test-DhpMUQkz.js +1624 -0
- package/bundled-test-harness/assets/ts-file-def-CDbf8aw2.js +159 -0
- package/bundled-test-harness/assets/update-room-skills-test-DoKsS_1C.js +240 -0
- package/bundled-test-harness/assets/url-D0ooeJxC.js +2 -0
- package/bundled-test-harness/assets/url-mFskVPSX.js +96 -0
- package/bundled-test-harness/assets/video-file-def-AcmWqzev.js +76 -0
- package/bundled-test-harness/assets/wav-meta-extractor-CbTLruQf.js +368 -0
- package/bundled-test-harness/assets/webm-meta-extractor-C9JH-CMX.js +178 -0
- package/bundled-test-harness/assets/webp-meta-extractor-C6sHm4J7.js +98 -0
- package/bundled-test-harness/assets/website-Bxuk_OmR.js +92 -0
- package/bundled-test-harness/assets/week-Bxssxce7.js +2 -0
- package/bundled-test-harness/assets/week-DQLj9974.js +111 -0
- package/bundled-test-harness/assets/welcome-to-boxel-BH82RsW5.js +172 -0
- package/bundled-test-harness/assets/workspace-DJ_s2x4g.js +614 -0
- package/bundled-test-harness/assets/workspace-a11y-test-BJbZNgoP.js +197 -0
- package/bundled-test-harness/assets/workspace-behavior-test-BLBARTfb.js +200 -0
- package/bundled-test-harness/assets/workspace-chooser-BpmlVrVn.js +2219 -0
- package/bundled-test-harness/assets/workspace-chooser-CqLR2Dzh.css +1296 -0
- package/bundled-test-harness/assets/workspace-chooser-catalog-order-test-CmAVNAWC.js +36 -0
- package/bundled-test-harness/assets/workspace-chooser-unreachable-notice-test-DEfG7Uh9.js +60 -0
- package/bundled-test-harness/assets/workspace-delete-multiple-test-DE7Z8ooj.js +212 -0
- package/bundled-test-harness/assets/workspace-delete-summary-test-CwtG_zLH.js +63 -0
- package/bundled-test-harness/assets/workspace-timestamp-labels-test-DFAaRmJW.js +58 -0
- package/bundled-test-harness/assets/xlsx-file-def-DcvaRYnZ.js +60 -0
- package/bundled-test-harness/assets/xlsx-meta-extractor-0RlViVaf.js +101 -0
- package/bundled-test-harness/assets/xlsx-meta-extractor-BH30Vuem.js +2 -0
- package/bundled-test-harness/assets/year-B_MBk_hE.js +78 -0
- package/bundled-test-harness/assets/year-hSpccI9L.js +2 -0
- package/bundled-test-harness/assets/zip-file-def-c84iddi9.js +288 -0
- package/bundled-test-harness/index.html +78 -68
- package/bundled-test-harness/tests/index.html +78 -68
- package/bundled-types/host-app/components/matrix/account-switch-failed.gts +2 -2
- package/bundled-types/host-app/components/matrix/auth.gts +2 -2
- package/bundled-types/host-app/components/matrix/cli-auth.gts +7 -6
- package/bundled-types/host-app/components/matrix/forgot-password.gts +43 -129
- package/bundled-types/host-app/components/matrix/login.gts +15 -118
- package/bundled-types/host-app/components/matrix/register-user.gts +45 -226
- package/bundled-types/host-app/components/matrix/secure-sign-in.gts +235 -0
- package/bundled-types/host-app/components/operator-mode/container.gts +13 -1
- package/bundled-types/host-app/components/operator-mode/profile-info-popover.gts +1 -1
- package/bundled-types/host-app/config/environment.ts +1 -1
- package/bundled-types/host-app/lib/secure-sign-in.ts +130 -0
- package/bundled-types/host-app/services/matrix-service.ts +46 -0
- package/bundled-types/host-app/services/monaco-service.ts +0 -5
- package/bundled-types/host-app/utils/login-token.ts +23 -10
- package/dist/api.js +1 -1
- package/dist/index.js +289 -285
- package/package.json +1 -1
- package/src/build-program.ts +6 -2
- package/src/commands/profile.ts +72 -3
- package/src/lib/profile-manager.ts +5 -1
- package/src/lib/secure-session.ts +29 -0
- package/src/lib/sso-login.ts +94 -15
- package/bundled-test-harness/assets/account-switch-failed-B3pr_iC3.js +0 -32
- package/bundled-test-harness/assets/account-switch-failed-DTGZZo-G.css +0 -61
- package/bundled-test-harness/assets/account-switch-failed-test-9ENVgvlx.js +0 -45
- package/bundled-test-harness/assets/add-workspace-BAbk0250.js +0 -141
- package/bundled-test-harness/assets/add-workspace-test-ChAja_t-.js +0 -72
- package/bundled-test-harness/assets/advanced-color-picker-C-xBFJ2S.js +0 -504
- package/bundled-test-harness/assets/advanced-color-picker-bWAmCT-8.js +0 -2
- package/bundled-test-harness/assets/ai-assistant-test-BJ9yetuC.js +0 -2211
- package/bundled-test-harness/assets/ai-module-creation-test-Bw3TKS9d.js +0 -151
- package/bundled-test-harness/assets/aibot-message-DkgHT6eJ.js +0 -465
- package/bundled-test-harness/assets/app-DW5QjtRp.js +0 -22816
- package/bundled-test-harness/assets/app-yCDjO4mk.css +0 -2718
- package/bundled-test-harness/assets/audio-file-def-bJ3cXVmC.js +0 -133
- package/bundled-test-harness/assets/avif-meta-extractor-CrSDfYEt.js +0 -162
- package/bundled-test-harness/assets/base64-image-C7UBjK5W.js +0 -262
- package/bundled-test-harness/assets/base64-image-CjWpxROT.js +0 -2
- package/bundled-test-harness/assets/big-integer-BBql7oGZ.js +0 -89
- package/bundled-test-harness/assets/big-integer-B_TrzRy_.js +0 -2
- package/bundled-test-harness/assets/binary-upload-dedupe-test-BiX8kS7D.js +0 -308
- package/bundled-test-harness/assets/boolean-9LNUUTfw.js +0 -2
- package/bundled-test-harness/assets/boolean-BAmK01TF.js +0 -94
- package/bundled-test-harness/assets/brand-functional-palette-CFuoS-LS.js +0 -137
- package/bundled-test-harness/assets/brand-logo-By89eknI.js +0 -295
- package/bundled-test-harness/assets/broken-link-template-test-odBriDSP.js +0 -192
- package/bundled-test-harness/assets/bundled-base-CLQkkmN4.js +0 -254
- package/bundled-test-harness/assets/bundled-base-modules-test-BYrTaTwa.js +0 -54
- package/bundled-test-harness/assets/buried-stack-item-scroll-test-DU4bM5nd.js +0 -236
- package/bundled-test-harness/assets/bxl-expression-test-Cs9JaZbC.js +0 -250
- package/bundled-test-harness/assets/can-invoke-test-ccMc06BU.js +0 -401
- package/bundled-test-harness/assets/card-api-Bn65NUT0.js +0 -8
- package/bundled-test-harness/assets/card-api-test-COrFXu2i.js +0 -198
- package/bundled-test-harness/assets/card-api-u1pOrwS6.js +0 -4393
- package/bundled-test-harness/assets/card-basics-test-D4rn3iN-.js +0 -5364
- package/bundled-test-harness/assets/card-chooser-paging-test-bZhdrUXt.js +0 -235
- package/bundled-test-harness/assets/card-chooser-test-D9w1duob.js +0 -393
- package/bundled-test-harness/assets/card-collection-ClCV-__1.js +0 -118
- package/bundled-test-harness/assets/card-context-search-results-H_rN3Upz.js +0 -30
- package/bundled-test-harness/assets/card-context-search-results-test-jciyaouV.js +0 -184
- package/bundled-test-harness/assets/card-def-field-def-relationships-test-BVZoQzM8.js +0 -562
- package/bundled-test-harness/assets/card-delete-test-CuLcZFnY.js +0 -466
- package/bundled-test-harness/assets/card-error-DIOivSkD.js +0 -72
- package/bundled-test-harness/assets/card-error-awaiting-index-test-JMwcRONq.js +0 -53
- package/bundled-test-harness/assets/card-error-detail-96jWBx6B.js +0 -271
- package/bundled-test-harness/assets/card-info-BxPtwG1h.js +0 -2
- package/bundled-test-harness/assets/card-list-B34qY3io.js +0 -2
- package/bundled-test-harness/assets/card-list-BpCaKkZJ.js +0 -202
- package/bundled-test-harness/assets/card-resource-DcPbIwH9.js +0 -86
- package/bundled-test-harness/assets/cards-grid-CTN8nBT_.js +0 -344
- package/bundled-test-harness/assets/cards-grid-Cx44vL-M.js +0 -2
- package/bundled-test-harness/assets/cards-grid-layout-BdL0Uzxl.js +0 -111
- package/bundled-test-harness/assets/cards-grid-layout-Dn8Yb4ma.js +0 -2
- package/bundled-test-harness/assets/check-correctness-test-BfMV-MC0.js +0 -554
- package/bundled-test-harness/assets/clip-CK6mVuyN.js +0 -92
- package/bundled-test-harness/assets/clip-CfXD1JTr.js +0 -2
- package/bundled-test-harness/assets/code-ref-85Bih6Zl.js +0 -138
- package/bundled-test-harness/assets/code-ref-DATHaoyt.js +0 -2
- package/bundled-test-harness/assets/code-submode-availability-test-DLYlx0wo.js +0 -198
- package/bundled-test-harness/assets/code-submode-test-CDIi7MjD.js +0 -1824
- package/bundled-test-harness/assets/codeblocks-test-CNPyTvuv.js +0 -418
- package/bundled-test-harness/assets/codemirror-editor-BPOPTR-f.js +0 -2
- package/bundled-test-harness/assets/codemirror-editor-DPhG0pec.js +0 -701
- package/bundled-test-harness/assets/codemirror-embed-toolbar-test-Dk5lFOUq.js +0 -366
- package/bundled-test-harness/assets/color-BxN5gRSg.js +0 -65
- package/bundled-test-harness/assets/color-CrunRcis.js +0 -2
- package/bundled-test-harness/assets/color-field-test-COjFIpXV.js +0 -212
- package/bundled-test-harness/assets/color-picker-field-C-GS1CIw.js +0 -139
- package/bundled-test-harness/assets/color-picker-field-D3RXhbCK.js +0 -2
- package/bundled-test-harness/assets/color-wheel-picker-Bz8cBmf4.js +0 -283
- package/bundled-test-harness/assets/color-wheel-picker-DrwPrB8B.js +0 -2
- package/bundled-test-harness/assets/command-data-BxXgtNBf.js +0 -2
- package/bundled-test-harness/assets/command-data-ZdkcpEgG.js +0 -95
- package/bundled-test-harness/assets/compaction-test-DS7DTGT_.js +0 -150
- package/bundled-test-harness/assets/components-CbCTWAON.js +0 -17777
- package/bundled-test-harness/assets/computed-test-D_OrXDtR.js +0 -1320
- package/bundled-test-harness/assets/container-DDolu1gk.js +0 -11109
- package/bundled-test-harness/assets/container-DndcCIMv.css +0 -5169
- package/bundled-test-harness/assets/contains-many-component-BtgnAXih.js +0 -2
- package/bundled-test-harness/assets/contrast-checker-addon-kwtLKWdL.js +0 -2
- package/bundled-test-harness/assets/contrast-checker-addon-zFY5cen1.js +0 -71
- package/bundled-test-harness/assets/convert-to-class-name-test-BcGWl2K1.js +0 -17
- package/bundled-test-harness/assets/coordinate-D72EF1Pl.js +0 -48
- package/bundled-test-harness/assets/copy-file-to-realm-test-CYoDX4YV.js +0 -148
- package/bundled-test-harness/assets/country-B-iIe5v8.js +0 -199
- package/bundled-test-harness/assets/create-file-modal-PpvMksjR.js +0 -570
- package/bundled-test-harness/assets/create-listing-modal-test-CQtEf_UD.js +0 -273
- package/bundled-test-harness/assets/create-listing-pr-request-test-CDtKWyfk.js +0 -117
- package/bundled-test-harness/assets/create-spec-test-Cbqk8I9T.js +0 -256
- package/bundled-test-harness/assets/create-specs-CZg2cpnh.js +0 -215
- package/bundled-test-harness/assets/create-submission-workflow-test-CYrxF7bg.js +0 -132
- package/bundled-test-harness/assets/credential-fields-test-Di4jCJgU.js +0 -157
- package/bundled-test-harness/assets/css-value-CceJyI5o.js +0 -48
- package/bundled-test-harness/assets/csv-file-def-DJL2aZI9.js +0 -277
- package/bundled-test-harness/assets/currency-Bn5WIqzF.js +0 -134
- package/bundled-test-harness/assets/date-XI2CVYA2.js +0 -2
- package/bundled-test-harness/assets/date-h83UJcFR.js +0 -183
- package/bundled-test-harness/assets/date-time-fields-test-Cterr2mj.js +0 -359
- package/bundled-test-harness/assets/datetime-DadI80tC.js +0 -201
- package/bundled-test-harness/assets/datetime-Dpb_Sejj.js +0 -2
- package/bundled-test-harness/assets/datetime-stamp-C4vv397u.js +0 -81
- package/bundled-test-harness/assets/datetime-stamp-DIsJdQux.js +0 -2
- package/bundled-test-harness/assets/day-C4pZoGNM.js +0 -113
- package/bundled-test-harness/assets/day-D0goBhKb.js +0 -2
- package/bundled-test-harness/assets/debug-message-test-CV0sj-fl.js +0 -117
- package/bundled-test-harness/assets/dist-CAIttNZm.js +0 -1710
- package/bundled-test-harness/assets/dist-CLbqnmnm.js +0 -389
- package/bundled-test-harness/assets/dist-qkBOmIQy.js +0 -323
- package/bundled-test-harness/assets/docx-file-def-hz2tVQKf.js +0 -60
- package/bundled-test-harness/assets/docx-meta-extractor-CeRshlxL.js +0 -60
- package/bundled-test-harness/assets/docx-meta-extractor-muK5CKF3.js +0 -2
- package/bundled-test-harness/assets/duration-BYx1dLfm.js +0 -2
- package/bundled-test-harness/assets/duration-FAmTFeUa.js +0 -184
- package/bundled-test-harness/assets/email-D-bFy_C1.js +0 -80
- package/bundled-test-harness/assets/email-field-test-CY9K2zur.js +0 -75
- package/bundled-test-harness/assets/email-j4DZNH2-.js +0 -2
- package/bundled-test-harness/assets/enum-B7_baAn_.js +0 -167
- package/bundled-test-harness/assets/enum-BQqNzVQS.js +0 -2
- package/bundled-test-harness/assets/enum-field-test-BJ9Epz15.js +0 -953
- package/bundled-test-harness/assets/error-display-test-CbDWjJ2F.js +0 -343
- package/bundled-test-harness/assets/ethereum-address-BOLEnKsm.js +0 -78
- package/bundled-test-harness/assets/ethereum-address-s3Kvb2wG.js +0 -2
- package/bundled-test-harness/assets/expiration-warning-BaIP1MOZ.js +0 -2
- package/bundled-test-harness/assets/expiration-warning-gjEtxPk0.js +0 -90
- package/bundled-test-harness/assets/externals-Bih8ejPS.js +0 -4393
- package/bundled-test-harness/assets/fallback-banner-MlImHjSD.js +0 -24
- package/bundled-test-harness/assets/fallback-banner-live-delete-test-Bm7IKXPf.js +0 -207
- package/bundled-test-harness/assets/fallback-banner-test-C7TGA0Ob.js +0 -53
- package/bundled-test-harness/assets/fallback-banner-test-lvuaVRXu.js +0 -225
- package/bundled-test-harness/assets/fallback-models-test-Dy7iIKUS.js +0 -161
- package/bundled-test-harness/assets/field-component-DBoOxTke.js +0 -2
- package/bundled-test-harness/assets/field-configuration-test-DnAnzyC-.js +0 -548
- package/bundled-test-harness/assets/field-edit-DdJ8Akso.js +0 -2
- package/bundled-test-harness/assets/field-edit-XAop92l8.js +0 -36
- package/bundled-test-harness/assets/field-markdown-domain-test-cZCqbcjj.js +0 -616
- package/bundled-test-harness/assets/field-markdown-oversize-test-BuATetVz.js +0 -88
- package/bundled-test-harness/assets/field-markdown-primitives-test-BsubQfhv.js +0 -365
- package/bundled-test-harness/assets/field-markdown-specialized-test-4eNLiYpF.js +0 -534
- package/bundled-test-harness/assets/field-test-helpers-9I7cHnaU.js +0 -45
- package/bundled-test-harness/assets/file-api-CC86I7Er.js +0 -7
- package/bundled-test-harness/assets/file-attachment-test-o9191GMb.js +0 -796
- package/bundled-test-harness/assets/file-chooser-panel-test-C8aZuJlk.js +0 -153
- package/bundled-test-harness/assets/file-chooser-test-B0Tn8CCR.js +0 -504
- package/bundled-test-harness/assets/file-def-edit-BSiF2Lje.js +0 -2
- package/bundled-test-harness/assets/file-def-edit-C5TYBp_q.js +0 -26
- package/bundled-test-harness/assets/file-def-embedded-BLVTCiVB.js +0 -2
- package/bundled-test-harness/assets/file-def-embedded-Bep4iD6s.js +0 -38
- package/bundled-test-harness/assets/file-def-fitted-BTs-AS78.js +0 -2
- package/bundled-test-harness/assets/file-def-fitted-DcPitdYu.js +0 -38
- package/bundled-test-harness/assets/file-def-isolated-Kg1YVhm-.js +0 -38
- package/bundled-test-harness/assets/file-def-isolated-tK5JWCam.js +0 -2
- package/bundled-test-harness/assets/file-def-serialization-test-D4wnd5XK.js +0 -89
- package/bundled-test-harness/assets/file-menu-items-CH4-naSK.js +0 -117
- package/bundled-test-harness/assets/file-menu-items-emUxx3ZI.js +0 -2
- package/bundled-test-harness/assets/file-preview-stage-B1McIWwu.js +0 -2
- package/bundled-test-harness/assets/file-preview-stage-BgZLNMN4.js +0 -72
- package/bundled-test-harness/assets/file-shell-embedded-BmfuwWfU.js +0 -2
- package/bundled-test-harness/assets/file-shell-embedded-zh8CJanA.js +0 -68
- package/bundled-test-harness/assets/file-shell-fitted-DSFUNRGJ.js +0 -2
- package/bundled-test-harness/assets/file-shell-fitted-DXKDH0fn.js +0 -98
- package/bundled-test-harness/assets/file-shell-isolated-0F1MFv4q.js +0 -2
- package/bundled-test-harness/assets/file-shell-isolated-DduZZzmi.js +0 -195
- package/bundled-test-harness/assets/file-tree-from-index-BzDvvUHy.js +0 -151
- package/bundled-test-harness/assets/file-tree-from-index-test-D0hfI4a1.js +0 -96
- package/bundled-test-harness/assets/film-BN_HVXBU.js +0 -13
- package/bundled-test-harness/assets/film-CKkbUi0L.js +0 -2
- package/bundled-test-harness/assets/film-CMNJITZ-.js +0 -4074
- package/bundled-test-harness/assets/fitted-CAvdcKpu.js +0 -34
- package/bundled-test-harness/assets/fitted-CbKOwd1u.js +0 -2
- package/bundled-test-harness/assets/flac-meta-extractor-e8qajPSl.js +0 -99
- package/bundled-test-harness/assets/font-file-def-9atde5W8.js +0 -64
- package/bundled-test-harness/assets/font-meta-extractor-IralDC8M.js +0 -303
- package/bundled-test-harness/assets/font-meta-extractor-zPBVOfoR.js +0 -2
- package/bundled-test-harness/assets/formatted-aibot-message-test-CWOiZUng.js +0 -109
- package/bundled-test-harness/assets/from-elsewhere-ChxbtsBa.js +0 -131
- package/bundled-test-harness/assets/frontmatter-field-cdig7KR9.js +0 -41
- package/bundled-test-harness/assets/garbage-collection-test-Dg-ww_Sb.js +0 -403
- package/bundled-test-harness/assets/gauge-B45nLOGe.js +0 -106
- package/bundled-test-harness/assets/gauge-BK-768BM.js +0 -2
- package/bundled-test-harness/assets/general-test-D7cn7PUr.js +0 -926
- package/bundled-test-harness/assets/get-relationship-membership-state-test-Skmj9V6y.js +0 -1308
- package/bundled-test-harness/assets/gif-meta-extractor-BychhK9q.js +0 -114
- package/bundled-test-harness/assets/glimmer-motion-and-choreo-in-cards-test-C09YUmk4.js +0 -160
- package/bundled-test-harness/assets/glimmer-motion-and-choreo-test-DYskx_Kk.js +0 -74
- package/bundled-test-harness/assets/helper-BHX0HLF2.js +0 -478
- package/bundled-test-harness/assets/host-submode-test-Clw_QnvF.js +0 -1243
- package/bundled-test-harness/assets/html-file-def-C0P9giwU.js +0 -82
- package/bundled-test-harness/assets/hydratable-card-DnjrxKsT.js +0 -147
- package/bundled-test-harness/assets/hydratable-card-test-BAmWHfv1.js +0 -426
- package/bundled-test-harness/assets/icons-DBXBZgLe.js +0 -894
- package/bundled-test-harness/assets/image-Cip6ojDd.js +0 -47
- package/bundled-test-harness/assets/image-file-def-BdQxjZcN.js +0 -65
- package/bundled-test-harness/assets/image-file-def-DP4aqWcS.js +0 -3
- package/bundled-test-harness/assets/index-changes-test-D8b_56Ke.js +0 -367
- package/bundled-test-harness/assets/index-query-engine-test-CCyaUwMX.js +0 -2593
- package/bundled-test-harness/assets/inspector-test-BJTVGdOO.js +0 -1930
- package/bundled-test-harness/assets/instance-filter-matcher-test-DjsPrXL7.js +0 -788
- package/bundled-test-harness/assets/interact-submode-creation-and-permissions-test-DSqM0vxh.js +0 -475
- package/bundled-test-harness/assets/interact-submode-setup-DF31UMX-.js +0 -566
- package/bundled-test-harness/assets/is-component-declaration-test-Did47eG9.js +0 -50
- package/bundled-test-harness/assets/iso-bmff-LuWkGL__.js +0 -205
- package/bundled-test-harness/assets/iso-bmff-_flO6c20.js +0 -2
- package/bundled-test-harness/assets/isolated-and-edit-frocLHin.js +0 -2
- package/bundled-test-harness/assets/job-priority-header-test-DHLAXfp7.js +0 -81
- package/bundled-test-harness/assets/job-scoped-instance-residency-test-C1Bt5j98.js +0 -103
- package/bundled-test-harness/assets/join-the-community-BBUSO2cs.js +0 -86
- package/bundled-test-harness/assets/jpg-meta-extractor-CoybO4Hq.js +0 -88
- package/bundled-test-harness/assets/json-field-8sdH5RQb.js +0 -2
- package/bundled-test-harness/assets/json-field-BDD3iTUh.js +0 -19
- package/bundled-test-harness/assets/json-file-def-BKibsfc6.js +0 -298
- package/bundled-test-harness/assets/last-modified-date-CR5jru2m.js +0 -43
- package/bundled-test-harness/assets/last-modified-date-test-jJ00YdTm.js +0 -28
- package/bundled-test-harness/assets/links-to-editor-rDoCYaN-.js +0 -2
- package/bundled-test-harness/assets/links-to-many-component-BqZT88Fb.js +0 -2
- package/bundled-test-harness/assets/linksto-broken-link-placeholder-test-Cp1Eb_4U.js +0 -398
- package/bundled-test-harness/assets/linksto-error-sentinel-test-Bddavnh_.js +0 -238
- package/bundled-test-harness/assets/linksto-many-broken-link-placeholder-test-c5WegXnR.js +0 -354
- package/bundled-test-harness/assets/linksto-many-per-slot-access-test-CWskzfGW.js +0 -303
- package/bundled-test-harness/assets/linksto-sentinel-reload-test-ByeVNhr8.js +0 -197
- package/bundled-test-harness/assets/linksto-sentinel-roundtrip-test-DP26i6Gb.js +0 -260
- package/bundled-test-harness/assets/linksto-singular-js-access-contract-test-fDUXx8tO.js +0 -196
- package/bundled-test-harness/assets/llm-model-BcLEkTV7.js +0 -64
- package/bundled-test-harness/assets/login-CeuuNVvU.css +0 -139
- package/bundled-test-harness/assets/login-DV0WlJv-.js +0 -348
- package/bundled-test-harness/assets/login-error-text-test-BMGY_9gW.js +0 -51
- package/bundled-test-harness/assets/login-test-CL9YpMH5.js +0 -246
- package/bundled-test-harness/assets/m4a-meta-extractor-CHO1JQtb.js +0 -204
- package/bundled-test-harness/assets/main-CPLT8JNu.js +0 -5
- package/bundled-test-harness/assets/markdown-BvBALLGh.js +0 -7
- package/bundled-test-harness/assets/markdown-DFezmrFD.js +0 -2
- package/bundled-test-harness/assets/markdown-editor-mode-select-Au64bcIO.js +0 -2
- package/bundled-test-harness/assets/markdown-editor-mode-select-rK9PP8rv.js +0 -54
- package/bundled-test-harness/assets/markdown-embed-chooser-modal-test-CIxizf5k.js +0 -470
- package/bundled-test-harness/assets/markdown-embed-preview-pane-test-C7GoNN7l.js +0 -447
- package/bundled-test-harness/assets/markdown-embed-preview-test-CDnj4uhd.js +0 -368
- package/bundled-test-harness/assets/markdown-fallback-n7PsLNmO.js +0 -2
- package/bundled-test-harness/assets/markdown-fallback-test-DTHT6OwQ.js +0 -316
- package/bundled-test-harness/assets/markdown-highlighting-test-DJ-4WSE_.js +0 -244
- package/bundled-test-harness/assets/markdown-preview-Ccelx5W-.js +0 -64
- package/bundled-test-harness/assets/markdown-preview-JXuMC_ve.js +0 -72
- package/bundled-test-harness/assets/markdown-preview-test-ByZqrpPk.js +0 -238
- package/bundled-test-harness/assets/markdown-skill-frontmatter-test-DAHGeL4K.js +0 -146
- package/bundled-test-harness/assets/menu-items-DzJm9H_H.js +0 -2
- package/bundled-test-harness/assets/message-tool-test-lmdrIEdY.js +0 -33
- package/bundled-test-harness/assets/metadata-fields-BZZr4Qe5.js +0 -2
- package/bundled-test-harness/assets/metadata-fields-BtdjGsKE.js +0 -1415
- package/bundled-test-harness/assets/midi-audio-def-uYbYFmFi.js +0 -52
- package/bundled-test-harness/assets/midi-meta-extractor-DNI5gc1q.js +0 -284
- package/bundled-test-harness/assets/midi-meta-extractor-DbKZ4fMG.js +0 -2
- package/bundled-test-harness/assets/migrate-skill-test-DI1xceiL.js +0 -161
- package/bundled-test-harness/assets/mini-CNoDyHqG.js +0 -1519
- package/bundled-test-harness/assets/mini-DexlIeKK.js +0 -85
- package/bundled-test-harness/assets/mini-card-chooser-test-DT5eIf1_.js +0 -272
- package/bundled-test-harness/assets/mini-file-chooser-test-DTQnKTZJ.js +0 -201
- package/bundled-test-harness/assets/missing-template-DL2mwddM.js +0 -2
- package/bundled-test-harness/assets/missing-template-ltqlJ4JC.js +0 -48
- package/bundled-test-harness/assets/modal-container-DRnt95-S.js +0 -40
- package/bundled-test-harness/assets/modal-zE95eEFp.js +0 -322
- package/bundled-test-harness/assets/model-cost-tier-test-CcFz7hcv.js +0 -173
- package/bundled-test-harness/assets/module-contents-service-Dk_zWt-V.js +0 -256
- package/bundled-test-harness/assets/month-BqReBYWo.js +0 -2
- package/bundled-test-harness/assets/month-RhvmIp40.js +0 -123
- package/bundled-test-harness/assets/month-day-XFAQA72z.js +0 -2
- package/bundled-test-harness/assets/month-day-XzKpk6nz.js +0 -192
- package/bundled-test-harness/assets/month-year-BeuNr2Cl.js +0 -2
- package/bundled-test-harness/assets/month-year-DhU7hATV.js +0 -93
- package/bundled-test-harness/assets/mp3-meta-extractor-Dx2RnJc5.js +0 -476
- package/bundled-test-harness/assets/mp4-meta-extractor--k0m8KsT.js +0 -188
- package/bundled-test-harness/assets/multiple-stacks-test-bC24IWcJ.js +0 -208
- package/bundled-test-harness/assets/nested-query-field-render-test-qxElXx1e.js +0 -249
- package/bundled-test-harness/assets/no-stacks-test-Br7IGAgV.js +0 -48
- package/bundled-test-harness/assets/number-73SsCMEF.js +0 -3
- package/bundled-test-harness/assets/number-CicTBWQd.js +0 -151
- package/bundled-test-harness/assets/number-field-test-kV5zXo1J.js +0 -184
- package/bundled-test-harness/assets/number-input-CQy4xUeA.js +0 -82
- package/bundled-test-harness/assets/office-extract-Bo8sbNkK.js +0 -27
- package/bundled-test-harness/assets/office-extract-CfBaoRMD.js +0 -2
- package/bundled-test-harness/assets/ogg-meta-extractor-aIf5q_Rq.js +0 -225
- package/bundled-test-harness/assets/on-key-C8acaldQ.js +0 -472
- package/bundled-test-harness/assets/ooxml-Bu3iZezv.js +0 -172
- package/bundled-test-harness/assets/ooxml-jQPBQK25.js +0 -2
- package/bundled-test-harness/assets/open-image-in-new-tab-test-CP7q3kMm.js +0 -52
- package/bundled-test-harness/assets/operation-lowering-test-9Mdr0hRT.js +0 -2812
- package/bundled-test-harness/assets/operations-R9b661Qn.js +0 -3
- package/bundled-test-harness/assets/operations-Zv_V3Api.js +0 -766
- package/bundled-test-harness/assets/operations-invocation-test-BJPpWb2H.js +0 -523
- package/bundled-test-harness/assets/operations-query-test-DufdmPQF.js +0 -459
- package/bundled-test-harness/assets/operations-test-CzT051YH.js +0 -2518
- package/bundled-test-harness/assets/operator-mode-acceptance-test-ByOIOcD0.js +0 -1188
- package/bundled-test-harness/assets/operator-mode-card-chooser-test-CNhR9mvv.js +0 -1036
- package/bundled-test-harness/assets/operator-mode-links-test-CuxSVTPR.js +0 -793
- package/bundled-test-harness/assets/operator-mode-state-service-CCeHt5SH.js +0 -1275
- package/bundled-test-harness/assets/operator-mode-state-service-test-C8TI9WWg.js +0 -206
- package/bundled-test-harness/assets/operator-mode-test-DG-mG8Tn.js +0 -683
- package/bundled-test-harness/assets/operator-mode-ui-test-DB7xhjS0.js +0 -1027
- package/bundled-test-harness/assets/overlay-menu-items-test-C6rcdF_S.js +0 -317
- package/bundled-test-harness/assets/overlays-D2zmPxzK.js +0 -270
- package/bundled-test-harness/assets/overlays-clip-test-Clpq3JzQ.js +0 -91
- package/bundled-test-harness/assets/overlays-detached-element-test-BtsTeJch.js +0 -56
- package/bundled-test-harness/assets/pane-f-IYhcWT.js +0 -330
- package/bundled-test-harness/assets/panel-B3PCSBbf.js +0 -3540
- package/bundled-test-harness/assets/panel-Ban7zCBP.js +0 -474
- package/bundled-test-harness/assets/past-sessions-test-uM2m-oKV.js +0 -321
- package/bundled-test-harness/assets/patch-fields-test-COPjDhnt.js +0 -1014
- package/bundled-test-harness/assets/patch-instance-test-CRb3dfby.js +0 -348
- package/bundled-test-harness/assets/pdf-file-def-J_yOUU8_.js +0 -76
- package/bundled-test-harness/assets/pdf-meta-extractor-83T5Bdo7.js +0 -156
- package/bundled-test-harness/assets/pdf-meta-extractor-INFIklMy.js +0 -2
- package/bundled-test-harness/assets/pdf-viewer-B4rRluWA.js +0 -2
- package/bundled-test-harness/assets/pdf-viewer-vYem8ozk.js +0 -112
- package/bundled-test-harness/assets/percentage-ChagfNRG.js +0 -84
- package/bundled-test-harness/assets/permission-checking-realm-test-Dmb2a428.js +0 -306
- package/bundled-test-harness/assets/phone-number-BiD2eaSd.js +0 -236
- package/bundled-test-harness/assets/phone-number-C-wt4_UK.js +0 -2
- package/bundled-test-harness/assets/phone-number-field-test-BHzAmuBP.js +0 -73
- package/bundled-test-harness/assets/plate-CqN2nM6P.js +0 -41
- package/bundled-test-harness/assets/plate-DaIfpORN.js +0 -2
- package/bundled-test-harness/assets/player-CGt5fTd5.js +0 -2
- package/bundled-test-harness/assets/player-CN0l44LK.js +0 -82
- package/bundled-test-harness/assets/plural-field-components-test-CO2g2opW.js +0 -198
- package/bundled-test-harness/assets/png-image-def-B_oou2wS.js +0 -48
- package/bundled-test-harness/assets/png-meta-extractor-BfPz1qP_.js +0 -2
- package/bundled-test-harness/assets/png-meta-extractor-C8ai8sPw.js +0 -111
- package/bundled-test-harness/assets/policy-scoped-search-test-BRRp2a1A.js +0 -339
- package/bundled-test-harness/assets/pptx-file-def-C3qYEHDM.js +0 -60
- package/bundled-test-harness/assets/pptx-meta-extractor-8IuoBq4I.js +0 -77
- package/bundled-test-harness/assets/pptx-meta-extractor-BPhy9RMM.js +0 -2
- package/bundled-test-harness/assets/prerender-persistence-block-test-Cteb_Rs_.js +0 -124
- package/bundled-test-harness/assets/prerender-serialize-cycle-test-CH7b6Ra9.js +0 -134
- package/bundled-test-harness/assets/preview-CmERZpI6.js +0 -74
- package/bundled-test-harness/assets/preview-format-BPMlCSbb.js +0 -41
- package/bundled-test-harness/assets/preview-format-test-B7sA8fbZ.js +0 -103
- package/bundled-test-harness/assets/process-card-CtDzDB-_.js +0 -2
- package/bundled-test-harness/assets/process-card-erbWKY5h.js +0 -114
- package/bundled-test-harness/assets/process-card-test-DXOt1jDW.js +0 -94
- package/bundled-test-harness/assets/profile-settings-modal-11BrR058.js +0 -708
- package/bundled-test-harness/assets/progress-circle-Cd79Zqh2.js +0 -2
- package/bundled-test-harness/assets/progress-circle-sc-W5aUl.js +0 -95
- package/bundled-test-harness/assets/quarter-B61kCpcD.js +0 -168
- package/bundled-test-harness/assets/quarter-d5jkTzcz.js +0 -2
- package/bundled-test-harness/assets/query-field-membership-status-test-BmpVfohw.js +0 -323
- package/bundled-test-harness/assets/query-field-page-optin-test-9_Cce-OJ.js +0 -126
- package/bundled-test-harness/assets/query-field-schema-test-CwV7xanX.js +0 -231
- package/bundled-test-harness/assets/query-field-stale-prerender-test-RkdnZ-VV.js +0 -152
- package/bundled-test-harness/assets/query-fields-test-BLxYkTAM.js +0 -535
- package/bundled-test-harness/assets/rail-CFPU0tFe.js +0 -2
- package/bundled-test-harness/assets/rail-CQ53Dakr.js +0 -44
- package/bundled-test-harness/assets/realm-DdVH9lSZ.js +0 -95
- package/bundled-test-harness/assets/realm-DdsFw3b-.js +0 -2
- package/bundled-test-harness/assets/realm-config-DIslxoB7.js +0 -844
- package/bundled-test-harness/assets/realm-config-policy-standing-test-b4WxNDor.js +0 -290
- package/bundled-test-harness/assets/realm-config-routing-rule-edit-test-C-rcvkkD.js +0 -274
- package/bundled-test-harness/assets/realm-config-settings-test-DDUkM3zw.js +0 -187
- package/bundled-test-harness/assets/realm-dropdown-1j55Dy-1.js +0 -560
- package/bundled-test-harness/assets/realm-field-test-D-uEtFKO.js +0 -100
- package/bundled-test-harness/assets/realm-indexing-test-U9m0epR-.js +0 -4380
- package/bundled-test-harness/assets/realm-policy-test-DhKabhlk.js +0 -1141
- package/bundled-test-harness/assets/realm-test-BX6C9SS5.js +0 -2363
- package/bundled-test-harness/assets/realm-url-tooltip-BjjcKqBx.js +0 -56
- package/bundled-test-harness/assets/realm-url-tooltip-test-DW0ZwEEE.js +0 -78
- package/bundled-test-harness/assets/reasoning-test-BWT94KXG.js +0 -234
- package/bundled-test-harness/assets/recent-colors-addon-CfgmgilF.js +0 -61
- package/bundled-test-harness/assets/recent-colors-addon-D--Ry3Pf.js +0 -2
- package/bundled-test-harness/assets/relationship-loading-state-test-C5R6jao_.js +0 -290
- package/bundled-test-harness/assets/relative-time-Bq7pqums.js +0 -2
- package/bundled-test-harness/assets/relative-time-D0QyW4ig.js +0 -129
- package/bundled-test-harness/assets/remix-card-test-Cy0h3Xdf.js +0 -58
- package/bundled-test-harness/assets/rendered-markdown-Hw_EF8SO.js +0 -263
- package/bundled-test-harness/assets/rendered-markdown-test-CqeF-UZd.js +0 -587
- package/bundled-test-harness/assets/resident-instance-reuse-test-BiI6L40n.js +0 -82
- package/bundled-test-harness/assets/response-field-BCxG5phG.js +0 -38
- package/bundled-test-harness/assets/result-tile-DMzRnTP8.js +0 -140
- package/bundled-test-harness/assets/rich-markdown-C4RUl7L0.js +0 -2
- package/bundled-test-harness/assets/rich-markdown-DxQSCg-o.js +0 -218
- package/bundled-test-harness/assets/rich-markdown-field-test-B7wpedKs.js +0 -1647
- package/bundled-test-harness/assets/room-D0M0Zwrs.js +0 -1008
- package/bundled-test-harness/assets/room-message-test-BWWd4xC8.js +0 -445
- package/bundled-test-harness/assets/room-test-DFH-nOwi.js +0 -95
- package/bundled-test-harness/assets/run-realm-code-DyVyEDBl.js +0 -1600
- package/bundled-test-harness/assets/run-realm-code-test-BpxF-tOz.js +0 -2468
- package/bundled-test-harness/assets/schema-generation-test-DjaJqpYP.js +0 -28
- package/bundled-test-harness/assets/score-Cfp34BE7.js +0 -2
- package/bundled-test-harness/assets/score-DIWWpeyf.js +0 -100
- package/bundled-test-harness/assets/scrolling-test-hA_uBwBg.js +0 -384
- package/bundled-test-harness/assets/search-C0-b7dJI.js +0 -605
- package/bundled-test-harness/assets/search-adorn-test-C6KP3AwA.js +0 -136
- package/bundled-test-harness/assets/search-entries-BfPq5sPS.js +0 -472
- package/bundled-test-harness/assets/search-entries-result-test-Bl9u_BOD.js +0 -234
- package/bundled-test-harness/assets/search-entries-test-BDC_lS43.js +0 -1486
- package/bundled-test-harness/assets/search-result-header-DCAze_cg.js +0 -128
- package/bundled-test-harness/assets/search-results-Dd0enVun.js +0 -266
- package/bundled-test-harness/assets/search-results-test-T5KEEII4.js +0 -578
- package/bundled-test-harness/assets/search-selection-menu-test-CCssnBq1.js +0 -108
- package/bundled-test-harness/assets/search-sheet-persistence-test-BzQiO-FK.js +0 -131
- package/bundled-test-harness/assets/search-test-fyCWb24m.js +0 -2241
- package/bundled-test-harness/assets/searchable-BkgeKQMl.js +0 -2
- package/bundled-test-harness/assets/searchable-D_6p6fyb.js +0 -192
- package/bundled-test-harness/assets/searchable-option-test-CnCUYGaq.js +0 -322
- package/bundled-test-harness/assets/searchable-search-doc-test-B8Q0D98v.js +0 -1271
- package/bundled-test-harness/assets/sending-test-D5PGBDys.js +0 -576
- package/bundled-test-harness/assets/serialization-rri-form-audit-test-BRJ1cJ31.js +0 -136
- package/bundled-test-harness/assets/serialization-test-DM6hK258.js +0 -8758
- package/bundled-test-harness/assets/setup-C_GgVgzM.js +0 -772
- package/bundled-test-harness/assets/shared-link-target-reuse-test-Be-lSKib.js +0 -207
- package/bundled-test-harness/assets/show-card-BFG6KR1m.js +0 -67
- package/bundled-test-harness/assets/show-card-test-l0wMrfZq.js +0 -365
- package/bundled-test-harness/assets/show-file-B8-FRVHj.js +0 -34
- package/bundled-test-harness/assets/signed-capture-D_Q44TQ7.js +0 -204
- package/bundled-test-harness/assets/signed-capture-link-test-DOS5xpYv.js +0 -132
- package/bundled-test-harness/assets/single-stack-test-BIEtzHVS.js +0 -652
- package/bundled-test-harness/assets/skill-BUTGmSsm.js +0 -76
- package/bundled-test-harness/assets/skill-Bo7R_2Ud.js +0 -3
- package/bundled-test-harness/assets/skill-reference-Cs64py3k.js +0 -112
- package/bundled-test-harness/assets/skills-test-CXxSIkYa.js +0 -648
- package/bundled-test-harness/assets/slider-picker-C81errGI.js +0 -245
- package/bundled-test-harness/assets/slider-picker-mvKsy6cR.js +0 -2
- package/bundled-test-harness/assets/spec-B55lJurX.js +0 -602
- package/bundled-test-harness/assets/store-DyQ0KiyI.js +0 -2205
- package/bundled-test-harness/assets/store-module-rebuild-test-C7532_bS.js +0 -454
- package/bundled-test-harness/assets/store-search-test-80NMJuoW.js +0 -175
- package/bundled-test-harness/assets/store-test-dHiWXXMs.js +0 -3460
- package/bundled-test-harness/assets/string-DHlQEHYm.js +0 -9
- package/bundled-test-harness/assets/submode-switcher-DQv-CD6G.js +0 -169
- package/bundled-test-harness/assets/svg-meta-extractor-Uw_EJytF.js +0 -42
- package/bundled-test-harness/assets/swatches-picker-CaEoibN1.js +0 -33
- package/bundled-test-harness/assets/swatches-picker-gPl50JbP.js +0 -2
- package/bundled-test-harness/assets/switch-submode-BKDnJd4m.js +0 -79
- package/bundled-test-harness/assets/switch-submode-test-_E2mVk4z.js +0 -168
- package/bundled-test-harness/assets/tag-B60lDr-j.js +0 -105
- package/bundled-test-harness/assets/tests-BBBgPBB6.js +0 -3520
- package/bundled-test-harness/assets/text-area-CJjWmwpi.js +0 -9
- package/bundled-test-harness/assets/text-file-def-u_dl0i2z.js +0 -151
- package/bundled-test-harness/assets/text-input-validator-test-BTwnkSS2.js +0 -156
- package/bundled-test-harness/assets/theme-BK-fAHVn.js +0 -9
- package/bundled-test-harness/assets/theme-card-test-BQmT7rqr.js +0 -621
- package/bundled-test-harness/assets/theme-scheme-island-test-Oi3aeyp1.js +0 -264
- package/bundled-test-harness/assets/three-d-model-def-B4KckPVC.js +0 -70
- package/bundled-test-harness/assets/time-BcuaSkHg.js +0 -126
- package/bundled-test-harness/assets/time-f7Irg7Z7.js +0 -2
- package/bundled-test-harness/assets/time-slots-ClYIZN53.js +0 -2
- package/bundled-test-harness/assets/time-slots-TI1aaqRN.js +0 -85
- package/bundled-test-harness/assets/timeline-Cof9eyq0.js +0 -59
- package/bundled-test-harness/assets/timeline-DFWQtCWE.js +0 -2
- package/bundled-test-harness/assets/to-device-streaming-test-BDrUUlOt.js +0 -163
- package/bundled-test-harness/assets/token-usage-test-CiZo03fY.js +0 -166
- package/bundled-test-harness/assets/tool-field-BXHr9r0w.js +0 -94
- package/bundled-test-harness/assets/tool-field-CoRO5C4R.js +0 -2
- package/bundled-test-harness/assets/tools-CmVaYDIS.js +0 -725
- package/bundled-test-harness/assets/tools-calling-test-B454__XF.js +0 -200
- package/bundled-test-harness/assets/tools-test-CLu51dJO.js +0 -1624
- package/bundled-test-harness/assets/tools-test-XGRAvVug.js +0 -2820
- package/bundled-test-harness/assets/ts-file-def-C05BDwdg.js +0 -159
- package/bundled-test-harness/assets/update-room-skills-test-jOvP14JX.js +0 -240
- package/bundled-test-harness/assets/url-BFf2CNo-.js +0 -2
- package/bundled-test-harness/assets/url-CYm-CeXp.js +0 -96
- package/bundled-test-harness/assets/video-file-def-B2UIrOFS.js +0 -76
- package/bundled-test-harness/assets/wav-meta-extractor-BNkv7e2f.js +0 -368
- package/bundled-test-harness/assets/webm-meta-extractor-C933kYyc.js +0 -178
- package/bundled-test-harness/assets/webp-meta-extractor-BLz0z1pZ.js +0 -98
- package/bundled-test-harness/assets/website-BuOMUW1v.js +0 -92
- package/bundled-test-harness/assets/week-Bo0666ji.js +0 -111
- package/bundled-test-harness/assets/week-CaVFA8Vc.js +0 -2
- package/bundled-test-harness/assets/welcome-to-boxel-PWard7GF.js +0 -172
- package/bundled-test-harness/assets/workspace-KXfFTQNV.js +0 -614
- package/bundled-test-harness/assets/workspace-a11y-test-Buwb-rfO.js +0 -197
- package/bundled-test-harness/assets/workspace-behavior-test-CbgFUOOo.js +0 -200
- package/bundled-test-harness/assets/workspace-chooser-BmQvhhrl.js +0 -2248
- package/bundled-test-harness/assets/workspace-chooser-Cu84Gd_E.css +0 -1317
- package/bundled-test-harness/assets/workspace-chooser-catalog-order-test-rcRw6sni.js +0 -36
- package/bundled-test-harness/assets/workspace-chooser-unreachable-notice-test-DUXnBIdY.js +0 -60
- package/bundled-test-harness/assets/workspace-delete-multiple-test-DjRKhZ2g.js +0 -212
- package/bundled-test-harness/assets/workspace-delete-summary-test-CvkLVYyN.js +0 -63
- package/bundled-test-harness/assets/workspace-timestamp-labels-test-AYJT4inv.js +0 -58
- package/bundled-test-harness/assets/xlsx-file-def-DuKdbGrJ.js +0 -60
- package/bundled-test-harness/assets/xlsx-meta-extractor-Bz-C2JWP.js +0 -101
- package/bundled-test-harness/assets/xlsx-meta-extractor-ClwwgABg.js +0 -2
- package/bundled-test-harness/assets/year-B6ctHikl.js +0 -2
- package/bundled-test-harness/assets/year-C11uAQE6.js +0 -78
- package/bundled-test-harness/assets/zip-file-def-B8XN-OS_.js +0 -288
- package/bundled-types/host-app/components/matrix/auth-button.gts +0 -39
- package/bundled-types/host-app/components/matrix/auth-container.gts +0 -69
- package/bundled-types/host-app/components/matrix/auth-form-field.gts +0 -43
|
@@ -0,0 +1,2219 @@
|
|
|
1
|
+
import "./chunk-Rp0pCe6z.js";
|
|
2
|
+
import { n as decorateMethodV2, r as initializeDeferredDecorator, t as decorateFieldV2 } from "./runtime--fcdnjmJ-BoCBNIsz.js";
|
|
3
|
+
import { ms as logger } from "./runtime-common-ClpqhbwG.js";
|
|
4
|
+
import { v as ri } from "./paths-BYHDgqsT.js";
|
|
5
|
+
import { D as baseRealm } from "./constants-CqKWhRfY.js";
|
|
6
|
+
import { t as config } from "./environment-DIUJgBKt.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 } from "./service-LFpJ8EEP.js";
|
|
9
|
+
import { H as templateFactory, S as on, m as htmlSafe } from "./index-DaCZcoCY-CgzbilMy.js";
|
|
10
|
+
import { l as didCancel, n as buildTask } from "./async-arrow-runtime-STsj7E8Y.js";
|
|
11
|
+
import { t as cached } from "./tracking-CNiq91Pk.js";
|
|
12
|
+
import { i as fn } from "./helper-m6jA5HmU.js";
|
|
13
|
+
import "./modifier-D0EP-FQ7.js";
|
|
14
|
+
import "./component-BJO47HTh.js";
|
|
15
|
+
import { t as Component } from "./dist-CkA1rgqO.js";
|
|
16
|
+
import { n as tracked$1, t as cached$1 } from "./tracking-800VJb8b.js";
|
|
17
|
+
import "./template-factory-ds9s0u8l.js";
|
|
18
|
+
import { t as templateOnly } from "./template-only-6nVzLWF-.js";
|
|
19
|
+
import { T as add, c as eq, z as css_var_default } from "./helpers-BN6ReMzK.js";
|
|
20
|
+
import { E as IconComponent$3, G as RealmIcon, S as BoxelSelect, it as IconComponent$4, mt as LoadingIndicator, tt as Tooltip } from "./components-Ct_agx0G.js";
|
|
21
|
+
import { D as IconComponent$9, V as IconComponent$6, a as IconComponent$10, h as IconComponent$8, l as IconComponent$7, n as IconComponent$5 } from "./icons-B3SAtRoj.js";
|
|
22
|
+
import "./template-C81fYDrq.js";
|
|
23
|
+
import "./internals-BTorg710.js";
|
|
24
|
+
import { r as modifier } from "./dist-nMt-N14r.js";
|
|
25
|
+
import "./dist-DEVZvbin.js";
|
|
26
|
+
import { r as provide } from "./dist-Ble0L9o7.js";
|
|
27
|
+
import { t as catalogRealmURL } from "./utils-DZFRsMFd.js";
|
|
28
|
+
import { t as RealmURLTooltip } from "./realm-url-tooltip-qaXTjRb-.js";
|
|
29
|
+
import { t as perform } from "./perform-g9ba6YNZ.js";
|
|
30
|
+
import { a as firstDefined, i as emit, n as resolveBusy, o as resolveSize, r as resolveDisabled, s as resolveTone, t as Button } from "./button-PKDCsv-a.js";
|
|
31
|
+
import { t as Spinner } from "./spinner-BHFM7zcR.js";
|
|
32
|
+
import { c as IconComponent$11, o as WorkspaceLoadingIndicator, s as IconComponent$12, t as Workspace } from "./workspace-DJ_s2x4g.js";
|
|
33
|
+
import { t as AddWorkspace } from "./add-workspace-c7L50Gx8.js";
|
|
34
|
+
import { n as IconComponent$14, t as IconComponent$13 } from "./alert-triangle-C7tx0ryM.js";
|
|
35
|
+
//#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/shapes.js
|
|
36
|
+
var IconComponent$2 = setComponentTemplate(templateFactory({
|
|
37
|
+
"id": "0OVf+HRq",
|
|
38
|
+
"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-shapes\"],[24,\"viewBox\",\"0 0 24 24\"],[17,1],[12],[10,\"path\"],[14,\"d\",\"M8.3 10a.7.7 0 0 1-.626-1.079L11.4 3a.7.7 0 0 1 1.198-.043L16.3 8.9a.7.7 0 0 1-.572 1.1Z\"],[12],[13],[10,\"rect\"],[14,\"width\",\"7\"],[14,\"height\",\"7\"],[14,\"x\",\"3\"],[14,\"y\",\"14\"],[14,\"rx\",\"1\"],[12],[13],[10,\"circle\"],[14,\"cx\",\"17.5\"],[14,\"cy\",\"17.5\"],[14,\"r\",\"3.5\"],[12],[13],[13],[1,\"\\n\"]],[\"&attrs\"],[]]",
|
|
39
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/shapes.gts",
|
|
40
|
+
"isStrictMode": true
|
|
41
|
+
}), templateOnly());
|
|
42
|
+
IconComponent$2.name = "shapes";
|
|
43
|
+
//#endregion
|
|
44
|
+
//#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/archive-restore.js
|
|
45
|
+
var IconComponent$1 = setComponentTemplate(templateFactory({
|
|
46
|
+
"id": "QeRCR7YA",
|
|
47
|
+
"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\"],[]]",
|
|
48
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/archive-restore.gts",
|
|
49
|
+
"isStrictMode": true
|
|
50
|
+
}), templateOnly());
|
|
51
|
+
IconComponent$1.name = "archive-restore";
|
|
52
|
+
//#endregion
|
|
53
|
+
//#region app/components/operator-mode/workspace-chooser/archived-workspace.gts
|
|
54
|
+
var ArchivedWorkspace = class extends Component {
|
|
55
|
+
static {
|
|
56
|
+
decorateFieldV2(this.prototype, "realmServer", [service]);
|
|
57
|
+
}
|
|
58
|
+
#realmServer = (initializeDeferredDecorator(this, "realmServer"), void 0);
|
|
59
|
+
get realmInfo() {
|
|
60
|
+
return {
|
|
61
|
+
name: this.args.archivedRealm.name,
|
|
62
|
+
iconURL: this.args.archivedRealm.iconURL,
|
|
63
|
+
publishable: null
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
static {
|
|
67
|
+
decorateMethodV2(this.prototype, "realmInfo", [cached$1]);
|
|
68
|
+
}
|
|
69
|
+
get name() {
|
|
70
|
+
return this.args.archivedRealm.name;
|
|
71
|
+
}
|
|
72
|
+
get backgroundImageURL() {
|
|
73
|
+
let { backgroundURL } = this.args.archivedRealm;
|
|
74
|
+
return backgroundURL ? `url(${backgroundURL})` : "";
|
|
75
|
+
}
|
|
76
|
+
static {
|
|
77
|
+
decorateFieldV2(this.prototype, "restoreError", [tracked$1]);
|
|
78
|
+
}
|
|
79
|
+
#restoreError = (initializeDeferredDecorator(this, "restoreError"), void 0);
|
|
80
|
+
restoreTask = buildTask(() => ({
|
|
81
|
+
context: this,
|
|
82
|
+
generator: function* () {
|
|
83
|
+
this.restoreError = void 0;
|
|
84
|
+
try {
|
|
85
|
+
yield this.realmServer.unarchiveRealm(this.args.archivedRealm.url);
|
|
86
|
+
} catch (error) {
|
|
87
|
+
this.restoreError = error.message;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}), null, "restoreTask", "drop");
|
|
91
|
+
static {
|
|
92
|
+
setComponentTemplate(templateFactory({
|
|
93
|
+
"id": "wSs6bFxv",
|
|
94
|
+
"block": "[[[10,0],[14,0,\"archived-card\"],[15,\"data-test-archived-workspace\",[30,0,[\"name\"]]],[14,\"data-scopedcss-916d2a767c-9115c24cc7\",\"\"],[12],[1,\"\\n \"],[10,0],[14,0,\"tile\"],[15,5,[28,[32,0],null,[[\"workspace-background-image-url\"],[[30,0,[\"backgroundImageURL\"]]]]]],[14,\"data-scopedcss-916d2a767c-9115c24cc7\",\"\"],[12],[1,\"\\n \"],[10,0],[14,0,\"tile-overlay\"],[14,\"data-scopedcss-916d2a767c-9115c24cc7\",\"\"],[12],[13],[1,\"\\n \"],[8,[32,1],[[24,\"data-scopedcss-916d2a767c-9115c24cc7\",\"\"]],[[\"@placement\"],[\"top\"]],[[\"trigger\",\"content\"],[[[[1,\"\\n \"],[10,1],[14,0,\"archive-badge\"],[14,\"data-scopedcss-916d2a767c-9115c24cc7\",\"\"],[12],[1,\"\\n \"],[8,[32,2],[[24,\"width\",\"14\"],[24,\"height\",\"14\"],[24,\"data-scopedcss-916d2a767c-9115c24cc7\",\"\"]],null,null],[1,\"\\n \"],[13],[1,\"\\n \"]],[]],[[[1,\"Archived workspace\"]],[]]]]],[1,\"\\n \"],[8,[32,3],[[24,\"data-scopedcss-916d2a767c-9115c24cc7\",\"\"]],[[\"@realmURL\",\"@announce\"],[[30,1,[\"url\"]],true]],[[\"default\"],[[[[1,\"\\n \"],[10,0],[14,0,\"realm-icon-wrapper\"],[14,\"data-scopedcss-916d2a767c-9115c24cc7\",\"\"],[12],[1,\"\\n \"],[8,[32,4],[[24,0,\"workspace-realm-icon\"],[24,\"data-scopedcss-916d2a767c-9115c24cc7\",\"\"]],[[\"@realmInfo\"],[[30,0,[\"realmInfo\"]]]],null],[1,\"\\n \"],[13],[1,\"\\n \"]],[]]]]],[1,\"\\n\"],[41,[30,0,[\"restoreTask\",\"isRunning\"]],[[[1,\" \"],[10,0],[14,0,\"restore-pending\"],[14,\"data-scopedcss-916d2a767c-9115c24cc7\",\"\"],[12],[1,\"\\n \"],[8,[32,5],[[24,0,\"restore-spinner\"],[24,\"data-scopedcss-916d2a767c-9115c24cc7\",\"\"]],null,null],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],[[[1,\" \"],[11,\"button\"],[24,0,\"restore-btn\"],[16,\"data-test-restore-workspace-btn\",[30,1,[\"url\"]]],[24,\"data-scopedcss-916d2a767c-9115c24cc7\",\"\"],[24,4,\"button\"],[4,[32,6],[\"click\",[28,[32,7],[[30,0,[\"restoreTask\"]]],null]],null],[12],[1,\"\\n \"],[8,[32,8],[[24,\"width\",\"14\"],[24,\"height\",\"14\"],[24,\"data-scopedcss-916d2a767c-9115c24cc7\",\"\"]],null,null],[1,\"\\n Restore\\n \"],[13],[1,\"\\n\"]],[]]],[1,\" \"],[13],[1,\"\\n \"],[10,0],[14,0,\"info\"],[14,\"data-scopedcss-916d2a767c-9115c24cc7\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"name\"],[14,\"data-test-archived-workspace-name\",\"\"],[14,\"data-scopedcss-916d2a767c-9115c24cc7\",\"\"],[12],[1,[30,0,[\"name\"]]],[13],[1,\"\\n \"],[10,1],[14,0,\"status\"],[14,\"data-scopedcss-916d2a767c-9115c24cc7\",\"\"],[12],[1,\"Archived\"],[13],[1,\"\\n\"],[41,[30,0,[\"restoreError\"]],[[[1,\" \"],[10,1],[14,0,\"restore-error\"],[14,\"data-test-restore-workspace-error\",\"\"],[14,\"data-scopedcss-916d2a767c-9115c24cc7\",\"\"],[12],[1,[30,0,[\"restoreError\"]]],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n\"],[13],[1,\"\\n\"]],[\"@archivedRealm\"],[\"if\"]]",
|
|
95
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/workspace-chooser/archived-workspace.gts",
|
|
96
|
+
"scope": () => [
|
|
97
|
+
css_var_default,
|
|
98
|
+
Tooltip,
|
|
99
|
+
IconComponent$11,
|
|
100
|
+
RealmURLTooltip,
|
|
101
|
+
RealmIcon,
|
|
102
|
+
LoadingIndicator,
|
|
103
|
+
on,
|
|
104
|
+
perform,
|
|
105
|
+
IconComponent$1
|
|
106
|
+
],
|
|
107
|
+
"isStrictMode": true
|
|
108
|
+
}), this);
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
//#endregion
|
|
112
|
+
//#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/info-small.js
|
|
113
|
+
var IconComponent = setComponentTemplate(templateFactory({
|
|
114
|
+
"id": "aSlui7An",
|
|
115
|
+
"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\"],[]]",
|
|
116
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/info-small.gts",
|
|
117
|
+
"isStrictMode": true
|
|
118
|
+
}), templateOnly());
|
|
119
|
+
IconComponent.name = "info-small";
|
|
120
|
+
//#endregion
|
|
121
|
+
//#region ../pretui/internal/keep-style.gts
|
|
122
|
+
function declarations(style) {
|
|
123
|
+
let list = [];
|
|
124
|
+
for (let i = 0; i < style.length; i++) {
|
|
125
|
+
let property = style.item(i);
|
|
126
|
+
list.push(`${property}:${style.getPropertyValue(property).trim()}`);
|
|
127
|
+
}
|
|
128
|
+
return list.sort().join("\n");
|
|
129
|
+
}
|
|
130
|
+
var keepStyle = modifier((el, [entries]) => {
|
|
131
|
+
let kept = entries.filter((e) => e.value !== void 0);
|
|
132
|
+
if (kept.length === 0) return;
|
|
133
|
+
let read = (property) => el.style.getPropertyValue(property).trim() || void 0;
|
|
134
|
+
let callerValues = /* @__PURE__ */ new Map();
|
|
135
|
+
let readCaller = () => {
|
|
136
|
+
for (let { property } of kept) {
|
|
137
|
+
let value = read(property);
|
|
138
|
+
callerValues.set(property, value === void 0 ? void 0 : {
|
|
139
|
+
value,
|
|
140
|
+
priority: el.style.getPropertyPriority(property)
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
let isCallerRewrite = (records) => {
|
|
145
|
+
if (records.length === 0) return false;
|
|
146
|
+
let before = el.ownerDocument.createElement("span").style;
|
|
147
|
+
before.cssText = records[0].oldValue ?? "";
|
|
148
|
+
return kept.some(({ property }) => (before.getPropertyValue(property).trim() || void 0) !== read(property)) || declarations(before) === declarations(el.style);
|
|
149
|
+
};
|
|
150
|
+
let write = (observer) => {
|
|
151
|
+
let wrote = false;
|
|
152
|
+
for (let { property, value, strength } of kept) {
|
|
153
|
+
if (strength === "default" && callerValues.get(property) !== void 0) continue;
|
|
154
|
+
if (read(property) !== value) {
|
|
155
|
+
el.style.setProperty(property, value);
|
|
156
|
+
wrote = true;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
if (wrote) observer?.takeRecords();
|
|
160
|
+
};
|
|
161
|
+
readCaller();
|
|
162
|
+
write();
|
|
163
|
+
let observer = new MutationObserver((records, self) => {
|
|
164
|
+
if (isCallerRewrite(records)) readCaller();
|
|
165
|
+
write(self);
|
|
166
|
+
});
|
|
167
|
+
observer.observe(el, {
|
|
168
|
+
attributes: true,
|
|
169
|
+
attributeFilter: ["style"],
|
|
170
|
+
attributeOldValue: true
|
|
171
|
+
});
|
|
172
|
+
return () => {
|
|
173
|
+
let rewritten = isCallerRewrite(observer.takeRecords());
|
|
174
|
+
observer.disconnect();
|
|
175
|
+
if (rewritten) return;
|
|
176
|
+
for (let { property, value } of kept) {
|
|
177
|
+
if (read(property) !== value) continue;
|
|
178
|
+
let callerValue = callerValues.get(property);
|
|
179
|
+
if (callerValue) el.style.setProperty(property, callerValue.value, callerValue.priority);
|
|
180
|
+
else el.style.removeProperty(property);
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
});
|
|
184
|
+
//#endregion
|
|
185
|
+
//#region ../pretui/components/visually-hidden.gts
|
|
186
|
+
var VisuallyHidden = setComponentTemplate(templateFactory({
|
|
187
|
+
"id": "2kXmW47O",
|
|
188
|
+
"block": "[[[11,1],[24,0,\"pretui-visually-hidden\"],[16,\"data-focusable\",[52,[30,1],\"true\",\"false\"]],[24,\"data-test-pretui-visually-hidden\",\"\"],[17,2],[24,\"data-scopedcss-1129855c2f-6ec51e5ae3\",\"\"],[12],[18,3,null],[13],[1,\"\\n\"]],[\"@focusable\",\"&attrs\",\"&default\"],[\"if\",\"yield\"]]",
|
|
189
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/visually-hidden.gts",
|
|
190
|
+
"isStrictMode": true
|
|
191
|
+
}), templateOnly());
|
|
192
|
+
//#endregion
|
|
193
|
+
//#region ../pretui/components/alert.gts
|
|
194
|
+
var ALERT_TONES = [
|
|
195
|
+
"info",
|
|
196
|
+
"success",
|
|
197
|
+
"warning",
|
|
198
|
+
"danger"
|
|
199
|
+
];
|
|
200
|
+
var ALERT_VARIANTS = {
|
|
201
|
+
default: "info",
|
|
202
|
+
destructive: "danger"
|
|
203
|
+
};
|
|
204
|
+
var ALERT_COLORS = {
|
|
205
|
+
info: {
|
|
206
|
+
hue: "var(--info)",
|
|
207
|
+
onHue: "var(--info-foreground)"
|
|
208
|
+
},
|
|
209
|
+
success: {
|
|
210
|
+
hue: "var(--success)",
|
|
211
|
+
onHue: "var(--success-foreground)"
|
|
212
|
+
},
|
|
213
|
+
warning: {
|
|
214
|
+
hue: "var(--warning)",
|
|
215
|
+
onHue: "var(--warning-foreground)"
|
|
216
|
+
},
|
|
217
|
+
danger: {
|
|
218
|
+
hue: "var(--destructive)",
|
|
219
|
+
onHue: "var(--destructive-foreground)"
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
var ALERT_ICONS = {
|
|
223
|
+
info: IconComponent,
|
|
224
|
+
success: IconComponent$3,
|
|
225
|
+
warning: IconComponent$13,
|
|
226
|
+
danger: IconComponent$4
|
|
227
|
+
};
|
|
228
|
+
var ALERT_TONE_LABELS = {
|
|
229
|
+
info: "Info",
|
|
230
|
+
success: "Success",
|
|
231
|
+
warning: "Warning",
|
|
232
|
+
danger: "Error"
|
|
233
|
+
};
|
|
234
|
+
var Alert = class extends Component {
|
|
235
|
+
get tone() {
|
|
236
|
+
let fromVariant = this.args.variant ? ALERT_VARIANTS[this.args.variant] : void 0;
|
|
237
|
+
return resolveTone(this.args.tone, ALERT_TONES, fromVariant ?? "info");
|
|
238
|
+
}
|
|
239
|
+
get role() {
|
|
240
|
+
return this.tone === "danger" ? "alert" : "status";
|
|
241
|
+
}
|
|
242
|
+
get hueStyle() {
|
|
243
|
+
let { hue, onHue } = ALERT_COLORS[this.tone];
|
|
244
|
+
return htmlSafe(`--pretui-alert-hue: ${hue}; --pretui-alert-on-hue: ${onHue}`);
|
|
245
|
+
}
|
|
246
|
+
get keptStyle() {
|
|
247
|
+
let { hue, onHue } = ALERT_COLORS[this.tone];
|
|
248
|
+
return [{
|
|
249
|
+
property: "--pretui-alert-hue",
|
|
250
|
+
value: hue,
|
|
251
|
+
strength: "arg"
|
|
252
|
+
}, {
|
|
253
|
+
property: "--pretui-alert-on-hue",
|
|
254
|
+
value: onHue,
|
|
255
|
+
strength: "arg"
|
|
256
|
+
}];
|
|
257
|
+
}
|
|
258
|
+
get Glyph() {
|
|
259
|
+
return ALERT_ICONS[this.tone];
|
|
260
|
+
}
|
|
261
|
+
get spokenTone() {
|
|
262
|
+
return `${this.args.toneLabel ?? ALERT_TONE_LABELS[this.tone]}:`;
|
|
263
|
+
}
|
|
264
|
+
static {
|
|
265
|
+
setComponentTemplate(templateFactory({
|
|
266
|
+
"id": "q5lRdua1",
|
|
267
|
+
"block": "[[[11,0],[24,0,\"pretui-alert\"],[16,\"role\",[30,0,[\"role\"]]],[16,5,[30,0,[\"hueStyle\"]]],[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\"]]",
|
|
268
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/alert.gts",
|
|
269
|
+
"scope": () => [keepStyle, VisuallyHidden],
|
|
270
|
+
"isStrictMode": true
|
|
271
|
+
}), this);
|
|
272
|
+
}
|
|
273
|
+
};
|
|
274
|
+
//#endregion
|
|
275
|
+
//#region ../pretui/pretui-css.gts
|
|
276
|
+
/**
|
|
277
|
+
* Every character a caller value may contain. Notably absent, and each for a
|
|
278
|
+
* reason a comment should record:
|
|
279
|
+
*
|
|
280
|
+
* `;` `:` would end the declaration and start another one — the whole
|
|
281
|
+
* injection. Callers supply a VALUE, never a declaration.
|
|
282
|
+
* `{` `}` would close the style attribute's implied block context.
|
|
283
|
+
* `<` `>` `</style>` and friends.
|
|
284
|
+
* `"` `'` quoted strings are only needed by `url()` and `content()`,
|
|
285
|
+
* neither of which is allowed.
|
|
286
|
+
* `\` CSS escapes (`\3b` is a semicolon) would defeat every rule above.
|
|
287
|
+
* `@` `!` at-rules and `!important`, both forbidden by kit law anyway.
|
|
288
|
+
*
|
|
289
|
+
* `*` and `/` survive because `calc()` needs them; the comment sequences they
|
|
290
|
+
* can form are rejected separately.
|
|
291
|
+
*/
|
|
292
|
+
var ALLOWED_CHARS = /^[A-Za-z0-9_\-#%.,()+*/ ]+$/;
|
|
293
|
+
/**
|
|
294
|
+
* Functions a caller value may call. Anything not on this list — `url`,
|
|
295
|
+
* `image-set`, `element`, `attr`, `expression`, `-moz-binding` — is rejected
|
|
296
|
+
* outright rather than pattern-matched, so a function invented after this
|
|
297
|
+
* code was written is denied by default.
|
|
298
|
+
*/
|
|
299
|
+
var ALLOWED_FUNCTIONS = new Set([
|
|
300
|
+
"var",
|
|
301
|
+
"env",
|
|
302
|
+
"calc",
|
|
303
|
+
"min",
|
|
304
|
+
"max",
|
|
305
|
+
"clamp",
|
|
306
|
+
"round",
|
|
307
|
+
"abs",
|
|
308
|
+
"rgb",
|
|
309
|
+
"rgba",
|
|
310
|
+
"hsl",
|
|
311
|
+
"hsla",
|
|
312
|
+
"hwb",
|
|
313
|
+
"lab",
|
|
314
|
+
"lch",
|
|
315
|
+
"oklab",
|
|
316
|
+
"oklch",
|
|
317
|
+
"color",
|
|
318
|
+
"color-mix",
|
|
319
|
+
"linear-gradient",
|
|
320
|
+
"radial-gradient",
|
|
321
|
+
"conic-gradient",
|
|
322
|
+
"repeating-linear-gradient",
|
|
323
|
+
"repeating-radial-gradient",
|
|
324
|
+
"repeating-conic-gradient",
|
|
325
|
+
"light-dark",
|
|
326
|
+
"cubic-bezier",
|
|
327
|
+
"steps",
|
|
328
|
+
"linear"
|
|
329
|
+
]);
|
|
330
|
+
/** `#rgb`, `#rgba`, `#rrggbb`, `#rrggbbaa` — nothing else may follow a `#`. */
|
|
331
|
+
var HEX = /^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/;
|
|
332
|
+
/** A `(` must be the tail of a function name, never a bare grouping paren. */
|
|
333
|
+
var CALL = /([A-Za-z][A-Za-z0-9-]*)?\(/g;
|
|
334
|
+
/** Anything starting `#` up to the next separator. */
|
|
335
|
+
var HEXISH = /#[^\s,()]*/g;
|
|
336
|
+
/** Longer than any legitimate color, length or gradient stop list. */ var MAX_VALUE_LENGTH = 4096;
|
|
337
|
+
/** Deeper than `color-mix(in oklch, var(--a, oklch(…)) 40%, var(--b))`. */
|
|
338
|
+
var MAX_DEPTH = 5;
|
|
339
|
+
/**
|
|
340
|
+
* Validate a caller-supplied CSS value against a conservative allowlist.
|
|
341
|
+
*
|
|
342
|
+
* Returns the trimmed value when every character, function call, hex literal
|
|
343
|
+
* and paren in it is understood, and `undefined` otherwise. There is no
|
|
344
|
+
* middle outcome: a value is passed through intact or dropped whole.
|
|
345
|
+
*
|
|
346
|
+
* @param raw anything a caller handed us — typed `unknown` because at a
|
|
347
|
+
* component boundary an `@arg` declared `string` can still arrive as
|
|
348
|
+
* `null`, a number, or an object.
|
|
349
|
+
*/
|
|
350
|
+
function cssValue(raw) {
|
|
351
|
+
if (typeof raw !== "string") return;
|
|
352
|
+
let value = raw.trim();
|
|
353
|
+
if (value.length === 0 || value.length > MAX_VALUE_LENGTH) return;
|
|
354
|
+
if (!ALLOWED_CHARS.test(value)) return;
|
|
355
|
+
if (value.includes("/*") || value.includes("*/")) return;
|
|
356
|
+
let depth = 0;
|
|
357
|
+
for (let i = 0; i < value.length; i++) {
|
|
358
|
+
let ch = value[i];
|
|
359
|
+
if (ch === "(") {
|
|
360
|
+
depth++;
|
|
361
|
+
if (depth > MAX_DEPTH) return;
|
|
362
|
+
} else if (ch === ")") {
|
|
363
|
+
depth--;
|
|
364
|
+
if (depth < 0) return;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
if (depth !== 0) return;
|
|
368
|
+
CALL.lastIndex = 0;
|
|
369
|
+
let call = CALL.exec(value);
|
|
370
|
+
while (call !== null) {
|
|
371
|
+
let name = call[1];
|
|
372
|
+
if (name === void 0 || !ALLOWED_FUNCTIONS.has(name.toLowerCase())) return;
|
|
373
|
+
call = CALL.exec(value);
|
|
374
|
+
}
|
|
375
|
+
HEXISH.lastIndex = 0;
|
|
376
|
+
let hex = HEXISH.exec(value);
|
|
377
|
+
while (hex !== null) {
|
|
378
|
+
if (!HEX.test(hex[0])) return;
|
|
379
|
+
hex = HEXISH.exec(value);
|
|
380
|
+
}
|
|
381
|
+
return value;
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* A property name we are willing to write: a custom property, or a plain
|
|
385
|
+
* lowercase CSS identifier. Callers never supply this — it is an authored
|
|
386
|
+
* literal at every call site — but validating it keeps the contract total.
|
|
387
|
+
*/
|
|
388
|
+
var PROPERTY = /^(?:--[A-Za-z0-9_-]+|[a-z][a-z0-9-]*)$/;
|
|
389
|
+
/**
|
|
390
|
+
* Build one `property: value` declaration from a validated caller value.
|
|
391
|
+
* Returns `undefined` when the value fails `cssValue`, so a rejected value
|
|
392
|
+
* falls through to whatever the stylesheet's own fallback is — the caller
|
|
393
|
+
* loses their override, never the component's rendering.
|
|
394
|
+
*/
|
|
395
|
+
function cssDeclaration(property, raw) {
|
|
396
|
+
let value = cssValue(raw);
|
|
397
|
+
if (value === void 0 || !PROPERTY.test(property)) return;
|
|
398
|
+
return property + ": " + value;
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* Join several declarations — typically a mix of `cssDeclaration` results and
|
|
402
|
+
* authored numeric strings — into one SafeString, dropping the rejected ones.
|
|
403
|
+
* Returns `undefined` when nothing survived, so the attribute is omitted
|
|
404
|
+
* rather than rendered empty.
|
|
405
|
+
*/
|
|
406
|
+
function cssStyleFrom(parts) {
|
|
407
|
+
let kept = parts.filter((p) => typeof p === "string" && p.length > 0);
|
|
408
|
+
return kept.length > 0 ? htmlSafe(kept.join("; ")) : void 0;
|
|
409
|
+
}
|
|
410
|
+
/** Named tiers in the Pretui stacking scale, in painting order. */
|
|
411
|
+
/**
|
|
412
|
+
* The canonical value of every tier. This is the same table as the header
|
|
413
|
+
* comment and as every `var(--pretui-z-*, N)` fallback in the kit; it is
|
|
414
|
+
* exported so a host that must interleave its own chrome can read the tiers
|
|
415
|
+
* rather than copy the numbers.
|
|
416
|
+
*/
|
|
417
|
+
var PRETUI_Z = Object.freeze({
|
|
418
|
+
base: 0,
|
|
419
|
+
raised: 1,
|
|
420
|
+
sticky: 10,
|
|
421
|
+
"sticky-header": 11,
|
|
422
|
+
scrim: 50,
|
|
423
|
+
dropdown: 60,
|
|
424
|
+
overlay: 70,
|
|
425
|
+
tooltip: 80,
|
|
426
|
+
dialog: 90,
|
|
427
|
+
toast: 100
|
|
428
|
+
});
|
|
429
|
+
/** The custom-property name for a tier. */
|
|
430
|
+
function zVarName(layer) {
|
|
431
|
+
return "--pretui-z-" + layer;
|
|
432
|
+
}
|
|
433
|
+
Object.keys(PRETUI_Z).map((layer) => zVarName(layer) + ": " + PRETUI_Z[layer] + ";").join("\n ");
|
|
434
|
+
//#endregion
|
|
435
|
+
//#region ../pretui/internal/ink.gts
|
|
436
|
+
function statusHue(value) {
|
|
437
|
+
let h = 0;
|
|
438
|
+
let s = String(value);
|
|
439
|
+
for (let i = 0; i < s.length; i++) h = h * 31 + s.charCodeAt(i) >>> 0;
|
|
440
|
+
return `var(--chart-${h % 5 + 1})`;
|
|
441
|
+
}
|
|
442
|
+
//#endregion
|
|
443
|
+
//#region ../pretui/components/avatar.gts
|
|
444
|
+
var SIZE_PROPERTY = "--pretui-avatar-size";
|
|
445
|
+
var HUE_PROPERTY = "--pretui-chip-hue";
|
|
446
|
+
var Avatar = class extends Component {
|
|
447
|
+
static {
|
|
448
|
+
decorateFieldV2(this.prototype, "failedSrc", [tracked]);
|
|
449
|
+
}
|
|
450
|
+
#failedSrc = (initializeDeferredDecorator(this, "failedSrc"), void 0);
|
|
451
|
+
get initials() {
|
|
452
|
+
return (this.args.name ?? "").split(/\s+/).map((w) => w[0]).slice(0, 2).join("").toUpperCase();
|
|
453
|
+
}
|
|
454
|
+
get showImage() {
|
|
455
|
+
return Boolean(this.args.src) && this.args.src !== this.failedSrc;
|
|
456
|
+
}
|
|
457
|
+
imageError = () => {
|
|
458
|
+
this.failedSrc = this.args.src;
|
|
459
|
+
};
|
|
460
|
+
get size() {
|
|
461
|
+
let size = Number(this.args.size) || void 0;
|
|
462
|
+
return size === void 0 ? void 0 : `${size / 16}rem`;
|
|
463
|
+
}
|
|
464
|
+
get explicitHue() {
|
|
465
|
+
return this.args.hue ?? void 0;
|
|
466
|
+
}
|
|
467
|
+
get hue() {
|
|
468
|
+
let hue = this.explicitHue;
|
|
469
|
+
return hue === void 0 ? statusHue(this.args.name ?? "") : cssValue(hue);
|
|
470
|
+
}
|
|
471
|
+
get style() {
|
|
472
|
+
return cssStyleFrom([cssDeclaration(SIZE_PROPERTY, this.size), cssDeclaration(HUE_PROPERTY, this.hue)]);
|
|
473
|
+
}
|
|
474
|
+
get keptStyle() {
|
|
475
|
+
return [{
|
|
476
|
+
property: SIZE_PROPERTY,
|
|
477
|
+
value: this.size,
|
|
478
|
+
strength: "arg"
|
|
479
|
+
}, {
|
|
480
|
+
property: HUE_PROPERTY,
|
|
481
|
+
value: this.hue,
|
|
482
|
+
strength: this.explicitHue === void 0 ? "default" : "arg"
|
|
483
|
+
}];
|
|
484
|
+
}
|
|
485
|
+
static {
|
|
486
|
+
setComponentTemplate(templateFactory({
|
|
487
|
+
"id": "oEm71Qh2",
|
|
488
|
+
"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,5,[30,0,[\"style\"]]],[24,\"data-test-pretui-avatar\",\"\"],[17,2],[24,\"data-scopedcss-5178d38d8c-4c5bd031e9\",\"\"],[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-4c5bd031e9\",\"\"],[4,[32,1],[\"error\",[30,0,[\"imageError\"]]],null],[12],[13]],[]],[[[1,[30,0,[\"initials\"]]]],[]]],[1,\"\\n\"],[13],[1,\"\\n\"]],[\"@name\",\"&attrs\",\"@src\"],[\"unless\",\"if\"]]",
|
|
489
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/avatar.gts",
|
|
490
|
+
"scope": () => [keepStyle, on],
|
|
491
|
+
"isStrictMode": true
|
|
492
|
+
}), this);
|
|
493
|
+
}
|
|
494
|
+
};
|
|
495
|
+
//#endregion
|
|
496
|
+
//#region ../pretui/internal/overlay.gts
|
|
497
|
+
var GUTTER = 8;
|
|
498
|
+
/** Every spelling of "is this layer showing". */
|
|
499
|
+
function resolveOpen(args) {
|
|
500
|
+
return firstDefined(args.open, args.isOpen, args.opened);
|
|
501
|
+
}
|
|
502
|
+
var OPPOSITE = {
|
|
503
|
+
top: "bottom",
|
|
504
|
+
bottom: "top",
|
|
505
|
+
left: "right",
|
|
506
|
+
right: "left"
|
|
507
|
+
};
|
|
508
|
+
function positionPopup(a, w, h, placement, distance) {
|
|
509
|
+
let [side, align] = placement.split("-");
|
|
510
|
+
let vw = window.innerWidth;
|
|
511
|
+
let vh = window.innerHeight;
|
|
512
|
+
let space = {
|
|
513
|
+
top: a.top - distance,
|
|
514
|
+
bottom: vh - a.bottom - distance,
|
|
515
|
+
left: a.left - distance,
|
|
516
|
+
right: vw - a.right - distance
|
|
517
|
+
};
|
|
518
|
+
let need = side === "top" || side === "bottom" ? h : w;
|
|
519
|
+
if (space[side] < need && space[OPPOSITE[side]] >= need) side = OPPOSITE[side];
|
|
520
|
+
let top = 0;
|
|
521
|
+
let left = 0;
|
|
522
|
+
if (side === "top") top = a.top - h - distance;
|
|
523
|
+
if (side === "bottom") top = a.bottom + distance;
|
|
524
|
+
if (side === "left") left = a.left - w - distance;
|
|
525
|
+
if (side === "right") left = a.right + distance;
|
|
526
|
+
if (side === "top" || side === "bottom") {
|
|
527
|
+
left = align === "start" ? a.left : align === "end" ? a.right - w : a.left + a.width / 2 - w / 2;
|
|
528
|
+
left = Math.min(Math.max(left, GUTTER), Math.max(vw - w - GUTTER, GUTTER));
|
|
529
|
+
} else {
|
|
530
|
+
top = align === "start" ? a.top : align === "end" ? a.bottom - h : a.top + a.height / 2 - h / 2;
|
|
531
|
+
top = Math.min(Math.max(top, GUTTER), Math.max(vh - h - GUTTER, GUTTER));
|
|
532
|
+
}
|
|
533
|
+
return {
|
|
534
|
+
top,
|
|
535
|
+
left
|
|
536
|
+
};
|
|
537
|
+
}
|
|
538
|
+
modifier((el, [anchor, placement, distance, matchWidth, scale]) => {
|
|
539
|
+
if (!anchor) return;
|
|
540
|
+
let apply = () => {
|
|
541
|
+
if (scale !== void 0 && scale !== 1) {
|
|
542
|
+
let s = Math.min(2.5, Math.max(.4, scale));
|
|
543
|
+
el.style.transformOrigin = "top left";
|
|
544
|
+
el.style.transform = `scale(${s})`;
|
|
545
|
+
}
|
|
546
|
+
if (matchWidth) el.style.minWidth = `${anchor.getBoundingClientRect().width}px`;
|
|
547
|
+
let r = el.getBoundingClientRect();
|
|
548
|
+
let p = positionPopup(anchor.getBoundingClientRect(), r.width, r.height, placement, distance);
|
|
549
|
+
el.style.top = `${p.top}px`;
|
|
550
|
+
el.style.left = `${p.left}px`;
|
|
551
|
+
};
|
|
552
|
+
apply();
|
|
553
|
+
window.addEventListener("scroll", apply, {
|
|
554
|
+
capture: true,
|
|
555
|
+
passive: true
|
|
556
|
+
});
|
|
557
|
+
window.addEventListener("resize", apply);
|
|
558
|
+
return () => {
|
|
559
|
+
window.removeEventListener("scroll", apply, true);
|
|
560
|
+
window.removeEventListener("resize", apply);
|
|
561
|
+
};
|
|
562
|
+
});
|
|
563
|
+
var POPUPS_IN_PLACE = "pretui-popups-in-place";
|
|
564
|
+
var modalBehavior = modifier((el, [open, onCancel, onClick]) => {
|
|
565
|
+
if (open && !el.open) el.showModal();
|
|
566
|
+
else if (!open && el.open) el.close();
|
|
567
|
+
el.addEventListener("cancel", onCancel);
|
|
568
|
+
el.addEventListener("click", onClick);
|
|
569
|
+
return () => {
|
|
570
|
+
el.removeEventListener("cancel", onCancel);
|
|
571
|
+
el.removeEventListener("click", onClick);
|
|
572
|
+
};
|
|
573
|
+
});
|
|
574
|
+
//#endregion
|
|
575
|
+
//#region ../pretui/components/dialog.gts
|
|
576
|
+
var DIALOG_SIZES = {
|
|
577
|
+
xs: "s",
|
|
578
|
+
s: "s",
|
|
579
|
+
m: "m",
|
|
580
|
+
l: "l",
|
|
581
|
+
xl: "l"
|
|
582
|
+
};
|
|
583
|
+
var Dialog = class extends Component {
|
|
584
|
+
get popupsInPlace() {
|
|
585
|
+
return true;
|
|
586
|
+
}
|
|
587
|
+
static {
|
|
588
|
+
decorateMethodV2(this.prototype, "popupsInPlace", [provide(POPUPS_IN_PLACE)]);
|
|
589
|
+
}
|
|
590
|
+
get dismissible() {
|
|
591
|
+
return this.args.dismissible ?? true;
|
|
592
|
+
}
|
|
593
|
+
get open() {
|
|
594
|
+
return resolveOpen(this.args);
|
|
595
|
+
}
|
|
596
|
+
get size() {
|
|
597
|
+
return DIALOG_SIZES[resolveSize(this.args.size)] ?? "m";
|
|
598
|
+
}
|
|
599
|
+
requestClose() {
|
|
600
|
+
emit([this.args.onClose]);
|
|
601
|
+
emit([this.args.onOpenChange], false);
|
|
602
|
+
}
|
|
603
|
+
onCancel = (e) => {
|
|
604
|
+
e.preventDefault();
|
|
605
|
+
if (this.dismissible) this.requestClose();
|
|
606
|
+
};
|
|
607
|
+
onClick = (e) => {
|
|
608
|
+
if (this.dismissible && e.target === e.currentTarget) this.requestClose();
|
|
609
|
+
};
|
|
610
|
+
static {
|
|
611
|
+
setComponentTemplate(templateFactory({
|
|
612
|
+
"id": "Xsw334hr",
|
|
613
|
+
"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\"]]",
|
|
614
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/dialog.gts",
|
|
615
|
+
"scope": () => [modalBehavior],
|
|
616
|
+
"isStrictMode": true
|
|
617
|
+
}), this);
|
|
618
|
+
}
|
|
619
|
+
};
|
|
620
|
+
var IconButton = class extends Component {
|
|
621
|
+
get tone() {
|
|
622
|
+
return this.args.tone ?? (this.args.variant ? void 0 : "neutral");
|
|
623
|
+
}
|
|
624
|
+
get appearance() {
|
|
625
|
+
return this.args.appearance ?? (this.args.variant ? void 0 : "outlined");
|
|
626
|
+
}
|
|
627
|
+
get disabled() {
|
|
628
|
+
return resolveDisabled(this.args);
|
|
629
|
+
}
|
|
630
|
+
get busy() {
|
|
631
|
+
return resolveBusy(this.args);
|
|
632
|
+
}
|
|
633
|
+
get accessibleName() {
|
|
634
|
+
let { label, busyLabel, href } = this.args;
|
|
635
|
+
return this.busy && busyLabel && !href ? `${label} ${busyLabel}` : label;
|
|
636
|
+
}
|
|
637
|
+
get ariaPressed() {
|
|
638
|
+
let { pressed, href } = this.args;
|
|
639
|
+
return pressed === void 0 || href ? void 0 : String(pressed);
|
|
640
|
+
}
|
|
641
|
+
get iconWidth() {
|
|
642
|
+
return this.args.iconWidth ?? "1.25em";
|
|
643
|
+
}
|
|
644
|
+
get iconHeight() {
|
|
645
|
+
return this.args.iconHeight ?? "1.25em";
|
|
646
|
+
}
|
|
647
|
+
static {
|
|
648
|
+
setComponentTemplate(templateFactory({
|
|
649
|
+
"id": "IxfYqbEv",
|
|
650
|
+
"block": "[[[8,[32,0],[[24,0,\"pretui-iconbtn\"],[16,\"aria-label\",[30,0,[\"accessibleName\"]]],[16,\"aria-pressed\",[30,0,[\"ariaPressed\"]]],[16,\"title\",[30,1]],[24,\"data-test-pretui-icon-button\",\"\"],[17,2],[24,\"data-scopedcss-bcde96c7a5-2e8d552068\",\"\"]],[[\"@variant\",\"@tone\",\"@appearance\",\"@size\",\"@disabled\",\"@shape\",\"@href\",\"@busy\",\"@busyLabel\"],[[30,3],[30,0,[\"tone\"]],[30,0,[\"appearance\"]],[30,4],[30,0,[\"disabled\"]],[30,5],[30,6],[30,0,[\"busy\"]],[30,7]]],[[\"default\"],[[[[1,\"\\n\"],[1,\" \"],[10,1],[14,0,\"pretui-iconbtn-glyph\"],[14,\"aria-hidden\",\"true\"],[14,\"data-test-pretui-icon-button-glyph\",\"\"],[14,\"data-scopedcss-bcde96c7a5-2e8d552068\",\"\"],[12],[1,\"\\n\"],[41,[30,8],[[[1,\" \"],[8,[30,8],[[16,\"width\",[30,0,[\"iconWidth\"]]],[16,\"height\",[30,0,[\"iconHeight\"]]],[24,\"data-scopedcss-bcde96c7a5-2e8d552068\",\"\"]],null,null],[1,\"\\n\"]],[]],null],[1,\" \"],[18,9,null],[1,\"\\n \"],[13],[1,\"\\n\"]],[]]]]],[1,\"\\n\"]],[\"@label\",\"&attrs\",\"@variant\",\"@size\",\"@shape\",\"@href\",\"@busyLabel\",\"@icon\",\"&default\"],[\"if\",\"yield\"]]",
|
|
651
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/icon-button.gts",
|
|
652
|
+
"scope": () => [Button],
|
|
653
|
+
"isStrictMode": true
|
|
654
|
+
}), this);
|
|
655
|
+
}
|
|
656
|
+
};
|
|
657
|
+
//#endregion
|
|
658
|
+
//#region ../pretui/components/item.gts
|
|
659
|
+
var Item = class extends Component {
|
|
660
|
+
get size() {
|
|
661
|
+
return resolveSize(this.args.size);
|
|
662
|
+
}
|
|
663
|
+
get align() {
|
|
664
|
+
return this.args.alignStart ? "start" : "center";
|
|
665
|
+
}
|
|
666
|
+
static {
|
|
667
|
+
setComponentTemplate(templateFactory({
|
|
668
|
+
"id": "OY0L27eq",
|
|
669
|
+
"block": "[[[11,0],[24,0,\"pretui-item\"],[24,\"data-test-pretui-item\",\"\"],[16,\"data-size\",[30,0,[\"size\"]]],[16,\"data-align\",[30,0,[\"align\"]]],[17,1],[24,\"data-scopedcss-8d0ffb3c65-39abb89535\",\"\"],[12],[1,\"\\n\"],[41,[48,[30,5]],[[[1,\" \"],[10,0],[14,0,\"pretui-item-lead\"],[14,\"data-scopedcss-8d0ffb3c65-39abb89535\",\"\"],[12],[18,5,null],[13],[1,\"\\n\"]],[]],null],[1,\"\\n \"],[10,0],[14,0,\"pretui-item-body\"],[14,\"data-scopedcss-8d0ffb3c65-39abb89535\",\"\"],[12],[1,\"\\n\"],[41,[48,[30,6]],[[[1,\" \"],[10,1],[14,0,\"pretui-item-title\"],[14,\"data-scopedcss-8d0ffb3c65-39abb89535\",\"\"],[12],[18,6,null],[13],[1,\"\\n\"]],[]],[[[41,[30,2],[[[41,[30,3],[[[1,\" \"],[10,3],[14,0,\"pretui-item-title pretui-item-link\"],[15,6,[30,3]],[14,\"data-scopedcss-8d0ffb3c65-39abb89535\",\"\"],[12],[1,[30,2]],[13],[1,\"\\n\"]],[]],[[[1,\" \"],[10,1],[14,0,\"pretui-item-title\"],[14,\"data-scopedcss-8d0ffb3c65-39abb89535\",\"\"],[12],[1,[30,2]],[13],[1,\"\\n\"]],[]]],[1,\" \"]],[]],null]],[]]],[1,\"\\n\"],[41,[48,[30,7]],[[[1,\" \"],[10,1],[14,0,\"pretui-item-desc\"],[14,\"data-scopedcss-8d0ffb3c65-39abb89535\",\"\"],[12],[18,7,null],[13],[1,\"\\n\"]],[]],[[[41,[30,4],[[[1,\" \"],[10,1],[14,0,\"pretui-item-desc\"],[14,\"data-scopedcss-8d0ffb3c65-39abb89535\",\"\"],[12],[1,[30,4]],[13],[1,\"\\n \"]],[]],null]],[]]],[1,\"\\n\"],[41,[48,[30,8]],[[[1,\" \"],[10,0],[14,0,\"pretui-item-content\"],[14,\"data-scopedcss-8d0ffb3c65-39abb89535\",\"\"],[12],[18,8,null],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n\\n\"],[41,[48,[30,9]],[[[1,\" \"],[10,0],[14,0,\"pretui-item-trail\"],[14,\"data-scopedcss-8d0ffb3c65-39abb89535\",\"\"],[12],[18,9,null],[13],[1,\"\\n\"]],[]],null],[41,[48,[30,10]],[[[1,\" \"],[10,0],[14,0,\"pretui-item-actions\"],[14,\"data-scopedcss-8d0ffb3c65-39abb89535\",\"\"],[12],[18,10,null],[13],[1,\"\\n\"]],[]],null],[13],[1,\"\\n\"]],[\"&attrs\",\"@title\",\"@href\",\"@description\",\"&leading\",\"&title\",\"&description\",\"&default\",\"&trailing\",\"&actions\"],[\"if\",\"has-block\",\"yield\"]]",
|
|
670
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/item.gts",
|
|
671
|
+
"isStrictMode": true
|
|
672
|
+
}), this);
|
|
673
|
+
}
|
|
674
|
+
};
|
|
675
|
+
//#endregion
|
|
676
|
+
//#region ../pretui/components/broken-link.gts
|
|
677
|
+
var BrokenLink = class extends Component {
|
|
678
|
+
get label() {
|
|
679
|
+
return this.args.label ?? "missing card";
|
|
680
|
+
}
|
|
681
|
+
static {
|
|
682
|
+
setComponentTemplate(templateFactory({
|
|
683
|
+
"id": "ANxE2OLx",
|
|
684
|
+
"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\"]]",
|
|
685
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/broken-link.gts",
|
|
686
|
+
"isStrictMode": true
|
|
687
|
+
}), this);
|
|
688
|
+
}
|
|
689
|
+
};
|
|
690
|
+
//#endregion
|
|
691
|
+
//#region ../pretui/components/empty-state.gts
|
|
692
|
+
var EMPTY_STATE_SIZES = {
|
|
693
|
+
xs: "s",
|
|
694
|
+
s: "s",
|
|
695
|
+
m: "m",
|
|
696
|
+
l: "m",
|
|
697
|
+
xl: "m"
|
|
698
|
+
};
|
|
699
|
+
var EmptyState = class extends Component {
|
|
700
|
+
get showTexture() {
|
|
701
|
+
return this.args.texture ?? true;
|
|
702
|
+
}
|
|
703
|
+
get separator() {
|
|
704
|
+
return this.args.separator ?? "or";
|
|
705
|
+
}
|
|
706
|
+
get size() {
|
|
707
|
+
return EMPTY_STATE_SIZES[resolveSize(this.args.size)] ?? "m";
|
|
708
|
+
}
|
|
709
|
+
static {
|
|
710
|
+
setComponentTemplate(templateFactory({
|
|
711
|
+
"id": "yJcwZ0yC",
|
|
712
|
+
"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\"]]",
|
|
713
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/empty-state.gts",
|
|
714
|
+
"isStrictMode": true
|
|
715
|
+
}), this);
|
|
716
|
+
}
|
|
717
|
+
};
|
|
718
|
+
//#endregion
|
|
719
|
+
//#region ../pretui/components/skeleton.gts
|
|
720
|
+
var Skeleton = class extends Component {
|
|
721
|
+
get style() {
|
|
722
|
+
return cssStyleFrom([cssDeclaration("--_w", this.args.width ?? "100%"), cssDeclaration("--_h", this.args.height ?? "12px")]);
|
|
723
|
+
}
|
|
724
|
+
static {
|
|
725
|
+
setComponentTemplate(templateFactory({
|
|
726
|
+
"id": "6lgKSRT5",
|
|
727
|
+
"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\"],[]]",
|
|
728
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/skeleton.gts",
|
|
729
|
+
"isStrictMode": true
|
|
730
|
+
}), this);
|
|
731
|
+
}
|
|
732
|
+
};
|
|
733
|
+
//#endregion
|
|
734
|
+
//#region ../pretui/data-component.gts
|
|
735
|
+
/** What a row is keyed by. Strings and numbers only — a key is compared with
|
|
736
|
+
* `===` and must survive being written into a `data-` attribute. */
|
|
737
|
+
/** Caller-supplied key accessor: stable identity for one row. */
|
|
738
|
+
/** The dataset loader. Deliberately knows nothing about HTTP: it is any
|
|
739
|
+
* function returning a promise of rows. */
|
|
740
|
+
/** How many rows may be selected at once. */
|
|
741
|
+
/** Sort direction. */
|
|
742
|
+
/** The current sort: a column key plus a direction. `null` means unsorted,
|
|
743
|
+
* which is a third state the asc/desc cycle passes through. */
|
|
744
|
+
/**
|
|
745
|
+
* THE documented key fallback, shared by every collection in the kit.
|
|
746
|
+
*
|
|
747
|
+
* 1. `@key` accessor if the caller supplied one — always prefer this.
|
|
748
|
+
* 2. otherwise the row's own `id` when it is a string or number (the shape
|
|
749
|
+
* Boxel cards, `FeedItem` and every fixture in examples.gts already have);
|
|
750
|
+
* 3. otherwise the row's 0-based index.
|
|
751
|
+
*
|
|
752
|
+
* Branch 3 is a real, documented compromise, not a silent one: an
|
|
753
|
+
* index-keyed row's identity MOVES when the collection is re-sorted or
|
|
754
|
+
* spliced, so selection and the active row follow the position rather than
|
|
755
|
+
* the record. Any collection whose rows can be re-ordered should pass `@key`.
|
|
756
|
+
*/
|
|
757
|
+
function defaultRowKey(row, index) {
|
|
758
|
+
if (row && typeof row === "object") {
|
|
759
|
+
let id = row["id"];
|
|
760
|
+
if (typeof id === "string" || typeof id === "number") return id;
|
|
761
|
+
}
|
|
762
|
+
return index;
|
|
763
|
+
}
|
|
764
|
+
/** Reads one field off a row for the default comparator. Rows are generic,
|
|
765
|
+
* so the read is an explicit widening rather than an `any`. */
|
|
766
|
+
function readField(row, key) {
|
|
767
|
+
return row && typeof row === "object" ? row[key] : void 0;
|
|
768
|
+
}
|
|
769
|
+
/** Total order over unknown values: numbers numerically, everything else by
|
|
770
|
+
* locale-free string compare, with null/undefined last in either direction.
|
|
771
|
+
* Anything richer (dates as objects, money, nested paths) wants `@comparator`. */
|
|
772
|
+
function compareValues(a, b) {
|
|
773
|
+
let aMissing = a === void 0 || a === null;
|
|
774
|
+
let bMissing = b === void 0 || b === null;
|
|
775
|
+
if (aMissing || bMissing) return aMissing && bMissing ? 0 : aMissing ? 1 : -1;
|
|
776
|
+
if (typeof a === "number" && typeof b === "number") return a - b;
|
|
777
|
+
if (typeof a === "boolean" && typeof b === "boolean") return Number(a) - Number(b);
|
|
778
|
+
let as = String(a);
|
|
779
|
+
let bs = String(b);
|
|
780
|
+
return as < bs ? -1 : as > bs ? 1 : 0;
|
|
781
|
+
}
|
|
782
|
+
/** Everything is an Error by the time it reaches tracked state — a thrown
|
|
783
|
+
* string, a rejected `{ message }`, or a genuine Error. Never swallowed. */
|
|
784
|
+
function toError(thrown) {
|
|
785
|
+
if (thrown instanceof Error) return thrown;
|
|
786
|
+
if (typeof thrown === "string") return new Error(thrown);
|
|
787
|
+
let message = readField(thrown, "message");
|
|
788
|
+
return new Error(typeof message === "string" ? message : "Load failed");
|
|
789
|
+
}
|
|
790
|
+
/** Re-runs `beginLoad()` whenever the loader, its key, or the reload epoch
|
|
791
|
+
* changes. Exported so a subclass that writes its own `<template>` (and
|
|
792
|
+
* therefore does not render `<DataShell>`) can still wire the loader. */
|
|
793
|
+
var dataLoad = modifier((_el, [state, _load, _key, _epoch]) => {
|
|
794
|
+
state.beginLoad();
|
|
795
|
+
});
|
|
796
|
+
/**
|
|
797
|
+
* The narrow, non-generic slice of a data component that the shared chrome
|
|
798
|
+
* needs. `DataComponent` implements it; a component that cannot extend
|
|
799
|
+
* `DataComponent` (because it already extends something else) can implement
|
|
800
|
+
* this instead and still wear the same chrome.
|
|
801
|
+
*/
|
|
802
|
+
/**
|
|
803
|
+
* The small amount of shared chrome that goes with the base class: the
|
|
804
|
+
* `aria-busy` root, the polite live region, and the four state slots. It is a
|
|
805
|
+
* separate component precisely so a subclass that writes its own
|
|
806
|
+
* `<template>` keeps every accessibility guarantee without copying it.
|
|
807
|
+
*/
|
|
808
|
+
var DataShell = class extends Component {
|
|
809
|
+
get isLoading() {
|
|
810
|
+
return this.args.state.status === "loading";
|
|
811
|
+
}
|
|
812
|
+
get isError() {
|
|
813
|
+
return this.args.state.status === "error";
|
|
814
|
+
}
|
|
815
|
+
get isEmpty() {
|
|
816
|
+
return this.args.state.status === "empty";
|
|
817
|
+
}
|
|
818
|
+
get skeletonRows() {
|
|
819
|
+
let n = Math.max(1, Math.floor(this.args.skeletonRows ?? 3));
|
|
820
|
+
let out = [];
|
|
821
|
+
for (let i = 0; i < n; i++) out.push(i);
|
|
822
|
+
return out;
|
|
823
|
+
}
|
|
824
|
+
get loadingLabel() {
|
|
825
|
+
return this.args.loadingLabel ?? "Loading";
|
|
826
|
+
}
|
|
827
|
+
get emptyTitle() {
|
|
828
|
+
return this.args.emptyTitle ?? "Nothing to show yet";
|
|
829
|
+
}
|
|
830
|
+
get emptyMessage() {
|
|
831
|
+
return this.args.emptyMessage ?? "No records match this view. Adjust the filters, or check back once the desk has logged something.";
|
|
832
|
+
}
|
|
833
|
+
get errorTitle() {
|
|
834
|
+
return this.args.errorTitle ?? "Could not load";
|
|
835
|
+
}
|
|
836
|
+
retry = () => {
|
|
837
|
+
this.args.state.reload();
|
|
838
|
+
};
|
|
839
|
+
static {
|
|
840
|
+
setComponentTemplate(templateFactory({
|
|
841
|
+
"id": "MNDOTS8w",
|
|
842
|
+
"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\"]]",
|
|
843
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/data-component.gts",
|
|
844
|
+
"scope": () => [
|
|
845
|
+
dataLoad,
|
|
846
|
+
Spinner,
|
|
847
|
+
Skeleton,
|
|
848
|
+
Alert,
|
|
849
|
+
BrokenLink,
|
|
850
|
+
Button,
|
|
851
|
+
on,
|
|
852
|
+
EmptyState
|
|
853
|
+
],
|
|
854
|
+
"isStrictMode": true
|
|
855
|
+
}), this);
|
|
856
|
+
}
|
|
857
|
+
};
|
|
858
|
+
/**
|
|
859
|
+
* Everything a data component accepts. Subclasses widen this through the
|
|
860
|
+
* `Extra` type parameter rather than re-declaring it.
|
|
861
|
+
*/
|
|
862
|
+
/** The interaction surface yielded to the default block alongside the rows.
|
|
863
|
+
* Everything here is safe to call from a template. */
|
|
864
|
+
/** The expanded-rows args DataTable and List share. */
|
|
865
|
+
/** One row's expansion, everything its expander and detail need. */
|
|
866
|
+
/**
|
|
867
|
+
* Which rows are expanded, by key, and the ARIA wiring for each row's
|
|
868
|
+
* expander. Controlled when `@expandedKeys` is passed (the host never moves
|
|
869
|
+
* itself, it only reports), uncontrolled otherwise, seeded from
|
|
870
|
+
* `@defaultExpandedKeys`. Takes a thunk for the same reason DataSource does:
|
|
871
|
+
* every read goes through the live args. DataTable and List both use it, so
|
|
872
|
+
* the state rule and the ARIA contract cannot drift between them.
|
|
873
|
+
*/
|
|
874
|
+
var ExpansionState = class {
|
|
875
|
+
constructor(readArgs, idPrefix) {
|
|
876
|
+
this.readArgs = readArgs;
|
|
877
|
+
this.idPrefix = idPrefix;
|
|
878
|
+
}
|
|
879
|
+
static {
|
|
880
|
+
decorateFieldV2(this.prototype, "internal", [tracked], function() {});
|
|
881
|
+
}
|
|
882
|
+
#internal = (initializeDeferredDecorator(this, "internal"), void 0);
|
|
883
|
+
get keys() {
|
|
884
|
+
let a = this.readArgs();
|
|
885
|
+
if (a.expandedKeys !== void 0) return a.expandedKeys;
|
|
886
|
+
return this.internal ?? a.defaultExpandedKeys ?? [];
|
|
887
|
+
}
|
|
888
|
+
/** A Set keeps 1 and '1' distinct, as `includes` does. */
|
|
889
|
+
get keySet() {
|
|
890
|
+
return new Set(this.keys);
|
|
891
|
+
}
|
|
892
|
+
static {
|
|
893
|
+
decorateMethodV2(this.prototype, "keySet", [cached]);
|
|
894
|
+
}
|
|
895
|
+
isExpanded = (key) => this.keySet.has(key);
|
|
896
|
+
/** The detail id is built from the row's position: a key can hold
|
|
897
|
+
* spaces, and 1 and '1' are distinct keys. */
|
|
898
|
+
viewFor(key, index, label) {
|
|
899
|
+
let expanded = this.isExpanded(key);
|
|
900
|
+
let detailId = this.idPrefix + "-d-" + String(index);
|
|
901
|
+
return {
|
|
902
|
+
expanded,
|
|
903
|
+
expandedFlag: expanded ? "true" : "false",
|
|
904
|
+
detailId,
|
|
905
|
+
controls: expanded ? detailId : void 0,
|
|
906
|
+
expandLabel: (expanded ? "Collapse " : "Expand ") + label
|
|
907
|
+
};
|
|
908
|
+
}
|
|
909
|
+
toggle = (key) => {
|
|
910
|
+
let current = this.keys;
|
|
911
|
+
let next = current.includes(key) ? current.filter((k) => k !== key) : [...current, key];
|
|
912
|
+
let a = this.readArgs();
|
|
913
|
+
if (a.expandedKeys === void 0) this.internal = next;
|
|
914
|
+
a.onExpandedChange?.([...next]);
|
|
915
|
+
};
|
|
916
|
+
};
|
|
917
|
+
/**
|
|
918
|
+
* THE state machine, as a plain class rather than a component.
|
|
919
|
+
*
|
|
920
|
+
* It is separate from `DataComponent` for a reason that is worth stating,
|
|
921
|
+
* because it is the difference between a base class that only serves its own
|
|
922
|
+
* demo and one the whole kit can use. Glint infers a component's row type
|
|
923
|
+
* from its `Args` type — and inference dies the moment `Args` is anything
|
|
924
|
+
* but a bare `DataArgs<T>`: an intersection with an `Extra` type parameter
|
|
925
|
+
* (`DataArgs<T> & Extra`) makes every caller's `T` collapse to `{}`. So a
|
|
926
|
+
* base class cannot both infer `T` and let subclasses add their own args.
|
|
927
|
+
*
|
|
928
|
+
* Inheritance therefore covers the plain case, and DELEGATION covers the
|
|
929
|
+
* rest: a component with its own signature — `@columns`, `@series`, extra
|
|
930
|
+
* blocks, a different Element — holds a DataSource, points `<DataShell>` at
|
|
931
|
+
* it, and gets the identical state machine:
|
|
932
|
+
*
|
|
933
|
+
* class KitTable<T> extends Component<KitTableSignature<T>> {
|
|
934
|
+
* data = new DataSource<T>(() => this.args);
|
|
935
|
+
* <template><DataShell @state={{this.data}}> … </DataShell></template>
|
|
936
|
+
* }
|
|
937
|
+
*
|
|
938
|
+
* The constructor takes a THUNK, not the args object, so every read goes
|
|
939
|
+
* through the live `this.args` and autotracking stays intact.
|
|
940
|
+
*/
|
|
941
|
+
var DataSource = class {
|
|
942
|
+
constructor(readArgs) {
|
|
943
|
+
this.readArgs = readArgs;
|
|
944
|
+
}
|
|
945
|
+
/** the host's current args — read through the thunk on every access so
|
|
946
|
+
* tracked argument changes are observed normally */
|
|
947
|
+
get a() {
|
|
948
|
+
return this.readArgs();
|
|
949
|
+
}
|
|
950
|
+
static {
|
|
951
|
+
decorateFieldV2(this.prototype, "loadedRows", [tracked], function() {
|
|
952
|
+
return [];
|
|
953
|
+
});
|
|
954
|
+
}
|
|
955
|
+
#loadedRows = (initializeDeferredDecorator(this, "loadedRows"), void 0);
|
|
956
|
+
static {
|
|
957
|
+
decorateFieldV2(this.prototype, "inFlight", [tracked], function() {
|
|
958
|
+
return false;
|
|
959
|
+
});
|
|
960
|
+
}
|
|
961
|
+
#inFlight = (initializeDeferredDecorator(this, "inFlight"), void 0);
|
|
962
|
+
static {
|
|
963
|
+
decorateFieldV2(this.prototype, "settled", [tracked], function() {
|
|
964
|
+
return false;
|
|
965
|
+
});
|
|
966
|
+
}
|
|
967
|
+
#settled = (initializeDeferredDecorator(this, "settled"), void 0);
|
|
968
|
+
static {
|
|
969
|
+
decorateFieldV2(this.prototype, "failure", [tracked], function() {});
|
|
970
|
+
}
|
|
971
|
+
#failure = (initializeDeferredDecorator(this, "failure"), void 0);
|
|
972
|
+
static {
|
|
973
|
+
decorateFieldV2(this.prototype, "epoch", [tracked], function() {
|
|
974
|
+
return 0;
|
|
975
|
+
});
|
|
976
|
+
}
|
|
977
|
+
#epoch = (initializeDeferredDecorator(this, "epoch"), void 0);
|
|
978
|
+
requestToken = 0;
|
|
979
|
+
static {
|
|
980
|
+
decorateFieldV2(this.prototype, "internalSelected", [tracked], function() {});
|
|
981
|
+
}
|
|
982
|
+
#internalSelected = (initializeDeferredDecorator(this, "internalSelected"), void 0);
|
|
983
|
+
static {
|
|
984
|
+
decorateFieldV2(this.prototype, "internalActive", [tracked], function() {});
|
|
985
|
+
}
|
|
986
|
+
#internalActive = (initializeDeferredDecorator(this, "internalActive"), void 0);
|
|
987
|
+
static {
|
|
988
|
+
decorateFieldV2(this.prototype, "internalSort", [tracked], function() {});
|
|
989
|
+
}
|
|
990
|
+
#internalSort = (initializeDeferredDecorator(this, "internalSort"), void 0);
|
|
991
|
+
get loadFn() {
|
|
992
|
+
return this.a.load;
|
|
993
|
+
}
|
|
994
|
+
get loadKey() {
|
|
995
|
+
return this.a.loadKey;
|
|
996
|
+
}
|
|
997
|
+
get loadRef() {
|
|
998
|
+
let key = this.a.loadKey;
|
|
999
|
+
return typeof key === "string" || typeof key === "number" ? String(key) : void 0;
|
|
1000
|
+
}
|
|
1001
|
+
get canRetry() {
|
|
1002
|
+
return this.a.load !== void 0 && this.a.rows === void 0;
|
|
1003
|
+
}
|
|
1004
|
+
/**
|
|
1005
|
+
* Called by the `dataLoad` modifier on insert and on every change to
|
|
1006
|
+
* `@load` / `@loadKey` / `epoch`. Writes NO tracked state synchronously —
|
|
1007
|
+
* the modifier runs inside the render transaction, and a tracked write
|
|
1008
|
+
* there is the backtracking-rerender assertion.
|
|
1009
|
+
*/
|
|
1010
|
+
beginLoad = () => {
|
|
1011
|
+
let load = this.a.load;
|
|
1012
|
+
let token = ++this.requestToken;
|
|
1013
|
+
if (!load || this.a.rows !== void 0) return;
|
|
1014
|
+
this.runLoad(load, token);
|
|
1015
|
+
};
|
|
1016
|
+
/** Discards whatever is in flight and loads again. */
|
|
1017
|
+
reload = () => {
|
|
1018
|
+
this.epoch = this.epoch + 1;
|
|
1019
|
+
};
|
|
1020
|
+
async runLoad(load, token) {
|
|
1021
|
+
await Promise.resolve();
|
|
1022
|
+
if (token !== this.requestToken) return;
|
|
1023
|
+
this.inFlight = true;
|
|
1024
|
+
this.failure = void 0;
|
|
1025
|
+
try {
|
|
1026
|
+
let rows = await load();
|
|
1027
|
+
if (token !== this.requestToken) return;
|
|
1028
|
+
this.loadedRows = rows ?? [];
|
|
1029
|
+
this.failure = void 0;
|
|
1030
|
+
} catch (thrown) {
|
|
1031
|
+
if (token !== this.requestToken) return;
|
|
1032
|
+
this.failure = toError(thrown);
|
|
1033
|
+
} finally {
|
|
1034
|
+
if (token === this.requestToken) {
|
|
1035
|
+
this.inFlight = false;
|
|
1036
|
+
this.settled = true;
|
|
1037
|
+
}
|
|
1038
|
+
}
|
|
1039
|
+
}
|
|
1040
|
+
/**
|
|
1041
|
+
* The single readable state. DERIVED — nothing assigns it:
|
|
1042
|
+
* error a captured failure outranks everything, so a stale row set can
|
|
1043
|
+
* never read as success;
|
|
1044
|
+
* loading a request is in flight, OR one is about to start and has never
|
|
1045
|
+
* settled (which is what closes the empty-flash on first paint);
|
|
1046
|
+
* ready settled with rows;
|
|
1047
|
+
* empty settled with none — only ever reachable when nothing is
|
|
1048
|
+
* loading, which is the bug this ordering exists to prevent;
|
|
1049
|
+
* idle no rows and no loader: nobody has asked for anything.
|
|
1050
|
+
*/
|
|
1051
|
+
get status() {
|
|
1052
|
+
if (this.a.rows !== void 0) return this.a.rows.length > 0 ? "ready" : "empty";
|
|
1053
|
+
if (this.failure) return "error";
|
|
1054
|
+
if (this.inFlight) return "loading";
|
|
1055
|
+
if (this.a.load === void 0) return "idle";
|
|
1056
|
+
if (!this.settled) return "loading";
|
|
1057
|
+
return this.loadedRows.length > 0 ? "ready" : "empty";
|
|
1058
|
+
}
|
|
1059
|
+
get busy() {
|
|
1060
|
+
return this.status === "loading" ? "true" : "false";
|
|
1061
|
+
}
|
|
1062
|
+
get errorMessage() {
|
|
1063
|
+
return this.a.rows === void 0 && this.failure ? this.failure.message : "";
|
|
1064
|
+
}
|
|
1065
|
+
/** The rows as given: `@rows` when eager, the loaded set otherwise. */
|
|
1066
|
+
get rows() {
|
|
1067
|
+
return this.a.rows ?? this.loadedRows;
|
|
1068
|
+
}
|
|
1069
|
+
/** The rows as rendered: sorted when a sort is active. Never mutates the
|
|
1070
|
+
* caller's array. */
|
|
1071
|
+
get visibleRows() {
|
|
1072
|
+
let rows = this.rows;
|
|
1073
|
+
let sort = this.sort;
|
|
1074
|
+
if (!sort) return rows.slice();
|
|
1075
|
+
let dir = sort.dir === "desc" ? -1 : 1;
|
|
1076
|
+
let active = sort;
|
|
1077
|
+
return rows.slice().sort((a, b) => this.compare(a, b, active, dir));
|
|
1078
|
+
}
|
|
1079
|
+
get count() {
|
|
1080
|
+
return this.visibleRows.length;
|
|
1081
|
+
}
|
|
1082
|
+
/**
|
|
1083
|
+
* The polite announcement. Derived ONLY from settled state, which is how
|
|
1084
|
+
* "do not announce on every keystroke" is enforced structurally rather than
|
|
1085
|
+
* by remembering to: while a request is in flight the text is empty, so a
|
|
1086
|
+
* caller-driven filter that re-queries announces once when the new results
|
|
1087
|
+
* land, not once per key. Identical text is not re-announced by assistive
|
|
1088
|
+
* technology, so re-sorting the same 6 rows stays silent too.
|
|
1089
|
+
*/
|
|
1090
|
+
get announcement() {
|
|
1091
|
+
if (this.a.silentCount) return "";
|
|
1092
|
+
let noun = this.a.itemNoun ?? "result";
|
|
1093
|
+
switch (this.status) {
|
|
1094
|
+
case "ready": {
|
|
1095
|
+
let n = this.count;
|
|
1096
|
+
return `${n} ${n === 1 ? noun : `${noun}s`}`;
|
|
1097
|
+
}
|
|
1098
|
+
case "empty": return `No ${noun}s`;
|
|
1099
|
+
case "error": return `Could not load: ${this.errorMessage}`;
|
|
1100
|
+
default: return "";
|
|
1101
|
+
}
|
|
1102
|
+
}
|
|
1103
|
+
keyFor = (row, index) => this.a.key ? this.a.key(row, index) : defaultRowKey(row, index);
|
|
1104
|
+
rowsForKeys(keys) {
|
|
1105
|
+
let wanted = new Set(keys);
|
|
1106
|
+
return this.visibleRows.filter((row, i) => wanted.has(this.keyFor(row, i)));
|
|
1107
|
+
}
|
|
1108
|
+
get selectionMode() {
|
|
1109
|
+
return this.a.selectionMode ?? "none";
|
|
1110
|
+
}
|
|
1111
|
+
get selectedKeys() {
|
|
1112
|
+
if (this.a.selected !== void 0) return this.a.selected;
|
|
1113
|
+
return this.internalSelected ?? this.a.defaultSelected ?? [];
|
|
1114
|
+
}
|
|
1115
|
+
get selectedRows() {
|
|
1116
|
+
return this.rowsForKeys(this.selectedKeys);
|
|
1117
|
+
}
|
|
1118
|
+
/** Every row the reader can see is selected; keys for rows outside the
|
|
1119
|
+
* current view do not count either way. */
|
|
1120
|
+
get allSelected() {
|
|
1121
|
+
let visible = this.visibleRows;
|
|
1122
|
+
if (visible.length === 0) return false;
|
|
1123
|
+
let selected = new Set(this.selectedKeys);
|
|
1124
|
+
return visible.every((row, index) => selected.has(this.keyFor(row, index)));
|
|
1125
|
+
}
|
|
1126
|
+
isSelected = (row, index) => this.selectedKeys.includes(this.keyFor(row, index));
|
|
1127
|
+
toggleSelected = (row, index) => {
|
|
1128
|
+
let mode = this.selectionMode;
|
|
1129
|
+
if (mode === "none") return;
|
|
1130
|
+
let key = this.keyFor(row, index);
|
|
1131
|
+
let current = this.selectedKeys;
|
|
1132
|
+
let next;
|
|
1133
|
+
if (mode === "single") next = current.length === 1 && current[0] === key ? [] : [key];
|
|
1134
|
+
else next = current.includes(key) ? current.filter((k) => k !== key) : [...current, key];
|
|
1135
|
+
this.commitSelection(next);
|
|
1136
|
+
};
|
|
1137
|
+
selectAll = () => {
|
|
1138
|
+
if (this.selectionMode !== "multi") return;
|
|
1139
|
+
let visible = this.visibleRows.map((r, i) => this.keyFor(r, i));
|
|
1140
|
+
let shown = new Set(visible);
|
|
1141
|
+
let kept = this.selectedKeys.filter((key) => !shown.has(key));
|
|
1142
|
+
this.commitSelection(this.allSelected ? kept : [...kept, ...visible]);
|
|
1143
|
+
};
|
|
1144
|
+
clearSelection = () => {
|
|
1145
|
+
this.commitSelection([]);
|
|
1146
|
+
};
|
|
1147
|
+
commitSelection(next) {
|
|
1148
|
+
if (this.a.selected === void 0) this.internalSelected = next;
|
|
1149
|
+
this.a.onSelectionChange?.(next, this.rowsForKeys(next));
|
|
1150
|
+
}
|
|
1151
|
+
get activeKey() {
|
|
1152
|
+
if (this.a.activeKey !== void 0) return this.a.activeKey;
|
|
1153
|
+
return this.internalActive !== void 0 ? this.internalActive : this.a.defaultActiveKey ?? null;
|
|
1154
|
+
}
|
|
1155
|
+
isActive = (row, index) => this.activeKey !== null && this.activeKey === this.keyFor(row, index);
|
|
1156
|
+
setActive = (row, index) => {
|
|
1157
|
+
let next = row === null ? null : this.keyFor(row, index);
|
|
1158
|
+
if (this.a.activeKey === void 0) this.internalActive = next;
|
|
1159
|
+
this.a.onActiveChange?.(next, row ?? void 0);
|
|
1160
|
+
};
|
|
1161
|
+
get sort() {
|
|
1162
|
+
if (this.a.sort !== void 0) return this.a.sort;
|
|
1163
|
+
return this.internalSort !== void 0 ? this.internalSort : this.a.defaultSort ?? null;
|
|
1164
|
+
}
|
|
1165
|
+
/** asc → desc → unsorted, the three-step cycle DataGrid already used. */
|
|
1166
|
+
toggleSort = (key) => {
|
|
1167
|
+
let current = this.sort;
|
|
1168
|
+
let next = !current || current.key !== key ? {
|
|
1169
|
+
key,
|
|
1170
|
+
dir: "asc"
|
|
1171
|
+
} : current.dir === "asc" ? {
|
|
1172
|
+
key,
|
|
1173
|
+
dir: "desc"
|
|
1174
|
+
} : null;
|
|
1175
|
+
if (this.a.sort === void 0) this.internalSort = next;
|
|
1176
|
+
this.a.onSortChange?.(next);
|
|
1177
|
+
};
|
|
1178
|
+
ariaSort = (key) => {
|
|
1179
|
+
let current = this.sort;
|
|
1180
|
+
if (!current || current.key !== key) return "none";
|
|
1181
|
+
return current.dir === "asc" ? "ascending" : "descending";
|
|
1182
|
+
};
|
|
1183
|
+
compare(a, b, sort, dir) {
|
|
1184
|
+
if (this.a.comparator) return this.a.comparator(a, b, sort) * dir;
|
|
1185
|
+
let x = readField(a, sort.key);
|
|
1186
|
+
let y = readField(b, sort.key);
|
|
1187
|
+
if (x === void 0 || x === null || y === void 0 || y === null) return compareValues(x, y);
|
|
1188
|
+
return compareValues(x, y) * dir;
|
|
1189
|
+
}
|
|
1190
|
+
get data() {
|
|
1191
|
+
return {
|
|
1192
|
+
status: this.status,
|
|
1193
|
+
count: this.count,
|
|
1194
|
+
errorMessage: this.errorMessage,
|
|
1195
|
+
keyFor: this.keyFor,
|
|
1196
|
+
selectionMode: this.selectionMode,
|
|
1197
|
+
selectedKeys: this.selectedKeys,
|
|
1198
|
+
selectedRows: this.selectedRows,
|
|
1199
|
+
allSelected: this.allSelected,
|
|
1200
|
+
isSelected: this.isSelected,
|
|
1201
|
+
toggleSelected: this.toggleSelected,
|
|
1202
|
+
selectAll: this.selectAll,
|
|
1203
|
+
clearSelection: this.clearSelection,
|
|
1204
|
+
activeKey: this.activeKey,
|
|
1205
|
+
isActive: this.isActive,
|
|
1206
|
+
setActive: this.setActive,
|
|
1207
|
+
sort: this.sort,
|
|
1208
|
+
toggleSort: this.toggleSort,
|
|
1209
|
+
ariaSort: this.ariaSort,
|
|
1210
|
+
reload: this.reload
|
|
1211
|
+
};
|
|
1212
|
+
}
|
|
1213
|
+
};
|
|
1214
|
+
(class extends Component {
|
|
1215
|
+
/** the state machine — pass it to `<DataShell @state={{this.source}}>` */ source = new DataSource(() => this.args);
|
|
1216
|
+
get status() {
|
|
1217
|
+
return this.source.status;
|
|
1218
|
+
}
|
|
1219
|
+
get busy() {
|
|
1220
|
+
return this.source.busy;
|
|
1221
|
+
}
|
|
1222
|
+
get errorMessage() {
|
|
1223
|
+
return this.source.errorMessage;
|
|
1224
|
+
}
|
|
1225
|
+
get announcement() {
|
|
1226
|
+
return this.source.announcement;
|
|
1227
|
+
}
|
|
1228
|
+
get rows() {
|
|
1229
|
+
return this.source.rows;
|
|
1230
|
+
}
|
|
1231
|
+
get visibleRows() {
|
|
1232
|
+
return this.source.visibleRows;
|
|
1233
|
+
}
|
|
1234
|
+
get count() {
|
|
1235
|
+
return this.source.count;
|
|
1236
|
+
}
|
|
1237
|
+
get selectionMode() {
|
|
1238
|
+
return this.source.selectionMode;
|
|
1239
|
+
}
|
|
1240
|
+
get selectedKeys() {
|
|
1241
|
+
return this.source.selectedKeys;
|
|
1242
|
+
}
|
|
1243
|
+
get selectedRows() {
|
|
1244
|
+
return this.source.selectedRows;
|
|
1245
|
+
}
|
|
1246
|
+
get allSelected() {
|
|
1247
|
+
return this.source.allSelected;
|
|
1248
|
+
}
|
|
1249
|
+
get activeKey() {
|
|
1250
|
+
return this.source.activeKey;
|
|
1251
|
+
}
|
|
1252
|
+
get sort() {
|
|
1253
|
+
return this.source.sort;
|
|
1254
|
+
}
|
|
1255
|
+
get data() {
|
|
1256
|
+
return this.source.data;
|
|
1257
|
+
}
|
|
1258
|
+
keyFor = this.source.keyFor;
|
|
1259
|
+
isSelected = this.source.isSelected;
|
|
1260
|
+
toggleSelected = this.source.toggleSelected;
|
|
1261
|
+
selectAll = this.source.selectAll;
|
|
1262
|
+
clearSelection = this.source.clearSelection;
|
|
1263
|
+
isActive = this.source.isActive;
|
|
1264
|
+
setActive = this.source.setActive;
|
|
1265
|
+
toggleSort = this.source.toggleSort;
|
|
1266
|
+
ariaSort = this.source.ariaSort;
|
|
1267
|
+
reload = this.source.reload;
|
|
1268
|
+
static {
|
|
1269
|
+
setComponentTemplate(templateFactory({
|
|
1270
|
+
"id": "WDfnfAER",
|
|
1271
|
+
"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\"]]",
|
|
1272
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/data-component.gts",
|
|
1273
|
+
"scope": () => [DataShell],
|
|
1274
|
+
"isStrictMode": true
|
|
1275
|
+
}), this);
|
|
1276
|
+
}
|
|
1277
|
+
});
|
|
1278
|
+
//#endregion
|
|
1279
|
+
//#region ../pretui/focus.gts
|
|
1280
|
+
/** Focuses the element only on the render where it BECAME the keyboard
|
|
1281
|
+
* target — never steals focus on a plain re-render. */
|
|
1282
|
+
var focusWhen = modifier((el, [should]) => {
|
|
1283
|
+
if (should) el.focus();
|
|
1284
|
+
});
|
|
1285
|
+
/** Roving tabindex, set as a property rather than an attribute: exactly one
|
|
1286
|
+
* member of a composite is in the tab sequence, the rest are -1. Set as a
|
|
1287
|
+
* property because the no-positive-tabindex lint rule cannot statically
|
|
1288
|
+
* verify a dynamic template attribute. */
|
|
1289
|
+
var rovingTabindex = modifier((el, [active]) => {
|
|
1290
|
+
el.tabIndex = active ? 0 : -1;
|
|
1291
|
+
});
|
|
1292
|
+
/** One delegated listener on a composite root, removed on cleanup. This is
|
|
1293
|
+
* how a `role='tree'` / `role='menu'` container gets its keyboard without
|
|
1294
|
+
* `{{on}}` on a non-interactive element (lint: no-invalid-interactive) and
|
|
1295
|
+
* without one listener per node. */
|
|
1296
|
+
var listen = modifier((el, [type, handler]) => {
|
|
1297
|
+
el.addEventListener(type, handler);
|
|
1298
|
+
return () => el.removeEventListener(type, handler);
|
|
1299
|
+
});
|
|
1300
|
+
modifier((_el, [type, handler, capture]) => {
|
|
1301
|
+
let options = {
|
|
1302
|
+
capture: capture ?? false,
|
|
1303
|
+
passive: true
|
|
1304
|
+
};
|
|
1305
|
+
document.addEventListener(type, handler, options);
|
|
1306
|
+
return () => document.removeEventListener(type, handler, options);
|
|
1307
|
+
});
|
|
1308
|
+
/**
|
|
1309
|
+
* A document-level listener in the CAPTURE phase, non-passive so the handler
|
|
1310
|
+
* may `preventDefault`.
|
|
1311
|
+
*
|
|
1312
|
+
* This is how an open overlay takes ownership of a key. Handlers for one
|
|
1313
|
+
* event type share a single listener that calls them newest first and stops
|
|
1314
|
+
* at the first one that calls `stopPropagation`, so an Escape inside nested
|
|
1315
|
+
* overlays closes only the innermost one.
|
|
1316
|
+
*/
|
|
1317
|
+
var captureStacks = /* @__PURE__ */ new Map();
|
|
1318
|
+
function dispatchCapture(event) {
|
|
1319
|
+
let stack = captureStacks.get(event.type);
|
|
1320
|
+
if (!stack) return;
|
|
1321
|
+
for (let handler of [...stack].reverse()) {
|
|
1322
|
+
handler(event);
|
|
1323
|
+
if (event.cancelBubble) return;
|
|
1324
|
+
}
|
|
1325
|
+
}
|
|
1326
|
+
modifier((_el, [type, handler]) => {
|
|
1327
|
+
let stack = captureStacks.get(type);
|
|
1328
|
+
if (!stack) {
|
|
1329
|
+
stack = [];
|
|
1330
|
+
captureStacks.set(type, stack);
|
|
1331
|
+
document.addEventListener(type, dispatchCapture, true);
|
|
1332
|
+
}
|
|
1333
|
+
stack.push(handler);
|
|
1334
|
+
return () => {
|
|
1335
|
+
let current = captureStacks.get(type);
|
|
1336
|
+
if (!current) return;
|
|
1337
|
+
let at = current.lastIndexOf(handler);
|
|
1338
|
+
if (at !== -1) current.splice(at, 1);
|
|
1339
|
+
if (current.length === 0) {
|
|
1340
|
+
captureStacks.delete(type);
|
|
1341
|
+
document.removeEventListener(type, dispatchCapture, true);
|
|
1342
|
+
}
|
|
1343
|
+
};
|
|
1344
|
+
});
|
|
1345
|
+
modifier((_el, [timers]) => {
|
|
1346
|
+
timers.adopt();
|
|
1347
|
+
return () => timers.release();
|
|
1348
|
+
});
|
|
1349
|
+
modifier((_el, [track]) => {
|
|
1350
|
+
let onMove = (event) => {
|
|
1351
|
+
let pointer = event;
|
|
1352
|
+
track.record(pointer.clientX, pointer.clientY);
|
|
1353
|
+
};
|
|
1354
|
+
document.addEventListener("pointermove", onMove, { passive: true });
|
|
1355
|
+
return () => {
|
|
1356
|
+
document.removeEventListener("pointermove", onMove);
|
|
1357
|
+
track.clear();
|
|
1358
|
+
};
|
|
1359
|
+
});
|
|
1360
|
+
modifier((el, [mixed]) => {
|
|
1361
|
+
el.indeterminate = mixed;
|
|
1362
|
+
});
|
|
1363
|
+
/**
|
|
1364
|
+
* The roving keyboard cursor a row collection needs: one tab stop for the
|
|
1365
|
+
* whole list, arrows to move within it, Home/End to the ends.
|
|
1366
|
+
*
|
|
1367
|
+
* It is a plain class, not a component and not a modifier, for the reason
|
|
1368
|
+
* `DataSource` is one: it is testable without a DOM and it can be held by
|
|
1369
|
+
* anything. `<List>` holds one. `<DataTable>` deliberately does NOT — a
|
|
1370
|
+
* plain `<table>` must leave Tab alone so the links, buttons and checkboxes
|
|
1371
|
+
* inside its cells stay reachable in document order. Roving row focus is a
|
|
1372
|
+
* `role='grid'` behaviour, and this file does not claim that role.
|
|
1373
|
+
*/
|
|
1374
|
+
var RowCursor = class {
|
|
1375
|
+
constructor(readCount) {
|
|
1376
|
+
this.readCount = readCount;
|
|
1377
|
+
}
|
|
1378
|
+
static {
|
|
1379
|
+
decorateFieldV2(this.prototype, "index", [tracked], function() {
|
|
1380
|
+
return 0;
|
|
1381
|
+
});
|
|
1382
|
+
}
|
|
1383
|
+
#index = (initializeDeferredDecorator(this, "index"), void 0);
|
|
1384
|
+
static {
|
|
1385
|
+
decorateFieldV2(this.prototype, "navigating", [tracked], function() {
|
|
1386
|
+
return false;
|
|
1387
|
+
});
|
|
1388
|
+
}
|
|
1389
|
+
#navigating = (initializeDeferredDecorator(this, "navigating"), void 0);
|
|
1390
|
+
/** true only while the KEYBOARD is driving, so `focusWhen` never steals
|
|
1391
|
+
* focus on a pointer path or a plain re-render */
|
|
1392
|
+
get count() {
|
|
1393
|
+
return this.readCount();
|
|
1394
|
+
}
|
|
1395
|
+
/** the cursor, clamped to the collection as it is right now */
|
|
1396
|
+
get active() {
|
|
1397
|
+
return Math.min(this.index, Math.max(0, this.count - 1));
|
|
1398
|
+
}
|
|
1399
|
+
isActive = (index) => index === this.active;
|
|
1400
|
+
isFocusTarget = (index) => this.navigating && this.isActive(index);
|
|
1401
|
+
/** move the cursor and take focus with it */
|
|
1402
|
+
moveTo = (index) => {
|
|
1403
|
+
if (index < 0 || index >= this.count) return;
|
|
1404
|
+
this.navigating = true;
|
|
1405
|
+
this.index = index;
|
|
1406
|
+
};
|
|
1407
|
+
/** follow focus that arrived some other way (a click, a Tab from outside)
|
|
1408
|
+
* without taking it — the early return is what keeps `focusWhen`'s
|
|
1409
|
+
* synchronous `el.focus()` from re-entering as a backtracking re-render */
|
|
1410
|
+
follow = (index) => {
|
|
1411
|
+
if (index === this.active) return;
|
|
1412
|
+
this.navigating = false;
|
|
1413
|
+
this.index = index;
|
|
1414
|
+
};
|
|
1415
|
+
/** returns true when the key was consumed and the caller should
|
|
1416
|
+
* `preventDefault()` */
|
|
1417
|
+
handleKey = (key) => {
|
|
1418
|
+
switch (key) {
|
|
1419
|
+
case "ArrowDown":
|
|
1420
|
+
this.moveTo(this.active + 1);
|
|
1421
|
+
return true;
|
|
1422
|
+
case "ArrowUp":
|
|
1423
|
+
this.moveTo(this.active - 1);
|
|
1424
|
+
return true;
|
|
1425
|
+
case "Home":
|
|
1426
|
+
this.moveTo(0);
|
|
1427
|
+
return true;
|
|
1428
|
+
case "End":
|
|
1429
|
+
this.moveTo(this.count - 1);
|
|
1430
|
+
return true;
|
|
1431
|
+
default: return false;
|
|
1432
|
+
}
|
|
1433
|
+
};
|
|
1434
|
+
};
|
|
1435
|
+
//#endregion
|
|
1436
|
+
//#region ../pretui/components/list.gts
|
|
1437
|
+
/**
|
|
1438
|
+
* A collapse removes the detail, and focus inside it would fall to <body>.
|
|
1439
|
+
* The row remembers (from focusin) that focus was in its detail; after a
|
|
1440
|
+
* collapse — by the expander, a controlled `@expandedKeys` change or a
|
|
1441
|
+
* reload — focus lands on the row's expander instead, unless it has already
|
|
1442
|
+
* moved somewhere real.
|
|
1443
|
+
*/
|
|
1444
|
+
var restoreFocusOnCollapse = modifier((row, [expanded]) => {
|
|
1445
|
+
if (expanded || row.dataset["detailFocus"] !== "true") return;
|
|
1446
|
+
row.dataset["detailFocus"] = "false";
|
|
1447
|
+
let doc = row.ownerDocument;
|
|
1448
|
+
let active = doc.activeElement;
|
|
1449
|
+
if (!active || active === doc.body) row.querySelector(".pretui-list-expbtn")?.focus();
|
|
1450
|
+
});
|
|
1451
|
+
var List = class extends Component {
|
|
1452
|
+
guid = guidFor(this);
|
|
1453
|
+
/** The shared state machine: load status, `aria-busy`, the polite result
|
|
1454
|
+
* count, the row-key contract, and THE selection model `<DataTable>` uses.
|
|
1455
|
+
* One implementation, two components. */
|
|
1456
|
+
source = new DataSource(() => this.dataArgs);
|
|
1457
|
+
cursor = new RowCursor(() => this.rows.length);
|
|
1458
|
+
/** The same expanded-rows state DataTable uses. */
|
|
1459
|
+
expansion = new ExpansionState(() => this.args, this.guid);
|
|
1460
|
+
get dataArgs() {
|
|
1461
|
+
let a = this.args;
|
|
1462
|
+
return {
|
|
1463
|
+
rows: a.items ?? a.options ?? a.dataSource,
|
|
1464
|
+
load: a.load,
|
|
1465
|
+
loadKey: a.loadKey,
|
|
1466
|
+
key: a.key,
|
|
1467
|
+
selectionMode: a.selectionMode,
|
|
1468
|
+
selected: a.selected,
|
|
1469
|
+
defaultSelected: a.defaultSelected,
|
|
1470
|
+
onSelectionChange: a.onSelectionChange,
|
|
1471
|
+
itemNoun: a.itemNoun,
|
|
1472
|
+
emptyTitle: a.emptyTitle,
|
|
1473
|
+
emptyMessage: a.emptyMessage,
|
|
1474
|
+
loadingLabel: a.loadingLabel,
|
|
1475
|
+
skeletonRows: a.skeletonRows
|
|
1476
|
+
};
|
|
1477
|
+
}
|
|
1478
|
+
get rows() {
|
|
1479
|
+
return this.source.visibleRows;
|
|
1480
|
+
}
|
|
1481
|
+
get size() {
|
|
1482
|
+
return resolveSize(this.args.size);
|
|
1483
|
+
}
|
|
1484
|
+
get label() {
|
|
1485
|
+
return this.args.label ?? "List";
|
|
1486
|
+
}
|
|
1487
|
+
get selectionMode() {
|
|
1488
|
+
return this.source.selectionMode;
|
|
1489
|
+
}
|
|
1490
|
+
get selectable() {
|
|
1491
|
+
return this.selectionMode !== "none";
|
|
1492
|
+
}
|
|
1493
|
+
get multi() {
|
|
1494
|
+
return this.selectionMode === "multi";
|
|
1495
|
+
}
|
|
1496
|
+
get radioName() {
|
|
1497
|
+
return this.guid + "-list";
|
|
1498
|
+
}
|
|
1499
|
+
get divided() {
|
|
1500
|
+
return this.args.divided ?? true ? "true" : void 0;
|
|
1501
|
+
}
|
|
1502
|
+
get bordered() {
|
|
1503
|
+
return this.args.bordered ? "true" : void 0;
|
|
1504
|
+
}
|
|
1505
|
+
get busy() {
|
|
1506
|
+
return this.args.busy ?? this.args.loading ? "true" : void 0;
|
|
1507
|
+
}
|
|
1508
|
+
labelFor = (row, index) => this.args.rowLabel?.(row, index) ?? "Row " + String(index + 1);
|
|
1509
|
+
get lines() {
|
|
1510
|
+
return this.rows.map((row, index) => {
|
|
1511
|
+
let selected = this.source.isSelected(row, index);
|
|
1512
|
+
let key = this.source.keyFor(row, index);
|
|
1513
|
+
let label = this.labelFor(row, index);
|
|
1514
|
+
return {
|
|
1515
|
+
key,
|
|
1516
|
+
row,
|
|
1517
|
+
index,
|
|
1518
|
+
selected,
|
|
1519
|
+
selectedFlag: selected ? "true" : void 0,
|
|
1520
|
+
active: this.cursor.isActive(index),
|
|
1521
|
+
api: {
|
|
1522
|
+
index,
|
|
1523
|
+
selected,
|
|
1524
|
+
active: this.cursor.isActive(index),
|
|
1525
|
+
toggle: () => this.source.toggleSelected(row, index)
|
|
1526
|
+
},
|
|
1527
|
+
label,
|
|
1528
|
+
expansion: this.expansion.viewFor(key, index, label)
|
|
1529
|
+
};
|
|
1530
|
+
});
|
|
1531
|
+
}
|
|
1532
|
+
isRoving = (index) => this.cursor.isActive(index);
|
|
1533
|
+
isFocusTarget = (index) => this.cursor.isFocusTarget(index);
|
|
1534
|
+
indexFromEvent(event) {
|
|
1535
|
+
let raw = (event.target?.closest("[data-list-index]"))?.dataset["listIndex"];
|
|
1536
|
+
return raw === void 0 ? void 0 : Number(raw);
|
|
1537
|
+
}
|
|
1538
|
+
onFocusIn = (event) => {
|
|
1539
|
+
let target = event.target;
|
|
1540
|
+
let row = target?.closest("[data-list-index]");
|
|
1541
|
+
if (row) row.dataset["detailFocus"] = target?.closest(".pretui-list-detail") ? "true" : "false";
|
|
1542
|
+
let index = this.indexFromEvent(event);
|
|
1543
|
+
if (index !== void 0) this.cursor.follow(index);
|
|
1544
|
+
};
|
|
1545
|
+
onKeydown = (event) => {
|
|
1546
|
+
let ev = event;
|
|
1547
|
+
if (this.rows.length === 0) return;
|
|
1548
|
+
if (!!!ev.target?.matches("[data-list-index]")) return;
|
|
1549
|
+
if (this.cursor.handleKey(ev.key)) {
|
|
1550
|
+
ev.preventDefault();
|
|
1551
|
+
return;
|
|
1552
|
+
}
|
|
1553
|
+
let index = this.cursor.active;
|
|
1554
|
+
let row = this.rows[index];
|
|
1555
|
+
if (row === void 0) return;
|
|
1556
|
+
if (ev.key === "Enter") {
|
|
1557
|
+
ev.preventDefault();
|
|
1558
|
+
this.args.onActivate?.(row, index);
|
|
1559
|
+
} else if (ev.key === " " && this.selectable) {
|
|
1560
|
+
ev.preventDefault();
|
|
1561
|
+
this.source.toggleSelected(row, index);
|
|
1562
|
+
}
|
|
1563
|
+
};
|
|
1564
|
+
toggleExpanded = (key) => this.expansion.toggle(key);
|
|
1565
|
+
detailLabel = (line) => line.label + " details";
|
|
1566
|
+
toggleRow = (row, index) => {
|
|
1567
|
+
this.source.toggleSelected(row, index);
|
|
1568
|
+
};
|
|
1569
|
+
activate = (row, index) => {
|
|
1570
|
+
this.args.onActivate?.(row, index);
|
|
1571
|
+
};
|
|
1572
|
+
/** A click on a row activates it, unless it landed on a control or in the
|
|
1573
|
+
* row's expanded detail. */
|
|
1574
|
+
onClick = (event) => {
|
|
1575
|
+
if (!this.args.onActivate) return;
|
|
1576
|
+
let target = event.target;
|
|
1577
|
+
let li = target?.closest?.("li[data-list-index]");
|
|
1578
|
+
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;
|
|
1579
|
+
let index = Number(li.getAttribute("data-list-index"));
|
|
1580
|
+
let row = this.rows[index];
|
|
1581
|
+
if (row !== void 0) this.args.onActivate(row, index);
|
|
1582
|
+
};
|
|
1583
|
+
static {
|
|
1584
|
+
setComponentTemplate(templateFactory({
|
|
1585
|
+
"id": "XELOR1Am",
|
|
1586
|
+
"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\"]]",
|
|
1587
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/list.gts",
|
|
1588
|
+
"scope": () => [
|
|
1589
|
+
DataShell,
|
|
1590
|
+
listen,
|
|
1591
|
+
rovingTabindex,
|
|
1592
|
+
focusWhen,
|
|
1593
|
+
restoreFocusOnCollapse,
|
|
1594
|
+
on,
|
|
1595
|
+
fn
|
|
1596
|
+
],
|
|
1597
|
+
"isStrictMode": true
|
|
1598
|
+
}), this);
|
|
1599
|
+
}
|
|
1600
|
+
};
|
|
1601
|
+
//#endregion
|
|
1602
|
+
//#region ../pretui/components/loading-state.gts
|
|
1603
|
+
var LoadingState = class extends Component {
|
|
1604
|
+
get label() {
|
|
1605
|
+
return this.args.label ?? "Working";
|
|
1606
|
+
}
|
|
1607
|
+
get pixels() {
|
|
1608
|
+
let variant = this.args.variant ?? "drive";
|
|
1609
|
+
let chev = Array.from({ length: 9 }, (_, i) => {
|
|
1610
|
+
let r = Math.floor(i / 3);
|
|
1611
|
+
return (i % 3 + Math.abs(r - 1)) * 90;
|
|
1612
|
+
});
|
|
1613
|
+
let order = [
|
|
1614
|
+
0,
|
|
1615
|
+
1,
|
|
1616
|
+
2,
|
|
1617
|
+
5,
|
|
1618
|
+
8,
|
|
1619
|
+
7,
|
|
1620
|
+
6,
|
|
1621
|
+
3
|
|
1622
|
+
];
|
|
1623
|
+
let orbit = Array.from({ length: 9 }, (_, i) => {
|
|
1624
|
+
let k = order.indexOf(i);
|
|
1625
|
+
return k === -1 ? null : k * 110;
|
|
1626
|
+
});
|
|
1627
|
+
let delays = variant === "orbit" ? orbit : chev;
|
|
1628
|
+
let dur = variant === "orbit" ? 950 : 650;
|
|
1629
|
+
let round = variant === "dots";
|
|
1630
|
+
return delays.map((d) => ({
|
|
1631
|
+
round,
|
|
1632
|
+
style: htmlSafe(d === null ? "opacity: .07; animation: none" : `animation: pretui-pixel-on ${dur}ms ease-in-out ${d}ms infinite`)
|
|
1633
|
+
}));
|
|
1634
|
+
}
|
|
1635
|
+
static {
|
|
1636
|
+
setComponentTemplate(templateFactory({
|
|
1637
|
+
"id": "XGfkly0n",
|
|
1638
|
+
"block": "[[[11,1],[24,0,\"pretui-loading\"],[24,\"role\",\"status\"],[24,\"data-test-pretui-loading-state\",\"\"],[17,1],[24,\"data-scopedcss-cae5827e83-74a3a9dccc\",\"\"],[12],[1,\"\\n \"],[10,1],[14,\"aria-hidden\",\"true\"],[14,0,\"pretui-pixelgrid\"],[14,\"data-scopedcss-cae5827e83-74a3a9dccc\",\"\"],[12],[1,\"\\n\"],[42,[28,[31,1],[[28,[31,1],[[30,0,[\"pixels\"]]],null]],null],null,[[[1,\" \"],[10,1],[14,0,\"pretui-pixel\"],[15,\"data-round\",[52,[30,2,[\"round\"]],\"true\"]],[15,5,[30,2,[\"style\"]]],[14,\"data-scopedcss-cae5827e83-74a3a9dccc\",\"\"],[12],[13],[1,\"\\n\"]],[2]],null],[1,\" \"],[13],[1,\"\\n \"],[10,1],[14,0,\"pretui-shimmer-label\"],[14,\"data-scopedcss-cae5827e83-74a3a9dccc\",\"\"],[12],[1,[30,0,[\"label\"]]],[13],[1,\"\\n \"],[41,[30,3],[[[10,1],[14,0,\"pretui-elapsed\"],[14,\"data-scopedcss-cae5827e83-74a3a9dccc\",\"\"],[12],[1,[30,3]],[13]],[]],null],[1,\"\\n\"],[13],[1,\"\\n\"]],[\"&attrs\",\"p\",\"@elapsed\"],[\"each\",\"-track-array\",\"if\"]]",
|
|
1639
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/loading-state.gts",
|
|
1640
|
+
"isStrictMode": true
|
|
1641
|
+
}), this);
|
|
1642
|
+
}
|
|
1643
|
+
};
|
|
1644
|
+
//#endregion
|
|
1645
|
+
//#region ../pretui/components/scroller.gts
|
|
1646
|
+
/**
|
|
1647
|
+
* Maintains the four edge facts as DATA ATTRIBUTES on the viewport, and
|
|
1648
|
+
* makes the viewport keyboard-reachable exactly when it actually scrolls.
|
|
1649
|
+
*
|
|
1650
|
+
* Written as attributes rather than tracked state on purpose: a scroll
|
|
1651
|
+
* listener that writes tracked state re-renders the component on every
|
|
1652
|
+
* frame of a flick. These attributes are read only by CSS, so the whole
|
|
1653
|
+
* affordance costs one `setAttribute` and no render at all.
|
|
1654
|
+
*
|
|
1655
|
+
* `tabindex` is managed here too. A scroll container that a mouse user can
|
|
1656
|
+
* reach and a keyboard user cannot is a keyboard trap in reverse — the
|
|
1657
|
+
* content is simply unreachable. Chromium and Firefox have started making
|
|
1658
|
+
* scrollers focusable natively; this keeps the guarantee everywhere, and
|
|
1659
|
+
* REMOVES the tab stop again when the content shrinks and no longer
|
|
1660
|
+
* overflows, which is the part native focusable-scrollers gets right and
|
|
1661
|
+
* hand-rolled `tabindex='0'` does not.
|
|
1662
|
+
*/
|
|
1663
|
+
var scrollEdges = modifier((element, [orientation]) => {
|
|
1664
|
+
let update = () => {
|
|
1665
|
+
let horizontal = orientation !== "vertical";
|
|
1666
|
+
let vertical = orientation !== "horizontal";
|
|
1667
|
+
let overflowX = element.scrollWidth - element.clientWidth > 1;
|
|
1668
|
+
let overflowY = element.scrollHeight - element.clientHeight > 1;
|
|
1669
|
+
let left = Math.abs(element.scrollLeft);
|
|
1670
|
+
element.dataset["startX"] = horizontal && overflowX && left > 1 ? "clipped" : "flush";
|
|
1671
|
+
element.dataset["endX"] = horizontal && overflowX && left < element.scrollWidth - element.clientWidth - 1 ? "clipped" : "flush";
|
|
1672
|
+
element.dataset["startY"] = vertical && overflowY && element.scrollTop > 1 ? "clipped" : "flush";
|
|
1673
|
+
element.dataset["endY"] = vertical && overflowY && element.scrollTop < element.scrollHeight - element.clientHeight - 1 ? "clipped" : "flush";
|
|
1674
|
+
if (horizontal && overflowX || vertical && overflowY) {
|
|
1675
|
+
if (element.getAttribute("tabindex") === null) element.setAttribute("tabindex", "0");
|
|
1676
|
+
} else if (element.getAttribute("tabindex") === "0") element.removeAttribute("tabindex");
|
|
1677
|
+
};
|
|
1678
|
+
element.addEventListener("scroll", update, { passive: true });
|
|
1679
|
+
let frame;
|
|
1680
|
+
let schedule = () => {
|
|
1681
|
+
if (frame !== void 0) return;
|
|
1682
|
+
frame = requestAnimationFrame(() => {
|
|
1683
|
+
frame = void 0;
|
|
1684
|
+
update();
|
|
1685
|
+
});
|
|
1686
|
+
};
|
|
1687
|
+
let observer = new ResizeObserver(schedule);
|
|
1688
|
+
let observeChildren = () => {
|
|
1689
|
+
for (let child of Array.from(element.children)) observer.observe(child);
|
|
1690
|
+
};
|
|
1691
|
+
observer.observe(element);
|
|
1692
|
+
observeChildren();
|
|
1693
|
+
let mutations = new MutationObserver(() => {
|
|
1694
|
+
observeChildren();
|
|
1695
|
+
schedule();
|
|
1696
|
+
});
|
|
1697
|
+
mutations.observe(element, {
|
|
1698
|
+
childList: true,
|
|
1699
|
+
subtree: true,
|
|
1700
|
+
characterData: true
|
|
1701
|
+
});
|
|
1702
|
+
update();
|
|
1703
|
+
return () => {
|
|
1704
|
+
element.removeEventListener("scroll", update);
|
|
1705
|
+
observer.disconnect();
|
|
1706
|
+
mutations.disconnect();
|
|
1707
|
+
if (frame !== void 0) cancelAnimationFrame(frame);
|
|
1708
|
+
};
|
|
1709
|
+
});
|
|
1710
|
+
/**
|
|
1711
|
+
* A scroll container that says when it is clipped.
|
|
1712
|
+
*
|
|
1713
|
+
* ```hbs
|
|
1714
|
+
* <Scroller @label='Recent lots' @orientation='horizontal'>
|
|
1715
|
+
* <div class='row'>…</div>
|
|
1716
|
+
* </Scroller>
|
|
1717
|
+
* ```
|
|
1718
|
+
*
|
|
1719
|
+
* Better than the inspiration (`wa-scroller`): upstream ships one shadow
|
|
1720
|
+
* treatment, both axes always on, and no notion of whether the region is
|
|
1721
|
+
* reachable by keyboard. Here the axis is explicit, the treatment is a knob,
|
|
1722
|
+
* the tab stop appears and DISAPPEARS with the overflow, and the affordance
|
|
1723
|
+
* is driven by data attributes rather than by re-rendering on every scroll
|
|
1724
|
+
* frame.
|
|
1725
|
+
*/
|
|
1726
|
+
var Scroller = class extends Component {
|
|
1727
|
+
get orientation() {
|
|
1728
|
+
return this.args.orientation ?? "horizontal";
|
|
1729
|
+
}
|
|
1730
|
+
get edge() {
|
|
1731
|
+
return this.args.edge ?? "fade";
|
|
1732
|
+
}
|
|
1733
|
+
get role() {
|
|
1734
|
+
return this.args.label ? "region" : void 0;
|
|
1735
|
+
}
|
|
1736
|
+
static {
|
|
1737
|
+
setComponentTemplate(templateFactory({
|
|
1738
|
+
"id": "dA5kczpk",
|
|
1739
|
+
"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\"]]",
|
|
1740
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/pretui/components/scroller.gts",
|
|
1741
|
+
"scope": () => [scrollEdges],
|
|
1742
|
+
"isStrictMode": true
|
|
1743
|
+
}), this);
|
|
1744
|
+
}
|
|
1745
|
+
};
|
|
1746
|
+
//#endregion
|
|
1747
|
+
//#region app/components/operator-mode/workspace-chooser/manage-catalogs.gts
|
|
1748
|
+
var ManageCatalogsModal = class extends Component {
|
|
1749
|
+
static {
|
|
1750
|
+
decorateFieldV2(this.prototype, "matrixService", [service]);
|
|
1751
|
+
}
|
|
1752
|
+
#matrixService = (initializeDeferredDecorator(this, "matrixService"), void 0);
|
|
1753
|
+
static {
|
|
1754
|
+
decorateFieldV2(this.prototype, "realmServer", [service]);
|
|
1755
|
+
}
|
|
1756
|
+
#realmServer = (initializeDeferredDecorator(this, "realmServer"), void 0);
|
|
1757
|
+
static {
|
|
1758
|
+
decorateFieldV2(this.prototype, "choices", [tracked$1], function() {
|
|
1759
|
+
return null;
|
|
1760
|
+
});
|
|
1761
|
+
}
|
|
1762
|
+
#choices = (initializeDeferredDecorator(this, "choices"), void 0);
|
|
1763
|
+
static {
|
|
1764
|
+
decorateFieldV2(this.prototype, "loadError", [tracked$1], function() {
|
|
1765
|
+
return null;
|
|
1766
|
+
});
|
|
1767
|
+
}
|
|
1768
|
+
#loadError = (initializeDeferredDecorator(this, "loadError"), void 0);
|
|
1769
|
+
static {
|
|
1770
|
+
decorateFieldV2(this.prototype, "selected", [tracked$1]);
|
|
1771
|
+
}
|
|
1772
|
+
#selected = (initializeDeferredDecorator(this, "selected"), void 0);
|
|
1773
|
+
static {
|
|
1774
|
+
decorateFieldV2(this.prototype, "saveError", [tracked$1], function() {
|
|
1775
|
+
return null;
|
|
1776
|
+
});
|
|
1777
|
+
}
|
|
1778
|
+
#saveError = (initializeDeferredDecorator(this, "saveError"), void 0);
|
|
1779
|
+
constructor(owner, args) {
|
|
1780
|
+
super(owner, args);
|
|
1781
|
+
this.selected = this.realmServer.userCatalogPicks;
|
|
1782
|
+
this.loadChoices.perform();
|
|
1783
|
+
}
|
|
1784
|
+
get listedElsewhere() {
|
|
1785
|
+
return new Set([
|
|
1786
|
+
baseRealm.url,
|
|
1787
|
+
...this.realmServer.catalogRealmIdentifiers,
|
|
1788
|
+
...this.realmServer.userRealmIdentifiers
|
|
1789
|
+
]);
|
|
1790
|
+
}
|
|
1791
|
+
loadChoices = buildTask(() => ({
|
|
1792
|
+
context: this,
|
|
1793
|
+
generator: function* () {
|
|
1794
|
+
this.loadError = null;
|
|
1795
|
+
try {
|
|
1796
|
+
let listedElsewhere = this.listedElsewhere;
|
|
1797
|
+
let realms = yield this.realmServer.fetchPublicRealms();
|
|
1798
|
+
this.choices = realms.filter(({ url }) => !listedElsewhere.has(url)).sort((a, b) => displayName(a).localeCompare(displayName(b)));
|
|
1799
|
+
} catch (e) {
|
|
1800
|
+
this.loadError = e.message;
|
|
1801
|
+
}
|
|
1802
|
+
}
|
|
1803
|
+
}), null, "loadChoices", "restartable");
|
|
1804
|
+
save = buildTask(() => ({
|
|
1805
|
+
context: this,
|
|
1806
|
+
generator: function* () {
|
|
1807
|
+
this.saveError = null;
|
|
1808
|
+
try {
|
|
1809
|
+
let selected = new Set(this.selected);
|
|
1810
|
+
let listedElsewhere = this.listedElsewhere;
|
|
1811
|
+
let kept = this.realmServer.userCatalogPicks.filter((url) => listedElsewhere.has(url));
|
|
1812
|
+
let chosen = (this.choices ?? []).map(({ url }) => url).filter((url) => selected.has(url));
|
|
1813
|
+
yield this.matrixService.setUserCatalogRealms([...new Set([...kept, ...chosen])]);
|
|
1814
|
+
this.args.onClose();
|
|
1815
|
+
} catch (e) {
|
|
1816
|
+
this.saveError = e.message;
|
|
1817
|
+
}
|
|
1818
|
+
}
|
|
1819
|
+
}), null, "save", null);
|
|
1820
|
+
rowKey = (realm) => realm.url;
|
|
1821
|
+
rowLabel = (realm) => displayName(realm);
|
|
1822
|
+
iconSrc = (realm) => realm.iconURL ?? void 0;
|
|
1823
|
+
setSelected = (keys) => {
|
|
1824
|
+
this.selected = keys.map(String);
|
|
1825
|
+
};
|
|
1826
|
+
toggle = (realm) => {
|
|
1827
|
+
this.selected = this.selected.includes(realm.url) ? this.selected.filter((url) => url !== realm.url) : [...this.selected, realm.url];
|
|
1828
|
+
};
|
|
1829
|
+
get rows() {
|
|
1830
|
+
return this.choices ?? [];
|
|
1831
|
+
}
|
|
1832
|
+
get isSaveDisabled() {
|
|
1833
|
+
return this.choices === null;
|
|
1834
|
+
}
|
|
1835
|
+
static {
|
|
1836
|
+
setComponentTemplate(templateFactory({
|
|
1837
|
+
"id": "zB1X89v7",
|
|
1838
|
+
"block": "[[[8,[32,0],[[24,0,\"manage-catalogs-dialog\"],[24,\"data-test-manage-catalogs-modal\",\"\"],[24,\"data-scopedcss-9c42952c7e-0aadf83a58\",\"\"]],[[\"@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-9c42952c7e-0aadf83a58\",\"\"],[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-9c42952c7e-0aadf83a58\",\"\"]],[[\"@label\"],[\"Loading public realms\"]],null],[1,\"\\n\"]],[]],[[[41,[30,0,[\"loadError\"]],[[[1,\" \"],[8,[32,2],[[24,\"data-test-manage-catalogs-error\",\"\"],[24,\"data-scopedcss-9c42952c7e-0aadf83a58\",\"\"]],[[\"@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-9c42952c7e-0aadf83a58\",\"\"],[12],[1,\"\\n \"],[8,[32,3],[[24,\"data-scopedcss-9c42952c7e-0aadf83a58\",\"\"]],[[\"@orientation\"],[\"vertical\"]],[[\"default\"],[[[[1,\"\\n \"],[8,[32,4],[[24,\"data-test-public-realm-list\",\"\"],[24,\"data-scopedcss-9c42952c7e-0aadf83a58\",\"\"]],[[\"@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-9c42952c7e-0aadf83a58\",\"\"]],[[\"@title\",\"@description\"],[[28,[32,6],[[30,2]],null],[30,2,[\"url\"]]]],[[\"leading\"],[[[[1,\"\\n \"],[10,1],[14,0,\"realm-icon\"],[14,\"data-scopedcss-9c42952c7e-0aadf83a58\",\"\"],[12],[1,\"\\n \"],[8,[32,7],[[24,\"data-scopedcss-9c42952c7e-0aadf83a58\",\"\"]],[[\"@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-9c42952c7e-0aadf83a58\",\"\"]],[[\"@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-9c42952c7e-0aadf83a58\",\"\"],[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-9c42952c7e-0aadf83a58\",\"\"],[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\"]]",
|
|
1839
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/workspace-chooser/manage-catalogs.gts",
|
|
1840
|
+
"scope": () => [
|
|
1841
|
+
Dialog,
|
|
1842
|
+
LoadingState,
|
|
1843
|
+
Alert,
|
|
1844
|
+
Scroller,
|
|
1845
|
+
List,
|
|
1846
|
+
Item,
|
|
1847
|
+
displayName,
|
|
1848
|
+
Avatar,
|
|
1849
|
+
Button,
|
|
1850
|
+
on,
|
|
1851
|
+
perform
|
|
1852
|
+
],
|
|
1853
|
+
"isStrictMode": true
|
|
1854
|
+
}), this);
|
|
1855
|
+
}
|
|
1856
|
+
};
|
|
1857
|
+
function displayName(realm) {
|
|
1858
|
+
return realm.name ?? realm.url;
|
|
1859
|
+
}
|
|
1860
|
+
var ManageCatalogs = class extends Component {
|
|
1861
|
+
static {
|
|
1862
|
+
decorateFieldV2(this.prototype, "isModalOpen", [tracked$1], function() {
|
|
1863
|
+
return false;
|
|
1864
|
+
});
|
|
1865
|
+
}
|
|
1866
|
+
#isModalOpen = (initializeDeferredDecorator(this, "isModalOpen"), void 0);
|
|
1867
|
+
setIsModalOpen = (value) => {
|
|
1868
|
+
this.isModalOpen = value;
|
|
1869
|
+
};
|
|
1870
|
+
static {
|
|
1871
|
+
setComponentTemplate(templateFactory({
|
|
1872
|
+
"id": "heFE9ojb",
|
|
1873
|
+
"block": "[[[10,1],[14,0,\"manage-catalogs\"],[14,\"data-scopedcss-9c42952c7e-bfb1490ce6\",\"\"],[12],[1,\"\\n \"],[8,[32,0],[[24,\"data-test-manage-catalogs\",\"\"],[24,\"data-scopedcss-9c42952c7e-bfb1490ce6\",\"\"],[4,[32,2],[\"click\",[28,[32,3],[[30,0,[\"setIsModalOpen\"]],true],null]],null]],[[\"@label\",\"@icon\",\"@iconWidth\",\"@iconHeight\",\"@variant\",\"@size\"],[\"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-9c42952c7e-bfb1490ce6\",\"\"]],[[\"@onClose\"],[[28,[32,3],[[30,0,[\"setIsModalOpen\"]],false],null]]],null],[1,\"\\n\"]],[]],null]],[],[\"if\"]]",
|
|
1874
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/workspace-chooser/manage-catalogs.gts",
|
|
1875
|
+
"scope": () => [
|
|
1876
|
+
IconButton,
|
|
1877
|
+
IconComponent$14,
|
|
1878
|
+
on,
|
|
1879
|
+
fn,
|
|
1880
|
+
ManageCatalogsModal
|
|
1881
|
+
],
|
|
1882
|
+
"isStrictMode": true
|
|
1883
|
+
}), this);
|
|
1884
|
+
}
|
|
1885
|
+
};
|
|
1886
|
+
//#endregion
|
|
1887
|
+
//#region app/components/operator-mode/workspace-chooser/index.gts
|
|
1888
|
+
function leadWith(urls, first) {
|
|
1889
|
+
let index = first ? urls.indexOf(first) : -1;
|
|
1890
|
+
if (index <= 0) return urls;
|
|
1891
|
+
return [
|
|
1892
|
+
urls[index],
|
|
1893
|
+
...urls.slice(0, index),
|
|
1894
|
+
...urls.slice(index + 1)
|
|
1895
|
+
];
|
|
1896
|
+
}
|
|
1897
|
+
var log = logger("component:workspace-chooser");
|
|
1898
|
+
var WorkspaceChooser = class extends Component {
|
|
1899
|
+
static {
|
|
1900
|
+
decorateFieldV2(this.prototype, "matrixService", [service]);
|
|
1901
|
+
}
|
|
1902
|
+
#matrixService = (initializeDeferredDecorator(this, "matrixService"), void 0);
|
|
1903
|
+
static {
|
|
1904
|
+
decorateFieldV2(this.prototype, "realmServer", [service]);
|
|
1905
|
+
}
|
|
1906
|
+
#realmServer = (initializeDeferredDecorator(this, "realmServer"), void 0);
|
|
1907
|
+
static {
|
|
1908
|
+
decorateFieldV2(this.prototype, "realm", [service]);
|
|
1909
|
+
}
|
|
1910
|
+
#realm = (initializeDeferredDecorator(this, "realm"), void 0);
|
|
1911
|
+
static {
|
|
1912
|
+
decorateFieldV2(this.prototype, "isArchivedExpanded", [tracked$1], function() {
|
|
1913
|
+
return false;
|
|
1914
|
+
});
|
|
1915
|
+
}
|
|
1916
|
+
#isArchivedExpanded = (initializeDeferredDecorator(this, "isArchivedExpanded"), void 0);
|
|
1917
|
+
get archivedRealms() {
|
|
1918
|
+
return this.realmServer.archivedRealms;
|
|
1919
|
+
}
|
|
1920
|
+
get unreachableRealmServers() {
|
|
1921
|
+
return this.realmServer.unreachableRealmServers;
|
|
1922
|
+
}
|
|
1923
|
+
get unreachableRealmServersMessage() {
|
|
1924
|
+
let reason = `Couldn’t reach ${this.unreachableRealmServers.map((serverURL) => {
|
|
1925
|
+
try {
|
|
1926
|
+
return new URL(serverURL).host;
|
|
1927
|
+
} catch {
|
|
1928
|
+
return serverURL;
|
|
1929
|
+
}
|
|
1930
|
+
}).join(", ")}. Some workspaces may be missing`;
|
|
1931
|
+
return this.isRetryingUnreachableRealmServers ? `${reason} — retrying…` : `${reason} — reload to try again.`;
|
|
1932
|
+
}
|
|
1933
|
+
get isRetryingUnreachableRealmServers() {
|
|
1934
|
+
return this.matrixService.isRetryingUnreachableRealmServers;
|
|
1935
|
+
}
|
|
1936
|
+
get unreachableNoticeIcon() {
|
|
1937
|
+
return this.isRetryingUnreachableRealmServers ? IconComponent$5 : IconComponent$6;
|
|
1938
|
+
}
|
|
1939
|
+
get showArchivedCount() {
|
|
1940
|
+
return Boolean(this.loadArchivedRealmsTask.lastSuccessful) || this.archivedRealms.length > 0;
|
|
1941
|
+
}
|
|
1942
|
+
loadArchivedRealmsTask = buildTask(() => ({
|
|
1943
|
+
context: this,
|
|
1944
|
+
generator: function* () {
|
|
1945
|
+
yield this.realmServer.fetchArchivedRealms();
|
|
1946
|
+
}
|
|
1947
|
+
}), null, "loadArchivedRealmsTask", "drop");
|
|
1948
|
+
toggleArchived() {
|
|
1949
|
+
this.isArchivedExpanded = !this.isArchivedExpanded;
|
|
1950
|
+
if (this.isArchivedExpanded && !this.loadArchivedRealmsTask.lastSuccessful && !this.loadArchivedRealmsTask.isRunning) this.loadArchivedRealmsTask.perform().catch((error) => {
|
|
1951
|
+
if (didCancel(error)) return;
|
|
1952
|
+
log.warn(`loading archived realms failed: ${error}`);
|
|
1953
|
+
});
|
|
1954
|
+
}
|
|
1955
|
+
static {
|
|
1956
|
+
decorateMethodV2(this.prototype, "toggleArchived", [action]);
|
|
1957
|
+
}
|
|
1958
|
+
sortOptions = [{
|
|
1959
|
+
label: "View All",
|
|
1960
|
+
icon: IconComponent$2,
|
|
1961
|
+
value: "default"
|
|
1962
|
+
}, {
|
|
1963
|
+
label: "Hosted Only",
|
|
1964
|
+
icon: IconComponent$12,
|
|
1965
|
+
value: "hosted-only"
|
|
1966
|
+
}];
|
|
1967
|
+
static {
|
|
1968
|
+
decorateFieldV2(this.prototype, "selectedSortOption", [tracked$1], function() {
|
|
1969
|
+
return this.sortOptions[0];
|
|
1970
|
+
});
|
|
1971
|
+
}
|
|
1972
|
+
#selectedSortOption = (initializeDeferredDecorator(this, "selectedSortOption"), void 0);
|
|
1973
|
+
onSortChange(option) {
|
|
1974
|
+
if (!option) return;
|
|
1975
|
+
this.selectedSortOption = option;
|
|
1976
|
+
}
|
|
1977
|
+
static {
|
|
1978
|
+
decorateMethodV2(this.prototype, "onSortChange", [action]);
|
|
1979
|
+
}
|
|
1980
|
+
get sortOrder() {
|
|
1981
|
+
return this.selectedSortOption.value;
|
|
1982
|
+
}
|
|
1983
|
+
get communityRealmIdentifiers() {
|
|
1984
|
+
let realmURLs = this.realmServer.displayedCatalogRealmIdentifiers ?? [];
|
|
1985
|
+
if (config.environment !== "production") return realmURLs;
|
|
1986
|
+
return realmURLs.filter((realmURL) => !realmURL.includes("/boxel-homepage/"));
|
|
1987
|
+
}
|
|
1988
|
+
isHosted = (url) => {
|
|
1989
|
+
let info = this.realm.info(url);
|
|
1990
|
+
return !!(info.lastPublishedAt && typeof info.lastPublishedAt === "object" && Object.keys(info.lastPublishedAt).length > 0);
|
|
1991
|
+
};
|
|
1992
|
+
filterByHosted(urls) {
|
|
1993
|
+
if (this.sortOrder === "hosted-only") return urls.filter(this.isHosted);
|
|
1994
|
+
return urls;
|
|
1995
|
+
}
|
|
1996
|
+
sortByCreatedAtDesc = (urls) => {
|
|
1997
|
+
return [...urls].sort((a, b) => {
|
|
1998
|
+
let aCreatedAt = this.realm.info(a).createdAt;
|
|
1999
|
+
let bCreatedAt = this.realm.info(b).createdAt;
|
|
2000
|
+
if (!aCreatedAt && !bCreatedAt) return 0;
|
|
2001
|
+
if (!aCreatedAt) return 1;
|
|
2002
|
+
if (!bCreatedAt) return -1;
|
|
2003
|
+
return new Date(bCreatedAt).getTime() - new Date(aCreatedAt).getTime();
|
|
2004
|
+
});
|
|
2005
|
+
};
|
|
2006
|
+
get filteredUserRealmIdentifiers() {
|
|
2007
|
+
return this.filterByHosted(this.realmServer.userRealmIdentifiers);
|
|
2008
|
+
}
|
|
2009
|
+
get filteredCatalogRealmIdentifiers() {
|
|
2010
|
+
return this.filterByHosted(leadWith(this.sortByCreatedAtDesc(this.communityRealmIdentifiers), catalogRealmURL));
|
|
2011
|
+
}
|
|
2012
|
+
get favoriteRealmIdentifiers() {
|
|
2013
|
+
let favorites = this.matrixService.workspaceFavorites;
|
|
2014
|
+
let allURLs = new Set([...this.realmServer.userRealmIdentifiers, ...this.realmServer.displayedCatalogRealmIdentifiers ?? []]);
|
|
2015
|
+
let filtered = favorites.filter((url) => allURLs.has(url)).map(ri);
|
|
2016
|
+
return this.filterByHosted(filtered);
|
|
2017
|
+
}
|
|
2018
|
+
trackFavoriteCounts = modifier((_el, [urls, _revision]) => {
|
|
2019
|
+
if (urls) this.realm.loadIndexCounts(urls.split(" "));
|
|
2020
|
+
});
|
|
2021
|
+
get favoriteCountsKey() {
|
|
2022
|
+
return this.favoriteRealmIdentifiers.join(" ");
|
|
2023
|
+
}
|
|
2024
|
+
get userWorkspacesEmptyMessage() {
|
|
2025
|
+
if (this.sortOrder === "hosted-only" && this.filteredUserRealmIdentifiers.length === 0) return "No matching results";
|
|
2026
|
+
return null;
|
|
2027
|
+
}
|
|
2028
|
+
get catalogEmptyMessage() {
|
|
2029
|
+
if (this.filteredCatalogRealmIdentifiers.length > 0) return null;
|
|
2030
|
+
return this.sortOrder === "hosted-only" ? "No matching results" : "No catalogs yet. Add public realms with the gear.";
|
|
2031
|
+
}
|
|
2032
|
+
get favoritesEmptyMessage() {
|
|
2033
|
+
if (this.matrixService.workspaceFavorites.length === 0) return "You have no favorites yet";
|
|
2034
|
+
if (this.favoriteRealmIdentifiers.length === 0) return "No matching results";
|
|
2035
|
+
return null;
|
|
2036
|
+
}
|
|
2037
|
+
static {
|
|
2038
|
+
decorateFieldV2(this.prototype, "workspaceGridWidth", [tracked$1], function() {
|
|
2039
|
+
return 0;
|
|
2040
|
+
});
|
|
2041
|
+
}
|
|
2042
|
+
#workspaceGridWidth = (initializeDeferredDecorator(this, "workspaceGridWidth"), void 0);
|
|
2043
|
+
static {
|
|
2044
|
+
decorateFieldV2(this.prototype, "workspaceTileWidth", [tracked$1], function() {
|
|
2045
|
+
return 0;
|
|
2046
|
+
});
|
|
2047
|
+
}
|
|
2048
|
+
#workspaceTileWidth = (initializeDeferredDecorator(this, "workspaceTileWidth"), void 0);
|
|
2049
|
+
static {
|
|
2050
|
+
decorateFieldV2(this.prototype, "workspaceTileGap", [tracked$1], function() {
|
|
2051
|
+
return 0;
|
|
2052
|
+
});
|
|
2053
|
+
}
|
|
2054
|
+
#workspaceTileGap = (initializeDeferredDecorator(this, "workspaceTileGap"), void 0);
|
|
2055
|
+
get tilesPerRow() {
|
|
2056
|
+
if (!this.workspaceTileWidth) return 3;
|
|
2057
|
+
let perRow = Math.floor((this.workspaceGridWidth + this.workspaceTileGap) / (this.workspaceTileWidth + this.workspaceTileGap));
|
|
2058
|
+
return Math.max(1, perRow);
|
|
2059
|
+
}
|
|
2060
|
+
get favoritesSlotCount() {
|
|
2061
|
+
return Math.ceil(this.tilesPerRow / 2);
|
|
2062
|
+
}
|
|
2063
|
+
get favoritesSlotWidth() {
|
|
2064
|
+
if (!this.workspaceTileWidth) return null;
|
|
2065
|
+
let n = this.favoritesSlotCount;
|
|
2066
|
+
return (this.tilesPerRow * this.workspaceTileWidth + (this.tilesPerRow - 1) * this.workspaceTileGap - (n - 1) * this.workspaceTileGap) / n;
|
|
2067
|
+
}
|
|
2068
|
+
get favoritesTileWidthPx() {
|
|
2069
|
+
let width = this.favoritesSlotWidth;
|
|
2070
|
+
return width === null ? void 0 : `${width}px`;
|
|
2071
|
+
}
|
|
2072
|
+
measureWorkspaceGrid = modifier((el) => {
|
|
2073
|
+
let measure = () => {
|
|
2074
|
+
this.workspaceGridWidth = el.clientWidth;
|
|
2075
|
+
let tile = el.querySelector(".workspace-card button.workspace");
|
|
2076
|
+
if (tile) this.workspaceTileWidth = tile.getBoundingClientRect().width;
|
|
2077
|
+
let gap = parseFloat(getComputedStyle(el).columnGap);
|
|
2078
|
+
if (!Number.isNaN(gap)) this.workspaceTileGap = gap;
|
|
2079
|
+
};
|
|
2080
|
+
if (typeof ResizeObserver === "undefined") return;
|
|
2081
|
+
let ro = new ResizeObserver(measure);
|
|
2082
|
+
ro.observe(el);
|
|
2083
|
+
return () => ro.disconnect();
|
|
2084
|
+
});
|
|
2085
|
+
static {
|
|
2086
|
+
decorateFieldV2(this.prototype, "selectedIndex", [tracked$1], function() {
|
|
2087
|
+
return null;
|
|
2088
|
+
});
|
|
2089
|
+
}
|
|
2090
|
+
#selectedIndex = (initializeDeferredDecorator(this, "selectedIndex"), void 0);
|
|
2091
|
+
get favoritesCount() {
|
|
2092
|
+
return this.favoriteRealmIdentifiers.length;
|
|
2093
|
+
}
|
|
2094
|
+
get userWorkspacesCount() {
|
|
2095
|
+
return this.filteredUserRealmIdentifiers.length;
|
|
2096
|
+
}
|
|
2097
|
+
get isAddWorkspaceShown() {
|
|
2098
|
+
return !this.userWorkspacesEmptyMessage;
|
|
2099
|
+
}
|
|
2100
|
+
get renderedCatalogCount() {
|
|
2101
|
+
if (this.catalogEmptyMessage) return 0;
|
|
2102
|
+
return this.filteredCatalogRealmIdentifiers.length;
|
|
2103
|
+
}
|
|
2104
|
+
get addWorkspaceNavIndex() {
|
|
2105
|
+
return this.favoritesCount;
|
|
2106
|
+
}
|
|
2107
|
+
get userWorkspacesNavBase() {
|
|
2108
|
+
return this.favoritesCount + (this.isAddWorkspaceShown ? 1 : 0);
|
|
2109
|
+
}
|
|
2110
|
+
get catalogNavBase() {
|
|
2111
|
+
return this.userWorkspacesNavBase + this.userWorkspacesCount;
|
|
2112
|
+
}
|
|
2113
|
+
get selectableCount() {
|
|
2114
|
+
return this.catalogNavBase + this.renderedCatalogCount;
|
|
2115
|
+
}
|
|
2116
|
+
get defaultSelectedIndex() {
|
|
2117
|
+
if (this.favoritesCount > 0) return 0;
|
|
2118
|
+
if (this.userWorkspacesCount > 0) return this.userWorkspacesNavBase;
|
|
2119
|
+
if (this.renderedCatalogCount > 0) return this.catalogNavBase;
|
|
2120
|
+
return 0;
|
|
2121
|
+
}
|
|
2122
|
+
get currentIndex() {
|
|
2123
|
+
let count = this.selectableCount;
|
|
2124
|
+
if (count === 0) return 0;
|
|
2125
|
+
let index = this.selectedIndex ?? this.defaultSelectedIndex;
|
|
2126
|
+
return Math.min(Math.max(index, 0), count - 1);
|
|
2127
|
+
}
|
|
2128
|
+
get isSelectionActive() {
|
|
2129
|
+
return this.selectedIndex !== null;
|
|
2130
|
+
}
|
|
2131
|
+
onFocusIn(event) {
|
|
2132
|
+
let tile = event.target.closest("[data-nav-index]");
|
|
2133
|
+
if (!tile) return;
|
|
2134
|
+
let index = Number(tile.dataset.navIndex);
|
|
2135
|
+
if (!Number.isNaN(index) && index !== this.currentIndex) this.selectedIndex = index;
|
|
2136
|
+
}
|
|
2137
|
+
static {
|
|
2138
|
+
decorateMethodV2(this.prototype, "onFocusIn", [action]);
|
|
2139
|
+
}
|
|
2140
|
+
onKeydown(event) {
|
|
2141
|
+
let kbEvent = event;
|
|
2142
|
+
let container = kbEvent.currentTarget;
|
|
2143
|
+
let count = this.selectableCount;
|
|
2144
|
+
if (count === 0) return;
|
|
2145
|
+
if (!kbEvent.target.closest("[data-nav-index]")) return;
|
|
2146
|
+
switch (kbEvent.key) {
|
|
2147
|
+
case "ArrowRight":
|
|
2148
|
+
event.preventDefault();
|
|
2149
|
+
this.selectedIndex = Math.min(this.currentIndex + 1, count - 1);
|
|
2150
|
+
break;
|
|
2151
|
+
case "ArrowLeft":
|
|
2152
|
+
event.preventDefault();
|
|
2153
|
+
this.selectedIndex = Math.max(this.currentIndex - 1, 0);
|
|
2154
|
+
break;
|
|
2155
|
+
case "ArrowDown":
|
|
2156
|
+
event.preventDefault();
|
|
2157
|
+
this.moveVertically(container, 1);
|
|
2158
|
+
break;
|
|
2159
|
+
case "ArrowUp":
|
|
2160
|
+
event.preventDefault();
|
|
2161
|
+
this.moveVertically(container, -1);
|
|
2162
|
+
break;
|
|
2163
|
+
case "Enter": {
|
|
2164
|
+
event.preventDefault();
|
|
2165
|
+
event.stopPropagation();
|
|
2166
|
+
let selected = container.querySelector(`[data-nav-index='${this.currentIndex}']`);
|
|
2167
|
+
if (selected instanceof HTMLElement) selected.click();
|
|
2168
|
+
break;
|
|
2169
|
+
}
|
|
2170
|
+
}
|
|
2171
|
+
}
|
|
2172
|
+
static {
|
|
2173
|
+
decorateMethodV2(this.prototype, "onKeydown", [action]);
|
|
2174
|
+
}
|
|
2175
|
+
moveVertically(container, direction) {
|
|
2176
|
+
let tiles = [...container.querySelectorAll("[data-nav-index]")].map((element) => ({
|
|
2177
|
+
index: Number(element.dataset.navIndex),
|
|
2178
|
+
rect: element.getBoundingClientRect()
|
|
2179
|
+
}));
|
|
2180
|
+
let current = tiles.find((tile) => tile.index === this.currentIndex);
|
|
2181
|
+
if (!current) return;
|
|
2182
|
+
let currentCenterX = current.rect.left + current.rect.width / 2;
|
|
2183
|
+
let candidates = tiles.filter((tile) => direction === 1 ? tile.rect.top > current.rect.top + 1 : tile.rect.top < current.rect.top - 1);
|
|
2184
|
+
if (candidates.length === 0) return;
|
|
2185
|
+
let targetRowTop = direction === 1 ? Math.min(...candidates.map((tile) => tile.rect.top)) : Math.max(...candidates.map((tile) => tile.rect.top));
|
|
2186
|
+
let nearest = candidates.filter((tile) => Math.abs(tile.rect.top - targetRowTop) <= 1).reduce((closest, tile) => {
|
|
2187
|
+
let closestDx = Math.abs(closest.rect.left + closest.rect.width / 2 - currentCenterX);
|
|
2188
|
+
return Math.abs(tile.rect.left + tile.rect.width / 2 - currentCenterX) < closestDx ? tile : closest;
|
|
2189
|
+
});
|
|
2190
|
+
this.selectedIndex = nearest.index;
|
|
2191
|
+
}
|
|
2192
|
+
static {
|
|
2193
|
+
setComponentTemplate(templateFactory({
|
|
2194
|
+
"id": "v2Ww8hTY",
|
|
2195
|
+
"block": "[[[11,0],[24,0,\"workspace-chooser\"],[24,\"data-test-workspace-chooser\",\"\"],[24,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"],[4,[32,0],[\"keydown\",[30,0,[\"onKeydown\"]]],null],[4,[32,0],[\"focusin\",[30,0,[\"onFocusIn\"]]],null],[12],[1,\"\\n\"],[41,[30,1],[[[40,[[[1,\" \"],[10,0],[14,0,\"sort-controls\"],[14,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"],[12],[1,\"\\n \"],[8,[32,1],[[24,0,\"sort-select\"],[24,\"aria-label\",\"Filter workspaces\"],[24,\"data-test-sort-dropdown-trigger\",\"\"],[24,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"]],[[\"@dropdownClass\",\"@options\",\"@selected\",\"@onChange\",\"@matchTriggerWidth\"],[\"workspace-chooser-sort-dropdown\",[30,0,[\"sortOptions\"]],[30,0,[\"selectedSortOption\"]],[30,0,[\"onSortChange\"]],false]],[[\"default\"],[[[[1,\"\\n \"],[8,[30,2,[\"icon\"]],[[24,\"width\",\"16\"],[24,\"height\",\"16\"],[24,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"]],null,null],[1,\"\\n \"],[10,1],[14,0,\"sort-label\"],[14,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"],[12],[1,[30,2,[\"label\"]]],[13],[1,\"\\n \"]],[2]]]]],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],\"%cursor:0%\",[28,[31,2],[[30,1]],null]]],[]],null],[1,\" \"],[10,0],[14,0,\"workspace-chooser__content boxel-dark-scrollbar\"],[14,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"],[12],[1,\"\\n\"],[41,[30,0,[\"unreachableRealmServers\",\"length\"]],[[[1,\" \"],[10,0],[14,0,\"unreachable-notice\"],[14,\"role\",\"status\"],[14,\"data-test-unreachable-realm-servers-notice\",\"\"],[14,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"],[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-d65ff592b2-89330100a6\",\"\"]],null,null],[1,\"\\n \"],[10,1],[14,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"],[12],[1,[30,0,[\"unreachableRealmServersMessage\"]]],[13],[1,\"\\n\"],[41,[30,0,[\"isRetryingUnreachableRealmServers\"]],[[[1,\" \"],[8,[32,2],[[24,0,\"unreachable-notice-spinner\"],[24,\"aria-hidden\",\"true\"],[24,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"]],[[\"@color\",\"@size\"],[\"currentColor\",\"1.125rem\"]],null],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[10,0],[14,0,\"sections-wrapper\"],[14,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"],[12],[1,\"\\n \"],[10,0],[14,0,\"workspace-section\"],[14,\"data-test-favorites-section\",\"\"],[14,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"],[12],[1,\"\\n \"],[10,0],[14,0,\"section-header\"],[14,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"],[12],[1,\"\\n \"],[8,[32,3],[[24,\"width\",\"20\"],[24,\"height\",\"20\"],[24,0,\"section-header-icon\"],[24,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"]],null,null],[1,\"\\n \"],[10,1],[14,0,\"workspace-chooser__title\"],[14,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"],[12],[1,\"Favorites\"],[13],[1,\"\\n \"],[13],[1,\"\\n\"],[41,[30,0,[\"favoritesEmptyMessage\"]],[[[1,\" \"],[10,1],[14,0,\"section-empty\"],[14,\"data-test-favorites-empty\",\"\"],[14,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"],[12],[1,[30,0,[\"favoritesEmptyMessage\"]]],[13],[1,\"\\n\"]],[]],[[[1,\" \"],[11,0],[24,0,\"workspace-list\"],[24,\"data-test-favorites-list\",\"\"],[24,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"],[4,[30,0,[\"trackFavoriteCounts\"]],[[30,0,[\"favoriteCountsKey\"]],[30,0,[\"realm\",\"indexCountsRevision\"]]],null],[12],[1,\"\\n\"],[42,[28,[31,4],[[28,[31,4],[[30,0,[\"favoriteRealmIdentifiers\"]]],null]],null],null,[[[1,\" \"],[8,[32,4],[[24,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"]],[[\"@realmIdentifier\",\"@navIndex\",\"@isSelected\",\"@selectionActive\",\"@isFavoritesSection\",\"@enlargedWidth\"],[[30,3],[30,4],[28,[32,5],[[30,0,[\"currentIndex\"]],[30,4]],null],[30,0,[\"isSelectionActive\"]],true,[30,0,[\"favoritesTileWidthPx\"]]]],null],[1,\"\\n\"]],[3,4]],null],[1,\" \"],[13],[1,\"\\n\"]],[]]],[1,\" \"],[13],[1,\"\\n \"],[10,0],[14,0,\"workspace-section\"],[14,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"],[12],[1,\"\\n \"],[10,0],[14,0,\"section-header\"],[14,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"],[12],[1,\"\\n \"],[8,[32,6],[[24,\"width\",\"20\"],[24,\"height\",\"20\"],[24,0,\"section-header-icon\"],[24,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"]],null,null],[1,\"\\n \"],[10,1],[14,0,\"workspace-chooser__title\"],[14,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"],[12],[1,\"Your Workspaces\"],[13],[1,\"\\n \"],[13],[1,\"\\n\"],[41,[30,0,[\"userWorkspacesEmptyMessage\"]],[[[1,\" \"],[10,1],[14,0,\"section-empty\"],[14,\"data-test-workspaces-empty\",\"\"],[14,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"],[12],[1,[30,0,[\"userWorkspacesEmptyMessage\"]]],[13],[1,\"\\n\"]],[]],[[[1,\" \"],[11,0],[24,0,\"workspace-list\"],[24,\"data-test-workspace-list\",\"\"],[24,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"],[4,[30,0,[\"measureWorkspaceGrid\"]],null,null],[12],[1,\"\\n \"],[8,[32,7],[[24,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"]],[[\"@navIndex\",\"@isSelected\"],[[30,0,[\"addWorkspaceNavIndex\"]],[28,[32,5],[[30,0,[\"currentIndex\"]],[30,0,[\"addWorkspaceNavIndex\"]]],null]]],null],[1,\"\\n\"],[41,[30,0,[\"matrixService\",\"isInitializingNewUser\"]],[[[1,\" \"],[8,[32,8],[[24,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"]],null,null],[1,\"\\n\"]],[]],null],[42,[28,[31,4],[[28,[31,4],[[30,0,[\"filteredUserRealmIdentifiers\"]]],null]],null],null,[[[44,[[28,[32,9],[[30,0,[\"userWorkspacesNavBase\"]],[30,6]],null]],[[[1,\" \"],[8,[32,4],[[24,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"]],[[\"@realmIdentifier\",\"@showMenu\",\"@navIndex\",\"@isSelected\",\"@selectionActive\"],[[30,5],true,[30,7],[28,[32,5],[[30,0,[\"currentIndex\"]],[30,7]],null],[30,0,[\"isSelectionActive\"]]]],null],[1,\"\\n\"]],[7]]]],[5,6]],null],[1,\" \"],[13],[1,\"\\n\"]],[]]],[1,\" \"],[13],[1,\"\\n \"],[10,0],[14,0,\"workspace-section\"],[14,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"],[12],[1,\"\\n \"],[10,0],[14,0,\"section-header\"],[14,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"],[12],[1,\"\\n \"],[8,[32,10],[[24,\"width\",\"20\"],[24,\"height\",\"20\"],[24,0,\"section-header-icon\"],[24,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"]],null,null],[1,\"\\n \"],[10,1],[14,0,\"workspace-chooser__title\"],[14,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"],[12],[1,\"Catalogs\"],[13],[1,\"\\n \"],[8,[32,11],[[24,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"]],null,null],[1,\"\\n \"],[13],[1,\"\\n\"],[41,[30,0,[\"catalogEmptyMessage\"]],[[[1,\" \"],[10,1],[14,0,\"section-empty\"],[14,\"data-test-catalog-empty\",\"\"],[14,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"],[12],[1,[30,0,[\"catalogEmptyMessage\"]]],[13],[1,\"\\n\"]],[]],[[[1,\" \"],[10,0],[14,0,\"workspace-list\"],[14,\"data-test-catalog-list\",\"\"],[14,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"],[12],[1,\"\\n\"],[42,[28,[31,4],[[28,[31,4],[[30,0,[\"filteredCatalogRealmIdentifiers\"]]],null]],null],null,[[[44,[[28,[32,9],[[30,0,[\"catalogNavBase\"]],[30,9]],null]],[[[1,\" \"],[8,[32,4],[[24,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"]],[[\"@realmIdentifier\",\"@navIndex\",\"@isSelected\",\"@selectionActive\"],[[30,8],[30,10],[28,[32,5],[[30,0,[\"currentIndex\"]],[30,10]],null],[30,0,[\"isSelectionActive\"]]]],null],[1,\"\\n\"]],[10]]]],[8,9]],null],[1,\" \"],[13],[1,\"\\n\"]],[]]],[1,\" \"],[13],[1,\"\\n \"],[10,0],[14,0,\"workspace-section\"],[14,\"data-test-archived-section\",\"\"],[14,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"],[12],[1,\"\\n \"],[11,\"button\"],[16,0,[29,[\"section-header section-header--toggle\\n \",[52,[30,0,[\"isArchivedExpanded\"]],\"is-expanded\"]]]],[16,\"aria-expanded\",[29,[[52,[30,0,[\"isArchivedExpanded\"]],\"true\",\"false\"]]]],[24,\"data-test-archived-toggle\",\"\"],[24,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"],[24,4,\"button\"],[4,[32,0],[\"click\",[30,0,[\"toggleArchived\"]]],null],[12],[1,\"\\n \"],[8,[32,12],[[24,\"width\",\"12\"],[24,\"height\",\"12\"],[24,0,\"section-disclosure-icon\"],[24,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"]],null,null],[1,\"\\n \"],[8,[32,13],[[24,\"width\",\"20\"],[24,\"height\",\"20\"],[24,0,\"section-header-icon\"],[24,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"]],null,null],[1,\"\\n \"],[10,1],[14,0,\"workspace-chooser__title\"],[14,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"],[12],[1,\"Archived\"],[13],[1,\"\\n\"],[41,[30,0,[\"showArchivedCount\"]],[[[1,\" \"],[10,1],[14,0,\"section-count\"],[14,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"],[12],[1,[30,0,[\"archivedRealms\",\"length\"]]],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n\"],[41,[30,0,[\"isArchivedExpanded\"]],[[[41,[30,0,[\"loadArchivedRealmsTask\",\"isRunning\"]],[[[1,\" \"],[8,[32,8],[[24,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"]],null,null],[1,\"\\n\"]],[]],[[[41,[30,0,[\"archivedRealms\",\"length\"]],[[[1,\" \"],[10,0],[14,0,\"workspace-list\"],[14,\"data-test-archived-list\",\"\"],[14,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"],[12],[1,\"\\n\"],[42,[28,[31,4],[[28,[31,4],[[30,0,[\"archivedRealms\"]]],null]],null],null,[[[1,\" \"],[8,[32,14],[[24,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"]],[[\"@archivedRealm\"],[[30,11]]],null],[1,\"\\n\"]],[11]],null],[1,\" \"],[13],[1,\"\\n\"]],[]],[[[1,\" \"],[10,1],[14,0,\"section-empty\"],[14,\"data-test-archived-empty\",\"\"],[14,\"data-scopedcss-d65ff592b2-89330100a6\",\"\"],[12],[1,\"\\n No archived workspaces\\n \"],[13],[1,\"\\n \"]],[]]]],[]]]],[]],null],[1,\" \"],[13],[1,\"\\n \"],[13],[1,\"\\n \"],[13],[1,\"\\n\"],[13],[1,\"\\n\"]],[\"@topBarCenterElement\",\"option\",\"realmIdentifier\",\"i\",\"realmIdentifier\",\"i\",\"navIndex\",\"realmIdentifier\",\"i\",\"navIndex\",\"archivedRealm\"],[\"if\",\"in-element\",\"-in-el-null\",\"each\",\"-track-array\",\"let\"]]",
|
|
2196
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/host/app/components/operator-mode/workspace-chooser/index.gts",
|
|
2197
|
+
"scope": () => [
|
|
2198
|
+
on,
|
|
2199
|
+
BoxelSelect,
|
|
2200
|
+
LoadingIndicator,
|
|
2201
|
+
IconComponent$7,
|
|
2202
|
+
Workspace,
|
|
2203
|
+
eq,
|
|
2204
|
+
IconComponent$8,
|
|
2205
|
+
AddWorkspace,
|
|
2206
|
+
WorkspaceLoadingIndicator,
|
|
2207
|
+
add,
|
|
2208
|
+
IconComponent$9,
|
|
2209
|
+
ManageCatalogs,
|
|
2210
|
+
IconComponent$10,
|
|
2211
|
+
IconComponent$11,
|
|
2212
|
+
ArchivedWorkspace
|
|
2213
|
+
],
|
|
2214
|
+
"isStrictMode": true
|
|
2215
|
+
}), this);
|
|
2216
|
+
}
|
|
2217
|
+
};
|
|
2218
|
+
//#endregion
|
|
2219
|
+
export { leadWith as n, WorkspaceChooser as t };
|