@jxsuite/studio 2.2.2 → 2.3.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 (182) hide show
  1. package/data/css-meta.json +1487 -0
  2. package/data/elements-meta.json +370 -0
  3. package/data/html-meta.json +366 -0
  4. package/data/stylebook-meta.json +200 -0
  5. package/data/webdata.json +1621 -0
  6. package/dist/chunks/{Overlay.dev-ymy3et3y.js → Overlay.dev-d2ajy6sj.js} +7 -7
  7. package/dist/chunks/{content-source-r2n7v682.js → content-source-56xpvx83.js} +13 -12
  8. package/dist/chunks/{convert-to-repeater-cnpyvj74.js → convert-to-repeater-0xh9wwek.js} +12 -11
  9. package/dist/chunks/{extension-sections-vpcm4jvx.js → extension-sections-g34239vm.js} +17 -16
  10. package/dist/chunks/{files-zeg88k2d.js → files-gkz202dp.js} +18 -19
  11. package/dist/chunks/{format-host-taymsw55.js → format-host-pej3srnw.js} +2 -2
  12. package/dist/chunks/{git-panel-qp4rrwr9.js → git-panel-4j6xbh8g.js} +12 -11
  13. package/dist/chunks/{layers-panel-kj93w2zg.js → layers-panel-8mvn8sgd.js} +15 -14
  14. package/dist/chunks/{monaco-setup-xy3bs05d.js → monaco-setup-a5wkmbgh.js} +6 -3
  15. package/dist/chunks/{publish-panel-6qz6kp41.js → publish-panel-ptddc3kg.js} +6 -6
  16. package/dist/chunks/{quick-search-9wwa09hh.js → quick-search-j88azfs2.js} +19 -18
  17. package/dist/chunks/right-panel-egkaxy89.js +38 -0
  18. package/dist/chunks/{sp-overlay.dev-h6kdx076.js → sp-overlay.dev-s18hymn9.js} +8 -8
  19. package/dist/chunks/sp-progress-circle.dev-0zxcyz3r.js +15 -0
  20. package/dist/chunks/sp-tooltip.dev-5c6d1kjz.js +15 -0
  21. package/dist/chunks/{studio-753znj4c.js → studio-0e4h32g6.js} +5 -5
  22. package/dist/chunks/{studio-yz9s88s0.js → studio-10s469da.js} +25 -9
  23. package/dist/chunks/{studio-6f0am8f2.js → studio-2w11grav.js} +2 -2
  24. package/dist/chunks/{studio-zqv3w24n.js → studio-3q65xvzv.js} +5 -5
  25. package/dist/chunks/{studio-qhh8r5fz.js → studio-4058pg09.js} +4 -4
  26. package/dist/chunks/{studio-hekaagev.js → studio-4enps87v.js} +17 -17
  27. package/dist/chunks/{studio-tqemhphj.js → studio-50eed4c9.js} +4 -4
  28. package/dist/chunks/studio-53n8bp04.js +16 -0
  29. package/dist/chunks/{studio-nqq8jk8f.js → studio-5amdrjm4.js} +14 -14
  30. package/dist/chunks/{studio-6zzbyx17.js → studio-5ne8mdx9.js} +2 -2
  31. package/dist/chunks/{studio-3z8jjm2p.js → studio-7ejemhej.js} +3 -3
  32. package/dist/chunks/{studio-1kgfcv7s.js → studio-a11d3a1b.js} +12 -11
  33. package/dist/chunks/{studio-rgwcpast.js → studio-ay8wcr2b.js} +2 -2
  34. package/dist/chunks/{studio-fys6z73y.js → studio-bak2cyjr.js} +7 -7
  35. package/dist/chunks/{studio-xmvbhg31.js → studio-c31yb4t6.js} +2 -2
  36. package/dist/chunks/{studio-8sdyjfd6.js → studio-cf4rk7kv.js} +2 -2
  37. package/dist/chunks/{studio-yphy4z9m.js → studio-cv606rs1.js} +5 -5
  38. package/dist/chunks/{studio-5kt960pk.js → studio-hk523hby.js} +133 -147
  39. package/dist/chunks/{studio-x0et2z9g.js → studio-hs8x23fv.js} +15 -15
  40. package/dist/chunks/{studio-p471gg5n.js → studio-kvfx9z2c.js} +7 -3
  41. package/dist/chunks/{studio-22xr4q8q.js → studio-ncnet0ba.js} +18 -29
  42. package/dist/chunks/{studio-ckwz4d3x.js → studio-twsafr1e.js} +2 -2
  43. package/dist/chunks/{studio-qrsfh1w7.js → studio-tzx3xmvx.js} +5 -5
  44. package/dist/chunks/{studio-g8t7g0gp.js → studio-vdpcpada.js} +3 -3
  45. package/dist/chunks/{studio-6a0h7sne.js → studio-vhk5fmfv.js} +2 -2
  46. package/dist/chunks/{studio-hrajjyt2.js → studio-wdt9y92a.js} +2 -2
  47. package/dist/chunks/{studio-r8vx7bkz.js → studio-x3etxs0s.js} +14 -13
  48. package/dist/chunks/{studio-pv8m0h4a.js → studio-yxzgjq8q.js} +28 -23
  49. package/dist/chunks/{studio-300zsz1k.js → studio-zdkgwhkv.js} +6 -6
  50. package/dist/codicon.ttf +0 -0
  51. package/dist/iframe-entry.js +8 -1
  52. package/dist/manifest.json +82 -0
  53. package/dist/studio.js +232 -103
  54. package/index.html +0 -50
  55. package/package.json +11 -4
  56. package/src/canvas/iframe-entry.ts +5 -0
  57. package/src/canvas/iframe-host.ts +45 -4
  58. package/src/content/entry-editor.ts +2 -1
  59. package/src/editor/context-menu.ts +13 -2
  60. package/src/editor/slash-menu.ts +26 -11
  61. package/src/files/files.ts +11 -23
  62. package/src/grid/grid-panel.ts +27 -6
  63. package/src/hosting/document.ts +109 -0
  64. package/src/hosting/layout.ts +211 -0
  65. package/src/hosting/stage.ts +166 -0
  66. package/src/hosting/tsconfig.json +18 -0
  67. package/src/panels/ai-chat/chat-view.ts +25 -14
  68. package/src/panels/git-panel.ts +17 -14
  69. package/src/panels/head-panel.ts +32 -14
  70. package/src/panels/imports-panel.ts +32 -13
  71. package/src/panels/layers-panel.ts +9 -1
  72. package/src/panels/panel-registry.ts +0 -1
  73. package/src/panels/properties-panel.ts +3 -3
  74. package/src/panels/settings-pane.ts +1 -1
  75. package/src/panels/style-panel.ts +3 -3
  76. package/src/panels/stylebook-panel.ts +10 -1
  77. package/src/panels/toolbar.ts +1 -1
  78. package/src/services/bundle-base.ts +69 -0
  79. package/src/services/monaco-setup.ts +19 -13
  80. package/src/shell/tree.ts +155 -0
  81. package/src/shell.ts +0 -2
  82. package/src/studio.ts +22 -2
  83. package/src/types.ts +15 -0
  84. package/src/ui/regions.ts +10 -45
  85. package/styles/overlays.css +35 -0
  86. package/dist/chunks/2020-xp8vnwma.js.map +0 -24
  87. package/dist/chunks/Overlay.dev-ymy3et3y.js.map +0 -9
  88. package/dist/chunks/adapter-jkcyhgtr.js.map +0 -9
  89. package/dist/chunks/cf-settings-g5fbf2zp.js.map +0 -9
  90. package/dist/chunks/components-z6cnkyy1.js.map +0 -9
  91. package/dist/chunks/content-source-r2n7v682.js.map +0 -9
  92. package/dist/chunks/convert-to-repeater-cnpyvj74.js.map +0 -10
  93. package/dist/chunks/editor-cptq5jp1.js.map +0 -9
  94. package/dist/chunks/extension-sections-vpcm4jvx.js.map +0 -11
  95. package/dist/chunks/files-zeg88k2d.js.map +0 -9
  96. package/dist/chunks/flow-qbfgrpeh.js.map +0 -12
  97. package/dist/chunks/focus-trap.esm-ggawf1hy.js.map +0 -11
  98. package/dist/chunks/focus-visible-6eg70z18.js.map +0 -10
  99. package/dist/chunks/format-host-taymsw55.js.map +0 -9
  100. package/dist/chunks/git-panel-qp4rrwr9.js.map +0 -9
  101. package/dist/chunks/index-nj44jpzj.js.map +0 -14
  102. package/dist/chunks/index-zqxmqxmh.js.map +0 -9
  103. package/dist/chunks/javascript-q8kpmfah.js.map +0 -11
  104. package/dist/chunks/jsonMode-dkr040ga.js.map +0 -18
  105. package/dist/chunks/jx-validate-jj9rnt4n.js.map +0 -9
  106. package/dist/chunks/layers-panel-kj93w2zg.js.map +0 -9
  107. package/dist/chunks/monaco-binding-rj6xpx9y.js.map +0 -10
  108. package/dist/chunks/monaco-setup-xy3bs05d.js.map +0 -15
  109. package/dist/chunks/publish-panel-6qz6kp41.js.map +0 -9
  110. package/dist/chunks/quick-search-9wwa09hh.js.map +0 -9
  111. package/dist/chunks/right-panel-faf816ch.js +0 -37
  112. package/dist/chunks/right-panel-faf816ch.js.map +0 -9
  113. package/dist/chunks/section-registry-sx1ykvkw.js.map +0 -9
  114. package/dist/chunks/sp-overlay.dev-h6kdx076.js.map +0 -9
  115. package/dist/chunks/sp-popover.dev-dj9x7e7a.js.map +0 -9
  116. package/dist/chunks/sp-progress-circle.dev-0fpvhm52.js +0 -15
  117. package/dist/chunks/sp-progress-circle.dev-0fpvhm52.js.map +0 -9
  118. package/dist/chunks/sp-tooltip.dev-rvepkw4r.js +0 -15
  119. package/dist/chunks/sp-tooltip.dev-rvepkw4r.js.map +0 -9
  120. package/dist/chunks/sp-tray.dev-64v4pxw8.js.map +0 -12
  121. package/dist/chunks/studio-0a5qrh01.js.map +0 -9
  122. package/dist/chunks/studio-0rqqhrdy.js.map +0 -12
  123. package/dist/chunks/studio-18j3bmcz.js.map +0 -10
  124. package/dist/chunks/studio-1kgfcv7s.js.map +0 -13
  125. package/dist/chunks/studio-22xr4q8q.js.map +0 -13
  126. package/dist/chunks/studio-300zsz1k.js.map +0 -39
  127. package/dist/chunks/studio-3fk1ac9z.js.map +0 -12
  128. package/dist/chunks/studio-3n4ndrzh.js.map +0 -41
  129. package/dist/chunks/studio-3z8jjm2p.js.map +0 -13
  130. package/dist/chunks/studio-4mqb9a0j.js.map +0 -14
  131. package/dist/chunks/studio-4q0wznzf.js.map +0 -73
  132. package/dist/chunks/studio-5ehhackm.js.map +0 -10
  133. package/dist/chunks/studio-5kt960pk.js.map +0 -38
  134. package/dist/chunks/studio-5x5774ak.js.map +0 -10
  135. package/dist/chunks/studio-685s0ytq.js.map +0 -76
  136. package/dist/chunks/studio-6a0h7sne.js.map +0 -15
  137. package/dist/chunks/studio-6f0am8f2.js.map +0 -10
  138. package/dist/chunks/studio-6kv3apa9.js.map +0 -10
  139. package/dist/chunks/studio-6zzbyx17.js.map +0 -12
  140. package/dist/chunks/studio-753znj4c.js.map +0 -16
  141. package/dist/chunks/studio-7afd21nw.js.map +0 -10
  142. package/dist/chunks/studio-8jpzqk5s.js.map +0 -10
  143. package/dist/chunks/studio-8q517dfr.js.map +0 -10
  144. package/dist/chunks/studio-8sdyjfd6.js.map +0 -10
  145. package/dist/chunks/studio-a0tswy0w.js.map +0 -9
  146. package/dist/chunks/studio-a7pzveq1.js.map +0 -11
  147. package/dist/chunks/studio-ahnzd9rg.js.map +0 -10
  148. package/dist/chunks/studio-b9b6t1dg.js.map +0 -651
  149. package/dist/chunks/studio-bw5dz6km.js.map +0 -21
  150. package/dist/chunks/studio-cjm7fdjf.js.map +0 -14
  151. package/dist/chunks/studio-ckwz4d3x.js.map +0 -12
  152. package/dist/chunks/studio-d1ks410h.js.map +0 -10
  153. package/dist/chunks/studio-dg7zyt5x.js.map +0 -10
  154. package/dist/chunks/studio-fys6z73y.js.map +0 -10
  155. package/dist/chunks/studio-g1wdche0.js.map +0 -56
  156. package/dist/chunks/studio-g8t7g0gp.js.map +0 -10
  157. package/dist/chunks/studio-h4rxscfc.js.map +0 -10
  158. package/dist/chunks/studio-hekaagev.js.map +0 -18
  159. package/dist/chunks/studio-hrajjyt2.js.map +0 -10
  160. package/dist/chunks/studio-nqq8jk8f.js.map +0 -14
  161. package/dist/chunks/studio-p471gg5n.js.map +0 -14
  162. package/dist/chunks/studio-pv8m0h4a.js.map +0 -98
  163. package/dist/chunks/studio-qhh8r5fz.js.map +0 -13
  164. package/dist/chunks/studio-qrsfh1w7.js.map +0 -41
  165. package/dist/chunks/studio-r8vx7bkz.js.map +0 -235
  166. package/dist/chunks/studio-rgwcpast.js.map +0 -12
  167. package/dist/chunks/studio-s519zc99.js.map +0 -10
  168. package/dist/chunks/studio-sas7mt3k.js.map +0 -10
  169. package/dist/chunks/studio-t5wqwzdh.js.map +0 -10
  170. package/dist/chunks/studio-tqemhphj.js.map +0 -11
  171. package/dist/chunks/studio-tr20m8g8.js.map +0 -9
  172. package/dist/chunks/studio-tvgyw9xw.js.map +0 -14
  173. package/dist/chunks/studio-x0et2z9g.js.map +0 -32
  174. package/dist/chunks/studio-xm3dbxvn.js.map +0 -19
  175. package/dist/chunks/studio-xmvbhg31.js.map +0 -10
  176. package/dist/chunks/studio-ynxwkrzd.js.map +0 -246
  177. package/dist/chunks/studio-yphy4z9m.js.map +0 -10
  178. package/dist/chunks/studio-yz9s88s0.js.map +0 -54
  179. package/dist/chunks/studio-z6nw2ek2.js.map +0 -10
  180. package/dist/chunks/studio-zqv3w24n.js.map +0 -11
  181. package/dist/chunks/tsMode-76kr53q0.js.map +0 -13
  182. package/dist/chunks/ws-client-6shc5rze.js.map +0 -12
package/dist/studio.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  seedPublishConnected
3
- } from "./chunks/studio-g8t7g0gp.js";
4
- import"./chunks/studio-hrajjyt2.js";
3
+ } from "./chunks/studio-vdpcpada.js";
4
+ import"./chunks/studio-wdt9y92a.js";
5
5
  import {
6
6
  ElementResolutionController,
7
7
  FocusVisiblePolyfillMixin,
@@ -20,10 +20,10 @@ import {
20
20
  isIPhone,
21
21
  isWebKit,
22
22
  randomID
23
- } from "./chunks/studio-qrsfh1w7.js";
23
+ } from "./chunks/studio-tzx3xmvx.js";
24
24
  import {
25
25
  DependencyManagerController
26
- } from "./chunks/studio-3z8jjm2p.js";
26
+ } from "./chunks/studio-7ejemhej.js";
27
27
  import {
28
28
  Popover
29
29
  } from "./chunks/studio-3fk1ac9z.js";
@@ -31,12 +31,12 @@ import {
31
31
  LanguageResolutionController,
32
32
  ProgressCircle,
33
33
  languageResolverUpdatedSymbol
34
- } from "./chunks/studio-6a0h7sne.js";
34
+ } from "./chunks/studio-vhk5fmfv.js";
35
35
  import"./chunks/studio-ahnzd9rg.js";
36
36
  import {
37
37
  until,
38
38
  when
39
- } from "./chunks/studio-rgwcpast.js";
39
+ } from "./chunks/studio-ay8wcr2b.js";
40
40
  import {
41
41
  IS_MOBILE,
42
42
  IS_TOUCH_DEVICE,
@@ -67,7 +67,7 @@ import {
67
67
  registerStyleCommands,
68
68
  render as render3,
69
69
  setInspectorTab
70
- } from "./chunks/studio-nqq8jk8f.js";
70
+ } from "./chunks/studio-5amdrjm4.js";
71
71
  import {
72
72
  CommandUnavailableError,
73
73
  chordFromEvent,
@@ -99,7 +99,7 @@ import {
99
99
  showSlashMenu,
100
100
  showSlashMenuAtRect,
101
101
  suppressBlockActionBar
102
- } from "./chunks/studio-pv8m0h4a.js";
102
+ } from "./chunks/studio-yxzgjq8q.js";
103
103
  import {
104
104
  addableContexts,
105
105
  defaultCommands,
@@ -111,7 +111,7 @@ import {
111
111
  tokenLabel,
112
112
  transposeStylebookStyle,
113
113
  writeTokenOverride
114
- } from "./chunks/studio-1kgfcv7s.js";
114
+ } from "./chunks/studio-a11d3a1b.js";
115
115
  import {
116
116
  DERIVE_PRESETS,
117
117
  JxColorPopover,
@@ -144,7 +144,7 @@ import {
144
144
  spNumberField,
145
145
  spTextArea,
146
146
  spTextField
147
- } from "./chunks/studio-x0et2z9g.js";
147
+ } from "./chunks/studio-hs8x23fv.js";
148
148
  import {
149
149
  LitElement,
150
150
  css
@@ -160,7 +160,7 @@ import {
160
160
  import {
161
161
  initQuickSearch,
162
162
  openQuickSearch
163
- } from "./chunks/studio-fys6z73y.js";
163
+ } from "./chunks/studio-bak2cyjr.js";
164
164
  import {
165
165
  addRecentProject,
166
166
  clearRecentProjects,
@@ -186,12 +186,11 @@ import {
186
186
  reloadFileInTab,
187
187
  removeRecentProject,
188
188
  renderFilesTemplate,
189
- seedEntry,
190
- setupTreeKeyboard
191
- } from "./chunks/studio-22xr4q8q.js";
189
+ seedEntry
190
+ } from "./chunks/studio-ncnet0ba.js";
192
191
  import {
193
192
  computeWindow
194
- } from "./chunks/studio-8sdyjfd6.js";
193
+ } from "./chunks/studio-cf4rk7kv.js";
195
194
  import {
196
195
  autoSyncProjectOnOpen,
197
196
  cleanupGitPanel,
@@ -212,13 +211,13 @@ import {
212
211
  registerSourceControlCommands,
213
212
  renderGitPanel,
214
213
  stripRange
215
- } from "./chunks/studio-hekaagev.js";
214
+ } from "./chunks/studio-4enps87v.js";
216
215
  import {
217
216
  createPanelScheduler
218
217
  } from "./chunks/studio-8jpzqk5s.js";
219
218
  import {
220
219
  selectContributedEntry
221
- } from "./chunks/studio-yphy4z9m.js";
220
+ } from "./chunks/studio-cv606rs1.js";
222
221
  import {
223
222
  notifySettingsDocument,
224
223
  onSettingsDocumentChanged,
@@ -239,7 +238,7 @@ import {
239
238
  renderForm,
240
239
  renderProvenanceChip,
241
240
  resolveContextPointer
242
- } from "./chunks/studio-300zsz1k.js";
241
+ } from "./chunks/studio-zdkgwhkv.js";
243
242
  import {
244
243
  validateDoc,
245
244
  validateProjectConfig
@@ -264,10 +263,10 @@ import {
264
263
  registerGridCommands,
265
264
  scanLibrary,
266
265
  uploadDirForCategory
267
- } from "./chunks/studio-753znj4c.js";
266
+ } from "./chunks/studio-0e4h32g6.js";
268
267
  import {
269
268
  live
270
- } from "./chunks/studio-xmvbhg31.js";
269
+ } from "./chunks/studio-c31yb4t6.js";
271
270
  import {
272
271
  negotiateCollab
273
272
  } from "./chunks/studio-dg7zyt5x.js";
@@ -308,8 +307,8 @@ import {
308
307
  setIncludeDrafts,
309
308
  startFsSync,
310
309
  writesForTurn
311
- } from "./chunks/studio-r8vx7bkz.js";
312
- import"./chunks/studio-6f0am8f2.js";
310
+ } from "./chunks/studio-x3etxs0s.js";
311
+ import"./chunks/studio-2w11grav.js";
313
312
  import"./chunks/studio-bw5dz6km.js";
314
313
  import {
315
314
  UPLOAD_ACCEPT,
@@ -317,18 +316,18 @@ import {
317
316
  isImage,
318
317
  setMediaChangedHandler,
319
318
  uploadAssets
320
- } from "./chunks/studio-qhh8r5fz.js";
319
+ } from "./chunks/studio-4058pg09.js";
321
320
  import {
322
321
  beginActivity,
323
322
  registerActivityPanel,
324
323
  showProgressModal
325
- } from "./chunks/studio-zqv3w24n.js";
324
+ } from "./chunks/studio-3q65xvzv.js";
326
325
  import {
327
326
  currentDeploy,
328
327
  latestDeployment,
329
328
  noteDeployment,
330
329
  platformSupportsPublish
331
- } from "./chunks/studio-6zzbyx17.js";
330
+ } from "./chunks/studio-5ne8mdx9.js";
332
331
  import {
333
332
  CATEGORIES,
334
333
  SPAN_FULL_RENDER,
@@ -440,7 +439,7 @@ import {
440
439
  timeSpan,
441
440
  timeSpanAsync,
442
441
  updateActivePanelHeaders
443
- } from "./chunks/studio-yz9s88s0.js";
442
+ } from "./chunks/studio-10s469da.js";
444
443
  import {
445
444
  BOTTOM_TAB_IDS,
446
445
  BUFFER_COMMIT,
@@ -607,19 +606,21 @@ import {
607
606
  updateSiteConfig,
608
607
  view,
609
608
  workspace
610
- } from "./chunks/studio-5kt960pk.js";
609
+ } from "./chunks/studio-hk523hby.js";
611
610
  import {
612
611
  classMap,
613
612
  ifDefined,
614
613
  styleMap
615
- } from "./chunks/studio-ckwz4d3x.js";
614
+ } from "./chunks/studio-twsafr1e.js";
616
615
  import {
617
616
  AsyncDirective,
617
+ Directive,
618
618
  PartType,
619
+ createRef,
619
620
  directive,
620
621
  ref,
621
622
  repeat
622
- } from "./chunks/studio-p471gg5n.js";
623
+ } from "./chunks/studio-kvfx9z2c.js";
623
624
  import {
624
625
  html,
625
626
  noChange,
@@ -668,7 +669,7 @@ import {
668
669
  mountStillWanted,
669
670
  refreshExtensionUi,
670
671
  refreshFormats
671
- } from "./chunks/studio-tqemhphj.js";
672
+ } from "./chunks/studio-50eed4c9.js";
672
673
  import {
673
674
  getPlatform,
674
675
  hasPlatform,
@@ -682,6 +683,9 @@ import {
682
683
  } from "./chunks/studio-h4rxscfc.js";
683
684
  import"./chunks/studio-t5wqwzdh.js";
684
685
  import"./chunks/studio-tr20m8g8.js";
686
+ import {
687
+ setBundleBase
688
+ } from "./chunks/studio-53n8bp04.js";
685
689
  import {
686
690
  __require
687
691
  } from "./chunks/studio-a0tswy0w.js";
@@ -729,6 +733,32 @@ function attachCursorStyles(awareness, doc) {
729
733
  };
730
734
  }
731
735
 
736
+ // ../../node_modules/lit-html/development/directives/guard.js
737
+ var initialValue = {};
738
+
739
+ class GuardDirective extends Directive {
740
+ constructor() {
741
+ super(...arguments);
742
+ this._previousValue = initialValue;
743
+ }
744
+ render(_value, f) {
745
+ return f();
746
+ }
747
+ update(_part, [value, f]) {
748
+ if (Array.isArray(value)) {
749
+ if (Array.isArray(this._previousValue) && this._previousValue.length === value.length && value.every((v, i) => v === this._previousValue[i])) {
750
+ return noChange;
751
+ }
752
+ } else if (this._previousValue === value) {
753
+ return noChange;
754
+ }
755
+ this._previousValue = Array.isArray(value) ? Array.from(value) : value;
756
+ const r = this.render(value, f);
757
+ return r;
758
+ }
759
+ }
760
+ var guard = directive(GuardDirective);
761
+
732
762
  // ../../node_modules/tabulator-tables/dist/js/tabulator_esm.mjs
733
763
  class CoreFeature {
734
764
  constructor(table) {
@@ -3706,11 +3736,11 @@ var Edit$1 = class Edit {
3706
3736
  }
3707
3737
  _deprecatedOptionsCheck() {}
3708
3738
  _initializeValue() {
3709
- var initialValue = this.cell.getValue();
3710
- if (typeof initialValue === "undefined" && typeof this.params.defaultValue !== "undefined") {
3711
- initialValue = this.params.defaultValue;
3739
+ var initialValue2 = this.cell.getValue();
3740
+ if (typeof initialValue2 === "undefined" && typeof this.params.defaultValue !== "undefined") {
3741
+ initialValue2 = this.params.defaultValue;
3712
3742
  }
3713
- this.initialValues = this.params.multiselect ? initialValue : [initialValue];
3743
+ this.initialValues = this.params.multiselect ? initialValue2 : [initialValue2];
3714
3744
  if (this.isFilter) {
3715
3745
  this.input.value = this.initialValues ? this.initialValues.join(",") : "";
3716
3746
  this.headerFilterInitialListGen();
@@ -4452,7 +4482,7 @@ var Edit$1 = class Edit {
4452
4482
  this._focusItem(item);
4453
4483
  }
4454
4484
  _resolveValue(blur) {
4455
- var output, initialValue;
4485
+ var output, initialValue2;
4456
4486
  if (this.popup) {
4457
4487
  this.popup.hide(true);
4458
4488
  }
@@ -4472,9 +4502,9 @@ var Edit$1 = class Edit {
4472
4502
  } else if (this.isFilter && this.focusedItem && this.focusedItem.selected) {
4473
4503
  output = this.focusedItem.value;
4474
4504
  } else {
4475
- initialValue = Array.isArray(this.initialValues) ? this.initialValues[0] : this.initialValues;
4476
- if (initialValue === null || typeof initialValue === "undefined" || initialValue === "") {
4477
- output = initialValue;
4505
+ initialValue2 = Array.isArray(this.initialValues) ? this.initialValues[0] : this.initialValues;
4506
+ if (initialValue2 === null || typeof initialValue2 === "undefined" || initialValue2 === "") {
4507
+ output = initialValue2;
4478
4508
  } else {
4479
4509
  output = this.params.emptyValue;
4480
4510
  }
@@ -6255,9 +6285,9 @@ class Filter extends Module {
6255
6285
  };
6256
6286
  this.generateHeaderFilterElement(column);
6257
6287
  }
6258
- generateHeaderFilterElement(column, initialValue, reinitialize) {
6288
+ generateHeaderFilterElement(column, initialValue2, reinitialize) {
6259
6289
  var self = this, success = column.modules.filter.success, field = column.getField(), filterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params, onRenderedCallback;
6260
- column.modules.filter.value = initialValue;
6290
+ column.modules.filter.value = initialValue2;
6261
6291
  function cancel() {}
6262
6292
  function onRendered(callback) {
6263
6293
  onRenderedCallback = callback;
@@ -6307,7 +6337,7 @@ class Filter extends Module {
6307
6337
  if (editor) {
6308
6338
  cellWrapper = {
6309
6339
  getValue: function() {
6310
- return typeof initialValue !== "undefined" ? initialValue : "";
6340
+ return typeof initialValue2 !== "undefined" ? initialValue2 : "";
6311
6341
  },
6312
6342
  getField: function() {
6313
6343
  return column.definition.field;
@@ -13522,8 +13552,8 @@ class InternalEventBus {
13522
13552
  subscribed(key) {
13523
13553
  return this.events[key] && this.events[key].length;
13524
13554
  }
13525
- _chain(key, args, initialValue, fallback) {
13526
- var value = initialValue;
13555
+ _chain(key, args, initialValue2, fallback) {
13556
+ var value = initialValue2;
13527
13557
  if (!Array.isArray(args)) {
13528
13558
  args = [args];
13529
13559
  }
@@ -15759,7 +15789,7 @@ function toolbarTpl(controller, panel) {
15759
15789
  size="s"
15760
15790
  quiet
15761
15791
  placeholder="Filter rows"
15762
- .value=${layout?.filter ?? ""}
15792
+ .value=${live(layout?.filter ?? "")}
15763
15793
  @input=${(e) => {
15764
15794
  const term = e.target.value;
15765
15795
  saveGridLayout(gridId, { filter: term });
@@ -16055,7 +16085,10 @@ function shellTpl(controller, panel, onHost) {
16055
16085
  return html`
16056
16086
  <div class="jx-grid">
16057
16087
  ${toolbarTpl(controller, panel)}
16058
- <div class="jx-grid-host" ${ref((el) => onHost(el))}></div>
16088
+ ${guard([controller.source.id], () => html`<div
16089
+ class="jx-grid-host"
16090
+ ${ref((el) => onHost(el))}
16091
+ ></div>`)}
16059
16092
  </div>
16060
16093
  `;
16061
16094
  }
@@ -16076,12 +16109,12 @@ function renderGridMode(surface, tab) {
16076
16109
  }
16077
16110
  const scope = effectScope();
16078
16111
  const local = reactive({ views: 0 });
16079
- const live2 = controller;
16112
+ const engine = controller;
16080
16113
  let hostEl = null;
16081
16114
  const panel = {
16082
16115
  applyLayout(layout) {
16083
- live2.setSort(layout?.sort ?? null);
16084
- live2.setGrouping(layout?.groupBy ?? null);
16116
+ engine.setSort(layout?.sort ?? null);
16117
+ engine.setGrouping(layout?.groupBy ?? null);
16085
16118
  panel.remount();
16086
16119
  panel.view?.setSearch(layout?.filter ?? "");
16087
16120
  panel.bump();
@@ -16091,7 +16124,7 @@ function renderGridMode(surface, tab) {
16091
16124
  },
16092
16125
  remount() {
16093
16126
  panel.view?.destroy();
16094
- panel.view = hostEl ? createGridView(hostEl, live2) : null;
16127
+ panel.view = hostEl ? createGridView(hostEl, engine) : null;
16095
16128
  },
16096
16129
  paneId,
16097
16130
  scope,
@@ -16774,7 +16807,7 @@ function entryIdsFor(collection) {
16774
16807
  if (known) {
16775
16808
  return known;
16776
16809
  }
16777
- const pending = import("./chunks/content-source-r2n7v682.js").then((m) => m.listCollectionEntryIds(collection));
16810
+ const pending = import("./chunks/content-source-56xpvx83.js").then((m) => m.listCollectionEntryIds(collection));
16778
16811
  entryIdCache.set(collection, pending);
16779
16812
  return pending;
16780
16813
  }
@@ -16954,7 +16987,7 @@ function headerTpl(tab, collection) {
16954
16987
  <sp-switch
16955
16988
  size="s"
16956
16989
  class="entry-draft-switch"
16957
- ?checked=${draft}
16990
+ .checked=${live(draft)}
16958
16991
  title=${DRAFT_MEANING}
16959
16992
  @change=${(e) => setEntryDraft(tab, e.target.checked)}
16960
16993
  >Draft</sp-switch
@@ -17035,7 +17068,7 @@ function renderEntryMode(surface, tab) {
17035
17068
  });
17036
17069
  }
17037
17070
  async function openEntryEditor(path) {
17038
- const { openFileInTab: openFileInTab2 } = await import("./chunks/files-zeg88k2d.js");
17071
+ const { openFileInTab: openFileInTab2 } = await import("./chunks/files-gkz202dp.js");
17039
17072
  await openFileInTab2(path);
17040
17073
  for (const [id, tab] of workspace.tabs.entries()) {
17041
17074
  if (tab.documentPath !== path) {
@@ -17096,7 +17129,7 @@ async function createEntry(collectionName) {
17096
17129
  });
17097
17130
  return null;
17098
17131
  }
17099
- const { createFileIn: createFileIn2 } = await import("./chunks/files-zeg88k2d.js");
17132
+ const { createFileIn: createFileIn2 } = await import("./chunks/files-gkz202dp.js");
17100
17133
  const created = await createFileIn2({
17101
17134
  content,
17102
17135
  dir: collection.dir,
@@ -19531,6 +19564,9 @@ function cleanupGoogleFontPreconnects(head) {
19531
19564
  }
19532
19565
 
19533
19566
  // src/panels/head-panel.ts
19567
+ var _addTag = createRef();
19568
+ var _addAttr = createRef();
19569
+ var _addVal = createRef();
19534
19570
  var layoutEntries = null;
19535
19571
  async function loadLayoutEntries() {
19536
19572
  try {
@@ -20033,7 +20069,7 @@ function renderHeadTemplate({
20033
20069
 
20034
20070
  <!-- Add custom tag form -->
20035
20071
  <div class="head-add-form">
20036
- <sp-picker size="s" label="Tag" class="head-add-tag" value="meta">
20072
+ <sp-picker size="s" label="Tag" class="head-add-tag" ${ref(_addTag)}>
20037
20073
  <sp-menu-item value="meta">meta</sp-menu-item>
20038
20074
  <sp-menu-item value="link">link</sp-menu-item>
20039
20075
  <sp-menu-item value="script">script</sp-menu-item>
@@ -20042,28 +20078,30 @@ function renderHeadTemplate({
20042
20078
  placeholder="Attribute (e.g. name)"
20043
20079
  size="s"
20044
20080
  class="head-add-attr"
20081
+ ${ref(_addAttr)}
20082
+ ></sp-textfield>
20083
+ <sp-textfield
20084
+ placeholder="Value"
20085
+ size="s"
20086
+ class="head-add-val"
20087
+ ${ref(_addVal)}
20045
20088
  ></sp-textfield>
20046
- <sp-textfield placeholder="Value" size="s" class="head-add-val"></sp-textfield>
20047
20089
  <sp-action-button
20048
20090
  quiet
20049
20091
  size="xs"
20050
20092
  title="Add tag"
20051
- @click=${(e) => {
20052
- const form = e.target.closest(".head-add-form");
20053
- const tagPicker = form?.querySelector(".head-add-tag");
20054
- const attrField = form?.querySelector(".head-add-attr");
20055
- const valField = form?.querySelector(".head-add-val");
20056
- const tagName = tagPicker?.value || "meta";
20057
- const attrKey = attrField?.value?.trim();
20058
- const attrVal = valField?.value?.trim();
20093
+ @click=${() => {
20094
+ const tagName = _addTag.value?.value || "meta";
20095
+ const attrKey = _addAttr.value?.value?.trim();
20096
+ const attrVal = _addVal.value?.value?.trim();
20059
20097
  if (!attrKey || !attrVal) {
20060
20098
  return;
20061
20099
  }
20062
- if (attrField) {
20063
- attrField.value = "";
20100
+ if (_addAttr.value) {
20101
+ _addAttr.value.value = "";
20064
20102
  }
20065
- if (valField) {
20066
- valField.value = "";
20103
+ if (_addVal.value) {
20104
+ _addVal.value.value = "";
20067
20105
  }
20068
20106
  const entry = { attributes: {}, tagName };
20069
20107
  if (tagName === "meta") {
@@ -21932,6 +21970,8 @@ function registerI18nPanel() {
21932
21970
  }
21933
21971
 
21934
21972
  // src/panels/imports-panel.ts
21973
+ var _addName = createRef();
21974
+ var _addPath = createRef();
21935
21975
  function groupByPackage() {
21936
21976
  const groups = new Map;
21937
21977
  for (const comp of componentRegistry) {
@@ -22002,23 +22042,34 @@ function renderSiteLevelImports(renderLeftPanel) {
22002
22042
  message: "Imported modules give this project extra kinds of data — " + "a content collection, a CMS, an API client. Name one below."
22003
22043
  })}
22004
22044
  <div class="import-add-form">
22005
- <sp-textfield placeholder="Name" size="s" class="import-add-name"></sp-textfield>
22006
- <sp-textfield placeholder="Path" size="s" class="import-add-path"></sp-textfield>
22045
+ <sp-textfield
22046
+ placeholder="Name"
22047
+ size="s"
22048
+ class="import-add-name"
22049
+ ${ref(_addName)}
22050
+ ></sp-textfield>
22051
+ <sp-textfield
22052
+ placeholder="Path"
22053
+ size="s"
22054
+ class="import-add-path"
22055
+ ${ref(_addPath)}
22056
+ ></sp-textfield>
22007
22057
  <sp-action-button
22008
22058
  quiet
22009
22059
  size="xs"
22010
22060
  title="Add import"
22011
- @click=${async (e) => {
22012
- const form = e.target.closest(".import-add-form");
22013
- const nameField = form?.querySelector(".import-add-name");
22014
- const pathField = form?.querySelector(".import-add-path");
22015
- const name = nameField?.value?.trim();
22016
- const path = pathField?.value?.trim();
22061
+ @click=${async () => {
22062
+ const name = _addName.value?.value?.trim();
22063
+ const path = _addPath.value?.value?.trim();
22017
22064
  if (!name || !path) {
22018
22065
  return;
22019
22066
  }
22020
- nameField.value = "";
22021
- pathField.value = "";
22067
+ if (_addName.value) {
22068
+ _addName.value.value = "";
22069
+ }
22070
+ if (_addPath.value) {
22071
+ _addPath.value.value = "";
22072
+ }
22022
22073
  const updated = { ...siteImports, [name]: path };
22023
22074
  await updateSiteConfig({ imports: updated });
22024
22075
  renderLeftPanel();
@@ -22159,9 +22210,9 @@ function renderDocumentLevelImports({
22159
22210
  const importedRefs = new Set(refEntries.map((e) => e.$ref));
22160
22211
  const availableComponents = componentRegistry.filter((c) => c.source !== "npm" && c.path != null && !importedRefs.has(`./${c.path}`) && !importedRefs.has(c.path));
22161
22212
  const packageGroups = groupByPackage();
22162
- const removeRef = (ref2) => {
22213
+ const removeRef = (elementRef) => {
22163
22214
  applyMutation((doc) => {
22164
- doc.$elements = removeElementRef(doc.$elements ?? [], ref2);
22215
+ doc.$elements = removeElementRef(doc.$elements ?? [], elementRef);
22165
22216
  });
22166
22217
  renderLeftPanel();
22167
22218
  };
@@ -22298,7 +22349,7 @@ function groupProblems(records = problems) {
22298
22349
  return groups;
22299
22350
  }
22300
22351
  function openProblemPath(path) {
22301
- import("./chunks/files-zeg88k2d.js").then((m) => m.openFileInTab(path));
22352
+ import("./chunks/files-gkz202dp.js").then((m) => m.openFileInTab(path));
22302
22353
  }
22303
22354
  function actionTpl(record) {
22304
22355
  const id = record.action;
@@ -35549,8 +35600,8 @@ class TruncatedValueTooltipController {
35549
35600
  return;
35550
35601
  }
35551
35602
  await Promise.all([
35552
- import("./chunks/sp-overlay.dev-h6kdx076.js"),
35553
- import("./chunks/sp-tooltip.dev-rvepkw4r.js")
35603
+ import("./chunks/sp-overlay.dev-s18hymn9.js"),
35604
+ import("./chunks/sp-tooltip.dev-5c6d1kjz.js")
35554
35605
  ]);
35555
35606
  this._tooltipDepsLoaded = true;
35556
35607
  Promise.resolve().then(() => {
@@ -36523,7 +36574,7 @@ class MenuItem extends LikeAnchor(ObserveSlotText(ObserveSlotPresence(Focusable,
36523
36574
  }
36524
36575
  this.dependencyManager.add("sp-overlay");
36525
36576
  this.dependencyManager.add("sp-popover");
36526
- import("./chunks/sp-overlay.dev-h6kdx076.js");
36577
+ import("./chunks/sp-overlay.dev-s18hymn9.js");
36527
36578
  import("./chunks/sp-popover.dev-dj9x7e7a.js");
36528
36579
  return html`
36529
36580
  <sp-overlay
@@ -45588,7 +45639,7 @@ class PickerBase extends SizedMixin(ExpandableElement, {
45588
45639
  `;
45589
45640
  }
45590
45641
  renderLoader() {
45591
- import("./chunks/sp-progress-circle.dev-0fpvhm52.js");
45642
+ import("./chunks/sp-progress-circle.dev-0zxcyz3r.js");
45592
45643
  return html`
45593
45644
  <sp-progress-circle
45594
45645
  size="s"
@@ -45669,7 +45720,7 @@ class PickerBase extends SizedMixin(ExpandableElement, {
45669
45720
  var _a;
45670
45721
  const container = this.renderContainer(menu);
45671
45722
  this.dependencyManager.add("sp-overlay");
45672
- import("./chunks/sp-overlay.dev-h6kdx076.js");
45723
+ import("./chunks/sp-overlay.dev-s18hymn9.js");
45673
45724
  return html`
45674
45725
  <sp-overlay
45675
45726
  @slottable-request=${this.handleSlottableRequest}
@@ -46239,7 +46290,7 @@ class Picker extends SizedMixin(ExpandableElement, {
46239
46290
  `;
46240
46291
  }
46241
46292
  renderLoader() {
46242
- import("./chunks/sp-progress-circle.dev-0fpvhm52.js");
46293
+ import("./chunks/sp-progress-circle.dev-0zxcyz3r.js");
46243
46294
  return html`
46244
46295
  <sp-progress-circle
46245
46296
  size="s"
@@ -46320,7 +46371,7 @@ class Picker extends SizedMixin(ExpandableElement, {
46320
46371
  var _a;
46321
46372
  const container = this.renderContainer(menu);
46322
46373
  this.dependencyManager.add("sp-overlay");
46323
- import("./chunks/sp-overlay.dev-h6kdx076.js");
46374
+ import("./chunks/sp-overlay.dev-s18hymn9.js");
46324
46375
  return html`
46325
46376
  <sp-overlay
46326
46377
  @slottable-request=${this.handleSlottableRequest}
@@ -46934,7 +46985,7 @@ class Combobox extends Textfield {
46934
46985
  `;
46935
46986
  }
46936
46987
  renderLoader() {
46937
- import("./chunks/sp-progress-circle.dev-0fpvhm52.js");
46988
+ import("./chunks/sp-progress-circle.dev-0zxcyz3r.js");
46938
46989
  return html`
46939
46990
  <sp-progress-circle
46940
46991
  size="s"
@@ -58528,9 +58579,9 @@ function renderDefsEditor(container) {
58528
58579
 
58529
58580
  // src/version.ts
58530
58581
  var APP_NAME = "Jx Studio";
58531
- var VERSION = "2.2.2";
58532
- var BUILD_DATE = "2026-08-21T22:51:17.552Z";
58533
- var GIT_COMMIT = "a0144fd";
58582
+ var VERSION = "2.3.0";
58583
+ var BUILD_DATE = "2026-08-23T02:43:07.261Z";
58584
+ var GIT_COMMIT = "968e4d4";
58534
58585
  var LINKS = {
58535
58586
  github: "https://github.com/jxsuite/jx",
58536
58587
  docs: "https://github.com/jxsuite/jx#readme",
@@ -58543,7 +58594,7 @@ var _container2 = null;
58543
58594
  var _packages = null;
58544
58595
  var _latest = new Map;
58545
58596
  var _busy = false;
58546
- var _addName = "";
58597
+ var _addName2 = "";
58547
58598
  function latestFor(p2) {
58548
58599
  if (p2.name.startsWith(JXSUITE_PREFIX) && isComparable(VERSION) && isUpgrade(p2.version, VERSION)) {
58549
58600
  return VERSION;
@@ -58586,13 +58637,13 @@ async function withBusy(fn) {
58586
58637
  }
58587
58638
  }
58588
58639
  async function onAdd() {
58589
- const name = _addName.trim();
58640
+ const name = _addName2.trim();
58590
58641
  if (!name) {
58591
58642
  return;
58592
58643
  }
58593
58644
  await withBusy(async () => {
58594
58645
  await getPlatform().addPackage(name);
58595
- _addName = "";
58646
+ _addName2 = "";
58596
58647
  notify.success(`Added ${name}.`);
58597
58648
  });
58598
58649
  }
@@ -58698,10 +58749,10 @@ function render11() {
58698
58749
  <sp-textfield
58699
58750
  size="s"
58700
58751
  placeholder="package-name"
58701
- .value=${_addName}
58752
+ .value=${_addName2}
58702
58753
  ?disabled=${_busy}
58703
58754
  @input=${(e20) => {
58704
- _addName = e20.target.value;
58755
+ _addName2 = e20.target.value;
58705
58756
  }}
58706
58757
  ></sp-textfield>
58707
58758
  <sp-action-button size="s" ?disabled=${_busy} @click=${onAdd}>
@@ -58742,7 +58793,7 @@ function render11() {
58742
58793
  function renderDependenciesEditor(container) {
58743
58794
  _container2 = container;
58744
58795
  _packages = null;
58745
- _addName = "";
58796
+ _addName2 = "";
58746
58797
  render11();
58747
58798
  load();
58748
58799
  }
@@ -59607,7 +59658,7 @@ async function openProjectSettings(section) {
59607
59658
  showSettingsDocument();
59608
59659
  notifySettingsDocument();
59609
59660
  try {
59610
- const { syncExtensionSettingsSections } = await import("./chunks/extension-sections-vpcm4jvx.js");
59661
+ const { syncExtensionSettingsSections } = await import("./chunks/extension-sections-g34239vm.js");
59611
59662
  await syncExtensionSettingsSections();
59612
59663
  } catch (error) {
59613
59664
  notify.warn(`Could not load extension settings sections — ${errorMessage(error)}`, {
@@ -60231,7 +60282,7 @@ function publishCommands() {
60231
60282
  name: "set_up_publishing"
60232
60283
  },
60233
60284
  run: async () => {
60234
- const { openPublishPanel } = await import("./chunks/publish-panel-6qz6kp41.js");
60285
+ const { openPublishPanel } = await import("./chunks/publish-panel-ptddc3kg.js");
60235
60286
  openPublishPanel();
60236
60287
  },
60237
60288
  title: "Set Up Publishing"
@@ -60953,7 +61004,7 @@ function i18nCommands() {
60953
61004
  });
60954
61005
  return;
60955
61006
  }
60956
- const { openFileInTab: openFileInTab2 } = await import("./chunks/files-zeg88k2d.js");
61007
+ const { openFileInTab: openFileInTab2 } = await import("./chunks/files-gkz202dp.js");
60957
61008
  await openFileInTab2(path);
60958
61009
  },
60959
61010
  title: "Open Translation"
@@ -61000,7 +61051,7 @@ function i18nCommands() {
61000
61051
  return;
61001
61052
  }
61002
61053
  const cut = path.lastIndexOf("/");
61003
- const { createFileIn: createFileIn2, openFileInTab: openFileInTab2 } = await import("./chunks/files-zeg88k2d.js");
61054
+ const { createFileIn: createFileIn2, openFileInTab: openFileInTab2 } = await import("./chunks/files-gkz202dp.js");
61004
61055
  const created = await createFileIn2({
61005
61056
  content,
61006
61057
  dir: cut === -1 ? "." : path.slice(0, cut),
@@ -61058,7 +61109,85 @@ function registerI18nCommands(registry) {
61058
61109
  registry.registerAll(i18nCommands());
61059
61110
  }
61060
61111
 
61112
+ // src/shell/tree.ts
61113
+ function mountInto(host, tpl) {
61114
+ host.textContent = "";
61115
+ delete host["_$litPart$"];
61116
+ render2(tpl, host);
61117
+ }
61118
+ function overlayLayers() {
61119
+ return html`
61120
+ <!-- The four overlay layers, in stacking order. Their z-indices were inline style
61121
+ attributes, which put the one piece of ordering the whole overlay system depends on
61122
+ outside the reach of check-styles.ts's stacking rule — the check that exists because a
61123
+ blocking progress modal once shipped above its own scrim with no reachable exit. They are
61124
+ classes in styles/overlays.css now, and the toast host is ABOVE the dialog host because
61125
+ an operation started from a dialog reports its outcome to the person still looking at
61126
+ it. -->
61127
+ <div id="layer-popover" class="jx-layer jx-layer--popover"></div>
61128
+ <div id="layer-modal" class="jx-layer jx-layer--modal"></div>
61129
+ <div id="layer-dialog" class="jx-layer jx-layer--dialog"></div>
61130
+ <!-- role="status" sits on the HOST, so a stack of toasts is announced as one live region
61131
+ rather than one region per notification. It carries its region id whether or not a toast
61132
+ has ever been raised: a region that only exists once something has gone wrong is one a
61133
+ screenshot cannot address and focus cannot be moved into. -->
61134
+ <div
61135
+ id="layer-toast"
61136
+ class="jx-layer jx-layer--toast"
61137
+ role="status"
61138
+ aria-live="polite"
61139
+ data-jx-region="overlay.toasts"
61140
+ ></div>
61141
+ `;
61142
+ }
61143
+ function shellTree() {
61144
+ return html`
61145
+ <div id="app">
61146
+ <div id="toolbar" data-jx-region="commandbar"></div>
61147
+ <!-- The PANE GRID (studio.md §18.1). One cell per pane, each holding that pane's own strip,
61148
+ jump bar, chrome layer and stage — the four surfaces that used to be flat siblings of
61149
+ THIS grid, which is to say application rows that only ever described one pane. There is
61150
+ nothing to see here in markup: panels/pane-grid.ts reconciles the cells against
61151
+ workspace.panes, because how many there are is a fact about the workspace and a
61152
+ single div can only ever be one of them. -->
61153
+ <div id="pane-grid"></div>
61154
+ <div id="activity-bar" data-jx-region="rail"></div>
61155
+ <div id="left-panel" data-jx-region="navigator"></div>
61156
+ <div id="resize-left" class="resize-handle"></div>
61157
+ <!-- The Bottom dock (⌘J). It sits in the PANE's column, under the stage and above the
61158
+ status bar, so opening it never narrows the Navigator or the Inspector (studio.md §12
61159
+ region ⑪). Its handle resizes on the other axis; panels/bottom-dock.ts stamps
61160
+ dock.bottom on this host while it is open, and nothing while it is closed. -->
61161
+ <div id="resize-bottom" class="resize-handle resize-handle-row"></div>
61162
+ <div id="bottom-dock"></div>
61163
+ <div id="resize-right" class="resize-handle"></div>
61164
+ <!-- The Inspector dock. Four tabs — Content · Style · Logic · Assistant (studio.md §12
61165
+ region ⑨) — all inside this one host. -->
61166
+ <div id="right-panel" data-jx-region="inspector"></div>
61167
+ <!-- The app's only status channel: announce what lands in it (studio.md §12 region ⑫). -->
61168
+ <div id="statusbar" role="status" aria-live="polite" data-jx-region="statusbar"></div>
61169
+ </div>
61170
+ ${overlayLayers()}
61171
+ `;
61172
+ }
61173
+ function mountShellTree(host = document.body) {
61174
+ mountInto(themeHost(host), shellTree());
61175
+ }
61176
+ function themeHost(host) {
61177
+ const existing = host.querySelector?.("sp-theme");
61178
+ if (existing) {
61179
+ return existing;
61180
+ }
61181
+ const theme = document.createElement("sp-theme");
61182
+ theme.setAttribute("color", "dark");
61183
+ theme.setAttribute("scale", "medium");
61184
+ theme.setAttribute("system", "spectrum");
61185
+ host.append(theme);
61186
+ return theme;
61187
+ }
61188
+
61061
61189
  // src/studio.ts
61190
+ setBundleBase(import.meta.url);
61062
61191
  var derivationDeps = {
61063
61192
  fileExists: async (path) => {
61064
61193
  try {
@@ -61121,6 +61250,7 @@ if (!hasPlatform()) {
61121
61250
  registerPlatform(resolveDefaultPlatform());
61122
61251
  }
61123
61252
  mountResizeEdges();
61253
+ mountShellTree();
61124
61254
  initShellRefs();
61125
61255
  mountShell();
61126
61256
  mount8(toolbarEl, {
@@ -61337,7 +61467,6 @@ mount10({
61337
61467
  setGitDiffState: (state2) => {
61338
61468
  shell.git.diffState = state2;
61339
61469
  },
61340
- setupTreeKeyboard,
61341
61470
  webdata: webdata_default
61342
61471
  });
61343
61472
  registerRenderer("leftPanel", () => render10());
@@ -61735,5 +61864,5 @@ export {
61735
61864
  hasUnsavedTabs
61736
61865
  };
61737
61866
 
61738
- //# debugId=89F1C4C5C6FDAA9A64756E2164756E21
61867
+ //# debugId=7167B13925BF1BB364756E2164756E21
61739
61868
  //# sourceMappingURL=studio.js.map