@noodleseed/one 0.90.0 → 0.92.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.
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +3 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/auth-live-doctor.js +1 -1
- package/dist/commands/auth-live-doctor.js.map +1 -1
- package/dist/commands/catalog-data-hosted-deployment.d.ts.map +1 -1
- package/dist/commands/catalog-data-hosted-deployment.js +2 -2
- package/dist/commands/catalog-data-hosted-deployment.js.map +1 -1
- package/dist/commands/catalog-data-local-authoring.d.ts.map +1 -1
- package/dist/commands/catalog-data-local-authoring.js +27 -0
- package/dist/commands/catalog-data-local-authoring.js.map +1 -1
- package/dist/commands/deploy-dotenv-import.d.ts +28 -0
- package/dist/commands/deploy-dotenv-import.d.ts.map +1 -0
- package/dist/commands/deploy-dotenv-import.js +50 -0
- package/dist/commands/deploy-dotenv-import.js.map +1 -0
- package/dist/commands/deploy-fire-progress.d.ts +28 -0
- package/dist/commands/deploy-fire-progress.d.ts.map +1 -0
- package/dist/commands/deploy-fire-progress.js +64 -0
- package/dist/commands/deploy-fire-progress.js.map +1 -0
- package/dist/commands/deploy-first-flow.d.ts +72 -0
- package/dist/commands/deploy-first-flow.d.ts.map +1 -0
- package/dist/commands/deploy-first-flow.js +315 -0
- package/dist/commands/deploy-first-flow.js.map +1 -0
- package/dist/commands/deploy-ops.d.ts +1 -27
- package/dist/commands/deploy-ops.d.ts.map +1 -1
- package/dist/commands/deploy-ops.js +122 -145
- package/dist/commands/deploy-ops.js.map +1 -1
- package/dist/commands/deploy-output.d.ts +7 -1
- package/dist/commands/deploy-output.d.ts.map +1 -1
- package/dist/commands/deploy-output.js +21 -12
- package/dist/commands/deploy-output.js.map +1 -1
- package/dist/commands/deploy-preflight.d.ts +35 -0
- package/dist/commands/deploy-preflight.d.ts.map +1 -0
- package/dist/commands/deploy-preflight.js +74 -0
- package/dist/commands/deploy-preflight.js.map +1 -0
- package/dist/commands/deploy-resume.d.ts +23 -0
- package/dist/commands/deploy-resume.d.ts.map +1 -0
- package/dist/commands/deploy-resume.js +79 -0
- package/dist/commands/deploy-resume.js.map +1 -0
- package/dist/commands/design.d.ts +7 -0
- package/dist/commands/design.d.ts.map +1 -0
- package/dist/commands/design.js +95 -0
- package/dist/commands/design.js.map +1 -0
- package/dist/commands/devtools.d.ts.map +1 -1
- package/dist/commands/devtools.js +5 -1
- package/dist/commands/devtools.js.map +1 -1
- package/dist/deploy.d.ts +2 -0
- package/dist/deploy.d.ts.map +1 -1
- package/dist/deploy.js +3 -0
- package/dist/deploy.js.map +1 -1
- package/dist/dev.d.ts +2 -0
- package/dist/dev.d.ts.map +1 -1
- package/dist/dev.js +8 -2
- package/dist/dev.js.map +1 -1
- package/dist/devtools-design-brief.d.ts +10 -0
- package/dist/devtools-design-brief.d.ts.map +1 -0
- package/dist/devtools-design-brief.js +121 -0
- package/dist/devtools-design-brief.js.map +1 -0
- package/dist/devtools-design-contract.d.ts +74 -0
- package/dist/devtools-design-contract.d.ts.map +1 -0
- package/dist/devtools-design-contract.js +306 -0
- package/dist/devtools-design-contract.js.map +1 -0
- package/dist/devtools-design-element.d.ts +6 -0
- package/dist/devtools-design-element.d.ts.map +1 -0
- package/dist/devtools-design-element.js +233 -0
- package/dist/devtools-design-element.js.map +1 -0
- package/dist/devtools-design-preview.d.ts +6 -0
- package/dist/devtools-design-preview.d.ts.map +1 -0
- package/dist/devtools-design-preview.js +438 -0
- package/dist/devtools-design-preview.js.map +1 -0
- package/dist/devtools-design-routes.d.ts +14 -0
- package/dist/devtools-design-routes.d.ts.map +1 -0
- package/dist/devtools-design-routes.js +197 -0
- package/dist/devtools-design-routes.js.map +1 -0
- package/dist/devtools-design-store.d.ts +16 -0
- package/dist/devtools-design-store.d.ts.map +1 -0
- package/dist/devtools-design-store.js +209 -0
- package/dist/devtools-design-store.js.map +1 -0
- package/dist/devtools-design-styles.d.ts +3 -0
- package/dist/devtools-design-styles.d.ts.map +1 -0
- package/dist/devtools-design-styles.js +509 -0
- package/dist/devtools-design-styles.js.map +1 -0
- package/dist/devtools-design.d.ts +1 -3
- package/dist/devtools-design.d.ts.map +1 -1
- package/dist/devtools-design.js +449 -56
- package/dist/devtools-design.js.map +1 -1
- package/dist/devtools-harness.d.ts.map +1 -1
- package/dist/devtools-harness.js +13 -10
- package/dist/devtools-harness.js.map +1 -1
- package/dist/devtools-preview.d.ts +3 -0
- package/dist/devtools-preview.d.ts.map +1 -1
- package/dist/devtools-preview.js +3 -0
- package/dist/devtools-preview.js.map +1 -1
- package/dist/devtools-responsive-styles.d.ts.map +1 -1
- package/dist/devtools-responsive-styles.js +15 -0
- package/dist/devtools-responsive-styles.js.map +1 -1
- package/dist/devtools-styles.js +1 -1
- package/dist/devtools-styles.js.map +1 -1
- package/dist/fire.d.ts +2 -2
- package/dist/fire.d.ts.map +1 -1
- package/dist/fire.js +6 -6
- package/dist/fire.js.map +1 -1
- package/dist/first-run.d.ts.map +1 -1
- package/dist/first-run.js +39 -33
- package/dist/first-run.js.map +1 -1
- package/dist/local-config.d.ts +2 -1
- package/dist/local-config.d.ts.map +1 -1
- package/dist/local-config.js +29 -2
- package/dist/local-config.js.map +1 -1
- package/dist/plugin-mode/build-readiness-server.d.ts.map +1 -1
- package/dist/plugin-mode/build-readiness-server.js +54 -4
- package/dist/plugin-mode/build-readiness-server.js.map +1 -1
- package/dist/preview-session.d.ts +5 -0
- package/dist/preview-session.d.ts.map +1 -1
- package/dist/preview-session.js +1 -0
- package/dist/preview-session.js.map +1 -1
- package/dist/project-dotenv.d.ts +15 -0
- package/dist/project-dotenv.d.ts.map +1 -0
- package/dist/project-dotenv.js +135 -0
- package/dist/project-dotenv.js.map +1 -0
- package/dist/project-scaffold-templates.d.ts.map +1 -1
- package/dist/project-scaffold-templates.js +6 -3
- package/dist/project-scaffold-templates.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js +4 -0
- package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/curated/hook-notes.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/curated/hook-notes.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +5 -5
- package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +1 -0
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/index.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.js +2 -2
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-connect-refs.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-connect-refs.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-design-refs.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-design-refs.js +12 -0
- package/node_modules/@noodle-borg/agent-kit/dist/skill-design-refs.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js +3 -6
- package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js +2 -2
- package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-router.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-router.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
- package/node_modules/@noodle-borg/auth/dist/verify.d.ts +3 -1
- package/node_modules/@noodle-borg/auth/dist/verify.d.ts.map +1 -1
- package/node_modules/@noodle-borg/auth/dist/verify.js +16 -4
- package/node_modules/@noodle-borg/auth/dist/verify.js.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/widget-ui-style.d.ts +0 -2
- package/node_modules/@noodle-borg/compiler/dist/widget-ui-style.d.ts.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/widget-ui-style.js +0 -76
- package/node_modules/@noodle-borg/compiler/dist/widget-ui-style.js.map +1 -1
- package/node_modules/@noodle-borg/connector-http/dist/http-connector.d.ts +2 -8
- package/node_modules/@noodle-borg/connector-http/dist/http-connector.d.ts.map +1 -1
- package/node_modules/@noodle-borg/connector-http/dist/http-connector.js +8 -237
- package/node_modules/@noodle-borg/connector-http/dist/http-connector.js.map +1 -1
- package/node_modules/@noodle-borg/connector-http/dist/http-response.d.ts +26 -0
- package/node_modules/@noodle-borg/connector-http/dist/http-response.d.ts.map +1 -0
- package/node_modules/@noodle-borg/connector-http/dist/http-response.js +249 -0
- package/node_modules/@noodle-borg/connector-http/dist/http-response.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/assistant-bindings.js +4 -4
- package/node_modules/@noodle-borg/service/dist/assistant-bindings.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/customer-verifier.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/customer-verifier.js +8 -5
- package/node_modules/@noodle-borg/service/dist/customer-verifier.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/index.d.ts +1 -1
- package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/registry-deploy-transaction.d.ts +41 -0
- package/node_modules/@noodle-borg/service/dist/registry-deploy-transaction.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/registry-deploy-transaction.js +93 -0
- package/node_modules/@noodle-borg/service/dist/registry-deploy-transaction.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/registry-targets.d.ts +2 -0
- package/node_modules/@noodle-borg/service/dist/registry-targets.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/registry-targets.js +10 -4
- package/node_modules/@noodle-borg/service/dist/registry-targets.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/registry-types.d.ts +17 -0
- package/node_modules/@noodle-borg/service/dist/registry-types.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/registry.d.ts +4 -2
- package/node_modules/@noodle-borg/service/dist/registry.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/registry.js +79 -75
- package/node_modules/@noodle-borg/service/dist/registry.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/control-plane.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/control-plane.js +16 -0
- package/node_modules/@noodle-borg/service/dist/routes/control-plane.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/deploy-dispatch.d.ts +21 -0
- package/node_modules/@noodle-borg/service/dist/routes/deploy-dispatch.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/deploy-dispatch.js +25 -0
- package/node_modules/@noodle-borg/service/dist/routes/deploy-dispatch.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/deploy-idempotency.d.ts +16 -0
- package/node_modules/@noodle-borg/service/dist/routes/deploy-idempotency.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/deploy-idempotency.js +20 -0
- package/node_modules/@noodle-borg/service/dist/routes/deploy-idempotency.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/deploy-preflight.d.ts +12 -0
- package/node_modules/@noodle-borg/service/dist/routes/deploy-preflight.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/deploy-preflight.js +132 -0
- package/node_modules/@noodle-borg/service/dist/routes/deploy-preflight.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/paths.js +3 -0
- package/node_modules/@noodle-borg/service/dist/routes/paths.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service.js +15 -12
- package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
- package/node_modules/@noodle-borg/wire-contracts/dist/index.d.ts +82 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/wire-contracts/dist/index.js +37 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/node_modules/@noodle-borg/compiler/dist/widget-tailwind-tokens.d.ts +0 -2
- package/node_modules/@noodle-borg/compiler/dist/widget-tailwind-tokens.d.ts.map +0 -1
- package/node_modules/@noodle-borg/compiler/dist/widget-tailwind-tokens.js +0 -22
- package/node_modules/@noodle-borg/compiler/dist/widget-tailwind-tokens.js.map +0 -1
package/dist/devtools-design.js
CHANGED
|
@@ -1,62 +1,455 @@
|
|
|
1
|
-
|
|
1
|
+
import { DEVTOOLS_DESIGN_ELEMENT_CLIENT_JS } from './devtools-design-element.js';
|
|
2
|
+
import { DEVTOOLS_DESIGN_PREVIEW_CLIENT_JS } from './devtools-design-preview.js';
|
|
3
|
+
const cursorIcon = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linejoin="round"><path d="M5 3.5v15l4.1-4 2.8 6 3.1-1.5-2.7-5.9H18L5 3.5Z"/></svg>';
|
|
4
|
+
const chevronIcon = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="m7 10 5 5 5-5"/></svg>';
|
|
5
|
+
const undoIcon = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M9 7 4 12l5 5"/><path d="M20 17a8 8 0 0 0-13.8-5.5L4 12"/></svg>';
|
|
6
|
+
const redoIcon = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="m15 7 5 5-5 5"/><path d="M4 17a8 8 0 0 1 13.8-5.5L20 12"/></svg>';
|
|
7
|
+
function textControl(label, property, placeholder) {
|
|
8
|
+
return (`<div class="design-control-row"><label for="design-${property}">${label}</label>` +
|
|
9
|
+
`<input id="design-${property}" class="design-input" data-design-property="${property}" ` +
|
|
10
|
+
`type="text" placeholder="${placeholder}" spellcheck="false"></div>`);
|
|
11
|
+
}
|
|
12
|
+
function colorControl(label, property) {
|
|
13
|
+
return (`<div class="design-control-row"><label for="design-${property}">${label}</label>` +
|
|
14
|
+
'<span class="design-color-input">' +
|
|
15
|
+
`<input data-color-for="${property}" type="color" value="#f97316" aria-label="${label} picker">` +
|
|
16
|
+
`<input id="design-${property}" class="design-input" data-design-property="${property}" ` +
|
|
17
|
+
`type="text" placeholder="Unchanged" spellcheck="false"></span></div>`);
|
|
18
|
+
}
|
|
2
19
|
export const DEVTOOLS_DESIGN_HTML = [
|
|
3
20
|
'<div id="design-view" class="design-view hidden" role="tabpanel" aria-labelledby="mode-design">',
|
|
4
|
-
'<section
|
|
5
|
-
|
|
6
|
-
'<
|
|
21
|
+
'<section id="design-empty" class="design-empty">',
|
|
22
|
+
`<span class="design-empty__mark" aria-hidden="true">${cursorIcon}</span>`,
|
|
23
|
+
'<h3>Open a widget to start designing</h3>',
|
|
24
|
+
'<p>Choose a widget tool in Preview, then return here to select and fine-tune its elements.</p>',
|
|
25
|
+
'<button id="design-choose-widget" class="design-action" type="button">Choose a widget</button>',
|
|
26
|
+
'</section>',
|
|
27
|
+
'<section id="design-workspace" class="design-workspace" hidden>',
|
|
28
|
+
'<div class="design-canvas">',
|
|
29
|
+
'<div class="design-canvas__bar">',
|
|
30
|
+
`<button id="design-select-toggle" class="design-select-toggle" type="button" aria-pressed="false">${cursorIcon}<span>Annotations off</span></button>`,
|
|
31
|
+
'<div class="design-canvas__meta">',
|
|
32
|
+
'<span id="design-unsaved" class="design-unsaved" hidden>Unsaved</span>',
|
|
33
|
+
`<button id="design-tweaks-toggle" class="design-count" type="button" aria-expanded="false" aria-controls="design-tweaks-panel"><span id="design-count">0 tweaks</span>${chevronIcon}</button>`,
|
|
34
|
+
'</div>',
|
|
35
|
+
'</div>',
|
|
36
|
+
'<section id="design-tweaks-panel" class="design-tweaks-popover" role="region" aria-label="Saved design tweaks" hidden>',
|
|
37
|
+
'<header class="design-tweaks-popover__head"><span>Saved tweaks</span><span class="design-tweaks-popover__hint">Design history</span></header>',
|
|
38
|
+
'<div id="design-changes" class="design-changes"><p class="design-changes-empty">Saved tweaks will appear here.</p></div>',
|
|
39
|
+
'</section>',
|
|
40
|
+
'<div id="design-frame-slot"></div>',
|
|
41
|
+
'</div>',
|
|
42
|
+
'<aside class="design-inspector" role="region" aria-label="Design inspector">',
|
|
43
|
+
'<header class="design-inspector__head">',
|
|
44
|
+
'<div><span class="design-inspector__eyebrow">Selected element</span>',
|
|
45
|
+
'<p id="design-target" class="design-target">Nothing selected</p>',
|
|
46
|
+
'<span id="design-target-path" class="design-target-path">Pick an element directly in the widget</span></div>',
|
|
47
|
+
'<button id="design-clear" class="design-icon-button" type="button" aria-label="Clear selection" title="Clear selection">×</button>',
|
|
48
|
+
'</header>',
|
|
49
|
+
'<div class="design-scroll">',
|
|
50
|
+
'<section class="design-section">',
|
|
51
|
+
'<label class="design-section__label" for="design-intent">Describe</label>',
|
|
52
|
+
'<textarea id="design-intent" aria-label="Describe this change" placeholder="Describe how this element should look or feel..."></textarea>',
|
|
53
|
+
'</section>',
|
|
54
|
+
'<section class="design-section"><span class="design-section__label">Type</span>',
|
|
55
|
+
'<div class="design-control-group">',
|
|
56
|
+
colorControl('Text color', 'color'),
|
|
57
|
+
textControl('Font size', 'font-size', 'e.g. 16px'),
|
|
58
|
+
textControl('Font weight', 'font-weight', 'e.g. 600'),
|
|
59
|
+
textControl('Line height', 'line-height', 'e.g. 1.4'),
|
|
60
|
+
'<div class="design-control-row"><label>Text align</label><div class="design-segment" data-design-segment="text-align">',
|
|
61
|
+
'<button type="button" data-value="left" aria-pressed="false">Left</button>',
|
|
62
|
+
'<button type="button" data-value="center" aria-pressed="false">Center</button>',
|
|
63
|
+
'<button type="button" data-value="right" aria-pressed="false">Right</button>',
|
|
64
|
+
'</div></div></div></section>',
|
|
65
|
+
'<section class="design-section"><span class="design-section__label">Surface and shape</span>',
|
|
66
|
+
'<div class="design-control-group">',
|
|
67
|
+
colorControl('Background color', 'background-color'),
|
|
68
|
+
textControl('Opacity', 'opacity', 'e.g. 0.9'),
|
|
69
|
+
colorControl('Border color', 'border-color'),
|
|
70
|
+
textControl('Border width', 'border-width', 'e.g. 1px'),
|
|
71
|
+
textControl('Border radius', 'border-radius', 'e.g. 12px'),
|
|
72
|
+
'</div></section>',
|
|
73
|
+
'<section class="design-section"><span class="design-section__label">Space and layout</span>',
|
|
74
|
+
'<div class="design-control-group">',
|
|
75
|
+
textControl('Padding', 'padding-top', 'e.g. 12px'),
|
|
76
|
+
textControl('Margin', 'margin-top', 'e.g. 0'),
|
|
77
|
+
textControl('Gap', 'row-gap', 'e.g. 8px'),
|
|
78
|
+
textControl('Width', 'width', 'e.g. 100%'),
|
|
79
|
+
textControl('Height', 'height', 'e.g. auto'),
|
|
80
|
+
'</div></section>',
|
|
81
|
+
'</div>',
|
|
82
|
+
'<footer class="design-inspector__footer">',
|
|
83
|
+
'<div class="design-history">',
|
|
84
|
+
`<button id="design-undo" class="design-icon-button" type="button" disabled>${undoIcon}<span>Undo</span></button>`,
|
|
85
|
+
`<button id="design-redo" class="design-icon-button" type="button" disabled>${redoIcon}<span>Redo</span></button>`,
|
|
86
|
+
'</div>',
|
|
87
|
+
'<div class="design-actions">',
|
|
88
|
+
'<button id="design-save" class="design-action" type="button" disabled>Save annotation</button>',
|
|
89
|
+
'<button id="design-send" class="design-action design-action--send" type="button" disabled>Send to agent</button>',
|
|
90
|
+
'</div>',
|
|
91
|
+
'<div id="design-status" class="design-status" role="status" aria-live="polite"></div>',
|
|
92
|
+
'<div id="design-copy-fallback" class="design-copy-fallback">',
|
|
93
|
+
'<input id="design-copy-value" class="design-input" type="text" readonly aria-label="Agent instruction">',
|
|
94
|
+
'<button id="design-copy" class="design-action" type="button">Copy instruction</button>',
|
|
95
|
+
'</div>',
|
|
96
|
+
'</footer>',
|
|
97
|
+
'</aside>',
|
|
7
98
|
'</section>',
|
|
8
99
|
'</div>',
|
|
9
100
|
].join('');
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
.design-
|
|
32
|
-
.design-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
101
|
+
export const DEVTOOLS_DESIGN_CLIENT_JS = [
|
|
102
|
+
DEVTOOLS_DESIGN_ELEMENT_CLIENT_JS,
|
|
103
|
+
DEVTOOLS_DESIGN_PREVIEW_CLIENT_JS,
|
|
104
|
+
`
|
|
105
|
+
(function(){
|
|
106
|
+
var ui={configured:false,active:false,frame:null,getContext:null,previewParent:null,previewNext:null,inspectorParent:null,inspectorNext:null,activityLabel:null};
|
|
107
|
+
var empty=document.getElementById("design-empty");
|
|
108
|
+
var workspace=document.getElementById("design-workspace");
|
|
109
|
+
var slot=document.getElementById("design-frame-slot");
|
|
110
|
+
var inspector=document.querySelector(".design-inspector");
|
|
111
|
+
var activity=document.getElementById("log");
|
|
112
|
+
var targetLabel=document.getElementById("design-target");
|
|
113
|
+
var targetPath=document.getElementById("design-target-path");
|
|
114
|
+
var intent=document.getElementById("design-intent");
|
|
115
|
+
var count=document.getElementById("design-count");
|
|
116
|
+
var selectToggle=document.getElementById("design-select-toggle");
|
|
117
|
+
var selectToggleLabel=selectToggle.querySelector("span");
|
|
118
|
+
var tweaksToggle=document.getElementById("design-tweaks-toggle");
|
|
119
|
+
var tweaksPanel=document.getElementById("design-tweaks-panel");
|
|
120
|
+
var unsaved=document.getElementById("design-unsaved");
|
|
121
|
+
var changes=document.getElementById("design-changes");
|
|
122
|
+
var saveButton=document.getElementById("design-save");
|
|
123
|
+
var sendButton=document.getElementById("design-send");
|
|
124
|
+
var undoButton=document.getElementById("design-undo");
|
|
125
|
+
var redoButton=document.getElementById("design-redo");
|
|
126
|
+
var statusElement=document.getElementById("design-status");
|
|
127
|
+
var fallback=document.getElementById("design-copy-fallback");
|
|
128
|
+
var fallbackValue=document.getElementById("design-copy-value");
|
|
129
|
+
var propertyInputs=document.querySelectorAll("[data-design-property]");
|
|
130
|
+
var draftDirty=false;
|
|
131
|
+
var tweaksCloseTimer=0;
|
|
132
|
+
function openTweaks(){
|
|
133
|
+
if(tweaksToggle.disabled) return;
|
|
134
|
+
window.clearTimeout(tweaksCloseTimer);
|
|
135
|
+
tweaksPanel.hidden=false;
|
|
136
|
+
tweaksToggle.setAttribute("aria-expanded","true");
|
|
137
|
+
window.requestAnimationFrame(function(){tweaksPanel.classList.add("is-open");});
|
|
138
|
+
}
|
|
139
|
+
function closeTweaks(returnFocus,immediate){
|
|
140
|
+
window.clearTimeout(tweaksCloseTimer);
|
|
141
|
+
tweaksToggle.setAttribute("aria-expanded","false");
|
|
142
|
+
tweaksPanel.classList.remove("is-open");
|
|
143
|
+
if(immediate) tweaksPanel.hidden=true;
|
|
144
|
+
else tweaksCloseTimer=window.setTimeout(function(){tweaksPanel.hidden=true;},170);
|
|
145
|
+
if(returnFocus) tweaksToggle.focus();
|
|
146
|
+
}
|
|
147
|
+
function toggleTweaks(){
|
|
148
|
+
if(tweaksToggle.getAttribute("aria-expanded")==="true") closeTweaks(false,false);
|
|
149
|
+
else openTweaks();
|
|
150
|
+
}
|
|
151
|
+
function message(text,isError){
|
|
152
|
+
statusElement.textContent=text||"";
|
|
153
|
+
statusElement.classList.toggle("is-error",Boolean(isError));
|
|
154
|
+
}
|
|
155
|
+
function targetName(target){
|
|
156
|
+
if(!target) return "Nothing selected";
|
|
157
|
+
return target.accessibleName||target.visibleText||target.role||target.tagName;
|
|
158
|
+
}
|
|
159
|
+
function targetBreadcrumb(target){
|
|
160
|
+
if(!target) return "Pick an element directly in the widget";
|
|
161
|
+
var path=(target.ancestry||[]).map(function(item){return item.tagName+(item.stableId?"#"+item.stableId:"");});
|
|
162
|
+
path.push(target.tagName+(target.stableId?"#"+target.stableId:""));
|
|
163
|
+
return path.join(" › ");
|
|
164
|
+
}
|
|
165
|
+
function setDraftDirty(value){
|
|
166
|
+
draftDirty=Boolean(value);
|
|
167
|
+
unsaved.hidden=!draftDirty;
|
|
168
|
+
}
|
|
169
|
+
function rgbHex(value){
|
|
170
|
+
if(!value) return "#f97316";
|
|
171
|
+
if(/^#[0-9a-f]{6}$/i.test(value)) return value;
|
|
172
|
+
var match=value.match(/rgba?\\(\\s*(\\d+)\\D+(\\d+)\\D+(\\d+)/i);
|
|
173
|
+
if(!match) return "#f97316";
|
|
174
|
+
return "#"+[match[1],match[2],match[3]].map(function(part){return Number(part).toString(16).padStart(2,"0");}).join("");
|
|
175
|
+
}
|
|
176
|
+
function populateControls(target){
|
|
177
|
+
for(var i=0;i<propertyInputs.length;i++){
|
|
178
|
+
var property=propertyInputs[i].dataset.designProperty;
|
|
179
|
+
propertyInputs[i].value="";
|
|
180
|
+
propertyInputs[i].placeholder=target&&target.computedStyles&&target.computedStyles[property]
|
|
181
|
+
? target.computedStyles[property]
|
|
182
|
+
: "Unchanged";
|
|
183
|
+
}
|
|
184
|
+
var pickers=document.querySelectorAll("[data-color-for]");
|
|
185
|
+
for(var p=0;p<pickers.length;p++){
|
|
186
|
+
var colorProperty=pickers[p].dataset.colorFor;
|
|
187
|
+
pickers[p].value=rgbHex(target&&target.computedStyles&&target.computedStyles[colorProperty]);
|
|
188
|
+
}
|
|
189
|
+
var segments=document.querySelectorAll("[data-design-segment] button");
|
|
190
|
+
for(var s=0;s<segments.length;s++) segments[s].setAttribute("aria-pressed","false");
|
|
191
|
+
}
|
|
192
|
+
function renderChanges(session){
|
|
193
|
+
var annotations=session&&session.annotations?session.annotations:[];
|
|
194
|
+
count.textContent=annotations.length+" tweak"+(annotations.length===1?"":"s");
|
|
195
|
+
tweaksToggle.disabled=!annotations.length;
|
|
196
|
+
if(!annotations.length){
|
|
197
|
+
closeTweaks(false,true);
|
|
198
|
+
}
|
|
199
|
+
changes.innerHTML="";
|
|
200
|
+
if(!annotations.length){
|
|
201
|
+
changes.innerHTML='<p class="design-changes-empty">Saved tweaks will appear here.</p>';
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
annotations.forEach(function(annotation,index){
|
|
205
|
+
var item=document.createElement("article"); item.className="design-change";
|
|
206
|
+
var heading=document.createElement("div"); heading.className="design-change__heading";
|
|
207
|
+
var number=document.createElement("span"); number.className="design-change__number"; number.textContent="Tweak "+String(index+1).padStart(2,"0");
|
|
208
|
+
var title=document.createElement("strong"); title.textContent=targetName(annotation.target);
|
|
209
|
+
heading.appendChild(number); heading.appendChild(title);
|
|
210
|
+
var details=document.createElement("dl"); details.className="design-change__details";
|
|
211
|
+
function detail(label,value){
|
|
212
|
+
var row=document.createElement("div");
|
|
213
|
+
var term=document.createElement("dt"); term.textContent=label;
|
|
214
|
+
var description=document.createElement("dd"); description.textContent=value;
|
|
215
|
+
row.appendChild(term); row.appendChild(description); details.appendChild(row);
|
|
216
|
+
}
|
|
217
|
+
detail("Target",targetName(annotation.target));
|
|
218
|
+
detail("Selector",targetBreadcrumb(annotation.target));
|
|
219
|
+
detail("Request",annotation.intent||"Visual controls only");
|
|
220
|
+
var visual=(annotation.changes||[]).map(function(change){
|
|
221
|
+
return change.property+": "+(change.from||"unset")+" → "+change.to;
|
|
222
|
+
}).join("\\n");
|
|
223
|
+
detail("Visual changes",visual||"No direct style values");
|
|
224
|
+
var actions=document.createElement("div"); actions.className="design-change__actions";
|
|
225
|
+
var copy=document.createElement("button"); copy.type="button"; copy.textContent="Copy tweak";
|
|
226
|
+
copy.addEventListener("click",function(){copyTweak(annotation,index);});
|
|
227
|
+
var remove=document.createElement("button"); remove.type="button"; remove.className="is-danger"; remove.textContent="Remove";
|
|
228
|
+
remove.addEventListener("click",function(){window.NoodleDesign.removeAnnotation(annotation.id);});
|
|
229
|
+
actions.appendChild(copy); actions.appendChild(remove);
|
|
230
|
+
item.appendChild(heading); item.appendChild(details); item.appendChild(actions); changes.appendChild(item);
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
function render(state){
|
|
234
|
+
var selected=state.selected&&state.selected.target;
|
|
235
|
+
selectToggle.setAttribute("aria-pressed",state.selecting?"true":"false");
|
|
236
|
+
selectToggleLabel.textContent=state.selecting?"Annotations on":"Annotations off";
|
|
237
|
+
targetLabel.textContent=targetName(selected);
|
|
238
|
+
targetPath.textContent=selected
|
|
239
|
+
? targetBreadcrumb(selected)
|
|
240
|
+
: state.selecting?"Select an element directly in the widget":"Turn on annotations to select an element";
|
|
241
|
+
saveButton.disabled=!selected;
|
|
242
|
+
undoButton.disabled=state.historyLength===0;
|
|
243
|
+
redoButton.disabled=state.futureLength===0;
|
|
244
|
+
sendButton.disabled=!(state.session&&state.session.annotations&&state.session.annotations.length);
|
|
245
|
+
renderChanges(state.session);
|
|
246
|
+
if(selected&&intent.dataset.targetId!==String(state.selectionId)){
|
|
247
|
+
intent.value="";
|
|
248
|
+
intent.dataset.targetId=String(state.selectionId);
|
|
249
|
+
populateControls(selected);
|
|
250
|
+
setDraftDirty(false);
|
|
251
|
+
}
|
|
252
|
+
if(!selected&&intent.dataset.targetId){
|
|
253
|
+
intent.value="";
|
|
254
|
+
intent.dataset.targetId="";
|
|
255
|
+
populateControls(null);
|
|
256
|
+
setDraftDirty(false);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
function currentChanges(selected){
|
|
260
|
+
var output=[];
|
|
261
|
+
for(var i=0;i<propertyInputs.length;i++){
|
|
262
|
+
var input=propertyInputs[i];
|
|
263
|
+
var value=input.value.trim();
|
|
264
|
+
if(!value) continue;
|
|
265
|
+
var property=input.dataset.designProperty;
|
|
266
|
+
output.push({property:property,from:selected.computedStyles[property]||"",to:value});
|
|
267
|
+
if(property==="padding-top"){
|
|
268
|
+
["padding-right","padding-bottom","padding-left"].forEach(function(side){
|
|
269
|
+
output.push({property:side,from:selected.computedStyles[side]||"",to:value});
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
if(property==="margin-top"){
|
|
273
|
+
["margin-right","margin-bottom","margin-left"].forEach(function(side){
|
|
274
|
+
output.push({property:side,from:selected.computedStyles[side]||"",to:value});
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
if(property==="row-gap"){
|
|
278
|
+
output.push({property:"column-gap",from:selected.computedStyles["column-gap"]||"",to:value});
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
var pressed=document.querySelector('[data-design-segment="text-align"] button[aria-pressed="true"]');
|
|
282
|
+
if(pressed){
|
|
283
|
+
output.push({property:"text-align",from:selected.computedStyles["text-align"]||"",to:pressed.dataset.value});
|
|
284
|
+
}
|
|
285
|
+
return output;
|
|
286
|
+
}
|
|
287
|
+
function preview(){
|
|
288
|
+
var state=window.NoodleDesign.state();
|
|
289
|
+
var selected=state.selected&&state.selected.target;
|
|
290
|
+
window.NoodleDesign.previewChanges(selected?currentChanges(selected):[]);
|
|
291
|
+
}
|
|
292
|
+
function save(){
|
|
293
|
+
var state=window.NoodleDesign.state();
|
|
294
|
+
var selected=state.selected&&state.selected.target;
|
|
295
|
+
if(!selected) return;
|
|
296
|
+
var description=intent.value.trim();
|
|
297
|
+
var visual=currentChanges(selected);
|
|
298
|
+
if(!description&&!visual.length){message("Describe a change or tune a visual property.",true);return;}
|
|
299
|
+
var id=window.crypto&&window.crypto.randomUUID?window.crypto.randomUUID():"annotation-"+Date.now();
|
|
300
|
+
window.NoodleDesign.saveAnnotation({
|
|
301
|
+
id:id,
|
|
302
|
+
intent:description,
|
|
303
|
+
target:selected,
|
|
304
|
+
changes:visual,
|
|
305
|
+
acceptanceCriteria:[
|
|
306
|
+
"The requested change is visible at the captured viewport and theme.",
|
|
307
|
+
"The selected element remains readable and usable."
|
|
308
|
+
],
|
|
309
|
+
preserve:["Keep the element text, semantics, and existing behavior unless the request says otherwise."]
|
|
310
|
+
});
|
|
311
|
+
intent.value=""; populateControls(null); setDraftDirty(false);
|
|
312
|
+
}
|
|
313
|
+
function copyTweak(annotation,index){
|
|
314
|
+
var lines=[
|
|
315
|
+
"Tweak "+String(index+1).padStart(2,"0"),
|
|
316
|
+
"Target: "+targetName(annotation.target),
|
|
317
|
+
"Selector: "+targetBreadcrumb(annotation.target),
|
|
318
|
+
"Request: "+(annotation.intent||"Visual controls only"),
|
|
319
|
+
"Visual changes:"
|
|
320
|
+
];
|
|
321
|
+
(annotation.changes||[]).forEach(function(change){
|
|
322
|
+
lines.push("- "+change.property+": "+(change.from||"unset")+" → "+change.to);
|
|
323
|
+
});
|
|
324
|
+
if(!(annotation.changes||[]).length) lines.push("- No direct style values");
|
|
325
|
+
var operation=navigator.clipboard&&navigator.clipboard.writeText
|
|
326
|
+
? navigator.clipboard.writeText(lines.join("\\n"))
|
|
327
|
+
: Promise.reject(new Error("clipboard unavailable"));
|
|
328
|
+
operation.then(function(){message("Tweak copied.",false);}).catch(function(){
|
|
329
|
+
fallbackValue.value=lines.join("\\n");
|
|
330
|
+
fallback.classList.add("is-visible");
|
|
331
|
+
message("Copy the tweak details below.",true);
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
function copyInstruction(instruction){
|
|
335
|
+
var operation=navigator.clipboard&&navigator.clipboard.writeText
|
|
336
|
+
? navigator.clipboard.writeText(instruction)
|
|
337
|
+
: Promise.reject(new Error("clipboard unavailable"));
|
|
338
|
+
return operation.then(function(){
|
|
339
|
+
fallback.classList.remove("is-visible");
|
|
340
|
+
message("Agent instruction copied. Paste it into your coding agent.",false);
|
|
341
|
+
}).catch(function(){
|
|
342
|
+
fallbackValue.value=instruction;
|
|
343
|
+
fallback.classList.add("is-visible");
|
|
344
|
+
message("The brief is ready. Copy the instruction and paste it into your coding agent.",true);
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
function send(){
|
|
348
|
+
sendButton.disabled=true; message("Preparing the implementation brief...",false);
|
|
349
|
+
window.NoodleDesign.finalize().then(function(body){
|
|
350
|
+
return copyInstruction(body.delivery.instruction);
|
|
351
|
+
}).catch(function(error){
|
|
352
|
+
message(error.message||"Could not prepare the design brief.",true);
|
|
353
|
+
}).then(function(){render(window.NoodleDesign.state());});
|
|
354
|
+
}
|
|
355
|
+
function mountFrame(){
|
|
356
|
+
if(!ui.frame||ui.frame.parentNode===slot) return;
|
|
357
|
+
ui.previewParent=ui.frame.parentNode; ui.previewNext=ui.frame.nextSibling;
|
|
358
|
+
slot.appendChild(ui.frame);
|
|
359
|
+
}
|
|
360
|
+
function restoreFrame(){
|
|
361
|
+
if(!ui.frame||!ui.previewParent||ui.frame.parentNode!==slot) return;
|
|
362
|
+
if(ui.previewNext&&ui.previewNext.parentNode===ui.previewParent) ui.previewParent.insertBefore(ui.frame,ui.previewNext);
|
|
363
|
+
else ui.previewParent.appendChild(ui.frame);
|
|
364
|
+
}
|
|
365
|
+
function mountInspector(){
|
|
366
|
+
if(!inspector||!activity||inspector.parentNode===activity) return;
|
|
367
|
+
ui.inspectorParent=inspector.parentNode; ui.inspectorNext=inspector.nextSibling;
|
|
368
|
+
ui.activityLabel=activity.getAttribute("aria-label");
|
|
369
|
+
activity.appendChild(inspector);
|
|
370
|
+
activity.setAttribute("aria-label","Design tools");
|
|
371
|
+
}
|
|
372
|
+
function restoreInspector(){
|
|
373
|
+
if(!inspector||!ui.inspectorParent||inspector.parentNode!==activity) return;
|
|
374
|
+
if(ui.inspectorNext&&ui.inspectorNext.parentNode===ui.inspectorParent) ui.inspectorParent.insertBefore(inspector,ui.inspectorNext);
|
|
375
|
+
else ui.inspectorParent.appendChild(inspector);
|
|
376
|
+
activity.setAttribute("aria-label",ui.activityLabel||"MCP calls");
|
|
377
|
+
}
|
|
378
|
+
function enter(){
|
|
379
|
+
ui.active=true;
|
|
380
|
+
mountInspector();
|
|
381
|
+
var current=ui.getContext&&ui.getContext();
|
|
382
|
+
var ready=Boolean(current&¤t.toolName);
|
|
383
|
+
empty.hidden=ready; workspace.hidden=!ready;
|
|
384
|
+
if(!ready){message("Open a widget in Preview, then return to Design.",true);return Promise.resolve();}
|
|
385
|
+
mountFrame();
|
|
386
|
+
return window.NoodleDesign.enter();
|
|
387
|
+
}
|
|
388
|
+
function leave(){ui.active=false;closeTweaks(false,true);restoreFrame();restoreInspector();return window.NoodleDesign.leave();}
|
|
389
|
+
function frameLoaded(){if(ui.active) window.NoodleDesign.rehydrate();}
|
|
390
|
+
function configure(options){
|
|
391
|
+
ui.frame=options.frame; ui.getContext=options.getContext; ui.configured=true;
|
|
392
|
+
window.NoodleDesign.configure({
|
|
393
|
+
frame:ui.frame,
|
|
394
|
+
getContext:ui.getContext,
|
|
395
|
+
onChange:render,
|
|
396
|
+
onStatus:message
|
|
397
|
+
});
|
|
398
|
+
}
|
|
399
|
+
document.getElementById("design-choose-widget").addEventListener("click",function(){document.getElementById("mode-preview").click();});
|
|
400
|
+
document.getElementById("design-clear").addEventListener("click",function(){
|
|
401
|
+
var state=window.NoodleDesign.state();
|
|
402
|
+
if(state.selected&&state.selected.element) state.selected.element.ownerDocument.dispatchEvent(new KeyboardEvent("keydown",{key:"Escape",bubbles:true}));
|
|
403
|
+
});
|
|
404
|
+
selectToggle.addEventListener("click",function(){
|
|
405
|
+
var state=window.NoodleDesign.state();
|
|
406
|
+
window.NoodleDesign.setSelecting(!state.selecting);
|
|
407
|
+
});
|
|
408
|
+
tweaksToggle.addEventListener("click",function(){
|
|
409
|
+
if(tweaksToggle.disabled) return;
|
|
410
|
+
toggleTweaks();
|
|
411
|
+
});
|
|
412
|
+
document.addEventListener("pointerdown",function(event){
|
|
413
|
+
if(tweaksToggle.getAttribute("aria-expanded")!=="true") return;
|
|
414
|
+
if(tweaksPanel.contains(event.target)||tweaksToggle.contains(event.target)) return;
|
|
415
|
+
closeTweaks(false,false);
|
|
416
|
+
});
|
|
417
|
+
document.addEventListener("keydown",function(event){
|
|
418
|
+
if(event.key==="Escape"&&tweaksToggle.getAttribute("aria-expanded")==="true"){
|
|
419
|
+
event.stopPropagation();
|
|
420
|
+
closeTweaks(true,false);
|
|
421
|
+
}
|
|
422
|
+
});
|
|
423
|
+
saveButton.addEventListener("click",save);
|
|
424
|
+
sendButton.addEventListener("click",send);
|
|
425
|
+
undoButton.addEventListener("click",function(){window.NoodleDesign.undo();});
|
|
426
|
+
redoButton.addEventListener("click",function(){window.NoodleDesign.redo();});
|
|
427
|
+
document.getElementById("design-copy").addEventListener("click",function(){copyInstruction(fallbackValue.value);});
|
|
428
|
+
intent.addEventListener("input",function(){setDraftDirty(Boolean(window.NoodleDesign.state().selected));});
|
|
429
|
+
for(var i=0;i<propertyInputs.length;i++){
|
|
430
|
+
propertyInputs[i].addEventListener("input",function(){
|
|
431
|
+
setDraftDirty(Boolean(window.NoodleDesign.state().selected));
|
|
432
|
+
saveButton.disabled=!window.NoodleDesign.state().selected;
|
|
433
|
+
preview();
|
|
434
|
+
});
|
|
435
|
+
}
|
|
436
|
+
var pickers=document.querySelectorAll("[data-color-for]");
|
|
437
|
+
for(var p=0;p<pickers.length;p++){
|
|
438
|
+
pickers[p].addEventListener("input",function(){
|
|
439
|
+
var input=document.querySelector('[data-design-property="'+this.dataset.colorFor+'"]');
|
|
440
|
+
if(input){input.value=this.value;input.dispatchEvent(new Event("input",{bubbles:true}));}
|
|
441
|
+
});
|
|
442
|
+
}
|
|
443
|
+
var segmentButtons=document.querySelectorAll("[data-design-segment] button");
|
|
444
|
+
for(var s=0;s<segmentButtons.length;s++){
|
|
445
|
+
segmentButtons[s].addEventListener("click",function(){
|
|
446
|
+
var siblings=this.parentNode.querySelectorAll("button");
|
|
447
|
+
for(var n=0;n<siblings.length;n++) siblings[n].setAttribute("aria-pressed",siblings[n]===this?"true":"false");
|
|
448
|
+
setDraftDirty(Boolean(window.NoodleDesign.state().selected));
|
|
449
|
+
preview();
|
|
450
|
+
});
|
|
451
|
+
}
|
|
452
|
+
window.NoodleDesignUI={configure:configure,enter:enter,leave:leave,frameLoaded:frameLoaded,state:function(){return {active:ui.active};}};
|
|
453
|
+
})();`,
|
|
454
|
+
].join('\n');
|
|
62
455
|
//# sourceMappingURL=devtools-design.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devtools-design.js","sourceRoot":"","sources":["../src/devtools-design.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"devtools-design.js","sourceRoot":"","sources":["../src/devtools-design.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devtools-harness.d.ts","sourceRoot":"","sources":["../src/devtools-harness.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AACrD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE1D,8FAA8F;AAC9F,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGtF;AAgBD,wGAAwG;AACxG,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CACnC,GAAG,MAAM,CA8BT;AAUD,+GAA+G;AAC/G,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAcvE;AAMD,oCAAoC;AACpC,wBAAgB,WAAW,CAAC,OAAO,EAAE;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;CAChC,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"devtools-harness.d.ts","sourceRoot":"","sources":["../src/devtools-harness.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AACrD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE1D,8FAA8F;AAC9F,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGtF;AAgBD,wGAAwG;AACxG,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CACnC,GAAG,MAAM,CA8BT;AAUD,+GAA+G;AAC/G,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAcvE;AAMD,oCAAoC;AACpC,wBAAgB,WAAW,CAAC,OAAO,EAAE;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;CAChC,GAAG,MAAM,CAoHT"}
|