@jxsuite/studio 5.1.0 → 5.2.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 (103) hide show
  1. package/dist/chunks/{cf-account-picker-qwkm9zrf.js → cf-account-picker-h4dab9bq.js} +10 -10
  2. package/dist/chunks/{cf-settings-71bv5zn9.js → cf-settings-adg74qsk.js} +4 -4
  3. package/dist/chunks/{components-vj72gqtq.js → components-5y78e05d.js} +4 -4
  4. package/dist/chunks/content-source-sgg1sv6n.js +46 -0
  5. package/dist/chunks/{convert-to-repeater-n64h8znc.js → convert-to-repeater-mf1cxgfn.js} +22 -22
  6. package/dist/chunks/entry-commands-w9qsxa6q.js +42 -0
  7. package/dist/chunks/{extension-sections-3hpcambp.js → extension-sections-c6zwzbre.js} +26 -26
  8. package/dist/chunks/{file-ops-8yhd83xr.js → file-ops-vrpq1jjk.js} +22 -22
  9. package/dist/chunks/{files-hnxqxtsg.js → files-msaf95y6.js} +31 -30
  10. package/dist/chunks/{format-host-779sfp2n.js → format-host-f64fnesp.js} +2 -2
  11. package/dist/chunks/{fs-events-b88z7g4h.js → fs-events-3y6y0nrm.js} +4 -4
  12. package/dist/chunks/{git-panel-xwj8fpab.js → git-panel-bv5e22j0.js} +23 -22
  13. package/dist/chunks/grid-view-1p6hsyjx.css +8406 -0
  14. package/dist/chunks/grid-view-paj67nr5.js +15322 -0
  15. package/dist/chunks/{iframe-host-syr0f9sb.js → iframe-host-dh5np8vk.js} +13 -13
  16. package/dist/chunks/{layers-ff81wthn.js → layers-1vcfdbet.js} +5 -5
  17. package/dist/chunks/layers-panel-fksbdg4q.js +40 -0
  18. package/dist/chunks/{media-picker-cqhhxhhe.js → media-picker-p49nhqhs.js} +13 -13
  19. package/dist/chunks/menu-qht48vnc.js +15 -0
  20. package/dist/chunks/{monaco-buffer-bhy3hb6m.js → monaco-buffer-pykwbm92.js} +3 -3
  21. package/dist/chunks/{notify-628t0anh.js → notify-42gk8ha1.js} +2 -2
  22. package/dist/chunks/{parse-0zx14y15.js → parse-reg9eevt.js} +2 -2
  23. package/dist/chunks/publish-panel-vz23wwmg.js +27 -0
  24. package/dist/chunks/quick-search-e9rp74m8.js +46 -0
  25. package/dist/chunks/{references-qvvxej7h.js → references-h69xp9zz.js} +2 -2
  26. package/dist/chunks/right-panel-j97t2yvy.js +45 -0
  27. package/dist/chunks/{studio-b0k5tqgp.js → studio-01jeck2y.js} +31 -27
  28. package/dist/chunks/{studio-wqz6dggm.js → studio-14d9tq4d.js} +9 -9
  29. package/dist/chunks/{studio-try13h8c.js → studio-15f3kxqe.js} +18 -18
  30. package/dist/chunks/studio-1tbjfqv4.js +146 -0
  31. package/dist/chunks/{studio-vw7mzp6z.js → studio-28vs5k2y.js} +2 -2
  32. package/dist/chunks/{studio-93zafjcm.js → studio-2mdbbc76.js} +10 -10
  33. package/dist/chunks/{studio-7r42c6ca.js → studio-3ntvq6cg.js} +5 -5
  34. package/dist/chunks/{studio-g3jevyjt.js → studio-4c041r8y.js} +2 -2
  35. package/dist/chunks/{studio-3773086z.js → studio-4r14yzyy.js} +4 -4
  36. package/dist/chunks/{studio-3rz5md06.js → studio-4xmjcrg3.js} +6 -6
  37. package/dist/chunks/{studio-syg2tadj.js → studio-5nz00bhh.js} +3 -3
  38. package/dist/chunks/{studio-1knfqgy7.js → studio-5t7ena5z.js} +8 -8
  39. package/dist/chunks/{studio-a79k90n9.js → studio-66arbpc2.js} +8 -8
  40. package/dist/chunks/{studio-b4s9eykd.js → studio-68fydsrj.js} +15 -15
  41. package/dist/chunks/{studio-mhhyamxf.js → studio-9j6sfeba.js} +6 -6
  42. package/dist/chunks/{studio-7xnmgv66.js → studio-a1pswps3.js} +37 -37
  43. package/dist/chunks/{studio-6xa21ej9.js → studio-c04nzbby.js} +2 -2
  44. package/dist/chunks/{studio-nzzpvzx9.js → studio-c07s5ckd.js} +4 -4
  45. package/dist/chunks/{studio-js8nv53n.js → studio-ctm7bhx5.js} +14 -14
  46. package/dist/chunks/{studio-p1dw8wfw.js → studio-d8z5bajd.js} +14 -10
  47. package/dist/chunks/{studio-jxp12rnj.js → studio-en82c639.js} +6 -6
  48. package/dist/chunks/{studio-1z1kcjv4.js → studio-etvx9s2g.js} +11 -11
  49. package/dist/chunks/{studio-k75n7vhp.js → studio-ez11dmdh.js} +74 -36
  50. package/dist/chunks/{studio-qhhm6hbt.js → studio-hdc2jt3z.js} +4 -4
  51. package/dist/chunks/{studio-r6nvacqs.js → studio-hhskq2mr.js} +19 -19
  52. package/dist/chunks/{studio-6ewqv390.js → studio-m1p9b6c3.js} +5 -5
  53. package/dist/chunks/{studio-qk90fgqm.js → studio-mpzwze9x.js} +7 -7
  54. package/dist/chunks/{studio-e1pgga3k.js → studio-ncn9e189.js} +7 -7
  55. package/dist/chunks/{studio-kkqkcp3d.js → studio-p6pmwkvh.js} +10 -10
  56. package/dist/chunks/{studio-aj37eer3.js → studio-qa7fzxan.js} +4 -4
  57. package/dist/chunks/{studio-sbjyc8bt.js → studio-sar8g54p.js} +8 -8
  58. package/dist/chunks/studio-t171hxhe.js +23 -0
  59. package/dist/chunks/{studio-pxbgypmg.js → studio-t3adrr56.js} +17 -14
  60. package/dist/chunks/{studio-hhvs4sdg.js → studio-vn5hske5.js} +10 -4
  61. package/dist/chunks/{studio-5wt9nvhd.js → studio-vt0tj32j.js} +29 -42
  62. package/dist/chunks/{studio-qk4bfsq2.js → studio-wjpgxywa.js} +4 -4
  63. package/dist/chunks/{studio-q3x06vmj.js → studio-wnsyffg1.js} +2 -2
  64. package/dist/chunks/{studio-gb13095a.js → studio-x10fp4tp.js} +59 -20
  65. package/dist/chunks/{studio-8scdew0e.js → studio-x72j58vw.js} +4 -4
  66. package/dist/chunks/{studio-tqgryxwg.js → studio-y4f9fdge.js} +7 -7
  67. package/dist/chunks/{studio-vfq8qpjt.js → studio-ympe0n7a.js} +3 -3
  68. package/dist/chunks/{studio-y9zedyjn.js → studio-z2smx5ce.js} +2 -2
  69. package/dist/chunks/{studio-zdn2g6dt.js → studio-zjjde71a.js} +2 -2
  70. package/dist/chunks/{workspace-t55jdjbx.js → workspace-bnw54cha.js} +18 -10
  71. package/dist/iframe-entry.js +7 -3
  72. package/dist/studio.css +1 -2
  73. package/dist/studio.js +866 -15698
  74. package/package.json +6 -6
  75. package/src/files/files.ts +38 -15
  76. package/src/grid/grid-lazy.ts +59 -0
  77. package/src/grid/grid-open.ts +20 -3
  78. package/src/grid/grid-panel.ts +43 -9
  79. package/src/media/media-open.ts +14 -2
  80. package/src/panels/pane-context.ts +5 -4
  81. package/src/panels/pane-grid.ts +100 -10
  82. package/src/panels/tab-drop.ts +220 -0
  83. package/src/panels/tab-strip.ts +235 -30
  84. package/src/services/ai-models.ts +13 -0
  85. package/src/studio.ts +10 -6
  86. package/src/surfaces/commandbar.json +26 -16
  87. package/src/surfaces/pane-grid.json +35 -3
  88. package/src/surfaces/pane-grid.ts +26 -4
  89. package/src/surfaces/tab-strip.json +16 -39
  90. package/src/surfaces/tab-strip.ts +76 -12
  91. package/src/ui/ai-credentials-form.ts +12 -1
  92. package/src/workspace/pane-derive.ts +7 -5
  93. package/src/workspace/session.ts +3 -3
  94. package/src/workspace/workspace.ts +160 -43
  95. package/styles/shell-frame.css +8 -0
  96. package/styles/shell-frame.json +4 -0
  97. package/dist/chunks/content-source-5mex4x1h.js +0 -46
  98. package/dist/chunks/entry-commands-234hjnqw.js +0 -42
  99. package/dist/chunks/layers-panel-pnnghw12.js +0 -40
  100. package/dist/chunks/menu-9p2w46gj.js +0 -15
  101. package/dist/chunks/publish-panel-5zt840sy.js +0 -27
  102. package/dist/chunks/quick-search-3748564r.js +0 -45
  103. package/dist/chunks/right-panel-eccz92qt.js +0 -45
@@ -4,16 +4,16 @@ import {
4
4
  formatForPath2,
5
5
  defaultContentFormat2,
6
6
  formatSerialize2
7
- } from "./studio-vw7mzp6z.js";
7
+ } from "./studio-28vs5k2y.js";
8
8
  import {
9
9
  effectScope,
10
10
  effect,
11
11
  reactive,
12
12
  notify2
13
- } from "./studio-p1dw8wfw.js";
13
+ } from "./studio-d8z5bajd.js";
14
14
  import {
15
15
  projectState
16
- } from "./studio-6ewqv390.js";
16
+ } from "./studio-m1p9b6c3.js";
17
17
  import {
18
18
  recordDocOp,
19
19
  transactDoc,
@@ -32,24 +32,24 @@ import {
32
32
  workspace2,
33
33
  activeTab2,
34
34
  activateTab2
35
- } from "./studio-k75n7vhp.js";
35
+ } from "./studio-ez11dmdh.js";
36
36
  import {
37
37
  errorMessage2
38
38
  } from "./studio-yxa81f45.js";
39
39
  import {
40
40
  activeRegistry
41
- } from "./studio-kkqkcp3d.js";
41
+ } from "./studio-p6pmwkvh.js";
42
42
  import {
43
43
  paneRegion,
44
44
  registerSurface,
45
45
  mountSurface
46
- } from "./studio-vfq8qpjt.js";
46
+ } from "./studio-ympe0n7a.js";
47
47
  import {
48
48
  registerFormControl,
49
49
  referenceTarget,
50
50
  mountSchemaForm,
51
51
  resolveContextPointer
52
- } from "./studio-js8nv53n.js";
52
+ } from "./studio-ctm7bhx5.js";
53
53
  import {
54
54
  DRAFT_FIELD,
55
55
  DRAFT_MEANING,
@@ -57,20 +57,20 @@ import {
57
57
  hasDraftAxis,
58
58
  setIncludeDrafts,
59
59
  reloadDraftAwareGrids2
60
- } from "./studio-1knfqgy7.js";
60
+ } from "./studio-5t7ena5z.js";
61
61
  import {
62
62
  serializeJson
63
- } from "./studio-qk90fgqm.js";
63
+ } from "./studio-mpzwze9x.js";
64
64
  import {
65
65
  notePreviewOverlayEdit
66
- } from "./studio-gb13095a.js";
66
+ } from "./studio-x10fp4tp.js";
67
67
  import {
68
68
  entryCollection,
69
69
  entryCollections,
70
70
  collectionOfPath,
71
71
  seedEntry,
72
72
  missingRequired
73
- } from "./studio-qhhm6hbt.js";
73
+ } from "./studio-hdc2jt3z.js";
74
74
  import {
75
75
  cloneValue2
76
76
  } from "./studio-727xh0e3.js";
@@ -1973,7 +1973,7 @@ function entryIdsFor(collection) {
1973
1973
  if (known) {
1974
1974
  return known;
1975
1975
  }
1976
- const pending = (__preload("5mex4x1h"), import("./content-source-5mex4x1h.js")).then((m) => m.listCollectionEntryIds(collection));
1976
+ const pending = (__preload("sgg1sv6n"), import("./content-source-sgg1sv6n.js")).then((m) => m.listCollectionEntryIds(collection));
1977
1977
  entryIdCache.set(collection, pending);
1978
1978
  return pending;
1979
1979
  }
@@ -2641,7 +2641,7 @@ function renderEntryMode(surface, tab) {
2641
2641
  });
2642
2642
  }
2643
2643
  async function openEntryEditor(path) {
2644
- const { openFileInTab } = await (__preload("hnxqxtsg"), import("./files-hnxqxtsg.js"));
2644
+ const { openFileInTab } = await (__preload("msaf95y6"), import("./files-msaf95y6.js"));
2645
2645
  await openFileInTab(path);
2646
2646
  for (const [id, tab] of workspace2.tabs.entries()) {
2647
2647
  if (tab.documentPath !== path) {
@@ -2703,7 +2703,7 @@ async function createEntry2(collectionName, opts = {}) {
2703
2703
  });
2704
2704
  return null;
2705
2705
  }
2706
- const { createFileIn } = await (__preload("hnxqxtsg"), import("./files-hnxqxtsg.js"));
2706
+ const { createFileIn } = await (__preload("msaf95y6"), import("./files-msaf95y6.js"));
2707
2707
  const created = await createFileIn({
2708
2708
  content,
2709
2709
  dir: destination,
@@ -2808,4 +2808,4 @@ function registerContentCommands2(registry) {
2808
2808
  export { FIELD_TYPES, FORMAT_OPTIONS, detectFieldType, detectFieldFormat, schemaForType, referenceEntryState, entryFields, entryPaneMounted, detachEntryPane, entryDraftPill, renderEntryMode, createEntry2, registerContentCommands2 };
2809
2809
 
2810
2810
  //# debugId=BCB2AC86669613BA64756E2164756E21
2811
- //# sourceMappingURL=studio-b4s9eykd.js.map
2811
+ //# sourceMappingURL=studio-68fydsrj.js.map
@@ -3,24 +3,24 @@ import {
3
3
  } from "./studio-6nzaktvy.js";
4
4
  import {
5
5
  projectState
6
- } from "./studio-6ewqv390.js";
6
+ } from "./studio-m1p9b6c3.js";
7
7
  import {
8
8
  effectScope,
9
9
  effect,
10
10
  reactive,
11
11
  shallowReactive
12
- } from "./studio-p1dw8wfw.js";
12
+ } from "./studio-d8z5bajd.js";
13
13
  import {
14
14
  updateSiteConfig,
15
15
  shell
16
- } from "./studio-qk90fgqm.js";
16
+ } from "./studio-mpzwze9x.js";
17
17
  import {
18
18
  activeRegistry
19
- } from "./studio-kkqkcp3d.js";
19
+ } from "./studio-p6pmwkvh.js";
20
20
  import {
21
21
  registerSurface,
22
22
  mountSurface
23
- } from "./studio-vfq8qpjt.js";
23
+ } from "./studio-ympe0n7a.js";
24
24
 
25
25
  // ../create/scaffold.ts
26
26
  var CF_ADAPTERS = new Set(["cloudflare-pages", "cloudflare-workers"]);
@@ -760,4 +760,4 @@ function syncDeployChecklist(host) {
760
760
  export { platformSupportsPublish, listAccounts2, latestDeployment, writeDeployConfig, connectDeploy, currentDeploy, noteDeployment, deployStatusItem, syncDeployChecklist };
761
761
 
762
762
  //# debugId=D0D91CF5DFF5DC8F64756E2164756E21
763
- //# sourceMappingURL=studio-mhhyamxf.js.map
763
+ //# sourceMappingURL=studio-9j6sfeba.js.map
@@ -3,13 +3,13 @@ import {
3
3
  } from "./studio-6nzaktvy.js";
4
4
  import {
5
5
  isJsonObject,
6
- isRef2,
6
+ isRef,
7
7
  isExpressionDef,
8
8
  isNamedFormulaDef,
9
9
  getEventBinding,
10
10
  isTagExpression,
11
11
  displayTagName
12
- } from "./studio-7r42c6ca.js";
12
+ } from "./studio-3ntvq6cg.js";
13
13
  import {
14
14
  INPUT_DEBOUNCE,
15
15
  LIVE_PREVIEW,
@@ -18,10 +18,10 @@ import {
18
18
  projectState,
19
19
  renderOnly,
20
20
  updateUi
21
- } from "./studio-6ewqv390.js";
21
+ } from "./studio-m1p9b6c3.js";
22
22
  import {
23
23
  componentRegistry2
24
- } from "./studio-zdn2g6dt.js";
24
+ } from "./studio-zjjde71a.js";
25
25
  import {
26
26
  tabOfPane,
27
27
  canvasModeOfTab,
@@ -32,7 +32,7 @@ import {
32
32
  attachInstruction,
33
33
  extractInstruction,
34
34
  requestCanvasEval2
35
- } from "./studio-1z1kcjv4.js";
35
+ } from "./studio-etvx9s2g.js";
36
36
  import {
37
37
  effectScope,
38
38
  effect,
@@ -40,7 +40,7 @@ import {
40
40
  toRaw,
41
41
  shallowRef,
42
42
  notify2
43
- } from "./studio-p1dw8wfw.js";
43
+ } from "./studio-d8z5bajd.js";
44
44
  import {
45
45
  view,
46
46
  BUFFER_COMMIT2,
@@ -49,13 +49,13 @@ import {
49
49
  cancelBufferWrites2,
50
50
  bufferIsLive2,
51
51
  bufferMovedOn2
52
- } from "./studio-q3x06vmj.js";
52
+ } from "./studio-wnsyffg1.js";
53
53
  import {
54
54
  loadMonaco,
55
55
  mountStillWanted,
56
56
  loadExtensions2,
57
57
  getExtensions2
58
- } from "./studio-vw7mzp6z.js";
58
+ } from "./studio-28vs5k2y.js";
59
59
  import {
60
60
  localeLabel,
61
61
  translationPathFor,
@@ -89,12 +89,12 @@ import {
89
89
  activeTab2,
90
90
  activePane2,
91
91
  paneById2,
92
- sidePane2,
92
+ paneBeside2,
93
93
  detachTab2,
94
94
  insertIntoPane2,
95
95
  tabIsLive2,
96
96
  promoteTab2
97
- } from "./studio-k75n7vhp.js";
97
+ } from "./studio-ez11dmdh.js";
98
98
  import {
99
99
  PURE_METHOD_OPS,
100
100
  BLESSED_OPERATORS,
@@ -104,7 +104,7 @@ import {
104
104
  popoverIdsIn,
105
105
  POPOVER_TAGS,
106
106
  activeRegistry
107
- } from "./studio-kkqkcp3d.js";
107
+ } from "./studio-p6pmwkvh.js";
108
108
  import {
109
109
  getEffectiveMedia,
110
110
  getEffectiveStyle,
@@ -113,7 +113,7 @@ import {
113
113
  shell,
114
114
  monacoTheme,
115
115
  setBottomTab
116
- } from "./studio-qk90fgqm.js";
116
+ } from "./studio-mpzwze9x.js";
117
117
  import {
118
118
  nothing2
119
119
  } from "./studio-1k325pwf.js";
@@ -125,17 +125,17 @@ import {
125
125
  mountSurface,
126
126
  showPromptDialog2,
127
127
  getLayerSlot2
128
- } from "./studio-vfq8qpjt.js";
128
+ } from "./studio-ympe0n7a.js";
129
129
  import {
130
130
  registerPanel
131
- } from "./studio-8scdew0e.js";
131
+ } from "./studio-x72j58vw.js";
132
132
  import {
133
133
  codeService,
134
134
  pluginSchemaCache,
135
135
  fetchPluginSchema,
136
136
  setLintMarkers,
137
137
  getFunctionArgs
138
- } from "./studio-3773086z.js";
138
+ } from "./studio-4r14yzyy.js";
139
139
  import {
140
140
  VALUE_SOURCE_LABELS,
141
141
  slotMode,
@@ -148,17 +148,17 @@ import {
148
148
  switchSlotMode,
149
149
  mountSchemaForm,
150
150
  resolveContextPointer
151
- } from "./studio-js8nv53n.js";
151
+ } from "./studio-ctm7bhx5.js";
152
152
  import {
153
153
  combine
154
154
  } from "./studio-esrxgwh6.js";
155
155
  import {
156
156
  openMenu2
157
- } from "./studio-aj37eer3.js";
157
+ } from "./studio-qa7fzxan.js";
158
158
  import {
159
159
  mountMediaPicker2,
160
160
  unmountMediaPicker2
161
- } from "./studio-e1pgga3k.js";
161
+ } from "./studio-ncn9e189.js";
162
162
  import {
163
163
  peekUsages2,
164
164
  loadUsages2,
@@ -624,7 +624,7 @@ function derivationCommands(deps) {
624
624
  if (refusal) {
625
625
  throw new RangeError(`command "pane.derive" argument "preset": "${preset}" requires ${refusal}`);
626
626
  }
627
- const target = sidePane2();
627
+ const target = paneBeside2(source.id);
628
628
  setPaneDerivation(target.id, derivationFor(preset, source.id, media, locale));
629
629
  const displaced = [...target.tabOrder];
630
630
  for (const tabId of displaced) {
@@ -2113,7 +2113,7 @@ function refLabel(ref) {
2113
2113
  return ref || "?";
2114
2114
  }
2115
2115
  function operandLabel(value) {
2116
- if (isRef2(value)) {
2116
+ if (isRef(value)) {
2117
2117
  return refLabel(value.$ref);
2118
2118
  }
2119
2119
  if (isExprNode(value)) {
@@ -3951,7 +3951,7 @@ function operandMode(operand) {
3951
3951
  return "literal";
3952
3952
  }
3953
3953
  function calleeParamLabels(target, state) {
3954
- const ref = isRef2(target) ? target.$ref : "";
3954
+ const ref = isRef(target) ? target.$ref : "";
3955
3955
  const entry = ref ? calleeEntry(ref, state) : undefined;
3956
3956
  return entry?.kind === "formula" ? entry.parameters.map((p) => p.name) : [];
3957
3957
  }
@@ -3995,7 +3995,7 @@ function expressionHint(node) {
3995
3995
  const expr = node;
3996
3996
  const op = expr.operator;
3997
3997
  const { target } = expr;
3998
- const targetLabel = isRef2(target) ? target.$ref.replace("#/state/", "") : isJsonObject(target) && typeof target.operator === "string" ? `(${target.operator}…)` : String(target ?? "?");
3998
+ const targetLabel = isRef(target) ? target.$ref.replace("#/state/", "") : isJsonObject(target) && typeof target.operator === "string" ? `(${target.operator}…)` : String(target ?? "?");
3999
3999
  if (ASSIGN_OPS.has(op) || ONE_ARG_OPS.has(op)) {
4000
4000
  return `${op} ${targetLabel}`;
4001
4001
  }
@@ -5920,7 +5920,7 @@ function openPageAction(label = "Open a page…") {
5920
5920
  return {
5921
5921
  label,
5922
5922
  run: () => {
5923
- (__preload("3748564r"), import("./quick-search-3748564r.js")).then((m) => {
5923
+ (__preload("e9rp74m8"), import("./quick-search-e9rp74m8.js")).then((m) => {
5924
5924
  m.openQuickSearch();
5925
5925
  });
5926
5926
  }
@@ -8083,14 +8083,14 @@ function defaultAsString(def) {
8083
8083
  return typeof dv === "object" ? JSON.stringify(dv) : String(dv);
8084
8084
  }
8085
8085
  function bindingDonor(value) {
8086
- if (isRef2(value)) {
8086
+ if (isRef(value)) {
8087
8087
  const ref = value.$ref;
8088
8088
  return ref.startsWith("#/state/") ? ref.slice(8) : ref || "nothing yet";
8089
8089
  }
8090
8090
  return typeof value === "string" ? "a template" : "a formula";
8091
8091
  }
8092
8092
  function boundSignalOf(value) {
8093
- if (isRef2(value)) {
8093
+ if (isRef(value)) {
8094
8094
  const ref = value.$ref;
8095
8095
  return ref.startsWith("#/state/") ? ref.slice(8).split("/")[0] ?? null : null;
8096
8096
  }
@@ -8141,7 +8141,7 @@ function attributeProvenance(attr, value, hasVal, onClear, mixedCount = 0) {
8141
8141
  if (mixedCount > 0) {
8142
8142
  return { donor: String(mixedCount), onClick: onClear, state: "mixed" };
8143
8143
  }
8144
- if (hasVal && (isRef2(value) || typeof value === "string" && value.includes("${"))) {
8144
+ if (hasVal && (isRef(value) || typeof value === "string" && value.includes("${"))) {
8145
8145
  return boundProvenance(value, `Bound — ${attr}`);
8146
8146
  }
8147
8147
  return hasVal ? { onClick: onClear, state: "set", title: `Clear ${attr}` } : { state: "default" };
@@ -8154,7 +8154,7 @@ function mixedAcrossSelection(doc, targets, read) {
8154
8154
  return unifyValues(values).mixed ? targets.length : 0;
8155
8155
  }
8156
8156
  function isBoundAttrValue(value) {
8157
- return isRef2(value) || typeof value === "string" && value.includes("${");
8157
+ return isRef(value) || typeof value === "string" && value.includes("${");
8158
8158
  }
8159
8159
  var pageRouteEntries = null;
8160
8160
  var pageRoutesLoading = false;
@@ -8474,10 +8474,10 @@ function openSourceMenu(key, anchor) {
8474
8474
  });
8475
8475
  }
8476
8476
  function openUsage(path) {
8477
- (__preload("hnxqxtsg"), import("./files-hnxqxtsg.js")).then((m) => m.openFileInTab(path));
8477
+ (__preload("msaf95y6"), import("./files-msaf95y6.js")).then((m) => m.openFileInTab(path));
8478
8478
  }
8479
8479
  function showLogicTab() {
8480
- (__preload("eccz92qt"), import("./right-panel-eccz92qt.js")).then((m) => m.setInspectorTab("events"));
8480
+ (__preload("j97t2yvy"), import("./right-panel-j97t2yvy.js")).then((m) => m.setInspectorTab("events"));
8481
8481
  }
8482
8482
  function withPlan(row, plan) {
8483
8483
  plans.set(row.key, plan);
@@ -8522,7 +8522,7 @@ function applyLadder(row, plan, opts) {
8522
8522
  };
8523
8523
  if (mode === "ref") {
8524
8524
  row.kind = "select";
8525
- row.value = isRef2(opts.value) ? opts.value.$ref : "";
8525
+ row.value = isRef(opts.value) ? opts.value.$ref : "";
8526
8526
  row.options = [
8527
8527
  { label: "— select signal —", value: "" },
8528
8528
  ...sources.map((s) => ({ label: s.label, value: s.value }))
@@ -8823,7 +8823,7 @@ function componentPropRows(node, path, mapSignals, definitionOfThis) {
8823
8823
  const rows = [];
8824
8824
  for (const prop of comp.props) {
8825
8825
  const rawValue = currentVals[prop.name];
8826
- const boundRef = isRef2(rawValue) ? rawValue.$ref : null;
8826
+ const boundRef = isRef(rawValue) ? rawValue.$ref : null;
8827
8827
  const hasVal = rawValue !== undefined && rawValue !== null;
8828
8828
  const parsed = parseCemType(prop.type);
8829
8829
  const onChange = (v) => updateFn(prop.name, v);
@@ -8972,11 +8972,11 @@ function attributeRow(attr, entry, value, ctx) {
8972
8972
  plan.commitChecked = (checked) => commitAttr(checked ? "" : undefined);
8973
8973
  } else if (type === "media") {
8974
8974
  row.kind = "control";
8975
- const staticVal = isRef2(value) ? "" : String(value || "");
8975
+ const staticVal = isRef(value) ? "" : String(value || "");
8976
8976
  plan.control = (host) => mountMediaPicker2(host, attr, staticVal, (v) => commitAttr(v || undefined));
8977
8977
  } else if (type === "select") {
8978
8978
  row.kind = "select";
8979
- row.value = isRef2(value) ? "" : String(value || "");
8979
+ row.value = isRef(value) ? "" : String(value || "");
8980
8980
  row.options = [
8981
8981
  CLEAR_OPTION,
8982
8982
  ...(Array.isArray(entry.enum) ? entry.enum : []).map((o) => ({
@@ -8988,7 +8988,7 @@ function attributeRow(attr, entry, value, ctx) {
8988
8988
  plan.debounceMs = 0;
8989
8989
  } else {
8990
8990
  row.kind = "text";
8991
- row.value = getFieldValue(attrDraft, isRef2(value) ? "" : String(value || ""));
8991
+ row.value = getFieldValue(attrDraft, isRef(value) ? "" : String(value || ""));
8992
8992
  plan.commit = (raw) => commitAttr(raw || undefined);
8993
8993
  plan.draft = attrDraft;
8994
8994
  }
@@ -13609,7 +13609,7 @@ function registerSignalsCommands(registry) {
13609
13609
  registry.registerAll(signalsCommands());
13610
13610
  }
13611
13611
 
13612
- export { DERIVE_PRESETS, PRESET_LABELS, declaredMedia, installDerivationEffects, presetRefusal, deriveRefusal, pinRefusal, derivationCommands, mountExpressionEditor, unwrapSignal, dataTypeLabel, registerDataExplorerCommands, registerDataPanel, livePreviewExpression, closeFunctionEditor, logicTarget, revealLogicPanel, openLogicTarget, registerLogicPanel, registerFormulaEditorCommands, provenanceText, provenanceTitle, countProvenance, provenanceSummaryText, clickAnythingTo, staleSelectionMessage, openPageAction, tokenRefName, toTokenRef, resolveTokenValue, colorTokens, resolvedColor, mountStatementEditor, mapSignalsFor, bindableSignalNames, defaultAsString, invalidatePageRouteCache, isInspectorSectionOpen, setInspectorSection, renderPropertiesPanel, bindContentHost, inspectorCommands, registerInspectorCommands, defCategory, defBadgeLabel, isCustomElementDoc, collectCssParts, mountSignalsPanel, registerSignalsCommands };
13612
+ export { DERIVE_PRESETS, PRESET_LABELS, declaredMedia, clearPaneDerivation, installDerivationEffects, presetRefusal, deriveRefusal, pinRefusal, derivationCommands, mountExpressionEditor, unwrapSignal, dataTypeLabel, registerDataExplorerCommands, registerDataPanel, livePreviewExpression, closeFunctionEditor, logicTarget, revealLogicPanel, openLogicTarget, registerLogicPanel, registerFormulaEditorCommands, provenanceText, provenanceTitle, countProvenance, provenanceSummaryText, clickAnythingTo, staleSelectionMessage, openPageAction, tokenRefName, toTokenRef, resolveTokenValue, colorTokens, resolvedColor, mountStatementEditor, mapSignalsFor, bindableSignalNames, defaultAsString, invalidatePageRouteCache, isInspectorSectionOpen, setInspectorSection, renderPropertiesPanel, bindContentHost, inspectorCommands, registerInspectorCommands, defCategory, defBadgeLabel, isCustomElementDoc, collectCssParts, mountSignalsPanel, registerSignalsCommands };
13613
13613
 
13614
- //# debugId=6CC237BFF2E61E1D64756E2164756E21
13615
- //# sourceMappingURL=studio-7xnmgv66.js.map
13614
+ //# debugId=7546BEAB36DCC91464756E2164756E21
13615
+ //# sourceMappingURL=studio-a1pswps3.js.map
@@ -3,7 +3,7 @@ import {
3
3
  readStoredSetting,
4
4
  setSetting,
5
5
  clearSettings
6
- } from "./studio-y9zedyjn.js";
6
+ } from "./studio-z2smx5ce.js";
7
7
 
8
8
  // src/services/cf-settings.ts
9
9
  function getCfToken2() {
@@ -25,4 +25,4 @@ function clearCfConnection2() {
25
25
  export { getCfToken2, setCfToken2, getCfAccountId2, setCfAccountId2, clearCfConnection2 };
26
26
 
27
27
  //# debugId=C98948D2A82DEEE164756E2164756E21
28
- //# sourceMappingURL=studio-6xa21ej9.js.map
28
+ //# sourceMappingURL=studio-c04nzbby.js.map
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  resolveI18n,
7
7
  activeTab2
8
- } from "./studio-k75n7vhp.js";
8
+ } from "./studio-ez11dmdh.js";
9
9
  import {
10
10
  assetUrlFor,
11
11
  BUILD_LANES,
@@ -15,10 +15,10 @@ import {
15
15
  joinProjectPath,
16
16
  projectPathForRef,
17
17
  encodeProjectPath
18
- } from "./studio-kkqkcp3d.js";
18
+ } from "./studio-p6pmwkvh.js";
19
19
  import {
20
20
  projectState
21
- } from "./studio-6ewqv390.js";
21
+ } from "./studio-m1p9b6c3.js";
22
22
 
23
23
  // src/canvas/canvas-origin.ts
24
24
  function canvasBaseOrigin() {
@@ -182,4 +182,4 @@ function hostAssetDeclarations() {
182
182
  export { contentMountFor, resolveAssetRef, canvasBaseOrigin, documentBase, loopbackAssetSrc, projectLocales2, assetContextFor, previewAssetSrc, hostAssetDeclarations };
183
183
 
184
184
  //# debugId=AC177B7F9545734164756E2164756E21
185
- //# sourceMappingURL=studio-nzzpvzx9.js.map
185
+ //# sourceMappingURL=studio-c07s5ckd.js.map
@@ -1,25 +1,25 @@
1
1
  import {
2
2
  intlHelpersClause
3
- } from "./studio-kkqkcp3d.js";
3
+ } from "./studio-p6pmwkvh.js";
4
4
  import {
5
5
  LANGUAGE_TAG_PATTERN,
6
6
  activeTab2
7
- } from "./studio-k75n7vhp.js";
7
+ } from "./studio-ez11dmdh.js";
8
8
  import {
9
- isRef2,
9
+ isRef,
10
10
  isFunctionDef,
11
11
  isTemplateString
12
- } from "./studio-7r42c6ca.js";
12
+ } from "./studio-3ntvq6cg.js";
13
13
  import {
14
14
  reactive
15
- } from "./studio-p1dw8wfw.js";
15
+ } from "./studio-d8z5bajd.js";
16
16
  import {
17
17
  registerSurface,
18
18
  mountSurface
19
- } from "./studio-vfq8qpjt.js";
19
+ } from "./studio-ympe0n7a.js";
20
20
  import {
21
21
  openMenu2
22
- } from "./studio-aj37eer3.js";
22
+ } from "./studio-qa7fzxan.js";
23
23
  import {
24
24
  cloneValue2
25
25
  } from "./studio-727xh0e3.js";
@@ -1520,7 +1520,7 @@ var VALUE_SOURCE_HINTS = {
1520
1520
  template: "Text with ${…} placeholders that fill in from signals."
1521
1521
  };
1522
1522
  function slotMode(value) {
1523
- if (isRef2(value)) {
1523
+ if (isRef(value)) {
1524
1524
  return "ref";
1525
1525
  }
1526
1526
  if (isFunctionDef(value)) {
@@ -2866,7 +2866,7 @@ function asText(value) {
2866
2866
  return typeof value === "object" ? JSON.stringify(value, null, 2) : String(value);
2867
2867
  }
2868
2868
  function validateFieldValue(schema, value, isRequired) {
2869
- if (isRef2(value)) {
2869
+ if (isRef(value)) {
2870
2870
  return "";
2871
2871
  }
2872
2872
  const empty = value === undefined || value === null || value === "";
@@ -3285,7 +3285,7 @@ function deriveField(prop, ps, args) {
3285
3285
  plan.commit = "ref";
3286
3286
  plan.debounceMs = 0;
3287
3287
  row.kind = "pointer";
3288
- row.value = isRef2(current) ? current.$ref : "";
3288
+ row.value = isRef(current) ? current.$ref : "";
3289
3289
  row.options = sources.map((s) => ({ label: s.label, value: s.value }));
3290
3290
  row.hasOptions = row.options.length > 0;
3291
3291
  return row;
@@ -3304,7 +3304,7 @@ function deriveField(prop, ps, args) {
3304
3304
  row.kind = "control";
3305
3305
  return row;
3306
3306
  }
3307
- if (isRef2(current) && isBindableField(ps)) {
3307
+ if (isRef(current) && isBindableField(ps)) {
3308
3308
  plan.commit = "ref";
3309
3309
  plan.debounceMs = 0;
3310
3310
  row.kind = "text";
@@ -3418,7 +3418,7 @@ function deriveCell(prop, rowKey, cellKey, cellSchema, held, args, plan) {
3418
3418
  row: rowKey,
3419
3419
  value: ""
3420
3420
  };
3421
- if (isRef2(held)) {
3421
+ if (isRef(held)) {
3422
3422
  cell.value = held.$ref;
3423
3423
  plan.refCells?.add(id);
3424
3424
  return cell;
@@ -3501,5 +3501,5 @@ function resolveContextPointer(pointer, opts) {
3501
3501
 
3502
3502
  export { REDIRECT_STATUSES, VALUE_SOURCE_LABELS, VALUE_SOURCE_HINTS, slotMode, TAG_EXPRESSION_OPERATORS, capsForPosition, slotCaps, stashSlotValue, hasStashedSlotValue, effectiveSlotMode, slotModeSeed, switchSlotMode, registerFormControl, referenceTarget, mountSchemaForm, resolveContextPointer };
3503
3503
 
3504
- //# debugId=427B709FE510BC3D64756E2164756E21
3505
- //# sourceMappingURL=studio-js8nv53n.js.map
3504
+ //# debugId=028D7979B65A1DC964756E2164756E21
3505
+ //# sourceMappingURL=studio-ctm7bhx5.js.map
@@ -700,7 +700,11 @@ function reactiveReadArray(array) {
700
700
  if (raw === array)
701
701
  return raw;
702
702
  track(raw, "iterate", ARRAY_ITERATE_KEY);
703
- return isShallow(array) ? raw : raw.map(toReactive);
703
+ if (isShallow(array))
704
+ return raw;
705
+ if (!isReadonly(array))
706
+ return raw.map(toReactive);
707
+ return isReactive(array) ? raw.map((item) => toReadonly(toReactive(item))) : raw.map(toReadonly);
704
708
  }
705
709
  function shallowReadArray(arr) {
706
710
  track(arr = toRaw(arr), "iterate", ARRAY_ITERATE_KEY);
@@ -921,7 +925,7 @@ class BaseReactiveHandler {
921
925
  return hasOwnProperty2;
922
926
  }
923
927
  }
924
- const res = Reflect.get(target, key, isRef(target) ? target : receiver);
928
+ const res = Reflect.get(target, key, isRef2(target) ? target : receiver);
925
929
  if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {
926
930
  return res;
927
931
  }
@@ -931,7 +935,7 @@ class BaseReactiveHandler {
931
935
  if (isShallow2) {
932
936
  return res;
933
937
  }
934
- if (isRef(res)) {
938
+ if (isRef2(res)) {
935
939
  const value = targetIsArray && isIntegerKey(key) ? res : res.value;
936
940
  return isReadonly2 && isObject(value) ? readonly(value) : value;
937
941
  }
@@ -955,7 +959,7 @@ class MutableReactiveHandler extends BaseReactiveHandler {
955
959
  oldValue = toRaw(oldValue);
956
960
  value = toRaw(value);
957
961
  }
958
- if (!isArrayWithIntegerKey && isRef(oldValue) && !isRef(value)) {
962
+ if (!isArrayWithIntegerKey && isRef2(oldValue) && !isRef2(value)) {
959
963
  if (isOldValueReadonly) {
960
964
  if (true) {
961
965
  warn(`Set operation on key "${String(key)}" failed: target is readonly.`, target[key]);
@@ -968,7 +972,7 @@ class MutableReactiveHandler extends BaseReactiveHandler {
968
972
  }
969
973
  }
970
974
  const hadKey = isArrayWithIntegerKey ? Number(key) < target.length : hasOwn(target, key);
971
- const result = Reflect.set(target, key, value, isRef(target) ? target : receiver);
975
+ const result = Reflect.set(target, key, value, isRef2(target) ? target : receiver);
972
976
  if (target === toRaw(receiver) && result) {
973
977
  if (!hadKey) {
974
978
  trigger(target, "add", key, value);
@@ -1286,7 +1290,7 @@ function toRaw(observed) {
1286
1290
  }
1287
1291
  var toReactive = (value) => isObject(value) ? /* @__PURE__ */ reactive(value) : value;
1288
1292
  var toReadonly = (value) => isObject(value) ? /* @__PURE__ */ readonly(value) : value;
1289
- function isRef(r) {
1293
+ function isRef2(r) {
1290
1294
  return r ? r["__v_isRef"] === true : false;
1291
1295
  }
1292
1296
  function ref(value) {
@@ -1296,7 +1300,7 @@ function shallowRef(value) {
1296
1300
  return createRef(value, true);
1297
1301
  }
1298
1302
  function createRef(rawValue, shallow) {
1299
- if (/* @__PURE__ */ isRef(rawValue)) {
1303
+ if (/* @__PURE__ */ isRef2(rawValue)) {
1300
1304
  return rawValue;
1301
1305
  }
1302
1306
  return new RefImpl(rawValue, shallow);
@@ -1559,7 +1563,7 @@ function problemFindings2(source) {
1559
1563
  function problemCount2(severity) {
1560
1564
  return severity === undefined ? problems2.length : problems2.filter((record) => record.severity === severity).length;
1561
1565
  }
1562
- export { effectScope, onScopeDispose, effect, pauseTracking, resetTracking, onEffectCleanup, reactive, shallowReactive, isReactive, toRaw, isRef, ref, shallowRef, computed, announce, now, pinClock, toasts2, problems2, notify2, dismiss2, clearProblems2, problemFindings2, problemCount2 };
1566
+ export { effectScope, onScopeDispose, effect, pauseTracking, resetTracking, onEffectCleanup, reactive, shallowReactive, isReactive, toRaw, isRef2, ref, shallowRef, computed, announce, now, pinClock, toasts2, problems2, notify2, dismiss2, clearProblems2, problemFindings2, problemCount2 };
1563
1567
 
1564
- //# debugId=38C812A39B55E29E64756E2164756E21
1565
- //# sourceMappingURL=studio-p1dw8wfw.js.map
1568
+ //# debugId=F249290D0F37435164756E2164756E21
1569
+ //# sourceMappingURL=studio-d8z5bajd.js.map
@@ -7,24 +7,24 @@ import {
7
7
  } from "./studio-6nzaktvy.js";
8
8
  import {
9
9
  notify2
10
- } from "./studio-p1dw8wfw.js";
10
+ } from "./studio-d8z5bajd.js";
11
11
  import {
12
12
  projectState
13
- } from "./studio-6ewqv390.js";
13
+ } from "./studio-m1p9b6c3.js";
14
14
  import {
15
15
  activeTab2
16
- } from "./studio-k75n7vhp.js";
16
+ } from "./studio-ez11dmdh.js";
17
17
  import {
18
18
  PUBLIC_DIR,
19
19
  normalizeProjectPath,
20
20
  encodeProjectPath
21
- } from "./studio-kkqkcp3d.js";
21
+ } from "./studio-p6pmwkvh.js";
22
22
  import {
23
23
  contentMountFor,
24
24
  loopbackAssetSrc,
25
25
  projectLocales2,
26
26
  hostAssetDeclarations
27
- } from "./studio-nzzpvzx9.js";
27
+ } from "./studio-c07s5ckd.js";
28
28
 
29
29
  // src/files/media-upload.ts
30
30
  var IMAGE_EXTENSIONS = new Set([
@@ -237,4 +237,4 @@ function previewFileSrc(path) {
237
237
  export { IMAGE_EXTENSIONS, MEDIA_EXTENSIONS, uploadAccept, extensionOf, isImage, isMediaFile, mediaKind, setMediaChangedHandler, uploadAssets, baseName, dirName, mediaSiteUrl, previewFileSrc };
238
238
 
239
239
  //# debugId=4C51950010FE40AA64756E2164756E21
240
- //# sourceMappingURL=studio-jxp12rnj.js.map
240
+ //# sourceMappingURL=studio-en82c639.js.map