@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.
Files changed (221) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +3 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/auth-live-doctor.js +1 -1
  5. package/dist/commands/auth-live-doctor.js.map +1 -1
  6. package/dist/commands/catalog-data-hosted-deployment.d.ts.map +1 -1
  7. package/dist/commands/catalog-data-hosted-deployment.js +2 -2
  8. package/dist/commands/catalog-data-hosted-deployment.js.map +1 -1
  9. package/dist/commands/catalog-data-local-authoring.d.ts.map +1 -1
  10. package/dist/commands/catalog-data-local-authoring.js +27 -0
  11. package/dist/commands/catalog-data-local-authoring.js.map +1 -1
  12. package/dist/commands/deploy-dotenv-import.d.ts +28 -0
  13. package/dist/commands/deploy-dotenv-import.d.ts.map +1 -0
  14. package/dist/commands/deploy-dotenv-import.js +50 -0
  15. package/dist/commands/deploy-dotenv-import.js.map +1 -0
  16. package/dist/commands/deploy-fire-progress.d.ts +28 -0
  17. package/dist/commands/deploy-fire-progress.d.ts.map +1 -0
  18. package/dist/commands/deploy-fire-progress.js +64 -0
  19. package/dist/commands/deploy-fire-progress.js.map +1 -0
  20. package/dist/commands/deploy-first-flow.d.ts +72 -0
  21. package/dist/commands/deploy-first-flow.d.ts.map +1 -0
  22. package/dist/commands/deploy-first-flow.js +315 -0
  23. package/dist/commands/deploy-first-flow.js.map +1 -0
  24. package/dist/commands/deploy-ops.d.ts +1 -27
  25. package/dist/commands/deploy-ops.d.ts.map +1 -1
  26. package/dist/commands/deploy-ops.js +122 -145
  27. package/dist/commands/deploy-ops.js.map +1 -1
  28. package/dist/commands/deploy-output.d.ts +7 -1
  29. package/dist/commands/deploy-output.d.ts.map +1 -1
  30. package/dist/commands/deploy-output.js +21 -12
  31. package/dist/commands/deploy-output.js.map +1 -1
  32. package/dist/commands/deploy-preflight.d.ts +35 -0
  33. package/dist/commands/deploy-preflight.d.ts.map +1 -0
  34. package/dist/commands/deploy-preflight.js +74 -0
  35. package/dist/commands/deploy-preflight.js.map +1 -0
  36. package/dist/commands/deploy-resume.d.ts +23 -0
  37. package/dist/commands/deploy-resume.d.ts.map +1 -0
  38. package/dist/commands/deploy-resume.js +79 -0
  39. package/dist/commands/deploy-resume.js.map +1 -0
  40. package/dist/commands/design.d.ts +7 -0
  41. package/dist/commands/design.d.ts.map +1 -0
  42. package/dist/commands/design.js +95 -0
  43. package/dist/commands/design.js.map +1 -0
  44. package/dist/commands/devtools.d.ts.map +1 -1
  45. package/dist/commands/devtools.js +5 -1
  46. package/dist/commands/devtools.js.map +1 -1
  47. package/dist/deploy.d.ts +2 -0
  48. package/dist/deploy.d.ts.map +1 -1
  49. package/dist/deploy.js +3 -0
  50. package/dist/deploy.js.map +1 -1
  51. package/dist/dev.d.ts +2 -0
  52. package/dist/dev.d.ts.map +1 -1
  53. package/dist/dev.js +8 -2
  54. package/dist/dev.js.map +1 -1
  55. package/dist/devtools-design-brief.d.ts +10 -0
  56. package/dist/devtools-design-brief.d.ts.map +1 -0
  57. package/dist/devtools-design-brief.js +121 -0
  58. package/dist/devtools-design-brief.js.map +1 -0
  59. package/dist/devtools-design-contract.d.ts +74 -0
  60. package/dist/devtools-design-contract.d.ts.map +1 -0
  61. package/dist/devtools-design-contract.js +306 -0
  62. package/dist/devtools-design-contract.js.map +1 -0
  63. package/dist/devtools-design-element.d.ts +6 -0
  64. package/dist/devtools-design-element.d.ts.map +1 -0
  65. package/dist/devtools-design-element.js +233 -0
  66. package/dist/devtools-design-element.js.map +1 -0
  67. package/dist/devtools-design-preview.d.ts +6 -0
  68. package/dist/devtools-design-preview.d.ts.map +1 -0
  69. package/dist/devtools-design-preview.js +438 -0
  70. package/dist/devtools-design-preview.js.map +1 -0
  71. package/dist/devtools-design-routes.d.ts +14 -0
  72. package/dist/devtools-design-routes.d.ts.map +1 -0
  73. package/dist/devtools-design-routes.js +197 -0
  74. package/dist/devtools-design-routes.js.map +1 -0
  75. package/dist/devtools-design-store.d.ts +16 -0
  76. package/dist/devtools-design-store.d.ts.map +1 -0
  77. package/dist/devtools-design-store.js +209 -0
  78. package/dist/devtools-design-store.js.map +1 -0
  79. package/dist/devtools-design-styles.d.ts +3 -0
  80. package/dist/devtools-design-styles.d.ts.map +1 -0
  81. package/dist/devtools-design-styles.js +509 -0
  82. package/dist/devtools-design-styles.js.map +1 -0
  83. package/dist/devtools-design.d.ts +1 -3
  84. package/dist/devtools-design.d.ts.map +1 -1
  85. package/dist/devtools-design.js +449 -56
  86. package/dist/devtools-design.js.map +1 -1
  87. package/dist/devtools-harness.d.ts.map +1 -1
  88. package/dist/devtools-harness.js +13 -10
  89. package/dist/devtools-harness.js.map +1 -1
  90. package/dist/devtools-preview.d.ts +3 -0
  91. package/dist/devtools-preview.d.ts.map +1 -1
  92. package/dist/devtools-preview.js +3 -0
  93. package/dist/devtools-preview.js.map +1 -1
  94. package/dist/devtools-responsive-styles.d.ts.map +1 -1
  95. package/dist/devtools-responsive-styles.js +15 -0
  96. package/dist/devtools-responsive-styles.js.map +1 -1
  97. package/dist/devtools-styles.js +1 -1
  98. package/dist/devtools-styles.js.map +1 -1
  99. package/dist/fire.d.ts +2 -2
  100. package/dist/fire.d.ts.map +1 -1
  101. package/dist/fire.js +6 -6
  102. package/dist/fire.js.map +1 -1
  103. package/dist/first-run.d.ts.map +1 -1
  104. package/dist/first-run.js +39 -33
  105. package/dist/first-run.js.map +1 -1
  106. package/dist/local-config.d.ts +2 -1
  107. package/dist/local-config.d.ts.map +1 -1
  108. package/dist/local-config.js +29 -2
  109. package/dist/local-config.js.map +1 -1
  110. package/dist/plugin-mode/build-readiness-server.d.ts.map +1 -1
  111. package/dist/plugin-mode/build-readiness-server.js +54 -4
  112. package/dist/plugin-mode/build-readiness-server.js.map +1 -1
  113. package/dist/preview-session.d.ts +5 -0
  114. package/dist/preview-session.d.ts.map +1 -1
  115. package/dist/preview-session.js +1 -0
  116. package/dist/preview-session.js.map +1 -1
  117. package/dist/project-dotenv.d.ts +15 -0
  118. package/dist/project-dotenv.d.ts.map +1 -0
  119. package/dist/project-dotenv.js +135 -0
  120. package/dist/project-dotenv.js.map +1 -0
  121. package/dist/project-scaffold-templates.d.ts.map +1 -1
  122. package/dist/project-scaffold-templates.js +6 -3
  123. package/dist/project-scaffold-templates.js.map +1 -1
  124. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.d.ts.map +1 -1
  125. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js +4 -0
  126. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js.map +1 -1
  127. package/node_modules/@noodle-borg/agent-kit/dist/curated/hook-notes.js +1 -1
  128. package/node_modules/@noodle-borg/agent-kit/dist/curated/hook-notes.js.map +1 -1
  129. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +5 -5
  130. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js.map +1 -1
  131. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
  132. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +1 -0
  133. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
  134. package/node_modules/@noodle-borg/agent-kit/dist/index.js +1 -1
  135. package/node_modules/@noodle-borg/agent-kit/dist/index.js.map +1 -1
  136. package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.js +2 -2
  137. package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.js.map +1 -1
  138. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js +1 -1
  139. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js.map +1 -1
  140. package/node_modules/@noodle-borg/agent-kit/dist/skill-connect-refs.js +1 -1
  141. package/node_modules/@noodle-borg/agent-kit/dist/skill-connect-refs.js.map +1 -1
  142. package/node_modules/@noodle-borg/agent-kit/dist/skill-design-refs.d.ts.map +1 -1
  143. package/node_modules/@noodle-borg/agent-kit/dist/skill-design-refs.js +12 -0
  144. package/node_modules/@noodle-borg/agent-kit/dist/skill-design-refs.js.map +1 -1
  145. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.d.ts.map +1 -1
  146. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js +3 -6
  147. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js.map +1 -1
  148. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js +2 -2
  149. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js.map +1 -1
  150. package/node_modules/@noodle-borg/agent-kit/dist/skill-router.js +1 -1
  151. package/node_modules/@noodle-borg/agent-kit/dist/skill-router.js.map +1 -1
  152. package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
  153. package/node_modules/@noodle-borg/auth/dist/verify.d.ts +3 -1
  154. package/node_modules/@noodle-borg/auth/dist/verify.d.ts.map +1 -1
  155. package/node_modules/@noodle-borg/auth/dist/verify.js +16 -4
  156. package/node_modules/@noodle-borg/auth/dist/verify.js.map +1 -1
  157. package/node_modules/@noodle-borg/compiler/dist/widget-ui-style.d.ts +0 -2
  158. package/node_modules/@noodle-borg/compiler/dist/widget-ui-style.d.ts.map +1 -1
  159. package/node_modules/@noodle-borg/compiler/dist/widget-ui-style.js +0 -76
  160. package/node_modules/@noodle-borg/compiler/dist/widget-ui-style.js.map +1 -1
  161. package/node_modules/@noodle-borg/connector-http/dist/http-connector.d.ts +2 -8
  162. package/node_modules/@noodle-borg/connector-http/dist/http-connector.d.ts.map +1 -1
  163. package/node_modules/@noodle-borg/connector-http/dist/http-connector.js +8 -237
  164. package/node_modules/@noodle-borg/connector-http/dist/http-connector.js.map +1 -1
  165. package/node_modules/@noodle-borg/connector-http/dist/http-response.d.ts +26 -0
  166. package/node_modules/@noodle-borg/connector-http/dist/http-response.d.ts.map +1 -0
  167. package/node_modules/@noodle-borg/connector-http/dist/http-response.js +249 -0
  168. package/node_modules/@noodle-borg/connector-http/dist/http-response.js.map +1 -0
  169. package/node_modules/@noodle-borg/service/dist/assistant-bindings.js +4 -4
  170. package/node_modules/@noodle-borg/service/dist/assistant-bindings.js.map +1 -1
  171. package/node_modules/@noodle-borg/service/dist/customer-verifier.d.ts.map +1 -1
  172. package/node_modules/@noodle-borg/service/dist/customer-verifier.js +8 -5
  173. package/node_modules/@noodle-borg/service/dist/customer-verifier.js.map +1 -1
  174. package/node_modules/@noodle-borg/service/dist/index.d.ts +1 -1
  175. package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
  176. package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
  177. package/node_modules/@noodle-borg/service/dist/registry-deploy-transaction.d.ts +41 -0
  178. package/node_modules/@noodle-borg/service/dist/registry-deploy-transaction.d.ts.map +1 -0
  179. package/node_modules/@noodle-borg/service/dist/registry-deploy-transaction.js +93 -0
  180. package/node_modules/@noodle-borg/service/dist/registry-deploy-transaction.js.map +1 -0
  181. package/node_modules/@noodle-borg/service/dist/registry-targets.d.ts +2 -0
  182. package/node_modules/@noodle-borg/service/dist/registry-targets.d.ts.map +1 -1
  183. package/node_modules/@noodle-borg/service/dist/registry-targets.js +10 -4
  184. package/node_modules/@noodle-borg/service/dist/registry-targets.js.map +1 -1
  185. package/node_modules/@noodle-borg/service/dist/registry-types.d.ts +17 -0
  186. package/node_modules/@noodle-borg/service/dist/registry-types.d.ts.map +1 -1
  187. package/node_modules/@noodle-borg/service/dist/registry.d.ts +4 -2
  188. package/node_modules/@noodle-borg/service/dist/registry.d.ts.map +1 -1
  189. package/node_modules/@noodle-borg/service/dist/registry.js +79 -75
  190. package/node_modules/@noodle-borg/service/dist/registry.js.map +1 -1
  191. package/node_modules/@noodle-borg/service/dist/routes/control-plane.d.ts.map +1 -1
  192. package/node_modules/@noodle-borg/service/dist/routes/control-plane.js +16 -0
  193. package/node_modules/@noodle-borg/service/dist/routes/control-plane.js.map +1 -1
  194. package/node_modules/@noodle-borg/service/dist/routes/deploy-dispatch.d.ts +21 -0
  195. package/node_modules/@noodle-borg/service/dist/routes/deploy-dispatch.d.ts.map +1 -0
  196. package/node_modules/@noodle-borg/service/dist/routes/deploy-dispatch.js +25 -0
  197. package/node_modules/@noodle-borg/service/dist/routes/deploy-dispatch.js.map +1 -0
  198. package/node_modules/@noodle-borg/service/dist/routes/deploy-idempotency.d.ts +16 -0
  199. package/node_modules/@noodle-borg/service/dist/routes/deploy-idempotency.d.ts.map +1 -0
  200. package/node_modules/@noodle-borg/service/dist/routes/deploy-idempotency.js +20 -0
  201. package/node_modules/@noodle-borg/service/dist/routes/deploy-idempotency.js.map +1 -0
  202. package/node_modules/@noodle-borg/service/dist/routes/deploy-preflight.d.ts +12 -0
  203. package/node_modules/@noodle-borg/service/dist/routes/deploy-preflight.d.ts.map +1 -0
  204. package/node_modules/@noodle-borg/service/dist/routes/deploy-preflight.js +132 -0
  205. package/node_modules/@noodle-borg/service/dist/routes/deploy-preflight.js.map +1 -0
  206. package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts +2 -1
  207. package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts.map +1 -1
  208. package/node_modules/@noodle-borg/service/dist/routes/paths.js +3 -0
  209. package/node_modules/@noodle-borg/service/dist/routes/paths.js.map +1 -1
  210. package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
  211. package/node_modules/@noodle-borg/service/dist/service.js +15 -12
  212. package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
  213. package/node_modules/@noodle-borg/wire-contracts/dist/index.d.ts +82 -0
  214. package/node_modules/@noodle-borg/wire-contracts/dist/index.d.ts.map +1 -1
  215. package/node_modules/@noodle-borg/wire-contracts/dist/index.js +37 -0
  216. package/node_modules/@noodle-borg/wire-contracts/dist/index.js.map +1 -1
  217. package/package.json +1 -1
  218. package/node_modules/@noodle-borg/compiler/dist/widget-tailwind-tokens.d.ts +0 -2
  219. package/node_modules/@noodle-borg/compiler/dist/widget-tailwind-tokens.d.ts.map +0 -1
  220. package/node_modules/@noodle-borg/compiler/dist/widget-tailwind-tokens.js +0 -22
  221. package/node_modules/@noodle-borg/compiler/dist/widget-tailwind-tokens.js.map +0 -1
@@ -0,0 +1,233 @@
1
+ import { DESIGN_STYLE_PROPERTIES } from './devtools-design-contract.js';
2
+ /**
3
+ * Same-origin browser helper for capturing privacy-safe widget element evidence and resolving it after
4
+ * reload. Kept dependency-free so it can run inside the classic devtools harness and widget iframe.
5
+ */
6
+ export const DEVTOOLS_DESIGN_ELEMENT_CLIENT_JS = `
7
+ (function(){
8
+ var STYLE_PROPERTIES=${JSON.stringify(DESIGN_STYLE_PROPERTIES)};
9
+ var RESOLVE_THRESHOLD=55;
10
+ var GENERATED_ID=/^(?::r\\d+:|react[-_:]|radix[-_:]|headlessui[-_:]|[a-f0-9]{12,}|[A-Za-z_-]*\\d{7,})$/i;
11
+ var INTERACTIVE_TAGS={button:"button",a:"link",textarea:"textbox",select:"combobox"};
12
+
13
+ function clean(value,max){
14
+ if(typeof value!=="string") return "";
15
+ return value.replace(/\\s+/g," ").trim().slice(0,max||160);
16
+ }
17
+ function stableId(value){
18
+ var id=clean(value,120);
19
+ return id&&!GENERATED_ID.test(id)?id:undefined;
20
+ }
21
+ function visibleText(element){
22
+ var parts=[];
23
+ function visit(node){
24
+ if(node.nodeType===3){ parts.push(node.nodeValue||""); return; }
25
+ if(node.nodeType!==1) return;
26
+ var current=node;
27
+ var tag=(current.tagName||"").toLowerCase();
28
+ if(tag==="script"||tag==="style"||tag==="template"||current.hidden||current.getAttribute("aria-hidden")==="true") return;
29
+ var style=current.ownerDocument&&current.ownerDocument.defaultView
30
+ ? current.ownerDocument.defaultView.getComputedStyle(current)
31
+ : null;
32
+ if(style&&(style.display==="none"||style.visibility==="hidden")) return;
33
+ for(var i=0;i<current.childNodes.length;i++) visit(current.childNodes[i]);
34
+ }
35
+ visit(element);
36
+ return clean(parts.join(" "),160);
37
+ }
38
+ function roleFor(element){
39
+ var explicit=clean(element.getAttribute("role")||"",80);
40
+ if(explicit) return explicit;
41
+ var tag=(element.tagName||"").toLowerCase();
42
+ if(tag==="input"){
43
+ var type=(element.getAttribute("type")||"text").toLowerCase();
44
+ if(type==="button"||type==="submit"||type==="reset") return "button";
45
+ if(type==="checkbox") return "checkbox";
46
+ if(type==="radio") return "radio";
47
+ if(type==="range") return "slider";
48
+ return "textbox";
49
+ }
50
+ return INTERACTIVE_TAGS[tag];
51
+ }
52
+ function accessibleName(element){
53
+ var labelled=clean(element.getAttribute("aria-label")||"",160);
54
+ if(labelled) return labelled;
55
+ var labelledBy=element.getAttribute("aria-labelledby");
56
+ if(labelledBy&&element.ownerDocument){
57
+ var label=element.ownerDocument.getElementById(labelledBy);
58
+ var labelText=label?visibleText(label):"";
59
+ if(labelText) return labelText;
60
+ }
61
+ var text=visibleText(element);
62
+ return text||undefined;
63
+ }
64
+ function classNames(element){
65
+ return Array.prototype.slice.call(element.classList||[])
66
+ .map(function(item){return clean(item,120);})
67
+ .filter(Boolean)
68
+ .sort()
69
+ .slice(0,20);
70
+ }
71
+ function authorHints(element){
72
+ var result={};
73
+ var testId=clean(element.getAttribute("data-testid")||"",160);
74
+ var test=clean(element.getAttribute("data-test")||"",160);
75
+ var component=clean(element.getAttribute("data-component")||"",160);
76
+ if(testId) result.testId=testId;
77
+ if(test) result.test=test;
78
+ if(component) result.component=component;
79
+ return result;
80
+ }
81
+ function nthOfType(element){
82
+ var index=1;
83
+ var sibling=element.previousElementSibling;
84
+ while(sibling){
85
+ if(sibling.tagName===element.tagName) index++;
86
+ sibling=sibling.previousElementSibling;
87
+ }
88
+ return index;
89
+ }
90
+ function segment(element){
91
+ var result={
92
+ tagName:(element.tagName||"").toLowerCase(),
93
+ classNames:classNames(element),
94
+ nthOfType:nthOfType(element)
95
+ };
96
+ var role=roleFor(element);
97
+ var id=stableId(element.id);
98
+ if(role) result.role=role;
99
+ if(id) result.stableId=id;
100
+ return result;
101
+ }
102
+ function ancestry(element){
103
+ var result=[];
104
+ var current=element.parentElement;
105
+ while(current&&result.length<6&&current!==element.ownerDocument.documentElement){
106
+ result.unshift(segment(current));
107
+ current=current.parentElement;
108
+ }
109
+ return result;
110
+ }
111
+ function computedStyles(element){
112
+ var result={};
113
+ var view=element.ownerDocument&&element.ownerDocument.defaultView;
114
+ var style=view?view.getComputedStyle(element):null;
115
+ for(var i=0;i<STYLE_PROPERTIES.length;i++){
116
+ var property=STYLE_PROPERTIES[i];
117
+ var value=style?style.getPropertyValue(property):"";
118
+ if(value) result[property]=clean(value,500);
119
+ }
120
+ return result;
121
+ }
122
+ function siblingIndex(element){
123
+ return element.parentElement
124
+ ? Array.prototype.indexOf.call(element.parentElement.children,element)
125
+ : 0;
126
+ }
127
+ function capture(element){
128
+ var rect=element.getBoundingClientRect();
129
+ var result={
130
+ tagName:(element.tagName||"").toLowerCase(),
131
+ classNames:classNames(element),
132
+ authorHints:authorHints(element),
133
+ ancestry:ancestry(element),
134
+ siblingIndex:siblingIndex(element),
135
+ siblingCount:element.parentElement?element.parentElement.children.length:1,
136
+ rect:{x:rect.x,y:rect.y,width:rect.width,height:rect.height},
137
+ computedStyles:computedStyles(element),
138
+ resolution:{confidence:100,evidence:["captured in current widget"],status:"resolved"}
139
+ };
140
+ var role=roleFor(element);
141
+ var name=accessibleName(element);
142
+ var text=visibleText(element);
143
+ var id=stableId(element.id);
144
+ if(role) result.role=role;
145
+ if(name) result.accessibleName=name;
146
+ if(text) result.visibleText=text;
147
+ if(id) result.stableId=id;
148
+ return result;
149
+ }
150
+ function hintsMatch(element,hints){
151
+ if(!hints) return false;
152
+ return Boolean(
153
+ (hints.testId&&element.getAttribute("data-testid")===hints.testId)||
154
+ (hints.test&&element.getAttribute("data-test")===hints.test)||
155
+ (hints.component&&element.getAttribute("data-component")===hints.component)
156
+ );
157
+ }
158
+ function ancestryScore(element,expected){
159
+ if(!Array.isArray(expected)||expected.length===0) return 0;
160
+ var actual=ancestry(element);
161
+ var matches=0;
162
+ var limit=Math.min(actual.length,expected.length);
163
+ for(var i=1;i<=limit;i++){
164
+ var left=actual[actual.length-i];
165
+ var right=expected[expected.length-i];
166
+ if(!left||!right||left.tagName!==right.tagName) break;
167
+ matches++;
168
+ if(right.stableId&&left.stableId===right.stableId) matches++;
169
+ if(right.role&&left.role===right.role) matches++;
170
+ }
171
+ return Math.min(15,Math.round((matches/Math.max(1,expected.length))*15));
172
+ }
173
+ function scored(element,fingerprint){
174
+ var score=0,evidence=[];
175
+ if(fingerprint.stableId&&stableId(element.id)===fingerprint.stableId){
176
+ score+=40; evidence.push("stable id");
177
+ }
178
+ if(hintsMatch(element,fingerprint.authorHints)){
179
+ score+=30; evidence.push("author hint");
180
+ }
181
+ var role=roleFor(element);
182
+ var name=accessibleName(element);
183
+ if(fingerprint.role&&role===fingerprint.role&&fingerprint.accessibleName&&name===fingerprint.accessibleName){
184
+ score+=20; evidence.push("role and accessible name");
185
+ }else if(fingerprint.role&&role===fingerprint.role){
186
+ score+=8; evidence.push("semantic role");
187
+ }
188
+ var text=visibleText(element);
189
+ if(fingerprint.visibleText&&text===fingerprint.visibleText){
190
+ score+=15; evidence.push("visible text");
191
+ }
192
+ var tree=ancestryScore(element,fingerprint.ancestry);
193
+ if(tree){ score+=tree; evidence.push("ancestry"); }
194
+ if(Number(fingerprint.siblingIndex)===siblingIndex(element)){
195
+ score+=5; evidence.push("sibling position");
196
+ }
197
+ return {element:element,confidence:Math.min(100,score),evidence:evidence};
198
+ }
199
+ function candidates(doc,fingerprint){
200
+ var pool=[];
201
+ if(fingerprint&&fingerprint.stableId){
202
+ var escapeValue=doc.defaultView&&doc.defaultView.CSS&&doc.defaultView.CSS.escape
203
+ ? doc.defaultView.CSS.escape(fingerprint.stableId)
204
+ : fingerprint.stableId.replace(/[^a-zA-Z0-9_-]/g,"\\\\$&");
205
+ try{
206
+ var exact=doc.querySelector("#"+escapeValue);
207
+ if(exact){
208
+ var exactScore=scored(exact,fingerprint||{});
209
+ if(exactScore.confidence>=RESOLVE_THRESHOLD) return [exactScore];
210
+ pool.push(exact);
211
+ }
212
+ }catch(error){}
213
+ }
214
+ var nodes=doc.querySelectorAll(fingerprint&&fingerprint.tagName?fingerprint.tagName:"*");
215
+ for(var i=0;i<nodes.length;i++) if(pool.indexOf(nodes[i])<0) pool.push(nodes[i]);
216
+ return pool.map(function(element){return scored(element,fingerprint||{});})
217
+ .sort(function(a,b){return b.confidence-a.confidence;});
218
+ }
219
+ function resolve(doc,fingerprint){
220
+ var ranked=candidates(doc,fingerprint);
221
+ var best=ranked[0];
222
+ var second=ranked[1];
223
+ if(!best||best.confidence<RESOLVE_THRESHOLD){
224
+ return {element:null,confidence:best?best.confidence:0,evidence:best?best.evidence:[],reason:"not_found"};
225
+ }
226
+ if(second&&best.confidence-second.confidence<10){
227
+ return {element:null,confidence:best.confidence,evidence:best.evidence,reason:"ambiguous"};
228
+ }
229
+ return best;
230
+ }
231
+ window.NoodleDesignElement={capture:capture,candidates:candidates,resolve:resolve};
232
+ })();`;
233
+ //# sourceMappingURL=devtools-design-element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devtools-design-element.js","sourceRoot":"","sources":["../src/devtools-design-element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAExE;;;GAGG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG;;yBAExB,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAgO1D,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Browser state machine for local Design mode. It owns selection interception, reversible annotation
3
+ * history, preview-only CSS, debounced persistence, and ready-brief finalization.
4
+ */
5
+ export declare const DEVTOOLS_DESIGN_PREVIEW_CLIENT_JS: string;
6
+ //# sourceMappingURL=devtools-design-preview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devtools-design-preview.d.ts","sourceRoot":"","sources":["../src/devtools-design-preview.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,iCAAiC,QA+axC,CAAC"}
@@ -0,0 +1,438 @@
1
+ import { DESIGN_STYLE_PROPERTIES } from './devtools-design-contract.js';
2
+ /**
3
+ * Browser state machine for local Design mode. It owns selection interception, reversible annotation
4
+ * history, preview-only CSS, debounced persistence, and ready-brief finalization.
5
+ */
6
+ export const DEVTOOLS_DESIGN_PREVIEW_CLIENT_JS = `
7
+ (function(){
8
+ var STYLE_PROPERTIES=${JSON.stringify(DESIGN_STYLE_PROPERTIES)};
9
+ var config=null;
10
+ var data={
11
+ active:false,
12
+ selecting:false,
13
+ session:null,
14
+ selected:null,
15
+ hovered:null,
16
+ history:[],
17
+ future:[],
18
+ dirty:false,
19
+ unresolved:0
20
+ };
21
+ data.selectionId=0;
22
+ var saveTimer=null;
23
+ var overlay=null;
24
+ var styleElement=null;
25
+ var draftStyleElement=null;
26
+ var wiredDocument=null;
27
+
28
+ function snapshot(){
29
+ return {
30
+ active:data.active,
31
+ selecting:data.selecting,
32
+ selectionId:data.selectionId,
33
+ session:data.session,
34
+ selected:data.selected,
35
+ hovered:data.hovered,
36
+ historyLength:data.history.length,
37
+ futureLength:data.future.length,
38
+ dirty:data.dirty,
39
+ unresolved:data.unresolved
40
+ };
41
+ }
42
+ function changed(){
43
+ if(config&&typeof config.onChange==="function") config.onChange(snapshot());
44
+ }
45
+ function status(message,isError){
46
+ if(config&&typeof config.onStatus==="function") config.onStatus(message,Boolean(isError));
47
+ }
48
+ function frameDocument(){
49
+ try{return config&&config.frame&&config.frame.contentDocument;}catch(error){return null;}
50
+ }
51
+ function context(){
52
+ return config&&typeof config.getContext==="function"?config.getContext():null;
53
+ }
54
+ function query(){
55
+ var current=context()||{};
56
+ var params=new URLSearchParams();
57
+ params.set("toolName",current.toolName||"widget");
58
+ if(current.resourceUri) params.set("resourceUri",current.resourceUri);
59
+ params.set("width",String(current.width||820));
60
+ params.set("height",String(current.height||640));
61
+ params.set("device",current.device==="mobile"?"mobile":"desktop");
62
+ params.set("theme",current.theme==="dark"?"dark":"light");
63
+ return params.toString();
64
+ }
65
+ function requestJson(url,options){
66
+ return fetch(url,options).then(function(response){
67
+ return response.json().then(function(body){
68
+ if(!response.ok||!body||body.ok===false){
69
+ var message=body&&body.error&&body.error.message?body.error.message:"Design request failed.";
70
+ var error=new Error(message); error.status=response.status; throw error;
71
+ }
72
+ return body;
73
+ });
74
+ });
75
+ }
76
+ function ensureOverlay(doc){
77
+ if(overlay&&overlay.ownerDocument===doc) return overlay;
78
+ overlay=doc.createElement("div");
79
+ overlay.id="noodle-design-overlay";
80
+ overlay.setAttribute("aria-hidden","true");
81
+ overlay.style.cssText="position:fixed;top:0;left:0;display:none;z-index:2147483646;pointer-events:none;overflow:visible;border:2px solid #f97316;border-radius:3px;background:rgba(249,115,22,.12);box-shadow:0 0 0 1px rgba(255,255,255,.3),0 0 22px rgba(249,115,22,.2);transition:transform 100ms cubic-bezier(.23,1,.32,1),width 100ms cubic-bezier(.23,1,.32,1),height 100ms cubic-bezier(.23,1,.32,1);";
82
+ overlay.innerHTML='<span data-design-overlay-dot style="position:absolute;left:50%;top:-7px;width:12px;height:12px;transform:translateX(-50%);border-radius:999px;background:#f97316;box-shadow:0 0 0 2px #fff"></span><span data-design-overlay-label style="position:absolute;left:-2px;min-width:200px;max-width:300px;padding:7px 9px;border-radius:7px;background:#29292c;color:#fafafa;box-shadow:0 8px 28px rgba(0,0,0,.38);font:600 11px/1.4 Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;letter-spacing:0;white-space:nowrap;text-align:left"></span>';
83
+ (doc.body||doc.documentElement).appendChild(overlay);
84
+ return overlay;
85
+ }
86
+ function paintOverlay(element,state){
87
+ var doc=frameDocument();
88
+ if(!doc||!element){if(overlay) overlay.style.display="none";return;}
89
+ var box=element.getBoundingClientRect();
90
+ var layer=ensureOverlay(doc);
91
+ var view=doc.defaultView;
92
+ var computed=view&&view.getComputedStyle?view.getComputedStyle(element):null;
93
+ var tag=String(element.tagName||"element").toLowerCase();
94
+ var width=Math.max(0,Math.round(box.width));
95
+ var height=Math.max(0,Math.round(box.height));
96
+ var color=computed&&computed.color?computed.color:"unknown";
97
+ var fontSize=computed&&computed.fontSize?computed.fontSize:"unknown";
98
+ var fontFamily=computed&&computed.fontFamily?computed.fontFamily.split(",")[0].replace(/[\\"']/g,"").trim():"system";
99
+ var label=layer.querySelector("[data-design-overlay-label]");
100
+ if(label){
101
+ label.textContent=tag+" "+width+"×"+height+"\\ncolor "+color+" font "+fontSize+" "+fontFamily.slice(0,28);
102
+ label.style.top=box.top>72?"-58px":height+8+"px";
103
+ label.style.whiteSpace="pre";
104
+ }
105
+ layer.dataset.state=state==="selected"?"selected":"hover";
106
+ layer.style.background=state==="selected"?"rgba(249,115,22,.18)":"rgba(249,115,22,.1)";
107
+ layer.style.display="block";
108
+ layer.style.transform="translate("+Math.round(box.left)+"px,"+Math.round(box.top)+"px)";
109
+ layer.style.width=width+"px";
110
+ layer.style.height=height+"px";
111
+ }
112
+ function validValue(doc,property,value){
113
+ if(STYLE_PROPERTIES.indexOf(property)<0) return false;
114
+ if(typeof value!=="string"||!value.trim()) return false;
115
+ var probe=doc.createElement("div").style;
116
+ probe.setProperty(property,value);
117
+ return Boolean(probe.getPropertyValue(property));
118
+ }
119
+ function clearTargets(doc){
120
+ var targets=doc.querySelectorAll("[data-noodle-design-target]");
121
+ for(var i=0;i<targets.length;i++) targets[i].removeAttribute("data-noodle-design-target");
122
+ var draftTargets=doc.querySelectorAll("[data-noodle-design-draft]");
123
+ for(var d=0;d<draftTargets.length;d++) draftTargets[d].removeAttribute("data-noodle-design-draft");
124
+ var existing=doc.getElementById("noodle-design-preview-styles");
125
+ if(existing) existing.remove();
126
+ var existingDraft=doc.getElementById("noodle-design-draft-styles");
127
+ if(existingDraft) existingDraft.remove();
128
+ styleElement=null;
129
+ draftStyleElement=null;
130
+ }
131
+ function clearDraftPreview(){
132
+ var doc=frameDocument();
133
+ if(!doc) return;
134
+ var targets=doc.querySelectorAll("[data-noodle-design-draft]");
135
+ for(var i=0;i<targets.length;i++) targets[i].removeAttribute("data-noodle-design-draft");
136
+ var existing=doc.getElementById("noodle-design-draft-styles");
137
+ if(existing) existing.remove();
138
+ draftStyleElement=null;
139
+ }
140
+ function previewChanges(changes){
141
+ var doc=frameDocument();
142
+ clearDraftPreview();
143
+ if(!doc||!data.selected||!data.selected.element||!Array.isArray(changes)) return;
144
+ var declarations=[];
145
+ for(var i=0;i<changes.length;i++){
146
+ var change=changes[i];
147
+ if(change&&validValue(doc,change.property,change.to)){
148
+ declarations.push(change.property+":"+change.to+"!important");
149
+ }
150
+ }
151
+ if(!declarations.length) return;
152
+ data.selected.element.setAttribute("data-noodle-design-draft","true");
153
+ draftStyleElement=doc.createElement("style");
154
+ draftStyleElement.id="noodle-design-draft-styles";
155
+ draftStyleElement.textContent='[data-noodle-design-draft="true"]{'+declarations.join(";")+'}';
156
+ doc.head.appendChild(draftStyleElement);
157
+ }
158
+ function applyAnnotations(){
159
+ var doc=frameDocument();
160
+ if(!doc||!window.NoodleDesignElement||!data.session) return;
161
+ clearTargets(doc);
162
+ var rules=[];
163
+ var unresolved=0;
164
+ var annotations=data.session.annotations||[];
165
+ for(var i=0;i<annotations.length;i++){
166
+ var annotation=annotations[i];
167
+ var resolution=window.NoodleDesignElement.resolve(doc,annotation.target);
168
+ if(!resolution.element){unresolved++;continue;}
169
+ var targetId="annotation-"+i;
170
+ resolution.element.setAttribute("data-noodle-design-target",targetId);
171
+ var declarations=[];
172
+ for(var j=0;j<annotation.changes.length;j++){
173
+ var change=annotation.changes[j];
174
+ if(validValue(doc,change.property,change.to)){
175
+ declarations.push(change.property+":"+change.to+"!important");
176
+ }
177
+ }
178
+ if(declarations.length){
179
+ rules.push('[data-noodle-design-target="'+targetId+'"]{'+declarations.join(";")+'}');
180
+ }
181
+ }
182
+ styleElement=doc.createElement("style");
183
+ styleElement.id="noodle-design-preview-styles";
184
+ styleElement.textContent=rules.join("\\n");
185
+ doc.head.appendChild(styleElement);
186
+ data.unresolved=unresolved;
187
+ }
188
+ function selectableElement(element){
189
+ if(!element||!element.closest) return element;
190
+ var interactive=element.closest("button,a[href],input,textarea,select,[role=button],[role=link],[role=tab],[role=menuitem]");
191
+ if(interactive) return interactive;
192
+ var inlineTags={span:true,strong:true,em:true,small:true,b:true,i:true,u:true,svg:true,path:true,g:true,use:true};
193
+ var current=element;
194
+ var body=wiredDocument&&wiredDocument.body;
195
+ while(current&&current.parentElement&&current.parentElement!==body&&inlineTags[String(current.tagName||"").toLowerCase()]){
196
+ current=current.parentElement;
197
+ }
198
+ return current||element;
199
+ }
200
+ function select(element){
201
+ element=selectableElement(element);
202
+ if(!element||!window.NoodleDesignElement) return null;
203
+ clearDraftPreview();
204
+ data.selected={
205
+ element:element,
206
+ target:window.NoodleDesignElement.capture(element)
207
+ };
208
+ data.selectionId+=1;
209
+ paintOverlay(element,"selected");
210
+ changed();
211
+ return data.selected.target;
212
+ }
213
+ function pointerOver(event){
214
+ if(!data.active||!data.selecting||!event.target||event.target===overlay) return;
215
+ var element=selectableElement(event.target);
216
+ if(data.hovered===element) return;
217
+ data.hovered=element;
218
+ paintOverlay(element,"hover");
219
+ }
220
+ function pointerOut(event){
221
+ if(!data.active||!data.selecting||event.relatedTarget) return;
222
+ data.hovered=null;
223
+ paintOverlay(data.selected&&data.selected.element,"selected");
224
+ }
225
+ function repaintOverlay(){
226
+ var element=data.hovered||(data.selected&&data.selected.element);
227
+ paintOverlay(element,data.hovered?"hover":"selected");
228
+ }
229
+ function click(event){
230
+ if(!data.active||!data.selecting||!event.target||event.target===overlay) return;
231
+ event.preventDefault();
232
+ event.stopPropagation();
233
+ if(event.stopImmediatePropagation) event.stopImmediatePropagation();
234
+ select(event.target);
235
+ }
236
+ function keydown(event){
237
+ if(!data.active||!data.selecting) return;
238
+ if(event.key==="Escape"){
239
+ clearDraftPreview(); data.selected=null; data.hovered=null; paintOverlay(null); changed(); return;
240
+ }
241
+ if(event.key==="Enter"&&event.target&&event.target!==wiredDocument.body){
242
+ event.preventDefault(); event.stopPropagation(); select(event.target);
243
+ }
244
+ }
245
+ function wire(){
246
+ var doc=frameDocument();
247
+ if(!doc||wiredDocument===doc) return;
248
+ unwire();
249
+ wiredDocument=doc;
250
+ doc.addEventListener("pointerover",pointerOver,true);
251
+ doc.addEventListener("mousemove",pointerOver,true);
252
+ doc.addEventListener("pointerout",pointerOut,true);
253
+ doc.addEventListener("click",click,true);
254
+ doc.addEventListener("keydown",keydown,true);
255
+ if(doc.defaultView){
256
+ doc.defaultView.addEventListener("resize",repaintOverlay);
257
+ doc.defaultView.addEventListener("scroll",repaintOverlay,true);
258
+ }
259
+ ensureOverlay(doc);
260
+ updateCursor();
261
+ }
262
+ function updateCursor(){
263
+ if(!wiredDocument) return;
264
+ wiredDocument.documentElement.style.cursor=data.selecting
265
+ ? 'url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22%3E%3Cpath d=%22M4 2.8v15.6l4.2-4.1 2.9 6.2 3.2-1.5-2.8-6.1h5.8L4 2.8Z%22 fill=%22%23f97316%22 stroke=%22%23fff%22 stroke-width=%221.2%22 stroke-linejoin=%22round%22/%3E%3C/svg%3E") 4 3, pointer'
266
+ :"";
267
+ }
268
+ function setSelecting(enabled){
269
+ data.selecting=Boolean(enabled);
270
+ if(!data.selecting){
271
+ clearDraftPreview();
272
+ data.selected=null;
273
+ data.hovered=null;
274
+ paintOverlay(null);
275
+ }
276
+ updateCursor();
277
+ status(data.selecting?"Select an element in the widget.":"Annotations are off.",false);
278
+ changed();
279
+ }
280
+ function unwire(){
281
+ if(!wiredDocument) return;
282
+ wiredDocument.removeEventListener("pointerover",pointerOver,true);
283
+ wiredDocument.removeEventListener("mousemove",pointerOver,true);
284
+ wiredDocument.removeEventListener("pointerout",pointerOut,true);
285
+ wiredDocument.removeEventListener("click",click,true);
286
+ wiredDocument.removeEventListener("keydown",keydown,true);
287
+ if(wiredDocument.defaultView){
288
+ wiredDocument.defaultView.removeEventListener("resize",repaintOverlay);
289
+ wiredDocument.defaultView.removeEventListener("scroll",repaintOverlay,true);
290
+ }
291
+ wiredDocument.documentElement.style.cursor="";
292
+ if(overlay) overlay.remove();
293
+ overlay=null;
294
+ wiredDocument=null;
295
+ }
296
+ function nextUpdatedAt(previous){
297
+ var now=new Date();
298
+ if(previous&&now.toISOString()<=previous) now=new Date(Date.parse(previous)+1);
299
+ return now.toISOString();
300
+ }
301
+ function persist(){
302
+ if(saveTimer){clearTimeout(saveTimer);saveTimer=null;}
303
+ if(!data.session||!data.dirty) return Promise.resolve(data.session);
304
+ var previous=data.session.updatedAt;
305
+ var pending=Object.assign({},data.session,{updatedAt:nextUpdatedAt(previous)});
306
+ data.session=pending;
307
+ return requestJson("/design/session",{
308
+ method:"PUT",
309
+ headers:{"content-type":"application/json","if-unmodified-since":previous},
310
+ body:JSON.stringify(pending)
311
+ }).then(function(body){
312
+ data.session=body.session; data.dirty=false; status("Design draft saved.",false); changed();
313
+ return data.session;
314
+ }).catch(function(error){
315
+ data.session=Object.assign({},data.session,{updatedAt:previous});
316
+ data.dirty=true; status(error.message||"Could not save the design draft.",true); changed(); throw error;
317
+ });
318
+ }
319
+ function schedulePersist(){
320
+ if(saveTimer) clearTimeout(saveTimer);
321
+ saveTimer=setTimeout(function(){persist().catch(function(){});},250);
322
+ }
323
+ function pushHistory(){
324
+ if(!data.session) return;
325
+ data.history.push(JSON.stringify(data.session.annotations||[]));
326
+ if(data.history.length>50) data.history.shift();
327
+ data.future=[];
328
+ }
329
+ function replaceAnnotations(annotations){
330
+ if(!data.session) return;
331
+ data.session=Object.assign({},data.session,{annotations:annotations});
332
+ data.dirty=true;
333
+ applyAnnotations();
334
+ schedulePersist();
335
+ changed();
336
+ }
337
+ function saveAnnotation(annotation){
338
+ if(!data.session||!annotation) return;
339
+ clearDraftPreview();
340
+ pushHistory();
341
+ var annotations=(data.session.annotations||[]).slice();
342
+ var index=annotations.findIndex(function(item){return item.id===annotation.id;});
343
+ if(index>=0) annotations[index]=annotation; else annotations.push(annotation);
344
+ replaceAnnotations(annotations);
345
+ data.selected=null;
346
+ data.hovered=null;
347
+ paintOverlay(null);
348
+ changed();
349
+ status("Annotation saved.",false);
350
+ }
351
+ function removeAnnotation(id){
352
+ if(!data.session) return;
353
+ pushHistory();
354
+ replaceAnnotations((data.session.annotations||[]).filter(function(item){return item.id!==id;}));
355
+ status("Annotation removed.",false);
356
+ }
357
+ function undo(){
358
+ if(!data.session||!data.history.length) return;
359
+ data.future.push(JSON.stringify(data.session.annotations||[]));
360
+ replaceAnnotations(JSON.parse(data.history.pop()));
361
+ status("Undid the last design change.",false);
362
+ }
363
+ function redo(){
364
+ if(!data.session||!data.future.length) return;
365
+ data.history.push(JSON.stringify(data.session.annotations||[]));
366
+ replaceAnnotations(JSON.parse(data.future.pop()));
367
+ status("Restored the design change.",false);
368
+ }
369
+ function rehydrate(){
370
+ if(!data.active) return Promise.resolve();
371
+ wire();
372
+ applyAnnotations();
373
+ if(data.selected&&data.selected.target){
374
+ var doc=frameDocument();
375
+ var resolved=doc&&window.NoodleDesignElement.resolve(doc,data.selected.target);
376
+ data.selected=resolved&&resolved.element?{element:resolved.element,target:data.selected.target}:null;
377
+ paintOverlay(data.selected&&data.selected.element,"selected");
378
+ }
379
+ changed();
380
+ return Promise.resolve();
381
+ }
382
+ function enter(){
383
+ data.active=true;
384
+ data.selecting=false;
385
+ var current=context();
386
+ if(!current||!current.toolName){
387
+ data.session=null; status("Open a widget in Preview, then return to Design.",true); changed();
388
+ return Promise.resolve(null);
389
+ }
390
+ return requestJson("/design/session?"+query()).then(function(body){
391
+ data.session=body.session;
392
+ data.dirty=false;
393
+ wire();
394
+ applyAnnotations();
395
+ status("Turn on annotations when you are ready to select an element.",false);
396
+ changed();
397
+ return data.session;
398
+ }).catch(function(error){
399
+ status(error.message||"Could not open Design.",true); changed(); throw error;
400
+ });
401
+ }
402
+ function leave(){
403
+ return persist().catch(function(){}).then(function(){
404
+ data.active=false; data.selected=null; data.hovered=null;
405
+ data.selecting=false;
406
+ var doc=frameDocument(); if(doc) clearTargets(doc);
407
+ unwire(); changed();
408
+ });
409
+ }
410
+ function finalize(){
411
+ return persist().then(function(){
412
+ if(!data.session) throw new Error("Open a widget before sending design feedback.");
413
+ return requestJson("/design/finalize",{
414
+ method:"POST",
415
+ headers:{"content-type":"application/json"},
416
+ body:JSON.stringify({expectedUpdatedAt:data.session.updatedAt})
417
+ });
418
+ });
419
+ }
420
+ function configure(next){config=next;}
421
+ window.NoodleDesign={
422
+ configure:configure,
423
+ enter:enter,
424
+ leave:leave,
425
+ select:select,
426
+ setSelecting:setSelecting,
427
+ previewChanges:previewChanges,
428
+ saveAnnotation:saveAnnotation,
429
+ removeAnnotation:removeAnnotation,
430
+ undo:undo,
431
+ redo:redo,
432
+ rehydrate:rehydrate,
433
+ persist:persist,
434
+ finalize:finalize,
435
+ state:snapshot
436
+ };
437
+ })();`;
438
+ //# sourceMappingURL=devtools-design-preview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devtools-design-preview.js","sourceRoot":"","sources":["../src/devtools-design-preview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAExE;;;GAGG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG;;yBAExB,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA6a1D,CAAC"}