@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.
Files changed (995) hide show
  1. package/README.md +12 -0
  2. package/bundled-test-harness/assets/account-switch-failed-GCSVbJML.js +23 -0
  3. package/bundled-test-harness/assets/account-switch-failed-GsWni_Gk.css +18 -0
  4. package/bundled-test-harness/assets/account-switch-failed-test-CdZWNths.js +45 -0
  5. package/bundled-test-harness/assets/add-workspace-c7L50Gx8.js +141 -0
  6. package/bundled-test-harness/assets/add-workspace-test-BZxHa6Pe.js +72 -0
  7. package/bundled-test-harness/assets/advanced-color-picker-0pGF-3WG.js +504 -0
  8. package/bundled-test-harness/assets/advanced-color-picker-pbO4HWc_.js +2 -0
  9. package/bundled-test-harness/assets/ai-assistant-test-Dnm4o9vK.js +2211 -0
  10. package/bundled-test-harness/assets/ai-module-creation-test-C6253CMt.js +151 -0
  11. package/bundled-test-harness/assets/aibot-message-miKyGeKk.js +278 -0
  12. package/bundled-test-harness/assets/app-i8pGdQkw.js +22855 -0
  13. package/bundled-test-harness/assets/app-zC7o6PyQ.css +2718 -0
  14. package/bundled-test-harness/assets/audio-file-def-DHnydP0t.js +133 -0
  15. package/bundled-test-harness/assets/auth-container-BP2gSoo4.css +51 -0
  16. package/bundled-test-harness/assets/auth-container-DN94iVfX.js +24 -0
  17. package/bundled-test-harness/assets/avif-meta-extractor-Bo5zRX1V.js +162 -0
  18. package/bundled-test-harness/assets/base64-image-B0RYxzHT.js +2 -0
  19. package/bundled-test-harness/assets/base64-image-Bxjqdwew.js +262 -0
  20. package/bundled-test-harness/assets/big-integer-7RLj5_7H.js +89 -0
  21. package/bundled-test-harness/assets/big-integer-C9sJxKVy.js +2 -0
  22. package/bundled-test-harness/assets/binary-upload-dedupe-test-DZo3EaV0.js +308 -0
  23. package/bundled-test-harness/assets/boolean-CcKPYUph.js +94 -0
  24. package/bundled-test-harness/assets/boolean-DvsSmtM7.js +2 -0
  25. package/bundled-test-harness/assets/brand-functional-palette-KpVSY2Sa.js +137 -0
  26. package/bundled-test-harness/assets/brand-logo-DDiOec0t.js +295 -0
  27. package/bundled-test-harness/assets/broken-link-template-test-DAngUbFJ.js +192 -0
  28. package/bundled-test-harness/assets/bundled-base-C_lumba6.js +254 -0
  29. package/bundled-test-harness/assets/bundled-base-modules-test-CSF7Rl4Z.js +54 -0
  30. package/bundled-test-harness/assets/buried-stack-item-scroll-test-B0J_EP88.js +236 -0
  31. package/bundled-test-harness/assets/bxl-expression-test-Dej7WgI6.js +250 -0
  32. package/bundled-test-harness/assets/can-invoke-test-elyUcOKT.js +401 -0
  33. package/bundled-test-harness/assets/card-api-CjWXCkqh.js +8 -0
  34. package/bundled-test-harness/assets/card-api-Dzje0smT.js +4393 -0
  35. package/bundled-test-harness/assets/card-api-test-DA8d4Ooc.js +198 -0
  36. package/bundled-test-harness/assets/card-basics-test-mp1Odo-l.js +5364 -0
  37. package/bundled-test-harness/assets/card-chooser-paging-test-y8OfboYd.js +235 -0
  38. package/bundled-test-harness/assets/card-chooser-test-nmg2zkDj.js +393 -0
  39. package/bundled-test-harness/assets/card-collection-BXiO3i7R.js +118 -0
  40. package/bundled-test-harness/assets/card-context-search-results-Dbhn7lvW.js +30 -0
  41. package/bundled-test-harness/assets/card-context-search-results-test-DVXT-YC5.js +184 -0
  42. package/bundled-test-harness/assets/card-def-field-def-relationships-test-mX4rxrtO.js +562 -0
  43. package/bundled-test-harness/assets/card-delete-test-BxFsqFnX.js +466 -0
  44. package/bundled-test-harness/assets/card-error-C-7hjxu9.js +72 -0
  45. package/bundled-test-harness/assets/card-error-awaiting-index-test-BvfY2eaW.js +53 -0
  46. package/bundled-test-harness/assets/card-error-detail-nMwopDir.js +271 -0
  47. package/bundled-test-harness/assets/card-info-CTFxdohf.js +2 -0
  48. package/bundled-test-harness/assets/card-list-B9QrkJ97.js +2 -0
  49. package/bundled-test-harness/assets/card-list-XbwLCXZS.js +202 -0
  50. package/bundled-test-harness/assets/card-resource-JGLjQUy6.js +86 -0
  51. package/bundled-test-harness/assets/cards-grid-CWG41hZE.js +344 -0
  52. package/bundled-test-harness/assets/cards-grid-DSpX99p6.js +2 -0
  53. package/bundled-test-harness/assets/cards-grid-layout-Bht0LwZy.js +2 -0
  54. package/bundled-test-harness/assets/cards-grid-layout-CdpKlHUb.js +111 -0
  55. package/bundled-test-harness/assets/check-correctness-test-C4BrUeKA.js +554 -0
  56. package/bundled-test-harness/assets/clip-BEVvLrXx.js +2 -0
  57. package/bundled-test-harness/assets/clip-CoB714qX.js +92 -0
  58. package/bundled-test-harness/assets/code-ref-C2uguisI.js +2 -0
  59. package/bundled-test-harness/assets/code-ref-Cy7sV5a4.js +138 -0
  60. package/bundled-test-harness/assets/code-submode-availability-test-BsA_Ul01.js +198 -0
  61. package/bundled-test-harness/assets/code-submode-test-DkBhpEPB.js +1839 -0
  62. package/bundled-test-harness/assets/codeblocks-test-B1eZ2_JF.js +418 -0
  63. package/bundled-test-harness/assets/codemirror-editor-C6pxSm5y.js +2 -0
  64. package/bundled-test-harness/assets/codemirror-editor-DzM46Cd8.js +701 -0
  65. package/bundled-test-harness/assets/codemirror-embed-toolbar-test-BemP-ZdG.js +366 -0
  66. package/bundled-test-harness/assets/color-C-jGNFWZ.js +2 -0
  67. package/bundled-test-harness/assets/color-field-test-DPIRaBec.js +212 -0
  68. package/bundled-test-harness/assets/color-picker-field-Bv4IjS-d.js +139 -0
  69. package/bundled-test-harness/assets/color-picker-field-D1bYCQIg.js +2 -0
  70. package/bundled-test-harness/assets/color-wheel-picker-IIaCQplL.js +283 -0
  71. package/bundled-test-harness/assets/color-wheel-picker-Kw-UN3kV.js +2 -0
  72. package/bundled-test-harness/assets/color-zzCBneih.js +65 -0
  73. package/bundled-test-harness/assets/command-data-BMBtjT1E.js +95 -0
  74. package/bundled-test-harness/assets/command-data-BXC5Z0oA.js +2 -0
  75. package/bundled-test-harness/assets/compaction-test-CxUKnxlQ.js +150 -0
  76. package/bundled-test-harness/assets/components-Ct_agx0G.js +14294 -0
  77. package/bundled-test-harness/assets/computed-test-C-lpGQQ3.js +1320 -0
  78. package/bundled-test-harness/assets/container-BdPu8rvc.css +5565 -0
  79. package/bundled-test-harness/assets/container-Dj-5prh9.js +11288 -0
  80. package/bundled-test-harness/assets/contains-many-component-CAWqzX8W.js +2 -0
  81. package/bundled-test-harness/assets/contrast-checker-addon-BTLD7oMx.js +2 -0
  82. package/bundled-test-harness/assets/contrast-checker-addon-DBzizR04.js +71 -0
  83. package/bundled-test-harness/assets/convert-to-class-name-test-zZuKxYvF.js +17 -0
  84. package/bundled-test-harness/assets/coordinate-Bw8va6tO.js +48 -0
  85. package/bundled-test-harness/assets/copy-file-to-realm-test-DtCKPzqj.js +148 -0
  86. package/bundled-test-harness/assets/country-B_tWpLlO.js +199 -0
  87. package/bundled-test-harness/assets/create-file-modal-D-VPyEYp.js +570 -0
  88. package/bundled-test-harness/assets/create-listing-modal-test-hyLkQY0u.js +273 -0
  89. package/bundled-test-harness/assets/create-listing-pr-request-test-rjWFA_5S.js +117 -0
  90. package/bundled-test-harness/assets/create-spec-test-HKIxZGxK.js +256 -0
  91. package/bundled-test-harness/assets/create-specs-9-ELVyJP.js +215 -0
  92. package/bundled-test-harness/assets/create-submission-workflow-test-DNZrbRX8.js +132 -0
  93. package/bundled-test-harness/assets/credential-fields-test-xPEdA911.js +157 -0
  94. package/bundled-test-harness/assets/css-value-Du3HL39X.js +48 -0
  95. package/bundled-test-harness/assets/csv-file-def-EHRmilrp.js +277 -0
  96. package/bundled-test-harness/assets/currency-y6ZCHIqG.js +134 -0
  97. package/bundled-test-harness/assets/date-B27PrSFT.js +183 -0
  98. package/bundled-test-harness/assets/date-CiP5Eb9i.js +2 -0
  99. package/bundled-test-harness/assets/date-time-fields-test-Clf5vxRW.js +359 -0
  100. package/bundled-test-harness/assets/datetime-BEbR9YgU.js +201 -0
  101. package/bundled-test-harness/assets/datetime-DPnrt1wl.js +2 -0
  102. package/bundled-test-harness/assets/datetime-stamp-AuT7F7qn.js +2 -0
  103. package/bundled-test-harness/assets/datetime-stamp-CGwP2P3f.js +81 -0
  104. package/bundled-test-harness/assets/day-BFLxZ9bQ.js +2 -0
  105. package/bundled-test-harness/assets/day-CQoEkqgE.js +113 -0
  106. package/bundled-test-harness/assets/debug-message-test-CzgOpfcI.js +117 -0
  107. package/bundled-test-harness/assets/dist-B-fYvxfL.js +389 -0
  108. package/bundled-test-harness/assets/dist-C2IXvIKX.js +323 -0
  109. package/bundled-test-harness/assets/dist-CdNZu43l.js +1710 -0
  110. package/bundled-test-harness/assets/docx-file-def-BQMw460_.js +60 -0
  111. package/bundled-test-harness/assets/docx-meta-extractor-DBlmH_kV.js +60 -0
  112. package/bundled-test-harness/assets/docx-meta-extractor-Dw4gZ0ae.js +2 -0
  113. package/bundled-test-harness/assets/duration-B0SnEiw1.js +184 -0
  114. package/bundled-test-harness/assets/duration-DbjJTFeA.js +2 -0
  115. package/bundled-test-harness/assets/email-C-8cyWiQ.js +80 -0
  116. package/bundled-test-harness/assets/email-field-test-BOBmvQqx.js +75 -0
  117. package/bundled-test-harness/assets/email-xUgCst-p.js +2 -0
  118. package/bundled-test-harness/assets/enum-BWiCyJlu.js +167 -0
  119. package/bundled-test-harness/assets/enum-CzYjivhO.js +2 -0
  120. package/bundled-test-harness/assets/enum-field-test-Bea9EsQR.js +953 -0
  121. package/bundled-test-harness/assets/error-display-test-Cbl2D_0c.js +343 -0
  122. package/bundled-test-harness/assets/ethereum-address-Bw_J05bD.js +78 -0
  123. package/bundled-test-harness/assets/ethereum-address-C9wHMBt3.js +2 -0
  124. package/bundled-test-harness/assets/expiration-warning-BHcJEjZt.js +90 -0
  125. package/bundled-test-harness/assets/expiration-warning-_G8SKZd0.js +2 -0
  126. package/bundled-test-harness/assets/externals-CKblKBo1.js +4393 -0
  127. package/bundled-test-harness/assets/fallback-banner-BqCrvTDt.js +24 -0
  128. package/bundled-test-harness/assets/fallback-banner-live-delete-test-D_AYMvf6.js +207 -0
  129. package/bundled-test-harness/assets/fallback-banner-test-B8Ne9a5g.js +225 -0
  130. package/bundled-test-harness/assets/fallback-banner-test-C7oaSxd1.js +53 -0
  131. package/bundled-test-harness/assets/fallback-models-test-DY-PvU9k.js +161 -0
  132. package/bundled-test-harness/assets/field-component-Bj8YthPE.js +2 -0
  133. package/bundled-test-harness/assets/field-configuration-test-B5LztQ47.js +548 -0
  134. package/bundled-test-harness/assets/field-edit-Cx_haspD.js +36 -0
  135. package/bundled-test-harness/assets/field-edit-DQZWUz3F.js +2 -0
  136. package/bundled-test-harness/assets/field-markdown-domain-test-DnqK3CrE.js +616 -0
  137. package/bundled-test-harness/assets/field-markdown-oversize-test-BEpbXIvl.js +88 -0
  138. package/bundled-test-harness/assets/field-markdown-primitives-test-BDORWoOk.js +365 -0
  139. package/bundled-test-harness/assets/field-markdown-specialized-test-BmIzadYq.js +534 -0
  140. package/bundled-test-harness/assets/field-test-helpers-CRF9-jFw.js +45 -0
  141. package/bundled-test-harness/assets/file-api-DPMJghBY.js +7 -0
  142. package/bundled-test-harness/assets/file-attachment-test-DFLXg3xV.js +796 -0
  143. package/bundled-test-harness/assets/file-chooser-panel-test-B4DzCWkt.js +153 -0
  144. package/bundled-test-harness/assets/file-chooser-test-DpjOWgpB.js +504 -0
  145. package/bundled-test-harness/assets/file-def-edit-Bstl7Kkl.js +2 -0
  146. package/bundled-test-harness/assets/file-def-edit-C1dzJxmQ.js +26 -0
  147. package/bundled-test-harness/assets/file-def-embedded-CUy4G7Vc.js +2 -0
  148. package/bundled-test-harness/assets/file-def-embedded-DJs6P5t0.js +38 -0
  149. package/bundled-test-harness/assets/file-def-fitted-BlrBFfLh.js +38 -0
  150. package/bundled-test-harness/assets/file-def-fitted-Bo5Qfkyf.js +2 -0
  151. package/bundled-test-harness/assets/file-def-isolated-BsHydanv.js +38 -0
  152. package/bundled-test-harness/assets/file-def-isolated-Dp-Lc99-.js +2 -0
  153. package/bundled-test-harness/assets/file-def-serialization-test-CISKpt_o.js +89 -0
  154. package/bundled-test-harness/assets/file-menu-items-7_ltrFZq.js +117 -0
  155. package/bundled-test-harness/assets/file-menu-items-BnRG9ydE.js +2 -0
  156. package/bundled-test-harness/assets/file-preview-stage-CV3qZpiK.js +72 -0
  157. package/bundled-test-harness/assets/file-preview-stage-DTA5X8rX.js +2 -0
  158. package/bundled-test-harness/assets/file-shell-embedded-BpmiVzIG.js +2 -0
  159. package/bundled-test-harness/assets/file-shell-embedded-CEv0-6OE.js +68 -0
  160. package/bundled-test-harness/assets/file-shell-fitted-C6k3GnMc.js +2 -0
  161. package/bundled-test-harness/assets/file-shell-fitted-iSTg3PJa.js +98 -0
  162. package/bundled-test-harness/assets/file-shell-isolated-C-pEod2J.js +195 -0
  163. package/bundled-test-harness/assets/file-shell-isolated-DI9oU7ix.js +2 -0
  164. package/bundled-test-harness/assets/file-tree-from-index-BtOOMqnb.js +151 -0
  165. package/bundled-test-harness/assets/file-tree-from-index-test-T8w3hPw_.js +96 -0
  166. package/bundled-test-harness/assets/film-5n9_gRqZ.js +4074 -0
  167. package/bundled-test-harness/assets/film-Ca2Vzlfu.js +13 -0
  168. package/bundled-test-harness/assets/film-DEvhBbBu.js +2 -0
  169. package/bundled-test-harness/assets/fitted-6OGuHgoU.js +2 -0
  170. package/bundled-test-harness/assets/fitted-B2l1jlSp.js +34 -0
  171. package/bundled-test-harness/assets/flac-meta-extractor-BoJqvmDC.js +99 -0
  172. package/bundled-test-harness/assets/font-file-def-Czzt5paT.js +64 -0
  173. package/bundled-test-harness/assets/font-meta-extractor-DQYT_e5b.js +2 -0
  174. package/bundled-test-harness/assets/font-meta-extractor-IHD-pG8V.js +303 -0
  175. package/bundled-test-harness/assets/formatted-aibot-message-test-Djsl8RzE.js +109 -0
  176. package/bundled-test-harness/assets/from-elsewhere-BXcLYxxu.js +131 -0
  177. package/bundled-test-harness/assets/frontmatter-field-CciolgL3.js +41 -0
  178. package/bundled-test-harness/assets/garbage-collection-test-BTOLAfB6.js +403 -0
  179. package/bundled-test-harness/assets/gauge-C1loqGq3.js +2 -0
  180. package/bundled-test-harness/assets/gauge-u8dxl90d.js +106 -0
  181. package/bundled-test-harness/assets/general-test-Cd5WtVvd.js +926 -0
  182. package/bundled-test-harness/assets/get-relationship-membership-state-test-DJAuhOVM.js +1308 -0
  183. package/bundled-test-harness/assets/gif-meta-extractor-tSaPtuYW.js +114 -0
  184. package/bundled-test-harness/assets/glimmer-motion-and-choreo-in-cards-test-DNSy5l59.js +160 -0
  185. package/bundled-test-harness/assets/glimmer-motion-and-choreo-test-B6BbQxYq.js +74 -0
  186. package/bundled-test-harness/assets/helper-m6jA5HmU.js +478 -0
  187. package/bundled-test-harness/assets/host-submode-test-CsgdksBi.js +1243 -0
  188. package/bundled-test-harness/assets/html-file-def-yKtdMSa-.js +82 -0
  189. package/bundled-test-harness/assets/hydratable-card-CxNfbqly.js +147 -0
  190. package/bundled-test-harness/assets/hydratable-card-test-NJ4CI4ey.js +426 -0
  191. package/bundled-test-harness/assets/icons-B3SAtRoj.js +894 -0
  192. package/bundled-test-harness/assets/image-file-def-B0rpS3Yy.js +3 -0
  193. package/bundled-test-harness/assets/image-file-def-DUFmjNL8.js +65 -0
  194. package/bundled-test-harness/assets/image-olOUqgMQ.js +47 -0
  195. package/bundled-test-harness/assets/index-changes-test-D7OE-99k.js +367 -0
  196. package/bundled-test-harness/assets/index-query-engine-test-BBKqgSmg.js +2593 -0
  197. package/bundled-test-harness/assets/inspector-test-DV6Ms2uz.js +1930 -0
  198. package/bundled-test-harness/assets/instance-filter-matcher-test-Bs4kf7E8.js +788 -0
  199. package/bundled-test-harness/assets/interact-submode-creation-and-permissions-test-DIfgRhIN.js +475 -0
  200. package/bundled-test-harness/assets/interact-submode-setup-D4M_e580.js +566 -0
  201. package/bundled-test-harness/assets/is-component-declaration-test-jPGRTVh1.js +50 -0
  202. package/bundled-test-harness/assets/iso-bmff-DHtkSbQM.js +205 -0
  203. package/bundled-test-harness/assets/iso-bmff-zmOHoSVg.js +2 -0
  204. package/bundled-test-harness/assets/isolated-and-edit-BAnwcK1T.js +2 -0
  205. package/bundled-test-harness/assets/job-priority-header-test-7j2f3Dtl.js +81 -0
  206. package/bundled-test-harness/assets/job-scoped-instance-residency-test-DPzVQUL3.js +103 -0
  207. package/bundled-test-harness/assets/join-the-community-Ft5fjeIA.js +86 -0
  208. package/bundled-test-harness/assets/jpg-meta-extractor-Dsq6rZ8F.js +88 -0
  209. package/bundled-test-harness/assets/json-field-CxOZvp3k.js +19 -0
  210. package/bundled-test-harness/assets/json-field-ojdwGD6T.js +2 -0
  211. package/bundled-test-harness/assets/json-file-def-Da_5-zSM.js +298 -0
  212. package/bundled-test-harness/assets/last-modified-date-BnyJsc04.js +43 -0
  213. package/bundled-test-harness/assets/last-modified-date-test-DFl2mo1B.js +28 -0
  214. package/bundled-test-harness/assets/links-to-editor-DO24-71w.js +2 -0
  215. package/bundled-test-harness/assets/links-to-many-component-C7DabwAY.js +2 -0
  216. package/bundled-test-harness/assets/linksto-broken-link-placeholder-test-D4lDhvnQ.js +398 -0
  217. package/bundled-test-harness/assets/linksto-error-sentinel-test-oWgDz00K.js +238 -0
  218. package/bundled-test-harness/assets/linksto-many-broken-link-placeholder-test-CpSl7zJ7.js +354 -0
  219. package/bundled-test-harness/assets/linksto-many-per-slot-access-test-DJY3J8Xl.js +303 -0
  220. package/bundled-test-harness/assets/linksto-sentinel-reload-test-BxzfoONe.js +197 -0
  221. package/bundled-test-harness/assets/linksto-sentinel-roundtrip-test-DyE99km_.js +260 -0
  222. package/bundled-test-harness/assets/linksto-singular-js-access-contract-test-dcWAAgxt.js +196 -0
  223. package/bundled-test-harness/assets/llm-model-DrswiczZ.js +64 -0
  224. package/bundled-test-harness/assets/login-C-EIG0-Q.css +543 -0
  225. package/bundled-test-harness/assets/login-CNeL-9IC.js +408 -0
  226. package/bundled-test-harness/assets/login-error-text-test-CEH2tjNP.js +51 -0
  227. package/bundled-test-harness/assets/login-test-BpMx7qwV.js +246 -0
  228. package/bundled-test-harness/assets/m4a-meta-extractor-BJkMHUIK.js +204 -0
  229. package/bundled-test-harness/assets/main-BaUgfpPE.js +5 -0
  230. package/bundled-test-harness/assets/markdown-ByEGbwov.js +7 -0
  231. package/bundled-test-harness/assets/markdown-KJzgTg-A.js +2 -0
  232. package/bundled-test-harness/assets/markdown-editor-mode-select-BUGPXaSE.js +2 -0
  233. package/bundled-test-harness/assets/markdown-editor-mode-select-DBk8dG0O.js +54 -0
  234. package/bundled-test-harness/assets/markdown-embed-chooser-modal-test-BIlEmna9.js +470 -0
  235. package/bundled-test-harness/assets/markdown-embed-preview-pane-test-B6rscKpk.js +447 -0
  236. package/bundled-test-harness/assets/markdown-embed-preview-test-CTQw1wq-.js +368 -0
  237. package/bundled-test-harness/assets/markdown-fallback-BVsco6gJ.js +2 -0
  238. package/bundled-test-harness/assets/markdown-fallback-test-C_CIFEzH.js +316 -0
  239. package/bundled-test-harness/assets/markdown-highlighting-test-D6YvywF5.js +244 -0
  240. package/bundled-test-harness/assets/markdown-preview-1TSMSUv0.js +64 -0
  241. package/bundled-test-harness/assets/markdown-preview-jbuUjLoD.js +72 -0
  242. package/bundled-test-harness/assets/markdown-preview-test-zuU5uoA_.js +238 -0
  243. package/bundled-test-harness/assets/markdown-skill-frontmatter-test-CoicGRkb.js +146 -0
  244. package/bundled-test-harness/assets/menu-items-DZ_uOoYu.js +2 -0
  245. package/bundled-test-harness/assets/message-tool-test-K6LgTq5d.js +33 -0
  246. package/bundled-test-harness/assets/metadata-fields-WiOuUCDl.js +1415 -0
  247. package/bundled-test-harness/assets/metadata-fields-iu5AfQp3.js +2 -0
  248. package/bundled-test-harness/assets/midi-audio-def-CD2-4Wjx.js +52 -0
  249. package/bundled-test-harness/assets/midi-meta-extractor-CE3sLiEV.js +284 -0
  250. package/bundled-test-harness/assets/midi-meta-extractor-O7c8LHYV.js +2 -0
  251. package/bundled-test-harness/assets/migrate-skill-test-Beh-AeSN.js +161 -0
  252. package/bundled-test-harness/assets/mini-BNXINKKF.js +85 -0
  253. package/bundled-test-harness/assets/mini-C43Q4BWp.js +1519 -0
  254. package/bundled-test-harness/assets/mini-card-chooser-test-B1GMp-31.js +272 -0
  255. package/bundled-test-harness/assets/mini-file-chooser-test-CbI1vrQn.js +201 -0
  256. package/bundled-test-harness/assets/missing-template-BPhJRbDs.js +48 -0
  257. package/bundled-test-harness/assets/missing-template-DP-Pi-HQ.js +2 -0
  258. package/bundled-test-harness/assets/modal-KpPz2f8x.js +322 -0
  259. package/bundled-test-harness/assets/modal-container-0Efz_h2z.js +40 -0
  260. package/bundled-test-harness/assets/model-cost-tier-test-D-5VSjh6.js +173 -0
  261. package/bundled-test-harness/assets/module-contents-service-BRkTETb6.js +256 -0
  262. package/bundled-test-harness/assets/moment-Cln59YUK.js +3474 -0
  263. package/bundled-test-harness/assets/monaco-AbHCoDJY.js +143 -0
  264. package/bundled-test-harness/assets/monaco-test-DCPi18sy.js +100 -0
  265. package/bundled-test-harness/assets/monaco-test-waiter-lvFEYpFj.js +190 -0
  266. package/bundled-test-harness/assets/month-1eUIsvWN.js +2 -0
  267. package/bundled-test-harness/assets/month-BeUdWMWQ.js +123 -0
  268. package/bundled-test-harness/assets/month-day-Bbsd8YbR.js +192 -0
  269. package/bundled-test-harness/assets/month-day-Dks5STJu.js +2 -0
  270. package/bundled-test-harness/assets/month-year-pL_rpUhX.js +2 -0
  271. package/bundled-test-harness/assets/month-year-wH_YnYgL.js +93 -0
  272. package/bundled-test-harness/assets/mp3-meta-extractor-C3u34UHM.js +476 -0
  273. package/bundled-test-harness/assets/mp4-meta-extractor-Bj3F7dxs.js +188 -0
  274. package/bundled-test-harness/assets/multiple-stacks-test-mkNdTUMI.js +208 -0
  275. package/bundled-test-harness/assets/nested-query-field-render-test-BQLn3wg9.js +249 -0
  276. package/bundled-test-harness/assets/no-stacks-test-DpwZQAJ-.js +48 -0
  277. package/bundled-test-harness/assets/number-DZa-fHpu.js +151 -0
  278. package/bundled-test-harness/assets/number-Dvua76YP.js +3 -0
  279. package/bundled-test-harness/assets/number-field-test-BiaH2eaB.js +184 -0
  280. package/bundled-test-harness/assets/number-input-D5nDYDkK.js +82 -0
  281. package/bundled-test-harness/assets/office-extract-JzYva33g.js +27 -0
  282. package/bundled-test-harness/assets/office-extract-XMpsyYRh.js +2 -0
  283. package/bundled-test-harness/assets/ogg-meta-extractor-DJosZ9LA.js +225 -0
  284. package/bundled-test-harness/assets/on-key-BBVkS8Bi.js +472 -0
  285. package/bundled-test-harness/assets/ooxml-BlAE2w4d.js +172 -0
  286. package/bundled-test-harness/assets/ooxml-D-p8OmuM.js +2 -0
  287. package/bundled-test-harness/assets/open-image-in-new-tab-test-DWBU5pw9.js +52 -0
  288. package/bundled-test-harness/assets/operation-lowering-test-nzqprueU.js +2812 -0
  289. package/bundled-test-harness/assets/operations-CPvfTuY3.js +766 -0
  290. package/bundled-test-harness/assets/operations-invocation-test-C75T6zn3.js +523 -0
  291. package/bundled-test-harness/assets/operations-query-test-BoCszQEW.js +459 -0
  292. package/bundled-test-harness/assets/operations-test-79ipSnpM.js +2518 -0
  293. package/bundled-test-harness/assets/operations-x3Aw2Nky.js +3 -0
  294. package/bundled-test-harness/assets/operator-mode-acceptance-test-jjsYtt96.js +1188 -0
  295. package/bundled-test-harness/assets/operator-mode-card-chooser-test-hZP9gEQK.js +1036 -0
  296. package/bundled-test-harness/assets/operator-mode-links-test-DN16SuIx.js +793 -0
  297. package/bundled-test-harness/assets/operator-mode-state-service-gwiTSiWX.js +1275 -0
  298. package/bundled-test-harness/assets/operator-mode-state-service-test-Dt2qnKKP.js +206 -0
  299. package/bundled-test-harness/assets/operator-mode-test-BZnnxO9q.js +683 -0
  300. package/bundled-test-harness/assets/operator-mode-ui-test-O--qEo-y.js +1027 -0
  301. package/bundled-test-harness/assets/overlay-menu-items-test-Bl2k0aAa.js +317 -0
  302. package/bundled-test-harness/assets/overlays-CdN_JokA.js +270 -0
  303. package/bundled-test-harness/assets/overlays-clip-test-DpbR1ZTz.js +91 -0
  304. package/bundled-test-harness/assets/overlays-detached-element-test-cLgEGvMs.js +56 -0
  305. package/bundled-test-harness/assets/pane-PYdezM7g.js +330 -0
  306. package/bundled-test-harness/assets/panel-7FDqkxrr.js +474 -0
  307. package/bundled-test-harness/assets/panel-C3E0s49q.js +3540 -0
  308. package/bundled-test-harness/assets/past-sessions-test-BsjEeoze.js +321 -0
  309. package/bundled-test-harness/assets/patch-fields-test-CsixJmSr.js +1014 -0
  310. package/bundled-test-harness/assets/patch-instance-test-CBDgTi0L.js +348 -0
  311. package/bundled-test-harness/assets/pdf-file-def-9VNjnqDa.js +76 -0
  312. package/bundled-test-harness/assets/pdf-meta-extractor-BF4e5kMR.js +156 -0
  313. package/bundled-test-harness/assets/pdf-meta-extractor-D8Bxh2cc.js +2 -0
  314. package/bundled-test-harness/assets/pdf-viewer-Bu413sN8.js +112 -0
  315. package/bundled-test-harness/assets/pdf-viewer-GKDi_xmf.js +2 -0
  316. package/bundled-test-harness/assets/percentage-TOr6qK2T.js +84 -0
  317. package/bundled-test-harness/assets/permission-checking-realm-test-BRNVYszm.js +306 -0
  318. package/bundled-test-harness/assets/phone-number-D5SR8nWu.js +236 -0
  319. package/bundled-test-harness/assets/phone-number-field-test-DffwtqGd.js +73 -0
  320. package/bundled-test-harness/assets/phone-number-hf_xIVGQ.js +2 -0
  321. package/bundled-test-harness/assets/plate-Vojc88hM.js +41 -0
  322. package/bundled-test-harness/assets/plate-dTUzEMj5.js +2 -0
  323. package/bundled-test-harness/assets/player-CmRw0uM5.js +82 -0
  324. package/bundled-test-harness/assets/player-Dt85lPZl.js +2 -0
  325. package/bundled-test-harness/assets/plural-field-components-test-DNpGuH1D.js +198 -0
  326. package/bundled-test-harness/assets/png-image-def-GY7gjqya.js +48 -0
  327. package/bundled-test-harness/assets/png-meta-extractor-4pI611re.js +2 -0
  328. package/bundled-test-harness/assets/png-meta-extractor-CHp_rpAi.js +111 -0
  329. package/bundled-test-harness/assets/policy-scoped-search-test-CipPu7tY.js +339 -0
  330. package/bundled-test-harness/assets/pptx-file-def-lBBiebvn.js +60 -0
  331. package/bundled-test-harness/assets/pptx-meta-extractor-BjJYWiOJ.js +77 -0
  332. package/bundled-test-harness/assets/pptx-meta-extractor-DbT-dPRg.js +2 -0
  333. package/bundled-test-harness/assets/prerender-persistence-block-test-ClHMVvJt.js +124 -0
  334. package/bundled-test-harness/assets/prerender-serialize-cycle-test-LdqaMTK8.js +134 -0
  335. package/bundled-test-harness/assets/preview-CYlam_aW.js +74 -0
  336. package/bundled-test-harness/assets/preview-format-CiSo4kEa.js +41 -0
  337. package/bundled-test-harness/assets/preview-format-test-MsB1TOLB.js +103 -0
  338. package/bundled-test-harness/assets/process-card-B3xBGkv1.js +2 -0
  339. package/bundled-test-harness/assets/process-card-DumVcx9E.js +114 -0
  340. package/bundled-test-harness/assets/process-card-test-C44H8yVy.js +94 -0
  341. package/bundled-test-harness/assets/profile-settings-modal-ipYzrVTz.js +708 -0
  342. package/bundled-test-harness/assets/progress-circle-DJ6WSO2E.js +95 -0
  343. package/bundled-test-harness/assets/progress-circle-q358_9Sn.js +2 -0
  344. package/bundled-test-harness/assets/quarter-BjO5DlU2.js +2 -0
  345. package/bundled-test-harness/assets/quarter-_D72FwfS.js +168 -0
  346. package/bundled-test-harness/assets/query-field-membership-status-test-CzDyfK49.js +323 -0
  347. package/bundled-test-harness/assets/query-field-page-optin-test-B-x3vsmC.js +126 -0
  348. package/bundled-test-harness/assets/query-field-schema-test-DFw6KuYv.js +231 -0
  349. package/bundled-test-harness/assets/query-field-stale-prerender-test-DSQ-cv_O.js +152 -0
  350. package/bundled-test-harness/assets/query-fields-test-DQiMFRCe.js +535 -0
  351. package/bundled-test-harness/assets/rail-CNspDFyn.js +44 -0
  352. package/bundled-test-harness/assets/rail-D2YcQ0VP.js +2 -0
  353. package/bundled-test-harness/assets/realm-82Z5RUM_.js +95 -0
  354. package/bundled-test-harness/assets/realm-config-SgrwqjRu.js +844 -0
  355. package/bundled-test-harness/assets/realm-config-policy-standing-test-C6sQNk2u.js +290 -0
  356. package/bundled-test-harness/assets/realm-config-routing-rule-edit-test-DcYXBlvi.js +274 -0
  357. package/bundled-test-harness/assets/realm-config-settings-test-DblJv06X.js +187 -0
  358. package/bundled-test-harness/assets/realm-dropdown-CDvL8k3B.js +560 -0
  359. package/bundled-test-harness/assets/realm-et890flh.js +2 -0
  360. package/bundled-test-harness/assets/realm-field-test-pBK_x-Xw.js +100 -0
  361. package/bundled-test-harness/assets/realm-indexing-test-DSFn2F8F.js +4380 -0
  362. package/bundled-test-harness/assets/realm-policy-test-DYnLqzTS.js +1141 -0
  363. package/bundled-test-harness/assets/realm-test-DOZT2EG5.js +2363 -0
  364. package/bundled-test-harness/assets/realm-url-tooltip-qaXTjRb-.js +56 -0
  365. package/bundled-test-harness/assets/realm-url-tooltip-test-DGTEeLH9.js +78 -0
  366. package/bundled-test-harness/assets/reasoning-test-BRkhvYjr.js +234 -0
  367. package/bundled-test-harness/assets/recent-colors-addon-BreXcpg8.js +2 -0
  368. package/bundled-test-harness/assets/recent-colors-addon-CmCkbJ2_.js +61 -0
  369. package/bundled-test-harness/assets/relationship-loading-state-test-B6UGYKzG.js +290 -0
  370. package/bundled-test-harness/assets/relative-time-BjHvL023.js +2 -0
  371. package/bundled-test-harness/assets/relative-time-ChYKOMIM.js +129 -0
  372. package/bundled-test-harness/assets/remix-card-test-CpV0kKfq.js +58 -0
  373. package/bundled-test-harness/assets/rendered-markdown-CJa7IzCC.js +263 -0
  374. package/bundled-test-harness/assets/rendered-markdown-test-CVKsHS4P.js +587 -0
  375. package/bundled-test-harness/assets/resident-instance-reuse-test-jQfW1NMn.js +82 -0
  376. package/bundled-test-harness/assets/response-field-B2-daCl2.js +38 -0
  377. package/bundled-test-harness/assets/result-tile-BSg4mzbc.js +140 -0
  378. package/bundled-test-harness/assets/rich-markdown-BtP1yamM.js +2 -0
  379. package/bundled-test-harness/assets/rich-markdown-C6rQUngb.js +218 -0
  380. package/bundled-test-harness/assets/rich-markdown-field-test-9yB6ykCe.js +1647 -0
  381. package/bundled-test-harness/assets/room-C7tKd02X.js +1008 -0
  382. package/bundled-test-harness/assets/room-message-test-DsMmRYpV.js +445 -0
  383. package/bundled-test-harness/assets/room-test-golI1H61.js +95 -0
  384. package/bundled-test-harness/assets/run-realm-code-CbXk6bnK.js +1600 -0
  385. package/bundled-test-harness/assets/run-realm-code-test-B9JeesaW.js +2468 -0
  386. package/bundled-test-harness/assets/schema-generation-test-uLLGm5Vh.js +28 -0
  387. package/bundled-test-harness/assets/score-BQhCQdUP.js +2 -0
  388. package/bundled-test-harness/assets/score-CoWEzENH.js +100 -0
  389. package/bundled-test-harness/assets/scrolling-test-WHWEkKeZ.js +384 -0
  390. package/bundled-test-harness/assets/search-BkQYpQDY.js +605 -0
  391. package/bundled-test-harness/assets/search-adorn-test-CW92JPOk.js +136 -0
  392. package/bundled-test-harness/assets/search-entries-BU4w6Ymc.js +472 -0
  393. package/bundled-test-harness/assets/search-entries-result-test-9eydsDtD.js +234 -0
  394. package/bundled-test-harness/assets/search-entries-test-ByUREx0G.js +1486 -0
  395. package/bundled-test-harness/assets/search-result-header-UFkdo0Bx.js +128 -0
  396. package/bundled-test-harness/assets/search-results-DrHTuVRZ.js +266 -0
  397. package/bundled-test-harness/assets/search-results-test-krtQQM57.js +578 -0
  398. package/bundled-test-harness/assets/search-selection-menu-test-DoqSbez7.js +108 -0
  399. package/bundled-test-harness/assets/search-sheet-persistence-test-4ZPaEY-y.js +131 -0
  400. package/bundled-test-harness/assets/search-test-BYpq32RM.js +2241 -0
  401. package/bundled-test-harness/assets/searchable-BXw4T11q.js +192 -0
  402. package/bundled-test-harness/assets/searchable-CVvPDA3Q.js +2 -0
  403. package/bundled-test-harness/assets/searchable-option-test-BhLFI4ei.js +322 -0
  404. package/bundled-test-harness/assets/searchable-search-doc-test-DrNLCF73.js +1271 -0
  405. package/bundled-test-harness/assets/secure-sign-in-VNQhe0ae.js +130 -0
  406. package/bundled-test-harness/assets/secure-sign-in-Za8PX9cD.css +24 -0
  407. package/bundled-test-harness/assets/secure-sign-in-aunWHCrB.js +73 -0
  408. package/bundled-test-harness/assets/secure-sign-in-test-BcY1TcNd.js +32 -0
  409. package/bundled-test-harness/assets/secure-sign-in-test-DRdz89BT.js +245 -0
  410. package/bundled-test-harness/assets/sending-test-mbHpGZUu.js +576 -0
  411. package/bundled-test-harness/assets/serialization-rri-form-audit-test-nypV9J82.js +136 -0
  412. package/bundled-test-harness/assets/serialization-test-aLwrFv4d.js +8758 -0
  413. package/bundled-test-harness/assets/setup-Dgn0s6Zk.js +772 -0
  414. package/bundled-test-harness/assets/shared-link-target-reuse-test-D9MR2UNc.js +207 -0
  415. package/bundled-test-harness/assets/show-card-Dwfk332M.js +67 -0
  416. package/bundled-test-harness/assets/show-card-test-CRPwwJvc.js +365 -0
  417. package/bundled-test-harness/assets/show-file-DLdFPHMR.js +34 -0
  418. package/bundled-test-harness/assets/signed-capture-DUR9PohQ.js +204 -0
  419. package/bundled-test-harness/assets/signed-capture-link-test-DfTAB6OT.js +132 -0
  420. package/bundled-test-harness/assets/single-stack-test-Crr_8nti.js +652 -0
  421. package/bundled-test-harness/assets/skill-DQ00VonZ.js +3 -0
  422. package/bundled-test-harness/assets/skill-reference-LEitQV9i.js +112 -0
  423. package/bundled-test-harness/assets/skill-yZXS1VHQ.js +76 -0
  424. package/bundled-test-harness/assets/skills-test-D3-C-Dbm.js +648 -0
  425. package/bundled-test-harness/assets/slider-picker-B6AxKL2j.js +245 -0
  426. package/bundled-test-harness/assets/slider-picker-C4Tc5o-s.js +2 -0
  427. package/bundled-test-harness/assets/spec-Cl_LB6nC.js +602 -0
  428. package/bundled-test-harness/assets/spinner-BHFM7zcR.js +39 -0
  429. package/bundled-test-harness/assets/spinner-DvAvsyDT.css +21 -0
  430. package/bundled-test-harness/assets/store-BV6WX8oV.js +2205 -0
  431. package/bundled-test-harness/assets/store-module-rebuild-test-HyphFJiF.js +454 -0
  432. package/bundled-test-harness/assets/store-search-test-nUeJ5opb.js +175 -0
  433. package/bundled-test-harness/assets/store-test-BebUIJAg.js +3460 -0
  434. package/bundled-test-harness/assets/string-BHZZwNlZ.js +9 -0
  435. package/bundled-test-harness/assets/submode-switcher-D-U9cXo0.js +169 -0
  436. package/bundled-test-harness/assets/svg-meta-extractor-BsG4w2nX.js +42 -0
  437. package/bundled-test-harness/assets/swatches-picker-4vFztxHo.js +33 -0
  438. package/bundled-test-harness/assets/swatches-picker-C7RE7uJ8.js +2 -0
  439. package/bundled-test-harness/assets/switch-submode-CuA0Zfjn.js +79 -0
  440. package/bundled-test-harness/assets/switch-submode-test-i1Qic_Cp.js +168 -0
  441. package/bundled-test-harness/assets/tag-CZNs3DPN.js +105 -0
  442. package/bundled-test-harness/assets/tests-BneuP252.js +3523 -0
  443. package/bundled-test-harness/assets/text-area-DAShQQBe.js +9 -0
  444. package/bundled-test-harness/assets/text-file-def-D2Rs6nS1.js +151 -0
  445. package/bundled-test-harness/assets/text-input-validator-test-C9IG-1GZ.js +156 -0
  446. package/bundled-test-harness/assets/theme-Dm8LWaRK.js +9 -0
  447. package/bundled-test-harness/assets/theme-card-test-Cbb6tAap.js +621 -0
  448. package/bundled-test-harness/assets/theme-scheme-island-test-DOVLakx3.js +264 -0
  449. package/bundled-test-harness/assets/three-d-model-def-DWSPQGgD.js +70 -0
  450. package/bundled-test-harness/assets/time--_Txqya1.js +126 -0
  451. package/bundled-test-harness/assets/time-DKD7Bdjd.js +2 -0
  452. package/bundled-test-harness/assets/time-slots-BZaugjq_.js +2 -0
  453. package/bundled-test-harness/assets/time-slots-C85M0rWl.js +85 -0
  454. package/bundled-test-harness/assets/timeline-B3KGDm3M.js +2 -0
  455. package/bundled-test-harness/assets/timeline-BMwgaZZu.js +59 -0
  456. package/bundled-test-harness/assets/to-device-streaming-test-CMp5bFiz.js +163 -0
  457. package/bundled-test-harness/assets/token-usage-test-CXA0b8Ep.js +166 -0
  458. package/bundled-test-harness/assets/tool-field-BGLelnsr.js +94 -0
  459. package/bundled-test-harness/assets/tool-field-BOFuDDt3.js +2 -0
  460. package/bundled-test-harness/assets/tools-CTjy7Aub.js +725 -0
  461. package/bundled-test-harness/assets/tools-calling-test--JR-7AK7.js +200 -0
  462. package/bundled-test-harness/assets/tools-test-6yAW3W5I.js +2820 -0
  463. package/bundled-test-harness/assets/tools-test-DhpMUQkz.js +1624 -0
  464. package/bundled-test-harness/assets/ts-file-def-CDbf8aw2.js +159 -0
  465. package/bundled-test-harness/assets/update-room-skills-test-DoKsS_1C.js +240 -0
  466. package/bundled-test-harness/assets/url-D0ooeJxC.js +2 -0
  467. package/bundled-test-harness/assets/url-mFskVPSX.js +96 -0
  468. package/bundled-test-harness/assets/video-file-def-AcmWqzev.js +76 -0
  469. package/bundled-test-harness/assets/wav-meta-extractor-CbTLruQf.js +368 -0
  470. package/bundled-test-harness/assets/webm-meta-extractor-C9JH-CMX.js +178 -0
  471. package/bundled-test-harness/assets/webp-meta-extractor-C6sHm4J7.js +98 -0
  472. package/bundled-test-harness/assets/website-Bxuk_OmR.js +92 -0
  473. package/bundled-test-harness/assets/week-Bxssxce7.js +2 -0
  474. package/bundled-test-harness/assets/week-DQLj9974.js +111 -0
  475. package/bundled-test-harness/assets/welcome-to-boxel-BH82RsW5.js +172 -0
  476. package/bundled-test-harness/assets/workspace-DJ_s2x4g.js +614 -0
  477. package/bundled-test-harness/assets/workspace-a11y-test-BJbZNgoP.js +197 -0
  478. package/bundled-test-harness/assets/workspace-behavior-test-BLBARTfb.js +200 -0
  479. package/bundled-test-harness/assets/workspace-chooser-BpmlVrVn.js +2219 -0
  480. package/bundled-test-harness/assets/workspace-chooser-CqLR2Dzh.css +1296 -0
  481. package/bundled-test-harness/assets/workspace-chooser-catalog-order-test-CmAVNAWC.js +36 -0
  482. package/bundled-test-harness/assets/workspace-chooser-unreachable-notice-test-DEfG7Uh9.js +60 -0
  483. package/bundled-test-harness/assets/workspace-delete-multiple-test-DE7Z8ooj.js +212 -0
  484. package/bundled-test-harness/assets/workspace-delete-summary-test-CwtG_zLH.js +63 -0
  485. package/bundled-test-harness/assets/workspace-timestamp-labels-test-DFAaRmJW.js +58 -0
  486. package/bundled-test-harness/assets/xlsx-file-def-DcvaRYnZ.js +60 -0
  487. package/bundled-test-harness/assets/xlsx-meta-extractor-0RlViVaf.js +101 -0
  488. package/bundled-test-harness/assets/xlsx-meta-extractor-BH30Vuem.js +2 -0
  489. package/bundled-test-harness/assets/year-B_MBk_hE.js +78 -0
  490. package/bundled-test-harness/assets/year-hSpccI9L.js +2 -0
  491. package/bundled-test-harness/assets/zip-file-def-c84iddi9.js +288 -0
  492. package/bundled-test-harness/index.html +78 -68
  493. package/bundled-test-harness/tests/index.html +78 -68
  494. package/bundled-types/host-app/components/matrix/account-switch-failed.gts +2 -2
  495. package/bundled-types/host-app/components/matrix/auth.gts +2 -2
  496. package/bundled-types/host-app/components/matrix/cli-auth.gts +7 -6
  497. package/bundled-types/host-app/components/matrix/forgot-password.gts +43 -129
  498. package/bundled-types/host-app/components/matrix/login.gts +15 -118
  499. package/bundled-types/host-app/components/matrix/register-user.gts +45 -226
  500. package/bundled-types/host-app/components/matrix/secure-sign-in.gts +235 -0
  501. package/bundled-types/host-app/components/operator-mode/container.gts +13 -1
  502. package/bundled-types/host-app/components/operator-mode/profile-info-popover.gts +1 -1
  503. package/bundled-types/host-app/config/environment.ts +1 -1
  504. package/bundled-types/host-app/lib/secure-sign-in.ts +130 -0
  505. package/bundled-types/host-app/services/matrix-service.ts +46 -0
  506. package/bundled-types/host-app/services/monaco-service.ts +0 -5
  507. package/bundled-types/host-app/utils/login-token.ts +23 -10
  508. package/dist/api.js +1 -1
  509. package/dist/index.js +289 -285
  510. package/package.json +1 -1
  511. package/src/build-program.ts +6 -2
  512. package/src/commands/profile.ts +72 -3
  513. package/src/lib/profile-manager.ts +5 -1
  514. package/src/lib/secure-session.ts +29 -0
  515. package/src/lib/sso-login.ts +94 -15
  516. package/bundled-test-harness/assets/account-switch-failed-B3pr_iC3.js +0 -32
  517. package/bundled-test-harness/assets/account-switch-failed-DTGZZo-G.css +0 -61
  518. package/bundled-test-harness/assets/account-switch-failed-test-9ENVgvlx.js +0 -45
  519. package/bundled-test-harness/assets/add-workspace-BAbk0250.js +0 -141
  520. package/bundled-test-harness/assets/add-workspace-test-ChAja_t-.js +0 -72
  521. package/bundled-test-harness/assets/advanced-color-picker-C-xBFJ2S.js +0 -504
  522. package/bundled-test-harness/assets/advanced-color-picker-bWAmCT-8.js +0 -2
  523. package/bundled-test-harness/assets/ai-assistant-test-BJ9yetuC.js +0 -2211
  524. package/bundled-test-harness/assets/ai-module-creation-test-Bw3TKS9d.js +0 -151
  525. package/bundled-test-harness/assets/aibot-message-DkgHT6eJ.js +0 -465
  526. package/bundled-test-harness/assets/app-DW5QjtRp.js +0 -22816
  527. package/bundled-test-harness/assets/app-yCDjO4mk.css +0 -2718
  528. package/bundled-test-harness/assets/audio-file-def-bJ3cXVmC.js +0 -133
  529. package/bundled-test-harness/assets/avif-meta-extractor-CrSDfYEt.js +0 -162
  530. package/bundled-test-harness/assets/base64-image-C7UBjK5W.js +0 -262
  531. package/bundled-test-harness/assets/base64-image-CjWpxROT.js +0 -2
  532. package/bundled-test-harness/assets/big-integer-BBql7oGZ.js +0 -89
  533. package/bundled-test-harness/assets/big-integer-B_TrzRy_.js +0 -2
  534. package/bundled-test-harness/assets/binary-upload-dedupe-test-BiX8kS7D.js +0 -308
  535. package/bundled-test-harness/assets/boolean-9LNUUTfw.js +0 -2
  536. package/bundled-test-harness/assets/boolean-BAmK01TF.js +0 -94
  537. package/bundled-test-harness/assets/brand-functional-palette-CFuoS-LS.js +0 -137
  538. package/bundled-test-harness/assets/brand-logo-By89eknI.js +0 -295
  539. package/bundled-test-harness/assets/broken-link-template-test-odBriDSP.js +0 -192
  540. package/bundled-test-harness/assets/bundled-base-CLQkkmN4.js +0 -254
  541. package/bundled-test-harness/assets/bundled-base-modules-test-BYrTaTwa.js +0 -54
  542. package/bundled-test-harness/assets/buried-stack-item-scroll-test-DU4bM5nd.js +0 -236
  543. package/bundled-test-harness/assets/bxl-expression-test-Cs9JaZbC.js +0 -250
  544. package/bundled-test-harness/assets/can-invoke-test-ccMc06BU.js +0 -401
  545. package/bundled-test-harness/assets/card-api-Bn65NUT0.js +0 -8
  546. package/bundled-test-harness/assets/card-api-test-COrFXu2i.js +0 -198
  547. package/bundled-test-harness/assets/card-api-u1pOrwS6.js +0 -4393
  548. package/bundled-test-harness/assets/card-basics-test-D4rn3iN-.js +0 -5364
  549. package/bundled-test-harness/assets/card-chooser-paging-test-bZhdrUXt.js +0 -235
  550. package/bundled-test-harness/assets/card-chooser-test-D9w1duob.js +0 -393
  551. package/bundled-test-harness/assets/card-collection-ClCV-__1.js +0 -118
  552. package/bundled-test-harness/assets/card-context-search-results-H_rN3Upz.js +0 -30
  553. package/bundled-test-harness/assets/card-context-search-results-test-jciyaouV.js +0 -184
  554. package/bundled-test-harness/assets/card-def-field-def-relationships-test-BVZoQzM8.js +0 -562
  555. package/bundled-test-harness/assets/card-delete-test-CuLcZFnY.js +0 -466
  556. package/bundled-test-harness/assets/card-error-DIOivSkD.js +0 -72
  557. package/bundled-test-harness/assets/card-error-awaiting-index-test-JMwcRONq.js +0 -53
  558. package/bundled-test-harness/assets/card-error-detail-96jWBx6B.js +0 -271
  559. package/bundled-test-harness/assets/card-info-BxPtwG1h.js +0 -2
  560. package/bundled-test-harness/assets/card-list-B34qY3io.js +0 -2
  561. package/bundled-test-harness/assets/card-list-BpCaKkZJ.js +0 -202
  562. package/bundled-test-harness/assets/card-resource-DcPbIwH9.js +0 -86
  563. package/bundled-test-harness/assets/cards-grid-CTN8nBT_.js +0 -344
  564. package/bundled-test-harness/assets/cards-grid-Cx44vL-M.js +0 -2
  565. package/bundled-test-harness/assets/cards-grid-layout-BdL0Uzxl.js +0 -111
  566. package/bundled-test-harness/assets/cards-grid-layout-Dn8Yb4ma.js +0 -2
  567. package/bundled-test-harness/assets/check-correctness-test-BfMV-MC0.js +0 -554
  568. package/bundled-test-harness/assets/clip-CK6mVuyN.js +0 -92
  569. package/bundled-test-harness/assets/clip-CfXD1JTr.js +0 -2
  570. package/bundled-test-harness/assets/code-ref-85Bih6Zl.js +0 -138
  571. package/bundled-test-harness/assets/code-ref-DATHaoyt.js +0 -2
  572. package/bundled-test-harness/assets/code-submode-availability-test-DLYlx0wo.js +0 -198
  573. package/bundled-test-harness/assets/code-submode-test-CDIi7MjD.js +0 -1824
  574. package/bundled-test-harness/assets/codeblocks-test-CNPyTvuv.js +0 -418
  575. package/bundled-test-harness/assets/codemirror-editor-BPOPTR-f.js +0 -2
  576. package/bundled-test-harness/assets/codemirror-editor-DPhG0pec.js +0 -701
  577. package/bundled-test-harness/assets/codemirror-embed-toolbar-test-Dk5lFOUq.js +0 -366
  578. package/bundled-test-harness/assets/color-BxN5gRSg.js +0 -65
  579. package/bundled-test-harness/assets/color-CrunRcis.js +0 -2
  580. package/bundled-test-harness/assets/color-field-test-COjFIpXV.js +0 -212
  581. package/bundled-test-harness/assets/color-picker-field-C-GS1CIw.js +0 -139
  582. package/bundled-test-harness/assets/color-picker-field-D3RXhbCK.js +0 -2
  583. package/bundled-test-harness/assets/color-wheel-picker-Bz8cBmf4.js +0 -283
  584. package/bundled-test-harness/assets/color-wheel-picker-DrwPrB8B.js +0 -2
  585. package/bundled-test-harness/assets/command-data-BxXgtNBf.js +0 -2
  586. package/bundled-test-harness/assets/command-data-ZdkcpEgG.js +0 -95
  587. package/bundled-test-harness/assets/compaction-test-DS7DTGT_.js +0 -150
  588. package/bundled-test-harness/assets/components-CbCTWAON.js +0 -17777
  589. package/bundled-test-harness/assets/computed-test-D_OrXDtR.js +0 -1320
  590. package/bundled-test-harness/assets/container-DDolu1gk.js +0 -11109
  591. package/bundled-test-harness/assets/container-DndcCIMv.css +0 -5169
  592. package/bundled-test-harness/assets/contains-many-component-BtgnAXih.js +0 -2
  593. package/bundled-test-harness/assets/contrast-checker-addon-kwtLKWdL.js +0 -2
  594. package/bundled-test-harness/assets/contrast-checker-addon-zFY5cen1.js +0 -71
  595. package/bundled-test-harness/assets/convert-to-class-name-test-BcGWl2K1.js +0 -17
  596. package/bundled-test-harness/assets/coordinate-D72EF1Pl.js +0 -48
  597. package/bundled-test-harness/assets/copy-file-to-realm-test-CYoDX4YV.js +0 -148
  598. package/bundled-test-harness/assets/country-B-iIe5v8.js +0 -199
  599. package/bundled-test-harness/assets/create-file-modal-PpvMksjR.js +0 -570
  600. package/bundled-test-harness/assets/create-listing-modal-test-CQtEf_UD.js +0 -273
  601. package/bundled-test-harness/assets/create-listing-pr-request-test-CDtKWyfk.js +0 -117
  602. package/bundled-test-harness/assets/create-spec-test-Cbqk8I9T.js +0 -256
  603. package/bundled-test-harness/assets/create-specs-CZg2cpnh.js +0 -215
  604. package/bundled-test-harness/assets/create-submission-workflow-test-CYrxF7bg.js +0 -132
  605. package/bundled-test-harness/assets/credential-fields-test-Di4jCJgU.js +0 -157
  606. package/bundled-test-harness/assets/css-value-CceJyI5o.js +0 -48
  607. package/bundled-test-harness/assets/csv-file-def-DJL2aZI9.js +0 -277
  608. package/bundled-test-harness/assets/currency-Bn5WIqzF.js +0 -134
  609. package/bundled-test-harness/assets/date-XI2CVYA2.js +0 -2
  610. package/bundled-test-harness/assets/date-h83UJcFR.js +0 -183
  611. package/bundled-test-harness/assets/date-time-fields-test-Cterr2mj.js +0 -359
  612. package/bundled-test-harness/assets/datetime-DadI80tC.js +0 -201
  613. package/bundled-test-harness/assets/datetime-Dpb_Sejj.js +0 -2
  614. package/bundled-test-harness/assets/datetime-stamp-C4vv397u.js +0 -81
  615. package/bundled-test-harness/assets/datetime-stamp-DIsJdQux.js +0 -2
  616. package/bundled-test-harness/assets/day-C4pZoGNM.js +0 -113
  617. package/bundled-test-harness/assets/day-D0goBhKb.js +0 -2
  618. package/bundled-test-harness/assets/debug-message-test-CV0sj-fl.js +0 -117
  619. package/bundled-test-harness/assets/dist-CAIttNZm.js +0 -1710
  620. package/bundled-test-harness/assets/dist-CLbqnmnm.js +0 -389
  621. package/bundled-test-harness/assets/dist-qkBOmIQy.js +0 -323
  622. package/bundled-test-harness/assets/docx-file-def-hz2tVQKf.js +0 -60
  623. package/bundled-test-harness/assets/docx-meta-extractor-CeRshlxL.js +0 -60
  624. package/bundled-test-harness/assets/docx-meta-extractor-muK5CKF3.js +0 -2
  625. package/bundled-test-harness/assets/duration-BYx1dLfm.js +0 -2
  626. package/bundled-test-harness/assets/duration-FAmTFeUa.js +0 -184
  627. package/bundled-test-harness/assets/email-D-bFy_C1.js +0 -80
  628. package/bundled-test-harness/assets/email-field-test-CY9K2zur.js +0 -75
  629. package/bundled-test-harness/assets/email-j4DZNH2-.js +0 -2
  630. package/bundled-test-harness/assets/enum-B7_baAn_.js +0 -167
  631. package/bundled-test-harness/assets/enum-BQqNzVQS.js +0 -2
  632. package/bundled-test-harness/assets/enum-field-test-BJ9Epz15.js +0 -953
  633. package/bundled-test-harness/assets/error-display-test-CbDWjJ2F.js +0 -343
  634. package/bundled-test-harness/assets/ethereum-address-BOLEnKsm.js +0 -78
  635. package/bundled-test-harness/assets/ethereum-address-s3Kvb2wG.js +0 -2
  636. package/bundled-test-harness/assets/expiration-warning-BaIP1MOZ.js +0 -2
  637. package/bundled-test-harness/assets/expiration-warning-gjEtxPk0.js +0 -90
  638. package/bundled-test-harness/assets/externals-Bih8ejPS.js +0 -4393
  639. package/bundled-test-harness/assets/fallback-banner-MlImHjSD.js +0 -24
  640. package/bundled-test-harness/assets/fallback-banner-live-delete-test-Bm7IKXPf.js +0 -207
  641. package/bundled-test-harness/assets/fallback-banner-test-C7TGA0Ob.js +0 -53
  642. package/bundled-test-harness/assets/fallback-banner-test-lvuaVRXu.js +0 -225
  643. package/bundled-test-harness/assets/fallback-models-test-Dy7iIKUS.js +0 -161
  644. package/bundled-test-harness/assets/field-component-DBoOxTke.js +0 -2
  645. package/bundled-test-harness/assets/field-configuration-test-DnAnzyC-.js +0 -548
  646. package/bundled-test-harness/assets/field-edit-DdJ8Akso.js +0 -2
  647. package/bundled-test-harness/assets/field-edit-XAop92l8.js +0 -36
  648. package/bundled-test-harness/assets/field-markdown-domain-test-cZCqbcjj.js +0 -616
  649. package/bundled-test-harness/assets/field-markdown-oversize-test-BuATetVz.js +0 -88
  650. package/bundled-test-harness/assets/field-markdown-primitives-test-BsubQfhv.js +0 -365
  651. package/bundled-test-harness/assets/field-markdown-specialized-test-4eNLiYpF.js +0 -534
  652. package/bundled-test-harness/assets/field-test-helpers-9I7cHnaU.js +0 -45
  653. package/bundled-test-harness/assets/file-api-CC86I7Er.js +0 -7
  654. package/bundled-test-harness/assets/file-attachment-test-o9191GMb.js +0 -796
  655. package/bundled-test-harness/assets/file-chooser-panel-test-C8aZuJlk.js +0 -153
  656. package/bundled-test-harness/assets/file-chooser-test-B0Tn8CCR.js +0 -504
  657. package/bundled-test-harness/assets/file-def-edit-BSiF2Lje.js +0 -2
  658. package/bundled-test-harness/assets/file-def-edit-C5TYBp_q.js +0 -26
  659. package/bundled-test-harness/assets/file-def-embedded-BLVTCiVB.js +0 -2
  660. package/bundled-test-harness/assets/file-def-embedded-Bep4iD6s.js +0 -38
  661. package/bundled-test-harness/assets/file-def-fitted-BTs-AS78.js +0 -2
  662. package/bundled-test-harness/assets/file-def-fitted-DcPitdYu.js +0 -38
  663. package/bundled-test-harness/assets/file-def-isolated-Kg1YVhm-.js +0 -38
  664. package/bundled-test-harness/assets/file-def-isolated-tK5JWCam.js +0 -2
  665. package/bundled-test-harness/assets/file-def-serialization-test-D4wnd5XK.js +0 -89
  666. package/bundled-test-harness/assets/file-menu-items-CH4-naSK.js +0 -117
  667. package/bundled-test-harness/assets/file-menu-items-emUxx3ZI.js +0 -2
  668. package/bundled-test-harness/assets/file-preview-stage-B1McIWwu.js +0 -2
  669. package/bundled-test-harness/assets/file-preview-stage-BgZLNMN4.js +0 -72
  670. package/bundled-test-harness/assets/file-shell-embedded-BmfuwWfU.js +0 -2
  671. package/bundled-test-harness/assets/file-shell-embedded-zh8CJanA.js +0 -68
  672. package/bundled-test-harness/assets/file-shell-fitted-DSFUNRGJ.js +0 -2
  673. package/bundled-test-harness/assets/file-shell-fitted-DXKDH0fn.js +0 -98
  674. package/bundled-test-harness/assets/file-shell-isolated-0F1MFv4q.js +0 -2
  675. package/bundled-test-harness/assets/file-shell-isolated-DduZZzmi.js +0 -195
  676. package/bundled-test-harness/assets/file-tree-from-index-BzDvvUHy.js +0 -151
  677. package/bundled-test-harness/assets/file-tree-from-index-test-D0hfI4a1.js +0 -96
  678. package/bundled-test-harness/assets/film-BN_HVXBU.js +0 -13
  679. package/bundled-test-harness/assets/film-CKkbUi0L.js +0 -2
  680. package/bundled-test-harness/assets/film-CMNJITZ-.js +0 -4074
  681. package/bundled-test-harness/assets/fitted-CAvdcKpu.js +0 -34
  682. package/bundled-test-harness/assets/fitted-CbKOwd1u.js +0 -2
  683. package/bundled-test-harness/assets/flac-meta-extractor-e8qajPSl.js +0 -99
  684. package/bundled-test-harness/assets/font-file-def-9atde5W8.js +0 -64
  685. package/bundled-test-harness/assets/font-meta-extractor-IralDC8M.js +0 -303
  686. package/bundled-test-harness/assets/font-meta-extractor-zPBVOfoR.js +0 -2
  687. package/bundled-test-harness/assets/formatted-aibot-message-test-CWOiZUng.js +0 -109
  688. package/bundled-test-harness/assets/from-elsewhere-ChxbtsBa.js +0 -131
  689. package/bundled-test-harness/assets/frontmatter-field-cdig7KR9.js +0 -41
  690. package/bundled-test-harness/assets/garbage-collection-test-Dg-ww_Sb.js +0 -403
  691. package/bundled-test-harness/assets/gauge-B45nLOGe.js +0 -106
  692. package/bundled-test-harness/assets/gauge-BK-768BM.js +0 -2
  693. package/bundled-test-harness/assets/general-test-D7cn7PUr.js +0 -926
  694. package/bundled-test-harness/assets/get-relationship-membership-state-test-Skmj9V6y.js +0 -1308
  695. package/bundled-test-harness/assets/gif-meta-extractor-BychhK9q.js +0 -114
  696. package/bundled-test-harness/assets/glimmer-motion-and-choreo-in-cards-test-C09YUmk4.js +0 -160
  697. package/bundled-test-harness/assets/glimmer-motion-and-choreo-test-DYskx_Kk.js +0 -74
  698. package/bundled-test-harness/assets/helper-BHX0HLF2.js +0 -478
  699. package/bundled-test-harness/assets/host-submode-test-Clw_QnvF.js +0 -1243
  700. package/bundled-test-harness/assets/html-file-def-C0P9giwU.js +0 -82
  701. package/bundled-test-harness/assets/hydratable-card-DnjrxKsT.js +0 -147
  702. package/bundled-test-harness/assets/hydratable-card-test-BAmWHfv1.js +0 -426
  703. package/bundled-test-harness/assets/icons-DBXBZgLe.js +0 -894
  704. package/bundled-test-harness/assets/image-Cip6ojDd.js +0 -47
  705. package/bundled-test-harness/assets/image-file-def-BdQxjZcN.js +0 -65
  706. package/bundled-test-harness/assets/image-file-def-DP4aqWcS.js +0 -3
  707. package/bundled-test-harness/assets/index-changes-test-D8b_56Ke.js +0 -367
  708. package/bundled-test-harness/assets/index-query-engine-test-CCyaUwMX.js +0 -2593
  709. package/bundled-test-harness/assets/inspector-test-BJTVGdOO.js +0 -1930
  710. package/bundled-test-harness/assets/instance-filter-matcher-test-DjsPrXL7.js +0 -788
  711. package/bundled-test-harness/assets/interact-submode-creation-and-permissions-test-DSqM0vxh.js +0 -475
  712. package/bundled-test-harness/assets/interact-submode-setup-DF31UMX-.js +0 -566
  713. package/bundled-test-harness/assets/is-component-declaration-test-Did47eG9.js +0 -50
  714. package/bundled-test-harness/assets/iso-bmff-LuWkGL__.js +0 -205
  715. package/bundled-test-harness/assets/iso-bmff-_flO6c20.js +0 -2
  716. package/bundled-test-harness/assets/isolated-and-edit-frocLHin.js +0 -2
  717. package/bundled-test-harness/assets/job-priority-header-test-DHLAXfp7.js +0 -81
  718. package/bundled-test-harness/assets/job-scoped-instance-residency-test-C1Bt5j98.js +0 -103
  719. package/bundled-test-harness/assets/join-the-community-BBUSO2cs.js +0 -86
  720. package/bundled-test-harness/assets/jpg-meta-extractor-CoybO4Hq.js +0 -88
  721. package/bundled-test-harness/assets/json-field-8sdH5RQb.js +0 -2
  722. package/bundled-test-harness/assets/json-field-BDD3iTUh.js +0 -19
  723. package/bundled-test-harness/assets/json-file-def-BKibsfc6.js +0 -298
  724. package/bundled-test-harness/assets/last-modified-date-CR5jru2m.js +0 -43
  725. package/bundled-test-harness/assets/last-modified-date-test-jJ00YdTm.js +0 -28
  726. package/bundled-test-harness/assets/links-to-editor-rDoCYaN-.js +0 -2
  727. package/bundled-test-harness/assets/links-to-many-component-BqZT88Fb.js +0 -2
  728. package/bundled-test-harness/assets/linksto-broken-link-placeholder-test-Cp1Eb_4U.js +0 -398
  729. package/bundled-test-harness/assets/linksto-error-sentinel-test-Bddavnh_.js +0 -238
  730. package/bundled-test-harness/assets/linksto-many-broken-link-placeholder-test-c5WegXnR.js +0 -354
  731. package/bundled-test-harness/assets/linksto-many-per-slot-access-test-CWskzfGW.js +0 -303
  732. package/bundled-test-harness/assets/linksto-sentinel-reload-test-ByeVNhr8.js +0 -197
  733. package/bundled-test-harness/assets/linksto-sentinel-roundtrip-test-DP26i6Gb.js +0 -260
  734. package/bundled-test-harness/assets/linksto-singular-js-access-contract-test-fDUXx8tO.js +0 -196
  735. package/bundled-test-harness/assets/llm-model-BcLEkTV7.js +0 -64
  736. package/bundled-test-harness/assets/login-CeuuNVvU.css +0 -139
  737. package/bundled-test-harness/assets/login-DV0WlJv-.js +0 -348
  738. package/bundled-test-harness/assets/login-error-text-test-BMGY_9gW.js +0 -51
  739. package/bundled-test-harness/assets/login-test-CL9YpMH5.js +0 -246
  740. package/bundled-test-harness/assets/m4a-meta-extractor-CHO1JQtb.js +0 -204
  741. package/bundled-test-harness/assets/main-CPLT8JNu.js +0 -5
  742. package/bundled-test-harness/assets/markdown-BvBALLGh.js +0 -7
  743. package/bundled-test-harness/assets/markdown-DFezmrFD.js +0 -2
  744. package/bundled-test-harness/assets/markdown-editor-mode-select-Au64bcIO.js +0 -2
  745. package/bundled-test-harness/assets/markdown-editor-mode-select-rK9PP8rv.js +0 -54
  746. package/bundled-test-harness/assets/markdown-embed-chooser-modal-test-CIxizf5k.js +0 -470
  747. package/bundled-test-harness/assets/markdown-embed-preview-pane-test-C7GoNN7l.js +0 -447
  748. package/bundled-test-harness/assets/markdown-embed-preview-test-CDnj4uhd.js +0 -368
  749. package/bundled-test-harness/assets/markdown-fallback-n7PsLNmO.js +0 -2
  750. package/bundled-test-harness/assets/markdown-fallback-test-DTHT6OwQ.js +0 -316
  751. package/bundled-test-harness/assets/markdown-highlighting-test-DJ-4WSE_.js +0 -244
  752. package/bundled-test-harness/assets/markdown-preview-Ccelx5W-.js +0 -64
  753. package/bundled-test-harness/assets/markdown-preview-JXuMC_ve.js +0 -72
  754. package/bundled-test-harness/assets/markdown-preview-test-ByZqrpPk.js +0 -238
  755. package/bundled-test-harness/assets/markdown-skill-frontmatter-test-DAHGeL4K.js +0 -146
  756. package/bundled-test-harness/assets/menu-items-DzJm9H_H.js +0 -2
  757. package/bundled-test-harness/assets/message-tool-test-lmdrIEdY.js +0 -33
  758. package/bundled-test-harness/assets/metadata-fields-BZZr4Qe5.js +0 -2
  759. package/bundled-test-harness/assets/metadata-fields-BtdjGsKE.js +0 -1415
  760. package/bundled-test-harness/assets/midi-audio-def-uYbYFmFi.js +0 -52
  761. package/bundled-test-harness/assets/midi-meta-extractor-DNI5gc1q.js +0 -284
  762. package/bundled-test-harness/assets/midi-meta-extractor-DbKZ4fMG.js +0 -2
  763. package/bundled-test-harness/assets/migrate-skill-test-DI1xceiL.js +0 -161
  764. package/bundled-test-harness/assets/mini-CNoDyHqG.js +0 -1519
  765. package/bundled-test-harness/assets/mini-DexlIeKK.js +0 -85
  766. package/bundled-test-harness/assets/mini-card-chooser-test-DT5eIf1_.js +0 -272
  767. package/bundled-test-harness/assets/mini-file-chooser-test-DTQnKTZJ.js +0 -201
  768. package/bundled-test-harness/assets/missing-template-DL2mwddM.js +0 -2
  769. package/bundled-test-harness/assets/missing-template-ltqlJ4JC.js +0 -48
  770. package/bundled-test-harness/assets/modal-container-DRnt95-S.js +0 -40
  771. package/bundled-test-harness/assets/modal-zE95eEFp.js +0 -322
  772. package/bundled-test-harness/assets/model-cost-tier-test-CcFz7hcv.js +0 -173
  773. package/bundled-test-harness/assets/module-contents-service-Dk_zWt-V.js +0 -256
  774. package/bundled-test-harness/assets/month-BqReBYWo.js +0 -2
  775. package/bundled-test-harness/assets/month-RhvmIp40.js +0 -123
  776. package/bundled-test-harness/assets/month-day-XFAQA72z.js +0 -2
  777. package/bundled-test-harness/assets/month-day-XzKpk6nz.js +0 -192
  778. package/bundled-test-harness/assets/month-year-BeuNr2Cl.js +0 -2
  779. package/bundled-test-harness/assets/month-year-DhU7hATV.js +0 -93
  780. package/bundled-test-harness/assets/mp3-meta-extractor-Dx2RnJc5.js +0 -476
  781. package/bundled-test-harness/assets/mp4-meta-extractor--k0m8KsT.js +0 -188
  782. package/bundled-test-harness/assets/multiple-stacks-test-bC24IWcJ.js +0 -208
  783. package/bundled-test-harness/assets/nested-query-field-render-test-qxElXx1e.js +0 -249
  784. package/bundled-test-harness/assets/no-stacks-test-Br7IGAgV.js +0 -48
  785. package/bundled-test-harness/assets/number-73SsCMEF.js +0 -3
  786. package/bundled-test-harness/assets/number-CicTBWQd.js +0 -151
  787. package/bundled-test-harness/assets/number-field-test-kV5zXo1J.js +0 -184
  788. package/bundled-test-harness/assets/number-input-CQy4xUeA.js +0 -82
  789. package/bundled-test-harness/assets/office-extract-Bo8sbNkK.js +0 -27
  790. package/bundled-test-harness/assets/office-extract-CfBaoRMD.js +0 -2
  791. package/bundled-test-harness/assets/ogg-meta-extractor-aIf5q_Rq.js +0 -225
  792. package/bundled-test-harness/assets/on-key-C8acaldQ.js +0 -472
  793. package/bundled-test-harness/assets/ooxml-Bu3iZezv.js +0 -172
  794. package/bundled-test-harness/assets/ooxml-jQPBQK25.js +0 -2
  795. package/bundled-test-harness/assets/open-image-in-new-tab-test-CP7q3kMm.js +0 -52
  796. package/bundled-test-harness/assets/operation-lowering-test-9Mdr0hRT.js +0 -2812
  797. package/bundled-test-harness/assets/operations-R9b661Qn.js +0 -3
  798. package/bundled-test-harness/assets/operations-Zv_V3Api.js +0 -766
  799. package/bundled-test-harness/assets/operations-invocation-test-BJPpWb2H.js +0 -523
  800. package/bundled-test-harness/assets/operations-query-test-DufdmPQF.js +0 -459
  801. package/bundled-test-harness/assets/operations-test-CzT051YH.js +0 -2518
  802. package/bundled-test-harness/assets/operator-mode-acceptance-test-ByOIOcD0.js +0 -1188
  803. package/bundled-test-harness/assets/operator-mode-card-chooser-test-CNhR9mvv.js +0 -1036
  804. package/bundled-test-harness/assets/operator-mode-links-test-CuxSVTPR.js +0 -793
  805. package/bundled-test-harness/assets/operator-mode-state-service-CCeHt5SH.js +0 -1275
  806. package/bundled-test-harness/assets/operator-mode-state-service-test-C8TI9WWg.js +0 -206
  807. package/bundled-test-harness/assets/operator-mode-test-DG-mG8Tn.js +0 -683
  808. package/bundled-test-harness/assets/operator-mode-ui-test-DB7xhjS0.js +0 -1027
  809. package/bundled-test-harness/assets/overlay-menu-items-test-C6rcdF_S.js +0 -317
  810. package/bundled-test-harness/assets/overlays-D2zmPxzK.js +0 -270
  811. package/bundled-test-harness/assets/overlays-clip-test-Clpq3JzQ.js +0 -91
  812. package/bundled-test-harness/assets/overlays-detached-element-test-BtsTeJch.js +0 -56
  813. package/bundled-test-harness/assets/pane-f-IYhcWT.js +0 -330
  814. package/bundled-test-harness/assets/panel-B3PCSBbf.js +0 -3540
  815. package/bundled-test-harness/assets/panel-Ban7zCBP.js +0 -474
  816. package/bundled-test-harness/assets/past-sessions-test-uM2m-oKV.js +0 -321
  817. package/bundled-test-harness/assets/patch-fields-test-COPjDhnt.js +0 -1014
  818. package/bundled-test-harness/assets/patch-instance-test-CRb3dfby.js +0 -348
  819. package/bundled-test-harness/assets/pdf-file-def-J_yOUU8_.js +0 -76
  820. package/bundled-test-harness/assets/pdf-meta-extractor-83T5Bdo7.js +0 -156
  821. package/bundled-test-harness/assets/pdf-meta-extractor-INFIklMy.js +0 -2
  822. package/bundled-test-harness/assets/pdf-viewer-B4rRluWA.js +0 -2
  823. package/bundled-test-harness/assets/pdf-viewer-vYem8ozk.js +0 -112
  824. package/bundled-test-harness/assets/percentage-ChagfNRG.js +0 -84
  825. package/bundled-test-harness/assets/permission-checking-realm-test-Dmb2a428.js +0 -306
  826. package/bundled-test-harness/assets/phone-number-BiD2eaSd.js +0 -236
  827. package/bundled-test-harness/assets/phone-number-C-wt4_UK.js +0 -2
  828. package/bundled-test-harness/assets/phone-number-field-test-BHzAmuBP.js +0 -73
  829. package/bundled-test-harness/assets/plate-CqN2nM6P.js +0 -41
  830. package/bundled-test-harness/assets/plate-DaIfpORN.js +0 -2
  831. package/bundled-test-harness/assets/player-CGt5fTd5.js +0 -2
  832. package/bundled-test-harness/assets/player-CN0l44LK.js +0 -82
  833. package/bundled-test-harness/assets/plural-field-components-test-CO2g2opW.js +0 -198
  834. package/bundled-test-harness/assets/png-image-def-B_oou2wS.js +0 -48
  835. package/bundled-test-harness/assets/png-meta-extractor-BfPz1qP_.js +0 -2
  836. package/bundled-test-harness/assets/png-meta-extractor-C8ai8sPw.js +0 -111
  837. package/bundled-test-harness/assets/policy-scoped-search-test-BRRp2a1A.js +0 -339
  838. package/bundled-test-harness/assets/pptx-file-def-C3qYEHDM.js +0 -60
  839. package/bundled-test-harness/assets/pptx-meta-extractor-8IuoBq4I.js +0 -77
  840. package/bundled-test-harness/assets/pptx-meta-extractor-BPhy9RMM.js +0 -2
  841. package/bundled-test-harness/assets/prerender-persistence-block-test-Cteb_Rs_.js +0 -124
  842. package/bundled-test-harness/assets/prerender-serialize-cycle-test-CH7b6Ra9.js +0 -134
  843. package/bundled-test-harness/assets/preview-CmERZpI6.js +0 -74
  844. package/bundled-test-harness/assets/preview-format-BPMlCSbb.js +0 -41
  845. package/bundled-test-harness/assets/preview-format-test-B7sA8fbZ.js +0 -103
  846. package/bundled-test-harness/assets/process-card-CtDzDB-_.js +0 -2
  847. package/bundled-test-harness/assets/process-card-erbWKY5h.js +0 -114
  848. package/bundled-test-harness/assets/process-card-test-DXOt1jDW.js +0 -94
  849. package/bundled-test-harness/assets/profile-settings-modal-11BrR058.js +0 -708
  850. package/bundled-test-harness/assets/progress-circle-Cd79Zqh2.js +0 -2
  851. package/bundled-test-harness/assets/progress-circle-sc-W5aUl.js +0 -95
  852. package/bundled-test-harness/assets/quarter-B61kCpcD.js +0 -168
  853. package/bundled-test-harness/assets/quarter-d5jkTzcz.js +0 -2
  854. package/bundled-test-harness/assets/query-field-membership-status-test-BmpVfohw.js +0 -323
  855. package/bundled-test-harness/assets/query-field-page-optin-test-9_Cce-OJ.js +0 -126
  856. package/bundled-test-harness/assets/query-field-schema-test-CwV7xanX.js +0 -231
  857. package/bundled-test-harness/assets/query-field-stale-prerender-test-RkdnZ-VV.js +0 -152
  858. package/bundled-test-harness/assets/query-fields-test-BLxYkTAM.js +0 -535
  859. package/bundled-test-harness/assets/rail-CFPU0tFe.js +0 -2
  860. package/bundled-test-harness/assets/rail-CQ53Dakr.js +0 -44
  861. package/bundled-test-harness/assets/realm-DdVH9lSZ.js +0 -95
  862. package/bundled-test-harness/assets/realm-DdsFw3b-.js +0 -2
  863. package/bundled-test-harness/assets/realm-config-DIslxoB7.js +0 -844
  864. package/bundled-test-harness/assets/realm-config-policy-standing-test-b4WxNDor.js +0 -290
  865. package/bundled-test-harness/assets/realm-config-routing-rule-edit-test-C-rcvkkD.js +0 -274
  866. package/bundled-test-harness/assets/realm-config-settings-test-DDUkM3zw.js +0 -187
  867. package/bundled-test-harness/assets/realm-dropdown-1j55Dy-1.js +0 -560
  868. package/bundled-test-harness/assets/realm-field-test-D-uEtFKO.js +0 -100
  869. package/bundled-test-harness/assets/realm-indexing-test-U9m0epR-.js +0 -4380
  870. package/bundled-test-harness/assets/realm-policy-test-DhKabhlk.js +0 -1141
  871. package/bundled-test-harness/assets/realm-test-BX6C9SS5.js +0 -2363
  872. package/bundled-test-harness/assets/realm-url-tooltip-BjjcKqBx.js +0 -56
  873. package/bundled-test-harness/assets/realm-url-tooltip-test-DW0ZwEEE.js +0 -78
  874. package/bundled-test-harness/assets/reasoning-test-BWT94KXG.js +0 -234
  875. package/bundled-test-harness/assets/recent-colors-addon-CfgmgilF.js +0 -61
  876. package/bundled-test-harness/assets/recent-colors-addon-D--Ry3Pf.js +0 -2
  877. package/bundled-test-harness/assets/relationship-loading-state-test-C5R6jao_.js +0 -290
  878. package/bundled-test-harness/assets/relative-time-Bq7pqums.js +0 -2
  879. package/bundled-test-harness/assets/relative-time-D0QyW4ig.js +0 -129
  880. package/bundled-test-harness/assets/remix-card-test-Cy0h3Xdf.js +0 -58
  881. package/bundled-test-harness/assets/rendered-markdown-Hw_EF8SO.js +0 -263
  882. package/bundled-test-harness/assets/rendered-markdown-test-CqeF-UZd.js +0 -587
  883. package/bundled-test-harness/assets/resident-instance-reuse-test-BiI6L40n.js +0 -82
  884. package/bundled-test-harness/assets/response-field-BCxG5phG.js +0 -38
  885. package/bundled-test-harness/assets/result-tile-DMzRnTP8.js +0 -140
  886. package/bundled-test-harness/assets/rich-markdown-C4RUl7L0.js +0 -2
  887. package/bundled-test-harness/assets/rich-markdown-DxQSCg-o.js +0 -218
  888. package/bundled-test-harness/assets/rich-markdown-field-test-B7wpedKs.js +0 -1647
  889. package/bundled-test-harness/assets/room-D0M0Zwrs.js +0 -1008
  890. package/bundled-test-harness/assets/room-message-test-BWWd4xC8.js +0 -445
  891. package/bundled-test-harness/assets/room-test-DFH-nOwi.js +0 -95
  892. package/bundled-test-harness/assets/run-realm-code-DyVyEDBl.js +0 -1600
  893. package/bundled-test-harness/assets/run-realm-code-test-BpxF-tOz.js +0 -2468
  894. package/bundled-test-harness/assets/schema-generation-test-DjaJqpYP.js +0 -28
  895. package/bundled-test-harness/assets/score-Cfp34BE7.js +0 -2
  896. package/bundled-test-harness/assets/score-DIWWpeyf.js +0 -100
  897. package/bundled-test-harness/assets/scrolling-test-hA_uBwBg.js +0 -384
  898. package/bundled-test-harness/assets/search-C0-b7dJI.js +0 -605
  899. package/bundled-test-harness/assets/search-adorn-test-C6KP3AwA.js +0 -136
  900. package/bundled-test-harness/assets/search-entries-BfPq5sPS.js +0 -472
  901. package/bundled-test-harness/assets/search-entries-result-test-Bl9u_BOD.js +0 -234
  902. package/bundled-test-harness/assets/search-entries-test-BDC_lS43.js +0 -1486
  903. package/bundled-test-harness/assets/search-result-header-DCAze_cg.js +0 -128
  904. package/bundled-test-harness/assets/search-results-Dd0enVun.js +0 -266
  905. package/bundled-test-harness/assets/search-results-test-T5KEEII4.js +0 -578
  906. package/bundled-test-harness/assets/search-selection-menu-test-CCssnBq1.js +0 -108
  907. package/bundled-test-harness/assets/search-sheet-persistence-test-BzQiO-FK.js +0 -131
  908. package/bundled-test-harness/assets/search-test-fyCWb24m.js +0 -2241
  909. package/bundled-test-harness/assets/searchable-BkgeKQMl.js +0 -2
  910. package/bundled-test-harness/assets/searchable-D_6p6fyb.js +0 -192
  911. package/bundled-test-harness/assets/searchable-option-test-CnCUYGaq.js +0 -322
  912. package/bundled-test-harness/assets/searchable-search-doc-test-B8Q0D98v.js +0 -1271
  913. package/bundled-test-harness/assets/sending-test-D5PGBDys.js +0 -576
  914. package/bundled-test-harness/assets/serialization-rri-form-audit-test-BRJ1cJ31.js +0 -136
  915. package/bundled-test-harness/assets/serialization-test-DM6hK258.js +0 -8758
  916. package/bundled-test-harness/assets/setup-C_GgVgzM.js +0 -772
  917. package/bundled-test-harness/assets/shared-link-target-reuse-test-Be-lSKib.js +0 -207
  918. package/bundled-test-harness/assets/show-card-BFG6KR1m.js +0 -67
  919. package/bundled-test-harness/assets/show-card-test-l0wMrfZq.js +0 -365
  920. package/bundled-test-harness/assets/show-file-B8-FRVHj.js +0 -34
  921. package/bundled-test-harness/assets/signed-capture-D_Q44TQ7.js +0 -204
  922. package/bundled-test-harness/assets/signed-capture-link-test-DOS5xpYv.js +0 -132
  923. package/bundled-test-harness/assets/single-stack-test-BIEtzHVS.js +0 -652
  924. package/bundled-test-harness/assets/skill-BUTGmSsm.js +0 -76
  925. package/bundled-test-harness/assets/skill-Bo7R_2Ud.js +0 -3
  926. package/bundled-test-harness/assets/skill-reference-Cs64py3k.js +0 -112
  927. package/bundled-test-harness/assets/skills-test-CXxSIkYa.js +0 -648
  928. package/bundled-test-harness/assets/slider-picker-C81errGI.js +0 -245
  929. package/bundled-test-harness/assets/slider-picker-mvKsy6cR.js +0 -2
  930. package/bundled-test-harness/assets/spec-B55lJurX.js +0 -602
  931. package/bundled-test-harness/assets/store-DyQ0KiyI.js +0 -2205
  932. package/bundled-test-harness/assets/store-module-rebuild-test-C7532_bS.js +0 -454
  933. package/bundled-test-harness/assets/store-search-test-80NMJuoW.js +0 -175
  934. package/bundled-test-harness/assets/store-test-dHiWXXMs.js +0 -3460
  935. package/bundled-test-harness/assets/string-DHlQEHYm.js +0 -9
  936. package/bundled-test-harness/assets/submode-switcher-DQv-CD6G.js +0 -169
  937. package/bundled-test-harness/assets/svg-meta-extractor-Uw_EJytF.js +0 -42
  938. package/bundled-test-harness/assets/swatches-picker-CaEoibN1.js +0 -33
  939. package/bundled-test-harness/assets/swatches-picker-gPl50JbP.js +0 -2
  940. package/bundled-test-harness/assets/switch-submode-BKDnJd4m.js +0 -79
  941. package/bundled-test-harness/assets/switch-submode-test-_E2mVk4z.js +0 -168
  942. package/bundled-test-harness/assets/tag-B60lDr-j.js +0 -105
  943. package/bundled-test-harness/assets/tests-BBBgPBB6.js +0 -3520
  944. package/bundled-test-harness/assets/text-area-CJjWmwpi.js +0 -9
  945. package/bundled-test-harness/assets/text-file-def-u_dl0i2z.js +0 -151
  946. package/bundled-test-harness/assets/text-input-validator-test-BTwnkSS2.js +0 -156
  947. package/bundled-test-harness/assets/theme-BK-fAHVn.js +0 -9
  948. package/bundled-test-harness/assets/theme-card-test-BQmT7rqr.js +0 -621
  949. package/bundled-test-harness/assets/theme-scheme-island-test-Oi3aeyp1.js +0 -264
  950. package/bundled-test-harness/assets/three-d-model-def-B4KckPVC.js +0 -70
  951. package/bundled-test-harness/assets/time-BcuaSkHg.js +0 -126
  952. package/bundled-test-harness/assets/time-f7Irg7Z7.js +0 -2
  953. package/bundled-test-harness/assets/time-slots-ClYIZN53.js +0 -2
  954. package/bundled-test-harness/assets/time-slots-TI1aaqRN.js +0 -85
  955. package/bundled-test-harness/assets/timeline-Cof9eyq0.js +0 -59
  956. package/bundled-test-harness/assets/timeline-DFWQtCWE.js +0 -2
  957. package/bundled-test-harness/assets/to-device-streaming-test-BDrUUlOt.js +0 -163
  958. package/bundled-test-harness/assets/token-usage-test-CiZo03fY.js +0 -166
  959. package/bundled-test-harness/assets/tool-field-BXHr9r0w.js +0 -94
  960. package/bundled-test-harness/assets/tool-field-CoRO5C4R.js +0 -2
  961. package/bundled-test-harness/assets/tools-CmVaYDIS.js +0 -725
  962. package/bundled-test-harness/assets/tools-calling-test-B454__XF.js +0 -200
  963. package/bundled-test-harness/assets/tools-test-CLu51dJO.js +0 -1624
  964. package/bundled-test-harness/assets/tools-test-XGRAvVug.js +0 -2820
  965. package/bundled-test-harness/assets/ts-file-def-C05BDwdg.js +0 -159
  966. package/bundled-test-harness/assets/update-room-skills-test-jOvP14JX.js +0 -240
  967. package/bundled-test-harness/assets/url-BFf2CNo-.js +0 -2
  968. package/bundled-test-harness/assets/url-CYm-CeXp.js +0 -96
  969. package/bundled-test-harness/assets/video-file-def-B2UIrOFS.js +0 -76
  970. package/bundled-test-harness/assets/wav-meta-extractor-BNkv7e2f.js +0 -368
  971. package/bundled-test-harness/assets/webm-meta-extractor-C933kYyc.js +0 -178
  972. package/bundled-test-harness/assets/webp-meta-extractor-BLz0z1pZ.js +0 -98
  973. package/bundled-test-harness/assets/website-BuOMUW1v.js +0 -92
  974. package/bundled-test-harness/assets/week-Bo0666ji.js +0 -111
  975. package/bundled-test-harness/assets/week-CaVFA8Vc.js +0 -2
  976. package/bundled-test-harness/assets/welcome-to-boxel-PWard7GF.js +0 -172
  977. package/bundled-test-harness/assets/workspace-KXfFTQNV.js +0 -614
  978. package/bundled-test-harness/assets/workspace-a11y-test-Buwb-rfO.js +0 -197
  979. package/bundled-test-harness/assets/workspace-behavior-test-CbgFUOOo.js +0 -200
  980. package/bundled-test-harness/assets/workspace-chooser-BmQvhhrl.js +0 -2248
  981. package/bundled-test-harness/assets/workspace-chooser-Cu84Gd_E.css +0 -1317
  982. package/bundled-test-harness/assets/workspace-chooser-catalog-order-test-rcRw6sni.js +0 -36
  983. package/bundled-test-harness/assets/workspace-chooser-unreachable-notice-test-DUXnBIdY.js +0 -60
  984. package/bundled-test-harness/assets/workspace-delete-multiple-test-DjRKhZ2g.js +0 -212
  985. package/bundled-test-harness/assets/workspace-delete-summary-test-CvkLVYyN.js +0 -63
  986. package/bundled-test-harness/assets/workspace-timestamp-labels-test-AYJT4inv.js +0 -58
  987. package/bundled-test-harness/assets/xlsx-file-def-DuKdbGrJ.js +0 -60
  988. package/bundled-test-harness/assets/xlsx-meta-extractor-Bz-C2JWP.js +0 -101
  989. package/bundled-test-harness/assets/xlsx-meta-extractor-ClwwgABg.js +0 -2
  990. package/bundled-test-harness/assets/year-B6ctHikl.js +0 -2
  991. package/bundled-test-harness/assets/year-C11uAQE6.js +0 -78
  992. package/bundled-test-harness/assets/zip-file-def-B8XN-OS_.js +0 -288
  993. package/bundled-types/host-app/components/matrix/auth-button.gts +0 -39
  994. package/bundled-types/host-app/components/matrix/auth-container.gts +0 -69
  995. package/bundled-types/host-app/components/matrix/auth-form-field.gts +0 -43
@@ -0,0 +1,4393 @@
1
+ import { i as __name, r as __exportAll } from "./chunk-Rp0pCe6z.js";
2
+ import { n as decorateMethodV2, r as initializeDeferredDecorator, t as decorateFieldV2 } from "./runtime--fcdnjmJ-BoCBNIsz.js";
3
+ import { $o as isFileMetaResource, Ao as humanReadable, Bs as runtimeNonQueryDependencyContext, Ci as CAPTURE_MAX_VIEWPORT_WIDTH, E as validate, Eo as getAncestor, Et as wellFormedFilename, Fs as loaderForModule, Gs as trackRuntimeFileDependency, Gt as byteStreamToUint8Array, Hs as shouldTrackRuntimeModuleGraph, Io as isFieldInstance, J as cardTypeIcon, Ko as resolveAdoptsFrom, Ks as trackRuntimeInstanceDependency, La as buildWaiter, Lo as isFileDef, Mr as replaceMermaidSvgs, Ms as Loader, Nr as processKatexPlaceholders, Oa as referenceNamesFile, Oi as isDeclaredCaptureFormat, Oo as getField, Po as isCardInstance$1, S as getSerializer, Sc as Deferred, Si as CAPTURE_MAX_VIEWPORT_HEIGHT, T as serialize, Ti as DECLARED_CAPTURE_FORMATS, Tr as loadFileMetaDocument, Us as shouldTrackRuntimeRelationship, Vs as runtimeQueryDependencyContext, Wo as loadCardDef, X as getFieldIcon, Xo as isCardResource, Ya as FileMetaResourceType, Zs as v4, a as chooseCard, cc as inferContentType, ec as computeContentHash, jo as identifyCard, jr as extractMermaidBlocks, ki as isValidCaptureName, ko as getNarrowestType, mc as isCardError, ns as isRelationship, o as chooseFile, qa as CardResourceType, qs as trackRuntimeModuleDependency, rs as isResolvedCodeRef, to as isDirectIndexedFieldKey, w as deserializeSync, wi as CAPTURE_NAME_PATTERN, wr as loadCardDocument, ws as isRealmIndexCardId, x as assertIsSerializerName, xi as CAPTURE_MAX_PHYSICAL_EDGE_PX, y as getPlural } from "./runtime-common-ClpqhbwG.js";
4
+ import { v as ri, y as rri } from "./paths-BYHDgqsT.js";
5
+ import { S as isEqual, c as startCase, k as flatMap } from "./lodash-DnaZ_rzx.js";
6
+ import { A as cardDefComputedFields, C as baseCardRef, F as getMenuItems, G as primitive, K as realmURL, L as hasNothingToShow, M as fieldSerializer, N as fields, P as fieldsUntracked, R as isBaseInstance, U as meta, V as localId, b as PermissionsContextName, d as DefaultFormatsContextName, k as baseRef, n as CardCrudFunctionsContextName, q as relativeTo, t as CardContextName, x as RealmURLContextName, z as isField } from "./constants-CqKWhRfY.js";
7
+ import { A as resolveRRIReference, a as cardTypeName, i as bfmResolvedEmbedStyle, j as trimJsonExtension, r as bfmRefFormatAndSize, u as fileNameFromUrl, v as formats } from "./bfm-card-references-BplcpB1X.js";
8
+ import { Vn as guidFor, et as tracked, wt as setComponentTemplate } from "./cache-DtDz7X5V-Wn8jRDfL.js";
9
+ import { d as action, vt as scheduleOnce } from "./service-LFpJ8EEP.js";
10
+ import { H as templateFactory, S as on, m as htmlSafe } from "./index-DaCZcoCY-CgzbilMy.js";
11
+ import { n as buildTask } from "./async-arrow-runtime-STsj7E8Y.js";
12
+ import { t as cached } from "./tracking-CNiq91Pk.js";
13
+ import { a as get, i as fn, o as hash, r as concat } from "./helper-m6jA5HmU.js";
14
+ import "./modifier-D0EP-FQ7.js";
15
+ import "./component-BJO47HTh.js";
16
+ import { t as Component$1 } from "./dist-CkA1rgqO.js";
17
+ import "./template-factory-ds9s0u8l.js";
18
+ import { t as templateOnly } from "./template-only-6nVzLWF-.js";
19
+ import { D as markdownEscape, a as and, c as eq, f as not, it as cn_default, m as themeScope, s as coalesce, tt as copyCardURLToClipboard } from "./helpers-BN6ReMzK.js";
20
+ import { $ as BrokenLinkTemplate, A as FieldContainer, D as Header, Q as CardContainer, at as IconComponent$15, et as CopyButton, f as SortableItemModifier, ft as IconButton, it as IconComponent$12, l as Pill, m as SortableGroupModifier, p as SortableHandleModifier, pt as ButtonComponent, st as IconComponent$13, v as MarkdownContentShell, y as IconComponent$14, z as BoxelInput } from "./components-Ct_agx0G.js";
21
+ import { C as IconComponent$19, P as IconComponent$16, Q as IconComponent$21, _ as IconComponent$20, dt as IconComponent$18, v as IconComponent$17 } from "./icons-B3SAtRoj.js";
22
+ import "./template-C81fYDrq.js";
23
+ import "./internals-BTorg710.js";
24
+ import { r as modifier, t as ClassBasedModifier } from "./dist-nMt-N14r.js";
25
+ import { r as provide, t as consume } from "./dist-Ble0L9o7.js";
26
+ import { a as markdownToHtml, i as markdownOversizedNoticeHtml, n as hasCodeBlocks, r as isMarkdownOverRenderLimit, s as preloadMarkdownLanguages } from "./marked-sync-CdAo2KQA.js";
27
+ import { t as CopyCardToRealmTool } from "./copy-card-BxK6V6g9.js";
28
+ import { t as CopyAndEditTool } from "./copy-and-edit-Dky_78tQ.js";
29
+ import { r as CopyCardAsMarkdownTool, t as OpenInInteractModeTool } from "./open-in-interact-mode-j_l0bMVC.js";
30
+ import { n as GenerateExampleCardsTool } from "./generate-example-cards-CwUlAKii.js";
31
+ import { t as OpenCreateListingModalTool } from "./open-create-listing-modal-48KHnYAo.js";
32
+ import { r as PatchThemeTool, t as PopulateWithSampleDataTool } from "./populate-with-sample-data-ikkePJPU.js";
33
+ import { t as ShowCardTool } from "./show-card-Dwfk332M.js";
34
+ import { t as IconComponent$22 } from "./captions-QHDgOGxD.js";
35
+ import { t as isSavedInstance } from "./-private-CzwBsXzj.js";
36
+ import { t as initSharedState } from "./shared-state-Bl1IB84y.js";
37
+ import { t as dropComputedTurnMemo } from "./computed-turn-memo-BLmQbwpW.js";
38
+ import { n as rawArrayValues, t as WatchedArray } from "./watched-array-a3pZamsq.js";
39
+ import { A as readFieldLoadingSignal, B as cardClassFromResource, C as isQueryTaintedField, D as notifyCardTracking, G as rebaseReferencesFor, H as getCardMeta, I as setFieldDescription, J as serialize$1, L as setRealmContextOnField, M as registerRelationshipProbe, N as relationshipStateForEntry, O as peekAtField, P as resolveFieldConfiguration, S as isNotLoadedValue, U as makeMetaForField, V as deserialize, W as makeRelativeURL, X as serializeCardResource, Y as serializeCard, Z as serializeFileDef, _ as isCompoundField, a as entangleWithCardTracking, b as isLinkNotFound, c as getFieldDescription, d as getRelationshipMembershipState, f as getter, g as isCardOrField, h as isCard, i as endComputePass, j as realmContext, k as propagateRealmContext, l as getFieldOverrides, n as beginComputePass, o as getBrokenLinks, p as isArrayOfCardOrField, q as resourceFrom, r as bumpFieldLoadingSignal, s as getDataBucket, t as assertScalar, u as getFields$1, w as markAuthoredEmptyLink, x as isNonPresentLink, y as isLinkError, z as callSerializeHook } from "./field-support-DdQ7XgyM.js";
40
+ import { a as queryFieldHasUnreachableRealms, o as resolveQueryFieldEagerly, r as ensureQueryFieldSearchResource, s as validateRelationshipQuery, t as captureQueryFieldSeedData } from "./query-field-support-C-CnAoJc.js";
41
+ import { t as untitledCardTitle } from "./untitled-card-title-7gKWCDr-.js";
42
+ import { t as DefaultFittedTemplate } from "./fitted-B2l1jlSp.js";
43
+ import { t as DefaultEmbeddedTemplate } from "./embedded-bSxxxbv1.js";
44
+ import { a as IconComponent$23, i as IconComponent$25, r as IconComponent$24, t as getDefaultFileMenuItems } from "./file-menu-items-7_ltrFZq.js";
45
+ import { t as setBackgroundImage } from "./set-background-image-Cet78jot.js";
46
+ import { t as DefaultAtomViewTemplate } from "./atom-klII9Zms.js";
47
+ import { t as DefaultHeadTemplate } from "./head-2-pvm-Pp.js";
48
+ import { t as MissingTemplate } from "./missing-template-BPhJRbDs.js";
49
+ import { t as FieldDefEditTemplate } from "./field-edit-Cx_haspD.js";
50
+ import { l as markdownImage } from "./markdown-helpers-DSIhwGYZ.js";
51
+ import { t as FileDefEditTemplate } from "./file-def-edit-C1dzJxmQ.js";
52
+ import { t as IconComponent$26 } from "./file-BeJnCIX2.js";
53
+ import { t as FileDefAtomTemplate } from "./file-def-atom-DfMESjP6.js";
54
+ import { t as FileDefEmbeddedTemplate } from "./file-def-embedded-DJs6P5t0.js";
55
+ import { t as FileDefFittedTemplate } from "./file-def-fitted-BlrBFfLh.js";
56
+ import { t as FileDefIsolatedTemplate } from "./file-def-isolated-BsHydanv.js";
57
+ import { r as IMAGE_THUMB_CAPTURES } from "./image-captures-Db4V2tdL.js";
58
+ import { t as ImagePreview } from "./image-preview-7baJHA5I.js";
59
+ import { t as TextInputValidator } from "./text-input-validator-rHOoJAwl.js";
60
+ //#region ../base/field-component.gts
61
+ var DEFAULT_CARD_CONTEXT = {
62
+ cardComponentModifier: class NoOpModifier extends ClassBasedModifier {
63
+ modify() {}
64
+ },
65
+ actions: void 0,
66
+ toolContext: void 0,
67
+ getCard: () => {},
68
+ getCards: () => {},
69
+ getCardCollection: () => {}
70
+ };
71
+ var CardContextConsumer = class extends Component$1 {
72
+ static {
73
+ decorateFieldV2(this.prototype, "dynamicCardContext", [consume(CardContextName)]);
74
+ }
75
+ #dynamicCardContext = (initializeDeferredDecorator(this, "dynamicCardContext"), void 0);
76
+ get context() {
77
+ return {
78
+ ...DEFAULT_CARD_CONTEXT,
79
+ ...this.dynamicCardContext
80
+ };
81
+ }
82
+ static {
83
+ setComponentTemplate(templateFactory({
84
+ "id": "WtcAkTyx",
85
+ "block": "[[[18,1,[[30,0,[\"context\"]]]]],[\"&default\"],[\"yield\"]]",
86
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/field-component.gts",
87
+ "isStrictMode": true
88
+ }), this);
89
+ }
90
+ };
91
+ var CardCrudFunctionsConsumer = class extends Component$1 {
92
+ static {
93
+ decorateFieldV2(this.prototype, "cardCrudFunctions", [consume(CardCrudFunctionsContextName)]);
94
+ }
95
+ #cardCrudFunctions = (initializeDeferredDecorator(this, "cardCrudFunctions"), void 0);
96
+ static {
97
+ setComponentTemplate(templateFactory({
98
+ "id": "KikREbAs",
99
+ "block": "[[[18,1,[[30,0,[\"cardCrudFunctions\"]]]]],[\"&default\"],[\"yield\"]]",
100
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/field-component.gts",
101
+ "isStrictMode": true
102
+ }), this);
103
+ }
104
+ };
105
+ var DefaultFormatsConsumer = class extends Component$1 {
106
+ static {
107
+ decorateFieldV2(this.prototype, "defaultFormats", [consume(DefaultFormatsContextName)]);
108
+ }
109
+ #defaultFormats = (initializeDeferredDecorator(this, "defaultFormats"), void 0);
110
+ get effectiveDefaultFormats() {
111
+ return this.defaultFormats ?? {
112
+ cardDef: "isolated",
113
+ fieldDef: "embedded"
114
+ };
115
+ }
116
+ static {
117
+ setComponentTemplate(templateFactory({
118
+ "id": "RVXP6Ah0",
119
+ "block": "[[[18,1,[[30,0,[\"effectiveDefaultFormats\"]]]]],[\"&default\"],[\"yield\"]]",
120
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/field-component.gts",
121
+ "isStrictMode": true
122
+ }), this);
123
+ }
124
+ };
125
+ var DefaultFormatsProvider = class extends Component$1 {
126
+ get defaultFormats() {
127
+ return this.args.value;
128
+ }
129
+ static {
130
+ decorateMethodV2(this.prototype, "defaultFormats", [provide(DefaultFormatsContextName)]);
131
+ }
132
+ };
133
+ var PermissionsConsumer = class extends Component$1 {
134
+ static {
135
+ decorateFieldV2(this.prototype, "permissions", [consume(PermissionsContextName)]);
136
+ }
137
+ #permissions = (initializeDeferredDecorator(this, "permissions"), void 0);
138
+ static {
139
+ setComponentTemplate(templateFactory({
140
+ "id": "v/Zwtlv7",
141
+ "block": "[[[18,1,[[30,0,[\"permissions\"]]]]],[\"&default\"],[\"yield\"]]",
142
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/field-component.gts",
143
+ "isStrictMode": true
144
+ }), this);
145
+ }
146
+ };
147
+ var componentCache$2 = initSharedState("componentCache", () => /* @__PURE__ */ new WeakMap());
148
+ function getBoxComponent(cardOrField, model, field, opts) {
149
+ let stable = opts?.componentOverride ? void 0 : componentCache$2.get(model);
150
+ if (stable?.cardOrField === cardOrField) return stable.component;
151
+ function determineFormats(userFormat, defaultFormats) {
152
+ let result = userFormat && formats.includes(userFormat) ? {
153
+ fieldDef: userFormat,
154
+ cardDef: userFormat
155
+ } : defaultFormats;
156
+ if (field?.computeVia && result.fieldDef === "edit") result = {
157
+ ...result,
158
+ fieldDef: "embedded"
159
+ };
160
+ return result;
161
+ }
162
+ let internalFieldsCache;
163
+ function lookupComponents(effectiveFormat) {
164
+ let currentCardOrFieldClass = cardOrField;
165
+ let effectiveCardOrFieldComponent;
166
+ while (opts?.componentCodeRef && !effectiveCardOrFieldComponent && currentCardOrFieldClass) {
167
+ if (isEqual(Loader.identify(currentCardOrFieldClass), opts.componentCodeRef)) {
168
+ effectiveCardOrFieldComponent = currentCardOrFieldClass;
169
+ break;
170
+ }
171
+ currentCardOrFieldClass = Reflect.getPrototypeOf(currentCardOrFieldClass);
172
+ }
173
+ if (!effectiveCardOrFieldComponent) effectiveCardOrFieldComponent = cardOrField;
174
+ let fields;
175
+ if (internalFieldsCache?.format === effectiveFormat) fields = internalFieldsCache.fields;
176
+ else {
177
+ fields = fieldsComponentsFor({}, model);
178
+ internalFieldsCache = {
179
+ fields,
180
+ format: effectiveFormat
181
+ };
182
+ }
183
+ let componentClass = effectiveCardOrFieldComponent;
184
+ let viewSlot;
185
+ if ((effectiveFormat === "isolated" || effectiveFormat === "edit") && componentClass.isolated && componentClass.isolated === componentClass.edit) viewSlot = "isolated";
186
+ else if ((effectiveFormat === "embedded" || effectiveFormat === "edit") && componentClass.embedded && componentClass.embedded === componentClass.edit) viewSlot = "embedded";
187
+ return {
188
+ CardOrFieldFormatComponent: opts?.componentOverride ? opts.componentOverride : viewSlot ? componentClass[viewSlot] : componentClass[effectiveFormat],
189
+ fields
190
+ };
191
+ }
192
+ function isThemeCard(cardDef) {
193
+ if (cardDef && "cssVariables" in cardDef) return getField(cardDef, "cssVariables")?.card?.name === "CSSField";
194
+ return false;
195
+ }
196
+ function themeCss(cardDef) {
197
+ return isThemeCard(cardDef) ? cardDef.cssVariables : cardDef?.cardTheme?.cssVariables;
198
+ }
199
+ function hasTheme(cardDef) {
200
+ if (isThemeCard(cardDef)) return Boolean(cardDef?.cssVariables?.trim());
201
+ return cardDef?.cardTheme != null;
202
+ }
203
+ function themeId(cardDef) {
204
+ return isThemeCard(cardDef) ? cardDef.id : cardDef?.cardTheme?.id;
205
+ }
206
+ function getCssImports(card) {
207
+ if (card && "cssImports" in card) {
208
+ if (getField(card, "cssImports")?.card?.name === "CssImportField") return card.cssImports;
209
+ }
210
+ return card?.cardTheme?.cssImports;
211
+ }
212
+ stable = {
213
+ component: fieldsComponentsFor(class FieldComponent extends Component$1 {
214
+ get themeScopeId() {
215
+ let value = model.value;
216
+ if (isCard(value)) {
217
+ let scope = themeScope(themeId(value), themeCss(value));
218
+ if (scope) return scope;
219
+ }
220
+ return guidFor(this);
221
+ }
222
+ get resolvedConfiguration() {
223
+ if (!field) return void 0;
224
+ let current = model;
225
+ let root;
226
+ try {
227
+ while (current?.state?.type === "derived") current = current.state.containingBox;
228
+ root = current?.state?.model;
229
+ } catch (_e) {
230
+ root = void 0;
231
+ }
232
+ if (!root) return void 0;
233
+ return resolveFieldConfiguration(field, root);
234
+ }
235
+ static {
236
+ setComponentTemplate(templateFactory({
237
+ "id": "QW31c6S2",
238
+ "block": "[[[8,[32,0],[[24,\"data-scopedcss-d30603e96c-275e5b98a6\",\"\"]],null,[[\"default\"],[[[[1,\"\\n \"],[8,[32,1],[[24,\"data-scopedcss-d30603e96c-275e5b98a6\",\"\"]],null,[[\"default\"],[[[[1,\"\\n \"],[8,[32,2],[[24,\"data-scopedcss-d30603e96c-275e5b98a6\",\"\"]],null,[[\"default\"],[[[[1,\"\\n \"],[8,[32,3],[[24,\"data-scopedcss-d30603e96c-275e5b98a6\",\"\"]],null,[[\"default\"],[[[[1,\"\\n\"],[44,[[28,[32,4],[[30,5],[30,4]],null]],[[[44,[[28,[32,5],[[52,[28,[32,6],[[32,7,[\"value\"]]],null],[30,6,[\"cardDef\"]],[30,6,[\"fieldDef\"]]]],null],[52,[28,[32,8],[[30,7],false],null],false,true]],[[[41,[28,[32,6],[[32,7,[\"value\"]]],null],[[[44,[[32,7,[\"value\"]]],[[[1,\" \"],[8,[32,9],[[24,\"data-scopedcss-d30603e96c-275e5b98a6\",\"\"]],[[\"@value\"],[[28,[32,10],[[30,6,[\"cardDef\"]]],null]]],[[\"default\"],[[[[1,\"\\n \"],[8,[32,11],[[16,0,[28,[32,12],[\"field-component-card\",[28,[32,13],[[30,6,[\"cardDef\"]],\"-format\"],null],[28,[32,13],[\"display-container-\",[30,9]],null]],null]],[16,\"data-boxel-card-id\",[30,10,[\"id\"]]],[16,\"data-boxel-card-format\",[30,6,[\"cardDef\"]]],[16,\"data-card-field\",[32,14,[\"name\"]]],[16,\"data-test-card\",[30,10,[\"id\"]]],[16,\"data-test-card-format\",[30,6,[\"cardDef\"]]],[24,\"data-test-field-component-card\",\"\"],[17,11],[24,\"data-scopedcss-d30603e96c-275e5b98a6\",\"\"],[4,[30,1,[\"cardComponentModifier\"]],null,[[\"card\",\"format\",\"fieldType\",\"fieldName\"],[[30,10],[30,6,[\"cardDef\"]],[32,14,[\"fieldType\"]],[32,14,[\"name\"]]]]]],[[\"@displayBoundaries\",\"@isThemed\",\"@cssImports\",\"@themeCss\",\"@themeScope\"],[[30,9],[28,[32,15],[[30,10]],null],[28,[32,16],[[30,10]],null],[28,[32,17],[[30,10]],null],[30,0,[\"themeScopeId\"]]]],[[\"default\"],[[[[1,\"\\n \"],[8,[30,8,[\"CardOrFieldFormatComponent\"]],[[24,\"data-scopedcss-d30603e96c-275e5b98a6\",\"\"]],[[\"@cardOrField\",\"@model\",\"@fields\",\"@format\",\"@set\",\"@fieldName\",\"@context\",\"@configuration\",\"@createCard\",\"@viewCard\",\"@saveCard\",\"@editCard\",\"@canEdit\",\"@typeConstraint\"],[[32,18],[30,10],[30,8,[\"fields\"]],[30,6,[\"cardDef\"]],[32,7,[\"set\"]],[32,7,[\"name\"]],[30,1],[30,0,[\"resolvedConfiguration\"]],[30,2,[\"createCard\"]],[30,2,[\"viewCard\"]],[30,2,[\"saveCard\"]],[30,2,[\"editCard\"]],[28,[32,19],[[28,[32,20],[[32,14,[\"computeVia\"]]],null],[28,[32,20],[[32,14,[\"queryDefinition\"]]],null],[30,3,[\"canWrite\"]]],null],[30,12]]],null],[1,\"\\n \"]],[]]]]],[1,\"\\n \"]],[]]]]],[1,\"\\n\"]],[10]]]],[]],[[[41,[28,[32,19],[[28,[32,21],[[32,7,[\"value\"]]],null],[28,[32,22],[[30,7],true],null]],null],[[[1,\" \"],[8,[32,9],[[24,\"data-scopedcss-d30603e96c-275e5b98a6\",\"\"]],[[\"@value\"],[[28,[32,10],[[30,6,[\"fieldDef\"]]],null]]],[[\"default\"],[[[[1,\"\\n \"],[11,0],[16,0,[29,[\"compound-field\\n \",[30,6,[\"fieldDef\"]],\"-format\"]]],[16,\"data-card-field\",[32,14,[\"name\"]]],[16,\"data-test-compound-field-format\",[30,6,[\"fieldDef\"]]],[24,\"data-test-compound-field-component\",\"\"],[17,11],[24,\"data-scopedcss-d30603e96c-275e5b98a6\",\"\"],[12],[1,\"\\n \"],[8,[30,8,[\"CardOrFieldFormatComponent\"]],[[24,\"data-scopedcss-d30603e96c-275e5b98a6\",\"\"]],[[\"@cardOrField\",\"@model\",\"@fields\",\"@format\",\"@set\",\"@fieldName\",\"@context\",\"@configuration\",\"@createCard\",\"@viewCard\",\"@saveCard\",\"@editCard\",\"@canEdit\",\"@typeConstraint\"],[[32,18],[32,7,[\"value\"]],[30,8,[\"fields\"]],[30,6,[\"fieldDef\"]],[32,7,[\"set\"]],[32,7,[\"name\"]],[30,1],[30,0,[\"resolvedConfiguration\"]],[30,2,[\"createCard\"]],[30,2,[\"viewCard\"]],[30,2,[\"saveCard\"]],[30,2,[\"editCard\"]],[28,[32,19],[[28,[32,20],[[32,14,[\"computeVia\"]]],null],[28,[32,20],[[32,14,[\"queryDefinition\"]]],null],[30,3,[\"canWrite\"]]],null],[30,12]]],null],[1,\"\\n \"],[13],[1,\"\\n \"]],[]]]]],[1,\"\\n\"]],[]],[[[1,\" \"],[8,[32,9],[[24,\"data-scopedcss-d30603e96c-275e5b98a6\",\"\"]],[[\"@value\"],[[28,[32,10],[[30,6,[\"fieldDef\"]]],null]]],[[\"default\"],[[[[1,\"\\n \"],[8,[30,8,[\"CardOrFieldFormatComponent\"]],[[17,11],[24,\"data-scopedcss-d30603e96c-275e5b98a6\",\"\"]],[[\"@cardOrField\",\"@model\",\"@fields\",\"@format\",\"@set\",\"@fieldName\",\"@context\",\"@configuration\",\"@createCard\",\"@viewCard\",\"@saveCard\",\"@editCard\",\"@canEdit\",\"@typeConstraint\"],[[32,18],[32,7,[\"value\"]],[30,8,[\"fields\"]],[30,6,[\"fieldDef\"]],[32,7,[\"set\"]],[32,7,[\"name\"]],[30,1],[30,0,[\"resolvedConfiguration\"]],[30,2,[\"createCard\"]],[30,2,[\"viewCard\"]],[30,2,[\"saveCard\"]],[30,2,[\"editCard\"]],[28,[32,19],[[28,[32,20],[[32,14,[\"computeVia\"]]],null],[28,[32,20],[[32,14,[\"queryDefinition\"]]],null],[30,3,[\"canWrite\"]]],null],[30,12]]],null],[1,\"\\n \"]],[]]]]],[1,\"\\n \"]],[]]]],[]]]],[8,9]]]],[6]]],[1,\" \"]],[4]]]]],[1,\"\\n \"]],[3]]]]],[1,\"\\n \"]],[2]]]]],[1,\"\\n\"]],[1]]]]],[1,\"\\n\"]],[\"context\",\"cardCrudFunctions\",\"permissions\",\"defaultFormats\",\"@format\",\"effectiveFormats\",\"@displayContainer\",\"c\",\"displayContainer\",\"card\",\"&attrs\",\"@typeConstraint\"],[\"let\",\"if\"]]",
239
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/field-component.gts",
240
+ "scope": () => [
241
+ CardContextConsumer,
242
+ CardCrudFunctionsConsumer,
243
+ PermissionsConsumer,
244
+ DefaultFormatsConsumer,
245
+ determineFormats,
246
+ lookupComponents,
247
+ isCard,
248
+ model,
249
+ eq,
250
+ DefaultFormatsProvider,
251
+ defaultFieldFormats,
252
+ CardContainer,
253
+ cn_default,
254
+ concat,
255
+ field,
256
+ hasTheme,
257
+ getCssImports,
258
+ themeCss,
259
+ cardOrField,
260
+ and,
261
+ not,
262
+ isCompoundField,
263
+ coalesce
264
+ ],
265
+ "isStrictMode": true
266
+ }), this);
267
+ }
268
+ }, model),
269
+ cardOrField,
270
+ fields: isCardInstance$1(model.value) ? getFields(cardOrField) : void 0
271
+ };
272
+ if (!opts?.componentOverride) componentCache$2.set(model, stable);
273
+ return stable.component;
274
+ }
275
+ function getFields(card) {
276
+ let fields = {};
277
+ let obj = card.prototype;
278
+ while (obj?.constructor.name && obj.constructor.name !== "Object") {
279
+ let currentFields = flatMap(Object.keys(Object.getOwnPropertyDescriptors(obj)), (maybeFieldName) => {
280
+ if (maybeFieldName === "constructor") return [];
281
+ let maybeField = getField(card, maybeFieldName);
282
+ if (!maybeField) return [];
283
+ if (maybeField.computeVia) return [];
284
+ return [[maybeFieldName, maybeField]];
285
+ });
286
+ fields = Object.assign(Object.create(null), fields, Object.fromEntries(currentFields));
287
+ obj = Reflect.getPrototypeOf(obj);
288
+ }
289
+ return fields;
290
+ }
291
+ function defaultFieldFormats(containingFormat) {
292
+ switch (containingFormat) {
293
+ case "edit": return {
294
+ fieldDef: "edit",
295
+ cardDef: "edit"
296
+ };
297
+ case "isolated":
298
+ case "fitted":
299
+ case "embedded": return {
300
+ fieldDef: "embedded",
301
+ cardDef: "fitted"
302
+ };
303
+ case "atom": return {
304
+ fieldDef: "atom",
305
+ cardDef: "atom"
306
+ };
307
+ case "head": return {
308
+ fieldDef: "head",
309
+ cardDef: "head"
310
+ };
311
+ case "markdown": return {
312
+ fieldDef: "markdown",
313
+ cardDef: "markdown"
314
+ };
315
+ default: return {
316
+ fieldDef: "embedded",
317
+ cardDef: "fitted"
318
+ };
319
+ }
320
+ }
321
+ function fieldsComponentsFor(target, model) {
322
+ return new Proxy(target, {
323
+ get(target, property, received) {
324
+ if (typeof property === "symbol" || model == null || model.value == null) return Reflect.get(target, property, received);
325
+ let modelValue = model.value;
326
+ let maybeField = componentCache$2.get(model)?.fields?.[property] ?? getField(modelValue, property);
327
+ if (!maybeField) return Reflect.get(target, property, received);
328
+ return maybeField.component(model);
329
+ },
330
+ getPrototypeOf() {
331
+ return target;
332
+ },
333
+ ownKeys(target) {
334
+ let keys = Reflect.ownKeys(target);
335
+ for (let name in model.value) if (getField(model.value, name)) keys.push(name);
336
+ return keys;
337
+ },
338
+ getOwnPropertyDescriptor(target, property) {
339
+ if (typeof property === "symbol" || model == null || model.value == null) return Reflect.getOwnPropertyDescriptor(target, property);
340
+ if (!getField(model.value, property)) return Reflect.getOwnPropertyDescriptor(target, property);
341
+ return {
342
+ enumerable: true,
343
+ writable: true,
344
+ configurable: true
345
+ };
346
+ }
347
+ });
348
+ }
349
+ (globalThis.__boxelBundledBaseScopedCSS ??= {})["field-component"] = {
350
+ "css": ["./field-component.gts.CiAgLmZpZWxkLWNvbXBvbmVudC1jYXJkLmlzb2xhdGVkLWZvcm1hdFtkYXRhLXNjb3BlZGNzcy1kMzA2MDNlOTZjLTI3NWU1Yjk4YTZdIHsKICAgIGhlaWdodDogMTAwJTsKICB9CgogIC5maWVsZC1jb21wb25lbnQtY2FyZC5lZGl0LWZvcm1hdFtkYXRhLXNjb3BlZGNzcy1kMzA2MDNlOTZjLTI3NWU1Yjk4YTZdOmhhcyguZGVmYXVsdC1jYXJkLXRlbXBsYXRlLmVkaXQpIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW11dGVkLCB2YXIoLS1ib3hlbC0xMDApKTsKICB9CgogIEBsYXllciBiYXNlQ29tcG9uZW50IHsKICAgIC5maWVsZC1jb21wb25lbnQtY2FyZC5maXR0ZWQtZm9ybWF0W2RhdGEtc2NvcGVkY3NzLWQzMDYwM2U5NmMtMjc1ZTViOThhNl0gewogICAgICAvKgogIFRoZSBjYXJkcyB0aGVtc2VsdmVzIG5lZWQgdG8gYmUgaW4gY2hhcmdlIG9mIHRoZSBzdHlsZXMgd2l0aGluIHRoZSBjYXJkIGJvdW5kYXJ5CiAgaW4gb3JkZXIgZm9yIHRoZSBjb250YWluZXIgcXVlcmllcyB0byBtYWtlIHNlbnNlLS1vdGhlcndpc2Ugd2UgbmVlZCB0byBkbyBzdHlsZQogIG1hdGggdG8gZmlndXJlIG91dCB3aGF0IHRoZSBhY3R1YWwgYnJlYWtwb2ludHMgYXJlLiBwbGVhc2UgcmVzaXN0IHRoZSB1cmdlIHRvIGFkZAogIHBhZGRpbmcgb3IgYW55dGhpbmcgdGhhdCBhbHRlcnMgdGhlIGdlb21ldHJ5IGluc2lkZSBvZiB0aGUgY2FyZCBib3VuZGFyeS4KCiAgd2UgbmVlZCB0byB1c2UgaGVpZ2h0IDEwMCUgYmVjYXVzZSB0aGUgY29udGFpbmVyIHF1ZXJ5IGZvciBmaXR0ZWQgY2FyZHMgb25seQogIHdvcmtzIGlmIHdlIHVzZSB1cCBhbGwgdGhlIHNwYWNlIGhvcml6b250YWxseSBhbmQgdmVydGljYWxseSB0aGF0IGlzIGF2YWlsYWJsZQogIHRvIHRoZSBjYXJkIHNpbmNlIHNvbWUgb2Ygb3VyIHF1ZXJpZXMgYXJlIGhlaWdodCBxdWVyaWVzCiovCiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIG1pbi1oZWlnaHQ6IDQwcHg7CiAgICAgIG1heC1oZWlnaHQ6IDYwMHB4OwogICAgICBjb250YWluZXItbmFtZTogZml0dGVkLWNhcmQ7CiAgICAgIGNvbnRhaW5lci10eXBlOiBzaXplOwogICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgfQogIH0KCiAgLmZpZWxkLWNvbXBvbmVudC1jYXJkLmVtYmVkZGVkLWZvcm1hdFtkYXRhLXNjb3BlZGNzcy1kMzA2MDNlOTZjLTI3NWU1Yjk4YTZdIHsKICAgIC8qCiAgICBUaGUgY2FyZHMgdGhlbXNlbHZlcyBuZWVkIHRvIGJlIGluIGNoYXJnZSBvZiB0aGUgc3R5bGVzIHdpdGhpbiB0aGUgY2FyZCBib3VuZGFyeQogICAgaW4gb3JkZXIgZm9yIHRoZSBjb250YWluZXIgcXVlcmllcyB0byBtYWtlIHNlbnNlLS1vdGhlcndpc2Ugd2UgbmVlZCB0byBkbyBzdHlsZQogICAgbWF0aCB0byBmaWd1cmUgb3V0IHdoYXQgdGhlIGFjdHVhbCBicmVha3BvaW50cyBhcmUuIHBsZWFzZSByZXNpc3QgdGhlIHVyZ2UgdG8gYWRkCiAgICBwYWRkaW5nIG9yIGFueXRoaW5nIHRoYXQgYWx0ZXJzIHRoZSBnZW9tZXRyeSBpbnNpZGUgb2YgdGhlIGNhcmQgYm91bmRhcnkuCiAgKi8KICAgIGNvbnRhaW5lci1uYW1lOiBlbWJlZGRlZC1jYXJkOwogICAgY29udGFpbmVyLXR5cGU6IGlubGluZS1zaXplOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICB9CgogIC5maWVsZC1jb21wb25lbnQtY2FyZC5hdG9tLWZvcm1hdC5kaXNwbGF5LWNvbnRhaW5lci1mYWxzZVtkYXRhLXNjb3BlZGNzcy1kMzA2MDNlOTZjLTI3NWU1Yjk4YTZdIHsKICAgIGRpc3BsYXk6IGNvbnRlbnRzOwogICAgLyogbm8gYm94IG9mIGl0cyBvd24gdG8gcGFpbnQsIHNvIHRoZSB0ZXh0IG11c3QgZm9sbG93IHRoZSBzdXJmYWNlCiAgICAgICBpdCBzaXRzIG9uIHJhdGhlciB0aGFuIHRoZSBjb250YWluZXIncyAtLWZvcmVncm91bmQgKi8KICAgIGNvbG9yOiBpbmhlcml0OwogIH0KICAuZmllbGQtY29tcG9uZW50LWNhcmQuYXRvbS1mb3JtYXQuZGlzcGxheS1jb250YWluZXItdHJ1ZVtkYXRhLXNjb3BlZGNzcy1kMzA2MDNlOTZjLTI3NWU1Yjk4YTZdIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHdpZHRoOiBhdXRvOwogICAgaGVpZ2h0OiBhdXRvOwogICAgcGFkZGluZzogdmFyKC0tYm94ZWwtc3AtNHhzKSB2YXIoLS1ib3hlbC1zcC14cyk7CiAgfQogIC5maWVsZC1jb21wb25lbnQtY2FyZC5hdG9tLWZvcm1hdFtkYXRhLXNjb3BlZGNzcy1kMzA2MDNlOTZjLTI3NWU1Yjk4YTZdID4gICogewogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICB9CiAgLmNvbXBvdW5kLWZpZWxkLmF0b20tZm9ybWF0W2RhdGEtc2NvcGVkY3NzLWQzMDYwM2U5NmMtMjc1ZTViOThhNl0gewogICAgZGlzcGxheTogaW5saW5lOwogIH0K.glimmer-scoped.css"],
351
+ "imports": [
352
+ "card-api",
353
+ "field-support",
354
+ "shared-state"
355
+ ]
356
+ };
357
+ (globalThis.__boxelBundledBaseIdentities ??= {})["field-component"] = {
358
+ "CardContextConsumer": CardContextConsumer,
359
+ "CardCrudFunctionsConsumer": CardCrudFunctionsConsumer,
360
+ "DefaultFormatsConsumer": DefaultFormatsConsumer,
361
+ "DefaultFormatsProvider": DefaultFormatsProvider,
362
+ "PermissionsConsumer": PermissionsConsumer,
363
+ "getBoxComponent": getBoxComponent
364
+ };
365
+ //#endregion
366
+ //#region ../base/contains-many-component.gts
367
+ var ContainsManyEditor = class extends Component$1 {
368
+ static {
369
+ decorateFieldV2(this.prototype, "reorderNonce", [tracked], function() {
370
+ return 0;
371
+ });
372
+ }
373
+ #reorderNonce = (initializeDeferredDecorator(this, "reorderNonce"), void 0);
374
+ sortableGroupId = v4();
375
+ setItems(items) {
376
+ this.args.arrayField.set(items);
377
+ this.reorderNonce++;
378
+ }
379
+ static {
380
+ decorateMethodV2(this.prototype, "setItems", [action]);
381
+ }
382
+ get decoratedChildren() {
383
+ return this.args.arrayField.children.map((child, index) => ({
384
+ box: child,
385
+ index,
386
+ key: `${this.reorderNonce}-${index}`
387
+ }));
388
+ }
389
+ get noItems() {
390
+ return this.args.arrayField.children.length === 0;
391
+ }
392
+ static {
393
+ setComponentTemplate(templateFactory({
394
+ "id": "CDS0z8fD",
395
+ "block": "[[[8,[32,0],[[24,\"data-scopedcss-e40f043394-631ef383a1\",\"\"]],null,[[\"default\"],[[[[1,\"\\n \"],[10,0],[14,0,\"contains-many-editor\"],[15,\"data-card-field\",[30,2,[\"name\"]]],[15,\"data-test-contains-many\",[30,2,[\"name\"]]],[14,\"data-scopedcss-e40f043394-631ef383a1\",\"\"],[12],[1,\"\\n\"],[41,[30,0,[\"decoratedChildren\",\"length\"]],[[[1,\" \"],[11,\"ul\"],[24,0,\"list\"],[16,\"data-test-list\",[30,2,[\"name\"]]],[24,\"data-scopedcss-e40f043394-631ef383a1\",\"\"],[4,[32,1],null,[[\"groupName\",\"onChange\"],[[30,0,[\"sortableGroupId\"]],[30,0,[\"setItems\"]]]]],[12],[1,\"\\n\"],[42,[28,[31,2],[[28,[31,2],[[30,0,[\"decoratedChildren\"]]],null]],null],\"key\",[[[1,\" \"],[11,\"li\"],[16,0,[29,[\"editor\\n \",[52,[30,1,[\"canWrite\"]],\"can-write\",\"read-only\"]]]],[16,\"data-test-item\",[30,3,[\"index\"]]],[24,\"data-scopedcss-e40f043394-631ef383a1\",\"\"],[4,[32,2],null,[[\"groupName\",\"model\"],[[30,0,[\"sortableGroupId\"]],[30,3,[\"box\",\"value\"]]]]],[12],[1,\"\\n\"],[41,[30,1,[\"canWrite\"]],[[[1,\" \"],[8,[32,3],[[24,0,\"sort\"],[24,\"aria-label\",\"Sort\"],[24,\"data-test-sort-handle\",\"\"],[16,\"data-test-sort\",[30,3,[\"index\"]]],[24,\"data-scopedcss-e40f043394-631ef383a1\",\"\"],[4,[32,5],null,null]],[[\"@icon\",\"@width\",\"@height\"],[[32,4],\"18px\",\"18px\"]],null],[1,\"\\n \"],[8,[32,3],[[24,0,\"remove\"],[16,\"data-test-remove\",[30,3,[\"index\"]]],[24,\"aria-label\",\"Remove\"],[24,\"data-scopedcss-e40f043394-631ef383a1\",\"\"],[4,[32,7],[\"click\",[28,[32,8],[[30,0,[\"remove\"]],[30,3,[\"index\"]]],null]],null]],[[\"@icon\",\"@width\",\"@height\"],[[32,6],\"18px\",\"18px\"]],null],[1,\"\\n\"]],[]],null],[1,\" \"],[10,0],[14,0,\"item-container\"],[14,\"data-scopedcss-e40f043394-631ef383a1\",\"\"],[12],[1,\"\\n\"],[44,[[28,[32,9],[[28,[30,4],[[30,2],[30,3,[\"box\"]]],null],[30,3,[\"box\"]],[30,2]],null]],[[[1,\" \"],[8,[30,5],[[24,\"data-scopedcss-e40f043394-631ef383a1\",\"\"]],null,null],[1,\"\\n\"]],[5]]],[1,\" \"],[13],[1,\"\\n \"],[13],[1,\"\\n\"]],[3]],null],[1,\" \"],[13],[1,\"\\n\"]],[]],null],[41,[30,1,[\"canWrite\"]],[[[1,\" \"],[8,[32,10],[[16,0,[28,[32,11],[\"add-new\"],[[\"no-items\"],[[30,0,[\"noItems\"]]]]]],[24,\"data-test-add-new\",\"\"],[24,\"data-scopedcss-e40f043394-631ef383a1\",\"\"],[4,[32,7],[\"click\",[30,0,[\"add\"]]],null]],[[\"@kind\",\"@size\",\"@rectangular\"],[\"secondary\",\"tall\",true]],[[\"default\"],[[[[1,\"\\n \"],[8,[32,12],[[24,0,\"icon\"],[24,\"width\",\"12px\"],[24,\"height\",\"12px\"],[24,\"role\",\"presentation\"],[24,\"data-scopedcss-e40f043394-631ef383a1\",\"\"]],null,null],[1,\"\\n Add\\n \"],[1,[28,[32,13],[[30,2,[\"card\",\"displayName\"]]],null]],[1,\"\\n \"]],[]]]]],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n\"]],[1]]]]],[1,\"\\n\"]],[\"permissions\",\"@field\",\"entry\",\"@cardTypeFor\",\"Item\"],[\"if\",\"each\",\"-track-array\",\"let\"]]",
396
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/contains-many-component.gts",
397
+ "scope": () => [
398
+ PermissionsConsumer,
399
+ SortableGroupModifier,
400
+ SortableItemModifier,
401
+ IconButton,
402
+ IconComponent$16,
403
+ SortableHandleModifier,
404
+ IconComponent$17,
405
+ on,
406
+ fn,
407
+ getBoxComponent,
408
+ ButtonComponent,
409
+ cn_default,
410
+ IconComponent$18,
411
+ getPlural
412
+ ],
413
+ "isStrictMode": true
414
+ }), this);
415
+ }
416
+ addField = buildTask(() => ({
417
+ context: this,
418
+ generator: function* () {
419
+ let newValue = primitive in this.args.field.card ? null : new this.args.field.card();
420
+ if (this.args.typeConstraint) newValue = new (yield loadCardDef(this.args.typeConstraint, { loader: myLoader$3() }))();
421
+ this.args.model.value[this.args.field.name].push(newValue);
422
+ }
423
+ }), null, "addField", null);
424
+ add = () => {
425
+ this.addField.perform();
426
+ };
427
+ remove = (index) => {
428
+ this.args.model.value[this.args.field.name].splice(index, 1);
429
+ };
430
+ };
431
+ function getPluralChildFormat$1(effectiveFormat, model) {
432
+ if (effectiveFormat === "edit" && "isFieldDef" in model.value.constructor && model.value.constructor.isFieldDef) return "atom";
433
+ return effectiveFormat;
434
+ }
435
+ __name(getPluralChildFormat$1, "getPluralChildFormat");
436
+ var componentCache$1 = initSharedState("containsManyComponentCache", () => /* @__PURE__ */ new WeakMap());
437
+ var overridesCache = initSharedState("overridesCache", () => /* @__PURE__ */ new WeakMap());
438
+ function setOverrides(maybeInstance) {
439
+ if (isCardInstance$1(maybeInstance)) {
440
+ let instance = maybeInstance;
441
+ let overrides = new Map(Object.entries(instance[fields]));
442
+ overridesCache.set(instance, overrides);
443
+ }
444
+ }
445
+ function getContainsManyComponent({ model, arrayField, field, cardTypeFor }) {
446
+ let stable = componentCache$1.get(arrayField);
447
+ if (stable) return stable.component;
448
+ let componentFor = (child) => getBoxComponent(cardTypeFor(field, child, () => isCardInstance$1(model.value) ? overridesCache.get(model.value) : void 0), child, field);
449
+ let getComponents = () => arrayField.children.map(componentFor);
450
+ let isComputed = !!field.computeVia;
451
+ function shouldRenderEditor(format, defaultFormat, isComputed) {
452
+ if ("isFieldDef" in model.value.constructor && model.value.constructor.isFieldDef) {
453
+ console.warn("We intentionally DO NOT render a contains-many editor when the plural field is nested inside another field. The decision of what to display is complex and should be user-defined");
454
+ return false;
455
+ }
456
+ if (isComputed) return false;
457
+ return (format ?? defaultFormat) === "edit";
458
+ }
459
+ let containsManyComponent = class ContainsManyComponent extends Component$1 {
460
+ static {
461
+ setComponentTemplate(templateFactory({
462
+ "id": "5Cc9LDlf",
463
+ "block": "[[[8,[32,0],[[24,\"data-scopedcss-e40f043394-4177bdb0fa\",\"\"]],null,[[\"default\"],[[[[1,\"\\n \"],[1,[28,[32,1],[[32,2,[\"value\"]]],null]],[1,\"\\n\"],[41,[28,[32,3],[[30,2],[30,1,[\"fieldDef\"]],[32,4]],null],[[[1,\" \"],[8,[32,5],[[24,\"data-scopedcss-e40f043394-4177bdb0fa\",\"\"]],[[\"@model\",\"@arrayField\",\"@field\",\"@cardTypeFor\",\"@typeConstraint\"],[[32,2],[32,6],[32,7],[32,8],[30,3]]],null],[1,\"\\n\"]],[]],[[[44,[[28,[32,9],[[30,2],[30,1,[\"fieldDef\"]]],null]],[[[41,[28,[32,9],[[30,5],true],null],[[[1,\" \"],[11,0],[16,0,[29,[\"plural-field containsMany-field\\n \",[30,4],\"-format\\n \",[52,[51,[32,6,[\"children\",\"length\"]]],\"empty\"]]]],[16,\"data-card-field\",[32,7,[\"name\"]]],[16,\"data-test-plural-view\",[32,7,[\"fieldType\"]]],[16,\"data-test-plural-view-field\",[32,7,[\"name\"]]],[16,\"data-test-plural-view-format\",[30,4]],[17,6],[24,\"data-scopedcss-e40f043394-4177bdb0fa\",\"\"],[12],[1,\"\\n\"],[42,[28,[31,4],[[28,[31,4],[[28,[32,10],null,null]],null]],null],null,[[[1,\" \"],[10,0],[14,0,\"containsMany-item\"],[15,\"data-test-plural-view-item\",[30,8]],[14,\"data-scopedcss-e40f043394-4177bdb0fa\",\"\"],[12],[1,\"\\n \"],[8,[30,7],[[24,\"data-scopedcss-e40f043394-4177bdb0fa\",\"\"]],[[\"@format\"],[[28,[32,11],[[30,4],[32,2]],null]]],null],[1,\"\\n \"],[13],[1,\"\\n\\n\"]],[7,8]],null],[1,\" \"],[13],[1,\"\\n\"]],[]],[[[42,[28,[31,4],[[28,[31,4],[[28,[32,10],null,null]],null]],null],null,[[[1,\" \"],[8,[30,9],[[24,\"data-scopedcss-e40f043394-4177bdb0fa\",\"\"]],[[\"@format\",\"@displayContainer\"],[[28,[32,11],[[30,4],[32,2]],null],false]],null],[1,\"\\n\"]],[9]],null]],[]]]],[4]]]],[]]]],[1]]]]],[1,\"\\n\"]],[\"defaultFormats\",\"@format\",\"@typeConstraint\",\"effectiveFormat\",\"@displayContainer\",\"&attrs\",\"Item\",\"i\",\"Item\"],[\"if\",\"let\",\"unless\",\"each\",\"-track-array\"]]",
464
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/contains-many-component.gts",
465
+ "scope": () => [
466
+ DefaultFormatsConsumer,
467
+ setOverrides,
468
+ model,
469
+ shouldRenderEditor,
470
+ isComputed,
471
+ ContainsManyEditor,
472
+ arrayField,
473
+ field,
474
+ cardTypeFor,
475
+ coalesce,
476
+ getComponents,
477
+ getPluralChildFormat$1
478
+ ],
479
+ "isStrictMode": true
480
+ }), this);
481
+ }
482
+ };
483
+ stable = { component: new Proxy(containsManyComponent, {
484
+ get(target, property, received) {
485
+ if (property === Symbol.iterator) return () => getComponents()[Symbol.iterator]();
486
+ if (property === "length") return arrayField.children.length;
487
+ if (typeof property === "string" && /^\d+$/.test(property)) {
488
+ let child = arrayField.children[parseInt(property)];
489
+ return child ? componentFor(child) : void 0;
490
+ }
491
+ return Reflect.get(target, property, received);
492
+ },
493
+ getPrototypeOf() {
494
+ return containsManyComponent;
495
+ }
496
+ }) };
497
+ componentCache$1.set(arrayField, stable);
498
+ return stable.component;
499
+ }
500
+ function myLoader$3() {
501
+ return loaderForModule(import.meta);
502
+ }
503
+ __name(myLoader$3, "myLoader");
504
+ (globalThis.__boxelBundledBaseScopedCSS ??= {})["contains-many-component"] = {
505
+ "css": ["./contains-many-component.gts.CiAgLmNvbnRhaW5zLW1hbnktZWRpdG9yW2RhdGEtc2NvcGVkY3NzLWU0MGYwNDMzOTQtNjMxZWYzODNhMV0gewogICAgLS1yZW1vdmUtaWNvbi1zaXplOiB2YXIoLS1ib3hlbC1pY29uLW1lZCk7CiAgfQogIC5saXN0W2RhdGEtc2NvcGVkY3NzLWU0MGYwNDMzOTQtNjMxZWYzODNhMV0gewogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXJnaW46IDAgMCB2YXIoLS1ib3hlbC1zcCk7CiAgfQogIC5lZGl0b3JbZGF0YS1zY29wZWRjc3MtZTQwZjA0MzM5NC02MzFlZjM4M2ExXSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBncmlkOwogIH0KICAuZWRpdG9yLnJlYWQtb25seVtkYXRhLXNjb3BlZGNzcy1lNDBmMDQzMzk0LTYzMWVmMzgzYTFdIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOwogIH0KICAuZWRpdG9yLmNhbi13cml0ZVtkYXRhLXNjb3BlZGNzcy1lNDBmMDQzMzk0LTYzMWVmMzgzYTFdIHsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnIgYXV0bzsKICAgIGdhcDogdmFyKC0tYm94ZWwtc3AteHMpOwogIH0KICAuZWRpdG9yICsgLmVkaXRvcltkYXRhLXNjb3BlZGNzcy1lNDBmMDQzMzk0LTYzMWVmMzgzYTFdIHsKICAgIG1hcmdpbi10b3A6IHZhcigtLWJveGVsLXNwLXhzKTsKICB9CiAgLml0ZW0tY29udGFpbmVyW2RhdGEtc2NvcGVkY3NzLWU0MGYwNDMzOTQtNjMxZWYzODNhMV0gewogICAgcGFkZGluZzogdmFyKC0tYm94ZWwtc3ApOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbXV0ZWQsIHZhcigtLWJveGVsLTEwMCkpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm94ZWwtZm9ybS1jb250cm9sLWJvcmRlci1yYWRpdXMpOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1ib3hlbC10cmFuc2l0aW9uKTsKICB9CiAgLnJlbW92ZVtkYXRhLXNjb3BlZGNzcy1lNDBmMDQzMzk0LTYzMWVmMzgzYTFdIHsKICAgIC0taWNvbi1jb2xvcjogY3VycmVudENvbG9yOwogICAgLS1pY29uLXN0cm9rZS13aWR0aDogMS41cHg7CiAgICAtLWJveGVsLWljb24tYnV0dG9uLXdpZHRoOiB2YXIoLS1yZW1vdmUtaWNvbi1zaXplKTsKICAgIC0tYm94ZWwtaWNvbi1idXR0b24taGVpZ2h0OiB2YXIoLS1yZW1vdmUtaWNvbi1zaXplKTsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgb3V0bGluZTogMDsKICAgIG9yZGVyOiAxOwogIH0KICAucmVtb3ZlW2RhdGEtc2NvcGVkY3NzLWU0MGYwNDMzOTQtNjMxZWYzODNhMV06Zm9jdXMsCiAgLnJlbW92ZVtkYXRhLXNjb3BlZGNzcy1lNDBmMDQzMzk0LTYzMWVmMzgzYTFdOmhvdmVyIHsKICAgIC0taWNvbi1jb2xvcjogdmFyKC0tZGVzdHJ1Y3RpdmUtaW5rKTsKICAgIG91dGxpbmU6IDA7CiAgfQogIC5yZW1vdmU6Zm9jdXMgKyAuaXRlbS1jb250YWluZXJbZGF0YS1zY29wZWRjc3MtZTQwZjA0MzM5NC02MzFlZjM4M2ExXSwKICAucmVtb3ZlOmhvdmVyICsgLml0ZW0tY29udGFpbmVyW2RhdGEtc2NvcGVkY3NzLWU0MGYwNDMzOTQtNjMxZWYzODNhMV0sCiAgLnNvcnQ6YWN0aXZlIH4gLml0ZW0tY29udGFpbmVyW2RhdGEtc2NvcGVkY3NzLWU0MGYwNDMzOTQtNjMxZWYzODNhMV0sCiAgLnNvcnQ6aG92ZXIgfiAuaXRlbS1jb250YWluZXJbZGF0YS1zY29wZWRjc3MtZTQwZjA0MzM5NC02MzFlZjM4M2ExXSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1hY2NlbnQsIHZhcigtLWJveGVsLTIwMCkpOwogICAgY29sb3I6IHZhcigtLWFjY2VudC1mb3JlZ3JvdW5kKTsKICB9CiAgLnNvcnQ6YWN0aXZlIH4gLml0ZW0tY29udGFpbmVyW2RhdGEtc2NvcGVkY3NzLWU0MGYwNDMzOTQtNjMxZWYzODNhMV0gewogICAgYm94LXNoYWRvdzogdmFyKC0tYm94ZWwtYm94LXNoYWRvdy1ob3Zlcik7CiAgfQogIC5hZGQtbmV3W2RhdGEtc2NvcGVkY3NzLWU0MGYwNDMzOTQtNjMxZWYzODNhMV0gewogICAgZ2FwOiB2YXIoLS1ib3hlbC1zcC0zeHMpOwogICAgd2lkdGg6IGZpdC1jb250ZW50OwogICAgbWFyZ2luLWxlZnQ6IGNhbGModmFyKC0tYm94ZWwtaWNvbi1tZWQpICsgdmFyKC0tYm94ZWwtc3AteHMpKTsKICAgIC8qIGZvciBhbGlnbm1lbnQgZHVlIHRvIHNvcnQgaGFuZGxlICovCiAgfQogIC5hZGQtbmV3Lm5vLWl0ZW1zW2RhdGEtc2NvcGVkY3NzLWU0MGYwNDMzOTQtNjMxZWYzODNhMV0gewogICAgbWFyZ2luLWxlZnQ6IDA7CiAgfQogIC5zb3J0W2RhdGEtc2NvcGVkY3NzLWU0MGYwNDMzOTQtNjMxZWYzODNhMV0gewogICAgY3Vyc29yOiBtb3ZlOwogICAgY3Vyc29yOiBncmFiOwogICAgLS1ib3hlbC1pY29uLWJ1dHRvbi13aWR0aDogdmFyKC0tYm94ZWwtaWNvbi1tZWQpOwogICAgLS1ib3hlbC1pY29uLWJ1dHRvbi1oZWlnaHQ6IHZhcigtLWJveGVsLWljb24tbWVkKTsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgYm9yZGVyLXJhZGl1czogNXB4OwogIH0KICAuc29ydFtkYXRhLXNjb3BlZGNzcy1lNDBmMDQzMzk0LTYzMWVmMzgzYTFdOmFjdGl2ZSB7CiAgICBjdXJzb3I6IGdyYWJiaW5nOwogIH0KICBbZGF0YS1zY29wZWRjc3MtZTQwZjA0MzM5NC02MzFlZjM4M2ExXSAuaXMtZHJhZ2dpbmcgewogICAgei1pbmRleDogOTk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkodmFyKC0tYm94ZWwtc3ApKTsKICB9Cg%3D%3D.glimmer-scoped.css", "./contains-many-component.gts.CiAgQGxheWVyIHsKICAgIC5jb250YWluc01hbnktZmllbGQuZWRpdC1mb3JtYXRbZGF0YS1zY29wZWRjc3MtZTQwZjA0MzM5NC00MTc3YmRiMGZhXSB7CiAgICAgIHBhZGRpbmc6IHZhcigtLWJveGVsLXNwLXNtKTsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbXV0ZWQsIHZhcigtLWJveGVsLTEwMCkpOwogICAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm94ZWwtYm9yZGVyLXJhZGl1cyk7CiAgICB9CiAgICAuY29udGFpbnNNYW55LWZpZWxkLmF0b20tZm9ybWF0W2RhdGEtc2NvcGVkY3NzLWU0MGYwNDMzOTQtNDE3N2JkYjBmYV0gewogICAgICBkaXNwbGF5OiBjb250ZW50czsKICAgIH0KICAgIC5jb250YWluc01hbnktZmllbGQuYXRvbS1mb3JtYXQgPiAuY29udGFpbnNNYW55LWl0ZW1bZGF0YS1zY29wZWRjc3MtZTQwZjA0MzM5NC00MTc3YmRiMGZhXSB7CiAgICAgIGRpc3BsYXk6IGlubGluZTsKICAgIH0KICAgIC5jb250YWluc01hbnktZmllbGQuZW1iZWRkZWQtZm9ybWF0W2RhdGEtc2NvcGVkY3NzLWU0MGYwNDMzOTQtNDE3N2JkYjBmYV0gewogICAgICBkaXNwbGF5OiBncmlkOwogICAgICBnYXA6IHZhcigtLWJveGVsLXNwKTsKICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDsKICAgIH0KICB9Cg%3D%3D.glimmer-scoped.css"],
506
+ "imports": [
507
+ "card-api",
508
+ "shared-state",
509
+ "field-component"
510
+ ]
511
+ };
512
+ (globalThis.__boxelBundledBaseIdentities ??= {})["contains-many-component"] = { "getContainsManyComponent": getContainsManyComponent };
513
+ //#endregion
514
+ //#region ../base/links-to-editor.gts
515
+ var LinksToEditor = class extends Component$1 {
516
+ static {
517
+ decorateFieldV2(this.prototype, "cardContext", [consume(CardContextName)]);
518
+ }
519
+ #cardContext = (initializeDeferredDecorator(this, "cardContext"), void 0);
520
+ static {
521
+ decorateFieldV2(this.prototype, "realmURL", [consume(RealmURLContextName)]);
522
+ }
523
+ #realmURL = (initializeDeferredDecorator(this, "realmURL"), void 0);
524
+ static {
525
+ setComponentTemplate(templateFactory({
526
+ "id": "jgFW3+Pd",
527
+ "block": "[[[8,[32,0],[[24,\"data-scopedcss-30022c41be-2dc1015f7e\",\"\"]],null,[[\"default\"],[[[[1,\"\\n \"],[11,0],[16,0,[29,[\"links-to-editor\\n \",[52,[30,1,[\"canWrite\"]],\"can-write\",\"read-only\"]]]],[16,\"data-test-links-to-editor\",[30,2,[\"name\"]]],[17,3],[24,\"data-scopedcss-30022c41be-2dc1015f7e\",\"\"],[12],[1,\"\\n\"],[41,[30,4],[[[41,[30,1,[\"canWrite\"]],[[[1,\" \"],[8,[32,1],[[24,0,\"remove\"],[24,\"aria-label\",\"Remove\"],[24,\"data-test-remove-card\",\"\"],[24,\"data-scopedcss-30022c41be-2dc1015f7e\",\"\"],[4,[32,3],[\"click\",[30,0,[\"remove\"]]],null]],[[\"@icon\",\"@width\",\"@height\"],[[32,2],\"20px\",\"20px\"]],null],[1,\"\\n\"]],[]],null],[1,\" \"],[8,[32,4],[[24,\"data-scopedcss-30022c41be-2dc1015f7e\",\"\"]],null,[[\"default\"],[[[[1,\"\\n \"],[8,[32,5],[[24,\"data-scopedcss-30022c41be-2dc1015f7e\",\"\"]],[[\"@brokenUrl\",\"@errorDoc\",\"@state\",\"@format\",\"@itemType\",\"@displayName\",\"@viewCard\"],[[30,4,[\"reference\"]],[30,4,[\"errorDoc\"]],[30,4,[\"kind\"]],\"embedded\",[28,[32,6],[[30,2]],null],[28,[32,7],[[30,2],[30,4,[\"reference\"]]],null],[30,5,[\"viewCard\"]]]],null],[1,\"\\n \"]],[5]]]]],[1,\"\\n\"]],[]],[[[41,[30,0,[\"isEmpty\"]],[[[41,[30,1,[\"canWrite\"]],[[[1,\" \"],[8,[32,8],[[24,0,\"add-new\"],[16,\"data-test-add-new\",[30,2,[\"name\"]]],[24,\"data-scopedcss-30022c41be-2dc1015f7e\",\"\"],[4,[32,3],[\"click\",[30,0,[\"add\"]]],null]],[[\"@kind\",\"@size\",\"@rectangular\"],[\"secondary\",\"tall\",true]],[[\"default\"],[[[[1,\"\\n Link\\n \"],[1,[30,2,[\"card\",\"displayName\"]]],[1,\"\\n \"]],[]]]]],[1,\"\\n\"]],[]],[[[1,\" - Empty -\\n\"]],[]]]],[]],[[[41,[30,1,[\"canWrite\"]],[[[1,\" \"],[8,[32,1],[[24,0,\"remove\"],[16,\"disabled\",[30,0,[\"isEmpty\"]]],[24,\"aria-label\",\"Remove\"],[24,\"data-test-remove-card\",\"\"],[24,\"data-scopedcss-30022c41be-2dc1015f7e\",\"\"],[4,[32,3],[\"click\",[30,0,[\"remove\"]]],null]],[[\"@icon\",\"@width\",\"@height\"],[[32,2],\"20px\",\"20px\"]],null],[1,\"\\n\"]],[]],null],[1,\" \"],[8,[32,9],[[24,\"data-scopedcss-30022c41be-2dc1015f7e\",\"\"]],[[\"@value\"],[[28,[32,10],null,[[\"cardDef\",\"fieldDef\"],[\"fitted\",\"embedded\"]]]]],[[\"default\"],[[[[1,\"\\n \"],[8,[30,0,[\"linkedCard\"]],[[24,\"data-scopedcss-30022c41be-2dc1015f7e\",\"\"]],null,null],[1,\"\\n \"]],[]]]]],[1,\"\\n \"]],[]]]],[]]],[1,\" \"],[13],[1,\"\\n\"]],[1]]]]],[1,\"\\n\"]],[\"permissions\",\"@field\",\"&attrs\",\"@brokenLink\",\"crud\"],[\"if\"]]",
528
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/links-to-editor.gts",
529
+ "scope": () => [
530
+ PermissionsConsumer,
531
+ IconButton,
532
+ IconComponent$19,
533
+ on,
534
+ CardCrudFunctionsConsumer,
535
+ BrokenLinkTemplate,
536
+ brokenLinkItemType,
537
+ brokenLinkDisplayName,
538
+ ButtonComponent,
539
+ DefaultFormatsProvider,
540
+ hash
541
+ ],
542
+ "isStrictMode": true
543
+ }), this);
544
+ }
545
+ add = () => {
546
+ this.chooseCard.perform();
547
+ };
548
+ remove = () => {
549
+ this.args.model.value = null;
550
+ };
551
+ get isEmpty() {
552
+ return this.args.model.value == null;
553
+ }
554
+ get linkedCard() {
555
+ if (this.args.model.value == null) throw new Error(`can't make field component with box value of null for field ${this.args.field.name}`);
556
+ let card = Reflect.getPrototypeOf(this.args.model.value).constructor;
557
+ return getBoxComponent(card, this.args.model, this.args.field);
558
+ }
559
+ chooseCard = buildTask(() => ({
560
+ context: this,
561
+ generator: function* () {
562
+ if (isFileDef(this.args.field.card)) {
563
+ let fileType = identifyCard(this.args.field.card);
564
+ let fileTypeName = this.args.field.card.displayName;
565
+ let file = yield chooseFile(fileType ? {
566
+ fileType,
567
+ fileTypeName
568
+ } : void 0);
569
+ if (file) this.args.model.value = file;
570
+ return;
571
+ }
572
+ let type = identifyCard(this.args.field.card) ?? baseCardRef;
573
+ if (this.args.typeConstraint) type = yield getNarrowestType(this.args.typeConstraint, type, myLoader$2());
574
+ let consumingRealm = this.args.consumingRealm ?? this.realmURL;
575
+ let lockConsumingRealm = this.args.lockConsumingRealm === true && consumingRealm != null;
576
+ let cardId = yield chooseCard({ filter: { type } }, {
577
+ offerToCreate: {
578
+ ref: type,
579
+ relativeTo: void 0,
580
+ realmURL: consumingRealm
581
+ },
582
+ createNewCard: this.args.createCard,
583
+ consumingRealm,
584
+ lockConsumingRealm
585
+ });
586
+ if (cardId) {
587
+ let card = yield this.cardContext.store.get(cardId);
588
+ if (isCardInstance$1(card)) this.args.model.value = card;
589
+ }
590
+ }
591
+ }), null, "chooseCard", "restartable");
592
+ };
593
+ function myLoader$2() {
594
+ return loaderForModule(import.meta);
595
+ }
596
+ __name(myLoader$2, "myLoader");
597
+ (globalThis.__boxelBundledBaseScopedCSS ??= {})["links-to-editor"] = {
598
+ "css": ["./links-to-editor.gts.CiAgLmxpbmtzLXRvLWVkaXRvcltkYXRhLXNjb3BlZGNzcy0zMDAyMmM0MWJlLTJkYzEwMTVmN2VdIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgfQogIC5saW5rcy10by1lZGl0b3IuY2FuLXdyaXRlW2RhdGEtc2NvcGVkY3NzLTMwMDIyYzQxYmUtMmRjMTAxNWY3ZV0gewogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgYXV0bzsKICAgIGdhcDogdmFyKC0tYm94ZWwtc3AteHMpOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICB9CiAgLyogVGhlIGxpbmtlZCBjYXJkIChvciB0aGUgYnJva2VuLWxpbmsgcGxhY2Vob2xkZXIgc3RhbmRpbmcgaW4gZm9yIGl0KQogICAgIG9jY3VwaWVzIHRoZSBsZWFkaW5nIDFmciBjb2x1bW47IHRoZSByZW1vdmUgYnV0dG9uLCB0aG91Z2ggZmlyc3QgaW4gdGhlCiAgICAgRE9NLCBpcyByZW9yZGVyZWQgaW50byB0aGUgdHJhaWxpbmcgYGF1dG9gIGNvbHVtbi4gKi8KICAubGlua3MtdG8tZWRpdG9yW2RhdGEtc2NvcGVkY3NzLTMwMDIyYzQxYmUtMmRjMTAxNWY3ZV0gPiAgLmJveGVsLWNhcmQtY29udGFpbmVyLAogIC5saW5rcy10by1lZGl0b3JbZGF0YS1zY29wZWRjc3MtMzAwMjJjNDFiZS0yZGMxMDE1ZjdlXSA%2BICAuYnJva2VuLWxpbmstdGVtcGxhdGUgewogICAgb3JkZXI6IC0xOwogIH0KICAubGlua3MtdG8tZWRpdG9yIC5maWVsZC1jb21wb25lbnQtY2FyZFtkYXRhLXNjb3BlZGNzcy0zMDAyMmM0MWJlLTJkYzEwMTVmN2VdIHsKICAgIG1pbi1oZWlnaHQ6IDY1cHg7CiAgfQogIC5yZW1vdmVbZGF0YS1zY29wZWRjc3MtMzAwMjJjNDFiZS0yZGMxMDE1ZjdlXSB7CiAgICAtLWljb24tY29sb3I6IHZhcigtLWJhY2tncm91bmQsIHZhcigtLWJveGVsLWxpZ2h0KSk7CiAgICAtLWljb24tYm9yZGVyOiB2YXIoLS1mb3JlZ3JvdW5kLCB2YXIoLS1ib3hlbC1kYXJrKSk7CiAgICAtLWljb24tYmc6IHZhcigtLWZvcmVncm91bmQsIHZhcigtLWJveGVsLWRhcmspKTsKICAgIC0tYm94ZWwtaWNvbi1idXR0b24td2lkdGg6IHZhcigtLWJveGVsLWljb24tbWVkKTsKICAgIC0tYm94ZWwtaWNvbi1idXR0b24taGVpZ2h0OiB2YXIoLS1ib3hlbC1pY29uLW1lZCk7CiAgICBvdXRsaW5lOiAwOwogICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgfQogIC5yZW1vdmVbZGF0YS1zY29wZWRjc3MtMzAwMjJjNDFiZS0yZGMxMDE1ZjdlXTpmb2N1cywKICAucmVtb3ZlW2RhdGEtc2NvcGVkY3NzLTMwMDIyYzQxYmUtMmRjMTAxNWY3ZV06aG92ZXIgewogICAgLS1pY29uLWJnOiB2YXIoLS1wcmltYXJ5LCB2YXIoLS1ib3hlbC1oaWdobGlnaHQpKTsKICAgIC0taWNvbi1ib3JkZXI6IHZhcigtLXByaW1hcnksIHZhcigtLWJveGVsLWhpZ2hsaWdodCkpOwogIH0KICAucmVtb3ZlW2RhdGEtc2NvcGVkY3NzLTMwMDIyYzQxYmUtMmRjMTAxNWY3ZV06Zm9jdXMgKyAgLmJveGVsLWNhcmQtY29udGFpbmVyLmZpdHRlZC1mb3JtYXQsCiAgLnJlbW92ZVtkYXRhLXNjb3BlZGNzcy0zMDAyMmM0MWJlLTJkYzEwMTVmN2VdOmhvdmVyICsgIC5ib3hlbC1jYXJkLWNvbnRhaW5lci5maXR0ZWQtZm9ybWF0IHsKICAgIGJveC1zaGFkb3c6CiAgICAgIDAgMCAwIDFweCB2YXIoLS1ib3JkZXIsIHZhcigtLWJveGVsLTMwMCkpLAogICAgICB2YXIoLS1ib3hlbC1ib3gtc2hhZG93KTsKICB9CiAgLmFkZC1uZXdbZGF0YS1zY29wZWRjc3MtMzAwMjJjNDFiZS0yZGMxMDE1ZjdlXSB7CiAgICB3aWR0aDogZml0LWNvbnRlbnQ7CiAgfQo%3D.glimmer-scoped.css"],
599
+ "imports": ["field-component", "card-api"]
600
+ };
601
+ (globalThis.__boxelBundledBaseIdentities ??= {})["links-to-editor"] = { "LinksToEditor": LinksToEditor };
602
+ //#endregion
603
+ //#region ../base/links-to-many-component.gts
604
+ var LinksToManyEditor = class extends Component$1 {
605
+ static {
606
+ decorateFieldV2(this.prototype, "cardContext", [consume(CardContextName)]);
607
+ }
608
+ #cardContext = (initializeDeferredDecorator(this, "cardContext"), void 0);
609
+ static {
610
+ decorateFieldV2(this.prototype, "cardCrudFunctions", [consume(CardCrudFunctionsContextName)]);
611
+ }
612
+ #cardCrudFunctions = (initializeDeferredDecorator(this, "cardCrudFunctions"), void 0);
613
+ static {
614
+ decorateFieldV2(this.prototype, "realmURL", [consume(RealmURLContextName)]);
615
+ }
616
+ #realmURL = (initializeDeferredDecorator(this, "realmURL"), void 0);
617
+ static {
618
+ setComponentTemplate(templateFactory({
619
+ "id": "/GPB0BsG",
620
+ "block": "[[[10,0],[14,0,\"links-to-many-editor\"],[15,\"data-card-field\",[30,1,[\"name\"]]],[15,\"data-test-links-to-many\",[30,1,[\"name\"]]],[12],[1,\"\\n\"],[41,[28,[32,0],[[30,2],\"atom\"],null],[[[1,\" \"],[8,[32,1],[[17,3]],[[\"@model\",\"@arrayField\",\"@field\",\"@cardTypeFor\",\"@add\",\"@remove\"],[[30,4],[30,5],[30,1],[30,6],[30,0,[\"add\"]],[30,0,[\"remove\"]]]],null],[1,\"\\n\"]],[]],[[[1,\" \"],[8,[32,2],[[17,3]],[[\"@model\",\"@arrayField\",\"@field\",\"@cardTypeFor\",\"@add\",\"@remove\"],[[30,4],[30,5],[30,1],[30,6],[30,0,[\"add\"]],[30,0,[\"remove\"]]]],null],[1,\"\\n\"]],[]]],[13]],[\"@field\",\"@childFormat\",\"&attrs\",\"@model\",\"@arrayField\",\"@cardTypeFor\"],[\"if\"]]",
621
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/links-to-many-component.gts",
622
+ "scope": () => [
623
+ eq,
624
+ LinksToManyCompactEditor,
625
+ LinksToManyStandardEditor
626
+ ],
627
+ "isStrictMode": true
628
+ }), this);
629
+ }
630
+ add = () => {
631
+ this.chooseCard.perform();
632
+ };
633
+ async narrowestFileDef() {
634
+ let fieldDef = this.args.field.card;
635
+ if (!this.args.typeConstraint) return fieldDef;
636
+ try {
637
+ let constrained = await loadCardDef(this.args.typeConstraint, { loader: myLoader$1() });
638
+ if (isFileDef(constrained) && (constrained === fieldDef || constrained.prototype instanceof fieldDef)) return constrained;
639
+ } catch {}
640
+ return fieldDef;
641
+ }
642
+ chooseCard = buildTask(() => ({
643
+ context: this,
644
+ generator: function* () {
645
+ if (isFileDef(this.args.field.card)) {
646
+ let fileDef = yield this.narrowestFileDef();
647
+ let fileType = identifyCard(fileDef);
648
+ let fileTypeName = fileDef.displayName;
649
+ let file = yield chooseFile(fileType ? {
650
+ fileType,
651
+ fileTypeName
652
+ } : void 0);
653
+ if (file) {
654
+ let existing = rawArrayValues(this.args.model.value[this.args.field.name] ?? []);
655
+ this.args.model.value[this.args.field.name] = [...existing, file];
656
+ }
657
+ return;
658
+ }
659
+ let selectedCardsQuery = this.args.model.value[this.args.field.name]?.map((card) => card ? { not: { eq: { id: card.id } } } : void 0).filter(Boolean) ?? [];
660
+ let type = identifyCard(this.args.field.card) ?? baseCardRef;
661
+ if (this.args.typeConstraint) type = yield getNarrowestType(this.args.typeConstraint, type, myLoader$1());
662
+ let cardId = yield chooseCard({ filter: { every: [{ type }, ...selectedCardsQuery] } }, {
663
+ offerToCreate: {
664
+ ref: type,
665
+ relativeTo: void 0,
666
+ realmURL: this.realmURL
667
+ },
668
+ multiSelect: true,
669
+ createNewCard: this.cardCrudFunctions?.createCard,
670
+ consumingRealm: this.realmURL
671
+ });
672
+ if (cardId) {
673
+ let newCards = (yield Promise.all(cardId.map((id) => this.cardContext.store.get(id)))).filter((card) => isCardInstance$1(card));
674
+ if (newCards.length > 0) {
675
+ let existing = rawArrayValues(this.args.model.value[this.args.field.name] ?? []);
676
+ this.args.model.value[this.args.field.name] = [...existing, ...newCards];
677
+ }
678
+ }
679
+ }
680
+ }), null, "chooseCard", "restartable");
681
+ remove = (index) => {
682
+ let raw = rawArrayValues(this.args.model.value[this.args.field.name] ?? []);
683
+ this.args.model.value[this.args.field.name] = raw.filter((_c, i) => i !== index);
684
+ };
685
+ };
686
+ var LinksToManyStandardEditor = class extends Component$1 {
687
+ static {
688
+ decorateFieldV2(this.prototype, "cardContext", [consume(CardContextName)]);
689
+ }
690
+ #cardContext = (initializeDeferredDecorator(this, "cardContext"), void 0);
691
+ sortableGroupId = v4();
692
+ setItems(items) {
693
+ this.args.arrayField.set(items);
694
+ }
695
+ static {
696
+ decorateMethodV2(this.prototype, "setItems", [action]);
697
+ }
698
+ get decoratedChildren() {
699
+ let broken = brokenSlotsFor(this.args.model, this.args.field.name);
700
+ let raw = rawArrayValues(this.args.arrayField.value ?? []);
701
+ return this.args.arrayField.children.map((child, index) => ({
702
+ box: child,
703
+ index,
704
+ key: index,
705
+ broken: broken[index],
706
+ raw: raw[index]
707
+ }));
708
+ }
709
+ get noItems() {
710
+ return this.args.arrayField.children.length === 0;
711
+ }
712
+ static {
713
+ setComponentTemplate(templateFactory({
714
+ "id": "uXBxKw3V",
715
+ "block": "[[[8,[32,0],[[24,\"data-scopedcss-9eaf572fb4-f950436e86\",\"\"]],null,[[\"default\"],[[[[1,\"\\n\"],[41,[30,0,[\"decoratedChildren\",\"length\"]],[[[1,\" \"],[11,\"ul\"],[24,0,\"list\"],[16,\"data-test-list\",[30,2,[\"name\"]]],[17,3],[24,\"data-scopedcss-9eaf572fb4-f950436e86\",\"\"],[4,[32,1],null,[[\"groupName\",\"onChange\"],[[30,0,[\"sortableGroupId\"]],[30,0,[\"setItems\"]]]]],[12],[1,\"\\n\"],[42,[28,[31,2],[[28,[31,2],[[30,0,[\"decoratedChildren\"]]],null]],null],\"key\",[[[1,\" \"],[11,\"li\"],[16,0,[29,[\"editor \",[52,[30,1,[\"canWrite\"]],\"can-write\",\"read-only\"]]]],[16,\"data-test-item\",[30,4,[\"index\"]]],[24,\"data-scopedcss-9eaf572fb4-f950436e86\",\"\"],[4,[32,2],null,[[\"groupName\",\"model\"],[[30,0,[\"sortableGroupId\"]],[30,4,[\"raw\"]]]]],[12],[1,\"\\n\"],[41,[30,1,[\"canWrite\"]],[[[1,\" \"],[8,[32,3],[[24,0,\"sort\"],[24,\"aria-label\",\"Sort\"],[24,\"data-test-sort-card\",\"\"],[16,\"data-test-sort\",[30,4,[\"index\"]]],[24,\"data-scopedcss-9eaf572fb4-f950436e86\",\"\"],[4,[32,5],null,null]],[[\"@icon\",\"@width\",\"@height\"],[[32,4],\"18px\",\"18px\"]],null],[1,\"\\n \"],[8,[32,3],[[24,0,\"remove\"],[24,\"aria-label\",\"Remove\"],[24,\"data-test-remove-card\",\"\"],[16,\"data-test-remove\",[30,4,[\"index\"]]],[24,\"data-scopedcss-9eaf572fb4-f950436e86\",\"\"],[4,[32,7],[\"click\",[28,[32,8],[[30,5],[30,4,[\"index\"]]],null]],null]],[[\"@icon\",\"@width\",\"@height\"],[[32,6],\"20px\",\"20px\"]],null],[1,\"\\n\"]],[]],null],[41,[30,4,[\"broken\"]],[[[1,\" \"],[8,[32,9],[[24,\"data-scopedcss-9eaf572fb4-f950436e86\",\"\"]],null,[[\"default\"],[[[[1,\"\\n \"],[8,[32,10],[[16,\"data-test-plural-view-item\",[30,4,[\"index\"]]],[24,\"data-scopedcss-9eaf572fb4-f950436e86\",\"\"]],[[\"@brokenUrl\",\"@errorDoc\",\"@state\",\"@format\",\"@itemType\",\"@displayName\",\"@viewCard\"],[[30,4,[\"broken\",\"reference\"]],[30,4,[\"broken\",\"errorDoc\"]],[30,4,[\"broken\",\"kind\"]],\"fitted\",[28,[32,11],[[30,2]],null],[28,[32,12],[[30,2],[30,4,[\"broken\",\"reference\"]]],null],[30,6,[\"viewCard\"]]]],null],[1,\"\\n \"]],[6]]]]],[1,\"\\n\"]],[]],[[[44,[[28,[32,13],[[28,[30,7],[[30,2],[30,4,[\"box\"]]],null],[30,4,[\"box\"]],[30,2]],null]],[[[1,\" \"],[8,[30,8],[[24,\"data-scopedcss-9eaf572fb4-f950436e86\",\"\"]],[[\"@format\"],[\"fitted\"]],null],[1,\"\\n\"]],[8]]]],[]]],[1,\" \"],[13],[1,\"\\n\"]],[4]],null],[1,\" \"],[13],[1,\"\\n\"]],[]],null],[1,\"\\n\"],[41,[30,1,[\"canWrite\"]],[[[1,\" \"],[8,[32,14],[[16,0,[28,[32,15],[\"add-new\"],[[\"no-items\"],[[30,0,[\"noItems\"]]]]]],[16,\"data-test-add-new\",[30,2,[\"name\"]]],[24,\"data-scopedcss-9eaf572fb4-f950436e86\",\"\"],[4,[32,7],[\"click\",[30,9]],null]],[[\"@kind\",\"@size\",\"@rectangular\"],[\"secondary\",\"tall\",true]],[[\"default\"],[[[[1,\"\\n \"],[8,[32,16],[[24,0,\"icon\"],[24,\"width\",\"12px\"],[24,\"height\",\"12px\"],[24,\"role\",\"presentation\"],[24,\"data-scopedcss-9eaf572fb4-f950436e86\",\"\"]],null,null],[1,\"\\n Add\\n \"],[1,[28,[32,17],[[30,2,[\"card\",\"displayName\"]]],null]],[1,\"\\n \"]],[]]]]],[1,\"\\n\"]],[]],null]],[1]]]]],[1,\"\\n\"]],[\"permissions\",\"@field\",\"&attrs\",\"entry\",\"@remove\",\"crud\",\"@cardTypeFor\",\"Item\",\"@add\"],[\"if\",\"each\",\"-track-array\",\"let\"]]",
716
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/links-to-many-component.gts",
717
+ "scope": () => [
718
+ PermissionsConsumer,
719
+ SortableGroupModifier,
720
+ SortableItemModifier,
721
+ IconButton,
722
+ IconComponent$16,
723
+ SortableHandleModifier,
724
+ IconComponent$19,
725
+ on,
726
+ fn,
727
+ CardCrudFunctionsConsumer,
728
+ BrokenLinkTemplate,
729
+ brokenLinkItemType,
730
+ brokenLinkDisplayName,
731
+ getBoxComponent,
732
+ ButtonComponent,
733
+ cn_default,
734
+ IconComponent$18,
735
+ getPlural
736
+ ],
737
+ "isStrictMode": true
738
+ }), this);
739
+ }
740
+ };
741
+ var LinksToManyCompactEditor = class extends Component$1 {
742
+ static {
743
+ decorateFieldV2(this.prototype, "cardContext", [consume(CardContextName)]);
744
+ }
745
+ #cardContext = (initializeDeferredDecorator(this, "cardContext"), void 0);
746
+ get brokenSlots() {
747
+ return brokenSlotsFor(this.args.model, this.args.field.name);
748
+ }
749
+ static {
750
+ setComponentTemplate(templateFactory({
751
+ "id": "xZi4M1Ch",
752
+ "block": "[[[11,0],[24,0,\"boxel-pills\"],[24,\"data-test-pills\",\"\"],[17,1],[24,\"data-scopedcss-9eaf572fb4-b5a2cfb473\",\"\"],[12],[1,\"\\n\"],[44,[[30,0,[\"brokenSlots\"]]],[[[42,[28,[31,2],[[28,[31,2],[[30,3,[\"children\"]]],null]],null],null,[[[44,[[28,[32,0],[[30,2],[30,5]],null]],[[[41,[30,6],[[[1,\" \"],[8,[32,1],[[24,0,\"item-pill\"],[16,\"data-test-pill-item\",[30,5]],[24,\"data-scopedcss-9eaf572fb4-b5a2cfb473\",\"\"]],null,[[\"default\"],[[[[1,\"\\n \"],[8,[32,2],[[24,\"data-scopedcss-9eaf572fb4-b5a2cfb473\",\"\"]],null,[[\"default\"],[[[[1,\"\\n \"],[8,[32,3],[[16,\"data-test-plural-view-item\",[30,5]],[24,\"data-scopedcss-9eaf572fb4-b5a2cfb473\",\"\"]],[[\"@brokenUrl\",\"@errorDoc\",\"@state\",\"@format\",\"@itemType\",\"@displayName\",\"@viewCard\"],[[30,6,[\"reference\"]],[30,6,[\"errorDoc\"]],[30,6,[\"kind\"]],\"atom\",[28,[32,4],[[30,8]],null],[28,[32,5],[[30,8],[30,6,[\"reference\"]]],null],[30,7,[\"viewCard\"]]]],null],[1,\"\\n \"]],[7]]]]],[1,\"\\n \"],[8,[32,6],[[24,0,\"remove-item-button\"],[24,\"aria-label\",\"Remove\"],[24,\"data-test-remove-card\",\"\"],[16,\"data-test-remove\",[30,5]],[24,\"data-scopedcss-9eaf572fb4-b5a2cfb473\",\"\"],[4,[32,8],[\"click\",[28,[32,9],[[30,9],[30,5]],null]],null]],[[\"@icon\",\"@width\",\"@height\"],[[32,7],\"10px\",\"10px\"]],null],[1,\"\\n \"]],[]]]]],[1,\"\\n\"]],[]],[[[44,[[28,[32,10],[[28,[30,10],[[30,8],[30,4]],null],[30,4],[30,8]],null]],[[[1,\" \"],[8,[32,1],[[24,0,\"item-pill\"],[16,\"data-test-pill-item\",[30,5]],[24,\"data-scopedcss-9eaf572fb4-b5a2cfb473\",\"\"]],null,[[\"default\"],[[[[1,\"\\n \"],[8,[30,11],[[24,\"data-scopedcss-9eaf572fb4-b5a2cfb473\",\"\"]],[[\"@format\",\"@displayContainer\"],[\"atom\",false]],null],[1,\"\\n \"],[8,[32,6],[[24,0,\"remove-item-button\"],[24,\"aria-label\",\"Remove\"],[24,\"data-test-remove-card\",\"\"],[16,\"data-test-remove\",[30,5]],[24,\"data-scopedcss-9eaf572fb4-b5a2cfb473\",\"\"],[4,[32,8],[\"click\",[28,[32,9],[[30,9],[30,5]],null]],null]],[[\"@icon\",\"@width\",\"@height\"],[[32,7],\"10px\",\"10px\"]],null],[1,\"\\n \"]],[]]]]],[1,\"\\n\"]],[11]]]],[]]]],[6]]]],[4,5]],null]],[2]]],[1,\" \"],[8,[32,11],[[24,0,\"compact-add-new\"],[16,\"data-test-add-new\",[30,8,[\"name\"]]],[24,\"data-scopedcss-9eaf572fb4-b5a2cfb473\",\"\"],[4,[32,8],[\"click\",[30,12]],null]],[[\"@size\",\"@kind\",\"@rectangular\"],[\"small\",\"primary\",true]],[[\"default\"],[[[[1,\"\\n \"],[8,[32,12],[[24,0,\"icon\"],[24,\"width\",\"12px\"],[24,\"height\",\"12px\"],[24,\"role\",\"presentation\"],[24,\"data-scopedcss-9eaf572fb4-b5a2cfb473\",\"\"]],null,null],[1,\"\\n Add\\n \"],[1,[30,8,[\"card\",\"displayName\"]]],[1,\"\\n \"]],[]]]]],[1,\"\\n\"],[13],[1,\"\\n\"]],[\"&attrs\",\"brokenSlots\",\"@arrayField\",\"boxedElement\",\"i\",\"broken\",\"crud\",\"@field\",\"@remove\",\"@cardTypeFor\",\"Item\",\"@add\"],[\"let\",\"each\",\"-track-array\",\"if\"]]",
753
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/links-to-many-component.gts",
754
+ "scope": () => [
755
+ get,
756
+ Pill,
757
+ CardCrudFunctionsConsumer,
758
+ BrokenLinkTemplate,
759
+ brokenLinkItemType,
760
+ brokenLinkDisplayName,
761
+ IconButton,
762
+ IconComponent$20,
763
+ on,
764
+ fn,
765
+ getBoxComponent,
766
+ ButtonComponent,
767
+ IconComponent$18
768
+ ],
769
+ "isStrictMode": true
770
+ }), this);
771
+ }
772
+ };
773
+ function getEditorChildFormat(format, defaultFormat, model) {
774
+ if ((format ?? defaultFormat) === "edit" && "isFieldDef" in model.value.constructor && model.value.constructor.isFieldDef) return "atom";
775
+ return "fitted";
776
+ }
777
+ function getPluralChildFormat(effectiveFormat, model, isFileDef) {
778
+ if (effectiveFormat === "edit" && ("isCardDef" in model.value.constructor && model.value.constructor.isCardDef || isFileDef)) return "fitted";
779
+ return effectiveFormat;
780
+ }
781
+ function shouldRenderEditor(format, defaultFormat, isComputed) {
782
+ return (format ?? defaultFormat) === "edit" && !isComputed;
783
+ }
784
+ function brokenSlotsFor(model, fieldName) {
785
+ let owner = model.value;
786
+ if (owner == null) return [];
787
+ let { membership } = getRelationshipMembershipState(owner, fieldName);
788
+ return (membership ?? []).map((rel) => rel.kind === "error" || rel.kind === "not-found" ? rel : void 0);
789
+ }
790
+ var componentCache = initSharedState("linksToManyComponentCache", () => /* @__PURE__ */ new WeakMap());
791
+ function getLinksToManyComponent({ model, arrayField, field, cardTypeFor }) {
792
+ let stable = componentCache.get(arrayField);
793
+ if (stable) return stable.component;
794
+ let getComponents = () => arrayField.children.map((child) => getBoxComponent(cardTypeFor(field, child), child, field));
795
+ let getBrokenSlots = () => brokenSlotsFor(model, field.name);
796
+ let isComputed = !!field.computeVia || !!field.queryDefinition;
797
+ let isFileDefField = isFileDef(field.card);
798
+ let boundQueryResultInPrerender = () => !!field.queryDefinition && typeof globalThis !== "undefined" && Boolean(globalThis.__boxelRenderContext) && Boolean(globalThis.__boxelJobId);
799
+ let linksToManyComponent = class LinksToManyComponent extends Component$1 {
800
+ static {
801
+ setComponentTemplate(templateFactory({
802
+ "id": "LXLe6mnn",
803
+ "block": "[[[8,[32,0],[[24,\"data-scopedcss-9eaf572fb4-6a074ef427\",\"\"]],null,[[\"default\"],[[[[1,\"\\n\"],[41,[28,[32,1],[[30,2],[30,1,[\"cardDef\"]],[32,2]],null],[[[1,\" \"],[8,[32,3],[[17,3],[24,\"data-scopedcss-9eaf572fb4-6a074ef427\",\"\"]],[[\"@model\",\"@arrayField\",\"@field\",\"@cardTypeFor\",\"@childFormat\",\"@typeConstraint\"],[[32,4],[32,5],[32,6],[32,7],[28,[32,8],[[30,2],[30,1,[\"cardDef\"]],[32,4]],null],[30,4]]],null],[1,\"\\n\"]],[]],[[[44,[[28,[32,9],[[30,2],[30,1,[\"cardDef\"]]],null],[52,[28,[32,10],[[30,5],false],null],false,true]],[[[1,\" \"],[11,0],[16,0,[29,[\"plural-field linksToMany-field\\n \",[30,6],\"-effectiveFormat\\n \",[52,[51,[32,5,[\"children\",\"length\"]]],\"empty\"],\"\\n display-container-\",[30,7]]]],[16,\"data-card-field\",[32,6,[\"name\"]]],[16,\"data-test-plural-view-field\",[32,6,[\"name\"]]],[16,\"data-test-plural-view\",[32,6,[\"fieldType\"]]],[16,\"data-test-plural-view-format\",[30,6]],[17,3],[24,\"data-scopedcss-9eaf572fb4-6a074ef427\",\"\"],[12],[1,\"\\n\"],[44,[[28,[32,11],null,null]],[[[42,[28,[31,4],[[28,[31,4],[[28,[32,12],null,null]],null]],null],null,[[[1,\" \"],[10,0],[14,0,\"linksToMany-itemContainer\"],[14,\"data-scopedcss-9eaf572fb4-6a074ef427\",\"\"],[12],[1,\"\\n\"],[44,[[28,[32,13],[[30,8],[30,10]],null]],[[[41,[30,11],[[[1,\" \"],[8,[32,14],[[24,\"data-scopedcss-9eaf572fb4-6a074ef427\",\"\"]],null,[[\"default\"],[[[[1,\"\\n \"],[8,[32,15],[[16,\"data-test-plural-view-item\",[30,10]],[24,\"data-scopedcss-9eaf572fb4-6a074ef427\",\"\"]],[[\"@brokenUrl\",\"@errorDoc\",\"@state\",\"@format\",\"@itemType\",\"@displayName\",\"@viewCard\"],[[30,11,[\"reference\"]],[30,11,[\"errorDoc\"]],[30,11,[\"kind\"]],[28,[32,16],[[30,6],[30,6]],null],[28,[32,17],[[32,6]],null],[28,[32,18],[[32,6],[30,11,[\"reference\"]]],null],[30,12,[\"viewCard\"]]]],null],[1,\"\\n \"]],[12]]]]],[1,\"\\n\"]],[]],[[[41,[28,[32,19],null,null],[[[1,\" \"],[8,[30,9],[[24,0,\"linksToMany-item\"],[16,\"data-test-plural-view-item\",[30,10]],[24,\"data-test-prerender-query-atom\",\"\"],[24,\"data-scopedcss-9eaf572fb4-6a074ef427\",\"\"]],[[\"@format\",\"@displayContainer\"],[\"atom\",false]],null],[1,\"\\n\"]],[]],[[[1,\" \"],[8,[30,9],[[24,0,\"linksToMany-item\"],[16,\"data-test-plural-view-item\",[30,10]],[24,\"data-scopedcss-9eaf572fb4-6a074ef427\",\"\"]],[[\"@format\",\"@displayContainer\"],[[28,[32,20],[[30,6],[32,4],[32,21]],null],[30,5]]],null],[1,\"\\n \"]],[]]]],[]]]],[11]]],[1,\" \"],[13],[1,\"\\n\"]],[9,10]],null]],[8]]],[1,\" \"],[13],[1,\"\\n\"]],[6,7]]]],[]]]],[1]]]]],[1,\"\\n\"]],[\"defaultFormats\",\"@format\",\"&attrs\",\"@typeConstraint\",\"@displayContainer\",\"effectiveFormat\",\"displayContainer\",\"brokenSlots\",\"Item\",\"i\",\"broken\",\"crud\"],[\"if\",\"let\",\"unless\",\"each\",\"-track-array\"]]",
804
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/links-to-many-component.gts",
805
+ "scope": () => [
806
+ DefaultFormatsConsumer,
807
+ shouldRenderEditor,
808
+ isComputed,
809
+ LinksToManyEditor,
810
+ model,
811
+ arrayField,
812
+ field,
813
+ cardTypeFor,
814
+ getEditorChildFormat,
815
+ coalesce,
816
+ eq,
817
+ getBrokenSlots,
818
+ getComponents,
819
+ get,
820
+ CardCrudFunctionsConsumer,
821
+ BrokenLinkTemplate,
822
+ brokenLinkFormat,
823
+ brokenLinkItemType,
824
+ brokenLinkDisplayName,
825
+ boundQueryResultInPrerender,
826
+ getPluralChildFormat,
827
+ isFileDefField
828
+ ],
829
+ "isStrictMode": true
830
+ }), this);
831
+ }
832
+ };
833
+ stable = { component: new Proxy(linksToManyComponent, {
834
+ get(target, property, received) {
835
+ if (property === Symbol.iterator) return () => getComponents()[Symbol.iterator]();
836
+ if (property === "length") return arrayField.children.length;
837
+ if (typeof property === "string" && /^\d+$/.test(property)) {
838
+ let child = arrayField.children[parseInt(property)];
839
+ if (!child) return;
840
+ return getBoxComponent(cardTypeFor(field, child), child, field);
841
+ }
842
+ return Reflect.get(target, property, received);
843
+ },
844
+ getPrototypeOf() {
845
+ return linksToManyComponent;
846
+ }
847
+ }) };
848
+ componentCache.set(arrayField, stable);
849
+ return stable.component;
850
+ }
851
+ function myLoader$1() {
852
+ return loaderForModule(import.meta);
853
+ }
854
+ __name(myLoader$1, "myLoader");
855
+ (globalThis.__boxelBundledBaseScopedCSS ??= {})["links-to-many-component"] = {
856
+ "css": [
857
+ "./links-to-many-component.gts.CiAgLmxpc3RbZGF0YS1zY29wZWRjc3MtOWVhZjU3MmZiNC1mOTUwNDM2ZTg2XSB7CiAgICBsaXN0LXN0eWxlOiBub25lOwogICAgcGFkZGluZzogMDsKICAgIG1hcmdpbjogMCAwIHZhcigtLWJveGVsLXNwKTsKICB9CiAgLmxpc3QgPiBsaSArIGxpW2RhdGEtc2NvcGVkY3NzLTllYWY1NzJmYjQtZjk1MDQzNmU4Nl0gewogICAgbWFyZ2luLXRvcDogdmFyKC0tYm94ZWwtc3ApOwogIH0KICAuZWRpdG9yW2RhdGEtc2NvcGVkY3NzLTllYWY1NzJmYjQtZjk1MDQzNmU4Nl0gewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogZ3JpZDsKICAgIG1pbi1oZWlnaHQ6IDY1cHg7CiAgfQogIC5lZGl0b3IucmVhZC1vbmx5W2RhdGEtc2NvcGVkY3NzLTllYWY1NzJmYjQtZjk1MDQzNmU4Nl0gewogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CiAgfQogIC5lZGl0b3IuY2FuLXdyaXRlW2RhdGEtc2NvcGVkY3NzLTllYWY1NzJmYjQtZjk1MDQzNmU4Nl0gewogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmciBhdXRvOwogICAgZ2FwOiB2YXIoLS1ib3hlbC1zcC14cyk7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogIH0KICAucmVtb3ZlW2RhdGEtc2NvcGVkY3NzLTllYWY1NzJmYjQtZjk1MDQzNmU4Nl0gewogICAgLS1pY29uLWNvbG9yOiB2YXIoLS1iYWNrZ3JvdW5kLCB2YXIoLS1ib3hlbC1saWdodCkpOwogICAgLS1pY29uLWJvcmRlcjogdmFyKC0tZm9yZWdyb3VuZCwgdmFyKC0tYm94ZWwtZGFyaykpOwogICAgLS1pY29uLWJnOiB2YXIoLS1mb3JlZ3JvdW5kLCB2YXIoLS1ib3hlbC1kYXJrKSk7CiAgICAtLWJveGVsLWljb24tYnV0dG9uLXdpZHRoOiB2YXIoLS1ib3hlbC1pY29uLW1lZCk7CiAgICAtLWJveGVsLWljb24tYnV0dG9uLWhlaWdodDogdmFyKC0tYm94ZWwtaWNvbi1tZWQpOwogICAgb3V0bGluZTogMDsKICAgIG9yZGVyOiAxOwogICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgfQogIC5yZW1vdmVbZGF0YS1zY29wZWRjc3MtOWVhZjU3MmZiNC1mOTUwNDM2ZTg2XTpmb2N1cywKICAucmVtb3ZlW2RhdGEtc2NvcGVkY3NzLTllYWY1NzJmYjQtZjk1MDQzNmU4Nl06aG92ZXIgewogICAgLS1pY29uLWJnOiB2YXIoLS1wcmltYXJ5LCB2YXIoLS1ib3hlbC1oaWdobGlnaHQpKTsKICAgIC0taWNvbi1ib3JkZXI6IHZhcigtLXByaW1hcnksIHZhcigtLWJveGVsLWhpZ2hsaWdodCkpOwogIH0KICAucmVtb3ZlW2RhdGEtc2NvcGVkY3NzLTllYWY1NzJmYjQtZjk1MDQzNmU4Nl06Zm9jdXMgKyAgLmJveGVsLWNhcmQtY29udGFpbmVyLAogIC5yZW1vdmVbZGF0YS1zY29wZWRjc3MtOWVhZjU3MmZiNC1mOTUwNDM2ZTg2XTpob3ZlciArICAuYm94ZWwtY2FyZC1jb250YWluZXIsCiAgLnNvcnRbZGF0YS1zY29wZWRjc3MtOWVhZjU3MmZiNC1mOTUwNDM2ZTg2XTpmb2N1cyB%2BICAuYm94ZWwtY2FyZC1jb250YWluZXIsCiAgLnNvcnRbZGF0YS1zY29wZWRjc3MtOWVhZjU3MmZiNC1mOTUwNDM2ZTg2XTpob3ZlciB%2BICAuYm94ZWwtY2FyZC1jb250YWluZXIgewogICAgYm94LXNoYWRvdzoKICAgICAgMCAwIDAgMXB4IHZhcigtLWJvcmRlciwgdmFyKC0tYm94ZWwtMzAwKSksCiAgICAgIHZhcigtLWJveGVsLWJveC1zaGFkb3cpOwogIH0KICAuYWRkLW5ld1tkYXRhLXNjb3BlZGNzcy05ZWFmNTcyZmI0LWY5NTA0MzZlODZdIHsKICAgIGdhcDogdmFyKC0tYm94ZWwtc3AtM3hzKTsKICAgIHdpZHRoOiBmaXQtY29udGVudDsKICAgIG1hcmdpbi1sZWZ0OiBjYWxjKHZhcigtLWJveGVsLWljb24tbWVkKSArIHZhcigtLWJveGVsLXNwLXhzKSk7CiAgICAvKiBmb3IgYWxpZ25tZW50IGR1ZSB0byBzb3J0IGhhbmRsZSAqLwogIH0KICAuYWRkLW5ldy5uby1pdGVtc1tkYXRhLXNjb3BlZGNzcy05ZWFmNTcyZmI0LWY5NTA0MzZlODZdIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogIH0KICAuc29ydFtkYXRhLXNjb3BlZGNzcy05ZWFmNTcyZmI0LWY5NTA0MzZlODZdIHsKICAgIGN1cnNvcjogbW92ZTsKICAgIGN1cnNvcjogZ3JhYjsKICAgIC0tYm94ZWwtaWNvbi1idXR0b24td2lkdGg6IHZhcigtLWJveGVsLWljb24tbWVkKTsKICAgIC0tYm94ZWwtaWNvbi1idXR0b24taGVpZ2h0OiB2YXIoLS1ib3hlbC1pY29uLW1lZCk7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICB9CiAgLnNvcnRbZGF0YS1zY29wZWRjc3MtOWVhZjU3MmZiNC1mOTUwNDM2ZTg2XTphY3RpdmUgewogICAgY3Vyc29yOiBncmFiYmluZzsKICB9CiAgLnNvcnRbZGF0YS1zY29wZWRjc3MtOWVhZjU3MmZiNC1mOTUwNDM2ZTg2XTphY3RpdmUgfiAgLmJveGVsLWNhcmQtY29udGFpbmVyIHsKICAgIGJveC1zaGFkb3c6CiAgICAgIDAgMCAwIDFweCB2YXIoLS1ib3JkZXIsIHZhcigtLWJveGVsLTMwMCkpLAogICAgICB2YXIoLS1ib3hlbC1ib3gtc2hhZG93LWhvdmVyKTsKICB9CiAgW2RhdGEtc2NvcGVkY3NzLTllYWY1NzJmYjQtZjk1MDQzNmU4Nl0gLmlzLWRyYWdnaW5nIHsKICAgIHotaW5kZXg6IDk5OwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKHZhcigtLWJveGVsLXNwKSk7CiAgfQo%3D.glimmer-scoped.css",
858
+ "./links-to-many-component.gts.CiAgLmJveGVsLXBpbGxzW2RhdGEtc2NvcGVkY3NzLTllYWY1NzJmYjQtYjVhMmNmYjQ3M10gewogICAgLS1waWxsLWJvcmRlci1yYWRpdXM6IHZhcigtLWJveGVsLWJvcmRlci1yYWRpdXMtc20pOwogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIGdhcDogdmFyKC0tYm94ZWwtc3AteHMpOwogICAgcGFkZGluZzogdmFyKC0tYm94ZWwtc3AteHMpOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLCB2YXIoLS1ib3hlbC1mb3JtLWNvbnRyb2wtYm9yZGVyLWNvbG9yKSk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3hlbC1mb3JtLWNvbnRyb2wtYm9yZGVyLXJhZGl1cyk7CiAgfQogIC5yZW1vdmUtaXRlbS1idXR0b25bZGF0YS1zY29wZWRjc3MtOWVhZjU3MmZiNC1iNWEyY2ZiNDczXSB7CiAgICB3aWR0aDogMThweDsKICAgIGhlaWdodDogMThweDsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICB9CiAgLnJlbW92ZS1pdGVtLWJ1dHRvbltkYXRhLXNjb3BlZGNzcy05ZWFmNTcyZmI0LWI1YTJjZmI0NzNdOmhvdmVyIHsKICAgIC0taWNvbi1jb2xvcjogdmFyKC0tY2FyZC1mb3JlZ3JvdW5kLCB2YXIoLS1ib3hlbC02MDApKTsKICAgIGNvbG9yOiB2YXIoLS1jYXJkLWZvcmVncm91bmQsIHZhcigtLWJveGVsLTYwMCkpOwogIH0KICAuaXRlbS1waWxsW2RhdGEtc2NvcGVkY3NzLTllYWY1NzJmYjQtYjVhMmNmYjQ3M10gLmF0b20tZGVmYXVsdC10ZW1wbGF0ZTpob3ZlciB7CiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICB9CiAgLml0ZW0tcGlsbFtkYXRhLXNjb3BlZGNzcy05ZWFmNTcyZmI0LWI1YTJjZmI0NzNdIHsKICAgIC0tcGlsbC1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jYXJkKTsKICAgIC0tcGlsbC1mb250LWNvbG9yOiB2YXIoLS1jYXJkLWZvcmVncm91bmQpOwogIH0KICAuaXRlbS1waWxsW2RhdGEtc2NvcGVkY3NzLTllYWY1NzJmYjQtYjVhMmNmYjQ3M106aGFzKGJ1dHRvbjpob3ZlcikgewogICAgLS1pY29uLWNvbG9yOiB2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kLCB2YXIoLS1ib3hlbC02MDApKTsKICAgIC0tcGlsbC1mb250LWNvbG9yOiB2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kLCB2YXIoLS1ib3hlbC02MDApKTsKICAgIC0tcGlsbC1ib3JkZXItY29sb3I6IHZhcigtLW11dGVkLWZvcmVncm91bmQsIHZhcigtLWJveGVsLTYwMCkpOwogIH0KICAuY29tcGFjdC1hZGQtbmV3W2RhdGEtc2NvcGVkY3NzLTllYWY1NzJmYjQtYjVhMmNmYjQ3M10gewogICAgZ2FwOiB2YXIoLS1ib3hlbC1zcC0zeHMpOwogIH0K.glimmer-scoped.css",
859
+ "./links-to-many-component.gts.CiAgQGxheWVyIHsKICAgIC5saW5rc1RvTWFueS1maWVsZDppcygKICAgICAgICAuZml0dGVkLWVmZmVjdGl2ZUZvcm1hdCwKICAgICAgICAuZW1iZWRkZWQtZWZmZWN0aXZlRm9ybWF0LAogICAgICAgIC5lZGl0LWVmZmVjdGl2ZUZvcm1hdAogICAgICApCiAgICAgID4gLmxpbmtzVG9NYW55LWl0ZW1Db250YWluZXIKICAgICAgKyAubGlua3NUb01hbnktaXRlbUNvbnRhaW5lcltkYXRhLXNjb3BlZGNzcy05ZWFmNTcyZmI0LTZhMDc0ZWY0MjddIHsKICAgICAgbWFyZ2luLXRvcDogdmFyKC0tYm94ZWwtc3ApOwogICAgfQogICAgLmxpbmtzVG9NYW55LWZpZWxkLmF0b20tZWZmZWN0aXZlRm9ybWF0LmRpc3BsYXktY29udGFpbmVyLWZhbHNlW2RhdGEtc2NvcGVkY3NzLTllYWY1NzJmYjQtNmEwNzRlZjQyN10gewogICAgICBkaXNwbGF5OiBjb250ZW50czsKICAgIH0KICAgIC5saW5rc1RvTWFueS1maWVsZC5hdG9tLWVmZmVjdGl2ZUZvcm1hdC5kaXNwbGF5LWNvbnRhaW5lci10cnVlW2RhdGEtc2NvcGVkY3NzLTllYWY1NzJmYjQtNmEwNzRlZjQyN10gewogICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgZ2FwOiB2YXIoLS1ib3hlbC1zcC1zbSk7CiAgICB9CiAgICAubGlua3NUb01hbnktZmllbGQuZml0dGVkLWVmZmVjdGl2ZUZvcm1hdAogICAgICA%2BIC5saW5rc1RvTWFueS1pdGVtQ29udGFpbmVyW2RhdGEtc2NvcGVkY3NzLTllYWY1NzJmYjQtNmEwNzRlZjQyN10gewogICAgICBoZWlnaHQ6IDY1cHg7CiAgICB9CiAgfQo%3D.glimmer-scoped.css"
860
+ ],
861
+ "imports": [
862
+ "card-api",
863
+ "field-support",
864
+ "watched-array",
865
+ "field-component",
866
+ "shared-state"
867
+ ]
868
+ };
869
+ (globalThis.__boxelBundledBaseIdentities ??= {})["links-to-many-component"] = { "getLinksToManyComponent": getLinksToManyComponent };
870
+ //#endregion
871
+ //#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/folder-pen.js
872
+ var IconComponent$11 = setComponentTemplate(templateFactory({
873
+ "id": "25zlmPvN",
874
+ "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-folder-pen\"],[24,\"viewBox\",\"0 0 24 24\"],[17,1],[12],[10,\"path\"],[14,\"d\",\"M2 11.5V5a2 2 0 0 1 2-2h3.9c.7 0 1.3.3 1.7.9l.8 1.2c.4.6 1 .9 1.7.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-9.5\"],[12],[13],[10,\"path\"],[14,\"d\",\"M11.378 13.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z\"],[12],[13],[13],[1,\"\\n\"]],[\"&attrs\"],[]]",
875
+ "moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/folder-pen.gts",
876
+ "isStrictMode": true
877
+ }), templateOnly());
878
+ IconComponent$11.name = "folder-pen";
879
+ //#endregion
880
+ //#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/notepad-text.js
881
+ var IconComponent$10 = setComponentTemplate(templateFactory({
882
+ "id": "hwaJsYuN",
883
+ "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-notepad-text\"],[24,\"viewBox\",\"0 0 24 24\"],[17,1],[12],[10,\"path\"],[14,\"d\",\"M8 2v4M12 2v4M16 2v4\"],[12],[13],[10,\"rect\"],[14,\"width\",\"16\"],[14,\"height\",\"18\"],[14,\"x\",\"4\"],[14,\"y\",\"4\"],[14,\"rx\",\"2\"],[12],[13],[10,\"path\"],[14,\"d\",\"M8 10h6M8 14h8M8 18h5\"],[12],[13],[13],[1,\"\\n\"]],[\"&attrs\"],[]]",
884
+ "moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/notepad-text.gts",
885
+ "isStrictMode": true
886
+ }), templateOnly());
887
+ IconComponent$10.name = "notepad-text";
888
+ //#endregion
889
+ //#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/image.js
890
+ var IconComponent$9 = setComponentTemplate(templateFactory({
891
+ "id": "ECsrXiR+",
892
+ "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-image\"],[24,\"viewBox\",\"0 0 24 24\"],[17,1],[12],[10,\"rect\"],[14,\"width\",\"18\"],[14,\"height\",\"18\"],[14,\"x\",\"3\"],[14,\"y\",\"3\"],[14,\"rx\",\"2\"],[14,\"ry\",\"2\"],[12],[13],[10,\"circle\"],[14,\"cx\",\"9\"],[14,\"cy\",\"9\"],[14,\"r\",\"2\"],[12],[13],[10,\"path\"],[14,\"d\",\"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\"],[12],[13],[13],[1,\"\\n\"]],[\"&attrs\"],[]]",
893
+ "moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/image.gts",
894
+ "isStrictMode": true
895
+ }), templateOnly());
896
+ IconComponent$9.name = "image";
897
+ //#endregion
898
+ //#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/palette.js
899
+ var IconComponent$8 = setComponentTemplate(templateFactory({
900
+ "id": "9ciwubo4",
901
+ "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-palette\"],[24,\"viewBox\",\"0 0 24 24\"],[17,1],[12],[10,\"path\"],[14,\"d\",\"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z\"],[12],[13],[10,\"circle\"],[14,\"cx\",\"13.5\"],[14,\"cy\",\"6.5\"],[14,\"r\",\".5\"],[14,\"fill\",\"currentColor\"],[12],[13],[10,\"circle\"],[14,\"cx\",\"17.5\"],[14,\"cy\",\"10.5\"],[14,\"r\",\".5\"],[14,\"fill\",\"currentColor\"],[12],[13],[10,\"circle\"],[14,\"cx\",\"6.5\"],[14,\"cy\",\"12.5\"],[14,\"r\",\".5\"],[14,\"fill\",\"currentColor\"],[12],[13],[10,\"circle\"],[14,\"cx\",\"8.5\"],[14,\"cy\",\"7.5\"],[14,\"r\",\".5\"],[14,\"fill\",\"currentColor\"],[12],[13],[13],[1,\"\\n\"]],[\"&attrs\"],[]]",
902
+ "moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/palette.gts",
903
+ "isStrictMode": true
904
+ }), templateOnly());
905
+ IconComponent$8.name = "palette";
906
+ //#endregion
907
+ //#region ../base/default-templates/card-info.gts
908
+ var CardInfoImageContainer = class extends Component$1 {
909
+ static {
910
+ setComponentTemplate(templateFactory({
911
+ "id": "AvsprwKP",
912
+ "block": "[[[11,0],[24,0,\"cardInfo-image-container thumbnail\"],[16,5,[28,[32,0],[[30,1]],null]],[24,\"role\",\"presentation\"],[17,2],[24,\"data-scopedcss-d01146d3c8-550876bbbf\",\"\"],[12],[1,\"\\n\"],[41,[51,[30,1]],[[[1,\" \"],[8,[30,3],[[24,0,\"icon\"],[24,\"width\",\"50\"],[24,\"height\",\"40\"],[24,\"data-test-thumbnail-icon\",\"\"],[24,\"data-scopedcss-d01146d3c8-550876bbbf\",\"\"]],null,null],[1,\"\\n\"]],[]],null],[13],[1,\"\\n\"]],[\"@cardThumbnailURL\",\"&attrs\",\"@icon\"],[\"unless\"]]",
913
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/default-templates/card-info.gts",
914
+ "scope": () => [setBackgroundImage],
915
+ "isStrictMode": true
916
+ }), this);
917
+ }
918
+ };
919
+ var CardInfoView = class extends Component$1 {
920
+ static {
921
+ setComponentTemplate(templateFactory({
922
+ "id": "yXaME3n4",
923
+ "block": "[[[8,[32,0],[[24,0,\"image-container\"],[24,\"data-test-field\",\"cardInfo-thumbnailURL\"],[24,\"data-scopedcss-d01146d3c8-53d4c46083\",\"\"]],[[\"@cardThumbnailURL\",\"@icon\"],[[30,1],[30,2]]],null],[1,\"\\n\"],[10,0],[14,0,\"info\"],[14,\"data-scopedcss-d01146d3c8-53d4c46083\",\"\"],[12],[1,\"\\n \"],[10,\"h2\"],[14,0,\"card-info-title\"],[14,\"data-test-field\",\"cardInfo-name\"],[14,\"data-scopedcss-d01146d3c8-53d4c46083\",\"\"],[12],[1,\"\\n \"],[1,[30,3]],[1,\"\\n \"],[13],[1,\"\\n \"],[10,2],[14,0,\"card-info-description\"],[14,\"data-test-field\",\"cardInfo-summary\"],[14,\"data-scopedcss-d01146d3c8-53d4c46083\",\"\"],[12],[1,\"\\n \"],[1,[30,4]],[1,\"\\n \"],[13],[1,\"\\n\"],[13],[1,\"\\n\"]],[\"@cardThumbnailURL\",\"@icon\",\"@cardTitle\",\"@cardDescription\"],[]]",
924
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/default-templates/card-info.gts",
925
+ "scope": () => [CardInfoImageContainer],
926
+ "isStrictMode": true
927
+ }), this);
928
+ }
929
+ };
930
+ var CardInfoEditor = class extends Component$1 {
931
+ static {
932
+ setComponentTemplate(templateFactory({
933
+ "id": "1kl8QBYc",
934
+ "block": "[[[10,0],[14,0,\"card-info-editor\"],[14,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"],[12],[1,\"\\n \"],[10,0],[14,0,\"card-info-preview-group\"],[14,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"],[12],[1,\"\\n \"],[8,[32,0],[[16,0,[28,[32,1],[\"preview-toggle\"],[[\"is-preview-visible\"],[[30,0,[\"isPreviewVisible\"]]]]]],[24,\"data-test-toggle-preview\",\"\"],[24,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"],[4,[32,2],[\"click\",[30,0,[\"togglePreview\"]]],null]],[[\"@size\",\"@kind\"],[\"extra-small\",\"text-only\"]],[[\"default\"],[[[[1,\"\\n \"],[1,[52,[30,0,[\"isPreviewVisible\"]],\"Hide\",\"Show\"]],[1,\"\\n Default Preview\\n \"],[8,[32,3],[[24,0,\"preview-toggle-icon\"],[24,\"width\",\"14\"],[24,\"height\",\"14\"],[24,\"role\",\"presentation\"],[24,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"]],null,null],[1,\"\\n \"]],[]]]]],[1,\"\\n\"],[41,[30,0,[\"isPreviewVisible\"]],[[[1,\" \"],[10,0],[14,0,\"default-preview\"],[14,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"],[12],[1,\"\\n \"],[8,[32,4],[[24,0,\"preview-field\"],[24,\"data-test-edit-preview\",\"cardType\"],[24,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"]],[[\"@label\",\"@icon\"],[\"Card Type\",[30,1,[\"constructor\",\"icon\"]]]],[[\"default\"],[[[[1,\"\\n \"],[1,[30,1,[\"constructor\",\"displayName\"]]],[1,\"\\n \"]],[]]]]],[1,\"\\n\"],[42,[28,[31,2],[[28,[31,2],[[30,0,[\"previewFields\"]]],null]],null],null,[[[44,[[30,2,[\"Field\"]]],[[[1,\" \"],[8,[32,4],[[24,0,\"preview-field\"],[16,\"data-test-edit-preview\",[30,2,[\"key\"]]],[16,\"data-edit-preview-field\",[30,2,[\"key\"]]],[24,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"]],[[\"@label\",\"@icon\"],[[30,2,[\"label\"]],[52,[28,[32,5],[[30,2,[\"key\"]],\"cardThumbnailURL\"],null],[32,6],[28,[32,7],[[30,1],[30,2,[\"key\"]]],null]]]],[[\"default\"],[[[[1,\"\\n\"],[41,[30,2,[\"value\"]],[[[1,\" \"],[8,[30,3],[[24,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"]],[[\"@format\"],[\"atom\"]],null],[1,\"\\n\"]],[]],[[[1,\" \"],[10,\"em\"],[14,0,\"null-preview\"],[14,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"],[12],[1,\"\\n\"],[41,[28,[32,8],[[28,[32,5],[[30,2,[\"key\"]],\"cardTheme\"],null],[30,4]],null],[[[1,\" (Self)\\n\"]],[]],[[[1,\" None\\n\"]],[]]],[1,\" \"],[13],[1,\"\\n\"]],[]]],[1,\" \"]],[]]]]],[1,\"\\n\"]],[3]]]],[2]],null],[1,\" \"],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n \"],[10,0],[14,0,\"card-info-fields\"],[14,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"],[12],[1,\"\\n \"],[8,[32,9],[[24,0,\"card-info-thumbnail-preview\"],[24,\"data-test-thumbnail-image\",\"\"],[24,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"]],[[\"@cardThumbnailURL\",\"@icon\"],[[30,1,[\"cardThumbnailURL\"]],[30,1,[\"constructor\",\"icon\"]]]],null],[1,\"\\n \"],[10,0],[14,0,\"card-info-edit-fields card-info-edit-field-group\"],[14,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"],[12],[1,\"\\n \"],[8,[32,4],[[24,0,\"card-info-field\"],[24,\"data-test-field\",\"cardInfo-name\"],[24,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"]],[[\"@label\",\"@tag\",\"@labelFontSize\",\"@icon\",\"@vertical\"],[\"Name\",\"label\",\"default\",[32,10],true]],[[\"default\"],[[[[1,\"\\n \"],[8,[30,5,[\"cardInfo\",\"name\"]],[[24,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"]],null,null],[1,\"\\n \"]],[]]]]],[1,\"\\n \"],[8,[32,4],[[24,0,\"card-info-field\"],[24,\"data-test-field\",\"cardInfo-summary\"],[24,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"]],[[\"@label\",\"@tag\",\"@labelFontSize\",\"@icon\",\"@vertical\"],[\"Summary\",\"label\",\"default\",[32,11],true]],[[\"default\"],[[[[1,\"\\n \"],[8,[30,5,[\"cardInfo\",\"summary\"]],[[24,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"]],null,null],[1,\"\\n \"]],[]]]]],[1,\"\\n \"],[13],[1,\"\\n \"],[8,[32,0],[[24,0,\"card-info-thumbnail-popup-toggle\"],[24,\"data-test-toggle-thumbnail-editor\",\"\"],[24,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"],[4,[32,2],[\"click\",[30,0,[\"toggleThumbnailEditor\"]]],null]],[[\"@size\",\"@kind\"],[\"extra-small\",\"secondary-light\"]],[[\"default\"],[[[[1,\"\\n Change\\n \"],[41,[51,[30,4]],[[[1,\"Theme & \"]],[]],null],[1,\"Thumbnail\\n \"]],[]]]]],[1,\"\\n\"],[41,[30,0,[\"isThumbnailEditorVisible\"]],[[[1,\" \"],[10,0],[14,0,\"hidden-fields card-info-edit-field-group\"],[14,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"],[12],[1,\"\\n \"],[8,[32,4],[[24,0,\"card-info-field\"],[24,\"data-test-field\",\"cardInfo-thumbnailURL\"],[24,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"]],[[\"@label\",\"@icon\"],[\"Thumbnail URL\",[32,12]]],[[\"default\"],[[[[1,\"\\n \"],[10,0],[14,0,\"thumbnail-picker\"],[14,\"data-thumbnail-picker-controls\",\"\"],[14,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"],[12],[1,\"\\n \"],[10,0],[14,0,\"thumbnail-picker-inputs\"],[14,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"thumbnail-picker-input-slot\"],[14,\"data-test-thumbnail-input\",\"\"],[14,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"],[12],[1,\"\\n \"],[8,[30,5,[\"cardInfo\",\"cardThumbnailURL\"]],[[24,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"]],null,null],[1,\"\\n \"],[13],[1,\"\\n\"],[41,[30,0,[\"hasThumbnailUrl\"]],[[[1,\" \"],[8,[32,13],[[24,0,\"thumbnail-picker-clear\"],[24,\"aria-label\",\"Clear thumbnail\"],[24,\"data-test-thumbnail-clear\",\"\"],[24,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"],[4,[32,2],[\"click\",[30,0,[\"clearThumbnail\"]]],null]],[[\"@icon\",\"@width\",\"@height\"],[[32,14],\"16px\",\"16px\"]],null],[1,\"\\n\"]],[]],[[[41,[30,0,[\"computedThumbnailFallback\"]],[[[1,\" \"],[10,1],[14,0,\"thumbnail-picker-placeholder\"],[14,\"data-test-thumbnail-placeholder\",\"\"],[14,\"aria-hidden\",\"true\"],[14,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"],[12],[1,[30,0,[\"computedThumbnailFallback\"]]],[13],[1,\"\\n \"]],[]],null]],[]]],[1,\" \"],[13],[1,\"\\n\"],[41,[51,[30,0,[\"hasThumbnailUrl\"]]],[[[1,\" \"],[10,1],[14,0,\"thumbnail-picker-or\"],[14,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"],[12],[1,\"or\"],[13],[1,\"\\n \"],[8,[32,0],[[24,\"data-test-thumbnail-select-image\",\"\"],[24,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"],[4,[32,2],[\"click\",[30,0,[\"selectThumbnailImage\"]]],null]],[[\"@kind\",\"@size\"],[\"secondary\",\"extra-small\"]],[[\"default\"],[[[[1,\"\\n Select Image\\n \"]],[]]]]],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n \"]],[]]]]],[1,\"\\n\"],[41,[51,[30,4]],[[[1,\" \"],[8,[32,4],[[24,0,\"card-info-field theme-field\"],[24,\"data-test-field\",\"cardInfo-theme\"],[24,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"]],[[\"@label\",\"@icon\"],[\"Theme\",[32,15]]],[[\"default\"],[[[[1,\"\\n \"],[8,[30,5,[\"cardInfo\",\"theme\"]],[[24,\"data-scopedcss-d01146d3c8-42a0036359\",\"\"]],null,null],[1,\"\\n \"]],[]]]]],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n\"],[13],[1,\"\\n\"]],[\"@model\",\"item\",\"Field\",\"@hideThemeChooser\",\"@fields\"],[\"if\",\"each\",\"-track-array\",\"let\",\"unless\"]]",
935
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/default-templates/card-info.gts",
936
+ "scope": () => [
937
+ ButtonComponent,
938
+ cn_default,
939
+ on,
940
+ IconComponent$21,
941
+ FieldContainer,
942
+ eq,
943
+ IconComponent$23,
944
+ getFieldIcon,
945
+ and,
946
+ CardInfoImageContainer,
947
+ IconComponent$11,
948
+ IconComponent$10,
949
+ IconComponent$9,
950
+ IconButton,
951
+ IconComponent$12,
952
+ IconComponent$8
953
+ ],
954
+ "isStrictMode": true
955
+ }), this);
956
+ }
957
+ static {
958
+ decorateFieldV2(this.prototype, "isPreviewVisible", [tracked], function() {
959
+ return false;
960
+ });
961
+ }
962
+ #isPreviewVisible = (initializeDeferredDecorator(this, "isPreviewVisible"), void 0);
963
+ static {
964
+ decorateFieldV2(this.prototype, "isThumbnailEditorVisible", [tracked], function() {
965
+ return false;
966
+ });
967
+ }
968
+ #isThumbnailEditorVisible = (initializeDeferredDecorator(this, "isThumbnailEditorVisible"), void 0);
969
+ togglePreview = () => {
970
+ this.isPreviewVisible = !this.isPreviewVisible;
971
+ };
972
+ toggleThumbnailEditor = () => {
973
+ this.isThumbnailEditorVisible = !this.isThumbnailEditorVisible;
974
+ };
975
+ get previewFields() {
976
+ return cardDefComputedFields.map((key) => ({
977
+ key,
978
+ label: startCase(key),
979
+ value: this.args.model?.[key],
980
+ Field: this.args.fields?.[key]
981
+ }));
982
+ }
983
+ get hasThumbnailUrl() {
984
+ return Boolean(this.args.model?.cardInfo?.cardThumbnailURL);
985
+ }
986
+ get computedThumbnailFallback() {
987
+ if ((this.args.model?.cardInfo)?.cardThumbnailURL) return;
988
+ return this.args.model?.cardThumbnailURL;
989
+ }
990
+ clearThumbnail = () => {
991
+ let cardInfo = this.args.model?.cardInfo;
992
+ if (cardInfo) {
993
+ cardInfo.cardThumbnailURL = null;
994
+ cardInfo.cardThumbnail = null;
995
+ }
996
+ };
997
+ selectThumbnailImage = async () => {
998
+ let cardInfo = this.args.model?.cardInfo;
999
+ if (!cardInfo) return;
1000
+ let imageRef = identifyCard(ImageDef);
1001
+ let file = await chooseFile(imageRef ? {
1002
+ fileType: imageRef,
1003
+ fileTypeName: "Image"
1004
+ } : void 0);
1005
+ if (file?.url) {
1006
+ cardInfo.cardThumbnailURL = file.url;
1007
+ if (file.id) cardInfo.cardThumbnail = file;
1008
+ }
1009
+ };
1010
+ };
1011
+ var CardInfoTemplates = {
1012
+ view: CardInfoView,
1013
+ edit: CardInfoEditor
1014
+ };
1015
+ (globalThis.__boxelBundledBaseScopedCSS ??= {})["default-templates/card-info"] = {
1016
+ "css": [
1017
+ "./card-info.gts.CiAgLmNhcmRJbmZvLWltYWdlLWNvbnRhaW5lcltkYXRhLXNjb3BlZGNzcy1kMDExNDZkM2M4LTU1MDg3NmJiYmZdIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgd2lkdGg6IHZhcigtLXRodW1ibmFpbC1jb250YWluZXItc2l6ZSk7CiAgICBoZWlnaHQ6IHZhcigtLXRodW1ibmFpbC1jb250YWluZXItc2l6ZSk7CiAgICBtaW4td2lkdGg6IHZhcigtLXRodW1ibmFpbC1jb250YWluZXItc2l6ZSk7CiAgICBtaW4taGVpZ2h0OiB2YXIoLS10aHVtYm5haWwtY29udGFpbmVyLXNpemUpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLCB2YXIoLS1ib3hlbC1ib3JkZXItcmFkaXVzLXhsKSk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iYWNrZ3JvdW5kLCB2YXIoLS1ib3hlbC1saWdodCkpOwogIH0KICAudGh1bWJuYWlsW2RhdGEtc2NvcGVkY3NzLWQwMTE0NmQzYzgtNTUwODc2YmJiZl0gewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7CiAgfQo%3D.glimmer-scoped.css",
1018
+ "./card-info.gts.CiAgLmltYWdlLWNvbnRhaW5lcltkYXRhLXNjb3BlZGNzcy1kMDExNDZkM2M4LTUzZDRjNDYwODNdIHsKICAgIC0tdGh1bWJuYWlsLWNvbnRhaW5lci1zaXplOiA2LjI1cmVtOwogIH0KICAuY2FyZC1pbmZvLXRpdGxlW2RhdGEtc2NvcGVkY3NzLWQwMTE0NmQzYzgtNTNkNGM0NjA4M10gewogICAgbWFyZ2luLWJsb2NrOiAwOwogICAgZm9udC1zaXplOiB2YXIoLS1ib3hlbC1mb250LXNpemUpOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGxldHRlci1zcGFjaW5nOiB2YXIoLS1ib3hlbC1sc3Atc20pOwogICAgbGluZS1oZWlnaHQ6IGNhbGMoMjIgLyAxNik7CiAgfQogIC5jYXJkLWluZm8tZGVzY3JpcHRpb25bZGF0YS1zY29wZWRjc3MtZDAxMTQ2ZDNjOC01M2Q0YzQ2MDgzXSB7CiAgICBtYXJnaW4tYmxvY2s6IDA7CiAgICBmb250LXNpemU6IHZhcigtLWJveGVsLWZvbnQtc2l6ZS1zbSk7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLWJveGVsLWxzcC1zbSk7CiAgICBsaW5lLWhlaWdodDogY2FsYygxOCAvIDEzKTsKICB9CiAgLmluZm8gPiAqICsgKltkYXRhLXNjb3BlZGNzcy1kMDExNDZkM2M4LTUzZDRjNDYwODNdIHsKICAgIG1hcmdpbi10b3A6IHZhcigtLWJveGVsLXNwLXhzKTsKICB9Cg%3D%3D.glimmer-scoped.css",
1019
+ "./card-info.gts.CiAgLmNhcmQtaW5mby1lZGl0b3JbZGF0YS1zY29wZWRjc3MtZDAxMTQ2ZDNjOC00MmEwMDM2MzU5XSB7CiAgICBjb250YWluZXItbmFtZTogY2FyZC1pbmZvLWVkaXRvci10ZW1wbGF0ZTsKICAgIGNvbnRhaW5lci10eXBlOiBpbmxpbmUtc2l6ZTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiAxMDAlOwogICAgbWF4LXdpZHRoOiAxMDAlOwogIH0KCiAgLmNhcmQtaW5mby1wcmV2aWV3LWdyb3VwW2RhdGEtc2NvcGVkY3NzLWQwMTE0NmQzYzgtNDJhMDAzNjM1OV0gewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdhcDogdmFyKC0tYm94ZWwtc3AteHMpOwogIH0KICAucHJldmlldy10b2dnbGVbZGF0YS1zY29wZWRjc3MtZDAxMTQ2ZDNjOC00MmEwMDM2MzU5XSB7CiAgICBtaW4td2lkdGg6IDEwLjVyZW07CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi10b3A6IGNhbGMoLTEgKiB2YXIoLS1ib3hlbC1zcC14cykpOwogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogIH0KICAucHJldmlldy10b2dnbGUtaWNvbltkYXRhLXNjb3BlZGNzcy1kMDExNDZkM2M4LTQyYTAwMzYzNTldIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKICB9CiAgLmlzLXByZXZpZXctdmlzaWJsZSAucHJldmlldy10b2dnbGUtaWNvbltkYXRhLXNjb3BlZGNzcy1kMDExNDZkM2M4LTQyYTAwMzYzNTldIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7CiAgfQogIC5kZWZhdWx0LXByZXZpZXdbZGF0YS1zY29wZWRjc3MtZDAxMTQ2ZDNjOC00MmEwMDM2MzU5XSB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ2FwOiB2YXIoLS1ib3hlbC1zcCk7CiAgICBtYXJnaW4tdG9wOiB2YXIoLS1ib3hlbC1zcC14cyk7CiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1ib3hlbC1zcC14bCk7CiAgICBwYWRkaW5nLXRvcDogdmFyKC0tYm94ZWwtc3AteGwpOwogICAgcGFkZGluZy1pbmxpbmU6IHZhcigtLWJveGVsLXNwLWxnKTsKICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1ib3hlbC1zcC1sZyk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1hY2NlbnQpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzKTsKICAgIGNvbG9yOiB2YXIoLS1hY2NlbnQtZm9yZWdyb3VuZCk7CiAgfQogIC5wcmV2aWV3LWZpZWxkW2RhdGEtc2NvcGVkY3NzLWQwMTE0NmQzYzgtNDJhMDAzNjM1OV0sCiAgLnByZXZpZXctZmllbGRbZGF0YS1zY29wZWRjc3MtZDAxMTQ2ZDNjOC00MmEwMDM2MzU5XSA%2BICAubGFiZWwtY29udGFpbmVyIHsKICAgIC0tYm94ZWwtZmllbGQtY29udGVudC1wYWRkaW5nOiAwOwogICAgbWluLWhlaWdodDogdW5zZXQ7CiAgICBwYWRkaW5nLXRvcDogdW5zZXQ7CiAgfQoKICAuY2FyZC1pbmZvLWZpZWxkc1tkYXRhLXNjb3BlZGNzcy1kMDExNDZkM2M4LTQyYTAwMzYzNTldIHsKICAgIC0tdGh1bWJuYWlsLWNvbnRhaW5lci1zaXplOiA2LjI1cmVtOwogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6CiAgICAgICd0aHVtYm5haWwgbmFtZS1zdW1tYXJ5JwogICAgICAndGh1bWJuYWlsLXRvZ2dsZSBuYW1lLXN1bW1hcnknCiAgICAgICdoaWRkZW4tZmllbGRzIGhpZGRlbi1maWVsZHMnOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOgogICAgICB2YXIoLS1ib3hlbC1maWVsZC1sYWJlbC1zaXplLCBtaW5tYXgoOHJlbSwgMjUlKSkKICAgICAgMWZyOwogICAgYWxpZ24taXRlbXM6IHN0YXJ0OwogICAganVzdGlmeS1pdGVtczogY2VudGVyOwogIH0KICAuY2FyZC1pbmZvLXRodW1ibmFpbC1wcmV2aWV3W2RhdGEtc2NvcGVkY3NzLWQwMTE0NmQzYzgtNDJhMDAzNjM1OV0gewogICAgZ3JpZC1hcmVhOiB0aHVtYm5haWw7CiAgICBtYXJnaW4tdG9wOiB2YXIoLS1ib3hlbC1zcC1zbSk7CiAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLWJveGVsLXNwLXhsKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7CiAgfQogIC5jYXJkLWluZm8tdGh1bWJuYWlsLXBvcHVwLXRvZ2dsZVtkYXRhLXNjb3BlZGNzcy1kMDExNDZkM2M4LTQyYTAwMzYzNTldIHsKICAgIGdyaWQtYXJlYTogdGh1bWJuYWlsLXRvZ2dsZTsKICAgIG1hcmdpbi10b3A6IHZhcigtLWJveGVsLXNwLXhzKTsKICAgIG1hcmdpbi1yaWdodDogdmFyKC0tYm94ZWwtc3AteGwpOwogIH0KICAuY2FyZC1pbmZvLWVkaXQtZmllbGRzW2RhdGEtc2NvcGVkY3NzLWQwMTE0NmQzYzgtNDJhMDAzNjM1OV0gewogICAgZ3JpZC1hcmVhOiBuYW1lLXN1bW1hcnk7CiAgfQogIC5oaWRkZW4tZmllbGRzW2RhdGEtc2NvcGVkY3NzLWQwMTE0NmQzYzgtNDJhMDAzNjM1OV0gewogICAgZ3JpZC1hcmVhOiBoaWRkZW4tZmllbGRzOwogICAgbWFyZ2luLXRvcDogdmFyKC0tYm94ZWwtc3ApOwogIH0KICAuY2FyZC1pbmZvLWVkaXQtZmllbGQtZ3JvdXBbZGF0YS1zY29wZWRjc3MtZDAxMTQ2ZDNjOC00MmEwMDM2MzU5XSB7CiAgICB3aWR0aDogMTAwJTsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBnYXA6IHZhcigtLWJveGVsLXNwLWxnKTsKICB9CiAgLnRoZW1lLWZpZWxkW2RhdGEtc2NvcGVkY3NzLWQwMTE0NmQzYzgtNDJhMDAzNjM1OV0gLmxpbmtzLXRvLWVkaXRvciAuZmllbGQtY29tcG9uZW50LWNhcmQgewogICAgbWluLWhlaWdodDogdmFyKC0tYm94ZWwtZm9ybS1jb250cm9sLWhlaWdodCk7CiAgfQogIC50aHVtYm5haWwtcGlja2VyW2RhdGEtc2NvcGVkY3NzLWQwMTE0NmQzYzgtNDJhMDAzNjM1OV0gewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiB2YXIoLS1ib3hlbC1zcC1zbSk7CiAgfQogIC50aHVtYm5haWwtcGlja2VyLWlucHV0c1tkYXRhLXNjb3BlZGNzcy1kMDExNDZkM2M4LTQyYTAwMzYzNTldIHsKICAgIGZsZXg6IDE7CiAgICBtaW4td2lkdGg6IDA7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgfQogIC50aHVtYm5haWwtcGlja2VyLWlucHV0LXNsb3RbZGF0YS1zY29wZWRjc3MtZDAxMTQ2ZDNjOC00MmEwMDM2MzU5XSB7CiAgICBkaXNwbGF5OiBibG9jazsKICB9CiAgLnRodW1ibmFpbC1waWNrZXItaW5wdXQtc2xvdFtkYXRhLXNjb3BlZGNzcy1kMDExNDZkM2M4LTQyYTAwMzYzNTldIGlucHV0IHsKICAgIHdpZHRoOiAxMDAlOwogICAgcGFkZGluZy1yaWdodDogMi41cmVtOwogICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgfQogIC50aHVtYm5haWwtcGlja2VyLWNsZWFyW2RhdGEtc2NvcGVkY3NzLWQwMTE0NmQzYzgtNDJhMDAzNjM1OV0gewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgcmlnaHQ6IDA7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgd2lkdGg6IDIuNXJlbTsKICAgIGhlaWdodDogMTAwJTsKICAgIG9wYWNpdHk6IDAuNTsKICAgIHotaW5kZXg6IDE7CiAgfQogIC50aHVtYm5haWwtcGlja2VyLWNsZWFyW2RhdGEtc2NvcGVkY3NzLWQwMTE0NmQzYzgtNDJhMDAzNjM1OV06aG92ZXIsCiAgLnRodW1ibmFpbC1waWNrZXItY2xlYXJbZGF0YS1zY29wZWRjc3MtZDAxMTQ2ZDNjOC00MmEwMDM2MzU5XTpmb2N1cyB7CiAgICBvcGFjaXR5OiAxOwogICAgb3V0bGluZTogMDsKICB9CiAgLnRodW1ibmFpbC1waWNrZXItcGxhY2Vob2xkZXJbZGF0YS1zY29wZWRjc3MtZDAxMTQ2ZDNjOC00MmEwMDM2MzU5XSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiB2YXIoLS1ib3hlbC1zcC1zbSk7CiAgICByaWdodDogMi41cmVtOwogICAgaGVpZ2h0OiAxMDAlOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgY29sb3I6IHZhcigtLW11dGVkLWZvcmVncm91bmQsIHZhcigtLWJveGVsLTQ1MCkpOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgfQogIC50aHVtYm5haWwtcGlja2VyLW9yW2RhdGEtc2NvcGVkY3NzLWQwMTE0NmQzYzgtNDJhMDAzNjM1OV0gewogICAgZmxleC1zaHJpbms6IDA7CiAgICBmb250LXNpemU6IHZhcigtLWJveGVsLWZvbnQtc2l6ZS14cyk7CiAgICBjb2xvcjogdmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCwgdmFyKC0tYm94ZWwtNDAwKSk7CiAgfQogIC5udWxsLXByZXZpZXdbZGF0YS1zY29wZWRjc3MtZDAxMTQ2ZDNjOC00MmEwMDM2MzU5XSB7CiAgICBjb2xvcjogdmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCwgdmFyKC0tYm94ZWwtNDUwKSk7CiAgfQogIC5kZWZhdWx0LXByZXZpZXdbZGF0YS1zY29wZWRjc3MtZDAxMTQ2ZDNjOC00MmEwMDM2MzU5XSBbZGF0YS1lZGl0LXByZXZpZXctZmllbGQ9J2NhcmRUaHVtYm5haWxVUkwnXSB7CiAgICBvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTsKICAgIG1pbi13aWR0aDogMDsKICB9CgogIEBjb250YWluZXIgY2FyZC1pbmZvLWVkaXRvci10ZW1wbGF0ZSAod2lkdGggPCA0MjVweCkgewogICAgLmNhcmQtaW5mby1wcmV2aWV3LWdyb3VwW2RhdGEtc2NvcGVkY3NzLWQwMTE0NmQzYzgtNDJhMDAzNjM1OV0gewogICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1ib3hlbC1zcCk7CiAgICB9CiAgICAucHJldmlldy10b2dnbGVbZGF0YS1zY29wZWRjc3MtZDAxMTQ2ZDNjOC00MmEwMDM2MzU5XSB7CiAgICAgIG1hcmdpbi10b3A6IHVuc2V0OwogICAgfQogICAgLmRlZmF1bHQtcHJldmlld1tkYXRhLXNjb3BlZGNzcy1kMDExNDZkM2M4LTQyYTAwMzYzNTldIHsKICAgICAgbWFyZ2luLXRvcDogdW5zZXQ7CiAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLWJveGVsLXNwLXhzKTsKICAgIH0KICAgIC5jYXJkLWluZm8tZmllbGRzW2RhdGEtc2NvcGVkY3NzLWQwMTE0NmQzYzgtNDJhMDAzNjM1OV0gewogICAgICAtLXRodW1ibmFpbC1jb250YWluZXItc2l6ZTogNC4zNzVyZW07CiAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogdmFyKC0tdGh1bWJuYWlsLWNvbnRhaW5lci1zaXplKSAxZnI7CiAgICAgIGdhcDogdmFyKC0tYm94ZWwtc3Atc20pOwogICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7CiAgICB9CiAgICAuY2FyZC1pbmZvLWVkaXQtZmllbGQtZ3JvdXBbZGF0YS1zY29wZWRjc3MtZDAxMTQ2ZDNjOC00MmEwMDM2MzU5XSB7CiAgICAgIGdhcDogdmFyKC0tYm94ZWwtc3AteHMpOwogICAgfQogICAgLmNhcmQtaW5mby10aHVtYm5haWwtcHJldmlld1tkYXRhLXNjb3BlZGNzcy1kMDExNDZkM2M4LTQyYTAwMzYzNTldIHsKICAgICAgbWFyZ2luLXRvcDogMDsKICAgICAgbWFyZ2luLXJpZ2h0OiAwOwogICAgfQogICAgLmNhcmQtaW5mby10aHVtYm5haWwtcG9wdXAtdG9nZ2xlW2RhdGEtc2NvcGVkY3NzLWQwMTE0NmQzYzgtNDJhMDAzNjM1OV0gewogICAgICBhbGlnbi1zZWxmOiBzdGFydDsKICAgICAgbWF4LXdpZHRoOiB2YXIoLS10aHVtYm5haWwtY29udGFpbmVyLXNpemUpOwogICAgICBtaW4td2lkdGg6IHVuc2V0OwogICAgICBtYXJnaW4tdG9wOiAwOwogICAgICBtYXJnaW4taW5saW5lOiAwOwogICAgICBwYWRkaW5nLWlubGluZTogMDsKICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm94ZWwtYm9yZGVyLXJhZGl1cy1zbSk7CiAgICAgIGZvbnQtc2l6ZTogMC42ODc1cmVtOwogICAgfQogICAgLmNhcmQtaW5mby10aHVtYm5haWwtcHJldmlld1tkYXRhLXNjb3BlZGNzcy1kMDExNDZkM2M4LTQyYTAwMzYzNTldIC5pY29uIHsKICAgICAgd2lkdGg6IDEuMjVyZW07CiAgICAgIGhlaWdodDogMS4yNXJlbTsKICAgIH0KICB9Cg%3D%3D.glimmer-scoped.css"
1020
+ ],
1021
+ "imports": ["card-api", "helpers/set-background-image"]
1022
+ };
1023
+ //#endregion
1024
+ //#region ../base/default-templates/isolated-and-edit.gts
1025
+ var DefaultCardDefTemplate = class extends Component$1 {
1026
+ standardComputedFields = cardDefComputedFields;
1027
+ excludedFields = [
1028
+ "id",
1029
+ "cardInfo",
1030
+ ...this.standardComputedFields,
1031
+ "theme"
1032
+ ];
1033
+ get cardInfoFieldDisplayNames() {
1034
+ let fieldNames = this.standardComputedFields.filter((fieldName) => {
1035
+ return getField(this.args.cardOrField, fieldName)?.computeVia == void 0;
1036
+ });
1037
+ return fieldNames.length ? fieldNames : void 0;
1038
+ }
1039
+ get displayFields() {
1040
+ if (!this.args.fields) return;
1041
+ let excludedFields = this.excludedFields.filter((name) => !this.cardInfoFieldDisplayNames?.includes(name));
1042
+ let fields = Object.entries(this.args.fields).filter(([key]) => !excludedFields.includes(key));
1043
+ if (!fields.length) return;
1044
+ return Object.fromEntries(fields);
1045
+ }
1046
+ get isThemeCard() {
1047
+ return Boolean(Object.entries(this.args.fields ?? {}).find(([key]) => key === "cssVariables"));
1048
+ }
1049
+ static {
1050
+ setComponentTemplate(templateFactory({
1051
+ "id": "LNdbJVxB",
1052
+ "block": "[[[10,0],[15,0,[28,[32,0],[\"default-card-template\",[30,1]],null]],[15,\"data-test-base-template\",[30,1]],[14,\"data-scopedcss-79d9b195e4-c265206e56\",\"\"],[12],[1,\"\\n \"],[10,0],[15,0,[28,[32,0],[\"default-card-template--inner\",[30,1]],null]],[14,\"data-scopedcss-79d9b195e4-c265206e56\",\"\"],[12],[1,\"\\n \"],[8,[32,1],[[24,0,\"card-info-header\"],[24,\"data-scopedcss-79d9b195e4-c265206e56\",\"\"]],[[\"@hasBottomBorder\"],[true]],[[\"default\"],[[[[1,\"\\n\"],[41,[28,[32,2],[[30,1],\"isolated\"],null],[[[1,\" \"],[8,[32,3,[\"view\"]],[[24,\"data-scopedcss-79d9b195e4-c265206e56\",\"\"]],[[\"@cardTitle\",\"@cardDescription\",\"@cardThumbnailURL\",\"@icon\"],[[30,2,[\"cardTitle\"]],[30,2,[\"cardDescription\"]],[30,2,[\"cardThumbnailURL\"]],[30,3,[\"icon\"]]]],null],[1,\"\\n\"]],[]],[[[41,[30,4,[\"cardInfo\"]],[[[1,\" \"],[8,[32,3,[\"edit\"]],[[24,\"data-scopedcss-79d9b195e4-c265206e56\",\"\"]],[[\"@fields\",\"@model\",\"@hideThemeChooser\"],[[30,4],[30,2],[30,0,[\"isThemeCard\"]]]],null],[1,\"\\n \"]],[]],null]],[]]],[1,\" \"]],[]]]]],[1,\"\\n\"],[41,[30,0,[\"displayFields\"]],[[[1,\" \"],[10,\"section\"],[14,0,\"own-display-fields\"],[14,\"data-scopedcss-79d9b195e4-c265206e56\",\"\"],[12],[1,\"\\n\"],[42,[28,[31,2],[[30,0,[\"displayFields\"]]],null],null,[[[1,\" \"],[8,[32,4],[[16,\"data-test-field\",[30,6]],[24,\"data-scopedcss-79d9b195e4-c265206e56\",\"\"]],[[\"@label\",\"@icon\"],[[28,[32,5],[[30,6]],null],[28,[32,6],[[30,2],[30,6]],null]]],[[\"default\"],[[[[1,\"\\n \"],[8,[30,5],[[24,0,\"in-isolated\"],[24,\"data-scopedcss-79d9b195e4-c265206e56\",\"\"]],null,null],[1,\"\\n \"]],[]]]]],[1,\"\\n\"]],[5,6]],null],[1,\" \"],[13],[1,\"\\n\"]],[]],null],[41,[30,4,[\"cardInfo\",\"notes\"]],[[[1,\" \"],[10,\"footer\"],[14,0,\"notes-footer\"],[14,\"data-scopedcss-79d9b195e4-c265206e56\",\"\"],[12],[1,\"\\n \"],[8,[32,4],[[24,\"data-test-field\",\"cardInfo-notes\"],[24,\"data-scopedcss-79d9b195e4-c265206e56\",\"\"]],[[\"@label\",\"@icon\"],[\"Notes\",[28,[32,6],[[30,2,[\"cardInfo\"]],\"notes\"],null]]],[[\"default\"],[[[[1,\"\\n \"],[8,[30,4,[\"cardInfo\",\"notes\"]],[[24,\"data-scopedcss-79d9b195e4-c265206e56\",\"\"]],null,null],[1,\"\\n \"]],[]]]]],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],null],[1,\" \"],[13],[1,\"\\n\"],[13],[1,\"\\n\"]],[\"@format\",\"@model\",\"@cardOrField\",\"@fields\",\"Field\",\"key\"],[\"if\",\"each\",\"-each-in\"]]",
1053
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/default-templates/isolated-and-edit.gts",
1054
+ "scope": () => [
1055
+ cn_default,
1056
+ Header,
1057
+ eq,
1058
+ CardInfoTemplates,
1059
+ FieldContainer,
1060
+ startCase,
1061
+ getFieldIcon
1062
+ ],
1063
+ "isStrictMode": true
1064
+ }), this);
1065
+ }
1066
+ };
1067
+ (globalThis.__boxelBundledBaseScopedCSS ??= {})["default-templates/isolated-and-edit"] = {
1068
+ "css": ["./isolated-and-edit.gts.CiAgLmRlZmF1bHQtY2FyZC10ZW1wbGF0ZVtkYXRhLXNjb3BlZGNzcy03OWQ5YjE5NWU0LWMyNjUyMDZlNTZdIHsKICAgIGNvbnRhaW5lci1uYW1lOiBkZWZhdWx0LXRlbXBsYXRlOwogICAgY29udGFpbmVyLXR5cGU6IGlubGluZS1zaXplOwogIH0KICAuZGVmYXVsdC1jYXJkLXRlbXBsYXRlLS1pbm5lcltkYXRhLXNjb3BlZGNzcy03OWQ5YjE5NWU0LWMyNjUyMDZlNTZdIHsKICAgIC0tYm94ZWwtZGVmYXVsdC10ZW1wbGF0ZS1wYWRkaW5nOiB2YXIoLS1ib3hlbC1zcC14bCk7CiAgICAtLWJveGVsLWRlZmF1bHQtdGVtcGxhdGUtaHItY29sb3I6IHJnYmEoMCAwIDAgLyAxMCUpOwogICAgZGlzcGxheTogZ3JpZDsKICB9CiAgLmNhcmQtaW5mby1oZWFkZXJbZGF0YS1zY29wZWRjc3MtNzlkOWIxOTVlNC1jMjY1MjA2ZTU2XSB7CiAgICAtLWJveGVsLWhlYWRlci1taW4taGVpZ2h0OiA5LjM3NXJlbTsgLyogMTUwcHggKi8KICAgIC0tYm94ZWwtaGVhZGVyLXBhZGRpbmc6IHZhcigtLWJveGVsLWRlZmF1bHQtdGVtcGxhdGUtcGFkZGluZyk7CiAgICAtLWJveGVsLWhlYWRlci1nYXA6IHZhcigtLWJveGVsLXNwLWxnKTsKICAgIC0tYm94ZWwtaGVhZGVyLWJvcmRlci1jb2xvcjogdmFyKC0tYm94ZWwtZGVmYXVsdC10ZW1wbGF0ZS1oci1jb2xvcik7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tdXRlZCk7CiAgfQogIC5jYXJkLWluZm8taGVhZGVyW2RhdGEtc2NvcGVkY3NzLTc5ZDliMTk1ZTQtYzI2NTIwNmU1Nl0gLmluZm8gewogICAgYWxpZ24tc2VsZjogY2VudGVyOwogIH0KICAuY2FyZC1pbmZvLWhlYWRlcltkYXRhLXNjb3BlZGNzcy03OWQ5YjE5NWU0LWMyNjUyMDZlNTZdIC5hZGQtbmV3IHsKICAgIGdyaWQtY29sdW1uOiAtMSAvIDE7CiAgfQogIC5vd24tZGlzcGxheS1maWVsZHNbZGF0YS1zY29wZWRjc3MtNzlkOWIxOTVlNC1jMjY1MjA2ZTU2XSB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ2FwOiB2YXIoLS1ib3hlbC1zcC1sZyk7CiAgICBwYWRkaW5nOiB2YXIoLS1ib3hlbC1kZWZhdWx0LXRlbXBsYXRlLXBhZGRpbmcpOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmFja2dyb3VuZCk7CiAgfQogIC5vd24tZGlzcGxheS1maWVsZHMgKyAubm90ZXMtZm9vdGVyW2RhdGEtc2NvcGVkY3NzLTc5ZDliMTk1ZTQtYzI2NTIwNmU1Nl0gewogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWJveGVsLWRlZmF1bHQtdGVtcGxhdGUtaHItY29sb3IpOwogIH0KICAubm90ZXMtZm9vdGVyW2RhdGEtc2NvcGVkY3NzLTc5ZDliMTk1ZTQtYzI2NTIwNmU1Nl0gewogICAgcGFkZGluZzogdmFyKC0tYm94ZWwtZGVmYXVsdC10ZW1wbGF0ZS1wYWRkaW5nKTsKICB9CiAgLnRhZ3NbZGF0YS1zY29wZWRjc3MtNzlkOWIxOTVlNC1jMjY1MjA2ZTU2XSB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC13cmFwOiB3cmFwOwogICAgZ2FwOiB2YXIoLS1ib3hlbC1zcC14cyk7CiAgICBtYXJnaW4tdG9wOiB2YXIoLS1ib3hlbC1zcC14cyk7CiAgfQogIC5kZWZhdWx0LWNhcmQtdGVtcGxhdGUtLWlubmVyLmVkaXQgPiAubm90ZXMtZm9vdGVyW2RhdGEtc2NvcGVkY3NzLTc5ZDliMTk1ZTQtYzI2NTIwNmU1Nl0gewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbXV0ZWQpOwogIH0KICAvKiBrZWVwIGZpZWxkIGxhYmVscyBiZXNpZGUgdGhlaXIgaW5wdXRzLCB3cmFwcGluZyB0aGUgbGFiZWwgYWJvdmUgdGhlCiAgICAgaW5wdXQgb25seSB3aGVuIHRoZSBmaWVsZCdzIGNvbnRlbnQgYXJlYSBnZXRzIHRvbyBuYXJyb3cgKi8KICBbZGF0YS1zY29wZWRjc3MtNzlkOWIxOTVlNC1jMjY1MjA2ZTU2XSAuYm94ZWwtZmllbGQuaG9yaXpvbnRhbDpub3QoLnRoZW1lLWZpZWxkKSB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC13cmFwOiB3cmFwOwogICAgcm93LWdhcDogdmFyKC0tYm94ZWwtc3AteHMpOwogICAgY29udGFpbmVyLW5hbWU6IGhvcml6b250YWwtZmllbGQ7CiAgICBjb250YWluZXItdHlwZTogaW5saW5lLXNpemU7CiAgfQogIFtkYXRhLXNjb3BlZGNzcy03OWQ5YjE5NWU0LWMyNjUyMDZlNTZdIC5ib3hlbC1maWVsZC5ob3Jpem9udGFsOm5vdCgudGhlbWUtZmllbGQpID4gLmxhYmVsLWNvbnRhaW5lciB7CiAgICBmbGV4OiAwIDAgMjUlOwogICAgbWluLXdpZHRoOiA4cmVtOwogIH0KICBbZGF0YS1zY29wZWRjc3MtNzlkOWIxOTVlNC1jMjY1MjA2ZTU2XSAuYm94ZWwtZmllbGQuaG9yaXpvbnRhbDpub3QoLnRoZW1lLWZpZWxkKSA%2BIC5jb250ZW50IHsKICAgIGZsZXg6IDEgMSAxNHJlbTsKICAgIG1pbi13aWR0aDogMDsKICB9CiAgLyogaXNvbGF0ZWQgZmllbGRzIHJlbmRlciB0ZXh0IHJhdGhlciB0aGFuIGZvcm0gY29udHJvbHM6IGFsaWduIHRoZQogICAgIGxhYmVsIHdpdGggdGhlIHRvcCBvZiB0aGUgY29udGVudCBpbnN0ZWFkIG9mIGFuIGlucHV0J3MgZmlyc3QgbGluZSAqLwogIC5kZWZhdWx0LWNhcmQtdGVtcGxhdGUuaXNvbGF0ZWRbZGF0YS1zY29wZWRjc3MtNzlkOWIxOTVlNC1jMjY1MjA2ZTU2XQogICAgLmJveGVsLWZpZWxkLmhvcml6b250YWw6bm90KC50aGVtZS1maWVsZCkgPiAubGFiZWwtY29udGFpbmVyIHsKICAgIHBhZGRpbmctdG9wOiAwOwogIH0KICAuZGVmYXVsdC1jYXJkLXRlbXBsYXRlLmlzb2xhdGVkW2RhdGEtc2NvcGVkY3NzLTc5ZDliMTk1ZTQtYzI2NTIwNmU1Nl0KICAgIC5ib3hlbC1maWVsZC5ob3Jpem9udGFsOm5vdCgudGhlbWUtZmllbGQpID4gLmNvbnRlbnQgewogICAgLS1ib3hlbC1vdXRsaW5lLXdpZHRoOiAwOwogICAgYWxpZ24tc2VsZjogc3RhcnQ7CiAgfQogIC8qIGJlbG93IHRoZSBsYWJlbCBtaW4td2lkdGggKDhyZW0pIHBsdXMgdGhlIGNvbnRlbnQgZmxleC1iYXNpcyAoMTRyZW0pCiAgICAgdGhlIGxhYmVsIHdyYXBzIGFib3ZlIHRoZSBpbnB1dDogZ2l2ZSBpdCB0aGUgZnVsbCBsaW5lIHNvIGl0cyB0ZXh0CiAgICAgZG9lc24ndCB3cmFwIGluc2lkZSB0aGUgbGFiZWwgY29sdW1uLCBhbmQgZHJvcCB0aGUgcGFkZGluZyB0aGF0CiAgICAgYWxpZ25zIGl0IHdpdGggdGhlIGlucHV0J3MgZmlyc3QgbGluZSAqLwogIEBjb250YWluZXIgaG9yaXpvbnRhbC1maWVsZCAod2lkdGggPCAyMnJlbSkgewogICAgW2RhdGEtc2NvcGVkY3NzLTc5ZDliMTk1ZTQtYzI2NTIwNmU1Nl0gLmJveGVsLWZpZWxkLmhvcml6b250YWw6bm90KC50aGVtZS1maWVsZCkgPiAubGFiZWwtY29udGFpbmVyIHsKICAgICAgZmxleC1iYXNpczogMTAwJTsKICAgICAgcGFkZGluZy10b3A6IDA7CiAgICB9CiAgfQogIEBjb250YWluZXIgZGVmYXVsdC10ZW1wbGF0ZSAod2lkdGggPCA0MjVweCkgewogICAgLmRlZmF1bHQtY2FyZC10ZW1wbGF0ZS0taW5uZXJbZGF0YS1zY29wZWRjc3MtNzlkOWIxOTVlNC1jMjY1MjA2ZTU2XSB7CiAgICAgIC0tYm94ZWwtZGVmYXVsdC10ZW1wbGF0ZS1wYWRkaW5nOiB2YXIoLS1ib3hlbC1zcCk7CiAgICB9CiAgICBbZGF0YS1zY29wZWRjc3MtNzlkOWIxOTVlNC1jMjY1MjA2ZTU2XSAuYm94ZWwtZmllbGQuaG9yaXpvbnRhbDpub3QoLnRoZW1lLWZpZWxkKSB7CiAgICAgIG1pbi1oZWlnaHQ6IHVuc2V0OwogICAgfQogIH0KICAuaW4taXNvbGF0ZWQuZmllbGQtY29tcG9uZW50LWNhcmQuZml0dGVkLWZvcm1hdFtkYXRhLXNjb3BlZGNzcy03OWQ5YjE5NWU0LWMyNjUyMDZlNTZdIHsKICAgIG1pbi1oZWlnaHQ6IDY1cHg7CiAgfQo%3D.glimmer-scoped.css"],
1069
+ "imports": ["default-templates/card-info"]
1070
+ };
1071
+ (globalThis.__boxelBundledBaseIdentities ??= {})["default-templates/isolated-and-edit"] = { "default": DefaultCardDefTemplate };
1072
+ //#endregion
1073
+ //#region ../base/default-templates/markdown.gts
1074
+ function wrapTablesHtml(html) {
1075
+ if (!html) return "";
1076
+ if (!html.includes("<table")) return html;
1077
+ if (typeof DOMParser === "undefined") return html;
1078
+ let doc = new DOMParser().parseFromString(html, "text/html");
1079
+ doc.querySelectorAll("table:not(.table-wrapper table)").forEach((table) => {
1080
+ if (table.parentElement?.classList.contains("table-wrapper")) return;
1081
+ let wrapper = doc.createElement("div");
1082
+ wrapper.className = "table-wrapper";
1083
+ table.replaceWith(wrapper);
1084
+ wrapper.appendChild(table);
1085
+ });
1086
+ return doc.body.innerHTML;
1087
+ }
1088
+ var markdownRenderingWaiter = buildWaiter("markdown-rendering");
1089
+ function resolveUrl(raw, baseUrl) {
1090
+ try {
1091
+ return trimJsonExtension(resolveRRIReference(raw, baseUrl ? rri(baseUrl) : void 0));
1092
+ } catch {
1093
+ return trimJsonExtension(raw);
1094
+ }
1095
+ }
1096
+ var MarkDownTemplate = class extends Component$1 {
1097
+ static {
1098
+ decorateFieldV2(this.prototype, "monacoContextInternal", [tracked], function() {});
1099
+ }
1100
+ #monacoContextInternal = (initializeDeferredDecorator(this, "monacoContextInternal"), void 0);
1101
+ static {
1102
+ decorateFieldV2(this.prototype, "renderSlots", [tracked], function() {
1103
+ return [];
1104
+ });
1105
+ }
1106
+ #renderSlots = (initializeDeferredDecorator(this, "renderSlots"), void 0);
1107
+ _modifierHasRun = false;
1108
+ get isPrerenderContext() {
1109
+ return Boolean(globalThis.__boxelRenderContext);
1110
+ }
1111
+ get monacoContext() {
1112
+ if (this.isPrerenderContext) return;
1113
+ if (!this.monacoContextInternal && this.prepareMonacoContextTask) this.prepareMonacoContextTask.perform();
1114
+ return this.monacoContextInternal;
1115
+ }
1116
+ prepareMonacoContextTask = buildTask(() => ({
1117
+ context: this,
1118
+ generator: function* () {
1119
+ if (this.isPrerenderContext) return;
1120
+ let loadMonacoForMarkdown = globalThis.__loadMonacoForMarkdown;
1121
+ if (typeof loadMonacoForMarkdown !== "function") return;
1122
+ let monacoContext = yield loadMonacoForMarkdown();
1123
+ yield preloadMarkdownLanguages(this.args.content || "", monacoContext);
1124
+ this.monacoContextInternal = monacoContext;
1125
+ }
1126
+ }), { drop: true }, "prepareMonacoContextTask", null);
1127
+ get hasCodeBlocks() {
1128
+ return hasCodeBlocks(this.args.content);
1129
+ }
1130
+ get renderedHtml() {
1131
+ let content = this.args.content;
1132
+ if (isMarkdownOverRenderLimit(content)) return htmlSafe(markdownOversizedNoticeHtml(content));
1133
+ let html = markdownToHtml(content, {
1134
+ enableMonacoSyntaxHighlighting: !!(this.hasCodeBlocks && this.monacoContext),
1135
+ monaco: this.monacoContext
1136
+ });
1137
+ html = wrapTablesHtml(html);
1138
+ let hasBfmRefs = html.includes("data-boxel-bfm-type=");
1139
+ let katex = html.includes("math-placeholder") ? this.katexModule : null;
1140
+ let mermaidSvgs = html.includes("<pre class=\"mermaid\">") ? this.mermaidSvgs : null;
1141
+ if (typeof DOMParser !== "undefined" && (hasBfmRefs || katex || mermaidSvgs && mermaidSvgs.size)) {
1142
+ let doc = new DOMParser().parseFromString(html, "text/html");
1143
+ if (hasBfmRefs) doc.querySelectorAll("[data-boxel-bfm-inline-ref], [data-boxel-bfm-block-ref]").forEach((el) => el.textContent = "");
1144
+ if (katex) processKatexPlaceholders(doc, katex);
1145
+ if (mermaidSvgs && mermaidSvgs.size) replaceMermaidSvgs(doc, mermaidSvgs);
1146
+ html = doc.body.innerHTML;
1147
+ }
1148
+ return htmlSafe(html);
1149
+ }
1150
+ static {
1151
+ decorateMethodV2(this.prototype, "renderedHtml", [cached]);
1152
+ }
1153
+ captureCardSlots = modifier((element, _positional) => {
1154
+ let linkedCards = this.args.linkedCards;
1155
+ let linkedFiles = this.args.linkedFiles;
1156
+ let baseUrl = this.args.cardReferenceBaseUrl;
1157
+ let pendingUpdate = false;
1158
+ let pendingToken = void 0;
1159
+ let hasLinkedData = linkedCards != null && linkedCards.length > 0 || linkedFiles != null && linkedFiles.length > 0;
1160
+ let showFallback = this._modifierHasRun || hasLinkedData;
1161
+ this._modifierHasRun = true;
1162
+ let collectSlots = () => {
1163
+ let cardsByUrl = /* @__PURE__ */ new Map();
1164
+ if (linkedCards?.length) {
1165
+ for (let card of linkedCards) if (card?.id) cardsByUrl.set(card.id, card);
1166
+ }
1167
+ let filesByUrl = /* @__PURE__ */ new Map();
1168
+ if (linkedFiles?.length) {
1169
+ for (let file of linkedFiles) if (file?.id) filesByUrl.set(trimJsonExtension(file.id), file);
1170
+ }
1171
+ let slots = [];
1172
+ for (let el of Array.from(element.querySelectorAll("[data-boxel-bfm-type=\"card\"], [data-boxel-bfm-type=\"file\"]"))) {
1173
+ let refType = el.dataset.boxelBfmType === "file" ? "file" : "card";
1174
+ let isInline = !!el.dataset.boxelBfmInlineRef;
1175
+ let rawUrl = el.dataset.boxelBfmInlineRef ?? el.dataset.boxelBfmBlockRef ?? "";
1176
+ if (!rawUrl) continue;
1177
+ let kind = isInline ? "inline" : "block";
1178
+ let derived = bfmRefFormatAndSize(el.dataset.boxelBfmFormat, el.dataset.boxelBfmWidth, el.dataset.boxelBfmHeight, isInline ? "atom" : "embedded");
1179
+ let format = derived.format;
1180
+ let sizeStyle = derived.sizeStyle;
1181
+ let styleRaw = bfmResolvedEmbedStyle(format, kind, sizeStyle);
1182
+ let style = styleRaw ? htmlSafe(styleRaw) : void 0;
1183
+ let resolvedUrl = resolveUrl(rawUrl, baseUrl);
1184
+ let instance = refType === "file" ? filesByUrl.get(resolvedUrl) : cardsByUrl.get(resolvedUrl);
1185
+ if (instance) {
1186
+ slots.push({
1187
+ element: el,
1188
+ refType,
1189
+ kind,
1190
+ state: "resolved",
1191
+ format,
1192
+ instance,
1193
+ style
1194
+ });
1195
+ continue;
1196
+ }
1197
+ if (!showFallback) slots.push({
1198
+ element: el,
1199
+ refType,
1200
+ kind,
1201
+ state: "loading",
1202
+ format,
1203
+ style,
1204
+ url: rawUrl
1205
+ });
1206
+ else slots.push({
1207
+ element: el,
1208
+ refType,
1209
+ kind,
1210
+ state: "unresolved",
1211
+ format,
1212
+ style,
1213
+ url: rawUrl,
1214
+ typeName: refType === "file" ? fileNameFromUrl(rawUrl) : cardTypeName(rawUrl)
1215
+ });
1216
+ }
1217
+ return slots;
1218
+ };
1219
+ let updateSlots = () => {
1220
+ pendingUpdate = false;
1221
+ let token = pendingToken;
1222
+ pendingToken = void 0;
1223
+ try {
1224
+ let nextSlots = collectSlots();
1225
+ if (nextSlots.length !== this.renderSlots.length || nextSlots.some((slot, index) => {
1226
+ let current = this.renderSlots[index];
1227
+ if (!current || current.element !== slot.element) return true;
1228
+ if (current.refType !== slot.refType) return true;
1229
+ if (current.kind !== slot.kind) return true;
1230
+ if (current.state !== slot.state) return true;
1231
+ if (current.format !== slot.format) return true;
1232
+ if (current.instance !== slot.instance) return true;
1233
+ if (current.url !== slot.url) return true;
1234
+ return String(current.style ?? "") !== String(slot.style ?? "");
1235
+ })) this.renderSlots = nextSlots;
1236
+ } finally {
1237
+ markdownRenderingWaiter.endAsync(token);
1238
+ }
1239
+ };
1240
+ let scheduleUpdate = () => {
1241
+ if (pendingUpdate) return;
1242
+ pendingUpdate = true;
1243
+ pendingToken = markdownRenderingWaiter.beginAsync();
1244
+ scheduleOnce("afterRender", this, updateSlots);
1245
+ };
1246
+ scheduleUpdate();
1247
+ let endPendingToken = () => {
1248
+ let token = pendingToken;
1249
+ pendingToken = void 0;
1250
+ markdownRenderingWaiter.endAsync(token);
1251
+ };
1252
+ if (typeof MutationObserver === "undefined") return endPendingToken;
1253
+ let observer = new MutationObserver(scheduleUpdate);
1254
+ observer.observe(element, {
1255
+ childList: true,
1256
+ subtree: true
1257
+ });
1258
+ return () => {
1259
+ observer.disconnect();
1260
+ endPendingToken();
1261
+ };
1262
+ });
1263
+ static {
1264
+ decorateFieldV2(this.prototype, "_katex", [tracked], function() {
1265
+ return null;
1266
+ });
1267
+ }
1268
+ #_katex = (initializeDeferredDecorator(this, "_katex"), void 0);
1269
+ get katexModule() {
1270
+ if (this.isPrerenderContext) return null;
1271
+ if (!this._katex) this._loadKatexTask.perform();
1272
+ return this._katex;
1273
+ }
1274
+ _loadKatexTask = buildTask(() => ({
1275
+ context: this,
1276
+ generator: function* () {
1277
+ let token = markdownRenderingWaiter.beginAsync();
1278
+ try {
1279
+ let loadKatex = globalThis.__loadKatex;
1280
+ if (typeof loadKatex !== "function") return;
1281
+ this._katex = yield loadKatex();
1282
+ } finally {
1283
+ markdownRenderingWaiter.endAsync(token);
1284
+ }
1285
+ }
1286
+ }), { drop: true }, "_loadKatexTask", null);
1287
+ static {
1288
+ decorateFieldV2(this.prototype, "_mermaidSvgs", [tracked], function() {
1289
+ return /* @__PURE__ */ new Map();
1290
+ });
1291
+ }
1292
+ #_mermaidSvgs = (initializeDeferredDecorator(this, "_mermaidSvgs"), void 0);
1293
+ _mermaidIdCounter = 0;
1294
+ get mermaidSvgs() {
1295
+ if (this.isPrerenderContext) return this._mermaidSvgs;
1296
+ if (!this._mermaidSvgs.size) this._renderMermaidTask.perform();
1297
+ return this._mermaidSvgs;
1298
+ }
1299
+ _renderMermaidTask = buildTask(() => ({
1300
+ context: this,
1301
+ generator: function* () {
1302
+ let blocks = extractMermaidBlocks(this.args.content || "");
1303
+ if (!blocks.length) return;
1304
+ let loadMermaid = globalThis.__loadMermaid;
1305
+ if (typeof loadMermaid !== "function") return;
1306
+ let token = markdownRenderingWaiter.beginAsync();
1307
+ try {
1308
+ let mermaid = yield loadMermaid();
1309
+ mermaid.initialize({
1310
+ startOnLoad: false,
1311
+ securityLevel: "strict",
1312
+ theme: "default"
1313
+ });
1314
+ let svgs = /* @__PURE__ */ new Map();
1315
+ for (let block of blocks) try {
1316
+ let { svg } = yield mermaid.render(`mermaid-${++this._mermaidIdCounter}`, block);
1317
+ svgs.set(block, svg);
1318
+ } catch {}
1319
+ this._mermaidSvgs = svgs;
1320
+ } finally {
1321
+ markdownRenderingWaiter.endAsync(token);
1322
+ }
1323
+ }
1324
+ }), { drop: true }, "_renderMermaidTask", null);
1325
+ getCardComponent = (card) => getComponent(card);
1326
+ static {
1327
+ setComponentTemplate(templateFactory({
1328
+ "id": "W0WyggGl",
1329
+ "block": "[[[8,[32,0],[[24,0,\"monaco-code-surface\"],[24,\"data-scopedcss-1502f88419-1b8f984b8f\",\"\"],[4,[30,0,[\"captureCardSlots\"]],[[30,0,[\"renderedHtml\"]],[30,1],[30,2]],null]],null,[[\"default\"],[[[[1,\"\\n \"],[1,[30,0,[\"renderedHtml\"]]],[1,\"\\n\"]],[]]]]],[1,\"\\n\"],[42,[28,[31,1],[[28,[31,1],[[30,0,[\"renderSlots\"]]],null]],null],\"element\",[[[40,[[[41,[28,[32,1],[[30,3,[\"state\"]],\"resolved\"],null],[[[1,\" \"],[8,[32,2],[[24,\"data-scopedcss-1502f88419-1b8f984b8f\",\"\"]],null,[[\"default\"],[[[[1,\"\\n\"],[44,[[28,[30,0,[\"getCardComponent\"]],[[30,3,[\"instance\"]]],null]],[[[41,[28,[32,1],[[30,3,[\"kind\"]],\"inline\"],null],[[[1,\" \"],[11,1],[16,0,[29,[\"markdown-bfm-card-slot\\n \",[52,[28,[32,1],[[30,3,[\"format\"]],\"atom\"],null],\"markdown-bfm-card-slot--inline\",\"markdown-bfm-card-slot--inline-embed\"],\"\\n \",[52,[30,3,[\"style\"]],\"markdown-bfm-card-slot--fitted\"]]]],[16,5,[30,3,[\"style\"]]],[16,\"data-test-markdown-bfm-inline-file\",[52,[28,[32,1],[[30,3,[\"refType\"]],\"file\"],null],\"\"]],[16,\"data-test-markdown-bfm-inline-card\",[52,[28,[32,1],[[30,3,[\"refType\"]],\"card\"],null],\"\"]],[24,\"data-scopedcss-1502f88419-1b8f984b8f\",\"\"],[4,[30,4,[\"cardComponentModifier\"]],null,[[\"cardId\",\"format\",\"fieldType\",\"fieldName\"],[[30,3,[\"instance\",\"id\"]],\"data\",[27],[27]]]],[12],[1,\"\\n \"],[8,[30,5],[[24,\"data-scopedcss-1502f88419-1b8f984b8f\",\"\"]],[[\"@format\",\"@displayContainer\"],[[30,3,[\"format\"]],false]],null],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],[[[1,\" \"],[11,0],[16,0,[29,[\"markdown-bfm-card-slot markdown-bfm-card-slot--block\\n \",[52,[30,3,[\"style\"]],\"markdown-bfm-card-slot--fitted\"]]]],[16,5,[30,3,[\"style\"]]],[16,\"data-test-markdown-bfm-block-file\",[52,[28,[32,1],[[30,3,[\"refType\"]],\"file\"],null],\"\"]],[16,\"data-test-markdown-bfm-block-card\",[52,[28,[32,1],[[30,3,[\"refType\"]],\"card\"],null],\"\"]],[24,\"data-scopedcss-1502f88419-1b8f984b8f\",\"\"],[4,[30,4,[\"cardComponentModifier\"]],null,[[\"cardId\",\"format\",\"fieldType\",\"fieldName\"],[[30,3,[\"instance\",\"id\"]],\"data\",[27],[27]]]],[12],[1,\"\\n \"],[8,[30,5],[[24,\"data-scopedcss-1502f88419-1b8f984b8f\",\"\"]],[[\"@format\",\"@displayContainer\"],[[30,3,[\"format\"]],false]],null],[1,\"\\n \"],[13],[1,\"\\n\"]],[]]]],[5]]],[1,\" \"]],[4]]]]],[1,\"\\n\"]],[]],[[[41,[28,[32,1],[[30,3,[\"state\"]],\"loading\"],null],[[[41,[28,[32,1],[[30,3,[\"kind\"]],\"inline\"],null],[[[41,[28,[32,1],[[30,3,[\"format\"]],\"atom\"],null],[[[1,\" \"],[10,1],[14,0,\"markdown-bfm-loading markdown-bfm-loading--inline\"],[14,\"aria-hidden\",\"true\"],[14,\"data-test-markdown-bfm-loading-inline\",\"\"],[14,\"data-scopedcss-1502f88419-1b8f984b8f\",\"\"],[12],[13],[1,\"\\n\"]],[]],[[[1,\" \"],[10,1],[15,0,[29,[\"markdown-bfm-loading markdown-bfm-loading--inline-embed markdown-bfm-loading--\",[30,3,[\"format\"]]]]],[15,5,[30,3,[\"style\"]]],[14,\"aria-hidden\",\"true\"],[14,\"data-test-markdown-bfm-loading-inline\",\"\"],[14,\"data-scopedcss-1502f88419-1b8f984b8f\",\"\"],[12],[13],[1,\"\\n\"]],[]]]],[]],[[[1,\" \"],[10,0],[15,0,[29,[\"markdown-bfm-loading markdown-bfm-loading--block markdown-bfm-loading--\",[30,3,[\"format\"]]]]],[15,5,[30,3,[\"style\"]]],[14,\"aria-hidden\",\"true\"],[14,\"data-test-markdown-bfm-loading-block\",\"\"],[14,\"data-scopedcss-1502f88419-1b8f984b8f\",\"\"],[12],[13],[1,\"\\n\"]],[]]]],[]],[[[41,[28,[32,1],[[30,3,[\"kind\"]],\"inline\"],null],[[[41,[28,[32,1],[[30,3,[\"format\"]],\"atom\"],null],[[[1,\" \"],[10,1],[14,0,\"markdown-bfm-broken markdown-bfm-broken--inline\"],[15,\"title\",[30,3,[\"url\"]]],[14,\"data-test-markdown-bfm-unresolved-inline\",\"\"],[14,\"data-scopedcss-1502f88419-1b8f984b8f\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"markdown-bfm-broken-label\"],[14,\"data-scopedcss-1502f88419-1b8f984b8f\",\"\"],[12],[1,\"\\n \"],[8,[32,3],[[24,\"width\",\"12\"],[24,\"height\",\"12\"],[24,\"data-scopedcss-1502f88419-1b8f984b8f\",\"\"]],null,null],[1,\"\\n \"],[1,[30,3,[\"typeName\"]]],[1,\"\\n \"],[13],[1,\"\\n \"],[13],[1,\"\\n\"]],[]],[[[1,\" \"],[10,1],[15,0,[29,[\"markdown-bfm-broken markdown-bfm-broken--inline-embed markdown-bfm-broken--\",[30,3,[\"format\"]]]]],[15,5,[30,3,[\"style\"]]],[15,\"title\",[30,3,[\"url\"]]],[14,\"data-test-markdown-bfm-unresolved-inline\",\"\"],[14,\"data-scopedcss-1502f88419-1b8f984b8f\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"markdown-bfm-broken-label\"],[14,\"data-scopedcss-1502f88419-1b8f984b8f\",\"\"],[12],[1,\"\\n \"],[8,[32,3],[[24,\"width\",\"14\"],[24,\"height\",\"14\"],[24,\"data-scopedcss-1502f88419-1b8f984b8f\",\"\"]],null,null],[1,\"\\n \"],[1,[30,3,[\"typeName\"]]],[1,\"\\n \"],[13],[1,\"\\n \"],[13],[1,\"\\n\"]],[]]]],[]],[[[1,\" \"],[10,0],[15,0,[29,[\"markdown-bfm-broken markdown-bfm-broken--block markdown-bfm-broken--\",[30,3,[\"format\"]]]]],[15,5,[30,3,[\"style\"]]],[15,\"title\",[30,3,[\"url\"]]],[14,\"data-test-markdown-bfm-unresolved-block\",\"\"],[14,\"data-scopedcss-1502f88419-1b8f984b8f\",\"\"],[12],[1,\"\\n \"],[10,1],[14,0,\"markdown-bfm-broken-label\"],[14,\"data-scopedcss-1502f88419-1b8f984b8f\",\"\"],[12],[1,\"\\n \"],[8,[32,3],[[24,\"width\",\"14\"],[24,\"height\",\"14\"],[24,\"data-scopedcss-1502f88419-1b8f984b8f\",\"\"]],null,null],[1,\"\\n \"],[1,[30,3,[\"typeName\"]]],[1,\"\\n \"],[13],[1,\"\\n \"],[13],[1,\"\\n\"]],[]]],[1,\" \"]],[]]]],[]]]],[]],\"%cursor:0%\",[28,[31,3],[[30,3,[\"element\"]]],null],null]],[3]],null]],[\"@linkedCards\",\"@linkedFiles\",\"slot\",\"context\",\"RefComponent\"],[\"each\",\"-track-array\",\"in-element\",\"-in-el-null\",\"if\",\"let\"]]",
1330
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/default-templates/markdown.gts",
1331
+ "scope": () => [
1332
+ MarkdownContentShell,
1333
+ eq,
1334
+ CardContextConsumer,
1335
+ IconComponent$13
1336
+ ],
1337
+ "isStrictMode": true
1338
+ }), this);
1339
+ }
1340
+ };
1341
+ (globalThis.__boxelBundledBaseScopedCSS ??= {})["default-templates/markdown"] = {
1342
+ "css": ["./markdown.gts.CiAgLyogRXZlcnl0aGluZyB2aXN1YWwgbGl2ZXMgaW4gTWFya2Rvd25Db250ZW50U2hlbGwgKGJveGVsLXVpKSDigJQgdGhlCiAgICAgc2luZ2xlIHNvdXJjZSBvZiB0aGUgbWFya2Rvd24gc3R5bGVzaGVldCBhbmQgdGhlIGAtLW1hcmtkb3duLSpgCiAgICAgc3R5bGluZyBjb250cmFjdC4gVGhpcyBibG9jayBjYXJyaWVzIG9ubHkgd2hhdCBpcyBzcGVjaWZpYyB0byB0aGlzCiAgICAgcmVuZGVyZXI6IHRoZSBNb25hY28gZWRpdG9yIHN1cmZhY2UgdmFyaWFibGVzIGl0cyBzeW50YXgtaGlnaGxpZ2h0ZWQKICAgICBjb2RlIGJsb2NrcyByZWx5IG9uLCB3aGljaCB0aGUgc2hlbGwncyBgcHJlYCBydWxlcyBwaWNrIHVwIHdoZW4KICAgICBkZWZpbmVkIGFuZCBmYWxsIHBhc3QgdG8gdGhlIG11dGVkIHN1cmZhY2Ugd2hlbiBub3QuICovCiAgQGxheWVyIGJhc2VDb21wb25lbnQgewogICAgLm1vbmFjby1jb2RlLXN1cmZhY2VbZGF0YS1zY29wZWRjc3MtMTUwMmY4ODQxOS0xYjhmOTg0YjhmXSB7CiAgICAgIC0tdnNjb2RlLWVkaXRvci1iYWNrZ3JvdW5kOiB2YXIoLS1ib3hlbC1kYXJrKTsKICAgICAgLS12c2NvZGUtZWRpdG9yLWZvcmVncm91bmQ6IHZhcigtLWJveGVsLWxpZ2h0KTsKICAgICAgLS12c2NvZGUtZWRpdG9yQ29kZUxlbnMtbGluZUhlaWdodDogMTVweDsKICAgICAgLS12c2NvZGUtZWRpdG9yQ29kZUxlbnMtZm9udFNpemU6IDEwcHg7CiAgICAgIC0tdnNjb2RlLWVkaXRvckNvZGVMZW5zLWZvbnRGZWF0dXJlU2V0dGluZ3M6ICdsaWdhJyBvZmYsICdjYWx0JyBvZmY7CiAgICB9CiAgfQo%3D.glimmer-scoped.css"],
1343
+ "imports": ["card-api", "field-component"]
1344
+ };
1345
+ (globalThis.__boxelBundledBaseIdentities ??= {})["default-templates/markdown"] = { "default": MarkDownTemplate };
1346
+ //#endregion
1347
+ //#region ../base/default-templates/markdown-fallback.gts
1348
+ function resolveConverter() {
1349
+ if (typeof globalThis === "undefined") return;
1350
+ let fn = globalThis.__boxelHtmlToMarkdown;
1351
+ return typeof fn === "function" ? fn : void 0;
1352
+ }
1353
+ var DefaultMarkdownFallbackTemplate = class extends Component$1 {
1354
+ static {
1355
+ decorateFieldV2(this.prototype, "markdown", [tracked], function() {
1356
+ return "";
1357
+ });
1358
+ }
1359
+ #markdown = (initializeDeferredDecorator(this, "markdown"), void 0);
1360
+ get isField() {
1361
+ let cls = this.args.cardOrField;
1362
+ return Boolean(cls?.isFieldDef);
1363
+ }
1364
+ get fallbackFormat() {
1365
+ return this.isField ? "embedded" : "isolated";
1366
+ }
1367
+ get FallbackComponent() {
1368
+ let cls = this.args.cardOrField;
1369
+ return this.isField ? cls.embedded : cls.isolated;
1370
+ }
1371
+ get nestedDefaultFormats() {
1372
+ return {
1373
+ fieldDef: "embedded",
1374
+ cardDef: "fitted"
1375
+ };
1376
+ }
1377
+ captureAndConvert = modifier((element) => {
1378
+ let convert = () => {
1379
+ if (!element.isConnected) return;
1380
+ let converter = resolveConverter();
1381
+ let html = element.innerHTML;
1382
+ let next = converter ? converter(html) : (element.textContent ?? "").trim();
1383
+ if (next !== this.markdown) this.markdown = next;
1384
+ };
1385
+ let schedule = () => scheduleOnce("afterRender", this, convert);
1386
+ schedule();
1387
+ if (typeof MutationObserver === "undefined") return;
1388
+ let observer = new MutationObserver(schedule);
1389
+ observer.observe(element, {
1390
+ childList: true,
1391
+ subtree: true,
1392
+ characterData: true
1393
+ });
1394
+ return () => observer.disconnect();
1395
+ });
1396
+ static {
1397
+ setComponentTemplate(templateFactory({
1398
+ "id": "bxJIQ6OY",
1399
+ "block": "[[[11,0],[24,0,\"markdown-fallback-source\"],[24,\"aria-hidden\",\"true\"],[24,\"data-markdown-fallback-source\",\"\"],[24,\"data-scopedcss-68c973b8d9-a5bbf73960\",\"\"],[4,[30,0,[\"captureAndConvert\"]],null,null],[12],[1,\"\\n \"],[8,[32,0],[[24,\"data-scopedcss-68c973b8d9-a5bbf73960\",\"\"]],[[\"@value\"],[[30,0,[\"nestedDefaultFormats\"]]]],[[\"default\"],[[[[1,\"\\n \"],[8,[30,0,[\"FallbackComponent\"]],[[24,\"data-scopedcss-68c973b8d9-a5bbf73960\",\"\"]],[[\"@model\",\"@fields\",\"@format\",\"@cardOrField\"],[[30,1],[30,2],[30,0,[\"fallbackFormat\"]],[30,3]]],null],[1,\"\\n \"]],[]]]]],[1,\"\\n\"],[13],[1,\"\\n\"],[10,0],[14,\"data-markdown-output\",\"\"],[14,\"data-scopedcss-68c973b8d9-a5bbf73960\",\"\"],[12],[1,[30,0,[\"markdown\"]]],[13],[1,\"\\n\"]],[\"@model\",\"@fields\",\"@cardOrField\"],[]]",
1400
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/default-templates/markdown-fallback.gts",
1401
+ "scope": () => [DefaultFormatsProvider],
1402
+ "isStrictMode": true
1403
+ }), this);
1404
+ }
1405
+ };
1406
+ (globalThis.__boxelBundledBaseScopedCSS ??= {})["default-templates/markdown-fallback"] = {
1407
+ "css": ["./markdown-fallback.gts.CiAgLm1hcmtkb3duLWZhbGxiYWNrLXNvdXJjZVtkYXRhLXNjb3BlZGNzcy02OGM5NzNiOGQ5LWE1YmJmNzM5NjBdIHsKICAgIC8qIEhpZGUgdGhlIEhUTUwgc291cmNlIHRyZWUgZnJvbSBpbnRlcmFjdGl2ZSB2aWV3ZXJzOyB0aGUgbW9kaWZpZXIKICAgICAgIHN0aWxsIHJlYWRzIGl0cyBgaW5uZXJIVE1MYCBiZWZvcmUgY29udmVyc2lvbi4gUHJlcmVuZGVyIGV4dHJhY3RzCiAgICAgICB0ZXh0IGZyb20gYFtkYXRhLW1hcmtkb3duLW91dHB1dF1gIHNwZWNpZmljYWxseSwgc28gdGhlIGhpZGRlbgogICAgICAgc291cmNlIGRvZXMgbm90IGNvbnRhbWluYXRlIHRoZSBjYXB0dXJlZCBtYXJrZG93bi4gKi8KICAgIGRpc3BsYXk6IG5vbmU7CiAgfQo%3D.glimmer-scoped.css"],
1408
+ "imports": ["field-component"]
1409
+ };
1410
+ (globalThis.__boxelBundledBaseIdentities ??= {})["default-templates/markdown-fallback"] = { "default": DefaultMarkdownFallbackTemplate };
1411
+ //#endregion
1412
+ //#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/letter-case.js
1413
+ var IconComponent$7 = setComponentTemplate(templateFactory({
1414
+ "id": "B+m//xCd",
1415
+ "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-letter-case\"],[24,\"viewBox\",\"0 0 24 24\"],[17,1],[12],[10,\"path\"],[14,\"stroke\",\"none\"],[14,\"d\",\"M0 0h24v24H0z\"],[12],[13],[10,\"path\"],[14,\"d\",\"M14 15.5a3.5 3.5 0 1 0 7 0 3.5 3.5 0 1 0-7 0M3 19V8.5a3.5 3.5 0 0 1 7 0V19M3 13h7M21 12v7\"],[12],[13],[13],[1,\"\\n\"]],[\"&attrs\"],[]]",
1416
+ "moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/letter-case.gts",
1417
+ "isStrictMode": true
1418
+ }), templateOnly());
1419
+ IconComponent$7.name = "letter-case";
1420
+ //#endregion
1421
+ //#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/align-box-left-middle.js
1422
+ var IconComponent$6 = setComponentTemplate(templateFactory({
1423
+ "id": "DNil8crG",
1424
+ "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-align-box-left-middle\"],[24,\"viewBox\",\"0 0 24 24\"],[17,1],[12],[10,\"path\"],[14,\"stroke\",\"none\"],[14,\"d\",\"M0 0h24v24H0z\"],[12],[13],[10,\"path\"],[14,\"d\",\"M3 5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2zM9 15H7M13 12H7M11 9H7\"],[12],[13],[13],[1,\"\\n\"]],[\"&attrs\"],[]]",
1425
+ "moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/align-box-left-middle.gts",
1426
+ "isStrictMode": true
1427
+ }), templateOnly());
1428
+ IconComponent$6.name = "align-box-left-middle";
1429
+ //#endregion
1430
+ //#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/rectangle-ellipsis.js
1431
+ var IconComponent$5 = setComponentTemplate(templateFactory({
1432
+ "id": "kXqZDfjJ",
1433
+ "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-rectangle-ellipsis\"],[24,\"viewBox\",\"0 0 24 24\"],[17,1],[12],[10,\"rect\"],[14,\"width\",\"20\"],[14,\"height\",\"12\"],[14,\"x\",\"2\"],[14,\"y\",\"6\"],[14,\"rx\",\"2\"],[12],[13],[10,\"path\"],[14,\"d\",\"M12 12h.01M17 12h.01M7 12h.01\"],[12],[13],[13],[1,\"\\n\"]],[\"&attrs\"],[]]",
1434
+ "moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/rectangle-ellipsis.gts",
1435
+ "isStrictMode": true
1436
+ }), templateOnly());
1437
+ IconComponent$5.name = "rectangle-ellipsis";
1438
+ //#endregion
1439
+ //#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/align-left.js
1440
+ var IconComponent$4 = setComponentTemplate(templateFactory({
1441
+ "id": "dPz7hRdw",
1442
+ "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-align-left\"],[24,\"viewBox\",\"0 0 24 24\"],[17,1],[12],[10,\"path\"],[14,\"d\",\"M21 5H3M15 12H3M17 19H3\"],[12],[13],[13],[1,\"\\n\"]],[\"&attrs\"],[]]",
1443
+ "moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/align-left.gts",
1444
+ "isStrictMode": true
1445
+ }), templateOnly());
1446
+ IconComponent$4.name = "align-left";
1447
+ //#endregion
1448
+ //#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/import.js
1449
+ var IconComponent$3 = setComponentTemplate(templateFactory({
1450
+ "id": "JTL91DdO",
1451
+ "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-import\"],[24,\"viewBox\",\"0 0 24 24\"],[17,1],[12],[10,\"path\"],[14,\"d\",\"M12 3v12M8 11l4 4 4-4\"],[12],[13],[10,\"path\"],[14,\"d\",\"M8 5H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-4\"],[12],[13],[13],[1,\"\\n\"]],[\"&attrs\"],[]]",
1452
+ "moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/import.gts",
1453
+ "isStrictMode": true
1454
+ }), templateOnly());
1455
+ IconComponent$3.name = "import";
1456
+ //#endregion
1457
+ //#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/file-pencil.js
1458
+ var IconComponent$2 = setComponentTemplate(templateFactory({
1459
+ "id": "kNR29m+n",
1460
+ "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-file-pencil\"],[24,\"viewBox\",\"0 0 24 24\"],[17,1],[12],[10,\"path\"],[14,\"stroke\",\"none\"],[14,\"d\",\"M0 0h24v24H0z\"],[12],[13],[10,\"path\"],[14,\"d\",\"M14 3v4a1 1 0 0 0 1 1h4\"],[12],[13],[10,\"path\"],[14,\"d\",\"M17 21H7a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7l5 5v11a2 2 0 0 1-2 2\"],[12],[13],[10,\"path\"],[14,\"d\",\"m10 18 5-5a1.414 1.414 0 0 0-2-2l-5 5v2z\"],[12],[13],[13],[1,\"\\n\"]],[\"&attrs\"],[]]",
1461
+ "moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/file-pencil.gts",
1462
+ "isStrictMode": true
1463
+ }), templateOnly());
1464
+ IconComponent$2.name = "file-pencil";
1465
+ //#endregion
1466
+ //#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/wand.js
1467
+ var IconComponent$1 = setComponentTemplate(templateFactory({
1468
+ "id": "TfLWPpHI",
1469
+ "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-wand\"],[24,\"viewBox\",\"0 0 24 24\"],[17,1],[12],[10,\"path\"],[14,\"d\",\"M15 4V2M15 16v-2M8 9h2M20 9h2M17.8 11.8 19 13M15 9h.01M17.8 6.2 19 5M3 21l9-9M12.2 6.2 11 5\"],[12],[13],[13],[1,\"\\n\"]],[\"&attrs\"],[]]",
1470
+ "moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/wand.gts",
1471
+ "isStrictMode": true
1472
+ }), templateOnly());
1473
+ IconComponent$1.name = "wand";
1474
+ //#endregion
1475
+ //#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/hash.js
1476
+ var IconComponent = setComponentTemplate(templateFactory({
1477
+ "id": "7O9Duwe4",
1478
+ "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-hash\"],[24,\"viewBox\",\"0 0 24 24\"],[17,1],[12],[10,\"path\"],[14,\"d\",\"M4 9h16M4 15h16M10 3 8 21M16 3l-2 18\"],[12],[13],[13],[1,\"\\n\"]],[\"&attrs\"],[]]",
1479
+ "moduleName": "/home/runner/work/boxel/boxel/packages/boxel-icons/src/icons/hash.gts",
1480
+ "isStrictMode": true
1481
+ }), templateOnly());
1482
+ IconComponent.name = "hash";
1483
+ //#endregion
1484
+ //#region ../base/menu-items.ts
1485
+ var GENERATED_EXAMPLE_COUNT = 3;
1486
+ function isWorkspaceIndexCard(card) {
1487
+ return isRealmIndexCardId(typeof card.id === "string" ? rri(card.id) : void 0, instanceRealmId(card));
1488
+ }
1489
+ function makeToggleTemplateItem(card, useBaseTemplate, action) {
1490
+ return {
1491
+ label: "Toggle Standard View",
1492
+ action: () => action(!useBaseTemplate),
1493
+ icon: IconComponent$14,
1494
+ checked: !!useBaseTemplate,
1495
+ disabled: !card.id
1496
+ };
1497
+ }
1498
+ function getDefaultCardMenuItems(card, params) {
1499
+ let cardId = card.id;
1500
+ let menuItems = [];
1501
+ if ([
1502
+ "interact",
1503
+ "code-mode-preview",
1504
+ "code-mode-playground"
1505
+ ].includes(params.menuContext)) menuItems.push({
1506
+ label: "Copy Card URL",
1507
+ action: () => copyCardURLToClipboard(cardId),
1508
+ icon: IconComponent$23,
1509
+ disabled: !cardId
1510
+ });
1511
+ if (params.menuContext === "interact") {
1512
+ menuItems.push({
1513
+ label: "Copy as Markdown",
1514
+ action: () => new CopyCardAsMarkdownTool(params.toolContext).execute({ cardId }),
1515
+ icon: IconComponent$24,
1516
+ disabled: !cardId
1517
+ });
1518
+ if (cardId && params.canEdit && params.format === "edit" && card.constructor.hasCustomEditTemplate) menuItems.push(makeToggleTemplateItem(card, params.useBaseTemplate, (useBaseTemplate) => params.cardCrudFunctions.editCard?.(card, { useBaseTemplate })));
1519
+ if (cardId && params.format === "isolated" && card.constructor.hasCustomIsolatedTemplate) menuItems.push(makeToggleTemplateItem(card, params.useBaseTemplate, (useBaseTemplate) => params.cardCrudFunctions.viewCard?.(card, "isolated", { useBaseTemplate })));
1520
+ if (!isWorkspaceIndexCard(card) && cardId && params.canEdit) menuItems.push({
1521
+ label: "New Card of This Type",
1522
+ action: () => {
1523
+ if (!card) return;
1524
+ let ref = identifyCard(card.constructor);
1525
+ if (!ref) return;
1526
+ params.cardCrudFunctions.createCard?.(ref, void 0, { realmURL: card[realmURL] });
1527
+ },
1528
+ icon: cardTypeIcon(card),
1529
+ disabled: !card
1530
+ }, {
1531
+ label: "Delete",
1532
+ action: () => params.cardCrudFunctions.deleteCard?.(card),
1533
+ icon: IconComponent$15,
1534
+ dangerous: true,
1535
+ disabled: !card.id
1536
+ });
1537
+ }
1538
+ if (params.menuContext === "ai-assistant" && params.menuContextParams.canEditActiveRealm) menuItems.push({
1539
+ label: "Copy to Workspace",
1540
+ action: async () => {
1541
+ const { newCardId } = await new CopyCardToRealmTool(params.toolContext).execute({
1542
+ sourceCard: card,
1543
+ targetRealm: params.menuContextParams.activeRealmURL
1544
+ });
1545
+ await new ShowCardTool(params.toolContext).execute({ cardId: newCardId });
1546
+ },
1547
+ icon: IconComponent$25
1548
+ });
1549
+ if (["code-mode-preview", "code-mode-playground"].includes(params.menuContext)) menuItems.push({
1550
+ label: "Open in Interact Mode",
1551
+ action: () => {
1552
+ new OpenInInteractModeTool(params.toolContext).execute({
1553
+ cardId,
1554
+ format: params.format === "edit" ? "edit" : "isolated"
1555
+ });
1556
+ },
1557
+ icon: IconComponent$14,
1558
+ disabled: !card.id
1559
+ });
1560
+ if (params.menuContext === "code-mode-playground") {
1561
+ menuItems = [...menuItems, ...getSampleDataMenuItems(card, params)];
1562
+ if (cardId && !isWorkspaceIndexCard(card)) menuItems.push({
1563
+ label: `Create Listing`,
1564
+ action: async () => {
1565
+ const codeRef = resolveAdoptsFrom(card);
1566
+ if (!codeRef) throw new Error("Unable to resolve codeRef from card");
1567
+ const targetRealm = card[realmURL]?.href;
1568
+ if (!targetRealm) throw new Error("Unable to determine target realm from card");
1569
+ await new OpenCreateListingModalTool(params.toolContext).execute({
1570
+ codeRef,
1571
+ openCardIds: [cardId],
1572
+ targetRealm
1573
+ });
1574
+ },
1575
+ icon: IconComponent$1,
1576
+ disabled: !params.canEdit
1577
+ });
1578
+ }
1579
+ return menuItems;
1580
+ }
1581
+ function getSampleDataMenuItems(card, { toolContext }) {
1582
+ let cardId = card.id;
1583
+ let menuItems = [];
1584
+ if (cardId) menuItems.push({
1585
+ label: `Fill in Sample Data with AI`,
1586
+ action: async () => await new PopulateWithSampleDataTool(toolContext).execute({ cardId: card.id }),
1587
+ icon: IconComponent$1,
1588
+ tags: ["playground-sample-data"]
1589
+ });
1590
+ let codeRef = identifyCard(card.constructor);
1591
+ if (codeRef && isResolvedCodeRef(codeRef)) menuItems.push({
1592
+ label: `Generate ${GENERATED_EXAMPLE_COUNT} examples with AI`,
1593
+ action: async () => {
1594
+ await new GenerateExampleCardsTool(toolContext).execute({
1595
+ count: GENERATED_EXAMPLE_COUNT,
1596
+ codeRef,
1597
+ realm: card[realmURL]?.href,
1598
+ exampleCard: card
1599
+ });
1600
+ },
1601
+ icon: IconComponent$1,
1602
+ tags: ["playground-sample-data"]
1603
+ });
1604
+ return menuItems;
1605
+ }
1606
+ (globalThis.__boxelBundledBaseScopedCSS ??= {})["menu-items"] = {
1607
+ "css": [],
1608
+ "imports": ["card-api"]
1609
+ };
1610
+ (globalThis.__boxelBundledBaseIdentities ??= {})["menu-items"] = { "getDefaultCardMenuItems": getDefaultCardMenuItems };
1611
+ //#endregion
1612
+ //#region ../base/card-api.gts
1613
+ var card_api_exports = /* @__PURE__ */ __exportAll({
1614
+ BULK_GENERATED_ITEM_COUNT: () => 3,
1615
+ BaseDef: () => BaseDef,
1616
+ Box: () => Box,
1617
+ CSSField: () => CSSField,
1618
+ CardDef: () => CardDef,
1619
+ CardInfoField: () => CardInfoField,
1620
+ Component: () => Component,
1621
+ CssImportField: () => CssImportField,
1622
+ FieldDef: () => FieldDef,
1623
+ FileContentMismatchError: () => FileContentMismatchError,
1624
+ FileDef: () => FileDef,
1625
+ ImageDef: () => ImageDef,
1626
+ MarkdownField: () => MarkdownField,
1627
+ MaybeBase64Field: () => MaybeBase64Field,
1628
+ NumberField: () => NumberField,
1629
+ ReadOnlyField: () => ReadOnlyField,
1630
+ StringField: () => StringField,
1631
+ TextAreaField: () => TextAreaField,
1632
+ Theme: () => Theme,
1633
+ beginComputePass: () => beginComputePass,
1634
+ brokenLinkDisplayName: () => brokenLinkDisplayName,
1635
+ brokenLinkFormat: () => brokenLinkFormat,
1636
+ brokenLinkItemType: () => brokenLinkItemType,
1637
+ contains: () => contains,
1638
+ containsMany: () => containsMany,
1639
+ createFileDef: () => createFileDef,
1640
+ createFromSerialized: () => createFromSerialized,
1641
+ deserialize: () => deserialize,
1642
+ deserializeForUI: () => deserializeForUI,
1643
+ emptyValue: () => emptyValue,
1644
+ endComputePass: () => endComputePass,
1645
+ ensureQueryFieldSearchResource: () => ensureQueryFieldSearchResource,
1646
+ field: () => field,
1647
+ fieldDecorator: () => fieldDecorator,
1648
+ flushLogs: () => flushLogs,
1649
+ formatQuery: () => formatQuery,
1650
+ formatQueryValue: () => formatQueryValue,
1651
+ formats: () => formats,
1652
+ getBrokenLinks: () => getBrokenLinks,
1653
+ getCaptures: () => getCaptures,
1654
+ getCardMeta: () => getCardMeta,
1655
+ getComponent: () => getComponent,
1656
+ getDataBucket: () => getDataBucket,
1657
+ getDefaultFileMenuItems: () => getDefaultFileMenuItems,
1658
+ getFieldDescription: () => getFieldDescription,
1659
+ getFields: () => getFields$1,
1660
+ getQueryableValue: () => getQueryableValue,
1661
+ getRelationshipMembershipState: () => getRelationshipMembershipState,
1662
+ getStore: () => getStore,
1663
+ instanceOf: () => instanceOf,
1664
+ instanceRealmId: () => instanceRealmId,
1665
+ isCard: () => isCard,
1666
+ isField: () => isField,
1667
+ isFileDef: () => isFileDef,
1668
+ isNonPresentLink: () => isNonPresentLink,
1669
+ isQueryTaintedField: () => isQueryTaintedField,
1670
+ isSaved: () => isSaved,
1671
+ linksTo: () => linksTo,
1672
+ linksToMany: () => linksToMany,
1673
+ localId: () => localId,
1674
+ meta: () => meta,
1675
+ notifyLinksToTargetDeleted: () => notifyLinksToTargetDeleted,
1676
+ peekAtField: () => peekAtField,
1677
+ primitive: () => primitive,
1678
+ queryableValue: () => queryableValue,
1679
+ realmInfo: () => realmInfo,
1680
+ realmURL: () => realmURL,
1681
+ relativeTo: () => relativeTo,
1682
+ resolveInstanceURL: () => resolveInstanceURL,
1683
+ resolveRef: () => resolveRef,
1684
+ serialize: () => serialize$1,
1685
+ serializeCard: () => serializeCard,
1686
+ serializeDeclaredCaptures: () => serializeDeclaredCaptures,
1687
+ serializeFileDef: () => serializeFileDef,
1688
+ serializeForUI: () => serializeForUI,
1689
+ setCardAsSavedForTest: () => setCardAsSavedForTest,
1690
+ setId: () => setId,
1691
+ subscribeToChanges: () => subscribeToChanges,
1692
+ unsubscribeFromChanges: () => unsubscribeFromChanges,
1693
+ updateFromSerialized: () => updateFromSerialized,
1694
+ useIndexBasedKey: () => useIndexBasedKey
1695
+ });
1696
+ var BULK_GENERATED_ITEM_COUNT = 3;
1697
+ var useIndexBasedKey = Symbol.for("cardstack-use-index-based-key");
1698
+ var fieldDecorator = Symbol.for("cardstack-field-decorator");
1699
+ var queryableValue = Symbol.for("cardstack-queryable-value");
1700
+ var formatQuery = Symbol.for("cardstack-format-query");
1701
+ var realmInfo = Symbol.for("cardstack-realm-info");
1702
+ var emptyValue = Symbol.for("cardstack-empty-value");
1703
+ var classHasQueryFields = initSharedState("classHasQueryFields", () => /* @__PURE__ */ new WeakMap());
1704
+ function hasQueryFields(instance) {
1705
+ let klass = instance.constructor;
1706
+ let cached = classHasQueryFields.get(klass);
1707
+ if (cached === void 0) {
1708
+ cached = Object.values(getFields$1(klass, { includeComputeds: true })).some((field) => Boolean(field?.queryDefinition));
1709
+ classHasQueryFields.set(klass, cached);
1710
+ }
1711
+ return cached;
1712
+ }
1713
+ var stores = initSharedState("stores", () => /* @__PURE__ */ new WeakMap());
1714
+ var subscribers = initSharedState("subscribers", () => /* @__PURE__ */ new WeakMap());
1715
+ var subscriberConsumer = initSharedState("subscriberConsumer", () => /* @__PURE__ */ new WeakMap());
1716
+ var inflightLinkLoads = initSharedState("inflightLinkLoads", () => /* @__PURE__ */ new WeakMap());
1717
+ function instanceOf(instance, clazz) {
1718
+ let instanceClazz = instance.constructor;
1719
+ let codeRefInstance;
1720
+ let codeRefClazz = identifyCard(clazz);
1721
+ if (!codeRefClazz) return instance instanceof clazz;
1722
+ do {
1723
+ codeRefInstance = instanceClazz ? identifyCard(instanceClazz) : void 0;
1724
+ if (isEqual(codeRefInstance, codeRefClazz)) return true;
1725
+ instanceClazz = instanceClazz ? getAncestor(instanceClazz) ?? null : null;
1726
+ } while (codeRefInstance && !isEqual(codeRefInstance, baseRef));
1727
+ return false;
1728
+ }
1729
+ var Logger = class {
1730
+ promises = [];
1731
+ log(promise) {
1732
+ this.promises.push(promise);
1733
+ (async () => {
1734
+ try {
1735
+ await promise;
1736
+ } catch (e) {
1737
+ console.error(`encountered error performing recompute on card`, e);
1738
+ }
1739
+ })();
1740
+ }
1741
+ async flush() {
1742
+ let results = await Promise.allSettled(this.promises);
1743
+ for (let result of results) if (result.status === "rejected") {
1744
+ console.error(`Promise rejected`, result.reason);
1745
+ if (result.reason instanceof Error) console.error(result.reason.stack);
1746
+ }
1747
+ }
1748
+ };
1749
+ var logger = new Logger();
1750
+ async function flushLogs() {
1751
+ await logger.flush();
1752
+ }
1753
+ function cardTypeFor(field, boxedElement, overrides) {
1754
+ let value = boxedElement?.value;
1755
+ let override;
1756
+ if (overrides) {
1757
+ let valueKey = `${field.name}${boxedElement ? "." + boxedElement.name : ""}`;
1758
+ override = value ? overrides()?.get(valueKey) : void 0;
1759
+ } else override = value && typeof value === "object" ? getFieldOverrides(value)?.get(field.name) : void 0;
1760
+ if (primitive in field.card) return override ?? field.card;
1761
+ if (value == null) return field.card;
1762
+ return Reflect.getPrototypeOf(value).constructor;
1763
+ }
1764
+ function assertNoDeserializeOverride(cardClass) {
1765
+ if (!(primitive in cardClass) && Object.prototype.hasOwnProperty.call(cardClass, deserialize)) throw new Error(`${cardClass.name} overrides [deserialize] directly. Composite fields must use a registered fieldSerializer instead.`);
1766
+ }
1767
+ var ContainsMany = class {
1768
+ fieldType = "containsMany";
1769
+ cardThunk;
1770
+ computeVia;
1771
+ name;
1772
+ description;
1773
+ isPolymorphic;
1774
+ searchable;
1775
+ configuration;
1776
+ constructor({ cardThunk, computeVia, name, isPolymorphic, searchable }) {
1777
+ this.cardThunk = cardThunk;
1778
+ this.computeVia = computeVia;
1779
+ this.name = name;
1780
+ this.isPolymorphic = isPolymorphic;
1781
+ this.searchable = searchable;
1782
+ }
1783
+ get card() {
1784
+ return this.cardThunk();
1785
+ }
1786
+ getter(instance) {
1787
+ let deserialized = getDataBucket(instance);
1788
+ entangleWithCardTracking(instance);
1789
+ let maybeNotLoaded = deserialized.get(this.name);
1790
+ if (isNotLoadedValue(maybeNotLoaded)) {
1791
+ lazilyLoadLink(instance, this, maybeNotLoaded.reference);
1792
+ return this.emptyValue(instance);
1793
+ }
1794
+ let results = getter(instance, this);
1795
+ propagateRealmContext(results, instance);
1796
+ return results;
1797
+ }
1798
+ queryableValue(instances, stack) {
1799
+ if (instances === null || instances.length === 0) return null;
1800
+ let results = [...instances].map((instance) => {
1801
+ return this.card[queryableValue](instance, stack);
1802
+ }).filter((i) => i != null);
1803
+ return results.length === 0 ? null : results;
1804
+ }
1805
+ serialize(values, doc, _visited, opts) {
1806
+ if (isNotLoadedValue(values)) return { attributes: {} };
1807
+ let serialized = values === null ? null : values.map((value) => callSerializeHook(this.card, value, doc, void 0, opts));
1808
+ if (primitive in this.card) if (opts?.overrides) {
1809
+ let meta = {};
1810
+ if (Array.isArray(serialized)) for (let [index] of serialized.entries()) {
1811
+ let fieldName = `${this.name}.${index}`;
1812
+ let override = opts.overrides.get(fieldName);
1813
+ if (!override) continue;
1814
+ meta.fields = meta.fields ?? {};
1815
+ meta.fields[fieldName] = { adoptsFrom: identifyCard(override, opts?.useAbsoluteURL ? void 0 : opts?.maybeRelativeReference) };
1816
+ }
1817
+ return {
1818
+ attributes: { [this.name]: serialized },
1819
+ meta
1820
+ };
1821
+ } else return { attributes: { [this.name]: serialized } };
1822
+ else {
1823
+ let relationships = {};
1824
+ let serialized = values === null ? null : values.map((value, index) => {
1825
+ let resource = callSerializeHook(this.card, value, doc, void 0, opts);
1826
+ if (resource.relationships) for (let [fieldName, relationship] of Object.entries(resource.relationships)) relationships[`${this.name}.${index}.${fieldName}`] = relationship;
1827
+ if (this.card === Reflect.getPrototypeOf(value).constructor) delete resource.meta?.adoptsFrom;
1828
+ if (resource.meta && Object.keys(resource.meta).length === 0) delete resource.meta;
1829
+ return resource;
1830
+ });
1831
+ let result = { attributes: { [this.name]: serialized === null ? null : serialized.map((resource) => resource.attributes) } };
1832
+ if (Object.keys(relationships).length > 0) result.relationships = relationships;
1833
+ if (serialized && serialized.some((resource) => resource.meta)) result.meta = { fields: { [this.name]: serialized.map((resource) => resource.meta ?? {}) } };
1834
+ return result;
1835
+ }
1836
+ }
1837
+ async deserialize(value, doc, relationships, fieldMeta, store, instancePromise, _loadedValue, relativeTo, opts) {
1838
+ if (value == null) return null;
1839
+ if (!Array.isArray(value)) throw new Error(`Expected array for field value ${this.name}`);
1840
+ if (fieldMeta && !Array.isArray(fieldMeta)) throw new Error(`fieldMeta for contains-many field '${this.name}' is not an array: ${JSON.stringify(fieldMeta, null, 2)}`);
1841
+ let metas = fieldMeta ?? [];
1842
+ return new WatchedArray((prevArrayValue, arrayValue) => instancePromise.then((instance) => {
1843
+ applySubscribersToInstanceValue(instance, this, prevArrayValue, arrayValue);
1844
+ notifySubscribers(instance, field.name, arrayValue);
1845
+ notifyCardTracking(instance);
1846
+ }), await Promise.all(value.map(async (entry, index) => {
1847
+ if (primitive in this.card) {
1848
+ if (fieldSerializer in this.card) {
1849
+ assertIsSerializerName(this.card[fieldSerializer]);
1850
+ return getSerializer(this.card[fieldSerializer]).deserialize(entry, relativeTo, doc, store, opts);
1851
+ }
1852
+ return entry;
1853
+ } else {
1854
+ if (fieldSerializer in this.card) {
1855
+ assertIsSerializerName(this.card[fieldSerializer]);
1856
+ entry = await getSerializer(this.card[fieldSerializer]).deserialize(entry, relativeTo, doc, store, opts);
1857
+ }
1858
+ let meta = metas[index];
1859
+ let resource = {
1860
+ attributes: entry,
1861
+ meta: makeMetaForField(meta, this.name, this.card)
1862
+ };
1863
+ if (relationships) resource.relationships = Object.fromEntries(Object.entries(relationships).filter(([fieldName]) => fieldName.startsWith(`${this.name}.`)).map(([fieldName, relationship]) => {
1864
+ let relName = `${this.name}.${index}`;
1865
+ return [fieldName.startsWith(`${relName}.`) ? fieldName.substring(relName.length + 1) : fieldName, relationship];
1866
+ }));
1867
+ let cardClass = await cardClassFromResource(resource, this.card, relativeTo);
1868
+ assertNoDeserializeOverride(cardClass);
1869
+ return cardClass[deserialize](resource, relativeTo, doc, store, opts);
1870
+ }
1871
+ })));
1872
+ }
1873
+ emptyValue(instance) {
1874
+ return new WatchedArray((oldValue, value) => {
1875
+ applySubscribersToInstanceValue(instance, this, oldValue, value);
1876
+ notifySubscribers(instance, this.name, value);
1877
+ notifyCardTracking(instance);
1878
+ });
1879
+ }
1880
+ validate(instance, values) {
1881
+ if (values && !Array.isArray(values)) throw new Error(`field validation error: Expected array for field value of field '${this.name}'`);
1882
+ if (values == null) return values;
1883
+ if (!(primitive in this.card)) {
1884
+ for (let [index, item] of values.entries()) if (item != null && !instanceOf(item, this.card)) throw new Error(`field validation error: tried set instance of ${values.constructor.name} at index ${index} of field '${this.name}' but it is not an instance of ${this.card.name}`);
1885
+ }
1886
+ return new WatchedArray((oldValue, value) => {
1887
+ applySubscribersToInstanceValue(instance, this, oldValue, value);
1888
+ notifySubscribers(instance, this.name, value);
1889
+ notifyCardTracking(instance);
1890
+ }, values);
1891
+ }
1892
+ component(model) {
1893
+ let fieldName = this.name;
1894
+ return getContainsManyComponent({
1895
+ model,
1896
+ arrayField: model.field(fieldName, useIndexBasedKey in this.card),
1897
+ field: this,
1898
+ cardTypeFor
1899
+ });
1900
+ }
1901
+ };
1902
+ var Contains = class {
1903
+ fieldType = "contains";
1904
+ cardThunk;
1905
+ computeVia;
1906
+ name;
1907
+ description;
1908
+ isPolymorphic;
1909
+ searchable;
1910
+ configuration;
1911
+ constructor({ cardThunk, computeVia, name, isPolymorphic, searchable }) {
1912
+ this.cardThunk = cardThunk;
1913
+ this.computeVia = computeVia;
1914
+ this.name = name;
1915
+ this.isPolymorphic = isPolymorphic;
1916
+ this.searchable = searchable;
1917
+ }
1918
+ get card() {
1919
+ return this.cardThunk();
1920
+ }
1921
+ getter(instance) {
1922
+ let deserialized = getDataBucket(instance);
1923
+ entangleWithCardTracking(instance);
1924
+ let maybeNotLoaded = deserialized.get(this.name);
1925
+ if (isNotLoadedValue(maybeNotLoaded)) {
1926
+ lazilyLoadLink(instance, this, maybeNotLoaded.reference);
1927
+ return;
1928
+ }
1929
+ let value = getter(instance, this);
1930
+ propagateRealmContext(value, instance);
1931
+ return value;
1932
+ }
1933
+ queryableValue(instance, stack) {
1934
+ if (primitive in this.card) {
1935
+ let result = this.card[queryableValue](instance, stack);
1936
+ assertScalar(result, this.card);
1937
+ return result;
1938
+ }
1939
+ if (instance == null) return null;
1940
+ return this.card[queryableValue](instance, stack);
1941
+ }
1942
+ serialize(value, doc, _visited, opts) {
1943
+ if (isNotLoadedValue(value)) return { attributes: {} };
1944
+ if (primitive in this.card) {
1945
+ let serialized = callSerializeHook(this.card, value, doc, void 0, opts);
1946
+ if (this.isPolymorphic) return {
1947
+ attributes: { [this.name]: serialized },
1948
+ meta: { fields: { [this.name]: { adoptsFrom: identifyCard(this.card, opts?.useAbsoluteURL ? void 0 : opts?.maybeRelativeReference) } } }
1949
+ };
1950
+ else return { attributes: { [this.name]: serialized } };
1951
+ } else {
1952
+ let serialized = callSerializeHook(this.card, value, doc, void 0, opts);
1953
+ let resource = { attributes: { [this.name]: serialized?.attributes } };
1954
+ if (serialized == null) return resource;
1955
+ if (serialized.relationships) {
1956
+ resource.relationships = {};
1957
+ for (let [fieldName, relationship] of Object.entries(serialized.relationships)) resource.relationships[`${this.name}.${fieldName}`] = relationship;
1958
+ }
1959
+ if (this.card === Reflect.getPrototypeOf(value).constructor && !this.isPolymorphic) delete serialized.meta.adoptsFrom;
1960
+ if (Object.keys(serialized.meta).length > 0) resource.meta = { fields: { [this.name]: serialized.meta } };
1961
+ return resource;
1962
+ }
1963
+ }
1964
+ async deserialize(value, doc, relationships, fieldMeta, store, _instancePromise, _loadedValue, relativeTo, opts) {
1965
+ if (primitive in this.card) {
1966
+ if (fieldSerializer in this.card) {
1967
+ assertIsSerializerName(this.card[fieldSerializer]);
1968
+ return getSerializer(this.card[fieldSerializer]).deserialize(value, relativeTo, doc, store, opts);
1969
+ }
1970
+ return value;
1971
+ }
1972
+ if (fieldSerializer in this.card) {
1973
+ assertIsSerializerName(this.card[fieldSerializer]);
1974
+ value = await getSerializer(this.card[fieldSerializer]).deserialize(value, relativeTo, doc, store, opts);
1975
+ }
1976
+ if (fieldMeta && Array.isArray(fieldMeta)) throw new Error(`fieldMeta for contains field '${this.name}' is an array: ${JSON.stringify(fieldMeta, null, 2)}`);
1977
+ let resource = {
1978
+ attributes: value,
1979
+ meta: makeMetaForField(fieldMeta, this.name, this.card)
1980
+ };
1981
+ if (relationships) resource.relationships = Object.fromEntries(Object.entries(relationships).filter(([fieldName]) => fieldName.startsWith(`${this.name}.`)).map(([fieldName, relationship]) => [fieldName.startsWith(`${this.name}.`) ? fieldName.substring(this.name.length + 1) : fieldName, relationship]));
1982
+ let cardClass = await cardClassFromResource(resource, this.card, relativeTo);
1983
+ assertNoDeserializeOverride(cardClass);
1984
+ return cardClass[deserialize](resource, relativeTo, doc, store, opts);
1985
+ }
1986
+ emptyValue(_instance) {
1987
+ if (primitive in this.card) return this.card[emptyValue];
1988
+ else return new this.card();
1989
+ }
1990
+ validate(_instance, value) {
1991
+ if (!(primitive in this.card)) {
1992
+ let expectedCard = this.card;
1993
+ if (value != null && !instanceOf(value, expectedCard)) throw new Error(`field validation error: tried set instance of ${value.constructor.name} as field '${this.name}' but it is not an instance of ${expectedCard.name}`);
1994
+ }
1995
+ return value;
1996
+ }
1997
+ component(model) {
1998
+ return fieldComponent(this, model);
1999
+ }
2000
+ };
2001
+ function serializeNonPresentLink(reference, relationshipType, opts) {
2002
+ return {
2003
+ links: { self: makeRelativeURL(reference, opts) },
2004
+ data: {
2005
+ type: relationshipType,
2006
+ id: reference
2007
+ }
2008
+ };
2009
+ }
2010
+ function isExcludedByIncludedScope(value, includedScope = "all") {
2011
+ return value.id ? includedScope !== "all" : includedScope === "none";
2012
+ }
2013
+ function referenceRelationship(value, relationshipType, opts) {
2014
+ return value.id ? {
2015
+ links: { self: makeRelativeURL(value.id, opts) },
2016
+ data: {
2017
+ type: relationshipType,
2018
+ id: value.id
2019
+ }
2020
+ } : { data: {
2021
+ type: relationshipType,
2022
+ lid: value[localId]
2023
+ } };
2024
+ }
2025
+ var LinksTo = class {
2026
+ fieldType = "linksTo";
2027
+ cardThunk;
2028
+ declaredCardThunk;
2029
+ computeVia;
2030
+ name;
2031
+ description;
2032
+ isPolymorphic;
2033
+ searchable;
2034
+ configuration;
2035
+ queryDefinition;
2036
+ eager;
2037
+ constructor({ cardThunk, declaredCardThunk, computeVia, name, isPolymorphic, searchable, queryDefinition, eager }) {
2038
+ this.cardThunk = cardThunk;
2039
+ this.declaredCardThunk = declaredCardThunk ?? cardThunk;
2040
+ this.computeVia = computeVia;
2041
+ this.name = name;
2042
+ this.isPolymorphic = isPolymorphic;
2043
+ this.searchable = searchable;
2044
+ this.queryDefinition = queryDefinition;
2045
+ this.eager = eager;
2046
+ }
2047
+ get card() {
2048
+ return this.cardThunk();
2049
+ }
2050
+ get declaredCardResolver() {
2051
+ return this.declaredCardThunk;
2052
+ }
2053
+ getter(instance) {
2054
+ let deserialized = getDataBucket(instance);
2055
+ entangleWithCardTracking(instance);
2056
+ if (this.queryDefinition) {
2057
+ let dependencyTrackingContext = runtimeQueryDependencyContext({
2058
+ queryField: this.name,
2059
+ consumer: instance.id,
2060
+ source: "card-api:linksTo:getter"
2061
+ });
2062
+ let searchResource = ensureQueryFieldSearchResource(getStore(instance), instance, this, dependencyTrackingContext);
2063
+ let bucketEntry = deserialized.get(this.name);
2064
+ if (isLinkError(bucketEntry) || isLinkNotFound(bucketEntry)) return;
2065
+ let value = (searchResource?.instances ?? [])[0];
2066
+ trackRuntimeRelationshipDependency(value, this.card, dependencyTrackingContext);
2067
+ return value;
2068
+ }
2069
+ let maybeNotLoaded = deserialized.get(this.name);
2070
+ if (isNotLoadedValue(maybeNotLoaded)) {
2071
+ lazilyLoadLink(instance, this, maybeNotLoaded.reference);
2072
+ return;
2073
+ }
2074
+ if (isLinkError(maybeNotLoaded) || isLinkNotFound(maybeNotLoaded)) return;
2075
+ let value = getter(instance, this);
2076
+ trackRuntimeRelationshipDependency(value, this.card);
2077
+ return value ?? void 0;
2078
+ }
2079
+ queryableValue(instance, stack) {
2080
+ if (primitive in this.card) throw new Error(`the linksTo field '${this.name}' contains a primitive card '${this.card.name}'`);
2081
+ if (instance == null) return null;
2082
+ if (isNonPresentLink(instance)) return { id: instance.reference };
2083
+ return this.card[queryableValue](instance, stack);
2084
+ }
2085
+ serialize(value, doc, visited, opts) {
2086
+ let relationshipType = isFileDef(this.card) ? FileMetaResourceType : CardResourceType;
2087
+ if (isNonPresentLink(value)) return { relationships: { [this.name]: serializeNonPresentLink(value.reference, relationshipType, opts) } };
2088
+ if (value == null) {
2089
+ if (this.computeVia && !opts?.includeUnrenderedFields) return { relationships: {} };
2090
+ return { relationships: { [this.name]: { links: { self: null } } } };
2091
+ }
2092
+ if (isFileDef(this.card) && !value.id) throw new Error(`linksTo field '${this.name}' cannot serialize a FileDef without an id`);
2093
+ if (visited.has(value.id) || visited.has(value[localId]) || isExcludedByIncludedScope(value, opts?.includedScope)) return { relationships: { [this.name]: referenceRelationship(value, relationshipType, opts) } };
2094
+ visited.add(value.id ?? value[localId]);
2095
+ let serialized = callSerializeHook(this.card, value, doc, visited, rebaseReferencesFor(value, opts));
2096
+ if (serialized) {
2097
+ let resource = { relationships: { [this.name]: referenceRelationship(value, relationshipType, opts) } };
2098
+ if (!(doc.included ?? []).find((r) => "id" in r && r.id === value.id) && doc.data.id !== value.id || !value.id && !(doc.included ?? []).find((r) => "lid" in r && r.lid === value[localId]) && doc.data.lid !== value[localId]) {
2099
+ doc.included = doc.included ?? [];
2100
+ doc.included.push(serialized);
2101
+ }
2102
+ return resource;
2103
+ }
2104
+ return { relationships: { [this.name]: { links: { self: null } } } };
2105
+ }
2106
+ async deserialize(value, doc, _relationships, _fieldMeta, store, _instancePromise, loadedValue, relativeTo, opts) {
2107
+ if (!isRelationship(value)) throw new Error(`linkTo field '${this.name}' cannot deserialize non-relationship value ${JSON.stringify(value)}`);
2108
+ if (Array.isArray(value.data)) throw new Error(`linksTo field '${this.name}' cannot deserialize a list of resource ids`);
2109
+ let resourceId = value.data && "id" in value.data ? value.data?.id : void 0;
2110
+ let reference = value.links?.self ?? resourceId;
2111
+ if (reference == null || reference === "") return null;
2112
+ let href = resolveRef(reference, relativeTo);
2113
+ let cachedInstance = isFileDef(this.card) ? store.getFileMeta(href) : store.getCard(href);
2114
+ if (cachedInstance && instanceOf(cachedInstance, this.card)) {
2115
+ cachedInstance[isSavedInstance] = true;
2116
+ return cachedInstance;
2117
+ }
2118
+ let resource = resourceId != null ? resourceFrom(doc, resourceId) : void 0;
2119
+ if (!resource) {
2120
+ if (isLinkError(loadedValue) || isLinkNotFound(loadedValue)) return resolveRef(loadedValue.reference, relativeTo) === href ? loadedValue : {
2121
+ type: "not-loaded",
2122
+ reference
2123
+ };
2124
+ if (loadedValue !== void 0) return loadedValue;
2125
+ return {
2126
+ type: "not-loaded",
2127
+ reference
2128
+ };
2129
+ }
2130
+ let deserialized = await (await cardClassFromResource(resource, this.card, relativeTo))[deserialize](resource, relativeTo, doc, store, opts);
2131
+ if ("isSavedInstance" in deserialized) deserialized[isSavedInstance] = true;
2132
+ return deserialized;
2133
+ }
2134
+ emptyValue(_instance) {
2135
+ return null;
2136
+ }
2137
+ validate(_instance, value) {
2138
+ if (primitive in this.card) throw new Error(`field validation error: the linksTo field '${this.name}' contains a primitive card '${this.card.name}'`);
2139
+ if (value) {
2140
+ if (isNonPresentLink(value)) return value;
2141
+ if (isFileDef(this.card) && !value.id) throw new Error(`field validation error: the linksTo field '${this.name}' cannot reference a FileDef without an id`);
2142
+ if (!instanceOf(value, this.card)) {
2143
+ console.warn("linksTo instance mismatch", JSON.stringify({
2144
+ expected: identifyCard(this.card),
2145
+ actual: identifyCard(value.constructor)
2146
+ }));
2147
+ throw new Error(`field validation error: tried set ${value.constructor.name} as field '${this.name}' but it is not an instance of ${this.card.name}`);
2148
+ }
2149
+ }
2150
+ return value;
2151
+ }
2152
+ captureQueryFieldSeedData(instance, value, resource) {
2153
+ if (this.queryDefinition) captureQueryFieldSeedData(instance, this.name, value ? [value] : [], resource);
2154
+ }
2155
+ component(model) {
2156
+ let isComputed = !!this.computeVia || !!this.queryDefinition;
2157
+ let fieldName = this.name;
2158
+ let linksToField = this;
2159
+ let getInnerModel = () => {
2160
+ return model.field(fieldName);
2161
+ };
2162
+ let isFileDefField = isFileDef(linksToField.card);
2163
+ function shouldRenderEditor(format, defaultFormat, isComputed) {
2164
+ return (format ?? defaultFormat) === "edit" && !isComputed;
2165
+ }
2166
+ function getChildFormat(format, defaultFormat, model, isFileDefField) {
2167
+ let effectiveFormat = format ?? defaultFormat;
2168
+ if (effectiveFormat === "edit" && ("isCardDef" in model.value.constructor && model.value.constructor.isCardDef || isFileDefField)) return "fitted";
2169
+ return effectiveFormat;
2170
+ }
2171
+ return class LinksToComponent extends Component$1 {
2172
+ static {
2173
+ setComponentTemplate(templateFactory({
2174
+ "id": "epffkQoW",
2175
+ "block": "[[[8,[32,0],null,null,[[\"default\"],[[[[1,\"\\n \"],[8,[32,1],null,null,[[\"default\"],[[[[1,\"\\n\"],[44,[[28,[32,2],[[32,3],[32,4,[\"name\"]]],null]],[[[41,[28,[32,5],[[30,4],[30,2,[\"cardDef\"]],[32,6]],null],[[[1,\" \"],[8,[32,7],[[17,5]],[[\"@model\",\"@field\",\"@brokenLink\",\"@typeConstraint\",\"@lockConsumingRealm\",\"@consumingRealm\",\"@createCard\"],[[28,[32,8],null,null],[32,4],[30,3],[30,6],[30,7],[30,8],[30,1,[\"createCard\"]]]],null],[1,\"\\n\"]],[]],[[[41,[30,3],[[[1,\" \"],[8,[32,9],[[17,5]],[[\"@brokenUrl\",\"@errorDoc\",\"@state\",\"@format\",\"@itemType\",\"@displayName\",\"@viewCard\"],[[30,3,[\"reference\"]],[30,3,[\"errorDoc\"]],[30,3,[\"kind\"]],[28,[32,10],[[30,4],[30,2,[\"cardDef\"]]],null],[28,[32,11],[[32,4]],null],[28,[32,12],[[32,4],[30,3,[\"reference\"]]],null],[30,1,[\"viewCard\"]]]],null],[1,\"\\n\"]],[]],[[[44,[[28,[32,13],[[32,4],[32,3]],null]],[[[1,\" \"],[8,[30,9],[[17,5]],[[\"@format\",\"@displayContainer\"],[[28,[32,14],[[30,4],[30,2,[\"cardDef\"]],[32,3],[32,15]],null],[30,10]]],null],[1,\"\\n\"]],[9]]],[1,\" \"]],[]]]],[]]]],[3]]],[1,\" \"]],[2]]]]],[1,\"\\n\"]],[1]]]]]],[\"cardCrudFunctions\",\"defaultFormats\",\"broken\",\"@format\",\"&attrs\",\"@typeConstraint\",\"@lockConsumingRealm\",\"@consumingRealm\",\"FieldComponent\",\"@displayContainer\"],[\"let\",\"if\"]]",
2176
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/card-api.gts",
2177
+ "scope": () => [
2178
+ CardCrudFunctionsConsumer,
2179
+ DefaultFormatsConsumer,
2180
+ brokenSingularLink,
2181
+ model,
2182
+ linksToField,
2183
+ shouldRenderEditor,
2184
+ isComputed,
2185
+ LinksToEditor,
2186
+ getInnerModel,
2187
+ BrokenLinkTemplate,
2188
+ brokenLinkFormat,
2189
+ brokenLinkItemType,
2190
+ brokenLinkDisplayName,
2191
+ fieldComponent,
2192
+ getChildFormat,
2193
+ isFileDefField
2194
+ ],
2195
+ "isStrictMode": true
2196
+ }), this);
2197
+ }
2198
+ };
2199
+ }
2200
+ };
2201
+ var LinksToMany = class {
2202
+ fieldType = "linksToMany";
2203
+ cardThunk;
2204
+ declaredCardThunk;
2205
+ declaredCardCache;
2206
+ computeVia;
2207
+ name;
2208
+ isPolymorphic;
2209
+ searchable;
2210
+ configuration;
2211
+ queryDefinition;
2212
+ eager;
2213
+ constructor({ cardThunk, declaredCardThunk, computeVia, name, isPolymorphic, searchable, queryDefinition, eager }) {
2214
+ this.cardThunk = cardThunk;
2215
+ this.declaredCardThunk = declaredCardThunk ?? cardThunk;
2216
+ this.computeVia = computeVia;
2217
+ this.name = name;
2218
+ this.isPolymorphic = isPolymorphic;
2219
+ this.searchable = searchable;
2220
+ this.queryDefinition = queryDefinition;
2221
+ this.eager = eager;
2222
+ }
2223
+ get card() {
2224
+ return this.cardThunk();
2225
+ }
2226
+ get declaredCard() {
2227
+ if (!this.declaredCardCache) this.declaredCardCache = this.declaredCardThunk();
2228
+ return this.declaredCardCache;
2229
+ }
2230
+ get declaredCardResolver() {
2231
+ return this.declaredCardThunk;
2232
+ }
2233
+ getter(instance) {
2234
+ entangleWithCardTracking(instance);
2235
+ if (this.computeVia) return getter(instance, this);
2236
+ let deserialized = getDataBucket(instance);
2237
+ if (this.queryDefinition) {
2238
+ let dependencyTrackingContext = runtimeQueryDependencyContext({
2239
+ queryField: this.name,
2240
+ consumer: instance.id,
2241
+ source: "card-api:linksToMany:getter"
2242
+ });
2243
+ let searchResource = ensureQueryFieldSearchResource(getStore(instance), instance, this, dependencyTrackingContext);
2244
+ let bucketEntry = deserialized.get(this.name);
2245
+ if (isLinkError(bucketEntry) || isLinkNotFound(bucketEntry)) return this.emptyValue(instance);
2246
+ let records = searchResource?.instances ?? [];
2247
+ trackRuntimeRelationshipDependencies(records, this.card, dependencyTrackingContext);
2248
+ return records;
2249
+ }
2250
+ let value = deserialized.get(this.name);
2251
+ if (!value) {
2252
+ value = this.emptyValue(instance);
2253
+ deserialized.set(this.name, value);
2254
+ }
2255
+ if (isNotLoadedValue(value)) {
2256
+ value = this.emptyValue(instance);
2257
+ deserialized.set(this.name, value);
2258
+ lazilyLoadLink(instance, this, value.reference, { value });
2259
+ return this.emptyValue(instance);
2260
+ }
2261
+ if (isLinkError(value) || isLinkNotFound(value)) return this.emptyValue(instance);
2262
+ if (!Array.isArray(value)) throw new Error(`LinksToMany field '${this.name}' expected array but got ${typeof value}`);
2263
+ let rawEntries = rawArrayValues(value);
2264
+ let hasNotLoaded = false;
2265
+ for (let entry of rawEntries) if (isNotLoadedValue(entry)) {
2266
+ hasNotLoaded = true;
2267
+ break;
2268
+ }
2269
+ if (hasNotLoaded) {
2270
+ for (let entry of rawEntries) if (isNotLoadedValue(entry) && !entry.loading) {
2271
+ lazilyLoadLink(instance, this, entry.reference, { value });
2272
+ entry.loading = true;
2273
+ }
2274
+ }
2275
+ trackRuntimeRelationshipDependencies(rawEntries, this.card);
2276
+ return value;
2277
+ }
2278
+ queryableValue(instances, stack) {
2279
+ if (isNonPresentLink(instances)) return null;
2280
+ if (instances === null || instances.length === 0) return null;
2281
+ let results = rawArrayValues(instances).map((instance) => {
2282
+ if (instance == null) return null;
2283
+ if (primitive in instance) throw new Error(`the linksToMany field '${this.name}' contains a primitive card '${instance.name}'`);
2284
+ if (isNonPresentLink(instance)) return { id: instance.reference };
2285
+ return this.card[queryableValue](instance, stack);
2286
+ }).filter((i) => i != null);
2287
+ return results.length === 0 ? null : results;
2288
+ }
2289
+ serialize(values, doc, visited, opts) {
2290
+ if (values && typeof values === "object" && "type" in values && values.type === "skip-serialization") return { relationships: {} };
2291
+ if (isNonPresentLink(values)) return { relationships: {} };
2292
+ if (values == null || values.length === 0) {
2293
+ if (this.computeVia && !opts?.includeUnrenderedFields) return { relationships: {} };
2294
+ return { relationships: { [this.name]: { links: { self: null } } } };
2295
+ }
2296
+ if (!Array.isArray(values)) throw new Error(`Expected array for field value ${this.name}`);
2297
+ let relationshipType = isFileDef(this.card) ? FileMetaResourceType : CardResourceType;
2298
+ let relationships = {};
2299
+ rawArrayValues(values).forEach((value, i) => {
2300
+ if (value == null) {
2301
+ relationships[`${this.name}.${i}`] = {
2302
+ links: { self: null },
2303
+ data: null
2304
+ };
2305
+ return;
2306
+ }
2307
+ if (isNonPresentLink(value)) {
2308
+ relationships[`${this.name}.${i}`] = serializeNonPresentLink(value.reference, relationshipType, opts);
2309
+ return;
2310
+ }
2311
+ if (isFileDef(this.card) && !value.id) throw new Error(`linksToMany field '${this.name}' cannot serialize a FileDef without an id`);
2312
+ if (visited.has(value.id) || visited.has(value[localId]) || isExcludedByIncludedScope(value, opts?.includedScope)) {
2313
+ relationships[`${this.name}.${i}`] = referenceRelationship(value, relationshipType, opts);
2314
+ return;
2315
+ }
2316
+ visited.add(value.id ?? value[localId]);
2317
+ let serialized = callSerializeHook(this.card, value, doc, visited, rebaseReferencesFor(value, opts));
2318
+ if (serialized.meta && Object.keys(serialized.meta).length === 0) delete serialized.meta;
2319
+ if (!(doc.included ?? []).find((r) => "id" in r && r.id === value.id) && doc.data.id !== value.id || !value.id && !(doc.included ?? []).find((r) => "lid" in r && r.lid === value[localId]) && doc.data.lid !== value[localId]) {
2320
+ doc.included = doc.included ?? [];
2321
+ doc.included.push(serialized);
2322
+ }
2323
+ relationships[`${this.name}.${i}`] = referenceRelationship(value, relationshipType, opts);
2324
+ });
2325
+ return { relationships };
2326
+ }
2327
+ async deserialize(values, doc, _relationships, _fieldMeta, store, instancePromise, loadedValues, relativeTo, opts) {
2328
+ let relationships;
2329
+ if (Array.isArray(values)) relationships = values;
2330
+ else {
2331
+ if (!isRelationship(values)) throw new Error(`linksToMany field '${this.name}' cannot deserialize non-relationship value ${JSON.stringify(values)}`);
2332
+ if (!Array.isArray(values.data)) relationships = [];
2333
+ else relationships = values.data.map((entry) => ({
2334
+ links: { self: entry && "id" in entry ? entry.id ?? null : null },
2335
+ data: entry
2336
+ }));
2337
+ }
2338
+ let resources = relationships.map(async (value) => {
2339
+ if (!isRelationship(value)) throw new Error(`linksToMany field '${this.name}' cannot deserialize non-relationship value ${JSON.stringify(value)}`);
2340
+ if (Array.isArray(value.data)) throw new Error(`linksToMany field '${this.name}' cannot deserialize a list of resource ids`);
2341
+ let resourceId = value.data && "id" in value.data ? value.data?.id : void 0;
2342
+ let reference = value.links?.self ?? resourceId;
2343
+ if (reference == null) return null;
2344
+ let normalizedReference = resolveRef(reference, relativeTo);
2345
+ let cachedInstance = isFileDef(this.card) ? store.getFileMeta(normalizedReference) : store.getCard(normalizedReference);
2346
+ if (cachedInstance && instanceOf(cachedInstance, this.card)) {
2347
+ cachedInstance[isSavedInstance] = true;
2348
+ return cachedInstance;
2349
+ }
2350
+ if (!resourceId) resourceId = normalizedReference;
2351
+ if (loadedValues && Array.isArray(loadedValues)) {
2352
+ let loadedValue = loadedValues.find((v) => isCardOrField(v) && "id" in v && v.id === resourceId);
2353
+ if (loadedValue) return loadedValue;
2354
+ }
2355
+ let resource = resourceFrom(doc, resourceId);
2356
+ if (!resource && reference !== normalizedReference) resource = resourceFrom(doc, reference);
2357
+ if (!resource) {
2358
+ if (Array.isArray(loadedValues)) {
2359
+ let carried = rawArrayValues(loadedValues).find((v) => (isLinkError(v) || isLinkNotFound(v)) && resolveRef(v.reference, relativeTo) === normalizedReference);
2360
+ if (carried) return carried;
2361
+ }
2362
+ return {
2363
+ type: "not-loaded",
2364
+ reference
2365
+ };
2366
+ }
2367
+ let deserialized = await (await cardClassFromResource(resource, this.card, relativeTo))[deserialize](resource, relativeTo, doc, store, opts);
2368
+ if ("isSavedInstance" in deserialized) deserialized[isSavedInstance] = true;
2369
+ return deserialized;
2370
+ });
2371
+ let resolved = await Promise.all(resources);
2372
+ let watched = new WatchedArray((oldValue, value) => instancePromise.then((instance) => {
2373
+ applySubscribersToInstanceValue(instance, this, oldValue, value);
2374
+ notifySubscribers(instance, this.name, value);
2375
+ notifyCardTracking(instance);
2376
+ }), resolved, { hideSlot: isNonPresentLink });
2377
+ if (resolved.length === 0 && !this.computeVia) markAuthoredEmptyLink(watched);
2378
+ return watched;
2379
+ }
2380
+ emptyValue(instance) {
2381
+ return new WatchedArray((oldValue, value) => {
2382
+ applySubscribersToInstanceValue(instance, this, oldValue, value);
2383
+ notifySubscribers(instance, this.name, value);
2384
+ notifyCardTracking(instance);
2385
+ }, [], { hideSlot: isNonPresentLink });
2386
+ }
2387
+ validate(instance, values) {
2388
+ if (primitive in this.card) throw new Error(`field validation error: the linksToMany field '${this.name}' contains a primitive card '${this.card.name}'`);
2389
+ if (values == null) return values;
2390
+ if (!Array.isArray(values)) throw new Error(`field validation error: Expected array for field value of field '${this.name}'`);
2391
+ let expectedCard = this.declaredCard;
2392
+ for (let value of values) {
2393
+ if (!isNonPresentLink(value) && value != null && !instanceOf(value, expectedCard)) throw new Error(`field validation error: tried set ${value.constructor.name} as field '${this.name}' but it is not an instance of ${expectedCard.name}`);
2394
+ if (!isNonPresentLink(value) && value != null && isFileDef(expectedCard) && !value.id) throw new Error(`field validation error: the linksToMany field '${this.name}' cannot reference a FileDef without an id`);
2395
+ }
2396
+ return new WatchedArray((oldValue, value) => {
2397
+ applySubscribersToInstanceValue(instance, this, oldValue, value);
2398
+ notifySubscribers(instance, this.name, value);
2399
+ notifyCardTracking(instance);
2400
+ }, rawArrayValues(values), { hideSlot: isNonPresentLink });
2401
+ }
2402
+ captureQueryFieldSeedData(instance, value, resource) {
2403
+ if (this.queryDefinition) captureQueryFieldSeedData(instance, this.name, value, resource);
2404
+ }
2405
+ component(model) {
2406
+ let fieldName = this.name;
2407
+ return getLinksToManyComponent({
2408
+ model,
2409
+ arrayField: model.field(fieldName, useIndexBasedKey in this.card),
2410
+ field: this,
2411
+ cardTypeFor
2412
+ });
2413
+ }
2414
+ };
2415
+ function brokenSingularLink(model, fieldName) {
2416
+ let owner = model.value;
2417
+ if (owner == null) return;
2418
+ let slot = getRelationshipMembershipState(owner, fieldName).membership?.[0];
2419
+ if (slot && (slot.kind === "error" || slot.kind === "not-found")) return slot;
2420
+ }
2421
+ function brokenLinkFormat(format, defaultFormat) {
2422
+ let effectiveFormat = format ?? defaultFormat;
2423
+ switch (effectiveFormat) {
2424
+ case "isolated":
2425
+ case "fitted":
2426
+ case "atom":
2427
+ case "embedded": return effectiveFormat;
2428
+ case "edit": return "fitted";
2429
+ default: return "embedded";
2430
+ }
2431
+ }
2432
+ function brokenLinkItemType(field) {
2433
+ return isFileDef(field.card) ? "file" : "card";
2434
+ }
2435
+ function brokenLinkDisplayName(field, reference) {
2436
+ return isFileDef(field.card) ? fileNameFromUrl(reference) : cardTypeName(reference);
2437
+ }
2438
+ function fieldComponent(field, model) {
2439
+ let fieldName = field.name;
2440
+ let card;
2441
+ let override = model.value && typeof model.value === "object" ? getFieldOverrides(model.value)?.get(field.name) : void 0;
2442
+ if (primitive in field.card) card = override ?? field.card;
2443
+ else card = model.value[fieldName]?.constructor ?? override ?? field.card;
2444
+ let innerModel = model.field(fieldName);
2445
+ return getBoxComponent(card, innerModel, field);
2446
+ }
2447
+ var RESERVED_FIELD_NAMES = ["captureURLs", "capturesMeta"];
2448
+ var field = function(target, key, { initializer }) {
2449
+ if (typeof key === "symbol") throw new Error(`the @field decorator only supports string field names, not symbols`);
2450
+ if (RESERVED_FIELD_NAMES.includes(key)) throw new Error(`"${key}" is a reserved name: it is provided by the system and cannot be declared as a field`);
2451
+ if (!(target instanceof BaseDef)) throw new Error(`the @field decorator can only be used inside classes that extend BaseDef`);
2452
+ let init = initializer();
2453
+ let descriptor = init.setupField(key, target);
2454
+ if (init.description) setFieldDescription(target.constructor, key, init.description);
2455
+ return descriptor;
2456
+ };
2457
+ field[fieldDecorator] = void 0;
2458
+ function containsMany(field, options) {
2459
+ return {
2460
+ setupField(fieldName, ownerPrototype) {
2461
+ let { computeVia, searchable } = options ?? {};
2462
+ let instance = new ContainsMany({
2463
+ cardThunk: cardThunk(field, {
2464
+ fieldName,
2465
+ ownerPrototype
2466
+ }),
2467
+ computeVia,
2468
+ name: fieldName,
2469
+ searchable
2470
+ });
2471
+ instance.configuration = options?.configuration;
2472
+ return makeDescriptor(instance);
2473
+ },
2474
+ description: options?.description
2475
+ };
2476
+ }
2477
+ function contains(field, options) {
2478
+ return {
2479
+ setupField(fieldName, ownerPrototype) {
2480
+ let { computeVia, searchable } = options ?? {};
2481
+ let instance = new Contains({
2482
+ cardThunk: cardThunk(field, {
2483
+ fieldName,
2484
+ ownerPrototype
2485
+ }),
2486
+ computeVia,
2487
+ name: fieldName,
2488
+ searchable
2489
+ });
2490
+ instance.configuration = options?.configuration;
2491
+ return makeDescriptor(instance);
2492
+ },
2493
+ description: options?.description
2494
+ };
2495
+ }
2496
+ function linksTo(cardOrThunk, options) {
2497
+ return {
2498
+ setupField(fieldName, ownerPrototype) {
2499
+ let { computeVia, searchable, query, eager } = options ?? {};
2500
+ let fieldCardThunk = cardThunk(cardOrThunk, {
2501
+ fieldName,
2502
+ ownerPrototype
2503
+ });
2504
+ if (query) validateRelationshipQuery(ownerPrototype, fieldName, query);
2505
+ let instance = new LinksTo({
2506
+ cardThunk: fieldCardThunk,
2507
+ declaredCardThunk: fieldCardThunk,
2508
+ computeVia,
2509
+ name: fieldName,
2510
+ searchable,
2511
+ queryDefinition: query,
2512
+ eager
2513
+ });
2514
+ instance.configuration = options?.configuration;
2515
+ return makeDescriptor(instance);
2516
+ },
2517
+ description: options?.description
2518
+ };
2519
+ }
2520
+ function linksToMany(cardOrThunk, options) {
2521
+ return {
2522
+ setupField(fieldName, ownerPrototype) {
2523
+ let { computeVia, searchable, query, eager } = options ?? {};
2524
+ let fieldCardThunk = cardThunk(cardOrThunk, {
2525
+ fieldName,
2526
+ ownerPrototype
2527
+ });
2528
+ if (query) validateRelationshipQuery(ownerPrototype, fieldName, query);
2529
+ let instance = new LinksToMany({
2530
+ cardThunk: fieldCardThunk,
2531
+ declaredCardThunk: fieldCardThunk,
2532
+ computeVia,
2533
+ name: fieldName,
2534
+ searchable,
2535
+ queryDefinition: query,
2536
+ eager
2537
+ });
2538
+ instance.configuration = options?.configuration;
2539
+ return makeDescriptor(instance);
2540
+ },
2541
+ description: options?.description
2542
+ };
2543
+ }
2544
+ var instanceMeta = /* @__PURE__ */ new WeakMap();
2545
+ var BaseDef = class {
2546
+ [isBaseInstance] = true;
2547
+ [relativeTo] = void 0;
2548
+ get [meta]() {
2549
+ return instanceMeta.get(this);
2550
+ }
2551
+ set [meta](value) {
2552
+ instanceMeta.set(this, value);
2553
+ dropComputedTurnMemo();
2554
+ }
2555
+ static baseDef;
2556
+ static data;
2557
+ static displayName = "Base";
2558
+ static icon;
2559
+ static getDisplayName(instance) {
2560
+ return instance.constructor.displayName;
2561
+ }
2562
+ static getIconComponent(instance) {
2563
+ return instance.constructor.icon;
2564
+ }
2565
+ get [realmURL]() {}
2566
+ static [emptyValue];
2567
+ static [serialize$1](value, doc, visited, opts) {
2568
+ if (primitive in this) return value;
2569
+ else return serializeCardResource(value, doc, opts, visited);
2570
+ }
2571
+ static [formatQuery](value) {
2572
+ if (primitive in this) return value;
2573
+ throw new Error(`Cannot format query value for composite card/field`);
2574
+ }
2575
+ static [queryableValue](value, stack = []) {
2576
+ if (primitive in this) {
2577
+ if (fieldSerializer in this) {
2578
+ assertIsSerializerName(this[fieldSerializer]);
2579
+ return getSerializer(this[fieldSerializer]).queryableValue(value, stack);
2580
+ }
2581
+ return value;
2582
+ } else {
2583
+ if (value == null) return null;
2584
+ let valueId = value.id;
2585
+ if (stack.includes(value) || valueId != null && stack.some((s) => s.id === valueId)) return { id: valueId };
2586
+ let makeAbsoluteURL = (maybeRelativeReference) => {
2587
+ if (!value[relativeTo]) return maybeRelativeReference;
2588
+ return resolveRef(maybeRelativeReference, value[relativeTo]);
2589
+ };
2590
+ return Object.fromEntries(Object.entries(getFields$1(value, {
2591
+ includeComputeds: true,
2592
+ usedLinksToFieldsOnly: true
2593
+ })).filter(([, field]) => !field?.queryDefinition).map(([fieldName, field]) => {
2594
+ let rawValue = peekAtField(value, fieldName);
2595
+ if (field?.fieldType === "linksToMany") return [fieldName, field.queryableValue(rawValue, [value, ...stack])?.map((v) => {
2596
+ return {
2597
+ ...v,
2598
+ id: makeAbsoluteURL(v.id)
2599
+ };
2600
+ }) ?? null];
2601
+ if (isNonPresentLink(rawValue)) return [fieldName, { id: makeAbsoluteURL(rawValue.reference) }];
2602
+ return [fieldName, getQueryableValue(field, rawValue, [value, ...stack])];
2603
+ }));
2604
+ }
2605
+ }
2606
+ static async [deserialize](data, relativeTo, doc, store, opts) {
2607
+ if (primitive in this) return data;
2608
+ return _createFromSerialized(this, data, doc, relativeTo, store, opts);
2609
+ }
2610
+ static getComponent(card, field, opts) {
2611
+ return getComponent(card, field, opts);
2612
+ }
2613
+ static assignInitialFieldValue(instance, fieldName, value) {
2614
+ instance[fieldName] = value;
2615
+ }
2616
+ constructor(data) {
2617
+ if (data !== void 0) for (let [fieldName, value] of Object.entries(data)) this.constructor.assignInitialFieldValue(this, fieldName, value);
2618
+ }
2619
+ };
2620
+ Object.defineProperty(BaseDef.prototype, Symbol.for("cardstack.getFields"), {
2621
+ value: getFields$1,
2622
+ enumerable: false,
2623
+ configurable: true
2624
+ });
2625
+ var Component = class extends Component$1 {};
2626
+ var DECLARED_CAPTURE_SPEC_FIELDS = new Set([
2627
+ "render",
2628
+ "format",
2629
+ "width",
2630
+ "height",
2631
+ "deviceScaleFactor",
2632
+ "background",
2633
+ "useAsThumbnail",
2634
+ "keyBy",
2635
+ "type",
2636
+ "filename",
2637
+ "title"
2638
+ ]);
2639
+ var DECLARED_CAPTURE_KEY_BY_VALUES = new Set(["generation", "file-content"]);
2640
+ var RASTER_OUTPUT_TYPES = new Set([
2641
+ "png",
2642
+ "jpeg",
2643
+ "webp"
2644
+ ]);
2645
+ function captureOwnerName(owner) {
2646
+ return owner.name || owner.displayName || "card";
2647
+ }
2648
+ function assertValidCaptureSpec(owner, name, spec) {
2649
+ let prefix = `capture "${name}" on ${captureOwnerName(owner)}`;
2650
+ if (!isValidCaptureName(name)) throw new Error(`${prefix}: name must be a URL-safe path segment (${CAPTURE_NAME_PATTERN.source}, at most 64 characters)`);
2651
+ if (spec === null || typeof spec !== "object" || Array.isArray(spec)) throw new Error(`${prefix}: spec must be an object`);
2652
+ let entry = spec;
2653
+ for (let key of Object.keys(entry)) if (!DECLARED_CAPTURE_SPEC_FIELDS.has(key)) throw new Error(`${prefix}: unknown field "${key}"`);
2654
+ let hasRender = entry.render !== void 0;
2655
+ let hasFormat = entry.format !== void 0;
2656
+ if (hasRender === hasFormat) throw new Error(`${prefix}: declare exactly one of render or format`);
2657
+ if (hasRender && !(typeof entry.render === "function" || typeof entry.render === "object" && entry.render !== null)) throw new Error(`${prefix}: render must be a component`);
2658
+ if (hasFormat && !isDeclaredCaptureFormat(entry.format)) throw new Error(`${prefix}: format must be one of ${DECLARED_CAPTURE_FORMATS.map((f) => `"${f}"`).join(", ")}`);
2659
+ if (entry.type === "pdf") {
2660
+ if (hasFormat && entry.format !== "isolated" && entry.format !== "embedded") throw new Error(`${prefix}: a pdf capture's format must be 'isolated' or 'embedded' — the box formats ('fitted', 'atom') need an envelope a pdf entry cannot describe`);
2661
+ for (let field of [
2662
+ "width",
2663
+ "height",
2664
+ "deviceScaleFactor",
2665
+ "background"
2666
+ ]) if (entry[field] !== void 0) throw new Error(`${prefix}: '${field}' is a raster capture field and cannot appear on a pdf capture — paper comes from the card's print CSS (@page)`);
2667
+ if (entry.useAsThumbnail !== void 0) throw new Error(`${prefix}: useAsThumbnail cannot appear on a pdf capture — a thumbnail must be an image`);
2668
+ for (let field of ["filename", "title"]) {
2669
+ let value = entry[field];
2670
+ if (value !== void 0 && typeof value !== "function" && (typeof value !== "string" || value.trim() === "")) throw new Error(`${prefix}: ${field} must be a non-empty string or a function of the instance`);
2671
+ }
2672
+ if (entry.keyBy !== void 0 && !DECLARED_CAPTURE_KEY_BY_VALUES.has(entry.keyBy)) throw new Error(`${prefix}: keyBy must be one of ${[...DECLARED_CAPTURE_KEY_BY_VALUES].map((v) => `"${v}"`).join(", ")}`);
2673
+ return;
2674
+ }
2675
+ for (let [field, max] of [["width", CAPTURE_MAX_VIEWPORT_WIDTH], ["height", CAPTURE_MAX_VIEWPORT_HEIGHT]]) {
2676
+ let value = entry[field];
2677
+ if (typeof value !== "number" || !Number.isInteger(value) || value < 1 || value > max) throw new Error(`${prefix}: ${field} must be an integer between 1 and ${max}`);
2678
+ }
2679
+ if (entry.deviceScaleFactor !== void 0) {
2680
+ let dsf = entry.deviceScaleFactor;
2681
+ if (typeof dsf !== "number" || !Number.isFinite(dsf) || dsf <= 0 || dsf > 3) throw new Error(`${prefix}: deviceScaleFactor must be a number between 0 (exclusive) and 3`);
2682
+ }
2683
+ let effectiveScale = typeof entry.deviceScaleFactor === "number" ? entry.deviceScaleFactor : 2;
2684
+ for (let field of ["width", "height"]) if (entry[field] * effectiveScale > 16384) throw new Error(`${prefix}: ${field} × deviceScaleFactor must be <= ${CAPTURE_MAX_PHYSICAL_EDGE_PX} physical pixels (deviceScaleFactor defaults to 2)`);
2685
+ if (entry.background !== void 0 && (typeof entry.background !== "string" || entry.background.length === 0)) throw new Error(`${prefix}: background must be 'transparent' or a CSS color`);
2686
+ if (entry.useAsThumbnail !== void 0 && typeof entry.useAsThumbnail !== "boolean") throw new Error(`${prefix}: useAsThumbnail must be a boolean`);
2687
+ if (entry.filename !== void 0) throw new Error(`${prefix}: filename names a saved document and is only valid on a pdf capture (type: 'pdf')`);
2688
+ if (entry.title !== void 0) throw new Error(`${prefix}: title names a document and is only valid on a pdf capture (type: 'pdf')`);
2689
+ if (entry.keyBy !== void 0 && !DECLARED_CAPTURE_KEY_BY_VALUES.has(entry.keyBy)) throw new Error(`${prefix}: keyBy must be one of ${[...DECLARED_CAPTURE_KEY_BY_VALUES].map((v) => `"${v}"`).join(", ")}`);
2690
+ if (entry.type !== void 0 && !RASTER_OUTPUT_TYPES.has(entry.type)) throw new Error(`${prefix}: type must be one of ${[...RASTER_OUTPUT_TYPES].map((v) => `"${v}"`).join(", ")}`);
2691
+ if (entry.background === "transparent" && entry.type === "jpeg") throw new Error(`${prefix}: background 'transparent' cannot be captured as jpeg (no alpha channel) — use type 'png' or 'webp', or an opaque background`);
2692
+ }
2693
+ function getCaptures(cardOrFileClass) {
2694
+ let levels = [];
2695
+ let current = cardOrFileClass;
2696
+ while (typeof current === "function") {
2697
+ if (Object.getOwnPropertyDescriptor(current, "screenshots")) throw new Error(`${captureOwnerName(current)} declares 'static screenshots', which is no longer read — rename it to 'static captures'`);
2698
+ let descriptor = Object.getOwnPropertyDescriptor(current, "captures");
2699
+ if (descriptor) {
2700
+ let declarations = descriptor.get ? descriptor.get.call(current) : descriptor.value;
2701
+ if (declarations != null) {
2702
+ if (typeof declarations !== "object" || Array.isArray(declarations)) throw new Error(`static captures on ${captureOwnerName(current)} must be an object mapping names to specs`);
2703
+ levels.unshift({
2704
+ owner: current,
2705
+ declarations
2706
+ });
2707
+ }
2708
+ }
2709
+ current = Object.getPrototypeOf(current);
2710
+ }
2711
+ let merged = {};
2712
+ let isFileBacked = cardOrFileClass === FileDef || cardOrFileClass.prototype instanceof FileDef;
2713
+ for (let { owner, declarations } of levels) for (let [name, spec] of Object.entries(declarations)) {
2714
+ assertValidCaptureSpec(owner, name, spec);
2715
+ if (spec.keyBy === "file-content" && !isFileBacked) throw new Error(`capture "${name}" on ${captureOwnerName(owner)}: keyBy 'file-content' requires a file-backed def (FileDef or a subclass); a card has no file content to key by — use 'generation' or omit keyBy`);
2716
+ merged[name] = spec;
2717
+ }
2718
+ let thumbnails = Object.keys(merged).filter((name) => merged[name].useAsThumbnail);
2719
+ if (thumbnails.length > 1) throw new Error(`${captureOwnerName(cardOrFileClass)} declares more than one useAsThumbnail capture (${thumbnails.map((name) => `"${name}"`).join(", ")}); at most one entry may feed the thumbnail — override an inherited entry by name to clear its flag`);
2720
+ return merged;
2721
+ }
2722
+ function serializeDeclaredCaptures(cardOrFileClass, instance) {
2723
+ let roster = {};
2724
+ for (let [name, spec] of Object.entries(getCaptures(cardOrFileClass))) {
2725
+ let payload = {};
2726
+ if (spec.width !== void 0) payload.width = spec.width;
2727
+ if (spec.height !== void 0) payload.height = spec.height;
2728
+ if (spec.deviceScaleFactor !== void 0) payload.deviceScaleFactor = spec.deviceScaleFactor;
2729
+ if (spec.background !== void 0) payload.background = spec.background;
2730
+ if (spec.useAsThumbnail !== void 0) payload.useAsThumbnail = spec.useAsThumbnail;
2731
+ if (spec.keyBy !== void 0) payload.keyBy = spec.keyBy;
2732
+ if (spec.type !== void 0) payload.type = spec.type;
2733
+ if (spec.render) payload.render = true;
2734
+ else payload.format = spec.format;
2735
+ if (spec.type === "pdf" && instance) {
2736
+ let filename = resolveCaptureText(spec, "filename", instance, defaultCaptureFilename(instance));
2737
+ if (filename !== void 0) payload.filename = filename;
2738
+ let title = resolveCaptureText(spec, "title", instance, defaultCaptureTitle(instance));
2739
+ if (title !== void 0) payload.title = title;
2740
+ }
2741
+ roster[name] = payload;
2742
+ }
2743
+ return roster;
2744
+ }
2745
+ var CAPTURE_TEXT_ROSTER_MAX_LENGTH = 255;
2746
+ function resolveCaptureText(spec, field, instance, fallback) {
2747
+ let declaration = spec[field];
2748
+ let declared;
2749
+ try {
2750
+ declared = typeof declaration === "function" ? declaration(instance) : declaration;
2751
+ } catch (e) {
2752
+ console.warn(`capture ${field} function threw; using the default`, e);
2753
+ declared = void 0;
2754
+ }
2755
+ return boundedCaptureText(declared) ?? boundedCaptureText(fallback);
2756
+ }
2757
+ function defaultCaptureFilename(instance) {
2758
+ if (instance instanceof FileDef) return instance.name?.replace(/\.[^.]+$/, "");
2759
+ let title = instance.cardTitle;
2760
+ return title === untitledCardTitle(instance.constructor) ? void 0 : title;
2761
+ }
2762
+ function defaultCaptureTitle(instance) {
2763
+ if (instance instanceof FileDef) return instance.name?.replace(/\.[^.]+$/, "");
2764
+ return instance.cardTitle;
2765
+ }
2766
+ function boundedCaptureText(value) {
2767
+ if (typeof value !== "string") return;
2768
+ let trimmed = wellFormedFilename(value).replace(/[\u0000-\u001f\u007f]+/g, " ").trim();
2769
+ if (!trimmed) return;
2770
+ return [...trimmed].slice(0, CAPTURE_TEXT_ROSTER_MAX_LENGTH).join("");
2771
+ }
2772
+ function composeCaptureURLs(instance) {
2773
+ let urls = {};
2774
+ try {
2775
+ for (let name of Object.keys(getCaptures(instance.constructor))) urls[name] = void 0;
2776
+ } catch {}
2777
+ let captured = getCardMeta(instance, "captures");
2778
+ if (captured) for (let [name, entry] of Object.entries(captured)) urls[name] = entry.url;
2779
+ return urls;
2780
+ }
2781
+ function thumbnailCaptureURL(instance) {
2782
+ let name;
2783
+ try {
2784
+ name = Object.entries(getCaptures(instance.constructor)).find(([, spec]) => spec.useAsThumbnail)?.[0];
2785
+ } catch {
2786
+ return;
2787
+ }
2788
+ if (!name) return;
2789
+ return getCardMeta(instance, "captures")?.[name]?.url;
2790
+ }
2791
+ var FieldDef = class extends BaseDef {
2792
+ static isFieldDef = true;
2793
+ static displayName = "Field";
2794
+ static icon = IconComponent$5;
2795
+ [realmContext];
2796
+ get [realmURL]() {
2797
+ let realmURLString = this[realmContext];
2798
+ return realmURLString ? new URL(realmURLString) : void 0;
2799
+ }
2800
+ static configuration;
2801
+ static embedded = MissingTemplate;
2802
+ static edit = FieldDefEditTemplate;
2803
+ static atom = DefaultAtomViewTemplate;
2804
+ static fitted = MissingTemplate;
2805
+ static markdown = DefaultMarkdownFallbackTemplate;
2806
+ };
2807
+ var ReadOnlyField = class extends FieldDef {
2808
+ static [primitive];
2809
+ static [useIndexBasedKey];
2810
+ static embedded = class Embedded extends Component {
2811
+ static {
2812
+ setComponentTemplate(templateFactory({
2813
+ "id": "yu3AqSPu",
2814
+ "block": "[[[1,[30,1]]],[\"@model\"],[]]",
2815
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/card-api.gts",
2816
+ "isStrictMode": true
2817
+ }), this);
2818
+ }
2819
+ };
2820
+ static edit = class Edit extends Component {
2821
+ static {
2822
+ setComponentTemplate(templateFactory({
2823
+ "id": "yu3AqSPu",
2824
+ "block": "[[[1,[30,1]]],[\"@model\"],[]]",
2825
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/card-api.gts",
2826
+ "isStrictMode": true
2827
+ }), this);
2828
+ }
2829
+ };
2830
+ static markdown = class Markdown extends Component {
2831
+ static {
2832
+ setComponentTemplate(templateFactory({
2833
+ "id": "H7UaBlYi",
2834
+ "block": "[[[1,[28,[32,0],[[30,1]],null]]],[\"@model\"],[]]",
2835
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/card-api.gts",
2836
+ "scope": () => [markdownEscape],
2837
+ "isStrictMode": true
2838
+ }), this);
2839
+ }
2840
+ };
2841
+ };
2842
+ var StringField = class extends FieldDef {
2843
+ static displayName = "String";
2844
+ static icon = IconComponent$7;
2845
+ static [primitive];
2846
+ static [useIndexBasedKey];
2847
+ static embedded = class Embedded extends Component {
2848
+ static {
2849
+ setComponentTemplate(templateFactory({
2850
+ "id": "yu3AqSPu",
2851
+ "block": "[[[1,[30,1]]],[\"@model\"],[]]",
2852
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/card-api.gts",
2853
+ "isStrictMode": true
2854
+ }), this);
2855
+ }
2856
+ };
2857
+ static edit = class Edit extends Component {
2858
+ static {
2859
+ setComponentTemplate(templateFactory({
2860
+ "id": "SVHLVluS",
2861
+ "block": "[[[8,[32,0],null,[[\"@value\",\"@onInput\",\"@disabled\"],[[30,1],[30,2],[28,[32,1],[[30,3]],null]]],null]],[\"@model\",\"@set\",\"@canEdit\"],[]]",
2862
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/card-api.gts",
2863
+ "scope": () => [BoxelInput, not],
2864
+ "isStrictMode": true
2865
+ }), this);
2866
+ }
2867
+ };
2868
+ static atom = class Atom extends Component {
2869
+ static {
2870
+ setComponentTemplate(templateFactory({
2871
+ "id": "yu3AqSPu",
2872
+ "block": "[[[1,[30,1]]],[\"@model\"],[]]",
2873
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/card-api.gts",
2874
+ "isStrictMode": true
2875
+ }), this);
2876
+ }
2877
+ };
2878
+ static markdown = class Markdown extends Component {
2879
+ static {
2880
+ setComponentTemplate(templateFactory({
2881
+ "id": "H7UaBlYi",
2882
+ "block": "[[[1,[28,[32,0],[[30,1]],null]]],[\"@model\"],[]]",
2883
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/card-api.gts",
2884
+ "scope": () => [markdownEscape],
2885
+ "isStrictMode": true
2886
+ }), this);
2887
+ }
2888
+ };
2889
+ };
2890
+ var MaybeBase64Field = class MaybeBase64Field extends StringField {
2891
+ static embedded = class Embedded extends Component {
2892
+ get isBase64() {
2893
+ return this.args.model?.startsWith("data:");
2894
+ }
2895
+ static {
2896
+ setComponentTemplate(templateFactory({
2897
+ "id": "3dR8Q5uH",
2898
+ "block": "[[[41,[30,0,[\"isBase64\"]],[[[1,\" \"],[10,\"em\"],[12],[1,\"(Base64 encoded value)\"],[13],[1,\"\\n\"]],[]],[[[1,\" \"],[1,[30,1]],[1,\"\\n\"]],[]]]],[\"@model\"],[\"if\"]]",
2899
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/card-api.gts",
2900
+ "isStrictMode": true
2901
+ }), this);
2902
+ }
2903
+ };
2904
+ static atom = MaybeBase64Field.embedded;
2905
+ static markdown = class Markdown extends Component {
2906
+ get isBase64() {
2907
+ return this.args.model?.startsWith("data:");
2908
+ }
2909
+ get escaped() {
2910
+ return markdownEscape(this.args.model);
2911
+ }
2912
+ static {
2913
+ setComponentTemplate(templateFactory({
2914
+ "id": "vNtiX7+g",
2915
+ "block": "[[[41,[30,0,[\"isBase64\"]],[[[1,\" [binary content]\\n\"]],[]],[[[1,\" \"],[1,[30,0,[\"escaped\"]]],[1,\"\\n\"]],[]]]],[],[\"if\"]]",
2916
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/card-api.gts",
2917
+ "isStrictMode": true
2918
+ }), this);
2919
+ }
2920
+ };
2921
+ };
2922
+ var TextAreaField = class extends StringField {
2923
+ static displayName = "TextArea";
2924
+ static icon = IconComponent$4;
2925
+ static edit = class Edit extends Component {
2926
+ static {
2927
+ setComponentTemplate(templateFactory({
2928
+ "id": "1+EybsWr",
2929
+ "block": "[[[8,[32,0],[[24,0,\"boxel-text-area\"]],[[\"@value\",\"@onInput\",\"@type\",\"@readonly\"],[[30,1],[30,2],\"textarea\",[28,[32,1],[[30,3]],null]]],null]],[\"@model\",\"@set\",\"@canEdit\"],[]]",
2930
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/card-api.gts",
2931
+ "scope": () => [BoxelInput, not],
2932
+ "isStrictMode": true
2933
+ }), this);
2934
+ }
2935
+ };
2936
+ static markdown = class Markdown extends Component {
2937
+ get escapedWithBreaks() {
2938
+ return markdownEscape(this.args.model).replace(/\n/g, " \n");
2939
+ }
2940
+ static {
2941
+ setComponentTemplate(templateFactory({
2942
+ "id": "jVdbtwhs",
2943
+ "block": "[[[1,[30,0,[\"escapedWithBreaks\"]]]],[],[]]",
2944
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/card-api.gts",
2945
+ "isStrictMode": true
2946
+ }), this);
2947
+ }
2948
+ };
2949
+ };
2950
+ var CSSField = class extends TextAreaField {
2951
+ static displayName = "CSS Field";
2952
+ static embedded = class Embedded extends Component {
2953
+ static {
2954
+ setComponentTemplate(templateFactory({
2955
+ "id": "ZnIiaaVk",
2956
+ "block": "[[[10,0],[14,0,\"css-field-container\"],[14,\"data-scopedcss-fa4a4bfd86-5609338547\",\"\"],[12],[1,\"\\n\"],[41,[30,1,[\"length\"]],[[[1,\" \"],[8,[32,0],[[24,0,\"css-field-copy-button\"],[24,\"data-scopedcss-fa4a4bfd86-5609338547\",\"\"]],[[\"@textToCopy\"],[[30,1]]],null],[1,\"\\n\"]],[]],null],[1,\" \"],[10,\"pre\"],[14,0,\"css-field\"],[14,\"data-test-css-field\",\"\"],[14,\"data-scopedcss-fa4a4bfd86-5609338547\",\"\"],[12],[1,[52,[30,1],[30,1],\"/* No CSS defined */\"]],[13],[1,\"\\n\"],[13],[1,\"\\n\"]],[\"@model\"],[\"if\"]]",
2957
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/card-api.gts",
2958
+ "scope": () => [CopyButton],
2959
+ "isStrictMode": true
2960
+ }), this);
2961
+ }
2962
+ };
2963
+ static markdown = class Markdown extends Component {
2964
+ get fenced() {
2965
+ let value = this.args.model ?? "";
2966
+ let longestRun = 0;
2967
+ let match = value.match(/`+/g);
2968
+ if (match) {
2969
+ for (let run of match) if (run.length > longestRun) longestRun = run.length;
2970
+ }
2971
+ let fence = "`".repeat(Math.max(3, longestRun + 1));
2972
+ return `${fence}css\n${value}\n${fence}`;
2973
+ }
2974
+ static {
2975
+ setComponentTemplate(templateFactory({
2976
+ "id": "AGaN2Fyu",
2977
+ "block": "[[[1,[30,0,[\"fenced\"]]]],[],[]]",
2978
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/card-api.gts",
2979
+ "isStrictMode": true
2980
+ }), this);
2981
+ }
2982
+ };
2983
+ };
2984
+ var MarkdownField = class extends StringField {
2985
+ static displayName = "Markdown";
2986
+ static icon = IconComponent$6;
2987
+ static embedded = class MarkdownViewTemplate extends Component {
2988
+ static {
2989
+ setComponentTemplate(templateFactory({
2990
+ "id": "R3irZOGP",
2991
+ "block": "[[[8,[32,0],null,[[\"@content\"],[[30,1]]],null]],[\"@model\"],[]]",
2992
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/card-api.gts",
2993
+ "scope": () => [MarkDownTemplate],
2994
+ "isStrictMode": true
2995
+ }), this);
2996
+ }
2997
+ };
2998
+ static atom = class MarkdownViewTemplate extends Component {
2999
+ static {
3000
+ setComponentTemplate(templateFactory({
3001
+ "id": "R3irZOGP",
3002
+ "block": "[[[8,[32,0],null,[[\"@content\"],[[30,1]]],null]],[\"@model\"],[]]",
3003
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/card-api.gts",
3004
+ "scope": () => [MarkDownTemplate],
3005
+ "isStrictMode": true
3006
+ }), this);
3007
+ }
3008
+ };
3009
+ static edit = class Edit extends Component {
3010
+ static {
3011
+ setComponentTemplate(templateFactory({
3012
+ "id": "uwmRY1m3",
3013
+ "block": "[[[8,[32,0],[[24,0,\"boxel-text-area\"]],[[\"@type\",\"@value\",\"@onInput\",\"@disabled\",\"@readonly\"],[\"textarea\",[30,1],[30,2],[28,[32,1],[[30,3]],null],[28,[32,1],[[30,3]],null]]],null]],[\"@model\",\"@set\",\"@canEdit\"],[]]",
3014
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/card-api.gts",
3015
+ "scope": () => [BoxelInput, not],
3016
+ "isStrictMode": true
3017
+ }), this);
3018
+ }
3019
+ };
3020
+ static markdown = class Markdown extends Component {
3021
+ static {
3022
+ setComponentTemplate(templateFactory({
3023
+ "id": "yu3AqSPu",
3024
+ "block": "[[[1,[30,1]]],[\"@model\"],[]]",
3025
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/card-api.gts",
3026
+ "isStrictMode": true
3027
+ }), this);
3028
+ }
3029
+ };
3030
+ };
3031
+ function deserializeForUI(value) {
3032
+ if (validate(value)) return null;
3033
+ return deserializeSync(value);
3034
+ }
3035
+ function serializeForUI(val) {
3036
+ let serialized = serialize(val);
3037
+ if (serialized != null) return String(serialized);
3038
+ }
3039
+ var NumberField = class extends FieldDef {
3040
+ static displayName = "Number";
3041
+ static icon = IconComponent;
3042
+ static [primitive];
3043
+ static [fieldSerializer] = "number";
3044
+ static [useIndexBasedKey];
3045
+ static embedded = class View extends Component {
3046
+ static {
3047
+ setComponentTemplate(templateFactory({
3048
+ "id": "yu3AqSPu",
3049
+ "block": "[[[1,[30,1]]],[\"@model\"],[]]",
3050
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/card-api.gts",
3051
+ "isStrictMode": true
3052
+ }), this);
3053
+ }
3054
+ };
3055
+ static atom = this.embedded;
3056
+ static edit = class Edit extends Component {
3057
+ static {
3058
+ setComponentTemplate(templateFactory({
3059
+ "id": "imqDUTVM",
3060
+ "block": "[[[8,[32,0],null,[[\"@value\",\"@onInput\",\"@errorMessage\",\"@state\",\"@disabled\"],[[30,0,[\"textInputValidator\",\"asString\"]],[30,0,[\"textInputValidator\",\"onInput\"]],[30,0,[\"textInputValidator\",\"errorMessage\"]],[52,[30,0,[\"textInputValidator\",\"isInvalid\"]],\"invalid\",\"none\"],[28,[32,1],[[30,1]],null]]],null]],[\"@canEdit\"],[\"if\"]]",
3061
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/card-api.gts",
3062
+ "scope": () => [BoxelInput, not],
3063
+ "isStrictMode": true
3064
+ }), this);
3065
+ }
3066
+ textInputValidator = new TextInputValidator(() => this.args.model, (inputVal) => this.args.set(inputVal), deserializeForUI, serializeForUI, validate);
3067
+ };
3068
+ static markdown = class Markdown extends Component {
3069
+ static {
3070
+ setComponentTemplate(templateFactory({
3071
+ "id": "H7UaBlYi",
3072
+ "block": "[[[1,[28,[32,0],[[30,1]],null]]],[\"@model\"],[]]",
3073
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/card-api.gts",
3074
+ "scope": () => [markdownEscape],
3075
+ "isStrictMode": true
3076
+ }), this);
3077
+ }
3078
+ };
3079
+ };
3080
+ var FileContentMismatchError = class extends Error {
3081
+ name = "FileContentMismatchError";
3082
+ };
3083
+ var FileDef = class extends BaseDef {
3084
+ static displayName = "File";
3085
+ static isFileDef = true;
3086
+ static icon = IconComponent$26;
3087
+ [isSavedInstance] = true;
3088
+ get [realmURL]() {
3089
+ let realmURLString = getCardMeta(this, "realmURL");
3090
+ return realmURLString ? new URL(realmURLString) : void 0;
3091
+ }
3092
+ static assignInitialFieldValue(instance, fieldName, value) {
3093
+ if (fieldName === "id") getDataBucket(instance).set("id", value);
3094
+ else super.assignInitialFieldValue(instance, fieldName, value);
3095
+ }
3096
+ static {
3097
+ decorateFieldV2(this.prototype, "id", [field], function() {
3098
+ return contains(ReadOnlyField);
3099
+ });
3100
+ }
3101
+ #id = (initializeDeferredDecorator(this, "id"), void 0);
3102
+ static {
3103
+ decorateFieldV2(this.prototype, "sourceUrl", [field], function() {
3104
+ return contains(StringField);
3105
+ });
3106
+ }
3107
+ #sourceUrl = (initializeDeferredDecorator(this, "sourceUrl"), void 0);
3108
+ static {
3109
+ decorateFieldV2(this.prototype, "url", [field], function() {
3110
+ return contains(StringField);
3111
+ });
3112
+ }
3113
+ #url = (initializeDeferredDecorator(this, "url"), void 0);
3114
+ static {
3115
+ decorateFieldV2(this.prototype, "name", [field], function() {
3116
+ return contains(StringField);
3117
+ });
3118
+ }
3119
+ #name = (initializeDeferredDecorator(this, "name"), void 0);
3120
+ static {
3121
+ decorateFieldV2(this.prototype, "contentType", [field], function() {
3122
+ return contains(StringField);
3123
+ });
3124
+ }
3125
+ #contentType = (initializeDeferredDecorator(this, "contentType"), void 0);
3126
+ static {
3127
+ decorateFieldV2(this.prototype, "contentHash", [field], function() {
3128
+ return contains(StringField);
3129
+ });
3130
+ }
3131
+ #contentHash = (initializeDeferredDecorator(this, "contentHash"), void 0);
3132
+ static {
3133
+ decorateFieldV2(this.prototype, "contentSize", [field], function() {
3134
+ return contains(NumberField);
3135
+ });
3136
+ }
3137
+ #contentSize = (initializeDeferredDecorator(this, "contentSize"), void 0);
3138
+ get lastModified() {
3139
+ return this[meta]?.lastModified;
3140
+ }
3141
+ get resourceCreatedAt() {
3142
+ return this[meta]?.resourceCreatedAt;
3143
+ }
3144
+ get captureURLs() {
3145
+ return composeCaptureURLs(this);
3146
+ }
3147
+ get capturesMeta() {
3148
+ return getCardMeta(this, "captures");
3149
+ }
3150
+ static previewComponent;
3151
+ static fileKind;
3152
+ static fileFamily;
3153
+ static previewKind;
3154
+ static previewAdapter;
3155
+ static previewSource;
3156
+ static embedded = FileDefEmbeddedTemplate;
3157
+ static fitted = FileDefFittedTemplate;
3158
+ static isolated = FileDefIsolatedTemplate;
3159
+ static atom = FileDefAtomTemplate;
3160
+ static edit = FileDefEditTemplate;
3161
+ static markdown = DefaultMarkdownFallbackTemplate;
3162
+ static captures;
3163
+ static async extractAttributes(url, getStream, options = {}) {
3164
+ let parsed = new URL(url);
3165
+ let name = decodeURIComponent(parsed.pathname.split("/").pop() ?? parsed.pathname);
3166
+ let contentType = inferContentType(name);
3167
+ let contentHash = options.contentHash;
3168
+ let contentSize = options.contentSize;
3169
+ if (!contentHash || contentSize === void 0) {
3170
+ let bytes = await byteStreamToUint8Array(await getStream());
3171
+ if (!contentHash) contentHash = computeContentHash(bytes);
3172
+ if (contentSize === void 0) contentSize = bytes.byteLength;
3173
+ }
3174
+ return {
3175
+ sourceUrl: url,
3176
+ url,
3177
+ name,
3178
+ contentType,
3179
+ contentHash,
3180
+ contentSize
3181
+ };
3182
+ }
3183
+ serialize() {
3184
+ return {
3185
+ sourceUrl: this.sourceUrl,
3186
+ url: this.url,
3187
+ name: this.name,
3188
+ contentType: this.contentType,
3189
+ contentHash: this.contentHash,
3190
+ contentSize: this.contentSize
3191
+ };
3192
+ }
3193
+ [getMenuItems](params) {
3194
+ return getDefaultFileMenuItems(this, params);
3195
+ }
3196
+ };
3197
+ function createFileDef({ url, sourceUrl, name, contentType, contentHash, contentSize }) {
3198
+ return new FileDef({
3199
+ url,
3200
+ sourceUrl,
3201
+ name,
3202
+ contentType,
3203
+ contentHash,
3204
+ contentSize
3205
+ });
3206
+ }
3207
+ var ImageDef = class extends FileDef {
3208
+ static displayName = "Image";
3209
+ static icon = IconComponent$9;
3210
+ static acceptTypes = "image/*";
3211
+ static fileFamily = "image";
3212
+ static {
3213
+ decorateFieldV2(this.prototype, "width", [field], function() {
3214
+ return contains(NumberField);
3215
+ });
3216
+ }
3217
+ #width = (initializeDeferredDecorator(this, "width"), void 0);
3218
+ static {
3219
+ decorateFieldV2(this.prototype, "height", [field], function() {
3220
+ return contains(NumberField);
3221
+ });
3222
+ }
3223
+ #height = (initializeDeferredDecorator(this, "height"), void 0);
3224
+ static previewComponent = ImagePreview;
3225
+ static captures = IMAGE_THUMB_CAPTURES;
3226
+ static markdown = class Markdown extends Component {
3227
+ get text() {
3228
+ let model = this.args.model;
3229
+ if (!model) return "";
3230
+ let url = model.url ?? model.sourceUrl ?? "";
3231
+ let name = model.name ?? "";
3232
+ if (!url && !name) return "";
3233
+ return markdownImage(name, url);
3234
+ }
3235
+ static {
3236
+ setComponentTemplate(templateFactory({
3237
+ "id": "7FePGbIC",
3238
+ "block": "[[[1,[30,0,[\"text\"]]]],[],[]]",
3239
+ "moduleName": "/home/runner/work/boxel/boxel/packages/base/card-api.gts",
3240
+ "isStrictMode": true
3241
+ }), this);
3242
+ }
3243
+ };
3244
+ };
3245
+ var CardInfoField = class extends FieldDef {
3246
+ static displayName = "Card Info";
3247
+ static {
3248
+ decorateFieldV2(this.prototype, "name", [field], function() {
3249
+ return contains(StringField);
3250
+ });
3251
+ }
3252
+ #name = (initializeDeferredDecorator(this, "name"), void 0);
3253
+ static {
3254
+ decorateFieldV2(this.prototype, "summary", [field], function() {
3255
+ return contains(StringField);
3256
+ });
3257
+ }
3258
+ #summary = (initializeDeferredDecorator(this, "summary"), void 0);
3259
+ static {
3260
+ decorateFieldV2(this.prototype, "cardThumbnail", [field], function() {
3261
+ return linksTo(() => ImageDef);
3262
+ });
3263
+ }
3264
+ #cardThumbnail = (initializeDeferredDecorator(this, "cardThumbnail"), void 0);
3265
+ static {
3266
+ decorateFieldV2(this.prototype, "cardThumbnailURL", [field], function() {
3267
+ return contains(MaybeBase64Field);
3268
+ });
3269
+ }
3270
+ #cardThumbnailURL = (initializeDeferredDecorator(this, "cardThumbnailURL"), void 0);
3271
+ static {
3272
+ decorateFieldV2(this.prototype, "theme", [field], function() {
3273
+ return linksTo(() => Theme);
3274
+ });
3275
+ }
3276
+ #theme = (initializeDeferredDecorator(this, "theme"), void 0);
3277
+ static {
3278
+ decorateFieldV2(this.prototype, "notes", [field], function() {
3279
+ return contains(MarkdownField);
3280
+ });
3281
+ }
3282
+ #notes = (initializeDeferredDecorator(this, "notes"), void 0);
3283
+ };
3284
+ var CardDef = class CardDef extends BaseDef {
3285
+ [localId] = v4();
3286
+ [isSavedInstance] = false;
3287
+ get [fieldsUntracked]() {
3288
+ return getFieldOverrides(this) ? Object.fromEntries(getFieldOverrides(this)) : void 0;
3289
+ }
3290
+ get [fields]() {
3291
+ entangleWithCardTracking(this);
3292
+ return this[fieldsUntracked];
3293
+ }
3294
+ set [fields](overrides) {
3295
+ let existingOverrides = getFieldOverrides(this);
3296
+ for (let [fieldName, clazz] of Object.entries(overrides)) existingOverrides.set(fieldName, clazz);
3297
+ notifyCardTracking(this);
3298
+ }
3299
+ static {
3300
+ decorateFieldV2(this.prototype, "id", [field], function() {
3301
+ return contains(ReadOnlyField);
3302
+ });
3303
+ }
3304
+ #id = (initializeDeferredDecorator(this, "id"), void 0);
3305
+ static {
3306
+ decorateFieldV2(this.prototype, "cardInfo", [field], function() {
3307
+ return contains(CardInfoField);
3308
+ });
3309
+ }
3310
+ #cardInfo = (initializeDeferredDecorator(this, "cardInfo"), void 0);
3311
+ static {
3312
+ decorateFieldV2(this.prototype, "cardTitle", [field], function() {
3313
+ return contains(StringField, { computeVia: function() {
3314
+ return this.cardInfo.name?.trim()?.length ? this.cardInfo.name : untitledCardTitle(this.constructor);
3315
+ } });
3316
+ });
3317
+ }
3318
+ #cardTitle = (initializeDeferredDecorator(this, "cardTitle"), void 0);
3319
+ static {
3320
+ decorateFieldV2(this.prototype, "cardDescription", [field], function() {
3321
+ return contains(StringField, { computeVia: function() {
3322
+ return this.cardInfo.summary;
3323
+ } });
3324
+ });
3325
+ }
3326
+ #cardDescription = (initializeDeferredDecorator(this, "cardDescription"), void 0);
3327
+ static {
3328
+ decorateFieldV2(this.prototype, "cardTheme", [field], function() {
3329
+ return linksTo(() => Theme, { computeVia: function() {
3330
+ return this.cardInfo.theme;
3331
+ } });
3332
+ });
3333
+ }
3334
+ #cardTheme = (initializeDeferredDecorator(this, "cardTheme"), void 0);
3335
+ static {
3336
+ decorateFieldV2(this.prototype, "cardThumbnailURL", [field], function() {
3337
+ return contains(MaybeBase64Field, { computeVia: function() {
3338
+ return this.cardInfo.cardThumbnailURL || this.cardInfo.cardThumbnail?.url || thumbnailCaptureURL(this);
3339
+ } });
3340
+ });
3341
+ }
3342
+ #cardThumbnailURL = (initializeDeferredDecorator(this, "cardThumbnailURL"), void 0);
3343
+ static displayName = "Card";
3344
+ static isCardDef = true;
3345
+ static icon = IconComponent$22;
3346
+ static assignInitialFieldValue(instance, fieldName, value) {
3347
+ if (fieldName === "id") getDataBucket(instance).set("id", value);
3348
+ else super.assignInitialFieldValue(instance, fieldName, value);
3349
+ }
3350
+ static embedded = DefaultEmbeddedTemplate;
3351
+ static fitted = DefaultFittedTemplate;
3352
+ static isolated = DefaultCardDefTemplate;
3353
+ static edit = DefaultCardDefTemplate;
3354
+ static atom = DefaultAtomViewTemplate;
3355
+ static head = DefaultHeadTemplate;
3356
+ static markdown = DefaultMarkdownFallbackTemplate;
3357
+ static captures;
3358
+ static get hasCustomEditTemplate() {
3359
+ return this.edit !== CardDef.edit;
3360
+ }
3361
+ static get hasCustomIsolatedTemplate() {
3362
+ return this.isolated !== CardDef.isolated;
3363
+ }
3364
+ static prefersWideFormat = false;
3365
+ static headerColor = null;
3366
+ constructor(data) {
3367
+ super(data);
3368
+ if (data && localId in data && typeof data[localId] === "string") this[localId] = data[localId];
3369
+ if (data && fields in data && data[fields]) {
3370
+ let overrides = getFieldOverrides(this);
3371
+ for (let [fieldName, clazz] of Object.entries(data[fields])) overrides.set(fieldName, clazz);
3372
+ }
3373
+ }
3374
+ get [realmInfo]() {
3375
+ return getCardMeta(this, "realmInfo");
3376
+ }
3377
+ get [realmURL]() {
3378
+ let realmURLString = getCardMeta(this, "realmURL");
3379
+ return realmURLString ? new URL(realmURLString) : void 0;
3380
+ }
3381
+ get captureURLs() {
3382
+ return composeCaptureURLs(this);
3383
+ }
3384
+ get capturesMeta() {
3385
+ return getCardMeta(this, "captures");
3386
+ }
3387
+ [getMenuItems](params) {
3388
+ return getDefaultCardMenuItems(this, params);
3389
+ }
3390
+ get [hasNothingToShow]() {
3391
+ return false;
3392
+ }
3393
+ };
3394
+ var CssImportField = class extends StringField {
3395
+ static displayName = "CSS Import";
3396
+ static icon = IconComponent$3;
3397
+ };
3398
+ var Theme = class extends CardDef {
3399
+ static displayName = "Theme";
3400
+ static icon = IconComponent$8;
3401
+ static {
3402
+ decorateFieldV2(this.prototype, "cssVariables", [field], function() {
3403
+ return contains(CSSField, { description: "CSS variable definitions that build on shadcn variables (typically for :root and .dark selectors) injected into the CardContainer." });
3404
+ });
3405
+ }
3406
+ #cssVariables = (initializeDeferredDecorator(this, "cssVariables"), void 0);
3407
+ static {
3408
+ decorateFieldV2(this.prototype, "cssImports", [field], function() {
3409
+ return containsMany(CssImportField, { description: "CSS links (e.g. Google Fonts) imported via the CardContainer." });
3410
+ });
3411
+ }
3412
+ #cssImports = (initializeDeferredDecorator(this, "cssImports"), void 0);
3413
+ [getMenuItems](params) {
3414
+ let menuItems = super[getMenuItems](params);
3415
+ if (params.menuContext === "interact" && params.toolContext && this.id) menuItems = [
3416
+ ...menuItems,
3417
+ {
3418
+ label: "Copy and Edit",
3419
+ action: async () => {
3420
+ if (!params.toolContext || !this.id) return;
3421
+ await new CopyAndEditTool(params.toolContext).execute({ card: this });
3422
+ },
3423
+ icon: IconComponent$2,
3424
+ disabled: !this.id
3425
+ },
3426
+ {
3427
+ label: "Modify Theme via AI",
3428
+ action: async () => {
3429
+ await new PatchThemeTool(params.toolContext).execute({ cardId: this.id });
3430
+ },
3431
+ icon: IconComponent$1,
3432
+ disabled: !this.id
3433
+ }
3434
+ ];
3435
+ return menuItems;
3436
+ }
3437
+ };
3438
+ function subscribeToChanges(fieldOrCard, subscriber, enclosing) {
3439
+ if (isArrayOfCardOrField(fieldOrCard)) {
3440
+ fieldOrCard.forEach((item, i) => {
3441
+ subscribeToChanges(item, subscriber, enclosing ? {
3442
+ fieldOrCard: enclosing.fieldOrCard,
3443
+ fieldName: `${enclosing.fieldName}.${i}`
3444
+ } : void 0);
3445
+ });
3446
+ return;
3447
+ }
3448
+ let changeSubscribers = subscribers.get(fieldOrCard);
3449
+ if (changeSubscribers && changeSubscribers.has(subscriber)) return;
3450
+ if (!changeSubscribers) {
3451
+ changeSubscribers = /* @__PURE__ */ new Set();
3452
+ subscribers.set(fieldOrCard, changeSubscribers);
3453
+ }
3454
+ changeSubscribers.add(subscriber);
3455
+ if (enclosing) subscriberConsumer.set(fieldOrCard, enclosing);
3456
+ let fields = getFields$1(fieldOrCard, {
3457
+ usedLinksToFieldsOnly: true,
3458
+ includeComputeds: false
3459
+ });
3460
+ Object.keys(fields).forEach((fieldName) => {
3461
+ let field = getField(fieldOrCard, fieldName);
3462
+ if (field && (field.fieldType === "contains" || field.fieldType === "containsMany")) {
3463
+ let value = peekAtField(fieldOrCard, fieldName);
3464
+ if (isCardOrField(value) || isArrayOfCardOrField(value)) subscribeToChanges(value, subscriber, {
3465
+ fieldOrCard: enclosing?.fieldOrCard ?? fieldOrCard,
3466
+ fieldName: enclosing?.fieldName ? `${enclosing.fieldName}.${fieldName}` : fieldName
3467
+ });
3468
+ }
3469
+ });
3470
+ }
3471
+ function unsubscribeFromChanges(fieldOrCard, subscriber, visited = /* @__PURE__ */ new Set()) {
3472
+ if (isArrayOfCardOrField(fieldOrCard)) {
3473
+ fieldOrCard.forEach((item) => {
3474
+ unsubscribeFromChanges(item, subscriber);
3475
+ });
3476
+ return;
3477
+ }
3478
+ if (visited.has(fieldOrCard)) return;
3479
+ visited.add(fieldOrCard);
3480
+ let changeSubscribers = subscribers.get(fieldOrCard);
3481
+ if (!changeSubscribers) return;
3482
+ changeSubscribers.delete(subscriber);
3483
+ let fields = getFields$1(fieldOrCard, {
3484
+ usedLinksToFieldsOnly: true,
3485
+ includeComputeds: false
3486
+ });
3487
+ Object.keys(fields).forEach((fieldName) => {
3488
+ let field = getField(fieldOrCard, fieldName);
3489
+ if (field && (field.fieldType === "contains" || field.fieldType === "containsMany")) {
3490
+ let value = peekAtField(fieldOrCard, fieldName);
3491
+ if (isCardOrField(value) || isArrayOfCardOrField(value)) unsubscribeFromChanges(value, subscriber);
3492
+ }
3493
+ });
3494
+ }
3495
+ function applySubscribersToInstanceValue(instance, field, oldValue, newValue) {
3496
+ let changeSubscribers = void 0;
3497
+ if (field.fieldType === "contains" || field.fieldType === "containsMany") changeSubscribers = subscribers.get(instance);
3498
+ else if (isArrayOfCardOrField(oldValue) && oldValue[0] && subscribers.has(oldValue[0])) changeSubscribers = subscribers.get(oldValue[0]);
3499
+ else if (isCardOrField(oldValue)) changeSubscribers = subscribers.get(oldValue);
3500
+ if (!changeSubscribers) return;
3501
+ let toArray = function(item) {
3502
+ if (isCardOrField(item)) return [item];
3503
+ else if (isArrayOfCardOrField(item)) return [...item];
3504
+ else return [];
3505
+ };
3506
+ let oldItems = toArray(oldValue);
3507
+ let newItems = toArray(newValue);
3508
+ let addedItems = newItems.filter((item) => !oldItems.includes(item));
3509
+ let removedItems = oldItems.filter((item) => !newItems.includes(item));
3510
+ addedItems.forEach((item, i) => changeSubscribers.forEach((subscriber) => subscribeToChanges(item, subscriber, {
3511
+ fieldOrCard: instance,
3512
+ fieldName: `${field.name}.${i}`
3513
+ })));
3514
+ removedItems.forEach((item) => changeSubscribers.forEach((subscriber) => unsubscribeFromChanges(item, subscriber)));
3515
+ }
3516
+ function lazilyLoadLink(instance, field, link, pluralArgs) {
3517
+ let inflightLoads = inflightLinkLoads.get(instance);
3518
+ if (!inflightLoads) {
3519
+ inflightLoads = /* @__PURE__ */ new Map();
3520
+ inflightLinkLoads.set(instance, inflightLoads);
3521
+ }
3522
+ let store = getStore(instance);
3523
+ let reference = resolveRef(link, instance.id ?? instance[relativeTo]);
3524
+ let key = `${field.name}/${reference}`;
3525
+ let promise = inflightLoads.get(key);
3526
+ if (promise) {
3527
+ store.trackLoad(promise);
3528
+ return;
3529
+ }
3530
+ let deferred = new Deferred();
3531
+ inflightLoads.set(key, deferred.promise);
3532
+ bumpFieldLoadingSignal(instance, field.name);
3533
+ store.trackLoad(deferred.promise.then(() => {}, () => {}));
3534
+ let dependencyTrackingContext = runtimeNonQueryDependencyContext({
3535
+ source: "card-api:lazilyLoadLink",
3536
+ consumer: instance.id
3537
+ });
3538
+ (async () => {
3539
+ let isFileLink = isFileDef(field.card);
3540
+ await Promise.resolve();
3541
+ try {
3542
+ let fieldValue;
3543
+ let reusable = store.canReuseResidentInstance?.(reference) ? isFileLink ? store.getFileMeta(reference) : store.getCard(reference) : void 0;
3544
+ if (reusable && reusable[isSavedInstance] === true && instanceOf(reusable, field.card)) {
3545
+ if (isFileLink) trackRuntimeFileDependency(reference, dependencyTrackingContext);
3546
+ else trackRuntimeInstanceDependency(reference, dependencyTrackingContext);
3547
+ fieldValue = reusable;
3548
+ } else if (isFileLink) {
3549
+ let fileMetaDoc = await store.loadFileMetaDocument(reference, { dependencyTrackingContext });
3550
+ if (isCardError(fileMetaDoc)) {
3551
+ let cardError = fileMetaDoc;
3552
+ cardError.deps = [reference];
3553
+ throw cardError;
3554
+ }
3555
+ fieldValue = await createFromSerialized(fileMetaDoc.data, fileMetaDoc, fileMetaDoc.data.id, {
3556
+ store,
3557
+ dependencyTrackingContext
3558
+ });
3559
+ } else {
3560
+ let cardDoc = await store.loadCardDocument(reference, { dependencyTrackingContext });
3561
+ if (isCardError(cardDoc)) {
3562
+ let cardError = cardDoc;
3563
+ cardError.deps = [reference];
3564
+ throw cardError;
3565
+ }
3566
+ fieldValue = await createFromSerialized(cardDoc.data, cardDoc, cardDoc.data.id, {
3567
+ store,
3568
+ dependencyTrackingContext
3569
+ });
3570
+ }
3571
+ if (pluralArgs) {
3572
+ let { value } = pluralArgs;
3573
+ let indices = [];
3574
+ let raw = rawArrayValues(value);
3575
+ for (let [index, item] of raw.entries()) {
3576
+ if (!isNotLoadedValue(item)) continue;
3577
+ if (reference === resolveRef(item.reference, instance.id ?? instance[relativeTo])) indices.push(index);
3578
+ }
3579
+ if (indices.length > 0) {
3580
+ for (let index of indices) raw[index] = fieldValue;
3581
+ notifyCardTracking(instance);
3582
+ }
3583
+ } else setResolvedField(instance, field, fieldValue);
3584
+ } catch (e) {
3585
+ let error = e;
3586
+ let isMissingFile = isCardError(error) && error.status === 404 || typeof error?.message === "string" && /not found/i.test(error.message);
3587
+ let referenceForMissingFile = isFileLink || referenceNamesFile(reference) ? reference : `${reference}.json`;
3588
+ let payloadError = {
3589
+ title: isMissingFile ? "Link Not Found" : error?.message ?? "Card Error",
3590
+ status: isMissingFile ? 404 : error?.status ?? 500,
3591
+ message: isMissingFile ? `missing file ${referenceForMissingFile}` : error?.message ?? String(e),
3592
+ stack: error?.stack
3593
+ };
3594
+ let deps = new Set([referenceForMissingFile]);
3595
+ if (isCardError(error)) {
3596
+ for (let dep of error.deps ?? []) deps.add(dep);
3597
+ if (error.additionalErrors?.length) payloadError.additionalErrors = error.additionalErrors.map((additionalError) => {
3598
+ let normalized = additionalError;
3599
+ return {
3600
+ title: normalized.title,
3601
+ status: normalized.status,
3602
+ message: normalized.message,
3603
+ stack: normalized.stack
3604
+ };
3605
+ });
3606
+ }
3607
+ payloadError.deps = [...deps];
3608
+ let errorDoc = {
3609
+ ...payloadError,
3610
+ additionalErrors: payloadError.additionalErrors ?? null
3611
+ };
3612
+ let sentinel = isMissingFile ? {
3613
+ type: "link-not-found",
3614
+ reference,
3615
+ errorDoc
3616
+ } : {
3617
+ type: "link-error",
3618
+ reference,
3619
+ errorDoc
3620
+ };
3621
+ if (pluralArgs) {
3622
+ let { value } = pluralArgs;
3623
+ let raw = rawArrayValues(value);
3624
+ let planted = false;
3625
+ for (let [index, item] of raw.entries()) {
3626
+ if (!isNotLoadedValue(item)) continue;
3627
+ if (reference === resolveRef(item.reference, instance.id ?? instance[relativeTo])) {
3628
+ raw[index] = sentinel;
3629
+ planted = true;
3630
+ }
3631
+ }
3632
+ if (planted) notifyCardTracking(instance);
3633
+ } else {
3634
+ getDataBucket(instance).set(field.name, sentinel);
3635
+ notifyCardTracking(instance);
3636
+ }
3637
+ } finally {
3638
+ deferred.fulfill();
3639
+ inflightLoads.delete(key);
3640
+ if (inflightLoads.size === 0) inflightLinkLoads.delete(instance);
3641
+ bumpFieldLoadingSignal(instance, field.name);
3642
+ }
3643
+ })();
3644
+ }
3645
+ function hasInflightLoadForField(instance, fieldName) {
3646
+ let loads = inflightLinkLoads.get(instance);
3647
+ if (!loads) return false;
3648
+ let prefix = `${fieldName}/`;
3649
+ for (let key of loads.keys()) if (key.startsWith(prefix)) return true;
3650
+ return false;
3651
+ }
3652
+ registerRelationshipProbe((instance, field) => {
3653
+ readFieldLoadingSignal(instance, field.name);
3654
+ if (field.queryDefinition) {
3655
+ let resource = ensureQueryFieldSearchResource(getStore(instance), instance, field, runtimeQueryDependencyContext({
3656
+ queryField: field.name,
3657
+ consumer: instance.id,
3658
+ source: "card-api:relationship-probe"
3659
+ }));
3660
+ let isLoading = resource?.isLoading ?? false;
3661
+ let bucketEntry = getDataBucket(instance).get(field.name);
3662
+ let queryMembership;
3663
+ let queryTotalMatchCount;
3664
+ let queryIsPartial = false;
3665
+ let queryHasUnreachableRealms = queryFieldHasUnreachableRealms(instance, field.name);
3666
+ if (isLinkError(bucketEntry) || isLinkNotFound(bucketEntry)) queryMembership = [relationshipStateForEntry(bucketEntry)];
3667
+ else if (!isLoading && resource) {
3668
+ queryMembership = (resource.instances ?? []).map((card) => relationshipStateForEntry(card));
3669
+ queryTotalMatchCount = resource.totalMatchCount;
3670
+ queryIsPartial = resource.isPartial;
3671
+ if (resource.meta?.incomplete) {
3672
+ queryHasUnreachableRealms = true;
3673
+ queryTotalMatchCount = void 0;
3674
+ }
3675
+ }
3676
+ return {
3677
+ isLoading,
3678
+ isQueryField: true,
3679
+ queryMembership,
3680
+ queryTotalMatchCount,
3681
+ queryIsPartial,
3682
+ queryHasUnreachableRealms
3683
+ };
3684
+ }
3685
+ return {
3686
+ isLoading: hasInflightLoadForField(instance, field.name),
3687
+ isQueryField: false
3688
+ };
3689
+ });
3690
+ function notifyLinksToTargetDeleted(consumer, deletedRef) {
3691
+ let bucket = getDataBucket(consumer);
3692
+ let fields = getFields$1(consumer, { includeComputeds: false });
3693
+ let referenceWithJson = deletedRef.endsWith(".json") ? deletedRef : `${deletedRef}.json`;
3694
+ let referenceWithoutJson = deletedRef.replace(/\.json$/, "");
3695
+ let buildSentinel = () => ({
3696
+ type: "link-not-found",
3697
+ reference: referenceWithoutJson,
3698
+ errorDoc: {
3699
+ title: "Link Not Found",
3700
+ status: 404,
3701
+ message: `missing file ${referenceWithJson}`,
3702
+ deps: [referenceWithoutJson, referenceWithJson],
3703
+ additionalErrors: null
3704
+ }
3705
+ });
3706
+ let changed = false;
3707
+ for (let [fieldName, field] of Object.entries(fields)) {
3708
+ if (!field) continue;
3709
+ if (field.fieldType === "linksTo") {
3710
+ let current = bucket.get(fieldName);
3711
+ if (current && typeof current === "object" && "id" in current && current.id === referenceWithoutJson) {
3712
+ let sentinel = buildSentinel();
3713
+ bucket.set(fieldName, sentinel);
3714
+ notifySubscribers(consumer, fieldName, sentinel);
3715
+ notifyCardTracking(consumer);
3716
+ changed = true;
3717
+ }
3718
+ } else if (field.fieldType === "linksToMany") {
3719
+ let arr = bucket.get(fieldName);
3720
+ if (Array.isArray(arr)) {
3721
+ let arrChanged = false;
3722
+ for (let [index, item] of arr.entries()) if (item && typeof item === "object" && "id" in item && item.id === referenceWithoutJson) {
3723
+ arr[index] = buildSentinel();
3724
+ arrChanged = true;
3725
+ }
3726
+ if (arrChanged) {
3727
+ notifySubscribers(consumer, fieldName, arr);
3728
+ notifyCardTracking(consumer);
3729
+ changed = true;
3730
+ }
3731
+ }
3732
+ }
3733
+ }
3734
+ return changed;
3735
+ }
3736
+ function trackRuntimeRelationshipDependency(value, declaredCard, dependencyTrackingContext) {
3737
+ if (!value || isNonPresentLink(value)) return;
3738
+ let id = value.id;
3739
+ if (typeof id !== "string") return;
3740
+ if (!shouldTrackRuntimeRelationship(id, dependencyTrackingContext)) return;
3741
+ if (isFileDef(declaredCard)) {
3742
+ trackRuntimeFileDependency(id, dependencyTrackingContext);
3743
+ trackRuntimeRelationshipModuleDependencies(value, dependencyTrackingContext);
3744
+ return;
3745
+ }
3746
+ trackRuntimeInstanceDependency(id, dependencyTrackingContext);
3747
+ trackRuntimeRelationshipModuleDependencies(value, dependencyTrackingContext);
3748
+ }
3749
+ function trackRuntimeRelationshipDependencies(values, declaredCard, dependencyTrackingContext) {
3750
+ for (let value of values) trackRuntimeRelationshipDependency(value, declaredCard, dependencyTrackingContext);
3751
+ }
3752
+ function trackRuntimeRelationshipModuleDependencies(value, dependencyTrackingContext) {
3753
+ if (!value || typeof value !== "object") return;
3754
+ let ctor = Reflect.getPrototypeOf(value)?.constructor;
3755
+ if (typeof ctor !== "function") return;
3756
+ let identity = Loader.identify(ctor);
3757
+ if (!identity) return;
3758
+ if (!shouldTrackRuntimeModuleGraph("relationship", identity.module, dependencyTrackingContext)) return;
3759
+ trackRuntimeModuleDependency(identity.module, dependencyTrackingContext);
3760
+ let loader = Loader.getLoaderFor(ctor);
3761
+ if (!loader) return;
3762
+ for (let dep of loader.getKnownConsumedModules(identity.module)) trackRuntimeModuleDependency(dep, dependencyTrackingContext);
3763
+ }
3764
+ function setId(instance, id) {
3765
+ let field = getField(instance, "id");
3766
+ if (field) setField(instance, field, id);
3767
+ }
3768
+ function isSaved(instance) {
3769
+ return instance[isSavedInstance] === true;
3770
+ }
3771
+ function getQueryableValue(fieldOrCard, value, stack = []) {
3772
+ if ("baseDef" in fieldOrCard) {
3773
+ let result = fieldOrCard[queryableValue](value, stack);
3774
+ if (primitive in fieldOrCard) assertScalar(result, fieldOrCard);
3775
+ return result;
3776
+ }
3777
+ return fieldOrCard.queryableValue(value, stack);
3778
+ }
3779
+ function formatQueryValue(field, queryValue) {
3780
+ let serializer;
3781
+ if (primitive in field.card && fieldSerializer in field.card) {
3782
+ assertIsSerializerName(field.card[fieldSerializer]);
3783
+ serializer = getSerializer(field.card[fieldSerializer]);
3784
+ }
3785
+ return serializer?.formatQuery?.(queryValue) ?? field.card[formatQuery](queryValue);
3786
+ }
3787
+ async function getDeserializedValue({ card, loadedValue, fieldName, value, resource, modelPromise, doc, store, relativeTo, opts }) {
3788
+ let field = getField(isCardInstance(value) ? value : card, fieldName);
3789
+ if (!field) throw new Error(`could not find field ${fieldName} in card ${card.name}`);
3790
+ return await field.deserialize(value, doc, resource.relationships, resource.meta.fields?.[fieldName], store, modelPromise, loadedValue, relativeTo, opts);
3791
+ }
3792
+ async function createFromSerialized(resource, doc, relativeTo, opts) {
3793
+ let store = opts?.store ?? new FallbackCardStore();
3794
+ let localIdValue = "lid" in resource && typeof resource.lid === "string" ? resource.lid : void 0;
3795
+ let defaultContext = runtimeNonQueryDependencyContext({
3796
+ source: "card-api:createFromSerialized",
3797
+ consumer: resource.id ?? localIdValue,
3798
+ consumerKind: isFileMetaResource(resource) ? "file" : "instance"
3799
+ });
3800
+ let context = opts?.dependencyTrackingContext ?? defaultContext;
3801
+ let { meta: { adoptsFrom } } = resource;
3802
+ let card = await loadCardDef(adoptsFrom, {
3803
+ loader: myLoader(),
3804
+ relativeTo,
3805
+ dependencyTrackingContext: context
3806
+ });
3807
+ if (!card) throw new Error(`could not find card: '${humanReadable(adoptsFrom)}'`);
3808
+ return card[deserialize](resource, relativeTo, doc, store, opts);
3809
+ }
3810
+ async function updateFromSerialized(instance, doc, store = getStore(instance), opts, keepField) {
3811
+ stores.set(instance, store);
3812
+ if (!instance[relativeTo] && doc.data.id) instance[relativeTo] = rri(isFileDef(Reflect.getPrototypeOf(instance).constructor) ? doc.data.id : store.canonicalizeId(doc.data.id));
3813
+ if (isCardInstance(instance)) {
3814
+ if (!instance[meta] && doc.data.meta) instance[meta] = doc.data.meta;
3815
+ }
3816
+ return await _updateFromSerialized({
3817
+ instance,
3818
+ resource: doc.data,
3819
+ doc,
3820
+ store,
3821
+ opts,
3822
+ keepField
3823
+ });
3824
+ }
3825
+ function isCardInstance(instance) {
3826
+ return isCardInstance$1(instance);
3827
+ }
3828
+ async function _createFromSerialized(card, data, doc, _relativeTo, store = new FallbackCardStore(), opts) {
3829
+ let resource;
3830
+ if (isCardResource(data) || isFileMetaResource(data)) resource = data;
3831
+ if (!resource) {
3832
+ let adoptsFrom = identifyCard(card);
3833
+ if (!adoptsFrom) throw new Error(`bug: could not determine identity for card '${card.name}'`);
3834
+ resource = { meta: { adoptsFrom } };
3835
+ }
3836
+ if (!doc) doc = { data: resource };
3837
+ let isFileLike = isFileMetaResource(resource) || isFileDef(card);
3838
+ let canonicalId = resource.id != null && !isFileLike ? store.canonicalizeId(resource.id) : resource.id;
3839
+ let instance;
3840
+ if (canonicalId != null || resource.lid != null) {
3841
+ let resourceId = canonicalId ?? resource.lid;
3842
+ let cachedInstance = isFileLike ? store.getFileMeta(resourceId) : store.getCard(resourceId);
3843
+ if (cachedInstance && instanceOf(cachedInstance, card)) instance = cachedInstance;
3844
+ }
3845
+ if (!instance) {
3846
+ instance = new card({
3847
+ id: canonicalId,
3848
+ [localId]: resource.lid
3849
+ });
3850
+ instance[relativeTo] = _relativeTo;
3851
+ }
3852
+ stores.set(instance, store);
3853
+ return await _updateFromSerialized({
3854
+ instance,
3855
+ resource,
3856
+ doc,
3857
+ store,
3858
+ opts
3859
+ });
3860
+ }
3861
+ async function _updateFromSerialized({ instance, resource, doc, store, opts, keepField }) {
3862
+ let card = Reflect.getPrototypeOf(instance).constructor;
3863
+ if (resource.id != null) if (isFileMetaResource(resource) || isFileDef(card)) store.setFileMetaNonTracked(resource.id, instance);
3864
+ else store.setCardNonTracked(resource.id, instance);
3865
+ let deferred = new Deferred();
3866
+ let nonNestedRelationships = Object.fromEntries(Object.entries(resource.relationships ?? {}).filter(([fieldName]) => !fieldName.includes(".")));
3867
+ let linksToManyRelationships = Object.entries(resource.relationships ?? {}).filter(([fieldName]) => fieldName.split(".").length === 2 && fieldName.split(".")[1].match(/^\d+$/)).reduce((result, [fieldName, value]) => {
3868
+ let name = fieldName.split(".")[0];
3869
+ result[name] = result[name] || [];
3870
+ result[name].push(value);
3871
+ return result;
3872
+ }, Object.create(null));
3873
+ let existingOverrides = getFieldOverrides(instance);
3874
+ let loadedValues = getDataBucket(instance);
3875
+ let instanceRelativeTo = ("id" in instance && typeof instance.id === "string" ? instance.id : void 0) ?? instance[relativeTo];
3876
+ function getFieldMeta(fieldsMeta, key) {
3877
+ let entry = fieldsMeta?.[key];
3878
+ return Array.isArray(entry) ? void 0 : entry;
3879
+ }
3880
+ function getFieldMetaArray(fieldsMeta, key) {
3881
+ let entry = fieldsMeta?.[key];
3882
+ return Array.isArray(entry) ? entry : void 0;
3883
+ }
3884
+ function clearIndexedFieldOverrides(fieldName) {
3885
+ for (let key of existingOverrides.keys()) if (isDirectIndexedFieldKey(key, fieldName)) existingOverrides.delete(key);
3886
+ }
3887
+ function isAssignableToField(overrideCard, fieldCard) {
3888
+ let current = overrideCard;
3889
+ while (current) {
3890
+ if (current === fieldCard) return true;
3891
+ current = getAncestor(current) ?? void 0;
3892
+ }
3893
+ return false;
3894
+ }
3895
+ function applyFieldOverride(fieldName, overrideCard, field) {
3896
+ if (!overrideCard) return false;
3897
+ if (field && !isAssignableToField(overrideCard, field.card)) return false;
3898
+ if (existingOverrides.get(fieldName) === overrideCard) return false;
3899
+ existingOverrides.set(fieldName, overrideCard);
3900
+ return true;
3901
+ }
3902
+ async function setDeserializedFieldOverride(fieldName, resource, field, serializedFieldOverride) {
3903
+ let overrideMeta = serializedFieldOverride;
3904
+ if (!overrideMeta) overrideMeta = getFieldMeta(resource.meta?.fields, fieldName);
3905
+ if (!overrideMeta || !overrideMeta.adoptsFrom) return false;
3906
+ let override = await loadCardDef(overrideMeta.adoptsFrom, {
3907
+ loader: myLoader(),
3908
+ relativeTo: instanceRelativeTo ?? (resource.id ? rri(resource.id) : void 0),
3909
+ dependencyTrackingContext: opts?.dependencyTrackingContext
3910
+ });
3911
+ if (!override) return false;
3912
+ return applyFieldOverride(fieldName, override, field);
3913
+ }
3914
+ function applyLinkOverrideFromValue(fieldName, field, value) {
3915
+ let changed = false;
3916
+ if (field.fieldType === "linksTo") {
3917
+ if (isCardInstance(value)) changed = applyFieldOverride(fieldName, value.constructor, field);
3918
+ } else if (field.fieldType === "linksToMany") {
3919
+ if (Array.isArray(value)) {
3920
+ let linked = value.find((entry) => isCardInstance(entry));
3921
+ if (linked) changed = applyFieldOverride(fieldName, linked.constructor, field);
3922
+ }
3923
+ }
3924
+ if (changed) return getField(instance, fieldName) ?? field;
3925
+ return field;
3926
+ }
3927
+ let values = await Promise.all(Object.entries({
3928
+ ...resource.attributes,
3929
+ ...nonNestedRelationships,
3930
+ ...linksToManyRelationships,
3931
+ ...resource.id !== void 0 ? { id: isFileMetaResource(resource) || isFileDef(card) ? resource.id : store.canonicalizeId(resource.id) } : {}
3932
+ }).map(async ([fieldName, value]) => {
3933
+ let field = getField(instance, fieldName);
3934
+ if (!field) return [];
3935
+ let hydrateFieldsMs = opts?.hydrateFieldsMs;
3936
+ let hydrateFieldPath = hydrateFieldsMs ? opts.hydrateFieldPath ? `${opts.hydrateFieldPath}.${fieldName}` : fieldName : void 0;
3937
+ let hydrateStart = hydrateFieldsMs ? performance.now() : 0;
3938
+ let fieldOpts = hydrateFieldPath !== void 0 ? {
3939
+ ...opts,
3940
+ hydrateFieldPath
3941
+ } : opts;
3942
+ let resourceMetaFields = resource.meta?.fields;
3943
+ let overrideApplied = false;
3944
+ if (field.fieldType === "containsMany") {
3945
+ clearIndexedFieldOverrides(fieldName);
3946
+ if (primitive in field.card) if (Array.isArray(value)) for (let [index] of value.entries()) {
3947
+ let key = `${fieldName}.${index}`;
3948
+ overrideApplied = await setDeserializedFieldOverride(key, resource, field, getFieldMeta(resourceMetaFields, key)) || overrideApplied;
3949
+ }
3950
+ else overrideApplied = await setDeserializedFieldOverride(fieldName, resource, field, getFieldMeta(resourceMetaFields, fieldName)) || overrideApplied;
3951
+ else {
3952
+ let metas = getFieldMetaArray(resourceMetaFields, fieldName);
3953
+ if (metas) for (let [index, meta] of metas.entries()) overrideApplied = await setDeserializedFieldOverride(`${fieldName}.${index}`, resource, field, meta) || overrideApplied;
3954
+ }
3955
+ } else if (field.fieldType === "contains") overrideApplied = await setDeserializedFieldOverride(fieldName, resource, field, getFieldMeta(resourceMetaFields, fieldName)) || overrideApplied;
3956
+ if (overrideApplied) field = getField(instance, fieldName) ?? field;
3957
+ let relativeToVal = ("id" in instance && typeof instance.id === "string" ? instance.id : void 0) ?? instance[relativeTo];
3958
+ let deserializedValue = await getDeserializedValue({
3959
+ card,
3960
+ loadedValue: loadedValues.get(fieldName),
3961
+ fieldName,
3962
+ value,
3963
+ resource,
3964
+ modelPromise: deferred.promise,
3965
+ doc,
3966
+ store,
3967
+ relativeTo: relativeToVal,
3968
+ opts: fieldOpts
3969
+ });
3970
+ field = applyLinkOverrideFromValue(fieldName, field, deserializedValue);
3971
+ if (hydrateFieldsMs && hydrateFieldPath !== void 0) hydrateFieldsMs[hydrateFieldPath] = (hydrateFieldsMs[hydrateFieldPath] ?? 0) + (performance.now() - hydrateStart);
3972
+ return [field, deserializedValue];
3973
+ }));
3974
+ let realmURLString = getCardMeta(instance, "realmURL") ?? resource.meta?.realmURL;
3975
+ {
3976
+ let wasSaved = false;
3977
+ let originalId;
3978
+ if (isCardInstance(instance)) {
3979
+ wasSaved = instance[isSavedInstance];
3980
+ originalId = instance.id;
3981
+ instance[isSavedInstance] = false;
3982
+ }
3983
+ let deserialized = getDataBucket(instance);
3984
+ for (let [field, value] of values) {
3985
+ if (!field) continue;
3986
+ if (field.name !== "id" && keepField?.(field.name)) continue;
3987
+ if (field.name === "id" && wasSaved && originalId !== value) throw new Error(`cannot change the id for saved instance ${originalId}`);
3988
+ propagateRealmContext(value, realmURLString);
3989
+ field.validate(instance, value);
3990
+ let existingValue = deserialized.get(field.name);
3991
+ if (isCardOrField(existingValue) || isArrayOfCardOrField(existingValue) || isCardOrField(value) || isArrayOfCardOrField(value)) applySubscribersToInstanceValue(instance, field, existingValue, value);
3992
+ deserialized.set(field.name, value);
3993
+ field.captureQueryFieldSeedData?.(instance, value, resource);
3994
+ }
3995
+ if (!isFieldInstance(instance) && resource.id != null) instance[meta] = resource.meta;
3996
+ if (realmURLString && isFieldInstance(instance)) setRealmContextOnField(instance, realmURLString);
3997
+ notifyCardTracking(instance);
3998
+ if (isCardInstance(instance) && resource.id != null) instance[isSavedInstance] = true;
3999
+ if (hasQueryFields(instance)) {
4000
+ let store = getStore(instance);
4001
+ let isDocumentSubject = Array.isArray(doc.data) ? doc.data.includes(resource) : doc.data === resource;
4002
+ for (let field of Object.values(getFields$1(instance, { includeComputeds: true }))) if (field?.queryDefinition) resolveQueryFieldEagerly(store, instance, field, isDocumentSubject);
4003
+ }
4004
+ }
4005
+ if (resource.id != null) store.makeTracked(resource.id);
4006
+ deferred.fulfill(instance);
4007
+ return instance;
4008
+ }
4009
+ function setCardAsSavedForTest(instance, id) {
4010
+ if (id != null) getDataBucket(instance).set("id", id);
4011
+ instance[isSavedInstance] = true;
4012
+ }
4013
+ function makeDescriptor(field) {
4014
+ let descriptor = { enumerable: true };
4015
+ descriptor.get = function() {
4016
+ return field.getter(this);
4017
+ };
4018
+ if (field.computeVia) descriptor.set = function() {};
4019
+ else descriptor.set = function(value) {
4020
+ if (field.card === ReadOnlyField && isCardInstance(this) && this[isSavedInstance]) throw new Error(`cannot assign a value to the field '${field.name}' on the saved card '${this[field.name]}' because it is a read-only field`);
4021
+ setField(this, field, value);
4022
+ };
4023
+ descriptor.get[isField] = field;
4024
+ return descriptor;
4025
+ }
4026
+ function setResolvedField(instance, field, value) {
4027
+ propagateRealmContext(value, instance);
4028
+ value = field.validate(instance, value);
4029
+ getDataBucket(instance).set(field.name, value);
4030
+ notifyCardTracking(instance);
4031
+ }
4032
+ function setField(instance, field, value) {
4033
+ propagateRealmContext(value, instance);
4034
+ value = field.validate(instance, value);
4035
+ getDataBucket(instance).set(field.name, value);
4036
+ notifySubscribers(instance, field.name, value);
4037
+ notifyCardTracking(instance);
4038
+ }
4039
+ function notifySubscribers(instance, fieldName, value, visited = /* @__PURE__ */ new WeakSet()) {
4040
+ if (visited.has(instance)) return;
4041
+ visited.add(instance);
4042
+ let changeSubscribers = subscribers.get(instance);
4043
+ if (changeSubscribers) for (let subscriber of changeSubscribers) subscriber(instance, fieldName, value);
4044
+ let consumer = subscriberConsumer.get(instance);
4045
+ if (consumer) notifySubscribers(consumer.fieldOrCard, `${consumer.fieldName}.${fieldName}`, value, visited);
4046
+ }
4047
+ function cardThunk(cardOrThunk, fieldContext) {
4048
+ let fieldDescription = `field '${fieldContext.fieldName}' on '${fieldContext.ownerPrototype.constructor?.name || "unknown card"}'`;
4049
+ let causes = `Two common causes:
4050
+ (1) the import doesn't match the module's export shape — e.g. \`import X from '…'\` where the module only has a named export; use \`import { X } from '…'\`;
4051
+ (2) a cyclic dependency between cards — use the thunk form in all cards in the cycle, e.g. '@field friend = linksTo(() => Person)'.`;
4052
+ if (!cardOrThunk) throw new Error(`The card class for ${fieldDescription} was ${cardOrThunk}. ${causes}`);
4053
+ if ("baseDef" in cardOrThunk) return () => cardOrThunk;
4054
+ let thunk = cardOrThunk;
4055
+ return () => {
4056
+ let card = thunk();
4057
+ if (!card) throw new Error(`The card class thunk for ${fieldDescription} returned ${card}. ${causes}`);
4058
+ return card;
4059
+ };
4060
+ }
4061
+ var componentByModel = /* @__PURE__ */ new WeakMap();
4062
+ function codeRefCacheKey(codeRef) {
4063
+ return codeRef ? JSON.stringify(codeRef) : "";
4064
+ }
4065
+ function getComponent(model, field, opts) {
4066
+ if (field) return getBoxComponent(model.constructor, Box.create(model), field, opts);
4067
+ if (opts?.componentOverride) return getBoxComponent(model.constructor, Box.create(model), field, opts);
4068
+ let perModel = componentByModel.get(model);
4069
+ if (!perModel) {
4070
+ perModel = /* @__PURE__ */ new Map();
4071
+ componentByModel.set(model, perModel);
4072
+ }
4073
+ let key = codeRefCacheKey(opts?.componentCodeRef);
4074
+ let cached = perModel.get(key);
4075
+ if (cached) return cached;
4076
+ let boxComponent = getBoxComponent(model.constructor, Box.create(model), field, opts);
4077
+ perModel.set(key, boxComponent);
4078
+ return boxComponent;
4079
+ }
4080
+ var Box = class Box {
4081
+ static create(model) {
4082
+ return new Box({
4083
+ type: "root",
4084
+ model
4085
+ });
4086
+ }
4087
+ state;
4088
+ constructor(state) {
4089
+ this.state = state;
4090
+ }
4091
+ get value() {
4092
+ if (this.state.type === "root") return this.state.model;
4093
+ else return this.state.containingBox.value[this.state.fieldName];
4094
+ }
4095
+ get name() {
4096
+ return this.state.type === "derived" ? this.state.fieldName : void 0;
4097
+ }
4098
+ set value(v) {
4099
+ if (this.state.type === "root") throw new Error(`can't set topmost model`);
4100
+ else {
4101
+ let value = this.state.containingBox.value;
4102
+ if (Array.isArray(value)) {
4103
+ let index = parseInt(this.state.fieldName);
4104
+ if (typeof index !== "number") throw new Error(`Cannot set a value on an array item with non-numeric index '${String(this.state.fieldName)}'`);
4105
+ this.state.containingBox.value[index] = v;
4106
+ return;
4107
+ }
4108
+ this.state.containingBox.value[this.state.fieldName] = v;
4109
+ }
4110
+ }
4111
+ set = (value) => {
4112
+ this.value = value;
4113
+ };
4114
+ fieldBoxes = /* @__PURE__ */ new Map();
4115
+ field(fieldName, useIndexBasedKeys = false) {
4116
+ let box = this.fieldBoxes.get(fieldName);
4117
+ if (!box) {
4118
+ box = new Box({
4119
+ type: "derived",
4120
+ containingBox: this,
4121
+ fieldName,
4122
+ useIndexBasedKeys
4123
+ });
4124
+ this.fieldBoxes.set(fieldName, box);
4125
+ }
4126
+ return box;
4127
+ }
4128
+ prevChildren = [];
4129
+ prevValues = [];
4130
+ get children() {
4131
+ if (this.state.type === "root") throw new Error("tried to call children() on root box");
4132
+ let value = this.value;
4133
+ if (value == null) return [];
4134
+ if (!Array.isArray(value)) throw new Error(`tried to call children() on Boxed non-array value ${value} for ${String(this.state.fieldName)}`);
4135
+ let { prevChildren, prevValues, state } = this;
4136
+ let newChildren = value.map((element, index) => {
4137
+ let found = prevChildren.find((_oldBox, i) => state.useIndexBasedKeys ? index === i : this.prevValues[i] === element);
4138
+ if (found) {
4139
+ if (state.useIndexBasedKeys) {} else {
4140
+ let toRemoveIndex = prevChildren.indexOf(found);
4141
+ prevChildren.splice(toRemoveIndex, 1);
4142
+ prevValues.splice(toRemoveIndex, 1);
4143
+ if (found.state.type === "root") throw new Error("bug");
4144
+ found.state.fieldName = String(index);
4145
+ }
4146
+ return found;
4147
+ } else return new Box({
4148
+ type: "derived",
4149
+ containingBox: this,
4150
+ fieldName: String(index),
4151
+ useIndexBasedKeys: false
4152
+ });
4153
+ });
4154
+ this.prevChildren = newChildren;
4155
+ this.prevValues = value.slice();
4156
+ return newChildren;
4157
+ }
4158
+ };
4159
+ function getStore(instance) {
4160
+ return stores.get(instance) ?? new FallbackCardStore();
4161
+ }
4162
+ function resolveInstanceURL(instance, reference) {
4163
+ try {
4164
+ return getStore(instance).resolveURL(reference, instance.id ?? instance[relativeTo]);
4165
+ } catch {
4166
+ return;
4167
+ }
4168
+ }
4169
+ function instanceRealmId(instance) {
4170
+ let realm = instance[realmURL];
4171
+ if (!realm) return;
4172
+ try {
4173
+ return ri(getStore(instance).canonicalizeId(realm.href));
4174
+ } catch {
4175
+ return ri(realm.href);
4176
+ }
4177
+ }
4178
+ function resolveRef(reference, relativeTo) {
4179
+ return resolveRRIReference(reference, relativeTo);
4180
+ }
4181
+ function myLoader() {
4182
+ return loaderForModule(import.meta);
4183
+ }
4184
+ var FallbackCardStore = class {
4185
+ #instances = /* @__PURE__ */ new Map();
4186
+ #fileMetaInstances = /* @__PURE__ */ new Map();
4187
+ #inFlight = /* @__PURE__ */ new Set();
4188
+ #loadGeneration = 0;
4189
+ #requireVirtualNetwork() {
4190
+ let vn = myLoader().getVirtualNetwork();
4191
+ if (!vn) throw new Error(`FallbackCardStore requires the active Loader to have a VirtualNetwork`);
4192
+ return vn;
4193
+ }
4194
+ resolveURL(reference, base) {
4195
+ let vn;
4196
+ try {
4197
+ vn = myLoader().getVirtualNetwork();
4198
+ } catch {
4199
+ return;
4200
+ }
4201
+ if (!vn) return;
4202
+ try {
4203
+ return vn.resolveURL(reference, base);
4204
+ } catch {
4205
+ return;
4206
+ }
4207
+ }
4208
+ canonicalizeId(id) {
4209
+ let vn;
4210
+ try {
4211
+ vn = myLoader().getVirtualNetwork();
4212
+ } catch {
4213
+ return id;
4214
+ }
4215
+ return vn ? vn.unresolveURL(id) : id;
4216
+ }
4217
+ realmForId(id) {
4218
+ let vn;
4219
+ try {
4220
+ vn = myLoader().getVirtualNetwork();
4221
+ } catch {
4222
+ return;
4223
+ }
4224
+ return vn?.realmForReference(id);
4225
+ }
4226
+ #storeKey(id) {
4227
+ id = id.replace(/\.json$/, "");
4228
+ try {
4229
+ let vn = myLoader().getVirtualNetwork();
4230
+ return vn ? vn.toRealURLHref(id) : id;
4231
+ } catch {
4232
+ return id;
4233
+ }
4234
+ }
4235
+ getCard(id) {
4236
+ return this.#instances.get(this.#storeKey(id));
4237
+ }
4238
+ getFileMeta(id) {
4239
+ return this.#fileMetaInstances.get(this.#storeKey(id));
4240
+ }
4241
+ setCard(id, instance) {
4242
+ return this.#instances.set(this.#storeKey(id), instance);
4243
+ }
4244
+ setFileMeta(id, instance) {
4245
+ return this.#fileMetaInstances.set(this.#storeKey(id), instance);
4246
+ }
4247
+ setCardNonTracked(id, instance) {
4248
+ return this.#instances.set(this.#storeKey(id), instance);
4249
+ }
4250
+ setFileMetaNonTracked(id, instance) {
4251
+ return this.#fileMetaInstances.set(this.#storeKey(id), instance);
4252
+ }
4253
+ makeTracked(_id) {}
4254
+ trackLoad(load) {
4255
+ if (this.#inFlight.has(load)) return;
4256
+ this.#inFlight.add(load);
4257
+ this.#loadGeneration++;
4258
+ load.finally(() => {
4259
+ this.#inFlight.delete(load);
4260
+ });
4261
+ }
4262
+ async loaded() {
4263
+ let observedGeneration = this.#loadGeneration;
4264
+ while (true) {
4265
+ if (this.#inFlight.size === 0) await Promise.resolve();
4266
+ else {
4267
+ let pendingLoads = Array.from(this.#inFlight);
4268
+ await Promise.allSettled(pendingLoads);
4269
+ }
4270
+ if (this.#inFlight.size === 0 && this.#loadGeneration === observedGeneration) return;
4271
+ observedGeneration = this.#loadGeneration;
4272
+ }
4273
+ }
4274
+ async loadCardDocument(url, opts) {
4275
+ trackRuntimeInstanceDependency(url, opts?.dependencyTrackingContext);
4276
+ let promise = loadCardDocument(fetch, url, this.#requireVirtualNetwork());
4277
+ this.trackLoad(promise);
4278
+ return await promise;
4279
+ }
4280
+ async loadFileMetaDocument(url, opts) {
4281
+ trackRuntimeFileDependency(url, opts?.dependencyTrackingContext);
4282
+ let promise = loadFileMetaDocument(fetch, url, this.#requireVirtualNetwork());
4283
+ this.trackLoad(promise);
4284
+ return await promise;
4285
+ }
4286
+ getSearchResource(_parent, _getQuery, _getRealms, _opts) {
4287
+ return {
4288
+ instances: [],
4289
+ instancesByRealm: [],
4290
+ isLoading: false,
4291
+ meta: { page: { total: 0 } },
4292
+ errors: void 0,
4293
+ totalMatchCount: void 0,
4294
+ isPartial: false
4295
+ };
4296
+ }
4297
+ };
4298
+ (globalThis.__boxelBundledBaseScopedCSS ??= {})["card-api"] = {
4299
+ "css": ["./card-api.gts.CiAgLmNzcy1maWVsZC1jb250YWluZXJbZGF0YS1zY29wZWRjc3MtZmE0YTRiZmQ4Ni01NjA5MzM4NTQ3XSB7CiAgICAtLWZpZWxkLWJnOiB2YXIoLS1jYXJkLCB2YXIoLS1ib3hlbC0xMDApKTsKICAgIC0tZmllbGQtZmc6IHZhcigtLWNhcmQtZm9yZWdyb3VuZCwgdmFyKC0tYm94ZWwtZGFyaykpOwogICAgLS1maWVsZC1ib3JkZXI6IHZhcigKICAgICAgLS1ib3JkZXIsCiAgICAgIGNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tZmllbGQtZmcpIDIwJSwgdmFyKC0tZmllbGQtYmcpKQogICAgKTsKICAgIC0tZmllbGQtZmFkZTogMS41cmVtOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZmllbGQtYmcpOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZmllbGQtYm9yZGVyKTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cywgdmFyKC0tYm94ZWwtYm9yZGVyLXJhZGl1cykpOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICB9CiAgLmNzcy1maWVsZC1jb3B5LWJ1dHRvbltkYXRhLXNjb3BlZGNzcy1mYTRhNGJmZDg2LTU2MDkzMzg1NDddIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogdmFyKC0tYm94ZWwtc3AteHMpOwogICAgcmlnaHQ6IHZhcigtLWJveGVsLXNwLXhzKTsKICAgIHotaW5kZXg6IDE7CiAgfQogIC5jc3MtZmllbGRbZGF0YS1zY29wZWRjc3MtZmE0YTRiZmQ4Ni01NjA5MzM4NTQ3XSB7CiAgICBtYXJnaW4tYmxvY2s6IDA7CiAgICBwYWRkaW5nOiB2YXIoLS1ib3hlbC1zcCk7CiAgICBjb2xvcjogdmFyKC0tZmllbGQtZmcpOwogICAgZm9udC1mYW1pbHk6IHZhcigKICAgICAgLS1mb250LW1vbm8sCiAgICAgIHZhcigtLWJveGVsLW1vbm9zcGFjZS1mb250LWZhbWlseSwgbW9ub3NwYWNlKQogICAgKTsKICAgIGZvbnQtc2l6ZTogdmFyKC0tYm94ZWwtZm9udC1zaXplLXhzKTsKICAgIG1heC1oZWlnaHQ6IHZhcigtLWNzcy1maWVsZC1tYXgtaGVpZ2h0LCBub25lKTsKICAgIG92ZXJmbG93OiBhdXRvOwogICAgLyogaU9TLXN0eWxlIGVkZ2UgZmFkZXM6IHRleHQgZGlzc29sdmVzIGludG8gdGhlIGJhY2tncm91bmQgYXQgYW4KICAgICAgIGVkZ2Ugb25seSB3aGlsZSBtb3JlIGNvbnRlbnQgbGllcyBiZXlvbmQgaXQuIEVhY2ggbWFzayBsYXllciBpcwogICAgICAgdGFsbGVyIHRoYW4gdGhlIGJveCBieSB0aGUgZmFkZSBoZWlnaHQsIHNvIHNoaWZ0aW5nIGl0IHVwIGJ5IHRoYXQKICAgICAgIGFtb3VudCBwYXJrcyBpdHMgZmFkZSBvZmZzY3JlZW47IHRoZSBzY3JvbGwgdGltZWxpbmUgc2xpZGVzIHRoZW0KICAgICAgIGludG8gdmlldy4gQmFzZSBwb3NpdGlvbnMgc2hvdyBubyBmYWRlLCB3aGljaCBpcyBhbHNvIHdoYXQKICAgICAgIGJyb3dzZXJzIHdpdGhvdXQgc2Nyb2xsLWRyaXZlbiBhbmltYXRpb25zIHJlbmRlci4gKi8KICAgIG1hc2staW1hZ2U6CiAgICAgIGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHRyYW5zcGFyZW50LCBibGFjayB2YXIoLS1maWVsZC1mYWRlKSksCiAgICAgIGxpbmVhci1ncmFkaWVudCh0byB0b3AsIHRyYW5zcGFyZW50LCBibGFjayB2YXIoLS1maWVsZC1mYWRlKSk7CiAgICBtYXNrLXNpemU6IDEwMCUgY2FsYygxMDAlICsgdmFyKC0tZmllbGQtZmFkZSkpOwogICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDsKICAgIG1hc2stY29tcG9zaXRlOiBpbnRlcnNlY3Q7CiAgICBtYXNrLXBvc2l0aW9uOgogICAgICAwIGNhbGMoLTEgKiB2YXIoLS1maWVsZC1mYWRlKSksCiAgICAgIDAgMDsKICAgIGFuaW1hdGlvbjogY3NzLWZpZWxkLWVkZ2UtZmFkZS1kYXRhLXNjb3BlZGNzcy1mYTRhNGJmZDg2LTU2MDkzMzg1NDcgbGluZWFyIGJvdGg7CiAgICBhbmltYXRpb24tdGltZWxpbmU6IHNjcm9sbChzZWxmKTsKICB9CiAgQGtleWZyYW1lcyBjc3MtZmllbGQtZWRnZS1mYWRlLWRhdGEtc2NvcGVkY3NzLWZhNGE0YmZkODYtNTYwOTMzODU0NyB7CiAgICAwJSB7CiAgICAgIG1hc2stcG9zaXRpb246CiAgICAgICAgMCBjYWxjKC0xICogdmFyKC0tZmllbGQtZmFkZSkpLAogICAgICAgIDAgY2FsYygtMSAqIHZhcigtLWZpZWxkLWZhZGUpKTsKICAgIH0KICAgIDglLAogICAgOTIlIHsKICAgICAgbWFzay1wb3NpdGlvbjoKICAgICAgICAwIDAsCiAgICAgICAgMCBjYWxjKC0xICogdmFyKC0tZmllbGQtZmFkZSkpOwogICAgfQogICAgMTAwJSB7CiAgICAgIG1hc2stcG9zaXRpb246CiAgICAgICAgMCAwLAogICAgICAgIDAgMDsKICAgIH0KICB9CiAgLmNzcy1maWVsZFtkYXRhLXNjb3BlZGNzcy1mYTRhNGJmZDg2LTU2MDkzMzg1NDddOjpwbGFjZWhvbGRlciB7CiAgICBvcGFjaXR5OiAwLjU7CiAgfQo%3D.glimmer-scoped.css"],
4300
+ "imports": [
4301
+ "watched-array",
4302
+ "field-component",
4303
+ "contains-many-component",
4304
+ "links-to-editor",
4305
+ "links-to-many-component",
4306
+ "query-field-support",
4307
+ "-private",
4308
+ "untitled-card-title",
4309
+ "computed-turn-memo",
4310
+ "shared-state",
4311
+ "default-templates/fitted",
4312
+ "default-templates/embedded",
4313
+ "default-templates/isolated-and-edit",
4314
+ "default-templates/atom",
4315
+ "default-templates/head",
4316
+ "default-templates/missing-template",
4317
+ "default-templates/field-edit",
4318
+ "default-templates/markdown",
4319
+ "default-templates/markdown-fallback",
4320
+ "markdown-helpers",
4321
+ "default-templates/file-def-edit",
4322
+ "default-templates/file-def-atom",
4323
+ "default-templates/file-def-embedded",
4324
+ "default-templates/file-def-fitted",
4325
+ "default-templates/file-def-isolated",
4326
+ "file-formats/image-preview",
4327
+ "file-formats/image-captures",
4328
+ "card-serialization",
4329
+ "field-support",
4330
+ "text-input-validator",
4331
+ "menu-items",
4332
+ "file-menu-items"
4333
+ ]
4334
+ };
4335
+ (globalThis.__boxelBundledBaseIdentities ??= {})["card-api"] = {
4336
+ "BULK_GENERATED_ITEM_COUNT": 3,
4337
+ "BaseDef": BaseDef,
4338
+ "Box": Box,
4339
+ "CSSField": CSSField,
4340
+ "CardDef": CardDef,
4341
+ "CardInfoField": CardInfoField,
4342
+ "Component": Component,
4343
+ "CssImportField": CssImportField,
4344
+ "FieldDef": FieldDef,
4345
+ "FileContentMismatchError": FileContentMismatchError,
4346
+ "FileDef": FileDef,
4347
+ "ImageDef": ImageDef,
4348
+ "MarkdownField": MarkdownField,
4349
+ "MaybeBase64Field": MaybeBase64Field,
4350
+ "NumberField": NumberField,
4351
+ "ReadOnlyField": ReadOnlyField,
4352
+ "StringField": StringField,
4353
+ "TextAreaField": TextAreaField,
4354
+ "Theme": Theme,
4355
+ "brokenLinkDisplayName": brokenLinkDisplayName,
4356
+ "brokenLinkFormat": brokenLinkFormat,
4357
+ "brokenLinkItemType": brokenLinkItemType,
4358
+ "contains": contains,
4359
+ "containsMany": containsMany,
4360
+ "createFileDef": createFileDef,
4361
+ "createFromSerialized": createFromSerialized,
4362
+ "deserializeForUI": deserializeForUI,
4363
+ "emptyValue": emptyValue,
4364
+ "field": field,
4365
+ "fieldDecorator": fieldDecorator,
4366
+ "flushLogs": flushLogs,
4367
+ "formatQuery": formatQuery,
4368
+ "formatQueryValue": formatQueryValue,
4369
+ "getCaptures": getCaptures,
4370
+ "getComponent": getComponent,
4371
+ "getQueryableValue": getQueryableValue,
4372
+ "getStore": getStore,
4373
+ "instanceOf": instanceOf,
4374
+ "instanceRealmId": instanceRealmId,
4375
+ "isSaved": isSaved,
4376
+ "linksTo": linksTo,
4377
+ "linksToMany": linksToMany,
4378
+ "notifyLinksToTargetDeleted": notifyLinksToTargetDeleted,
4379
+ "queryableValue": queryableValue,
4380
+ "realmInfo": realmInfo,
4381
+ "resolveInstanceURL": resolveInstanceURL,
4382
+ "resolveRef": resolveRef,
4383
+ "serializeDeclaredCaptures": serializeDeclaredCaptures,
4384
+ "serializeForUI": serializeForUI,
4385
+ "setCardAsSavedForTest": setCardAsSavedForTest,
4386
+ "setId": setId,
4387
+ "subscribeToChanges": subscribeToChanges,
4388
+ "unsubscribeFromChanges": unsubscribeFromChanges,
4389
+ "updateFromSerialized": updateFromSerialized,
4390
+ "useIndexBasedKey": useIndexBasedKey
4391
+ };
4392
+ //#endregion
4393
+ export { subscribeToChanges as $, field as A, instanceRealmId as B, card_api_exports as C, createFromSerialized as D, createFileDef as E, getCaptures as F, queryableValue as G, linksTo as H, getComponent as I, resolveRef as J, realmInfo as K, getQueryableValue as L, flushLogs as M, formatQuery as N, deserializeForUI as O, formatQueryValue as P, setId as Q, getStore as R, brokenLinkItemType as S, containsMany as T, linksToMany as U, isSaved as V, notifyLinksToTargetDeleted as W, serializeForUI as X, serializeDeclaredCaptures as Y, setCardAsSavedForTest as Z, StringField as _, PermissionsConsumer as _t, CardDef as a, DefaultMarkdownFallbackTemplate as at, brokenLinkDisplayName as b, CssImportField as c, CardInfoTemplates as ct, FileDef as d, LinksToEditor as dt, unsubscribeFromChanges as et, ImageDef as f, getContainsManyComponent as ft, ReadOnlyField as g, DefaultFormatsProvider as gt, NumberField as h, DefaultFormatsConsumer as ht, CSSField as i, IconComponent as it, fieldDecorator as j, emptyValue as k, FieldDef as l, IconComponent$8 as lt, MaybeBase64Field as m, CardCrudFunctionsConsumer as mt, BaseDef as n, useIndexBasedKey as nt, CardInfoField as o, MarkDownTemplate as ot, MarkdownField as p, CardContextConsumer as pt, resolveInstanceURL as q, Box as r, getDefaultCardMenuItems as rt, Component as s, DefaultCardDefTemplate as st, BULK_GENERATED_ITEM_COUNT as t, updateFromSerialized as tt, FileContentMismatchError as u, getLinksToManyComponent as ut, TextAreaField as v, getBoxComponent as vt, contains as w, brokenLinkFormat as x, Theme as y, instanceOf as z };