@jxsuite/studio 3.0.0 → 4.1.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 (197) hide show
  1. package/README.md +5 -5
  2. package/dist/chunks/{2020-xp8vnwma.js → 2020-n6tfwnda.js} +2 -2
  3. package/dist/chunks/Overlay.dev-etqjwyf9.js +23 -0
  4. package/dist/chunks/cf-account-picker-en86v7x7.js +163 -0
  5. package/dist/chunks/{cf-settings-zj2cj1ar.js → cf-settings-45fgyx8y.js} +6 -5
  6. package/dist/chunks/{components-z6cnkyy1.js → components-zmx10t62.js} +6 -5
  7. package/dist/chunks/content-source-48xg86wj.js +49 -0
  8. package/dist/chunks/{convert-to-repeater-6vvx96n2.js → convert-to-repeater-43tfn7cs.js} +33 -25
  9. package/dist/chunks/entry-commands-e63f1xc0.js +46 -0
  10. package/dist/chunks/{extension-sections-kwzvpemr.js → extension-sections-txv08xxg.js} +34 -26
  11. package/dist/chunks/file-ops-wbh4hhsx.js +48 -0
  12. package/dist/chunks/files-3kfkwhk4.js +93 -0
  13. package/dist/chunks/{focus-trap.esm-ggawf1hy.js → focus-trap.esm-9t2drp0g.js} +6 -5
  14. package/dist/chunks/{format-host-8fr3545e.js → format-host-w16q81tf.js} +3 -3
  15. package/dist/chunks/fs-events-hrrg328g.js +21 -0
  16. package/dist/chunks/{git-panel-g01d93vc.js → git-panel-532whr1y.js} +22 -16
  17. package/dist/chunks/{index-nj44jpzj.js → index-wcnt3r9g.js} +2 -2
  18. package/dist/chunks/{jx-validate-jj9rnt4n.js → jx-validate-8er6gbxy.js} +6 -4
  19. package/dist/chunks/layers-panel-07hm7g5j.js +67 -0
  20. package/dist/chunks/layers-q75tj2mf.js +45 -0
  21. package/dist/chunks/lit-html-j055mkh8.js +22 -0
  22. package/dist/chunks/monaco-buffer-dqw0xxpx.js +25 -0
  23. package/dist/chunks/{monaco-setup-a5wkmbgh.js → monaco-setup-vx9bhp1d.js} +4 -4
  24. package/dist/chunks/notify-yjm79n4s.js +30 -0
  25. package/dist/chunks/parse-24d0gay3.js +19 -0
  26. package/dist/chunks/platform-ba1j1gbh.js +16 -0
  27. package/dist/chunks/publish-panel-v9st96ja.js +29 -0
  28. package/dist/chunks/quick-search-zccjp6gv.js +66 -0
  29. package/dist/chunks/references-3qx8fkyp.js +29 -0
  30. package/dist/chunks/right-panel-vm3b6kwy.js +46 -0
  31. package/dist/chunks/sp-overlay.dev-qgvhnxf4.js +18 -0
  32. package/dist/chunks/sp-popover.dev-n2etmqdp.js +9 -0
  33. package/dist/chunks/sp-progress-circle.dev-hryhj0es.js +15 -0
  34. package/dist/chunks/sp-tooltip.dev-4sastdnw.js +15 -0
  35. package/dist/chunks/{sp-tray.dev-64v4pxw8.js → sp-tray.dev-tkbscm06.js} +5 -5
  36. package/dist/chunks/{studio-wdt9y92a.js → studio-0bq6eh7v.js} +2 -2
  37. package/dist/chunks/studio-1ngbejft.js +181 -0
  38. package/dist/chunks/studio-1wagb550.js +118 -0
  39. package/dist/chunks/{studio-j595e748.js → studio-2b946z26.js} +172 -95
  40. package/dist/chunks/{studio-pkp61mh8.js → studio-3bqpr0zh.js} +25 -17
  41. package/dist/chunks/{studio-k4jvjcfx.js → studio-4b5z1x43.js} +46 -12
  42. package/dist/chunks/{studio-ry1vz5sv.js → studio-4n2b5gzb.js} +15 -13
  43. package/dist/chunks/{studio-p5dja96s.js → studio-4r1pv6zf.js} +2 -2
  44. package/dist/chunks/{studio-kvfx9z2c.js → studio-4rzyrtjz.js} +70 -31
  45. package/dist/chunks/{studio-tzx3xmvx.js → studio-5fx3g9jg.js} +33 -52
  46. package/dist/chunks/{studio-rh1cnamv.js → studio-5myknm0a.js} +565 -135
  47. package/dist/chunks/studio-6yw4y3my.js +91 -0
  48. package/dist/chunks/{studio-0rqqhrdy.js → studio-7nte2hj4.js} +2 -2
  49. package/dist/chunks/studio-92ab2jqe.js +282 -0
  50. package/dist/chunks/{studio-6z5eyjwn.js → studio-950k0dx6.js} +72 -135
  51. package/dist/chunks/{studio-sas7mt3k.js → studio-9ab8gqsm.js} +2 -2
  52. package/dist/chunks/studio-9n4mrmnb.js +184 -0
  53. package/dist/chunks/{studio-hcxzyk3x.js → studio-ahn3pdgx.js} +6 -6
  54. package/dist/chunks/studio-b55y6ewx.js +498 -0
  55. package/dist/chunks/{studio-s519zc99.js → studio-bgxt93ga.js} +3 -3
  56. package/dist/chunks/studio-cft9r4r7.js +119 -0
  57. package/dist/chunks/{studio-dc8s8heb.js → studio-cmb03bg5.js} +6904 -8321
  58. package/dist/chunks/studio-dm19q43r.js +195 -0
  59. package/dist/chunks/{studio-2x9zbxmx.js → studio-ef49pnzx.js} +11 -9
  60. package/dist/chunks/{studio-ay8wcr2b.js → studio-eqq1w638.js} +7 -9
  61. package/dist/chunks/{studio-5efrtn1m.js → studio-ew0djmhg.js} +23 -19
  62. package/dist/chunks/{studio-tr20m8g8.js → studio-f3wqjtk5.js} +39 -3
  63. package/dist/chunks/{studio-xntfdy1x.js → studio-fbf92ckf.js} +36 -23
  64. package/dist/chunks/{studio-4q0wznzf.js → studio-gcye7qka.js} +442 -126
  65. package/dist/chunks/{studio-7p35254k.js → studio-gfgb8pe6.js} +36 -193
  66. package/dist/chunks/studio-jc994dnr.js +1066 -0
  67. package/dist/chunks/{studio-hj2se583.js → studio-jkftxyvz.js} +69 -3423
  68. package/dist/chunks/{studio-5x5774ak.js → studio-kryvsw6j.js} +3 -3
  69. package/dist/chunks/{studio-kfpek536.js → studio-kyh9avvv.js} +2 -2
  70. package/dist/chunks/{studio-twsafr1e.js → studio-m3hwn7y1.js} +3 -3
  71. package/dist/chunks/studio-msd847zn.js +1315 -0
  72. package/dist/chunks/{studio-g5gdqnyd.js → studio-mtfnaqs9.js} +19 -19
  73. package/dist/chunks/{studio-7ejemhej.js → studio-n6j9t10q.js} +6 -6
  74. package/dist/chunks/{studio-vhk5fmfv.js → studio-n8b9wqwy.js} +5 -5
  75. package/dist/chunks/{studio-cjm7fdjf.js → studio-p4ngc046.js} +8 -104
  76. package/dist/chunks/studio-q43a5y9h.js +394 -0
  77. package/dist/chunks/studio-q7v10cg2.js +106 -0
  78. package/dist/chunks/{studio-6kv3apa9.js → studio-q9jd1a60.js} +27 -11
  79. package/dist/chunks/studio-qcy05dp8.js +1743 -0
  80. package/dist/chunks/{studio-a0yp7syn.js → studio-qjy2z9bv.js} +29 -132
  81. package/dist/chunks/{studio-2w11grav.js → studio-qq6jym04.js} +3 -3
  82. package/dist/chunks/{studio-3fk1ac9z.js → studio-rdx8jcxy.js} +4 -4
  83. package/dist/chunks/{studio-4mqb9a0j.js → studio-rn9ta2mz.js} +4 -4
  84. package/dist/chunks/studio-t7qb9db8.js +665 -0
  85. package/dist/chunks/studio-tmc5emrw.js +8 -0
  86. package/dist/chunks/{studio-r5xbtctf.js → studio-trxrabqf.js} +292 -2297
  87. package/dist/chunks/studio-wcy8trfx.js +263 -0
  88. package/dist/chunks/{studio-3dkcd4c5.js → studio-x4qkdat5.js} +62 -57
  89. package/dist/chunks/studio-x813zp48.js +195 -0
  90. package/dist/chunks/{studio-qpfq7xhm.js → studio-xrapxwwc.js} +22 -285
  91. package/dist/chunks/{studio-xm3dbxvn.js → studio-zczps70q.js} +2 -2
  92. package/dist/chunks/{studio-8ezdegcx.js → studio-zqazsct2.js} +40 -36
  93. package/dist/chunks/workspace-fjx52ryv.js +89 -0
  94. package/dist/iframe-entry.js +141 -56
  95. package/dist/manifest.json +7 -0
  96. package/dist/studio.js +2605 -1950
  97. package/favicon.ico +0 -0
  98. package/index.html +1 -0
  99. package/package.json +20 -18
  100. package/src/about/about-modal.ts +4 -3
  101. package/src/browse/library-pane.ts +57 -3
  102. package/src/canvas/canvas-render.ts +23 -1
  103. package/src/canvas/iframe-patch.ts +47 -21
  104. package/src/canvas/iframe-render.ts +22 -6
  105. package/src/commands/app-commands.ts +4 -0
  106. package/src/commands/command-args.ts +29 -0
  107. package/src/commands/context.ts +15 -1
  108. package/src/commands/defaults.ts +29 -1
  109. package/src/commands/levels.ts +16 -0
  110. package/src/commands/live-context.ts +3 -0
  111. package/src/content/collection-match.ts +267 -0
  112. package/src/content/entry-commands.ts +38 -29
  113. package/src/content/entry-fields.ts +6 -0
  114. package/src/editor/shortcuts.ts +5 -0
  115. package/src/files/file-ops.ts +10 -42
  116. package/src/files/files.ts +487 -59
  117. package/src/files/fs-events.ts +9 -0
  118. package/src/files/gitignore.ts +432 -0
  119. package/src/files/media-paths.ts +13 -42
  120. package/src/files/media-usage.ts +41 -131
  121. package/src/files/serialize-document.ts +60 -0
  122. package/src/format/convert-file.ts +511 -0
  123. package/src/format/format-choices.ts +199 -0
  124. package/src/grid/grid-view.ts +16 -2
  125. package/src/hosting/document.ts +2 -0
  126. package/src/hosting/layout.ts +8 -0
  127. package/src/media/media-open.ts +58 -0
  128. package/src/media/media-pane.ts +310 -0
  129. package/src/new-project/import-tab.ts +357 -163
  130. package/src/new-project/location-fields.ts +8 -5
  131. package/src/new-project/new-project-modal.ts +27 -34
  132. package/src/packages/ensure-deps.ts +14 -7
  133. package/src/packages/jxsuite-update.ts +11 -11
  134. package/src/page-params.ts +10 -46
  135. package/src/panels/activity-bar.ts +45 -16
  136. package/src/panels/ai-chat/attached-context.ts +6 -1
  137. package/src/panels/ai-chat/chat-view.ts +255 -13
  138. package/src/panels/ai-chat/composer.ts +31 -97
  139. package/src/panels/ai-panel.ts +116 -2
  140. package/src/panels/navigator-panels.ts +7 -6
  141. package/src/panels/settings-menu.ts +799 -0
  142. package/src/panels/toolbar.ts +135 -15
  143. package/src/platforms/cloud.ts +261 -70
  144. package/src/platforms/devserver.ts +67 -33
  145. package/src/preview/preview-overlay.ts +226 -0
  146. package/src/publish/publish-panel.ts +62 -2
  147. package/src/services/ai-ask.ts +247 -0
  148. package/src/services/ai-import-tools.ts +532 -0
  149. package/src/services/ai-models.ts +108 -1
  150. package/src/services/ai-project-tools.ts +20 -26
  151. package/src/services/ai-system-prompt.ts +88 -2
  152. package/src/services/ai-turn-signal.ts +70 -0
  153. package/src/services/connection.ts +74 -0
  154. package/src/services/context-manager.ts +101 -1
  155. package/src/services/document-assistant.ts +45 -4
  156. package/src/services/import-client.ts +33 -6
  157. package/src/services/import-run.ts +158 -0
  158. package/src/services/import-seed.ts +120 -0
  159. package/src/services/jx-validate.ts +58 -6
  160. package/src/services/project-adoption.ts +71 -0
  161. package/src/services/references.ts +0 -0
  162. package/src/services/settings/definitions.ts +17 -0
  163. package/src/services/tool-executor.ts +45 -2
  164. package/src/settings/contexts-section.ts +45 -3
  165. package/src/settings/dependencies-editor.ts +43 -23
  166. package/src/settings/general-settings.ts +30 -12
  167. package/src/settings/preferences-accounts.ts +193 -12
  168. package/src/settings/preferences-dialog.ts +93 -59
  169. package/src/settings/preferences-sections.ts +57 -0
  170. package/src/settings/settings-document.ts +65 -9
  171. package/src/studio.ts +33 -6
  172. package/src/tabs/transact.ts +42 -19
  173. package/src/types.ts +129 -7
  174. package/src/ui/ai-managed-connect.ts +62 -13
  175. package/src/ui/ai-model-picker.ts +189 -0
  176. package/src/ui/cf-account-picker.ts +200 -0
  177. package/src/ui/choice-field.ts +72 -0
  178. package/src/ui/layers.ts +83 -5
  179. package/src/utils/studio-utils.ts +22 -52
  180. package/styles/forced-colors.css +7 -0
  181. package/styles/overlays.css +256 -0
  182. package/styles/panels.css +13 -1
  183. package/styles/shell.css +147 -0
  184. package/dist/chunks/Overlay.dev-d2ajy6sj.js +0 -23
  185. package/dist/chunks/content-source-7fy9qrm0.js +0 -40
  186. package/dist/chunks/files-xcybanxe.js +0 -70
  187. package/dist/chunks/layers-panel-27essgkc.js +0 -60
  188. package/dist/chunks/publish-panel-09sy2bab.js +0 -22
  189. package/dist/chunks/quick-search-sefb61v8.js +0 -55
  190. package/dist/chunks/right-panel-9r32jd5j.js +0 -39
  191. package/dist/chunks/sp-overlay.dev-s18hymn9.js +0 -18
  192. package/dist/chunks/sp-popover.dev-dj9x7e7a.js +0 -9
  193. package/dist/chunks/sp-progress-circle.dev-0zxcyz3r.js +0 -15
  194. package/dist/chunks/sp-tooltip.dev-5c6d1kjz.js +0 -15
  195. package/dist/chunks/studio-bw5dz6km.js +0 -608
  196. package/dist/chunks/studio-c31yb4t6.js +0 -55
  197. package/src/canvas/site-style-css.ts +0 -117
@@ -0,0 +1,195 @@
1
+ import {
2
+ SETTINGS,
3
+ clearSettings,
4
+ hasSetting,
5
+ onSettingsChanged,
6
+ readStoredSetting,
7
+ setSetting,
8
+ setSettings
9
+ } from "./studio-92ab2jqe.js";
10
+ import {
11
+ getPlatform
12
+ } from "./studio-9ab8gqsm.js";
13
+
14
+ // src/services/ai-settings.ts
15
+ function getOpenAiKey() {
16
+ return readStoredSetting(SETTINGS.aiOpenAiKey);
17
+ }
18
+ function setOpenAiKey(key) {
19
+ setSetting(SETTINGS.aiOpenAiKey, key || "");
20
+ }
21
+ function hasOpenAiKey() {
22
+ return hasSetting(SETTINGS.aiOpenAiKey);
23
+ }
24
+ function getBaseUrl() {
25
+ return readStoredSetting(SETTINGS.aiBaseUrl);
26
+ }
27
+ function storedModel() {
28
+ return readStoredSetting(SETTINGS.aiModel);
29
+ }
30
+ function setModel(modelId) {
31
+ setSetting(SETTINGS.aiModel, modelId || "");
32
+ }
33
+ function saveAiProvider(provider) {
34
+ setSettings([
35
+ [SETTINGS.aiOpenAiKey, provider.apiKey],
36
+ [SETTINGS.aiBaseUrl, provider.baseUrl],
37
+ [SETTINGS.aiModel, provider.model]
38
+ ]);
39
+ }
40
+ function clearAiProvider() {
41
+ clearSettings([SETTINGS.aiOpenAiKey, SETTINGS.aiBaseUrl, SETTINGS.aiModel]);
42
+ }
43
+
44
+ // src/services/ai-models.ts
45
+ function aiConnection() {
46
+ return { apiKey: getOpenAiKey(), baseUrl: getBaseUrl() };
47
+ }
48
+ function fingerprint(credentials) {
49
+ return `${credentials.apiKey}\x00${credentials.baseUrl}`;
50
+ }
51
+ var cache = null;
52
+ var cacheKey = "";
53
+ var proxyConfigured = false;
54
+ var proxyManaged = false;
55
+ var proxyDefaultModel = "";
56
+ var proxyCode;
57
+ var proxyProbe = null;
58
+ var probeListeners = new Set;
59
+ var PROBE_STALE_MS = 600000;
60
+ var probeSettledAt = 0;
61
+ var probeRefreshInstalled = false;
62
+ function resetModelCache() {
63
+ cache = null;
64
+ cacheKey = "";
65
+ proxyConfigured = false;
66
+ proxyManaged = false;
67
+ proxyDefaultModel = "";
68
+ proxyCode = undefined;
69
+ proxyProbe = null;
70
+ probeSettledAt = 0;
71
+ }
72
+ var CONNECTION_KEYS = new Set([
73
+ SETTINGS.aiOpenAiKey.key,
74
+ SETTINGS.aiBaseUrl.key,
75
+ SETTINGS.cfToken.key,
76
+ SETTINGS.cfAccountId.key
77
+ ]);
78
+ onSettingsChanged((keys) => {
79
+ if (keys.some((key) => CONNECTION_KEYS.has(key))) {
80
+ resetModelCache();
81
+ }
82
+ });
83
+ function cachedModels(credentials) {
84
+ return cache && cacheKey === fingerprint(credentials) ? cache : null;
85
+ }
86
+ function cachedModel(id) {
87
+ return cache?.find((model) => model.id === id);
88
+ }
89
+ function modelToolSupport(id) {
90
+ return cachedModel(id)?.toolSupport;
91
+ }
92
+ function modelContextWindow(id) {
93
+ return cachedModel(id)?.contextWindow;
94
+ }
95
+ function ensureProxyProbe(onSettled) {
96
+ if (onSettled) {
97
+ probeListeners.add(onSettled);
98
+ }
99
+ proxyProbe ??= fetchAvailableModels({ force: true }).catch(() => {}).then(() => {
100
+ probeSettledAt = Date.now();
101
+ for (const notify of probeListeners) {
102
+ notify();
103
+ }
104
+ });
105
+ }
106
+ function refreshStaleProbe() {
107
+ if (!proxyManaged || probeSettledAt === 0 || Date.now() - probeSettledAt < PROBE_STALE_MS) {
108
+ return false;
109
+ }
110
+ proxyProbe = null;
111
+ probeSettledAt = 0;
112
+ ensureProxyProbe();
113
+ return true;
114
+ }
115
+ function installProbeRefresh() {
116
+ if (typeof window === "undefined" || probeRefreshInstalled) {
117
+ return;
118
+ }
119
+ probeRefreshInstalled = true;
120
+ window.addEventListener("focus", () => {
121
+ refreshStaleProbe();
122
+ });
123
+ }
124
+ installProbeRefresh();
125
+ function hasAiCredentials() {
126
+ return hasOpenAiKey() || isProxyConfigured();
127
+ }
128
+ function isProxyConfigured() {
129
+ return proxyConfigured;
130
+ }
131
+ function isManagedProxy() {
132
+ return proxyManaged;
133
+ }
134
+ function proxyStateCode() {
135
+ return proxyCode;
136
+ }
137
+ function getProxyDefaultModel() {
138
+ return proxyDefaultModel;
139
+ }
140
+ function preferredModel() {
141
+ return storedModel() || getProxyDefaultModel() || SETTINGS.aiModel.default;
142
+ }
143
+ function siblingRoute(chatUrl, segment) {
144
+ let url;
145
+ try {
146
+ url = new URL(chatUrl, "http://jx.invalid");
147
+ } catch {
148
+ return chatUrl;
149
+ }
150
+ url.pathname = url.pathname.replace(/[^/]*$/, segment);
151
+ return /^https?:/i.test(chatUrl) ? url.href : `${url.pathname}${url.search}`;
152
+ }
153
+ async function fetchAvailableModels(opts = {}) {
154
+ const credentials = opts.credentials ?? aiConnection();
155
+ const key = fingerprint(credentials);
156
+ if (cache && cacheKey === key && !opts.force) {
157
+ return cache;
158
+ }
159
+ const plat = getPlatform();
160
+ const chatUrl = await Promise.resolve(plat.aiChatUrl());
161
+ const modelsUrl = siblingRoute(chatUrl, "models");
162
+ const headers = {};
163
+ if (credentials.apiKey) {
164
+ headers["X-Api-Key"] = credentials.apiKey;
165
+ }
166
+ if (credentials.baseUrl) {
167
+ headers["X-Api-Base-URL"] = credentials.baseUrl;
168
+ }
169
+ const resp = await fetch(modelsUrl, { headers });
170
+ if (!resp.ok) {
171
+ throw new Error(`HTTP ${resp.status}`);
172
+ }
173
+ const data = await resp.json();
174
+ proxyConfigured = data.configured === true;
175
+ proxyManaged = data.managed === true;
176
+ proxyDefaultModel = data.defaultModel ?? "";
177
+ proxyCode = data.code;
178
+ cache = (data.models || []).map((m) => {
179
+ const model = { id: m.id, name: m.name || m.id };
180
+ if (typeof m.contextWindow === "number") {
181
+ model.contextWindow = m.contextWindow;
182
+ }
183
+ if (typeof m.toolSupport === "boolean") {
184
+ model.toolSupport = m.toolSupport;
185
+ }
186
+ return model;
187
+ });
188
+ cacheKey = key;
189
+ return cache;
190
+ }
191
+
192
+ export { getOpenAiKey, setOpenAiKey, hasOpenAiKey, getBaseUrl, storedModel, setModel, saveAiProvider, clearAiProvider, aiConnection, resetModelCache, cachedModels, modelToolSupport, modelContextWindow, ensureProxyProbe, hasAiCredentials, isProxyConfigured, isManagedProxy, proxyStateCode, preferredModel, fetchAvailableModels };
193
+
194
+ //# debugId=B5FEB391B6B9721764756E2164756E21
195
+ //# sourceMappingURL=studio-dm19q43r.js.map
@@ -1,18 +1,20 @@
1
1
  import {
2
- activeRegistry,
3
2
  shell,
4
3
  updateSiteConfig
5
- } from "./studio-r5xbtctf.js";
4
+ } from "./studio-msd847zn.js";
5
+ import {
6
+ projectState
7
+ } from "./studio-p4ngc046.js";
8
+ import {
9
+ activeRegistry
10
+ } from "./studio-t7qb9db8.js";
6
11
  import {
7
12
  html,
8
13
  nothing
9
- } from "./studio-5x5774ak.js";
10
- import {
11
- projectState
12
- } from "./studio-cjm7fdjf.js";
14
+ } from "./studio-kryvsw6j.js";
13
15
  import {
14
16
  getPlatform
15
- } from "./studio-sas7mt3k.js";
17
+ } from "./studio-9ab8gqsm.js";
16
18
 
17
19
  // ../create/scaffold.ts
18
20
  var CF_ADAPTERS = new Set(["cloudflare-pages", "cloudflare-workers"]);
@@ -381,5 +383,5 @@ function renderDeployChecklist() {
381
383
 
382
384
  export { platformSupportsPublish, listAccounts, latestDeployment, writeDeployConfig, connectDeploy, currentDeploy, noteDeployment, deployStatusItem, renderDeployChecklist };
383
385
 
384
- //# debugId=F16370A3EAFA6BE564756E2164756E21
385
- //# sourceMappingURL=studio-2x9zbxmx.js.map
386
+ //# debugId=0CDC7B7E4FF1BF6164756E2164756E21
387
+ //# sourceMappingURL=studio-ef49pnzx.js.map
@@ -2,10 +2,11 @@ import {
2
2
  AsyncDirective,
3
3
  directive,
4
4
  isPrimitive
5
- } from "./studio-kvfx9z2c.js";
5
+ } from "./studio-4rzyrtjz.js";
6
6
  import {
7
7
  noChange
8
- } from "./studio-5x5774ak.js";
8
+ } from "./studio-kryvsw6j.js";
9
+
9
10
  // ../../node_modules/lit-html/development/directives/private-async-helpers.js
10
11
  class PseudoWeakRef {
11
12
  constructor(ref) {
@@ -105,11 +106,8 @@ class UntilDirective extends AsyncDirective {
105
106
  }
106
107
  }
107
108
  var until = directive(UntilDirective);
108
- // ../../node_modules/lit-html/development/directives/when.js
109
- function when(condition, trueCase, falseCase) {
110
- return condition ? trueCase(condition) : falseCase?.(condition);
111
- }
112
- export { until, when };
113
109
 
114
- //# debugId=6810A26C9093588464756E2164756E21
115
- //# sourceMappingURL=studio-ay8wcr2b.js.map
110
+ export { until };
111
+
112
+ //# debugId=1A6E4B9F13159A4A64756E2164756E21
113
+ //# sourceMappingURL=studio-eqq1w638.js.map
@@ -1,35 +1,39 @@
1
+ import {
2
+ validateProjectConfig
3
+ } from "./studio-q9jd1a60.js";
1
4
  import {
2
5
  renderForm,
3
6
  resolveContextPointer
4
- } from "./studio-3dkcd4c5.js";
5
- import {
6
- validateProjectConfig
7
- } from "./studio-6kv3apa9.js";
7
+ } from "./studio-x4qkdat5.js";
8
8
  import {
9
9
  deriveSecretEnvName
10
- } from "./studio-pkp61mh8.js";
10
+ } from "./studio-3bqpr0zh.js";
11
11
  import {
12
12
  paneOfContainer
13
- } from "./studio-j595e748.js";
13
+ } from "./studio-2b946z26.js";
14
+ import {
15
+ commitProjectConfig
16
+ } from "./studio-msd847zn.js";
17
+ import {
18
+ projectState
19
+ } from "./studio-p4ngc046.js";
14
20
  import {
15
- commitProjectConfig,
16
- errorMessage,
17
21
  paneRegion
18
- } from "./studio-r5xbtctf.js";
22
+ } from "./studio-t7qb9db8.js";
23
+ import {
24
+ errorMessage
25
+ } from "./studio-9n4mrmnb.js";
26
+ import {
27
+ notify
28
+ } from "./studio-xrapxwwc.js";
19
29
  import {
20
30
  html,
21
31
  nothing,
22
32
  render
23
- } from "./studio-5x5774ak.js";
24
- import {
25
- projectState
26
- } from "./studio-cjm7fdjf.js";
27
- import {
28
- notify
29
- } from "./studio-qpfq7xhm.js";
33
+ } from "./studio-kryvsw6j.js";
30
34
  import {
31
35
  getPlatform
32
- } from "./studio-sas7mt3k.js";
36
+ } from "./studio-9ab8gqsm.js";
33
37
 
34
38
  // src/settings/contributed-section.ts
35
39
  var selectedEntries = new Map;
@@ -333,5 +337,5 @@ function renderMapLayout(contribution, opts, rerender, paneId) {
333
337
 
334
338
  export { selectContributedEntry, renderContributedSection };
335
339
 
336
- //# debugId=476B6C93D3487B0864756E2164756E21
337
- //# sourceMappingURL=studio-5efrtn1m.js.map
340
+ //# debugId=4A4373631E35B2FD64756E2164756E21
341
+ //# sourceMappingURL=studio-ew0djmhg.js.map
@@ -212,6 +212,10 @@ var schema_default = {
212
212
  description: "Named export in $src module. Defaults to the state key name.",
213
213
  type: "string"
214
214
  },
215
+ $lazy: {
216
+ description: "Load $src on first call instead of importing it up front. The function then returns a promise, so it may only be called from a handler or lifecycle hook — never bound as a computed value. Use it for code most visitors never reach.",
217
+ type: "boolean"
218
+ },
215
219
  $prototype: {
216
220
  const: "Function",
217
221
  type: "string"
@@ -559,7 +563,7 @@ var schema_default = {
559
563
  type: "object"
560
564
  },
561
565
  ClassMethodDef: {
562
- description: "A class method or accessor definition. Capability roles (parse, serialize, discover, load) mark static methods that hosts (compiler, server, studio) invoke for format dispatch.",
566
+ description: "A class method or accessor definition. Capability roles (parse, serialize, rewrite, discover, load) mark static methods that hosts (compiler, server, studio) invoke for format dispatch.",
563
567
  properties: {
564
568
  $prototype: {
565
569
  const: "Function",
@@ -629,6 +633,7 @@ var schema_default = {
629
633
  "accessor",
630
634
  "parse",
631
635
  "serialize",
636
+ "rewrite",
632
637
  "discover",
633
638
  "load",
634
639
  "projectData",
@@ -2566,6 +2571,20 @@ var schema_default = {
2566
2571
  }
2567
2572
  ]
2568
2573
  },
2574
+ onconfigurationchange: {
2575
+ description: 'Event handler for the "configurationchange" event.',
2576
+ oneOf: [
2577
+ {
2578
+ $ref: "#/$defs/RefObject"
2579
+ },
2580
+ {
2581
+ $ref: "#/$defs/ExpressionEntry"
2582
+ },
2583
+ {
2584
+ $ref: "#/$defs/FunctionDef"
2585
+ }
2586
+ ]
2587
+ },
2569
2588
  onconnect: {
2570
2589
  description: 'Event handler for the "connect" event.',
2571
2590
  oneOf: [
@@ -5422,6 +5441,20 @@ var schema_default = {
5422
5441
  }
5423
5442
  ]
5424
5443
  },
5444
+ onstream: {
5445
+ description: 'Event handler for the "stream" event.',
5446
+ oneOf: [
5447
+ {
5448
+ $ref: "#/$defs/RefObject"
5449
+ },
5450
+ {
5451
+ $ref: "#/$defs/ExpressionEntry"
5452
+ },
5453
+ {
5454
+ $ref: "#/$defs/FunctionDef"
5455
+ }
5456
+ ]
5457
+ },
5425
5458
  onsubmit: {
5426
5459
  description: 'Event handler for the "submit" event.',
5427
5460
  oneOf: [
@@ -22777,6 +22810,7 @@ var schema_default = {
22777
22810
  "body",
22778
22811
  "br",
22779
22812
  "button",
22813
+ "camera",
22780
22814
  "canvas",
22781
22815
  "caption",
22782
22816
  "circle",
@@ -22873,6 +22907,7 @@ var schema_default = {
22873
22907
  "meter",
22874
22908
  "mfrac",
22875
22909
  "mi",
22910
+ "microphone",
22876
22911
  "mmultiscripts",
22877
22912
  "mn",
22878
22913
  "mo",
@@ -22961,6 +22996,7 @@ var schema_default = {
22961
22996
  "u",
22962
22997
  "ul",
22963
22998
  "use",
22999
+ "usermedia",
22964
23000
  "var",
22965
23001
  "video",
22966
23002
  "view",
@@ -24257,5 +24293,5 @@ var project_schema_default = {
24257
24293
 
24258
24294
  export { schema_default, project_schema_default };
24259
24295
 
24260
- //# debugId=54E7850A0697E18F64756E2164756E21
24261
- //# sourceMappingURL=studio-tr20m8g8.js.map
24296
+ //# debugId=1B8D337EFC897DC464756E2164756E21
24297
+ //# sourceMappingURL=studio-f3wqjtk5.js.map
@@ -1,43 +1,43 @@
1
1
  import {
2
2
  parseMediaEntries,
3
3
  schemeOfQuery
4
- } from "./studio-6z5eyjwn.js";
5
- import {
6
- live
7
- } from "./studio-c31yb4t6.js";
4
+ } from "./studio-950k0dx6.js";
8
5
  import {
9
6
  mediaDisplayName,
10
7
  mountStylebookCanvas,
11
8
  panToStylebookTag,
12
9
  serializeJxPath,
13
10
  tabOfPane
14
- } from "./studio-j595e748.js";
11
+ } from "./studio-2b946z26.js";
15
12
  import {
16
- activeTab,
17
13
  getEffectiveMedia,
18
14
  getEffectiveStyle,
15
+ shell
16
+ } from "./studio-msd847zn.js";
17
+ import {
18
+ activeTab,
19
19
  isSpliceablePath,
20
- shell,
21
20
  varDisplayName
22
- } from "./studio-r5xbtctf.js";
21
+ } from "./studio-trxrabqf.js";
23
22
  import {
24
23
  classMap
25
- } from "./studio-twsafr1e.js";
24
+ } from "./studio-m3hwn7y1.js";
25
+ import {
26
+ componentRegistry
27
+ } from "./studio-bgxt93ga.js";
26
28
  import {
29
+ projectState,
30
+ updateSession
31
+ } from "./studio-p4ngc046.js";
32
+ import {
33
+ live,
27
34
  ref,
28
35
  repeat
29
- } from "./studio-kvfx9z2c.js";
36
+ } from "./studio-4rzyrtjz.js";
30
37
  import {
31
38
  html,
32
39
  render
33
- } from "./studio-5x5774ak.js";
34
- import {
35
- componentRegistry
36
- } from "./studio-s519zc99.js";
37
- import {
38
- projectState,
39
- updateSession
40
- } from "./studio-cjm7fdjf.js";
40
+ } from "./studio-kryvsw6j.js";
41
41
  import {
42
42
  __require
43
43
  } from "./studio-a0tswy0w.js";
@@ -491,6 +491,7 @@ function buildStylebookDoc(opts) {
491
491
 
492
492
  // src/style/project-styles.ts
493
493
  var PROJECT_STYLES_TITLE = "Project Styles";
494
+ var PROJECT_STYLES_VIEW = "stylebook";
494
495
  var TOKEN_GROUPS = [
495
496
  { id: "color", prefix: "--color-", title: "Colors" },
496
497
  { id: "font", prefix: "--font-", title: "Fonts" },
@@ -736,6 +737,7 @@ function noopCommandDeps() {
736
737
  undo: () => {},
737
738
  redo: () => {},
738
739
  openInBrowser: () => {},
740
+ buildSite: () => {},
739
741
  closeDocument: () => {},
740
742
  duplicateSelection: () => {},
741
743
  deleteSelection: () => {},
@@ -793,9 +795,20 @@ function defaultCommands(deps) {
793
795
  group: "2_output",
794
796
  when: (ctx) => ctx.project.isSite,
795
797
  enablement: documentOpen,
796
- requires: "a built page to open",
798
+ requires: "a page to preview",
797
799
  run: () => deps.openInBrowser()
798
800
  },
801
+ {
802
+ id: "project.buildSite",
803
+ title: "Build Site",
804
+ category: "Project",
805
+ level: "project",
806
+ menus: ["commandbar/overflow", "palette"],
807
+ group: "2_output",
808
+ when: (ctx) => ctx.project.isSite,
809
+ requires: "a site project",
810
+ run: () => deps.buildSite()
811
+ },
799
812
  {
800
813
  id: "edit.undo",
801
814
  title: "Undo",
@@ -860,7 +873,7 @@ function defaultCommands(deps) {
860
873
  description: "Turn the selected element into a repeater template, rendering it once per item of a " + "data collection the author picks in the dialog this opens."
861
874
  },
862
875
  run: () => {
863
- import("./convert-to-repeater-6vvx96n2.js").then(({ convertToRepeater }) => convertToRepeater());
876
+ import("./convert-to-repeater-43tfn7cs.js").then(({ convertToRepeater }) => convertToRepeater());
864
877
  }
865
878
  },
866
879
  {
@@ -1062,7 +1075,7 @@ function inspectorFocusCommands(deps) {
1062
1075
  });
1063
1076
  }
1064
1077
 
1065
- export { transposeStylebookStyle, tokenLabel, groupTokens, listTokenContexts, readTokenOverride, writeTokenOverride, addableContexts, stylebook_meta_default, renderStylebookMode, selectStylebookTag, INSPECTOR_TABS, noopCommandDeps, defaultCommands };
1078
+ export { transposeStylebookStyle, PROJECT_STYLES_TITLE, PROJECT_STYLES_VIEW, tokenLabel, groupTokens, listTokenContexts, readTokenOverride, writeTokenOverride, addableContexts, stylebook_meta_default, renderStylebookMode, selectStylebookTag, INSPECTOR_TABS, noopCommandDeps, defaultCommands };
1066
1079
 
1067
- //# debugId=46ED955C46B01FC864756E2164756E21
1068
- //# sourceMappingURL=studio-xntfdy1x.js.map
1080
+ //# debugId=3813E2C630DE133B64756E2164756E21
1081
+ //# sourceMappingURL=studio-fbf92ckf.js.map