@jxsuite/studio 3.0.0 → 4.0.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 (173) hide show
  1. package/README.md +5 -5
  2. package/dist/chunks/Overlay.dev-723bv0df.js +23 -0
  3. package/dist/chunks/{cf-settings-zj2cj1ar.js → cf-settings-45fgyx8y.js} +6 -5
  4. package/dist/chunks/{components-z6cnkyy1.js → components-zmx10t62.js} +6 -5
  5. package/dist/chunks/content-source-t88vb2dr.js +49 -0
  6. package/dist/chunks/{convert-to-repeater-6vvx96n2.js → convert-to-repeater-dhw1nrz9.js} +27 -19
  7. package/dist/chunks/entry-commands-6z6bhxg0.js +46 -0
  8. package/dist/chunks/{extension-sections-kwzvpemr.js → extension-sections-3ydgjbdy.js} +32 -24
  9. package/dist/chunks/file-ops-rskmhxyq.js +48 -0
  10. package/dist/chunks/files-0cratsr0.js +92 -0
  11. package/dist/chunks/{format-host-8fr3545e.js → format-host-tgcmfs4p.js} +3 -3
  12. package/dist/chunks/fs-events-hrrg328g.js +21 -0
  13. package/dist/chunks/{git-panel-g01d93vc.js → git-panel-0yywyk76.js} +21 -16
  14. package/dist/chunks/{jx-validate-jj9rnt4n.js → jx-validate-8q2g05x1.js} +6 -4
  15. package/dist/chunks/layers-panel-z3tqe5cd.js +67 -0
  16. package/dist/chunks/layers-q75tj2mf.js +45 -0
  17. package/dist/chunks/lit-html-j055mkh8.js +22 -0
  18. package/dist/chunks/monaco-buffer-dqw0xxpx.js +25 -0
  19. package/dist/chunks/{monaco-setup-a5wkmbgh.js → monaco-setup-rws7k4br.js} +4 -4
  20. package/dist/chunks/notify-yjm79n4s.js +30 -0
  21. package/dist/chunks/parse-24d0gay3.js +19 -0
  22. package/dist/chunks/platform-ba1j1gbh.js +16 -0
  23. package/dist/chunks/publish-panel-54jvhskq.js +28 -0
  24. package/dist/chunks/quick-search-cgfmjwq5.js +65 -0
  25. package/dist/chunks/references-3qx8fkyp.js +29 -0
  26. package/dist/chunks/right-panel-cqp8bc4v.js +46 -0
  27. package/dist/chunks/sp-overlay.dev-yztmtrs1.js +18 -0
  28. package/dist/chunks/sp-popover.dev-n2etmqdp.js +9 -0
  29. package/dist/chunks/sp-progress-circle.dev-hryhj0es.js +15 -0
  30. package/dist/chunks/sp-tooltip.dev-xcvpnqr0.js +15 -0
  31. package/dist/chunks/{sp-tray.dev-64v4pxw8.js → sp-tray.dev-tkbscm06.js} +5 -5
  32. package/dist/chunks/{studio-8ezdegcx.js → studio-1hbqnt19.js} +36 -32
  33. package/dist/chunks/{studio-r5xbtctf.js → studio-2zkz8evn.js} +446 -2451
  34. package/dist/chunks/{studio-pkp61mh8.js → studio-4pqqxbrt.js} +23 -15
  35. package/dist/chunks/{studio-kvfx9z2c.js → studio-4rzyrtjz.js} +70 -31
  36. package/dist/chunks/{studio-3dkcd4c5.js → studio-5q69gfag.js} +60 -56
  37. package/dist/chunks/{studio-rh1cnamv.js → studio-5rywrkxz.js} +563 -133
  38. package/dist/chunks/{studio-6kv3apa9.js → studio-68n67094.js} +25 -9
  39. package/dist/chunks/{studio-0rqqhrdy.js → studio-7nte2hj4.js} +2 -2
  40. package/dist/chunks/{studio-xntfdy1x.js → studio-8swrjbny.js} +31 -18
  41. package/dist/chunks/studio-92ab2jqe.js +282 -0
  42. package/dist/chunks/{studio-sas7mt3k.js → studio-9ab8gqsm.js} +2 -2
  43. package/dist/chunks/{studio-ry1vz5sv.js → studio-9c4k4vhv.js} +15 -13
  44. package/dist/chunks/studio-9n4mrmnb.js +184 -0
  45. package/dist/chunks/{studio-tr20m8g8.js → studio-9r6j5ev1.js} +37 -2
  46. package/dist/chunks/{studio-2x9zbxmx.js → studio-ahjfdy6e.js} +9 -7
  47. package/dist/chunks/{studio-s519zc99.js → studio-bgxt93ga.js} +3 -3
  48. package/dist/chunks/{studio-dc8s8heb.js → studio-cb12yz9w.js} +8528 -8780
  49. package/dist/chunks/studio-cft9r4r7.js +119 -0
  50. package/dist/chunks/{studio-hcxzyk3x.js → studio-eenfkt4e.js} +6 -6
  51. package/dist/chunks/studio-eesa1myv.js +498 -0
  52. package/dist/chunks/{studio-ay8wcr2b.js → studio-eqq1w638.js} +7 -9
  53. package/dist/chunks/{studio-7p35254k.js → studio-ex8zyp98.js} +30 -26
  54. package/dist/chunks/studio-gv8vvshc.js +118 -0
  55. package/dist/chunks/studio-hbtp0eh1.js +1315 -0
  56. package/dist/chunks/{studio-a0yp7syn.js → studio-htsf0w6m.js} +29 -114
  57. package/dist/chunks/{studio-j595e748.js → studio-kjjsjak4.js} +139 -63
  58. package/dist/chunks/{studio-5x5774ak.js → studio-kryvsw6j.js} +3 -3
  59. package/dist/chunks/{studio-kfpek536.js → studio-kyh9avvv.js} +2 -2
  60. package/dist/chunks/{studio-g5gdqnyd.js → studio-kyk2v92a.js} +14 -14
  61. package/dist/chunks/{studio-twsafr1e.js → studio-m3hwn7y1.js} +3 -3
  62. package/dist/chunks/{studio-tzx3xmvx.js → studio-mmv72a27.js} +8 -8
  63. package/dist/chunks/{studio-vhk5fmfv.js → studio-n8b9wqwy.js} +5 -5
  64. package/dist/chunks/{studio-cjm7fdjf.js → studio-p4ngc046.js} +8 -104
  65. package/dist/chunks/{studio-p5dja96s.js → studio-p8j86wag.js} +2 -2
  66. package/dist/chunks/{studio-6z5eyjwn.js → studio-pdfjntbk.js} +66 -129
  67. package/dist/chunks/studio-q43a5y9h.js +394 -0
  68. package/dist/chunks/studio-q7v10cg2.js +106 -0
  69. package/dist/chunks/{studio-2w11grav.js → studio-qq6jym04.js} +3 -3
  70. package/dist/chunks/studio-r1r7afxx.js +1066 -0
  71. package/dist/chunks/{studio-3fk1ac9z.js → studio-rdx8jcxy.js} +4 -4
  72. package/dist/chunks/{studio-4mqb9a0j.js → studio-rn9ta2mz.js} +4 -4
  73. package/dist/chunks/studio-sf7zjgv1.js +91 -0
  74. package/dist/chunks/studio-t7qb9db8.js +665 -0
  75. package/dist/chunks/studio-tmc5emrw.js +8 -0
  76. package/dist/chunks/{studio-wdt9y92a.js → studio-txwkm6p9.js} +2 -2
  77. package/dist/chunks/{studio-k4jvjcfx.js → studio-v38hmvx1.js} +7 -7
  78. package/dist/chunks/{studio-7ejemhej.js → studio-vadzgkrz.js} +6 -6
  79. package/dist/chunks/studio-wcy8trfx.js +263 -0
  80. package/dist/chunks/{studio-5efrtn1m.js → studio-wx5609xd.js} +21 -17
  81. package/dist/chunks/{studio-qpfq7xhm.js → studio-xrapxwwc.js} +22 -285
  82. package/dist/chunks/{studio-hj2se583.js → studio-yxrkyv8a.js} +41 -31
  83. package/dist/chunks/{studio-xm3dbxvn.js → studio-zczps70q.js} +2 -2
  84. package/dist/chunks/workspace-xpres40v.js +89 -0
  85. package/dist/iframe-entry.js +108 -24
  86. package/dist/studio.js +2362 -1695
  87. package/package.json +16 -15
  88. package/src/browse/library-pane.ts +57 -3
  89. package/src/canvas/canvas-render.ts +23 -1
  90. package/src/canvas/iframe-patch.ts +47 -21
  91. package/src/canvas/iframe-render.ts +22 -6
  92. package/src/commands/app-commands.ts +4 -0
  93. package/src/commands/command-args.ts +29 -0
  94. package/src/commands/context.ts +15 -1
  95. package/src/commands/defaults.ts +29 -1
  96. package/src/commands/levels.ts +16 -0
  97. package/src/commands/live-context.ts +3 -0
  98. package/src/content/collection-match.ts +267 -0
  99. package/src/content/entry-commands.ts +38 -29
  100. package/src/content/entry-fields.ts +6 -0
  101. package/src/editor/shortcuts.ts +5 -0
  102. package/src/files/file-ops.ts +10 -42
  103. package/src/files/files.ts +485 -59
  104. package/src/files/fs-events.ts +9 -0
  105. package/src/files/gitignore.ts +432 -0
  106. package/src/files/serialize-document.ts +60 -0
  107. package/src/format/convert-file.ts +511 -0
  108. package/src/format/format-choices.ts +199 -0
  109. package/src/grid/grid-view.ts +16 -2
  110. package/src/media/media-open.ts +58 -0
  111. package/src/media/media-pane.ts +310 -0
  112. package/src/new-project/import-tab.ts +332 -160
  113. package/src/new-project/new-project-modal.ts +27 -34
  114. package/src/packages/ensure-deps.ts +14 -7
  115. package/src/packages/jxsuite-update.ts +11 -11
  116. package/src/page-params.ts +10 -46
  117. package/src/panels/activity-bar.ts +45 -16
  118. package/src/panels/ai-chat/attached-context.ts +6 -1
  119. package/src/panels/ai-chat/chat-view.ts +255 -13
  120. package/src/panels/ai-chat/composer.ts +21 -97
  121. package/src/panels/ai-panel.ts +116 -2
  122. package/src/panels/navigator-panels.ts +7 -6
  123. package/src/panels/settings-menu.ts +799 -0
  124. package/src/panels/toolbar.ts +135 -15
  125. package/src/platforms/cloud.ts +20 -0
  126. package/src/platforms/devserver.ts +67 -33
  127. package/src/preview/preview-overlay.ts +226 -0
  128. package/src/services/ai-ask.ts +247 -0
  129. package/src/services/ai-import-tools.ts +494 -0
  130. package/src/services/ai-project-tools.ts +20 -26
  131. package/src/services/ai-system-prompt.ts +88 -2
  132. package/src/services/ai-turn-signal.ts +70 -0
  133. package/src/services/connection.ts +74 -0
  134. package/src/services/context-manager.ts +89 -0
  135. package/src/services/document-assistant.ts +45 -4
  136. package/src/services/import-client.ts +33 -6
  137. package/src/services/import-run.ts +158 -0
  138. package/src/services/import-seed.ts +120 -0
  139. package/src/services/jx-validate.ts +58 -6
  140. package/src/services/project-adoption.ts +71 -0
  141. package/src/services/references.ts +0 -0
  142. package/src/services/settings/definitions.ts +17 -0
  143. package/src/services/tool-executor.ts +34 -2
  144. package/src/settings/contexts-section.ts +45 -3
  145. package/src/settings/dependencies-editor.ts +43 -23
  146. package/src/settings/general-settings.ts +30 -12
  147. package/src/settings/preferences-dialog.ts +18 -41
  148. package/src/settings/preferences-sections.ts +57 -0
  149. package/src/settings/settings-document.ts +65 -9
  150. package/src/studio.ts +33 -6
  151. package/src/tabs/transact.ts +42 -19
  152. package/src/types.ts +103 -5
  153. package/src/ui/ai-model-picker.ts +162 -0
  154. package/src/ui/choice-field.ts +72 -0
  155. package/src/ui/layers.ts +83 -5
  156. package/src/utils/studio-utils.ts +22 -52
  157. package/styles/forced-colors.css +7 -0
  158. package/styles/overlays.css +256 -0
  159. package/styles/panels.css +13 -1
  160. package/styles/shell.css +111 -0
  161. package/dist/chunks/Overlay.dev-d2ajy6sj.js +0 -23
  162. package/dist/chunks/content-source-7fy9qrm0.js +0 -40
  163. package/dist/chunks/files-xcybanxe.js +0 -70
  164. package/dist/chunks/layers-panel-27essgkc.js +0 -60
  165. package/dist/chunks/publish-panel-09sy2bab.js +0 -22
  166. package/dist/chunks/quick-search-sefb61v8.js +0 -55
  167. package/dist/chunks/right-panel-9r32jd5j.js +0 -39
  168. package/dist/chunks/sp-overlay.dev-s18hymn9.js +0 -18
  169. package/dist/chunks/sp-popover.dev-dj9x7e7a.js +0 -9
  170. package/dist/chunks/sp-progress-circle.dev-0zxcyz3r.js +0 -15
  171. package/dist/chunks/sp-tooltip.dev-5c6d1kjz.js +0 -15
  172. package/dist/chunks/studio-c31yb4t6.js +0 -55
  173. package/src/canvas/site-style-css.ts +0 -117
@@ -1,59 +1,63 @@
1
1
  import {
2
2
  pendingSchedulers
3
3
  } from "./studio-8jpzqk5s.js";
4
- import {
5
- live
6
- } from "./studio-c31yb4t6.js";
7
4
  import {
8
5
  activityIdleBlockers,
9
6
  beginActivity,
10
7
  showProgressModal
11
- } from "./studio-ry1vz5sv.js";
8
+ } from "./studio-9c4k4vhv.js";
12
9
  import {
13
10
  canvasIdleBlockers,
14
11
  canvasPointAt,
15
12
  registerPanel,
16
13
  renderEmptyState,
17
14
  revealCanvasPath
18
- } from "./studio-j595e748.js";
15
+ } from "./studio-kjjsjak4.js";
16
+ import {
17
+ shell
18
+ } from "./studio-hbtp0eh1.js";
19
19
  import {
20
- activeTab,
21
- collabState,
22
- errorMessage,
23
- flushAllCollab,
24
20
  overlayIdleBlockers,
25
- shell,
26
21
  showConfirmDialog,
27
22
  showDialog,
28
23
  showPromptDialog
29
- } from "./studio-r5xbtctf.js";
24
+ } from "./studio-t7qb9db8.js";
25
+ import {
26
+ errorMessage
27
+ } from "./studio-9n4mrmnb.js";
28
+ import {
29
+ activeTab,
30
+ collabState,
31
+ flushAllCollab
32
+ } from "./studio-2zkz8evn.js";
33
+ import {
34
+ notify,
35
+ now
36
+ } from "./studio-xrapxwwc.js";
30
37
  import {
38
+ live,
31
39
  ref,
32
40
  repeat
33
- } from "./studio-kvfx9z2c.js";
41
+ } from "./studio-4rzyrtjz.js";
34
42
  import {
35
43
  html,
36
44
  nothing
37
- } from "./studio-5x5774ak.js";
45
+ } from "./studio-kryvsw6j.js";
38
46
  import {
39
47
  POLL_GIT,
40
48
  projectState,
41
49
  render,
42
50
  renderOnly,
43
51
  rendersInFlight
44
- } from "./studio-cjm7fdjf.js";
45
- import {
46
- notify,
47
- now
48
- } from "./studio-qpfq7xhm.js";
52
+ } from "./studio-p4ngc046.js";
49
53
  import {
50
54
  formatForPath
51
- } from "./studio-hcxzyk3x.js";
55
+ } from "./studio-eenfkt4e.js";
52
56
  import {
53
57
  getPlatform,
54
58
  hasPlatform,
55
59
  platformInFlight
56
- } from "./studio-sas7mt3k.js";
60
+ } from "./studio-9ab8gqsm.js";
57
61
  import {
58
62
  __require
59
63
  } from "./studio-a0tswy0w.js";
@@ -348,7 +352,7 @@ async function createGithubRepository({ projectName }) {
348
352
  });
349
353
  return false;
350
354
  }
351
- const { refreshGitStatus } = await import("./git-panel-g01d93vc.js");
355
+ const { refreshGitStatus } = await import("./git-panel-0yywyk76.js");
352
356
  await refreshGitStatus();
353
357
  activity.done(repo.html_url);
354
358
  notify.success(`Repository created: ${repo.html_url}`, { key: "github.repo" });
@@ -746,12 +750,12 @@ function isUpgrade(current, latest) {
746
750
  var JXSUITE_PREFIX = "@jxsuite/";
747
751
  async function checkJxsuiteUpdate() {
748
752
  const platform = getPlatform();
749
- if (!platform.outdatedPackages) {
753
+ if (!platform.packageVersions) {
750
754
  return [];
751
755
  }
752
756
  let reported;
753
757
  try {
754
- reported = await platform.outdatedPackages();
758
+ reported = await platform.packageVersions();
755
759
  } catch {
756
760
  return [];
757
761
  }
@@ -1803,7 +1807,7 @@ function registerGitPanel() {
1803
1807
  });
1804
1808
  }
1805
1809
 
1806
- export { hydrateProjectList, getProjectList, registerGridProbe, shouldInstallAutomation, installAutomationHook, stripRange, isComparable, isUpgrade, maybePromptJxsuiteUpdate, autoSyncProjectOnOpen, githubTokenStored, githubTokenLocation, clearGithubToken, refreshGitStatus, cloneRepository, platformSupportsClone, readGitDiff, loadDiffForLens, initRepository, pushCurrentBranch, signInToGithub, renderGitPanel, relativeDate, sourceControlCommands, registerSourceControlCommands, cleanupGitPanel, registerGitPanel };
1810
+ export { hydrateProjectList, getProjectList, registerGridProbe, shouldInstallAutomation, installAutomationHook, stripRange, isUpgrade, maybePromptJxsuiteUpdate, autoSyncProjectOnOpen, githubTokenStored, githubTokenLocation, clearGithubToken, refreshGitStatus, cloneRepository, platformSupportsClone, readGitDiff, loadDiffForLens, initRepository, pushCurrentBranch, signInToGithub, renderGitPanel, relativeDate, sourceControlCommands, registerSourceControlCommands, cleanupGitPanel, registerGitPanel };
1807
1811
 
1808
- //# debugId=377D6D9A57EC225664756E2164756E21
1809
- //# sourceMappingURL=studio-7p35254k.js.map
1812
+ //# debugId=C93BAA1491AC405A64756E2164756E21
1813
+ //# sourceMappingURL=studio-ex8zyp98.js.map
@@ -0,0 +1,118 @@
1
+ import {
2
+ baseName,
3
+ dirName,
4
+ extensionOf,
5
+ mediaKind
6
+ } from "./studio-htsf0w6m.js";
7
+ import {
8
+ normalizeProjectPath
9
+ } from "./studio-kjjsjak4.js";
10
+ import {
11
+ getPlatform
12
+ } from "./studio-9ab8gqsm.js";
13
+
14
+ // src/files/media-meta.ts
15
+ var settled = new Map;
16
+ var inFlight = new Map;
17
+ var measured = new Map;
18
+ function metaFrom(path, entry) {
19
+ const name = baseName(path);
20
+ const dims = measured.get(path);
21
+ return {
22
+ bytes: typeof entry?.size === "number" ? entry.size : null,
23
+ ext: extensionOf(name),
24
+ height: dims?.height ?? null,
25
+ kind: mediaKind({ name }),
26
+ modified: entry?.modified ?? null,
27
+ name,
28
+ path,
29
+ width: dims?.width ?? null
30
+ };
31
+ }
32
+ function peekMediaMeta(path) {
33
+ return settled.get(normalizeProjectPath(path)) ?? null;
34
+ }
35
+ function seedMediaMeta(entries) {
36
+ for (const entry of entries) {
37
+ if (entry.type !== "file") {
38
+ continue;
39
+ }
40
+ const path = normalizeProjectPath(entry.path);
41
+ if (!settled.has(path)) {
42
+ settled.set(path, metaFrom(path, entry));
43
+ }
44
+ }
45
+ }
46
+ async function loadMediaMeta(path) {
47
+ const key = normalizeProjectPath(path);
48
+ const done = settled.get(key);
49
+ if (done) {
50
+ return done;
51
+ }
52
+ const running = inFlight.get(key);
53
+ if (running) {
54
+ return running;
55
+ }
56
+ const pending = (async () => {
57
+ let entry;
58
+ try {
59
+ const listing = await getPlatform().listDirectory(dirName(key));
60
+ entry = listing.find((item) => normalizeProjectPath(item.path) === key);
61
+ } catch {
62
+ entry = undefined;
63
+ }
64
+ return metaFrom(key, entry);
65
+ })();
66
+ inFlight.set(key, pending);
67
+ const meta = await pending;
68
+ inFlight.delete(key);
69
+ settled.set(key, meta);
70
+ return meta;
71
+ }
72
+ function recordImageSize(path, width, height) {
73
+ if (!(width > 0 && height > 0)) {
74
+ return false;
75
+ }
76
+ const key = normalizeProjectPath(path);
77
+ const known = measured.get(key);
78
+ if (known && known.width === width && known.height === height) {
79
+ return false;
80
+ }
81
+ measured.set(key, { height, width });
82
+ const meta = settled.get(key);
83
+ if (meta) {
84
+ settled.set(key, { ...meta, height, width });
85
+ }
86
+ return true;
87
+ }
88
+ function invalidateMediaMeta() {
89
+ settled.clear();
90
+ measured.clear();
91
+ }
92
+ function formatBytes(bytes) {
93
+ if (bytes < 1024) {
94
+ return `${bytes} B`;
95
+ }
96
+ if (bytes < 1024 * 1024) {
97
+ return `${Math.round(bytes / 1024)} KB`;
98
+ }
99
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
100
+ }
101
+ function mediaMetaSummary(meta) {
102
+ if (!meta) {
103
+ return "";
104
+ }
105
+ const parts = [];
106
+ if (meta.width !== null && meta.height !== null) {
107
+ parts.push(`${meta.width} × ${meta.height}`);
108
+ }
109
+ if (meta.bytes !== null) {
110
+ parts.push(formatBytes(meta.bytes));
111
+ }
112
+ return parts.join(" · ");
113
+ }
114
+
115
+ export { peekMediaMeta, seedMediaMeta, loadMediaMeta, recordImageSize, invalidateMediaMeta, formatBytes, mediaMetaSummary };
116
+
117
+ //# debugId=18B99161AAFC90A064756E2164756E21
118
+ //# sourceMappingURL=studio-gv8vvshc.js.map