@jxsuite/studio 2.2.1 → 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 +12 -5
  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
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Overlay
3
- } from "./studio-qrsfh1w7.js";
3
+ } from "./studio-tzx3xmvx.js";
4
4
  import {
5
5
  defineElement
6
6
  } from "./studio-18j3bmcz.js";
@@ -9,4 +9,4 @@ import {
9
9
  defineElement("sp-overlay", Overlay);
10
10
 
11
11
  //# debugId=24A9645EA10C33DD64756E2164756E21
12
- //# sourceMappingURL=studio-hrajjyt2.js.map
12
+ //# sourceMappingURL=studio-wdt9y92a.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  unsafeHTML
3
- } from "./studio-6f0am8f2.js";
3
+ } from "./studio-2w11grav.js";
4
4
  import {
5
5
  VFile,
6
6
  ok,
@@ -16,19 +16,19 @@ import {
16
16
  isMediaFile,
17
17
  loadUsages,
18
18
  usageWarning
19
- } from "./studio-qhh8r5fz.js";
19
+ } from "./studio-4058pg09.js";
20
20
  import {
21
21
  showProgressModal
22
- } from "./studio-zqv3w24n.js";
22
+ } from "./studio-3q65xvzv.js";
23
23
  import {
24
24
  deployStatusItem
25
- } from "./studio-6zzbyx17.js";
25
+ } from "./studio-5ne8mdx9.js";
26
26
  import {
27
27
  derivationOfPane,
28
28
  flushCanvasEdits,
29
29
  rectOf,
30
30
  tabOfPane
31
- } from "./studio-yz9s88s0.js";
31
+ } from "./studio-10s469da.js";
32
32
  import {
33
33
  EDITOR_KIND_LABELS,
34
34
  PRIMARY_PANE,
@@ -54,10 +54,11 @@ import {
54
54
  showConfirmDialog,
55
55
  toRaw,
56
56
  workspace
57
- } from "./studio-5kt960pk.js";
57
+ } from "./studio-hk523hby.js";
58
58
  import {
59
- ref
60
- } from "./studio-p471gg5n.js";
59
+ ref,
60
+ repeat
61
+ } from "./studio-kvfx9z2c.js";
61
62
  import {
62
63
  html,
63
64
  nothing,
@@ -82,7 +83,7 @@ import {
82
83
  loadFormats,
83
84
  noFormatError,
84
85
  splitFormatDocument
85
- } from "./studio-tqemhphj.js";
86
+ } from "./studio-50eed4c9.js";
86
87
  import {
87
88
  getPlatform
88
89
  } from "./studio-sas7mt3k.js";
@@ -14357,7 +14358,7 @@ function renderMessageList(opts) {
14357
14358
  elements, and wire up components.
14358
14359
  </div>
14359
14360
  ` : nothing}
14360
- ${messages.map((msg, i) => {
14361
+ ${repeat(messages, (msg) => msg.id, (msg, i) => {
14361
14362
  if (msg.role === "user") {
14362
14363
  return renderUserMessage(msg);
14363
14364
  }
@@ -15127,7 +15128,7 @@ function buildEntryFileSource(opts) {
15127
15128
  await writeEntry(path2, entry, patches);
15128
15129
  outcome(true);
15129
15130
  if (openTab2) {
15130
- const { reloadFileInTab } = await import("./files-zeg88k2d.js");
15131
+ const { reloadFileInTab } = await import("./files-gkz202dp.js");
15131
15132
  reloadFileInTab(path2);
15132
15133
  }
15133
15134
  } catch (error) {
@@ -15291,5 +15292,5 @@ function createPagesSource() {
15291
15292
 
15292
15293
  export { markLocalMutation, isRecentLocal, startFsSync, cellValuesEqual, makeGridTabId, parseGridTabId, gridTabLabel, columnsFromSchema, inferColumnsFromRows, coerceCellInput, cellToText, ROW_KEY_FIELD, getGridController, createGridController, DRAFT_FIELD, DRAFT_MEANING, isDraftEntry, hasDraftAxis, setIncludeDrafts, attachJumpBarHost, mountJumpBar, buildMessageWithContext, clearMarkdownCache, beginTurn, recordWrite, endTurn, writesForTurn, renderChatHeader, renderMessageList, renderSessionsList, renderStatusbar, mountStatusbar, mediaTypeEssence, parseSourceForPath, saveFile, exportFile, serializeDocument, confirmFileDelete, renamePromptMessage, PATH_FIELD, collectionInfo, collectionDirs, listCollectionEntryIds, reloadDraftAwareGrids, createCollectionSource, createPagesSource };
15293
15294
 
15294
- //# debugId=33CCC499088F7D6064756E2164756E21
15295
- //# sourceMappingURL=studio-r8vx7bkz.js.map
15295
+ //# debugId=43284A78BBF6BE9864756E2164756E21
15296
+ //# sourceMappingURL=studio-x3etxs0s.js.map
@@ -3,19 +3,19 @@ import {
3
3
  noopCommandDeps,
4
4
  selectStylebookTag,
5
5
  stylebook_meta_default
6
- } from "./studio-1kgfcv7s.js";
6
+ } from "./studio-a11d3a1b.js";
7
7
  import {
8
8
  dataTypeLabel,
9
9
  defCategory,
10
10
  inspectorCommands,
11
11
  unwrapSignal
12
- } from "./studio-x0et2z9g.js";
12
+ } from "./studio-hs8x23fv.js";
13
13
  import {
14
14
  listWindow,
15
15
  measuredRowHeight,
16
16
  revealListRow,
17
17
  watchListWindow
18
- } from "./studio-8sdyjfd6.js";
18
+ } from "./studio-cf4rk7kv.js";
19
19
  import {
20
20
  VFile,
21
21
  VFileMessage,
@@ -27,7 +27,7 @@ import {
27
27
  } from "./studio-bw5dz6km.js";
28
28
  import {
29
29
  usagesSupported
30
- } from "./studio-qhh8r5fz.js";
30
+ } from "./studio-4058pg09.js";
31
31
  import {
32
32
  KEY_SCOPES,
33
33
  activeCanvasSurface,
@@ -43,7 +43,7 @@ import {
43
43
  rectOf,
44
44
  registerPanel,
45
45
  renderEmptyState
46
- } from "./studio-yz9s88s0.js";
46
+ } from "./studio-10s469da.js";
47
47
  import {
48
48
  activeRegistry,
49
49
  activeTab,
@@ -81,16 +81,16 @@ import {
81
81
  transactDoc,
82
82
  view,
83
83
  workspace
84
- } from "./studio-5kt960pk.js";
84
+ } from "./studio-hk523hby.js";
85
85
  import {
86
86
  classMap,
87
87
  ifDefined,
88
88
  styleMap
89
- } from "./studio-ckwz4d3x.js";
89
+ } from "./studio-twsafr1e.js";
90
90
  import {
91
91
  ref,
92
92
  repeat
93
- } from "./studio-p471gg5n.js";
93
+ } from "./studio-kvfx9z2c.js";
94
94
  import {
95
95
  html,
96
96
  nothing,
@@ -12675,6 +12675,7 @@ var SLASH_COMMANDS = [
12675
12675
  ];
12676
12676
  var callbacks = null;
12677
12677
  var activeIdx = 0;
12678
+ var showFilter = false;
12678
12679
  var filteredItems = [];
12679
12680
  var open = false;
12680
12681
  var _anchorRect = null;
@@ -12699,7 +12700,8 @@ function showAt(rect, filter, cbs) {
12699
12700
  return;
12700
12701
  }
12701
12702
  activeIdx = 0;
12702
- render2(cbs.showFilter || false);
12703
+ showFilter = cbs.showFilter || false;
12704
+ render2();
12703
12705
  if (!open) {
12704
12706
  open = true;
12705
12707
  document.addEventListener("keydown", onKeydown, true);
@@ -12731,7 +12733,7 @@ function dismissSlashMenu() {
12731
12733
  render(nothing, getHost());
12732
12734
  cbs?.onDismiss?.();
12733
12735
  }
12734
- function render2(showFilter) {
12736
+ function render2() {
12735
12737
  const rect = _anchorRect;
12736
12738
  if (!rect) {
12737
12739
  return;
@@ -12759,7 +12761,7 @@ function render2(showFilter) {
12759
12761
  <sp-menu style="min-width:220px">
12760
12762
  ${filteredItems.length > 0 ? filteredItems.map((cmd, i) => html`
12761
12763
  <sp-menu-item
12762
- ?focused=${i === 0}
12764
+ ?focused=${i === activeIdx}
12763
12765
  @click=${(e) => {
12764
12766
  e.preventDefault();
12765
12767
  e.stopPropagation();
@@ -12790,7 +12792,7 @@ function onFilterInput(e) {
12790
12792
  const source = callbacks?.commands || SLASH_COMMANDS;
12791
12793
  filteredItems = filter ? source.filter((c) => c.label.toLowerCase().includes(filter) || c.tag.toLowerCase().includes(filter)) : source;
12792
12794
  activeIdx = 0;
12793
- render2(true);
12795
+ render2();
12794
12796
  requestAnimationFrame(() => {
12795
12797
  if (_filterEl && _filterEl !== document.activeElement) {
12796
12798
  _filterEl.focus();
@@ -12799,6 +12801,10 @@ function onFilterInput(e) {
12799
12801
  }
12800
12802
  });
12801
12803
  }
12804
+ function revealActive() {
12805
+ const rows = getHost().querySelectorAll("sp-menu-item:not([disabled])");
12806
+ rows[activeIdx]?.scrollIntoView({ block: "nearest" });
12807
+ }
12802
12808
  function handleSlashMenuKey(key) {
12803
12809
  if (!open) {
12804
12810
  return;
@@ -12808,18 +12814,16 @@ function handleSlashMenuKey(key) {
12808
12814
  if (items.length === 0) {
12809
12815
  return;
12810
12816
  }
12811
- items[activeIdx]?.removeAttribute("focused");
12812
12817
  activeIdx = (activeIdx + 1) % items.length;
12813
- items[activeIdx]?.setAttribute("focused", "");
12814
- items[activeIdx]?.scrollIntoView({ block: "nearest" });
12818
+ render2();
12819
+ revealActive();
12815
12820
  } else if (key === "ArrowUp") {
12816
12821
  if (items.length === 0) {
12817
12822
  return;
12818
12823
  }
12819
- items[activeIdx]?.removeAttribute("focused");
12820
12824
  activeIdx = (activeIdx - 1 + items.length) % items.length;
12821
- items[activeIdx]?.setAttribute("focused", "");
12822
- items[activeIdx]?.scrollIntoView({ block: "nearest" });
12825
+ render2();
12826
+ revealActive();
12823
12827
  } else if (key === "Enter") {
12824
12828
  const cmd = filteredItems[activeIdx];
12825
12829
  if (cmd) {
@@ -14168,7 +14172,7 @@ function elementCommands(deps) {
14168
14172
  if (!target?.rerender) {
14169
14173
  return;
14170
14174
  }
14171
- const { startLayerTitleEdit } = await import("./layers-panel-kj93w2zg.js");
14175
+ const { startLayerTitleEdit } = await import("./layers-panel-8mvn8sgd.js");
14172
14176
  startLayerTitleEdit(target.path, target.rerender);
14173
14177
  }
14174
14178
  }
@@ -14411,7 +14415,8 @@ function rowTemplate(row, index) {
14411
14415
  return html`${row.dividerAbove ? html`<sp-menu-divider role="separator"></sp-menu-divider>` : nothing}<sp-menu-item
14412
14416
  role="menuitem"
14413
14417
  data-command-id=${row.command.id}
14414
- tabindex=${index === 0 ? 0 : -1}
14418
+ tabindex=${index === _activeIdx ? 0 : -1}
14419
+ ?focused=${index === _activeIdx}
14415
14420
  ?disabled=${!row.enabled}
14416
14421
  aria-disabled=${row.enabled ? "false" : "true"}
14417
14422
  style=${row.command.destructive && row.enabled ? "color: var(--danger)" : ""}
@@ -14817,7 +14822,7 @@ function onTreeKeydown(e, collapsed, rerender) {
14817
14822
  }
14818
14823
  function startLayerTitleEdit(path, rerender) {
14819
14824
  const key = pathKey(path);
14820
- const row = document.querySelector(`.layer-row[data-path="${key}"]`);
14825
+ const row = _outlineList ? rowElementFor(_outlineList, key) : null;
14821
14826
  if (!row) {
14822
14827
  const index = outlineIndexOfPath(path);
14823
14828
  if (index >= 0 && revealOutlineRow(index)) {
@@ -15167,5 +15172,5 @@ function registerLayersPanel() {
15167
15172
 
15168
15173
  export { findEnclosingRepeater, convertToComponent, showSlashMenu, showSlashMenuAtRect, dismissSlashMenu, handleSlashMenuKey, parseChord, normalizeChord, chordFromEvent, formatChord, overlappingScopes, chordsInScopes, CommandUnavailableError, createCommandRegistry, initBlockActionBar, formatCommands, registerSelectionCommands, dismissLinkPopover, dismissBlockActionBar, suppressBlockActionBar, releaseBlockActionBar, isEditChromeTarget, renderBlockActionBar, outlineLabel, OUTLINE_ROW_MAX_ITEMS, renderRowCommands, clearHoverActions, onTreeHover, afterTreeRender, indentWidth, OUTLINE_ROW_HEIGHT, outlineRowPath, applyTreeRovingTabindex, applyRowSelection, onTreeKeydown, startLayerTitleEdit, renderLayersTemplate, registerLayersPanel, pasteNode, clipboardCommands, setContextMenuNavigate, liveElementCommands, dismissContextMenu, showContextMenu };
15169
15174
 
15170
- //# debugId=0A72A5F10EA65EFD64756E2164756E21
15171
- //# sourceMappingURL=studio-pv8m0h4a.js.map
15175
+ //# debugId=5DE335A028CC7DD364756E2164756E21
15176
+ //# sourceMappingURL=studio-yxzgjq8q.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  live
3
- } from "./studio-xmvbhg31.js";
3
+ } from "./studio-c31yb4t6.js";
4
4
  import {
5
5
  BLESSED_GLOBALS,
6
6
  BLESSED_OPERATORS,
@@ -8,20 +8,20 @@ import {
8
8
  intlHelpersClause,
9
9
  rectOf,
10
10
  renderEmptyState
11
- } from "./studio-yz9s88s0.js";
11
+ } from "./studio-10s469da.js";
12
12
  import {
13
13
  LANGUAGE_TAG_PATTERN,
14
14
  activeTab,
15
15
  getLayerSlot
16
- } from "./studio-5kt960pk.js";
16
+ } from "./studio-hk523hby.js";
17
17
  import {
18
18
  classMap,
19
19
  ifDefined,
20
20
  styleMap
21
- } from "./studio-ckwz4d3x.js";
21
+ } from "./studio-twsafr1e.js";
22
22
  import {
23
23
  ref
24
- } from "./studio-p471gg5n.js";
24
+ } from "./studio-kvfx9z2c.js";
25
25
  import {
26
26
  html,
27
27
  nothing,
@@ -4229,4 +4229,4 @@ function resolveContextPointer(pointer, opts) {
4229
4229
  export { renderProvenanceChip, countProvenance, renderProvenanceDots, renderFieldRow, renderKvRow, renderStaticKvRow, chipSummary, renderFormulaChips, applyCatalogPick, globalEntries, namedFormulaEntries, formulaCatalog, openFormulaPalette, REDIRECT_STATUSES, VALUE_SOURCE_LABELS, slotMode, capsForPosition, isActionExpression, expressionHint, renderOperandEditor, renderExpressionEditor, switchSlotMode, renderDynamicSlot, registerFormControl, getFormControl, referenceTarget, NULL_FORM_CONTEXT, renderForm, resolveContextPointer };
4230
4230
 
4231
4231
  //# debugId=D548DF8319DDE4D664756E2164756E21
4232
- //# sourceMappingURL=studio-300zsz1k.js.map
4232
+ //# sourceMappingURL=studio-zdkgwhkv.js.map
Binary file
@@ -7596,7 +7596,14 @@ function serializeDataScope(defs) {
7596
7596
  return out;
7597
7597
  }
7598
7598
 
7599
+ // src/services/bundle-base.ts
7600
+ var base;
7601
+ function setBundleBase(entryUrl) {
7602
+ base = new URL("./", entryUrl).href;
7603
+ }
7604
+
7599
7605
  // src/canvas/iframe-entry.ts
7606
+ setBundleBase(import.meta.url);
7600
7607
  function previewAt(cursor, src, shadowDoc, doc) {
7601
7608
  const targetEl = resolveDropTarget(cursor.x, cursor.y, doc);
7602
7609
  if (!targetEl) {
@@ -8159,5 +8166,5 @@ export {
8159
8166
  startCanvasIframe
8160
8167
  };
8161
8168
 
8162
- //# debugId=2A1ED93DD671246A64756E2164756E21
8169
+ //# debugId=244C80B20BAE5F4364756E2164756E21
8163
8170
  //# sourceMappingURL=iframe-entry.js.map
@@ -0,0 +1,82 @@
1
+ {
2
+ "assets": [
3
+ {
4
+ "dir": false,
5
+ "kind": "document",
6
+ "path": "index.html",
7
+ "required": true,
8
+ "why": "the editor document. Generated from studioShellHtml(); a host serving the shell at its own path should render its own rather than copy this one."
9
+ },
10
+ {
11
+ "dir": false,
12
+ "kind": "document",
13
+ "path": "canvas.html",
14
+ "required": true,
15
+ "why": "the canvas iframe document. Without it every canvas frame 404s at boot."
16
+ },
17
+ {
18
+ "dir": false,
19
+ "kind": "entry",
20
+ "path": "dist/studio.js",
21
+ "required": true,
22
+ "why": "the editor bundle. Its path is a contract (studio.md 11.1) and is never hashed, because it anchors every other url the bundle resolves."
23
+ },
24
+ {
25
+ "dir": false,
26
+ "kind": "entry",
27
+ "path": "dist/iframe-entry.js",
28
+ "required": true,
29
+ "why": "the canvas bundle, loaded by canvas.html. Same unhashed-path contract."
30
+ },
31
+ {
32
+ "dir": false,
33
+ "kind": "style",
34
+ "path": "dist/studio.css",
35
+ "required": true,
36
+ "why": "the bundle's own stylesheet — Monaco's tokens and Tabulator's theme. Distinct from styles/, which is hand-authored."
37
+ },
38
+ {
39
+ "dir": false,
40
+ "kind": "asset",
41
+ "path": "dist/codicon.ttf",
42
+ "required": true,
43
+ "why": "Monaco's icon font, referenced by dist/studio.css and by three chunk stylesheets. It shipped in no tarball and no copy list for months, so every host drew tofu where Monaco draws icons."
44
+ },
45
+ {
46
+ "dir": false,
47
+ "kind": "asset",
48
+ "path": "dist/manifest.json",
49
+ "required": false,
50
+ "why": "this manifest as data, for a host that cannot import TypeScript — a Nix derivation, a shell script, a build in another language. Not required: a host that CAN import it has the same facts with types on them."
51
+ },
52
+ {
53
+ "dir": true,
54
+ "kind": "chunk",
55
+ "path": "dist/chunks",
56
+ "required": true,
57
+ "why": "the split chunks — Monaco, yjs, ajv and every on-demand import. The entry reaches them by url relative to itself, so the directory ships wholesale with its emitted names intact. A bundle that cannot find them dies at boot with a bare module-resolution error."
58
+ },
59
+ {
60
+ "dir": true,
61
+ "kind": "worker",
62
+ "path": "dist/workers",
63
+ "required": true,
64
+ "why": "Monaco's pre-bundled web workers. Missing, they do not 404 loudly: the code view simply has no JSON language service, so no schema validation, no completion and no hover, with nothing in the console."
65
+ },
66
+ {
67
+ "dir": true,
68
+ "kind": "style",
69
+ "path": "styles",
70
+ "required": true,
71
+ "why": "the hand-authored chrome stylesheet, linked by the document in cascade order. No bundler sees it. Missing, the editor boots with no tokens, no grid and no panel chrome."
72
+ },
73
+ {
74
+ "dir": true,
75
+ "kind": "font",
76
+ "path": "fonts",
77
+ "required": true,
78
+ "why": "the vendored JetBrains Mono faces, reached from styles/tokens.css by ../fonts/. They stay a directory rather than being bundled: Bun inlines a woff2 under its size threshold as base64, which would put about 85 KB into a render-blocking stylesheet."
79
+ }
80
+ ],
81
+ "shell": "index.html"
82
+ }