@mulmoclaude/shapescript-plugin 2.7.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/render.js CHANGED
@@ -189,7 +189,7 @@ async function A(e) {
189
189
  }
190
190
  //#endregion
191
191
  //#region src/render/tool.ts
192
- var j = 30, M = 25, N = 1, P = 480, F = 900, I = 160, L = 85, R = h + 3e4, z = "renderShapeScript", B = "Render a ShapeScript model to a PNG image and save it, so you can LOOK at the model you wrote and check it before showing it to the user. Returns the image path — read that file to see the result. By default it renders four camera angles onto one sheet, because a single view cannot settle what is in front of what. Takes the same source as presentShapeScript: inline `script`, or `path` to a saved .shape file.", V = "Use renderShapeScript to CHECK a 3D model you wrote before presenting it — it saves a PNG and returns the path, which you then read to see what the model actually looks like. Fix what you see and re-render. Rendering needs a local headless browser; if it reports one is missing, say so and continue with presentShapeScript rather than retrying.", H = {
192
+ var j = 30, M = 25, N = 1, P = 480, F = 900, I = 160, L = 85, R = h + 3e4, z = R + 6e4, B = "renderShapeScript", V = "Render a ShapeScript model to a PNG image and save it, so you can LOOK at the model you wrote and check it before showing it to the user. Returns the image path — read that file to see the result. By default it renders four camera angles onto one sheet, because a single view cannot settle what is in front of what. Takes the same source as presentShapeScript: inline `script`, or `path` to a saved .shape file.", H = "Use renderShapeScript to CHECK a 3D model you wrote before presenting it — it saves a PNG and returns the path, which you then read to see what the model actually looks like. Fix what you see and re-render. Rendering needs a local headless browser; if it reports one is missing, say so and continue with presentShapeScript rather than retrying.", U = {
193
193
  type: "object",
194
194
  properties: {
195
195
  script: {
@@ -233,18 +233,18 @@ var j = 30, M = 25, N = 1, P = 480, F = 900, I = 160, L = 85, R = h + 3e4, z = "
233
233
  },
234
234
  required: []
235
235
  };
236
- function U(e, t) {
236
+ function W(e, t) {
237
237
  return typeof e != "number" || !Number.isFinite(e) ? t : Math.min(F, Math.max(I, Math.round(e)));
238
238
  }
239
- function W(e, t) {
239
+ function G(e, t) {
240
240
  return typeof e == "number" && Number.isFinite(e) ? e : t;
241
241
  }
242
- var G = (e) => `${Math.round(e)}°`;
243
- function K(e, t, n) {
242
+ var K = (e) => `${Math.round(e)}°`;
243
+ function q(e, t, n) {
244
244
  let r = (e, t, n) => ({
245
245
  azimuth: e,
246
246
  elevation: t,
247
- label: `${n} — az ${G(e)}, el ${G(t)}`
247
+ label: `${n} — az ${K(e)}, el ${K(t)}`
248
248
  });
249
249
  return n ? [r(e, t, "view")] : [
250
250
  r(e, t, "front-right"),
@@ -253,34 +253,34 @@ function K(e, t, n) {
253
253
  r(e, L, "top")
254
254
  ];
255
255
  }
256
- async function q(e, t) {
256
+ async function J(e, t) {
257
257
  let n = typeof t.script == "string" && t.script.trim() !== "" ? t.script : void 0, r = typeof t.path == "string" && t.path.trim() !== "" ? t.path : void 0;
258
258
  if (n && r) throw Error("Provide either `script` or `path`, not both");
259
259
  if (n) return n;
260
260
  if (r) return e.readShape(r);
261
261
  throw Error("Provide either `script` (inline source) or `path` (an existing .shape file)");
262
262
  }
263
- function J(e, t, n, r) {
263
+ function Y(e, t, n, r) {
264
264
  return {
265
265
  script: t,
266
266
  views: n,
267
- width: U(e.width, P),
268
- height: U(e.height, P),
269
- zoom: Math.max(W(e.zoom, N), .01),
267
+ width: W(e.width, P),
268
+ height: W(e.height, P),
269
+ zoom: Math.max(G(e.zoom, N), .01),
270
270
  projection: e.projection === "orthographic" ? "orthographic" : "perspective",
271
271
  ...r ? { onWarning: r } : {}
272
272
  };
273
273
  }
274
- function Y(e, t) {
274
+ function X(e, t) {
275
275
  let n = t.map((e) => e.label).join("; ");
276
276
  return `Saved render to ${e} (${t.length === 1 ? "1 view" : `${t.length} views`}: ${n}). Read that file to see the model.`;
277
277
  }
278
- async function X(e, t) {
279
- let n = await q(e, t), r = K(W(t.azimuth, j), W(t.elevation, M), t.views === "single");
278
+ async function Z(e, t) {
279
+ let n = await J(e, t), r = q(G(t.azimuth, j), G(t.elevation, M), t.views === "single");
280
280
  try {
281
- let i = await A(J(t, n, r, e.onWarning));
281
+ let i = await A(Y(t, n, r, e.onWarning));
282
282
  return {
283
- message: Y(await e.saveImage(i), r),
283
+ message: X(await e.saveImage(i), r),
284
284
  rendered: !0
285
285
  };
286
286
  } catch (t) {
@@ -293,18 +293,18 @@ async function X(e, t) {
293
293
  }
294
294
  //#endregion
295
295
  //#region src/render/thumbnail.ts
296
- var Z = 640, Q = 480, $ = 30, ee = 25;
297
- async function te(e, t) {
296
+ var Q = 640, $ = 480, ee = 30, te = 25;
297
+ async function ne(e, t) {
298
298
  try {
299
299
  let n = await A({
300
300
  script: e,
301
301
  views: [{
302
- azimuth: $,
303
- elevation: ee,
302
+ azimuth: ee,
303
+ elevation: te,
304
304
  label: ""
305
305
  }],
306
- width: Z,
307
- height: Q,
306
+ width: Q,
307
+ height: $,
308
308
  zoom: 1,
309
309
  projection: "perspective",
310
310
  ...t ? { onWarning: t } : {}
@@ -316,4 +316,4 @@ async function te(e, t) {
316
316
  }
317
317
  }
318
318
  //#endregion
319
- export { g as CHROMIUM_HINT, m as LAUNCH_TIMEOUT_MS, h as RENDER_BUDGET_MS, B as RENDER_SHAPE_SCRIPT_DESCRIPTION, V as RENDER_SHAPE_SCRIPT_PROMPT, H as RENDER_SHAPE_SCRIPT_SCHEMA, z as RENDER_SHAPE_SCRIPT_TOOL_NAME, p as RENDER_TIMEOUT_MS, R as RENDER_TOOL_TIMEOUT_MS, _ as RenderUnavailableError, u as buildRenderPage, X as executeRenderShapeScript, s as gridFor, J as renderOptionsFrom, A as renderShapeScriptSheet, te as renderShapeThumbnail, Y as savedMessage, K as viewAngles };
319
+ export { g as CHROMIUM_HINT, m as LAUNCH_TIMEOUT_MS, z as PUBLISH_TOOL_TIMEOUT_MS, h as RENDER_BUDGET_MS, V as RENDER_SHAPE_SCRIPT_DESCRIPTION, H as RENDER_SHAPE_SCRIPT_PROMPT, U as RENDER_SHAPE_SCRIPT_SCHEMA, B as RENDER_SHAPE_SCRIPT_TOOL_NAME, p as RENDER_TIMEOUT_MS, R as RENDER_TOOL_TIMEOUT_MS, _ as RenderUnavailableError, u as buildRenderPage, Z as executeRenderShapeScript, s as gridFor, Y as renderOptionsFrom, A as renderShapeScriptSheet, ne as renderShapeThumbnail, X as savedMessage, q as viewAngles };
package/dist/style.css CHANGED
@@ -1,3 +1,3 @@
1
1
  /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.relative{position:relative}.static{position:static}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.rounded{border-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.lowercase{text-transform:lowercase}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}.present3d-container[data-v-792dc725]{color:#fff;background:#1a1a1a;flex-direction:column;width:100%;height:100%;display:flex}.header[data-v-792dc725]{background:#2a2a2a;border-bottom:1px solid #444;justify-content:space-between;align-items:center;padding:1rem;display:flex}.header h1[data-v-792dc725]{margin:0;font-size:1.5rem;font-weight:600}.controls[data-v-792dc725]{gap:.5rem;display:flex}.control-btn[data-v-792dc725]{color:#fff;cursor:pointer;background:#3a3a3a;border:1px solid #555;border-radius:4px;align-items:center;gap:.25rem;padding:.5rem 1rem;font-size:.9rem;transition:background .2s;display:flex}.control-btn[data-v-792dc725]:hover{background:#4a4a4a}.control-btn[data-v-792dc725]:disabled{cursor:not-allowed;opacity:.5}.control-btn[data-v-792dc725]:disabled:hover{background:#3a3a3a}.control-btn .material-icons[data-v-792dc725]{font-size:1.2rem}.viewport[data-v-792dc725]{flex:1;min-height:0;position:relative}.error[data-v-792dc725]{color:#f66;background:#ff000020;border-bottom:1px solid #ff000040;padding:1rem;font-family:monospace}.notice[data-v-792dc725]{color:#e0b060;background:#ffaa0020;border-bottom:1px solid #ffaa0040;padding:.5rem 1rem;font-family:monospace;font-size:.85rem}.output[data-v-792dc725]{color:#ccc;white-space:pre-wrap;background:#ffffff10;margin:0}.script-source[data-v-792dc725]{background:#00000040;border-top:1px solid #444;padding:.5rem;font-family:monospace;font-size:.85rem}.script-source summary[data-v-792dc725]{cursor:pointer;-webkit-user-select:none;user-select:none;background:#2a2a2a;border-radius:4px;padding:.5rem}.script-source[open] summary[data-v-792dc725]{margin-bottom:.5rem}.script-source summary[data-v-792dc725]:hover{background:#3a3a3a}.script-editor[data-v-792dc725]{color:#aaa;resize:vertical;background:#1a1a1a;border:1px solid #444;border-radius:4px;width:100%;min-height:150px;margin-bottom:.5rem;padding:1rem;font-family:Courier New,monospace;font-size:.9rem}.script-editor[data-v-792dc725]:focus{background:#222;border-color:#666;outline:none}.apply-btn[data-v-792dc725]{color:#fff;cursor:pointer;background:#4caf50;border:none;border-radius:4px;padding:.5rem 1rem;font-size:.9rem;transition:background .2s}.apply-btn[data-v-792dc725]:hover{background:#45a049}.apply-btn[data-v-792dc725]:active{background:#3d8b40}.apply-btn[data-v-792dc725]:disabled{color:#666;cursor:not-allowed;opacity:.6;background:#ccc}.apply-btn[data-v-792dc725]:disabled:hover{background:#ccc}.preview-container[data-v-6844181e]{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);border-radius:8px;width:100%;height:100%;min-height:150px;position:relative;overflow:hidden}.preview-viewport[data-v-6844181e]{width:100%;height:100%}.preview-title[data-v-6844181e]{color:#fff;text-align:center;white-space:nowrap;text-overflow:ellipsis;background:#000000b3;padding:.5rem;font-size:.75rem;font-weight:500;position:absolute;bottom:0;left:0;right:0;overflow:hidden}
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.relative{position:relative}.static{position:static}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.rounded{border-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.lowercase{text-transform:lowercase}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}.present3d-container[data-v-6a625e86]{color:#fff;background:#1a1a1a;flex-direction:column;width:100%;height:100%;display:flex}.header[data-v-6a625e86]{background:#2a2a2a;border-bottom:1px solid #444;justify-content:space-between;align-items:center;padding:1rem;display:flex}.header h1[data-v-6a625e86]{margin:0;font-size:1.5rem;font-weight:600}.controls[data-v-6a625e86]{gap:.5rem;display:flex}.control-btn[data-v-6a625e86]{color:#fff;cursor:pointer;background:#3a3a3a;border:1px solid #555;border-radius:4px;align-items:center;gap:.25rem;padding:.5rem 1rem;font-size:.9rem;transition:background .2s;display:flex}.control-btn[data-v-6a625e86]:hover{background:#4a4a4a}.control-btn[data-v-6a625e86]:disabled{cursor:not-allowed;opacity:.5}.control-btn[data-v-6a625e86]:disabled:hover{background:#3a3a3a}.control-btn .material-icons[data-v-6a625e86]{font-size:1.2rem}.viewport[data-v-6a625e86]{flex:1;min-height:0;position:relative}.error[data-v-6a625e86]{color:#f66;background:#ff000020;border-bottom:1px solid #ff000040;padding:1rem;font-family:monospace}.notice[data-v-6a625e86]{color:#e0b060;background:#ffaa0020;border-bottom:1px solid #ffaa0040;padding:.5rem 1rem;font-family:monospace;font-size:.85rem}.output[data-v-6a625e86]{color:#ccc;white-space:pre-wrap;background:#ffffff10;margin:0}.script-source[data-v-6a625e86]{background:#00000040;border-top:1px solid #444;padding:.5rem;font-family:monospace;font-size:.85rem}.script-source summary[data-v-6a625e86]{cursor:pointer;-webkit-user-select:none;user-select:none;background:#2a2a2a;border-radius:4px;padding:.5rem}.script-source[open] summary[data-v-6a625e86]{margin-bottom:.5rem}.script-source summary[data-v-6a625e86]:hover{background:#3a3a3a}.script-editor[data-v-6a625e86]{color:#aaa;resize:vertical;background:#1a1a1a;border:1px solid #444;border-radius:4px;width:100%;min-height:150px;margin-bottom:.5rem;padding:1rem;font-family:Courier New,monospace;font-size:.9rem}.script-editor[data-v-6a625e86]:focus{background:#222;border-color:#666;outline:none}.apply-btn[data-v-6a625e86]{color:#fff;cursor:pointer;background:#4caf50;border:none;border-radius:4px;padding:.5rem 1rem;font-size:.9rem;transition:background .2s}.apply-btn[data-v-6a625e86]:hover{background:#45a049}.apply-btn[data-v-6a625e86]:active{background:#3d8b40}.apply-btn[data-v-6a625e86]:disabled{color:#666;cursor:not-allowed;opacity:.6;background:#ccc}.apply-btn[data-v-6a625e86]:disabled:hover{background:#ccc}.preview-container[data-v-6844181e]{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);border-radius:8px;width:100%;height:100%;min-height:150px;position:relative;overflow:hidden}.preview-viewport[data-v-6844181e]{width:100%;height:100%}.preview-title[data-v-6844181e]{color:#fff;text-align:center;white-space:nowrap;text-overflow:ellipsis;background:#000000b3;padding:.5rem;font-size:.75rem;font-weight:500;position:absolute;bottom:0;left:0;right:0;overflow:hidden}
3
3
  /*$vite$:1*/
@@ -1 +1 @@
1
- {"version":3,"file":"View.vue.d.ts","sourceRoot":"","sources":["../../src/vue/View.vue"],"names":[],"mappings":"AAgsBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAyB5D,KAAK,WAAW,GAAG;IACjB,cAAc,EAAE,UAAU,CAAC,sBAAsB,CAAC,CAAC;CACpD,CAAC;AAsoBF,QAAA,MAAM,YAAY;;;;kFAGhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
1
+ {"version":3,"file":"View.vue.d.ts","sourceRoot":"","sources":["../../src/vue/View.vue"],"names":[],"mappings":"AAouBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAyB5D,KAAK,WAAW,GAAG;IACjB,cAAc,EAAE,UAAU,CAAC,sBAAsB,CAAC,CAAC;CACpD,CAAC;AAorBF,QAAA,MAAM,YAAY;;;;kFAGhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}