@12ui/design 0.2.81 → 0.2.83
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.
- package/README.md +11 -7
- package/SKILL.md +1 -1
- package/dist/branch-execution.d.ts.map +1 -1
- package/dist/branch-execution.js +6 -0
- package/dist/branch-execution.js.map +1 -1
- package/dist/branch-materialize.d.ts.map +1 -1
- package/dist/branch-materialize.js +6 -2
- package/dist/branch-materialize.js.map +1 -1
- package/dist/cli-capabilities.d.ts +4 -7
- package/dist/cli-capabilities.d.ts.map +1 -1
- package/dist/cli-capabilities.js +4 -4
- package/dist/cli-capabilities.js.map +1 -1
- package/dist/cli-help/conversion.d.ts +1 -1
- package/dist/cli-help/conversion.js +1 -1
- package/dist/cli-help/conversion.js.map +1 -1
- package/dist/cli-help/index.d.ts +3 -3
- package/dist/cli-help/workflow.d.ts +2 -2
- package/dist/cli-help/workflow.js +4 -4
- package/dist/cli-help/workflow.js.map +1 -1
- package/dist/cli-image-backend.d.ts +6 -1
- package/dist/cli-image-backend.d.ts.map +1 -1
- package/dist/cli-image-backend.js +8 -3
- package/dist/cli-image-backend.js.map +1 -1
- package/dist/cli-local-runtime.d.ts +6 -0
- package/dist/cli-local-runtime.d.ts.map +1 -1
- package/dist/cli-local-runtime.js +14 -1
- package/dist/cli-local-runtime.js.map +1 -1
- package/dist/cli-usage.d.ts.map +1 -1
- package/dist/cli-usage.js +8 -7
- package/dist/cli-usage.js.map +1 -1
- package/dist/cli-workspace-draw.d.ts.map +1 -1
- package/dist/cli-workspace-draw.js +2 -0
- package/dist/cli-workspace-draw.js.map +1 -1
- package/dist/cli-workspace-runner.d.ts.map +1 -1
- package/dist/cli-workspace-runner.js +2 -1
- package/dist/cli-workspace-runner.js.map +1 -1
- package/dist/legacy-skill-catalog.d.ts.map +1 -1
- package/dist/legacy-skill-catalog.js +13 -1
- package/dist/legacy-skill-catalog.js.map +1 -1
- package/dist/mcp-slate-tool-defs.d.ts.map +1 -1
- package/dist/mcp-slate-tool-defs.js +3 -2
- package/dist/mcp-slate-tool-defs.js.map +1 -1
- package/dist/mcp-slate-ui-copy.d.ts +10 -0
- package/dist/mcp-slate-ui-copy.d.ts.map +1 -1
- package/dist/mcp-slate-ui-copy.js +9 -0
- package/dist/mcp-slate-ui-copy.js.map +1 -1
- package/dist/mcp-slate-ui-locales/de-DE.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/de-DE.js +5 -0
- package/dist/mcp-slate-ui-locales/de-DE.js.map +1 -1
- package/dist/mcp-slate-ui-locales/es-419.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/es-419.js +5 -0
- package/dist/mcp-slate-ui-locales/es-419.js.map +1 -1
- package/dist/mcp-slate-ui-locales/es-ES.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/es-ES.js +5 -0
- package/dist/mcp-slate-ui-locales/es-ES.js.map +1 -1
- package/dist/mcp-slate-ui-locales/fr-FR.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/fr-FR.js +5 -0
- package/dist/mcp-slate-ui-locales/fr-FR.js.map +1 -1
- package/dist/mcp-slate-ui-locales/hi-IN.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/hi-IN.js +5 -0
- package/dist/mcp-slate-ui-locales/hi-IN.js.map +1 -1
- package/dist/mcp-slate-ui-locales/it-IT.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/it-IT.js +5 -0
- package/dist/mcp-slate-ui-locales/it-IT.js.map +1 -1
- package/dist/mcp-slate-ui-locales/ja-JP.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/ja-JP.js +5 -0
- package/dist/mcp-slate-ui-locales/ja-JP.js.map +1 -1
- package/dist/mcp-slate-ui-locales/ko-KR.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/ko-KR.js +5 -0
- package/dist/mcp-slate-ui-locales/ko-KR.js.map +1 -1
- package/dist/mcp-slate-ui-locales/pt-BR.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/pt-BR.js +5 -0
- package/dist/mcp-slate-ui-locales/pt-BR.js.map +1 -1
- package/dist/mcp-slate-ui-locales/zh-CN.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/zh-CN.js +5 -0
- package/dist/mcp-slate-ui-locales/zh-CN.js.map +1 -1
- package/dist/mcp-slate-ui-locales/zh-TW.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/zh-TW.js +5 -0
- package/dist/mcp-slate-ui-locales/zh-TW.js.map +1 -1
- package/dist/mcp-slate-ui-script-board.d.ts +19 -0
- package/dist/mcp-slate-ui-script-board.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-board.js +126 -0
- package/dist/mcp-slate-ui-script-board.js.map +1 -0
- package/dist/mcp-slate-ui-script-designs.d.ts +1 -1
- package/dist/mcp-slate-ui-script-designs.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-designs.js +24 -15
- package/dist/mcp-slate-ui-script-designs.js.map +1 -1
- package/dist/mcp-slate-ui-script-inspiration-collage.d.ts +5 -2
- package/dist/mcp-slate-ui-script-inspiration-collage.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-inspiration-collage.js +9 -5
- package/dist/mcp-slate-ui-script-inspiration-collage.js.map +1 -1
- package/dist/mcp-slate-ui-script-inspiration-gallery.d.ts +7 -4
- package/dist/mcp-slate-ui-script-inspiration-gallery.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-inspiration-gallery.js +46 -5
- package/dist/mcp-slate-ui-script-inspiration-gallery.js.map +1 -1
- package/dist/mcp-slate-ui-script-inspiration-grid.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-inspiration-grid.js +4 -0
- package/dist/mcp-slate-ui-script-inspiration-grid.js.map +1 -1
- package/dist/mcp-slate-ui-script-pause.d.ts +4 -0
- package/dist/mcp-slate-ui-script-pause.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-pause.js +9 -2
- package/dist/mcp-slate-ui-script-pause.js.map +1 -1
- package/dist/mcp-slate-ui-script-peek.d.ts +16 -0
- package/dist/mcp-slate-ui-script-peek.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-peek.js +89 -0
- package/dist/mcp-slate-ui-script-peek.js.map +1 -0
- package/dist/mcp-slate-ui-script-references.d.ts +4 -2
- package/dist/mcp-slate-ui-script-references.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-references.js +39 -7
- package/dist/mcp-slate-ui-script-references.js.map +1 -1
- package/dist/mcp-slate-ui-script-remote.js +2 -2
- package/dist/mcp-slate-ui-script-viewer.d.ts +7 -2
- package/dist/mcp-slate-ui-script-viewer.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-viewer.js +183 -50
- package/dist/mcp-slate-ui-script-viewer.js.map +1 -1
- package/dist/mcp-slate-ui-script.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script.js +4 -0
- package/dist/mcp-slate-ui-script.js.map +1 -1
- package/dist/mcp-slate-ui-styles-board.d.ts +7 -0
- package/dist/mcp-slate-ui-styles-board.d.ts.map +1 -0
- package/dist/mcp-slate-ui-styles-board.js +30 -0
- package/dist/mcp-slate-ui-styles-board.js.map +1 -0
- package/dist/mcp-slate-ui-styles-designs.d.ts +2 -1
- package/dist/mcp-slate-ui-styles-designs.d.ts.map +1 -1
- package/dist/mcp-slate-ui-styles-designs.js +10 -8
- package/dist/mcp-slate-ui-styles-designs.js.map +1 -1
- package/dist/mcp-slate-ui-styles-inspiration.d.ts.map +1 -1
- package/dist/mcp-slate-ui-styles-inspiration.js +13 -2
- package/dist/mcp-slate-ui-styles-inspiration.js.map +1 -1
- package/dist/mcp-slate-ui-styles-loading.d.ts +18 -0
- package/dist/mcp-slate-ui-styles-loading.d.ts.map +1 -0
- package/dist/mcp-slate-ui-styles-loading.js +37 -0
- package/dist/mcp-slate-ui-styles-loading.js.map +1 -0
- package/dist/mcp-slate-ui-styles-peek.d.ts +8 -0
- package/dist/mcp-slate-ui-styles-peek.d.ts.map +1 -0
- package/dist/mcp-slate-ui-styles-peek.js +13 -0
- package/dist/mcp-slate-ui-styles-peek.js.map +1 -0
- package/dist/mcp-slate-ui-styles.d.ts.map +1 -1
- package/dist/mcp-slate-ui-styles.js +0 -3
- package/dist/mcp-slate-ui-styles.js.map +1 -1
- package/dist/mcp-slate-ui.d.ts.map +1 -1
- package/dist/mcp-slate-ui.js +4 -1
- package/dist/mcp-slate-ui.js.map +1 -1
- package/dist/mcp-workflow-tools.js +2 -2
- package/dist/mcp-workflow-tools.js.map +1 -1
- package/dist/prototype-browsers.d.ts +10 -2
- package/dist/prototype-browsers.d.ts.map +1 -1
- package/dist/prototype-browsers.js +27 -2
- package/dist/prototype-browsers.js.map +1 -1
- package/dist/review-files-server.d.ts +8 -0
- package/dist/review-files-server.d.ts.map +1 -0
- package/dist/review-files-server.js +133 -0
- package/dist/review-files-server.js.map +1 -0
- package/dist/review-page-assets.d.ts +1 -1
- package/dist/review-page-assets.d.ts.map +1 -1
- package/dist/review-page-assets.js +3 -1
- package/dist/review-page-assets.js.map +1 -1
- package/dist/review-page.d.ts +8 -1
- package/dist/review-page.d.ts.map +1 -1
- package/dist/review-page.js +32 -21
- package/dist/review-page.js.map +1 -1
- package/dist/review-server-guard.d.ts +33 -0
- package/dist/review-server-guard.d.ts.map +1 -0
- package/dist/review-server-guard.js +65 -0
- package/dist/review-server-guard.js.map +1 -0
- package/dist/review-server.d.ts +2 -0
- package/dist/review-server.d.ts.map +1 -1
- package/dist/review-server.js +45 -74
- package/dist/review-server.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +2 -1
- package/dist/server.js.map +1 -1
- package/dist/slate-actions.d.ts +6 -7
- package/dist/slate-actions.d.ts.map +1 -1
- package/dist/slate-actions.js +6 -9
- package/dist/slate-actions.js.map +1 -1
- package/dist/slate-branch-runner.d.ts +120 -0
- package/dist/slate-branch-runner.d.ts.map +1 -0
- package/dist/slate-branch-runner.js +312 -0
- package/dist/slate-branch-runner.js.map +1 -0
- package/dist/slate-captions-local.d.ts +14 -0
- package/dist/slate-captions-local.d.ts.map +1 -0
- package/dist/slate-captions-local.js +70 -0
- package/dist/slate-captions-local.js.map +1 -0
- package/dist/slate-captions-remote.d.ts +29 -0
- package/dist/slate-captions-remote.d.ts.map +1 -0
- package/dist/slate-captions-remote.js +65 -0
- package/dist/slate-captions-remote.js.map +1 -0
- package/dist/slate-captions.d.ts +41 -0
- package/dist/slate-captions.d.ts.map +1 -0
- package/dist/slate-captions.js +112 -0
- package/dist/slate-captions.js.map +1 -0
- package/dist/slate-commit.d.ts.map +1 -1
- package/dist/slate-commit.js +8 -6
- package/dist/slate-commit.js.map +1 -1
- package/dist/slate-image-executor.d.ts +18 -3
- package/dist/slate-image-executor.d.ts.map +1 -1
- package/dist/slate-image-executor.js +18 -5
- package/dist/slate-image-executor.js.map +1 -1
- package/dist/slate-paths.d.ts +3 -1
- package/dist/slate-paths.d.ts.map +1 -1
- package/dist/slate-paths.js +8 -2
- package/dist/slate-paths.js.map +1 -1
- package/dist/slate-round-prompt.d.ts +0 -12
- package/dist/slate-round-prompt.d.ts.map +1 -1
- package/dist/slate-round-prompt.js +0 -15
- package/dist/slate-round-prompt.js.map +1 -1
- package/dist/slate-round-runner.d.ts.map +1 -1
- package/dist/slate-round-runner.js +8 -14
- package/dist/slate-round-runner.js.map +1 -1
- package/dist/slate-runner-context.d.ts +3 -0
- package/dist/slate-runner-context.d.ts.map +1 -1
- package/dist/slate-runner-context.js.map +1 -1
- package/dist/slate-runner-main.d.ts +3 -0
- package/dist/slate-runner-main.d.ts.map +1 -1
- package/dist/slate-runner-main.js +5 -1
- package/dist/slate-runner-main.js.map +1 -1
- package/dist/slate-runner-spawn.js +2 -2
- package/dist/slate-runner-spawn.js.map +1 -1
- package/dist/slate-site-references-capture.d.ts +38 -1
- package/dist/slate-site-references-capture.d.ts.map +1 -1
- package/dist/slate-site-references-capture.js +25 -7
- package/dist/slate-site-references-capture.js.map +1 -1
- package/dist/slate-site-references-client.d.ts +13 -1
- package/dist/slate-site-references-client.d.ts.map +1 -1
- package/dist/slate-site-references-client.js +39 -14
- package/dist/slate-site-references-client.js.map +1 -1
- package/dist/slate-site-references-local.d.ts +3 -0
- package/dist/slate-site-references-local.d.ts.map +1 -1
- package/dist/slate-site-references-local.js +20 -1
- package/dist/slate-site-references-local.js.map +1 -1
- package/dist/slate-site-references-suggest.d.ts +25 -2
- package/dist/slate-site-references-suggest.d.ts.map +1 -1
- package/dist/slate-site-references-suggest.js +71 -12
- package/dist/slate-site-references-suggest.js.map +1 -1
- package/dist/slate-site-references.d.ts +11 -0
- package/dist/slate-site-references.d.ts.map +1 -1
- package/dist/slate-site-references.js +42 -3
- package/dist/slate-site-references.js.map +1 -1
- package/dist/slate-view-contract.d.ts +39 -1
- package/dist/slate-view-contract.d.ts.map +1 -1
- package/dist/slate-view.d.ts.map +1 -1
- package/dist/slate-view.js +8 -0
- package/dist/slate-view.js.map +1 -1
- package/dist/slate-workspace-parse.d.ts.map +1 -1
- package/dist/slate-workspace-parse.js +35 -0
- package/dist/slate-workspace-parse.js.map +1 -1
- package/dist/slate-workspace-types.d.ts +31 -2
- package/dist/slate-workspace-types.d.ts.map +1 -1
- package/dist/workflow/adapter-12ui.js +1 -1
- package/dist/workflow/adapter-12ui.js.map +1 -1
- package/dist/workflow/adapters.d.ts.map +1 -1
- package/dist/workflow/adapters.js +3 -3
- package/dist/workflow/adapters.js.map +1 -1
- package/dist/workflow/providers.js +2 -2
- package/dist/workflow/providers.js.map +1 -1
- package/dist/workflow/routing.d.ts +8 -1
- package/dist/workflow/routing.d.ts.map +1 -1
- package/dist/workflow/routing.js +9 -2
- package/dist/workflow/routing.js.map +1 -1
- package/dist/workflow/types.d.ts +5 -2
- package/dist/workflow/types.d.ts.map +1 -1
- package/dist/workflow/types.js.map +1 -1
- package/dist/workflow-transport.d.ts.map +1 -1
- package/dist/workflow-transport.js +4 -2
- package/dist/workflow-transport.js.map +1 -1
- package/dist/workspace-draw-branch.d.ts +27 -0
- package/dist/workspace-draw-branch.d.ts.map +1 -0
- package/dist/workspace-draw-branch.js +101 -0
- package/dist/workspace-draw-branch.js.map +1 -0
- package/dist/workspace-draw-client.d.ts +27 -0
- package/dist/workspace-draw-client.d.ts.map +1 -1
- package/dist/workspace-draw-client.js +30 -0
- package/dist/workspace-draw-client.js.map +1 -1
- package/dist/workspace-draw-codex.d.ts +5 -5
- package/dist/workspace-draw-codex.d.ts.map +1 -1
- package/dist/workspace-draw-codex.js +4 -3
- package/dist/workspace-draw-codex.js.map +1 -1
- package/dist/workspace-draw-run.d.ts +19 -3
- package/dist/workspace-draw-run.d.ts.map +1 -1
- package/dist/workspace-draw-run.js +44 -4
- package/dist/workspace-draw-run.js.map +1 -1
- package/dist/workspace-draw-types.d.ts +18 -2
- package/dist/workspace-draw-types.d.ts.map +1 -1
- package/dist/workspace-draw-types.js.map +1 -1
- package/dist/workspace-runner-main.d.ts +9 -2
- package/dist/workspace-runner-main.d.ts.map +1 -1
- package/dist/workspace-runner-main.js +21 -2
- package/dist/workspace-runner-main.js.map +1 -1
- package/dist/workspace-runner-spawn.js +1 -1
- package/dist/workspace-runner-spawn.js.map +1 -1
- package/open-design.json +2 -2
- package/package.json +1 -1
- package/runtime/codex-conversion/bin/convert.mjs +1 -1
- package/runtime/codex-conversion/src/codex/caller-home.mjs +95 -0
- package/runtime/codex-conversion/src/codex/home.mjs +8 -2
- package/runtime/codex-conversion/src/images/execute.mjs +1 -1
- package/runtime/codex-conversion/src/images/native-invoke.mjs +21 -13
- package/runtime/codex-conversion/src/images/native.mjs +42 -19
- package/runtime/codex-conversion/src/run.mjs +2 -1
- package/skills/12ui-design/SKILL.md +6 -6
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
* and captured by the 12ui command line while a round waits on them. It is the Inspiration tab's gallery, large view
|
|
4
4
|
* and tray (mcp-slate-ui-script-inspiration-gallery.ts, mcp-slate-ui-script-inspiration-grid.ts) over the sites:
|
|
5
5
|
*
|
|
6
|
-
* -
|
|
7
|
-
*
|
|
6
|
+
* - As soon as the agents have chosen the sites (`view.pendingSites`), each shows as a placeholder tile, the loading
|
|
7
|
+
* surface, with its name and domain under it; its screenshot fills that tile in place when it is captured (the status
|
|
8
|
+
* poll brings each, or the tab's own short watch below). A site keeps the place it first took, so nothing already
|
|
9
|
+
* shown moves; a site that was never planned joins the end. The name and domain stay under the picture.
|
|
8
10
|
* - A click selects or deselects a site exactly like an Inspiration reference (`toggleRef`: the selection for the next
|
|
9
11
|
* round, or, while a round waits on the person, that round's references), with the same ring, check and tray.
|
|
10
12
|
* - The large view adds Open site, which opens the live page through the host.
|
|
@@ -35,6 +37,20 @@ export const SLATE_UI_REFERENCES = String.raw `
|
|
|
35
37
|
}
|
|
36
38
|
|
|
37
39
|
function siteList() { return (state.view && state.view.sites) || []; }
|
|
40
|
+
function pendingSiteList() { return (state.view && state.view.pendingSites) || []; }
|
|
41
|
+
// Every site's place in the grid, the first time it is seen (planned or landed), per workspace.
|
|
42
|
+
var siteOrder = { runDir: null, ids: [] };
|
|
43
|
+
function orderedSiteItems() {
|
|
44
|
+
var byId = {};
|
|
45
|
+
var fresh = [];
|
|
46
|
+
siteList().forEach(function (site) { byId[site.id] = siteItem(site); fresh.push(site.id); });
|
|
47
|
+
pendingSiteList().forEach(function (site) { if (!byId[site.id]) { byId[site.id] = pendingSiteItem(site); fresh.push(site.id); } });
|
|
48
|
+
if (siteOrder.runDir !== state.view.runDir) siteOrder = { runDir: state.view.runDir, ids: [] };
|
|
49
|
+
var ids = siteOrder.ids.filter(function (id) { return !!byId[id]; });
|
|
50
|
+
fresh.forEach(function (id) { if (ids.indexOf(id) < 0) ids.push(id); });
|
|
51
|
+
siteOrder.ids = ids;
|
|
52
|
+
return ids.map(function (id) { return byId[id]; });
|
|
53
|
+
}
|
|
38
54
|
function siteById(id) {
|
|
39
55
|
var sites = siteList();
|
|
40
56
|
for (var i = 0; i < sites.length; i++) if (sites[i].id === id) return sites[i];
|
|
@@ -48,17 +64,31 @@ export const SLATE_UI_REFERENCES = String.raw `
|
|
|
48
64
|
}
|
|
49
65
|
// A site as the gallery shows it.
|
|
50
66
|
function siteItem(site) {
|
|
51
|
-
var item = { id: site.id, label: site.title + " (" + siteDomain(site) + ")", title: site.title, sourceUrl: site.sourceUrl,
|
|
67
|
+
var item = { id: site.id, label: site.title + " (" + siteDomain(site) + ")", title: site.title, sourceUrl: site.sourceUrl, domain: siteDomain(site),
|
|
52
68
|
aspect: "landscape", width: 1600, height: 1000, thumbUrl: site.thumbUrl || null, imageUrl: site.imageUrl || site.thumbUrl || null, srcset: "" };
|
|
53
69
|
if (!item.thumbUrl) item.load = function (img, size) { fillImage(img, wantReference(site.id, size === "thumb" ? "thumb" : "ref", false)); };
|
|
54
70
|
return item;
|
|
55
71
|
}
|
|
56
72
|
|
|
73
|
+
// A site the agents chose whose screenshot is still being captured: the same shape, so it fills in without a move.
|
|
74
|
+
function pendingSiteItem(site) {
|
|
75
|
+
return { id: site.id, label: site.title + " (" + siteDomain(site) + ")", title: site.title, sourceUrl: site.sourceUrl, domain: siteDomain(site),
|
|
76
|
+
aspect: "landscape", width: 1600, height: 1000, thumbUrl: null, imageUrl: null, srcset: "", pending: true };
|
|
77
|
+
}
|
|
78
|
+
|
|
57
79
|
// ---- the tab ----
|
|
80
|
+
// The line at the top of a tab: the one the person's agent wrote for this brief, else the screen's own.
|
|
81
|
+
function tabCaption(tab) {
|
|
82
|
+
var written = state.view && state.view.captions && state.view.captions[tab];
|
|
83
|
+
return written || t(tab === "references" ? "referencesCaption" : "inspirationCaption");
|
|
84
|
+
}
|
|
58
85
|
function buildReferencesShell(pane, where) {
|
|
59
86
|
pane.__built = true;
|
|
60
87
|
pane.__where = where;
|
|
61
88
|
pane.classList.add("insp", "refs", where);
|
|
89
|
+
var caption = el("p", "tabcaption");
|
|
90
|
+
pane.__caption = caption;
|
|
91
|
+
pane.appendChild(caption);
|
|
62
92
|
var status = el("div", "status");
|
|
63
93
|
status.setAttribute("data-istatus", "");
|
|
64
94
|
status.setAttribute("role", "status");
|
|
@@ -68,7 +98,8 @@ export const SLATE_UI_REFERENCES = String.raw `
|
|
|
68
98
|
where: where,
|
|
69
99
|
root: function () { return where === "card" ? results : null; },
|
|
70
100
|
isSelected: function (id) { return activeSelection().indexOf(id) >= 0; },
|
|
71
|
-
onToggle: toggleRef
|
|
101
|
+
onToggle: toggleRef,
|
|
102
|
+
caption: true
|
|
72
103
|
});
|
|
73
104
|
var empty = el("div", "placeholder");
|
|
74
105
|
results.appendChild(gallery.node);
|
|
@@ -83,16 +114,17 @@ export const SLATE_UI_REFERENCES = String.raw `
|
|
|
83
114
|
function renderReferences(pane, where) {
|
|
84
115
|
if (!state.view) return;
|
|
85
116
|
if (!pane.__built) buildReferencesShell(pane, where);
|
|
117
|
+
pane.__caption.textContent = pane.__caption.title = tabCaption("references");
|
|
86
118
|
armSiteWatch();
|
|
87
|
-
var
|
|
88
|
-
var has =
|
|
119
|
+
var items = orderedSiteItems();
|
|
120
|
+
var has = items.length > 0;
|
|
89
121
|
var emptyText = has ? "" : stillFinding() ? t("referencesFinding") : t("referencesNone");
|
|
90
122
|
pane.__empty.textContent = emptyText;
|
|
91
123
|
if (emptyText && !pane.__empty.parentNode) pane.__results.insertBefore(pane.__empty, pane.__gallery.node);
|
|
92
124
|
else if (!emptyText && pane.__empty.parentNode) pane.__empty.parentNode.removeChild(pane.__empty);
|
|
93
125
|
pane.__gallery.node.classList.toggle("hidden", !has);
|
|
94
126
|
// One list per workspace: a new site only joins its end.
|
|
95
|
-
if (has) pane.__gallery.set(state.view.runDir + ":sites",
|
|
127
|
+
if (has) pane.__gallery.set(state.view.runDir + ":sites", items);
|
|
96
128
|
pane.__gallery.layout();
|
|
97
129
|
pane.__gallery.sync();
|
|
98
130
|
syncTray(pane);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-slate-ui-script-references.js","sourceRoot":"","sources":["../src/mcp-slate-ui-script-references.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"mcp-slate-ui-script-references.js","sourceRoot":"","sources":["../src/mcp-slate-ui-script-references.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiH5C,CAAC"}
|
|
@@ -45,7 +45,7 @@ export const SLATE_UI_REMOTE = String.raw `
|
|
|
45
45
|
}
|
|
46
46
|
if (action.mode === "branch") {
|
|
47
47
|
var root = ver(action.fromVersionId);
|
|
48
|
-
return "Draw more pages of " + (root ? root.label : "the design") + ".";
|
|
48
|
+
return (action.scope === "page" ? "Draw the full page of " : "Draw more pages of ") + (root ? root.label : "the design") + ".";
|
|
49
49
|
}
|
|
50
50
|
if (action.mode === "like") {
|
|
51
51
|
var from = ver(action.fromVersionId);
|
|
@@ -64,7 +64,7 @@ export const SLATE_UI_REMOTE = String.raw `
|
|
|
64
64
|
function remoteChoose(version, label) {
|
|
65
65
|
var handoffId = uuid4();
|
|
66
66
|
return callTool(TOOLS.handoff, {
|
|
67
|
-
runDir: state.view.runDir, handoffId: handoffId, kind: "convert", versionId: version.versionId, options: { engine: "
|
|
67
|
+
runDir: state.view.runDir, handoffId: handoffId, kind: "convert", versionId: version.versionId, options: { engine: "service", output: "html" }
|
|
68
68
|
}).then(function (result) {
|
|
69
69
|
var sc = result.structuredContent || {};
|
|
70
70
|
if (sc.view) applyView(sc.view, true);
|
|
@@ -8,8 +8,13 @@
|
|
|
8
8
|
* - Edit: draw on the design (the scribble layer, mcp-slate-ui-script-scribble.ts; the view fits the design while
|
|
9
9
|
* drawing) and/or type a change, then Enter. The edit runs at once and the view closes onto the Designs tab, where
|
|
10
10
|
* the new version is already a loading tile next to its source.
|
|
11
|
-
* - Branch:
|
|
12
|
-
*
|
|
11
|
+
* - Branch: Full page or More pages (page names optional, comma separated), then Enter. It runs the branch pipeline
|
|
12
|
+
* on this design: the full page continued below the fold, or other pages of the same product; each screen lands on
|
|
13
|
+
* the branch's board in the Designs tab (mcp-slate-ui-script-board.ts).
|
|
14
|
+
*
|
|
15
|
+
* Opened from a branch's board, the view shows the screen's whole column as the continuous page it is (a web page flush,
|
|
16
|
+
* app states framed one by one), at the port's width, scrolling down; left and right step across the board's columns.
|
|
17
|
+
* The actions act on the screen at the middle of the port, whose code the bar names as it scrolls.
|
|
13
18
|
*
|
|
14
19
|
* Keys: Escape leaves the bar, then the view; left and right step; plus, minus, 0 (fit) and 1 (100 percent) zoom.
|
|
15
20
|
* In the workspace the view covers the frame; in a card whose host has no fullscreen it opens in the card instead.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-slate-ui-script-viewer.d.ts","sourceRoot":"","sources":["../src/mcp-slate-ui-script-viewer.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"mcp-slate-ui-script-viewer.d.ts","sourceRoot":"","sources":["../src/mcp-slate-ui-script-viewer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,eAAe,QAmgB3B,CAAC"}
|
|
@@ -8,31 +8,37 @@
|
|
|
8
8
|
* - Edit: draw on the design (the scribble layer, mcp-slate-ui-script-scribble.ts; the view fits the design while
|
|
9
9
|
* drawing) and/or type a change, then Enter. The edit runs at once and the view closes onto the Designs tab, where
|
|
10
10
|
* the new version is already a loading tile next to its source.
|
|
11
|
-
* - Branch:
|
|
12
|
-
*
|
|
11
|
+
* - Branch: Full page or More pages (page names optional, comma separated), then Enter. It runs the branch pipeline
|
|
12
|
+
* on this design: the full page continued below the fold, or other pages of the same product; each screen lands on
|
|
13
|
+
* the branch's board in the Designs tab (mcp-slate-ui-script-board.ts).
|
|
14
|
+
*
|
|
15
|
+
* Opened from a branch's board, the view shows the screen's whole column as the continuous page it is (a web page flush,
|
|
16
|
+
* app states framed one by one), at the port's width, scrolling down; left and right step across the board's columns.
|
|
17
|
+
* The actions act on the screen at the middle of the port, whose code the bar names as it scrolls.
|
|
13
18
|
*
|
|
14
19
|
* Keys: Escape leaves the bar, then the view; left and right step; plus, minus, 0 (fit) and 1 (100 percent) zoom.
|
|
15
20
|
* In the workspace the view covers the frame; in a card whose host has no fullscreen it opens in the card instead.
|
|
16
21
|
*/
|
|
17
22
|
export const SLATE_UI_VIEWER = String.raw `
|
|
18
23
|
var ZOOM_MAX = 8;
|
|
19
|
-
var
|
|
20
|
-
var BRANCH_MAX_PAGES = 8;
|
|
24
|
+
var BRANCH_MAX_PAGES = 4;
|
|
21
25
|
var PAGE_NAME_CHARS = 60;
|
|
22
26
|
|
|
23
27
|
// Open the view on a version, optionally straight onto its edit or branch bar. From the card it asks for the workspace.
|
|
24
|
-
function openViewer(versionId, mode) {
|
|
28
|
+
function openViewer(versionId, mode, board) {
|
|
25
29
|
var v = ver(versionId);
|
|
26
30
|
if (!v) return;
|
|
27
|
-
state.lv = { versionId: versionId, mode: mode || null, scale: 1, x: 0, y: 0, fitted: true, prompt: "", pages: "", strokes: [], current: null, committing: false, error: "", id: uuid4(), els: {} };
|
|
31
|
+
state.lv = { scrollY: state.lv ? state.lv.scrollY : window.scrollY, versionId: versionId, mode: mode || null, board: board || null, focus: true, anchor: null, layout: null, scale: 1, x: 0, y: 0, fitted: true, prompt: "", pages: "", strokes: [], current: null, committing: false, error: "", id: uuid4(), els: {} };
|
|
28
32
|
if (!isFullscreen() && canFullscreen()) { requestMode("fullscreen"); }
|
|
29
33
|
renderAll();
|
|
30
34
|
}
|
|
31
35
|
function closeViewer() {
|
|
32
36
|
if (!state.lv || state.lv.committing) return;
|
|
37
|
+
var y = state.lv.scrollY;
|
|
33
38
|
state.lv = null;
|
|
34
39
|
viewerHost().textContent = "";
|
|
35
40
|
renderAll();
|
|
41
|
+
window.scrollTo(0, y);
|
|
36
42
|
}
|
|
37
43
|
function viewerHost() {
|
|
38
44
|
if (isFullscreen()) { if (!stageBuilt) buildStageSkeleton(); return stageEls.viewer; }
|
|
@@ -40,9 +46,62 @@ export const SLATE_UI_VIEWER = String.raw `
|
|
|
40
46
|
}
|
|
41
47
|
|
|
42
48
|
function lvVersion() { return state.lv ? ver(state.lv.versionId) : null; }
|
|
49
|
+
|
|
50
|
+
function lvColumn() {
|
|
51
|
+
var lv = state.lv;
|
|
52
|
+
return lv && lv.board && !lv.mode ? boardColumn(lv.board.from, lv.board.column) : null;
|
|
53
|
+
}
|
|
54
|
+
function lvColumns() {
|
|
55
|
+
var lv = state.lv;
|
|
56
|
+
return lv && lv.board ? boardColumns(lv.board.from).filter(function (col) { return col.screens.some(boardScreenVersion); }) : [];
|
|
57
|
+
}
|
|
58
|
+
function columnLayout(col) {
|
|
59
|
+
var first = col.screens.map(boardScreenVersion).filter(sized)[0];
|
|
60
|
+
var w = first ? first.width : 1536;
|
|
61
|
+
var gap = col.flow === "states" ? Math.round(w * 0.03) : 0;
|
|
62
|
+
var bottom = 0;
|
|
63
|
+
var shots = col.screens.filter(function (s) { return boardScreenVersion(s) || !s.c || drawing(s.c); }).map(function (s, i) {
|
|
64
|
+
var v = boardScreenVersion(s);
|
|
65
|
+
var h = Math.round(w / (sized(v) ? v.width / v.height : boardRatio(state.lv.board.from)));
|
|
66
|
+
var shot = { s: s, v: v, top: bottom + (i ? gap : 0), height: h };
|
|
67
|
+
bottom = shot.top + h;
|
|
68
|
+
return shot;
|
|
69
|
+
});
|
|
70
|
+
return { w: w, h: bottom, flow: col.flow, shots: shots };
|
|
71
|
+
}
|
|
72
|
+
function stageSize() {
|
|
73
|
+
var lv = state.lv;
|
|
74
|
+
if (lv && lv.layout && !lv.mode) return { w: lv.layout.w, h: lv.layout.h };
|
|
75
|
+
var v = lvVersion();
|
|
76
|
+
return v ? { w: v.width, h: v.height } : null;
|
|
77
|
+
}
|
|
78
|
+
function scrolls() { var lv = state.lv; return !!(lv && lv.layout && !lv.mode && lv.layout.shots.length > 1); }
|
|
79
|
+
function followScroll() {
|
|
80
|
+
var lv = state.lv;
|
|
81
|
+
var size = portSize();
|
|
82
|
+
if (!lv || !lv.layout || lv.mode || !size) return;
|
|
83
|
+
var mid = (size.h / 2 - lv.y) / lv.scale;
|
|
84
|
+
var shown = lv.layout.shots.filter(function (sh) { return sh.v; });
|
|
85
|
+
var at = shown.filter(function (sh) { return sh.top <= mid; }).pop() || shown[0];
|
|
86
|
+
if (at && at.v.versionId !== lv.versionId) { lv.versionId = at.v.versionId; syncViewerTarget(); }
|
|
87
|
+
}
|
|
88
|
+
|
|
43
89
|
function stepViewer(delta) {
|
|
44
90
|
var lv = state.lv;
|
|
45
91
|
if (!lv || lv.mode) return;
|
|
92
|
+
if (lv.board) {
|
|
93
|
+
var cols = lvColumns();
|
|
94
|
+
var col = cols[cols.findIndex(function (x) { return x.index === lv.board.column; }) + delta];
|
|
95
|
+
if (!col) return;
|
|
96
|
+
lv.board = { from: lv.board.from, column: col.index };
|
|
97
|
+
lv.versionId = col.screens.map(boardScreenVersion).filter(Boolean)[0].versionId;
|
|
98
|
+
lv.fitted = true;
|
|
99
|
+
lv.anchor = 0;
|
|
100
|
+
lv.error = "";
|
|
101
|
+
lv.built = null;
|
|
102
|
+
renderViewer();
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
46
105
|
var order = viewerOrder();
|
|
47
106
|
var at = order.findIndex(function (x) { return x.versionId === lv.versionId; });
|
|
48
107
|
var next = order[at + delta];
|
|
@@ -63,8 +122,12 @@ export const SLATE_UI_VIEWER = String.raw `
|
|
|
63
122
|
var v = lvVersion();
|
|
64
123
|
if (!v) { state.lv = null; host.textContent = ""; return; }
|
|
65
124
|
var c = cand(v.candidateId);
|
|
66
|
-
var
|
|
67
|
-
|
|
125
|
+
var col = lvColumn();
|
|
126
|
+
lv.layout = col ? columnLayout(col) : null;
|
|
127
|
+
var sig = lv.layout
|
|
128
|
+
? JSON.stringify([lv.board, lv.layout.flow, lv.layout.shots.map(function (sh) { return sh.v ? sh.v.sha256 : sh.height; }), lvColumns().length])
|
|
129
|
+
: JSON.stringify([v.versionId, v.sha256, lv.mode, lv.scope, samePick(v), state.busy, v.editable, localImage().ready, moreBusy(), viewerOrder().map(function (x) { return x.versionId; })]);
|
|
130
|
+
if (lv.built === sig && host.firstChild) { syncViewerTarget(); syncViewerForm(); return; }
|
|
68
131
|
lv.built = sig;
|
|
69
132
|
host.textContent = "";
|
|
70
133
|
var box = el("div", "lv");
|
|
@@ -73,17 +136,13 @@ export const SLATE_UI_VIEWER = String.raw `
|
|
|
73
136
|
box.setAttribute("aria-label", tileName(c, v));
|
|
74
137
|
|
|
75
138
|
var bar = el("div", "lvbar");
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
var from = parentLabel(v);
|
|
79
|
-
if (from) tag.appendChild(el("span", "dfrom", t("fromLabel", { label: from })));
|
|
80
|
-
var page = pageName(c);
|
|
81
|
-
if (page) tag.appendChild(el("span", "dpage", page));
|
|
82
|
-
if (samePick(v)) { var chosen = el("span", "dchosen inline"); chosen.innerHTML = svgIcon(ICON.choose, 13); chosen.appendChild(el("span", "sr", t("chosen"))); tag.appendChild(chosen); }
|
|
83
|
-
bar.appendChild(tag);
|
|
139
|
+
lv.els.tag = viewerTag(v);
|
|
140
|
+
bar.appendChild(lv.els.tag);
|
|
84
141
|
bar.appendChild(el("span", "spacer"));
|
|
85
|
-
var order = viewerOrder();
|
|
86
|
-
var at =
|
|
142
|
+
var order = lv.board ? lvColumns() : viewerOrder();
|
|
143
|
+
var at = lv.board
|
|
144
|
+
? order.findIndex(function (x) { return x.index === lv.board.column; })
|
|
145
|
+
: order.findIndex(function (x) { return x.versionId === v.versionId; });
|
|
87
146
|
var prev = iconAction(t("previous"), ICON.left, function () { stepViewer(-1); });
|
|
88
147
|
prev.disabled = at <= 0 || !!lv.mode;
|
|
89
148
|
var next = iconAction(t("next"), ICON.right, function () { stepViewer(1); });
|
|
@@ -95,17 +154,30 @@ export const SLATE_UI_VIEWER = String.raw `
|
|
|
95
154
|
box.appendChild(bar);
|
|
96
155
|
|
|
97
156
|
var port = el("div", "lvport" + (lv.mode === "edit" ? " drawing" : ""));
|
|
98
|
-
|
|
157
|
+
var size = stageSize();
|
|
158
|
+
port.style.setProperty("--ar", String(lv.layout ? lv.layout.w / lv.layout.shots[0].height : v.width / v.height));
|
|
99
159
|
var stageBox = el("div", "lvstage");
|
|
100
|
-
stageBox.style.width =
|
|
101
|
-
stageBox.style.height =
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
160
|
+
stageBox.style.width = size.w + "px";
|
|
161
|
+
stageBox.style.height = size.h + "px";
|
|
162
|
+
if (lv.layout) {
|
|
163
|
+
stageBox.classList.add("column");
|
|
164
|
+
stageBox.setAttribute("data-flow", lv.layout.flow);
|
|
165
|
+
lv.layout.shots.forEach(function (sh) {
|
|
166
|
+
var part = el("div", "lvshot" + (sh.v ? "" : " loading shimmer"));
|
|
167
|
+
part.style.top = sh.top + "px";
|
|
168
|
+
part.style.height = sh.height + "px";
|
|
169
|
+
if (sh.v) part.appendChild(viewerImage(sh.v, sh.s.c ? tileName(sh.s.c, sh.v) : t("versionName", { label: sh.v.label })));
|
|
170
|
+
else part.appendChild(el("span", "spin"));
|
|
171
|
+
stageBox.appendChild(part);
|
|
172
|
+
});
|
|
173
|
+
if (lv.focus) {
|
|
174
|
+
var shot = lv.layout.shots.filter(function (sh) { return sh.v && sh.v.versionId === lv.versionId; })[0];
|
|
175
|
+
lv.anchor = shot ? shot.top : 0;
|
|
176
|
+
lv.focus = false;
|
|
177
|
+
}
|
|
178
|
+
} else {
|
|
179
|
+
stageBox.appendChild(viewerImage(v, tileName(c, v)));
|
|
180
|
+
}
|
|
109
181
|
port.appendChild(stageBox);
|
|
110
182
|
if (lv.mode === "edit") scribbleAttach(stageBox, lv);
|
|
111
183
|
var zoom = el("div", "lvzoom");
|
|
@@ -125,7 +197,8 @@ export const SLATE_UI_VIEWER = String.raw `
|
|
|
125
197
|
var foot = el("div", "lvfoot");
|
|
126
198
|
if (lv.mode === "edit") foot.appendChild(editForm(v));
|
|
127
199
|
else if (lv.mode === "branch") foot.appendChild(branchForm(v));
|
|
128
|
-
else
|
|
200
|
+
else { lv.els.acts = viewerActions(v); foot.appendChild(lv.els.acts); }
|
|
201
|
+
lv.els.target = targetSig(v);
|
|
129
202
|
lv.els.alert = el("p", "alert");
|
|
130
203
|
lv.els.alert.setAttribute("role", "alert");
|
|
131
204
|
foot.appendChild(lv.els.alert);
|
|
@@ -137,6 +210,40 @@ export const SLATE_UI_VIEWER = String.raw `
|
|
|
137
210
|
if (first && first.focus && lv.mode) first.focus();
|
|
138
211
|
}
|
|
139
212
|
|
|
213
|
+
function viewerImage(v, alt) {
|
|
214
|
+
var img = el("img", "lvimg empty");
|
|
215
|
+
img.alt = alt;
|
|
216
|
+
img.setAttribute("draggable", "false");
|
|
217
|
+
var cached = state.fulls[imageKey(v, "full")] || state.thumbs[imageKey(v, "thumb")];
|
|
218
|
+
if (cached) { img.src = cached; img.classList.remove("empty"); }
|
|
219
|
+
bindImage(img, v, "full", true);
|
|
220
|
+
return img;
|
|
221
|
+
}
|
|
222
|
+
function viewerTag(v) {
|
|
223
|
+
var tag = el("span", "dtag");
|
|
224
|
+
tag.appendChild(el("b", "code", v.label));
|
|
225
|
+
var from = parentLabel(v);
|
|
226
|
+
if (from) tag.appendChild(el("span", "dfrom", t("fromLabel", { label: from })));
|
|
227
|
+
var c = cand(v.candidateId);
|
|
228
|
+
var page = c ? pageName(c) : "";
|
|
229
|
+
if (page) tag.appendChild(el("span", "dpage", page));
|
|
230
|
+
if (samePick(v)) { var chosen = el("span", "dchosen inline"); chosen.innerHTML = svgIcon(ICON.choose, 13); chosen.appendChild(el("span", "sr", t("chosen"))); tag.appendChild(chosen); }
|
|
231
|
+
return tag;
|
|
232
|
+
}
|
|
233
|
+
function targetSig(v) { return JSON.stringify([v.versionId, samePick(v), state.busy, v.editable, localImage().ready]); }
|
|
234
|
+
function syncViewerTarget() {
|
|
235
|
+
var lv = state.lv;
|
|
236
|
+
var v = lvVersion();
|
|
237
|
+
if (!lv || !v || lv.mode || !lv.els.tag || !lv.els.acts || lv.els.target === targetSig(v)) return;
|
|
238
|
+
lv.els.target = targetSig(v);
|
|
239
|
+
var tag = viewerTag(v);
|
|
240
|
+
lv.els.tag.replaceWith(tag);
|
|
241
|
+
lv.els.tag = tag;
|
|
242
|
+
var acts = viewerActions(v);
|
|
243
|
+
lv.els.acts.replaceWith(acts);
|
|
244
|
+
lv.els.acts = acts;
|
|
245
|
+
}
|
|
246
|
+
|
|
140
247
|
function viewerActions(v) {
|
|
141
248
|
var row = el("div", "lvacts");
|
|
142
249
|
row.setAttribute("role", "toolbar");
|
|
@@ -162,6 +269,7 @@ export const SLATE_UI_VIEWER = String.raw `
|
|
|
162
269
|
lv.current = null;
|
|
163
270
|
lv.fitted = true;
|
|
164
271
|
lv.built = null;
|
|
272
|
+
if (!mode && lv.board) lv.focus = true;
|
|
165
273
|
renderViewer();
|
|
166
274
|
}
|
|
167
275
|
|
|
@@ -199,25 +307,44 @@ export const SLATE_UI_VIEWER = String.raw `
|
|
|
199
307
|
form.addEventListener("submit", function (e) { e.preventDefault(); commitViewer(); });
|
|
200
308
|
return form;
|
|
201
309
|
}
|
|
202
|
-
// ---- branch:
|
|
310
|
+
// ---- branch: the full page, or more pages (names optional) ----
|
|
203
311
|
function branchPages(text) {
|
|
204
312
|
return String(text || "").split(/[,\n;]/).map(function (p) { return p.replace(/\s+/g, " ").trim().slice(0, PAGE_NAME_CHARS); }).filter(Boolean).slice(0, BRANCH_MAX_PAGES);
|
|
205
313
|
}
|
|
314
|
+
function branchScope() { var lv = state.lv; return lv && lv.scope === "site" ? "site" : "page"; }
|
|
206
315
|
function branchForm(v) {
|
|
207
316
|
var lv = state.lv;
|
|
208
317
|
var form = el("form", "lvform");
|
|
209
318
|
form.setAttribute("aria-label", t("branch"));
|
|
210
319
|
form.appendChild(modeMark(ICON.branch));
|
|
211
|
-
var
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
320
|
+
var seg = el("div", "seg lvscope");
|
|
321
|
+
seg.setAttribute("role", "radiogroup");
|
|
322
|
+
seg.setAttribute("aria-label", t("branch"));
|
|
323
|
+
[["page", t("fullPage")], ["site", t("morePages")]].forEach(function (choice) {
|
|
324
|
+
var b = button(choice[1], "segbtn", function () {
|
|
325
|
+
if (branchScope() === choice[0]) return;
|
|
326
|
+
lv.scope = choice[0];
|
|
327
|
+
renderViewer();
|
|
328
|
+
});
|
|
329
|
+
b.setAttribute("role", "radio");
|
|
330
|
+
b.setAttribute("aria-checked", branchScope() === choice[0] ? "true" : "false");
|
|
331
|
+
seg.appendChild(b);
|
|
332
|
+
});
|
|
333
|
+
form.appendChild(seg);
|
|
334
|
+
if (branchScope() === "site") {
|
|
335
|
+
var input = el("input");
|
|
336
|
+
input.type = "text";
|
|
337
|
+
input.className = "lvinput";
|
|
338
|
+
input.placeholder = t("branchPages");
|
|
339
|
+
input.setAttribute("aria-label", t("branchPages"));
|
|
340
|
+
input.value = lv.pages;
|
|
341
|
+
input.addEventListener("input", function () { lv.pages = input.value; });
|
|
342
|
+
enterApplies(input);
|
|
343
|
+
form.appendChild(input);
|
|
344
|
+
} else {
|
|
345
|
+
form.appendChild(el("span", "spacer"));
|
|
346
|
+
}
|
|
219
347
|
lv.els.apply = iconAction(t("branch"), ICON.send, function () { commitViewer(); }, "go");
|
|
220
|
-
form.appendChild(input);
|
|
221
348
|
form.appendChild(lv.els.apply);
|
|
222
349
|
form.appendChild(iconAction(t("cancel"), ICON.close, function () { setViewerMode(null); }));
|
|
223
350
|
form.addEventListener("submit", function (e) { e.preventDefault(); commitViewer(); });
|
|
@@ -258,9 +385,9 @@ export const SLATE_UI_VIEWER = String.raw `
|
|
|
258
385
|
var d = { versionId: v.versionId, prompt: lv.prompt, strokes: lv.strokes };
|
|
259
386
|
work = editActionFor(d, v).then(function (action) { return runAction(action, lv.id); });
|
|
260
387
|
} else {
|
|
261
|
-
var
|
|
262
|
-
var
|
|
263
|
-
if (pages.length) action.pages = pages;
|
|
388
|
+
var action = { kind: "round", mode: "branch", fromVersionId: v.versionId, scope: branchScope() };
|
|
389
|
+
var pages = action.scope === "site" ? branchPages(lv.pages) : [];
|
|
390
|
+
if (pages.length) action.pages = pages;
|
|
264
391
|
work = runAction(action, lv.id);
|
|
265
392
|
}
|
|
266
393
|
work.then(function () {
|
|
@@ -284,18 +411,19 @@ export const SLATE_UI_VIEWER = String.raw `
|
|
|
284
411
|
return r && r.width > 0 && r.height > 0 ? { w: r.width, h: r.height } : null;
|
|
285
412
|
}
|
|
286
413
|
function fitScale() {
|
|
287
|
-
var
|
|
414
|
+
var stage = stageSize();
|
|
288
415
|
var size = portSize();
|
|
289
|
-
if (!
|
|
290
|
-
return Math.min(size.w /
|
|
416
|
+
if (!stage || !size) return 1;
|
|
417
|
+
if (scrolls()) return Math.min(size.w / stage.w, 1);
|
|
418
|
+
return Math.min(size.w / stage.w, size.h / stage.h);
|
|
291
419
|
}
|
|
292
420
|
function clampPan() {
|
|
293
421
|
var lv = state.lv;
|
|
294
|
-
var
|
|
422
|
+
var stage = stageSize();
|
|
295
423
|
var size = portSize();
|
|
296
|
-
if (!
|
|
297
|
-
var w =
|
|
298
|
-
var h =
|
|
424
|
+
if (!stage || !size) return;
|
|
425
|
+
var w = stage.w * lv.scale;
|
|
426
|
+
var h = stage.h * lv.scale;
|
|
299
427
|
// Smaller than the port: centred on that axis. Larger: no gap at either edge.
|
|
300
428
|
lv.x = w <= size.w ? (size.w - w) / 2 : Math.min(0, Math.max(size.w - w, lv.x));
|
|
301
429
|
lv.y = h <= size.h ? (size.h - h) / 2 : Math.min(0, Math.max(size.h - h, lv.y));
|
|
@@ -304,9 +432,11 @@ export const SLATE_UI_VIEWER = String.raw `
|
|
|
304
432
|
var lv = state.lv;
|
|
305
433
|
if (!lv || !lv.els.stage) return;
|
|
306
434
|
if (lv.fitted) lv.scale = fitScale();
|
|
435
|
+
if (lv.anchor !== null && lv.layout && !lv.mode) lv.y = -lv.anchor * lv.scale;
|
|
307
436
|
clampPan();
|
|
308
437
|
lv.els.stage.style.transform = "translate(" + lv.x + "px, " + lv.y + "px) scale(" + lv.scale + ")";
|
|
309
438
|
if (lv.els.level) lv.els.level.textContent = Math.round(lv.scale * 100) + "%";
|
|
439
|
+
followScroll();
|
|
310
440
|
}
|
|
311
441
|
function fitViewer() { var lv = state.lv; if (!lv) return; lv.fitted = true; applyZoom(); }
|
|
312
442
|
function zoomAround(next, cx, cy) {
|
|
@@ -322,6 +452,7 @@ export const SLATE_UI_VIEWER = String.raw `
|
|
|
322
452
|
lv.y = py - (py - lv.y) * (scale / lv.scale);
|
|
323
453
|
lv.scale = scale;
|
|
324
454
|
lv.fitted = false;
|
|
455
|
+
lv.anchor = null;
|
|
325
456
|
applyZoom();
|
|
326
457
|
}
|
|
327
458
|
function zoomBy(factor, cx, cy) { var lv = state.lv; if (lv) zoomAround(lv.scale * factor, cx, cy); }
|
|
@@ -339,7 +470,8 @@ export const SLATE_UI_VIEWER = String.raw `
|
|
|
339
470
|
var dy = e.deltaMode === 1 ? e.deltaY * 16 : e.deltaY;
|
|
340
471
|
// A trackpad pinch arrives as a wheel with ctrlKey; vertical zooms around the pointer; horizontal and Shift pan.
|
|
341
472
|
if (e.ctrlKey) { zoomBy(Math.exp(-dy * 0.01), p.x, p.y); return; }
|
|
342
|
-
if (e.shiftKey
|
|
473
|
+
if (scrolls() && !e.shiftKey && Math.abs(dy) >= Math.abs(dx)) { lv.anchor = null; lv.y -= dy; applyZoom(); return; }
|
|
474
|
+
if (e.shiftKey || Math.abs(dx) > Math.abs(dy)) { lv.anchor = null; lv.x -= e.shiftKey && !dx ? 0 : dx; lv.y -= e.shiftKey ? dy : 0; lv.fitted = false; applyZoom(); return; }
|
|
343
475
|
zoomBy(Math.exp(-dy * 0.002), p.x, p.y);
|
|
344
476
|
}, { passive: false });
|
|
345
477
|
port.addEventListener("dblclick", function (e) {
|
|
@@ -375,6 +507,7 @@ export const SLATE_UI_VIEWER = String.raw `
|
|
|
375
507
|
}
|
|
376
508
|
lv.x += p.x - last.x;
|
|
377
509
|
lv.y += p.y - last.y;
|
|
510
|
+
lv.anchor = null;
|
|
378
511
|
lv.fitted = false;
|
|
379
512
|
applyZoom();
|
|
380
513
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-slate-ui-script-viewer.js","sourceRoot":"","sources":["../src/mcp-slate-ui-script-viewer.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"mcp-slate-ui-script-viewer.js","sourceRoot":"","sources":["../src/mcp-slate-ui-script-viewer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmgBxC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-slate-ui-script.d.ts","sourceRoot":"","sources":["../src/mcp-slate-ui-script.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp-slate-ui-script.d.ts","sourceRoot":"","sources":["../src/mcp-slate-ui-script.ts"],"names":[],"mappings":"AAsBA;;;;;;;;;;;GAWG;AAEH;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AA2B3D;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,QAAQ,aAAa,KAAG,MAyB/C,CAAC;AAEb,eAAO,MAAM,eAAe,QAA8B,CAAC"}
|
|
@@ -3,12 +3,14 @@ import { SLATE_UI_LOCALES } from './mcp-slate-ui-locales/index.js';
|
|
|
3
3
|
import { SLATE_EDIT_PROMPT_MAX_BYTES, SLATE_UI_TOOLS } from './slate-view-contract.js';
|
|
4
4
|
import { SLATE_UI_BRIDGE } from './mcp-slate-ui-script-bridge.js';
|
|
5
5
|
import { SLATE_UI_BROWSER } from './mcp-slate-ui-script-browser.js';
|
|
6
|
+
import { SLATE_UI_BOARD } from './mcp-slate-ui-script-board.js';
|
|
6
7
|
import { SLATE_UI_DESIGNS } from './mcp-slate-ui-script-designs.js';
|
|
7
8
|
import { SLATE_UI_EDIT } from './mcp-slate-ui-script-edit.js';
|
|
8
9
|
import { SLATE_UI_INLINE } from './mcp-slate-ui-script-inline.js';
|
|
9
10
|
import { SLATE_UI_INSPIRATION } from './mcp-slate-ui-script-inspiration.js';
|
|
10
11
|
import { buildSlateUiL10n } from './mcp-slate-ui-script-l10n.js';
|
|
11
12
|
import { SLATE_UI_MORE } from './mcp-slate-ui-script-more.js';
|
|
13
|
+
import { SLATE_UI_PEEK } from './mcp-slate-ui-script-peek.js';
|
|
12
14
|
import { SLATE_UI_NO_PAUSE, SLATE_UI_PAUSE } from './mcp-slate-ui-script-pause.js';
|
|
13
15
|
import { SLATE_UI_REFERENCES } from './mcp-slate-ui-script-references.js';
|
|
14
16
|
import { SLATE_UI_REMOTE } from './mcp-slate-ui-script-remote.js';
|
|
@@ -59,6 +61,7 @@ export const buildSlateUiScript = (target) => [
|
|
|
59
61
|
SLATE_UI_REFERENCES,
|
|
60
62
|
target === 'remote' ? SLATE_UI_PAUSE : SLATE_UI_NO_PAUSE,
|
|
61
63
|
SLATE_UI_DESIGNS,
|
|
64
|
+
SLATE_UI_BOARD,
|
|
62
65
|
SLATE_UI_VIEWER,
|
|
63
66
|
SLATE_UI_STAGE,
|
|
64
67
|
SLATE_UI_EDIT.replace('__EDIT_PROMPT_MAX_BYTES__', () => JSON.stringify(SLATE_EDIT_PROMPT_MAX_BYTES)),
|
|
@@ -66,6 +69,7 @@ export const buildSlateUiScript = (target) => [
|
|
|
66
69
|
SLATE_UI_SCRIBBLE,
|
|
67
70
|
SLATE_UI_REMOTE,
|
|
68
71
|
SLATE_UI_BROWSER,
|
|
72
|
+
SLATE_UI_PEEK,
|
|
69
73
|
HANDSHAKE,
|
|
70
74
|
'})();',
|
|
71
75
|
].join('\n');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-slate-ui-script.js","sourceRoot":"","sources":["../src/mcp-slate-ui-script.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcp-slate-ui-script.js","sourceRoot":"","sources":["../src/mcp-slate-ui-script.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A branch's board (mcp-slate-ui-script-board.ts) and its column in the large view. Columns run across and scroll when
|
|
3
|
+
* the board is wider than the frame: about two at the Codex inline width, four at 1440 px, one and a bit on a phone. A
|
|
4
|
+
* web page's column is one frame with its screens flush (no gap, no seam); an app's column frames each state on its own.
|
|
5
|
+
*/
|
|
6
|
+
export declare const SLATE_UI_BOARD_STYLES: string;
|
|
7
|
+
//# sourceMappingURL=mcp-slate-ui-styles-board.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-slate-ui-styles-board.d.ts","sourceRoot":"","sources":["../src/mcp-slate-ui-styles-board.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,QAuBjC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A branch's board (mcp-slate-ui-script-board.ts) and its column in the large view. Columns run across and scroll when
|
|
3
|
+
* the board is wider than the frame: about two at the Codex inline width, four at 1440 px, one and a bit on a phone. A
|
|
4
|
+
* web page's column is one frame with its screens flush (no gap, no seam); an app's column frames each state on its own.
|
|
5
|
+
*/
|
|
6
|
+
export const SLATE_UI_BOARD_STYLES = String.raw `
|
|
7
|
+
.dboard { display: flex; align-items: flex-start; gap: 20px; min-width: 0; overflow-x: auto; padding: 2px 2px 10px; scrollbar-width: thin; }
|
|
8
|
+
.bcol { flex: none; width: max(min(340px, 44%), min(260px, 80%)); min-width: 0; }
|
|
9
|
+
.bchead { display: flex; align-items: center; gap: 6px; min-width: 0; min-height: 24px; margin-bottom: 8px; }
|
|
10
|
+
.bctitle { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; font-weight: 600; }
|
|
11
|
+
.bctitle.waiting { width: 45%; height: 12px; border-radius: 6px; background: var(--fill); }
|
|
12
|
+
.bstack { position: relative; display: flex; flex-direction: column; border-radius: var(--radius); overflow: hidden; background: var(--fill); }
|
|
13
|
+
.bstack::after, .bcol[data-flow="states"] .bshot::after { content: ""; position: absolute; inset: 0; border-radius: inherit; box-shadow: inset 0 0 0 1px var(--border2); pointer-events: none; }
|
|
14
|
+
.bcol[data-flow="states"] .bstack { gap: 10px; border-radius: 0; overflow: visible; background: none; }
|
|
15
|
+
.bcol[data-flow="states"] .bstack::after { display: none; }
|
|
16
|
+
.bcol[data-flow="states"] .bshot { border-radius: var(--radius); overflow: hidden; background: var(--fill); }
|
|
17
|
+
|
|
18
|
+
.bshot { position: relative; min-width: 0; }
|
|
19
|
+
button.bface { position: relative; display: block; width: 100%; aspect-ratio: var(--ar, 1.5); padding: 0; border: 0; border-radius: 0; background: var(--fill); overflow: hidden; cursor: zoom-in; }
|
|
20
|
+
button.bface:disabled { opacity: 1; cursor: default; }
|
|
21
|
+
.bface .thumb { display: block; width: 100%; height: 100%; object-fit: cover; }
|
|
22
|
+
.bface .thumb:not([src]) { visibility: hidden; }
|
|
23
|
+
.bshot.chosen::before { content: ""; position: absolute; inset: 0; z-index: 1; box-shadow: inset 0 0 0 3px var(--ring); pointer-events: none; }
|
|
24
|
+
.bshot:hover .dpick, .bshot:focus-within .dpick { opacity: 1; }
|
|
25
|
+
.lvstage.column { box-shadow: none; }
|
|
26
|
+
.lvstage.column[data-flow="page"] { box-shadow: var(--elev-lg); }
|
|
27
|
+
.lvshot { position: absolute; left: 0; width: 100%; overflow: hidden; background: var(--bg); }
|
|
28
|
+
.lvstage.column[data-flow="states"] .lvshot { box-shadow: var(--elev-lg); }
|
|
29
|
+
`;
|
|
30
|
+
//# sourceMappingURL=mcp-slate-ui-styles-board.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-slate-ui-styles-board.js","sourceRoot":"","sources":["../src/mcp-slate-ui-styles-board.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;CAuB9C,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The Designs tab and the large view. Tiles are large and keep the frame's shape (`--ar` per tile); a grid's columns
|
|
3
3
|
* are no narrower than `--tile` times the square root of its ratio (`--shape`), so a 3:2 design is about 160 px wide on
|
|
4
|
-
* a phone (two across),
|
|
4
|
+
* a phone (two across), 300 px in a card (two across in Codex's inline frame) and 400 px in the workspace (three across
|
|
5
|
+
* at 1440 px). A slot being drawn is the loading surface (mcp-slate-ui-styles-loading.ts). Under
|
|
5
6
|
* each picture is one row: the code (and where it came from, or its page) at the left, the four icon actions at the
|
|
6
7
|
* right, so nothing covers the design. The chosen design has the selection's own language: a thick ring in the host's
|
|
7
8
|
* accent and a filled check on the picture.
|