vintage-frames 0.3.0 → 0.5.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 (45) hide show
  1. package/custom-elements.json +181 -32
  2. package/dist/components/vf-button.js +25 -25
  3. package/dist/components/vf-checkbox.js +15 -15
  4. package/dist/components/vf-container.d.ts +37 -3
  5. package/dist/components/vf-container.js +32 -10
  6. package/dist/components/vf-desktop.d.ts +103 -22
  7. package/dist/components/vf-desktop.js +100 -121
  8. package/dist/components/vf-dialog.d.ts +19 -15
  9. package/dist/components/vf-dialog.js +45 -53
  10. package/dist/components/vf-icon.js +56 -56
  11. package/dist/components/vf-list-item.js +16 -16
  12. package/dist/components/vf-list.js +26 -26
  13. package/dist/components/vf-menu-item.js +24 -24
  14. package/dist/components/vf-menu.js +27 -27
  15. package/dist/components/vf-number-field.js +17 -17
  16. package/dist/components/vf-progress-bar.js +3 -3
  17. package/dist/components/vf-radio-group.js +13 -13
  18. package/dist/components/vf-radio.js +16 -16
  19. package/dist/components/vf-select.js +27 -27
  20. package/dist/components/vf-slider.js +32 -32
  21. package/dist/components/vf-window.js +69 -69
  22. package/dist/index.d.ts +14 -0
  23. package/dist/index.js +73 -71
  24. package/dist/modal-dialog.js +21 -21
  25. package/dist/pattern-fill.d.ts +91 -0
  26. package/dist/pattern-fill.js +74 -0
  27. package/dist/patterns.d.ts +80 -0
  28. package/dist/patterns.js +477 -0
  29. package/dist/scroll-rail.js +37 -37
  30. package/dist/styles/recipes/pattern.d.ts +2 -12
  31. package/dist/styles/recipes/pattern.js +11 -15
  32. package/dist/styles/recipes/scroll-rail.d.ts +3 -12
  33. package/dist/styles/recipes/scroll-rail.js +7 -15
  34. package/dist/styles/recipes/surface.d.ts +18 -7
  35. package/dist/styles/recipes/surface.js +15 -0
  36. package/dist/text-control.js +11 -11
  37. package/dist/tile-grid.d.ts +4 -2
  38. package/dist/tile-grid.js +3 -3
  39. package/dist/toggle-control.js +5 -5
  40. package/dist/track-width.d.ts +7 -0
  41. package/dist/track-width.js +6 -3
  42. package/docs/SPEC.md +14 -10
  43. package/editor/vscode.html-custom-data.json +14 -4
  44. package/editor/web-types.json +46 -8
  45. package/package.json +3 -1
@@ -1,16 +1,16 @@
1
- import { vfElement as e } from "../define.js";
2
- import { ScaleController as t, sys as n, toSys as r } from "../scale.js";
3
- import i from "../_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/decorate.js";
4
- import { VfPositioned as a } from "../position.js";
5
- import { vfBase as o } from "../styles/recipes/host.js";
6
- import { vfFocusUnderline as s } from "../styles/recipes/focus.js";
7
- import { GridSnapController as c } from "../grid-snap.js";
8
- import { emit as l, emitNative as u } from "../events.js";
9
- import { SLIDER_THUMB as d, SLIDER_THUMB_FACE as f } from "../glyphs.js";
10
- import { VfFormControl as p } from "../form-control.js";
11
- import { FocusRuleController as m } from "../focus-modality.js";
12
- import { decimalsOf as h } from "../number.js";
13
- import { TrackWidthController as g } from "../track-width.js";
1
+ import { emit as e, emitNative as t } from "../events.js";
2
+ import { vfElement as n } from "../define.js";
3
+ import { ScaleController as r, sys as i, toSys as a } from "../scale.js";
4
+ import o from "../_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/decorate.js";
5
+ import { VfPositioned as s } from "../position.js";
6
+ import { vfBase as c } from "../styles/recipes/host.js";
7
+ import { vfFocusUnderline as l } from "../styles/recipes/focus.js";
8
+ import { TrackWidthController as u } from "../track-width.js";
9
+ import { GridSnapController as d } from "../grid-snap.js";
10
+ import { SLIDER_THUMB as f, SLIDER_THUMB_FACE as p } from "../glyphs.js";
11
+ import { VfFormControl as m } from "../form-control.js";
12
+ import { FocusRuleController as h } from "../focus-modality.js";
13
+ import { decimalsOf as g } from "../number.js";
14
14
  import { css as _, html as v } from "lit";
15
15
  import { property as y, query as b } from "lit/decorators.js";
16
16
  //#region src/components/vf-slider.ts
@@ -21,9 +21,9 @@ function D(e, t) {
21
21
  };
22
22
  return r(1, 0, e - 2, 1), r(1, 3, e - 2, 1), r(0, 1, 1, 2), r(e - 1, 1, 1, 2), r(1, 1, Math.min(Math.max(t, 0), e - 1) - 1, 2), n.join("");
23
23
  }
24
- var O = class extends a(p) {
24
+ var O = class extends s(m) {
25
25
  static {
26
- this.styles = [o, _`
26
+ this.styles = [c, _`
27
27
  :host {
28
28
  /* Padding just leaves room for the thumb's focus ring; the thumb itself
29
29
  stays within the rail (its travel is inset by half its width). */
@@ -102,7 +102,7 @@ var O = class extends a(p) {
102
102
  }
103
103
  .track.vf-focus-rule::after {
104
104
  --vf-focus-underline-offset: ${3}px;
105
- ${s}
105
+ ${l}
106
106
  }
107
107
  `];
108
108
  }
@@ -110,7 +110,7 @@ var O = class extends a(p) {
110
110
  #t;
111
111
  #n;
112
112
  constructor() {
113
- super(), this.value = 0, this.min = 0, this.max = 100, this.step = 1, this.name = "", this.label = "", this.trackSize = new g(this, () => this.track), this.scale = new t(this), this.gridSnap = new c(this), this.selfManagedTabIndex = !1, this.#e = new m(this), this.#t = 0, this.#n = !1, this.#f = (e) => {
113
+ super(), this.value = 0, this.min = 0, this.max = 100, this.step = 1, this.name = "", this.label = "", this.trackSize = new u(this, () => this.track), this.scale = new r(this), this.gridSnap = new d(this), this.selfManagedTabIndex = !1, this.#e = new h(this), this.#t = 0, this.#n = !1, this.#f = (e) => {
114
114
  if (!(this.isDisabled || e.button !== 0)) {
115
115
  e.preventDefault(), this.#e.suppress(), this.focus(), this.#n = !0, this.#t = this.value;
116
116
  try {
@@ -181,7 +181,7 @@ var O = class extends a(p) {
181
181
  }
182
182
  #o(e) {
183
183
  let t = this.#i, n = Math.round((e - this.min) / t), r = this.#a(this.min + n * t);
184
- return Number(r.toFixed(h(t)));
184
+ return Number(r.toFixed(g(t)));
185
185
  }
186
186
  get #s() {
187
187
  let e = Number.isFinite(this.value) ? this.value : this.min;
@@ -193,16 +193,16 @@ var O = class extends a(p) {
193
193
  #l(e) {
194
194
  e !== this.value && (this.value = e, this.#u("vf-input"));
195
195
  }
196
- #u(e) {
197
- l(this, e, { value: this.value }), u(this, e === "vf-input" ? "input" : "change");
196
+ #u(n) {
197
+ e(this, n, { value: this.value }), t(this, n === "vf-input" ? "input" : "change");
198
198
  }
199
199
  #d(e) {
200
200
  let t = this.track?.getBoundingClientRect();
201
201
  if (!t) return this.value;
202
- let r = t.width - n(x, this);
203
- if (r <= 0) return this.value;
204
- let i = Math.min(Math.max((e - t.left - n(w, this)) / r, 0), 1);
205
- return this.#o(this.min + i * this.#r);
202
+ let n = t.width - i(x, this);
203
+ if (n <= 0) return this.value;
204
+ let r = Math.min(Math.max((e - t.left - i(w, this)) / n, 0), 1);
205
+ return this.#o(this.min + r * this.#r);
206
206
  }
207
207
  #f;
208
208
  #p;
@@ -213,7 +213,7 @@ var O = class extends a(p) {
213
213
  (n || t) && this.syncFormValue(String(this.#s)), e.has("min") && (this.internals.ariaValueMin = String(this.min)), e.has("max") && (this.internals.ariaValueMax = String(this.max)), n && (this.internals.ariaValueNow = String(this.#s)), e.has("label") && (this.internals.ariaLabel = this.label || null), t && (this.internals.ariaDisabled = this.isDisabled ? "true" : "false", this.selfManagedTabIndex && (this.tabIndex = this.isDisabled ? -1 : 0));
214
214
  }
215
215
  render() {
216
- let e = r(this.trackSize.width, this), t = Math.round(this.#c * Math.max(0, e - x)), i = n(t, this), a = t + C;
216
+ let e = a(this.trackSize.width, this), t = Math.round(this.#c * Math.max(0, e - x)), n = i(t, this), r = t + C;
217
217
  return v`
218
218
  <div
219
219
  class="track vf-snap ${this.#e.marked ? "vf-focus-rule" : ""} ${this.isDisabled ? "disabled" : ""}"
@@ -227,29 +227,29 @@ var O = class extends a(p) {
227
227
  ${e >= 2 ? v`<svg
228
228
  class="rail"
229
229
  part="rail"
230
- width=${n(e, this)}
231
- height=${n(T, this)}
230
+ width=${i(e, this)}
231
+ height=${i(T, this)}
232
232
  viewBox="0 0 ${e} ${T}"
233
233
  shape-rendering="crispEdges"
234
234
  aria-hidden="true"
235
235
  >
236
- <path d=${D(e, a)}></path>
236
+ <path d=${D(e, r)}></path>
237
237
  </svg>` : null}
238
- <span class="thumb" part="thumb" style="left: ${i}px">
238
+ <span class="thumb" part="thumb" style="left: ${n}px">
239
239
  <svg
240
240
  class="thumb-glyph"
241
241
  viewBox="0 0 ${x} ${S}"
242
242
  shape-rendering="crispEdges"
243
243
  aria-hidden="true"
244
244
  >
245
- <path class="thumb-face" d=${f.d}></path>
246
- <path class="thumb-outline" d=${d.d}></path>
245
+ <path class="thumb-face" d=${p.d}></path>
246
+ <path class="thumb-outline" d=${f.d}></path>
247
247
  </svg>
248
248
  </span>
249
249
  </div>
250
250
  `;
251
251
  }
252
252
  };
253
- i([y({ type: Number })], O.prototype, "value", void 0), i([y({ type: Number })], O.prototype, "min", void 0), i([y({ type: Number })], O.prototype, "max", void 0), i([y({ type: Number })], O.prototype, "step", void 0), i([y({ reflect: !0 })], O.prototype, "name", void 0), i([y()], O.prototype, "label", void 0), i([b(".track")], O.prototype, "track", void 0), O = i([e("vf-slider")], O);
253
+ o([y({ type: Number })], O.prototype, "value", void 0), o([y({ type: Number })], O.prototype, "min", void 0), o([y({ type: Number })], O.prototype, "max", void 0), o([y({ type: Number })], O.prototype, "step", void 0), o([y({ reflect: !0 })], O.prototype, "name", void 0), o([y()], O.prototype, "label", void 0), o([b(".track")], O.prototype, "track", void 0), O = o([n("vf-slider")], O);
254
254
  //#endregion
255
255
  export { O as VfSlider };
@@ -1,46 +1,46 @@
1
- import { vfElement as e } from "../define.js";
2
- import { ScaleController as t, snapSys as n, sysLength as r, toSysExact as i } from "../scale.js";
3
- import a from "../_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/decorate.js";
4
- import { PlacementController as o, VfPositioned as s, warnMovableContract as c } from "../position.js";
5
- import { vfBase as l } from "../styles/recipes/host.js";
6
- import { DOT_RECTS as u, DOT_SPAN as d, vfDots as f, vfStripes as p } from "../styles/recipes/pattern.js";
7
- import { vfChromeFrame as m } from "../styles/recipes/surface.js";
8
- import { vfTitleBar as h, vfWindowWidgets as g } from "../styles/recipes/title-bar.js";
9
- import { vfFocus as _ } from "../styles/recipes/focus.js";
10
- import { TileRasterCache as v, patternOverride as y, tileGrid as b, vfTileGrid as x } from "../tile-grid.js";
11
- import { GridSnapController as S } from "../grid-snap.js";
12
- import { VfSized as C } from "../size.js";
13
- import { DragController as w } from "../drag.js";
14
- import { TitleCenterController as T, chromeTitleBar as E, closeBox as D, widgetLabel as O, zoomBox as k } from "../chrome.js";
15
- import { emit as A } from "../events.js";
1
+ import { emit as e } from "../events.js";
2
+ import { vfElement as t } from "../define.js";
3
+ import { ScaleController as n, snapSys as r, sysLength as i, toSysExact as a } from "../scale.js";
4
+ import o from "../_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/decorate.js";
5
+ import { PlacementController as s, VfPositioned as c, warnMovableContract as l } from "../position.js";
6
+ import { vfBase as u } from "../styles/recipes/host.js";
7
+ import { DOT_MOTIF as d, DOT_RECTS as f, DOT_SPAN as p, vfDots as m, vfStripes as h } from "../styles/recipes/pattern.js";
8
+ import { vfChromeFrame as g } from "../styles/recipes/surface.js";
9
+ import { vfTitleBar as _, vfWindowWidgets as v } from "../styles/recipes/title-bar.js";
10
+ import { vfFocus as y } from "../styles/recipes/focus.js";
11
+ import { TileRasterCache as b, patternOverride as x, tileGrid as S, vfTileGrid as C } from "../tile-grid.js";
12
+ import { GridSnapController as w } from "../grid-snap.js";
13
+ import { VfSized as T } from "../size.js";
14
+ import { DragController as E } from "../drag.js";
15
+ import { TitleCenterController as D, chromeTitleBar as O, closeBox as k, widgetLabel as A, zoomBox as j } from "../chrome.js";
16
16
  import "./vf-scroll-area.js";
17
- import { LitElement as j, css as M, html as N, nothing as P } from "lit";
18
- import { property as F, state as I } from "lit/decorators.js";
17
+ import { LitElement as M, css as N, html as P, nothing as F } from "lit";
18
+ import { property as I, state as L } from "lit/decorators.js";
19
19
  //#region src/components/vf-window.ts
20
- var L = 80, R = 54, z = 24, B = 8, V = class extends C(s(j)) {
20
+ var R = 80, z = 54, B = 24, V = 8, H = class extends T(c(M)) {
21
21
  constructor(...e) {
22
- super(...e), this.heading = "", this.active = !0, this.closable = !0, this.zoomable = !1, this.movable = !1, this.resizable = !1, this.flush = !1, this._hasStatus = !1, this.scale = new t(this), this.gridSnap = new S(this), this.titleCenter = new T(this), this._dotsPattern = "", this.#e = new v(), this.#t = (e, t, n) => {
23
- let r = i(this.offsetWidth, this);
22
+ super(...e), this.heading = "", this.active = !0, this.closable = !0, this.zoomable = !1, this.movable = !1, this.resizable = !1, this.flush = !1, this._hasStatus = !1, this.scale = new n(this), this.gridSnap = new w(this), this.titleCenter = new D(this), this._dotsPattern = "", this.#e = new b(), this.#t = (e, t, n) => {
23
+ let r = a(this.offsetWidth, this);
24
24
  return {
25
- x: Math.min(Math.max(e, z - r), n.width - z),
26
- y: Math.min(Math.max(t, 0), Math.max(0, n.height - z))
25
+ x: Math.min(Math.max(e, B - r), n.width - B),
26
+ y: Math.min(Math.max(t, 0), Math.max(0, n.height - B))
27
27
  };
28
- }, this._placement = new o(this, (e, t, n) => this.#t(e, t, n)), this._drag = new w(this, {
28
+ }, this._placement = new s(this, (e, t, n) => this.#t(e, t, n)), this._drag = new E(this, {
29
29
  onDragStart: (e) => !this.movable || e.button !== 0 || e.composedPath().some((e) => e instanceof HTMLElement && e.classList.contains("box")) ? null : (this.#i(), this._placement.seed()),
30
30
  onDrag: (e, t) => this._placement.moveTo(e, t)
31
31
  }), this._resizeState = null, this.#n = !1, this.#r = !1;
32
32
  }
33
33
  static {
34
34
  this.styles = [
35
- l,
36
- p,
37
- f,
38
- x,
39
- _,
40
- m,
35
+ u,
41
36
  h,
37
+ m,
38
+ C,
39
+ y,
42
40
  g,
43
- M`
41
+ _,
42
+ v,
43
+ N`
44
44
  :host {
45
45
  display: block;
46
46
  position: relative;
@@ -281,27 +281,27 @@ var L = 80, R = 54, z = 24, B = 8, V = class extends C(s(j)) {
281
281
  }
282
282
  #e;
283
283
  willUpdate(e) {
284
- super.willUpdate(e), this.variant === "utility" && (this._dotsPattern = y(this, "--vf-dots-pattern"));
284
+ super.willUpdate(e), this.variant === "utility" && (this._dotsPattern = x(this, "--vf-dots-pattern"));
285
285
  }
286
286
  _dotsTexture() {
287
287
  if (this.width == null) return;
288
288
  let e = Math.max(1, this.width - 2);
289
- if (this._dotsPattern) return b({
290
- cols: Math.ceil(e / d),
289
+ if (this._dotsPattern) return S({
290
+ cols: Math.ceil(e / p),
291
291
  rows: 1,
292
- tile: d
292
+ tile: p
293
293
  });
294
- let t = Math.ceil((e + 2) / d) * d, n = B + 2;
295
- return N`<div
294
+ let t = Math.ceil((e + d) / p) * p, n = V + d;
295
+ return P`<div
296
296
  class="vf-tile-raster"
297
- style="width:${r(t)};height:${r(n)};background-image:${this.#e.for(2, 2, u, t, n)}"
297
+ style="width:${i(t)};height:${i(n)};background-image:${this.#e.for(d, d, f, t, n)}"
298
298
  ></div>`;
299
299
  }
300
300
  #t;
301
301
  updated() {
302
302
  this.#a();
303
- let e = this._resizeState;
304
- e?.emitPending && (e.emitPending = !1, A(this, "vf-resize", {
303
+ let t = this._resizeState;
304
+ t?.emitPending && (t.emitPending = !1, e(this, "vf-resize", {
305
305
  width: this.width,
306
306
  height: this.height,
307
307
  commit: !1
@@ -310,7 +310,7 @@ var L = 80, R = 54, z = 24, B = 8, V = class extends C(s(j)) {
310
310
  #n;
311
311
  #r;
312
312
  #i() {
313
- this.#r ||= c(this, `vf-window${this.heading ? ` ("${this.heading}")` : ""}`, "<vf-window movable top=\"30\" left=\"40\" width=\"240\" height=\"176\">");
313
+ this.#r ||= l(this, `vf-window${this.heading ? ` ("${this.heading}")` : ""}`, "<vf-window movable top=\"30\" left=\"40\" width=\"240\" height=\"176\">");
314
314
  }
315
315
  #a() {
316
316
  if (this.#n) return;
@@ -325,10 +325,10 @@ var L = 80, R = 54, z = 24, B = 8, V = class extends C(s(j)) {
325
325
  this._hasStatus = t.assignedElements().length > 0;
326
326
  }
327
327
  _onCloseClick() {
328
- A(this, "vf-close", { reason: "close" });
328
+ e(this, "vf-close", { reason: "close" });
329
329
  }
330
330
  _onZoomClick() {
331
- A(this, "vf-zoom", {});
331
+ e(this, "vf-zoom", {});
332
332
  }
333
333
  _onGrowPointerDown(e) {
334
334
  if (!this.resizable || e.button !== 0) return;
@@ -337,8 +337,8 @@ var L = 80, R = 54, z = 24, B = 8, V = class extends C(s(j)) {
337
337
  pointerId: e.pointerId,
338
338
  startX: e.clientX,
339
339
  startY: e.clientY,
340
- baseWidth: i(t.width, this),
341
- baseHeight: i(t.height, this),
340
+ baseWidth: a(t.width, this),
341
+ baseHeight: a(t.height, this),
342
342
  emitPending: !1,
343
343
  resized: !1
344
344
  }, e.currentTarget.setPointerCapture(e.pointerId), e.preventDefault();
@@ -346,49 +346,49 @@ var L = 80, R = 54, z = 24, B = 8, V = class extends C(s(j)) {
346
346
  _onGrowPointerMove(e) {
347
347
  let t = this._resizeState;
348
348
  if (!t || e.pointerId !== t.pointerId) return;
349
- let r = n(Math.max(L, t.baseWidth + i(e.clientX - t.startX, this)), this), a = n(Math.max(R, t.baseHeight + i(e.clientY - t.startY, this)), this);
350
- (r !== this.width || a !== this.height) && (t.emitPending = !0, t.resized = !0), this.width = r, this.height = a;
349
+ let n = r(Math.max(R, t.baseWidth + a(e.clientX - t.startX, this)), this), i = r(Math.max(z, t.baseHeight + a(e.clientY - t.startY, this)), this);
350
+ (n !== this.width || i !== this.height) && (t.emitPending = !0, t.resized = !0), this.width = n, this.height = i;
351
351
  }
352
- _onGrowPointerEnd(e) {
353
- let t = this._resizeState;
354
- if (!t || e.pointerId !== t.pointerId) return;
352
+ _onGrowPointerEnd(t) {
353
+ let n = this._resizeState;
354
+ if (!n || t.pointerId !== n.pointerId) return;
355
355
  this._resizeState = null;
356
- let n = e.currentTarget;
357
- n.hasPointerCapture(e.pointerId) && n.releasePointerCapture(e.pointerId), t.resized && A(this, "vf-resize", {
356
+ let r = t.currentTarget;
357
+ r.hasPointerCapture(t.pointerId) && r.releasePointerCapture(t.pointerId), n.resized && e(this, "vf-resize", {
358
358
  width: this.width,
359
359
  height: this.height,
360
360
  commit: !0
361
361
  });
362
362
  }
363
363
  render() {
364
- return N`
364
+ return P`
365
365
  <div
366
366
  class="vf-frame vf-snap"
367
367
  part="frame"
368
368
  role="group"
369
- aria-labelledby=${this.heading ? "title" : P}
369
+ aria-labelledby=${this.heading ? "title" : F}
370
370
  >
371
- ${E(this._drag, N`
372
- ${this.closable ? D(O("Close", this.heading), this._onCloseClick) : P}
371
+ ${O(this._drag, P`
372
+ ${this.closable ? k(A("Close", this.heading), this._onCloseClick) : F}
373
373
  <span class="vf-title" part="title" id="title">${this.heading}</span>
374
- ${this.zoomable ? k(O("Zoom", this.heading), this._onZoomClick) : P}
374
+ ${this.zoomable ? j(A("Zoom", this.heading), this._onZoomClick) : F}
375
375
  `, this.variant === "utility" ? "vf-dots" : "vf-stripes", this.variant === "utility" ? this._dotsTexture() : void 0)}
376
376
  <div class="body" part="body">
377
- ${this.scrollbars ? N`
377
+ ${this.scrollbars ? P`
378
378
  <vf-scroll-area
379
379
  class="edge-scroll"
380
380
  axis=${this.scrollbars}
381
- label=${this.heading || P}
381
+ label=${this.heading || F}
382
382
  exportparts="viewport"
383
383
  >
384
384
  <slot></slot>
385
385
  </vf-scroll-area>
386
- ` : N`<slot></slot>`}
386
+ ` : P`<slot></slot>`}
387
387
  </div>
388
388
  <div class="status ${this._hasStatus ? "" : "empty"}" part="status-bar">
389
389
  <slot name="status" @slotchange=${this._onStatusSlotChange}></slot>
390
390
  </div>
391
- ${this.resizable ? N`
391
+ ${this.resizable ? P`
392
392
  <div
393
393
  class="grow"
394
394
  part="grow-box"
@@ -398,29 +398,29 @@ var L = 80, R = 54, z = 24, B = 8, V = class extends C(s(j)) {
398
398
  @pointercancel=${this._onGrowPointerEnd}
399
399
  @lostpointercapture=${this._onGrowPointerEnd}
400
400
  ></div>
401
- ` : P}
401
+ ` : F}
402
402
  </div>
403
403
  `;
404
404
  }
405
405
  };
406
- a([F({ reflect: !0 })], V.prototype, "variant", void 0), a([F()], V.prototype, "heading", void 0), a([F({
406
+ o([I({ reflect: !0 })], H.prototype, "variant", void 0), o([I()], H.prototype, "heading", void 0), o([I({
407
407
  type: Boolean,
408
408
  reflect: !0
409
- })], V.prototype, "active", void 0), a([F({
409
+ })], H.prototype, "active", void 0), o([I({
410
410
  type: Boolean,
411
411
  reflect: !0
412
- })], V.prototype, "closable", void 0), a([F({
412
+ })], H.prototype, "closable", void 0), o([I({
413
413
  type: Boolean,
414
414
  reflect: !0
415
- })], V.prototype, "zoomable", void 0), a([F({
415
+ })], H.prototype, "zoomable", void 0), o([I({
416
416
  type: Boolean,
417
417
  reflect: !0
418
- })], V.prototype, "movable", void 0), a([F({
418
+ })], H.prototype, "movable", void 0), o([I({
419
419
  type: Boolean,
420
420
  reflect: !0
421
- })], V.prototype, "resizable", void 0), a([F({
421
+ })], H.prototype, "resizable", void 0), o([I({
422
422
  type: Boolean,
423
423
  reflect: !0
424
- })], V.prototype, "flush", void 0), a([F({ reflect: !0 })], V.prototype, "scrollbars", void 0), a([I()], V.prototype, "_hasStatus", void 0), V = a([e("vf-window")], V);
424
+ })], H.prototype, "flush", void 0), o([I({ reflect: !0 })], H.prototype, "scrollbars", void 0), o([L()], H.prototype, "_hasStatus", void 0), H = o([t("vf-window")], H);
425
425
  //#endregion
426
- export { V as VfWindow };
426
+ export { H as VfWindow };
package/dist/index.d.ts CHANGED
@@ -101,6 +101,20 @@ export type { TileRect } from './styles/base.js';
101
101
  * memoizes the encoded raster against its size.
102
102
  */
103
103
  export { vfTileGrid, tileGrid, patternOverride, TileRasterCache } from './tile-grid.js';
104
+ /**
105
+ * The standard pattern set — the 38 MacPaint fills as 8-byte QuickDraw
106
+ * patterns (`PATTERNS`, named; `PATTERN_NAMES` in palette order), the
107
+ * attribute grammar (`parsePattern` reads a name or sixteen hex digits,
108
+ * `patternHex` writes one back), and the adapters onto the tile machinery
109
+ * (`patternMotif` on the minimal cell, `patternRects` on the full 8×8). The
110
+ * fill itself is `PatternFillController` + `vfPatternFill`: a pattern
111
+ * painted as a box's own background, exact at every density and zoom — what
112
+ * `vf-container pattern="…"` does.
113
+ */
114
+ export { PATTERNS, PATTERN_NAMES, PATTERN_SIZE, parsePattern, patternHex, patternMotif, patternRects, } from './patterns.js';
115
+ export type { Pattern, PatternMotif, PatternName } from './patterns.js';
116
+ export { PatternFillController, vfPatternFill } from './pattern-fill.js';
117
+ export type { PatternFillOptions } from './pattern-fill.js';
104
118
  /** Glyph sprites (`glyphSvg(CHECKMARK, 'check')`) and their pixel geometry. */
105
119
  export { glyphSvg, CHECKBOX_X, RADIO_FACE, RADIO_RING, RADIO_RING_PRESSED, RADIO_DOT, CHECKMARK, CARET_DOWN, STEPPER, STEPPER_UP_FILL, STEPPER_DOWN_FILL, SLIDER_THUMB, SLIDER_THUMB_FACE, } from './glyphs.js';
106
120
  export type { Glyph } from './glyphs.js';
package/dist/index.js CHANGED
@@ -1,71 +1,73 @@
1
- import { defineElement as e, vfElement as t } from "./define.js";
2
- import { CLASSIC_DPI as n, CSS_REFERENCE_DPI as r, SYSTEM_PX_IN_CSS_PX as i, devicePxPerSystemPx as a, getZoom as o, onZoomChange as s, resetZoomBaseline as c, truePixelRatio as l } from "./zoom.js";
3
- import { ScaleController as u, applyScale as d, effectiveScale as f, getScale as p, onScaleChange as m, snapSys as h, snapToDevicePx as g, snapToSystemPx as _, sys as v, sysLength as y, sysLengths as b, systemPxQuantum as x, toSys as S, toSysExact as C } from "./scale.js";
4
- import { PlacementController as w, VfPositioned as T } from "./position.js";
5
- import { PIXEL_GRID_METRICS as E, registerEmbeddedFont as D } from "./styles/register-embedded-font.js";
6
- import { VF_BODY_FAMILY as O, registerBodyFace as k } from "./styles/body-font.js";
7
- import { vfBodyDecls as A } from "./styles/recipes/body-face.js";
8
- import { VF_DISPLAY_FAMILY as j, registerDisplayFace as M } from "./styles/display-font.js";
9
- import { vfDisplay as N, vfDisplayDecls as P } from "./styles/recipes/display-face.js";
10
- import { vfBase as F } from "./styles/recipes/host.js";
11
- import { vfStaticText as I } from "./styles/recipes/static-text.js";
12
- import { TILE_LATTICE as L, tileImage as R, tileRaster as z, tileRects as B, tileSpan as V, vfTileMaskSize as H, vfTileSize as U } from "./styles/recipes/tile.js";
13
- import { vfDots as W, vfStripes as G } from "./styles/recipes/pattern.js";
14
- import { vfHardShadowDecls as K } from "./styles/recipes/shadow.js";
15
- import { vfChromeFrame as q, vfModalFrame as J, vfPanel as Y } from "./styles/recipes/surface.js";
16
- import { vfTitleBar as X, vfWindowWidgets as Z } from "./styles/recipes/title-bar.js";
17
- import { vfFocus as Q, vfFocusRing as $, vfFocusUnderline as ee } from "./styles/recipes/focus.js";
18
- import { vfToggle as te } from "./styles/recipes/toggle.js";
19
- import { vfField as ne } from "./styles/recipes/field.js";
20
- import { vfScrollRail as re } from "./styles/recipes/scroll-rail.js";
21
- import { TileRasterCache as ie, patternOverride as ae, tileGrid as oe, vfTileGrid as se } from "./tile-grid.js";
22
- import { GridSnapController as ce, requestGridSnap as le } from "./grid-snap.js";
23
- import { DocumentListenersController as ue } from "./document-listeners.js";
24
- import { BUTTON_FACE as de, BUTTON_FRAME as fe, RING_FRAME as pe, RING_HOLE as me, RING_INSET as he, SCREEN_CORNER as ge, steppedCornerClip as _e, steppedRectClip as ve, steppedRingClip as ye } from "./pixel-frame.js";
25
- import { VfDesktop as be } from "./components/vf-desktop.js";
26
- import { VfSized as xe } from "./size.js";
27
- import { DragController as Se } from "./drag.js";
28
- import { emit as Ce } from "./events.js";
29
- import { ScrollStateController as we } from "./scroll-state.js";
30
- import { BLINK_FLIPS as Te, BLINK_INTERVAL_MS as Ee, PRESS_HOLD_MS as De, RENAME_DELAY_MS as Oe, prefersReducedMotion as ke, runSelectionBlink as Ae } from "./motion.js";
31
- import { CARET_DOWN as je, CHECKBOX_X as Me, CHECKMARK as Ne, RADIO_DOT as Pe, RADIO_FACE as Fe, RADIO_RING as Ie, RADIO_RING_PRESSED as Le, SLIDER_THUMB as Re, SLIDER_THUMB_FACE as ze, STEPPER as Be, STEPPER_DOWN_FILL as Ve, STEPPER_UP_FILL as He, glyphSvg as Ue } from "./glyphs.js";
32
- import { ScrollRailController as We, renderScrollRail as Ge } from "./scroll-rail.js";
33
- import { VfScrollArea as Ke } from "./components/vf-scroll-area.js";
34
- import { VfWindow as qe } from "./components/vf-window.js";
35
- import { VfModalDialog as Je, modalDialogStyles as Ye } from "./modal-dialog.js";
36
- import { VfButtonGroup as Xe } from "./components/vf-button-group.js";
37
- import { VfDialog as Ze } from "./components/vf-dialog.js";
38
- import { VfSeparator as Qe } from "./components/vf-separator.js";
39
- import { VfFormControl as $e } from "./form-control.js";
40
- import { VfButton as et } from "./components/vf-button.js";
41
- import { VfSwatch as tt } from "./components/vf-swatch.js";
42
- import { VfToggleControl as nt } from "./toggle-control.js";
43
- import { VfCheckbox as rt } from "./components/vf-checkbox.js";
44
- import { VfRadio as it } from "./components/vf-radio.js";
45
- import { VfRadioGroup as at } from "./components/vf-radio-group.js";
46
- import { FocusRuleController as ot, focusModality as st, trackFocusModality as ct } from "./focus-modality.js";
47
- import { VfTextControlBase as lt } from "./text-control.js";
48
- import { VfTextField as ut } from "./components/vf-text-field.js";
49
- import { VfTextArea as dt } from "./components/vf-text-area.js";
50
- import { VfNumberField as ft } from "./components/vf-number-field.js";
51
- import { VfOption as pt } from "./components/vf-option.js";
52
- import { VfSelect as mt } from "./components/vf-select.js";
53
- import { TrackWidthController as ht } from "./track-width.js";
54
- import { VfProgressBar as gt } from "./components/vf-progress-bar.js";
55
- import { VfSlider as _t } from "./components/vf-slider.js";
56
- import { VfLabel as vt } from "./components/vf-label.js";
57
- import { VfParagraph as yt } from "./components/vf-paragraph.js";
58
- import { VfImg as bt } from "./components/vf-img.js";
59
- import { VfIcon as xt } from "./components/vf-icon.js";
60
- import { VfMenuBar as St } from "./components/vf-menu-bar.js";
61
- import { VfMenu as Ct } from "./components/vf-menu.js";
62
- import { VfMenuItem as wt } from "./components/vf-menu-item.js";
63
- import { VfList as Tt } from "./components/vf-list.js";
64
- import { VfListItem as Et } from "./components/vf-list-item.js";
65
- import { VfFieldset as Dt } from "./components/vf-fieldset.js";
66
- import { VfGrid as Ot } from "./components/vf-grid.js";
67
- import { VfStack as kt } from "./components/vf-stack.js";
68
- import { VfContainer as At } from "./components/vf-container.js";
69
- import { CURSOR_ARROW as jt, CURSOR_CROSSHAIR as Mt, CURSOR_I_BEAM as Nt, CURSOR_WAIT as Pt } from "./cursor-art.js";
70
- import { applyCursor as Ft } from "./cursor.js";
71
- export { Te as BLINK_FLIPS, Ee as BLINK_INTERVAL_MS, de as BUTTON_FACE, fe as BUTTON_FRAME, je as CARET_DOWN, Me as CHECKBOX_X, Ne as CHECKMARK, n as CLASSIC_DPI, r as CSS_REFERENCE_DPI, jt as CURSOR_ARROW, Mt as CURSOR_CROSSHAIR, Nt as CURSOR_I_BEAM, Pt as CURSOR_WAIT, ue as DocumentListenersController, Se as DragController, ot as FocusRuleController, ce as GridSnapController, E as PIXEL_GRID_METRICS, De as PRESS_HOLD_MS, w as PlacementController, Pe as RADIO_DOT, Fe as RADIO_FACE, Ie as RADIO_RING, Le as RADIO_RING_PRESSED, Oe as RENAME_DELAY_MS, pe as RING_FRAME, me as RING_HOLE, he as RING_INSET, ge as SCREEN_CORNER, Re as SLIDER_THUMB, ze as SLIDER_THUMB_FACE, Be as STEPPER, Ve as STEPPER_DOWN_FILL, He as STEPPER_UP_FILL, i as SYSTEM_PX_IN_CSS_PX, u as ScaleController, We as ScrollRailController, we as ScrollStateController, L as TILE_LATTICE, ie as TileRasterCache, ht as TrackWidthController, O as VF_BODY_FAMILY, j as VF_DISPLAY_FAMILY, et as VfButton, Xe as VfButtonGroup, rt as VfCheckbox, At as VfContainer, be as VfDesktop, Ze as VfDialog, Dt as VfFieldset, $e as VfFormControl, Ot as VfGrid, xt as VfIcon, bt as VfImg, vt as VfLabel, Tt as VfList, Et as VfListItem, Ct as VfMenu, St as VfMenuBar, wt as VfMenuItem, Je as VfModalDialog, ft as VfNumberField, pt as VfOption, yt as VfParagraph, T as VfPositioned, gt as VfProgressBar, it as VfRadio, at as VfRadioGroup, Ke as VfScrollArea, mt as VfSelect, Qe as VfSeparator, xe as VfSized, _t as VfSlider, kt as VfStack, tt as VfSwatch, dt as VfTextArea, lt as VfTextControlBase, ut as VfTextField, nt as VfToggleControl, qe as VfWindow, Ft as applyCursor, d as applyScale, e as defineElement, a as devicePxPerSystemPx, f as effectiveScale, Ce as emit, st as focusModality, p as getScale, o as getZoom, Ue as glyphSvg, Ye as modalDialogStyles, m as onScaleChange, s as onZoomChange, ae as patternOverride, ke as prefersReducedMotion, k as registerBodyFace, M as registerDisplayFace, D as registerEmbeddedFont, Ge as renderScrollRail, le as requestGridSnap, c as resetZoomBaseline, Ae as runSelectionBlink, h as snapSys, g as snapToDevicePx, _ as snapToSystemPx, _e as steppedCornerClip, ve as steppedRectClip, ye as steppedRingClip, v as sys, y as sysLength, b as sysLengths, x as systemPxQuantum, oe as tileGrid, R as tileImage, z as tileRaster, B as tileRects, V as tileSpan, S as toSys, C as toSysExact, ct as trackFocusModality, l as truePixelRatio, F as vfBase, A as vfBodyDecls, q as vfChromeFrame, N as vfDisplay, P as vfDisplayDecls, W as vfDots, t as vfElement, ne as vfField, Q as vfFocus, $ as vfFocusRing, ee as vfFocusUnderline, K as vfHardShadowDecls, J as vfModalFrame, Y as vfPanel, re as vfScrollRail, I as vfStaticText, G as vfStripes, se as vfTileGrid, H as vfTileMaskSize, U as vfTileSize, X as vfTitleBar, te as vfToggle, Z as vfWindowWidgets };
1
+ import { emit as e } from "./events.js";
2
+ import { defineElement as t, vfElement as n } from "./define.js";
3
+ import { CLASSIC_DPI as r, CSS_REFERENCE_DPI as i, SYSTEM_PX_IN_CSS_PX as a, devicePxPerSystemPx as o, getZoom as s, onZoomChange as c, resetZoomBaseline as l, truePixelRatio as u } from "./zoom.js";
4
+ import { ScaleController as d, applyScale as f, effectiveScale as p, getScale as m, onScaleChange as h, snapSys as g, snapToDevicePx as _, snapToSystemPx as v, sys as y, sysLength as b, sysLengths as x, systemPxQuantum as S, toSys as C, toSysExact as w } from "./scale.js";
5
+ import { PlacementController as T, VfPositioned as E } from "./position.js";
6
+ import { PIXEL_GRID_METRICS as D, registerEmbeddedFont as O } from "./styles/register-embedded-font.js";
7
+ import { VF_BODY_FAMILY as k, registerBodyFace as A } from "./styles/body-font.js";
8
+ import { vfBodyDecls as j } from "./styles/recipes/body-face.js";
9
+ import { VF_DISPLAY_FAMILY as M, registerDisplayFace as N } from "./styles/display-font.js";
10
+ import { vfDisplay as P, vfDisplayDecls as F } from "./styles/recipes/display-face.js";
11
+ import { vfBase as I } from "./styles/recipes/host.js";
12
+ import { vfStaticText as L } from "./styles/recipes/static-text.js";
13
+ import { TILE_LATTICE as R, tileImage as z, tileRaster as B, tileRects as V, tileSpan as H, vfTileMaskSize as U, vfTileSize as W } from "./styles/recipes/tile.js";
14
+ import { PATTERNS as G, PATTERN_NAMES as K, PATTERN_SIZE as q, parsePattern as J, patternHex as Y, patternMotif as X, patternRects as Z } from "./patterns.js";
15
+ import { vfDots as Q, vfStripes as $ } from "./styles/recipes/pattern.js";
16
+ import { vfHardShadowDecls as ee } from "./styles/recipes/shadow.js";
17
+ import { vfChromeFrame as te, vfModalFrame as ne, vfPanel as re } from "./styles/recipes/surface.js";
18
+ import { vfTitleBar as ie, vfWindowWidgets as ae } from "./styles/recipes/title-bar.js";
19
+ import { vfFocus as oe, vfFocusRing as se, vfFocusUnderline as ce } from "./styles/recipes/focus.js";
20
+ import { vfToggle as le } from "./styles/recipes/toggle.js";
21
+ import { vfField as ue } from "./styles/recipes/field.js";
22
+ import { vfScrollRail as de } from "./styles/recipes/scroll-rail.js";
23
+ import { TileRasterCache as fe, patternOverride as pe, tileGrid as me, vfTileGrid as he } from "./tile-grid.js";
24
+ import { TrackWidthController as ge } from "./track-width.js";
25
+ import { PatternFillController as _e, vfPatternFill as ve } from "./pattern-fill.js";
26
+ import { GridSnapController as ye, requestGridSnap as be } from "./grid-snap.js";
27
+ import { DocumentListenersController as xe } from "./document-listeners.js";
28
+ import { BUTTON_FACE as Se, BUTTON_FRAME as Ce, RING_FRAME as we, RING_HOLE as Te, RING_INSET as Ee, SCREEN_CORNER as De, steppedCornerClip as Oe, steppedRectClip as ke, steppedRingClip as Ae } from "./pixel-frame.js";
29
+ import { VfDesktop as je } from "./components/vf-desktop.js";
30
+ import { VfSized as Me } from "./size.js";
31
+ import { DragController as Ne } from "./drag.js";
32
+ import { ScrollStateController as Pe } from "./scroll-state.js";
33
+ import { BLINK_FLIPS as Fe, BLINK_INTERVAL_MS as Ie, PRESS_HOLD_MS as Le, RENAME_DELAY_MS as Re, prefersReducedMotion as ze, runSelectionBlink as Be } from "./motion.js";
34
+ import { CARET_DOWN as Ve, CHECKBOX_X as He, CHECKMARK as Ue, RADIO_DOT as We, RADIO_FACE as Ge, RADIO_RING as Ke, RADIO_RING_PRESSED as qe, SLIDER_THUMB as Je, SLIDER_THUMB_FACE as Ye, STEPPER as Xe, STEPPER_DOWN_FILL as Ze, STEPPER_UP_FILL as Qe, glyphSvg as $e } from "./glyphs.js";
35
+ import { ScrollRailController as et, renderScrollRail as tt } from "./scroll-rail.js";
36
+ import { VfScrollArea as nt } from "./components/vf-scroll-area.js";
37
+ import { VfWindow as rt } from "./components/vf-window.js";
38
+ import { VfModalDialog as it, modalDialogStyles as at } from "./modal-dialog.js";
39
+ import { VfButtonGroup as ot } from "./components/vf-button-group.js";
40
+ import { VfDialog as st } from "./components/vf-dialog.js";
41
+ import { VfSeparator as ct } from "./components/vf-separator.js";
42
+ import { VfFormControl as lt } from "./form-control.js";
43
+ import { VfButton as ut } from "./components/vf-button.js";
44
+ import { VfSwatch as dt } from "./components/vf-swatch.js";
45
+ import { VfToggleControl as ft } from "./toggle-control.js";
46
+ import { VfCheckbox as pt } from "./components/vf-checkbox.js";
47
+ import { VfRadio as mt } from "./components/vf-radio.js";
48
+ import { VfRadioGroup as ht } from "./components/vf-radio-group.js";
49
+ import { FocusRuleController as gt, focusModality as _t, trackFocusModality as vt } from "./focus-modality.js";
50
+ import { VfTextControlBase as yt } from "./text-control.js";
51
+ import { VfTextField as bt } from "./components/vf-text-field.js";
52
+ import { VfTextArea as xt } from "./components/vf-text-area.js";
53
+ import { VfNumberField as St } from "./components/vf-number-field.js";
54
+ import { VfOption as Ct } from "./components/vf-option.js";
55
+ import { VfSelect as wt } from "./components/vf-select.js";
56
+ import { VfProgressBar as Tt } from "./components/vf-progress-bar.js";
57
+ import { VfSlider as Et } from "./components/vf-slider.js";
58
+ import { VfLabel as Dt } from "./components/vf-label.js";
59
+ import { VfParagraph as Ot } from "./components/vf-paragraph.js";
60
+ import { VfImg as kt } from "./components/vf-img.js";
61
+ import { VfIcon as At } from "./components/vf-icon.js";
62
+ import { VfMenuBar as jt } from "./components/vf-menu-bar.js";
63
+ import { VfMenu as Mt } from "./components/vf-menu.js";
64
+ import { VfMenuItem as Nt } from "./components/vf-menu-item.js";
65
+ import { VfList as Pt } from "./components/vf-list.js";
66
+ import { VfListItem as Ft } from "./components/vf-list-item.js";
67
+ import { VfFieldset as It } from "./components/vf-fieldset.js";
68
+ import { VfGrid as Lt } from "./components/vf-grid.js";
69
+ import { VfStack as Rt } from "./components/vf-stack.js";
70
+ import { VfContainer as zt } from "./components/vf-container.js";
71
+ import { CURSOR_ARROW as Bt, CURSOR_CROSSHAIR as Vt, CURSOR_I_BEAM as Ht, CURSOR_WAIT as Ut } from "./cursor-art.js";
72
+ import { applyCursor as Wt } from "./cursor.js";
73
+ export { Fe as BLINK_FLIPS, Ie as BLINK_INTERVAL_MS, Se as BUTTON_FACE, Ce as BUTTON_FRAME, Ve as CARET_DOWN, He as CHECKBOX_X, Ue as CHECKMARK, r as CLASSIC_DPI, i as CSS_REFERENCE_DPI, Bt as CURSOR_ARROW, Vt as CURSOR_CROSSHAIR, Ht as CURSOR_I_BEAM, Ut as CURSOR_WAIT, xe as DocumentListenersController, Ne as DragController, gt as FocusRuleController, ye as GridSnapController, G as PATTERNS, K as PATTERN_NAMES, q as PATTERN_SIZE, D as PIXEL_GRID_METRICS, Le as PRESS_HOLD_MS, _e as PatternFillController, T as PlacementController, We as RADIO_DOT, Ge as RADIO_FACE, Ke as RADIO_RING, qe as RADIO_RING_PRESSED, Re as RENAME_DELAY_MS, we as RING_FRAME, Te as RING_HOLE, Ee as RING_INSET, De as SCREEN_CORNER, Je as SLIDER_THUMB, Ye as SLIDER_THUMB_FACE, Xe as STEPPER, Ze as STEPPER_DOWN_FILL, Qe as STEPPER_UP_FILL, a as SYSTEM_PX_IN_CSS_PX, d as ScaleController, et as ScrollRailController, Pe as ScrollStateController, R as TILE_LATTICE, fe as TileRasterCache, ge as TrackWidthController, k as VF_BODY_FAMILY, M as VF_DISPLAY_FAMILY, ut as VfButton, ot as VfButtonGroup, pt as VfCheckbox, zt as VfContainer, je as VfDesktop, st as VfDialog, It as VfFieldset, lt as VfFormControl, Lt as VfGrid, At as VfIcon, kt as VfImg, Dt as VfLabel, Pt as VfList, Ft as VfListItem, Mt as VfMenu, jt as VfMenuBar, Nt as VfMenuItem, it as VfModalDialog, St as VfNumberField, Ct as VfOption, Ot as VfParagraph, E as VfPositioned, Tt as VfProgressBar, mt as VfRadio, ht as VfRadioGroup, nt as VfScrollArea, wt as VfSelect, ct as VfSeparator, Me as VfSized, Et as VfSlider, Rt as VfStack, dt as VfSwatch, xt as VfTextArea, yt as VfTextControlBase, bt as VfTextField, ft as VfToggleControl, rt as VfWindow, Wt as applyCursor, f as applyScale, t as defineElement, o as devicePxPerSystemPx, p as effectiveScale, e as emit, _t as focusModality, m as getScale, s as getZoom, $e as glyphSvg, at as modalDialogStyles, h as onScaleChange, c as onZoomChange, J as parsePattern, Y as patternHex, X as patternMotif, pe as patternOverride, Z as patternRects, ze as prefersReducedMotion, A as registerBodyFace, N as registerDisplayFace, O as registerEmbeddedFont, tt as renderScrollRail, be as requestGridSnap, l as resetZoomBaseline, Be as runSelectionBlink, g as snapSys, _ as snapToDevicePx, v as snapToSystemPx, Oe as steppedCornerClip, ke as steppedRectClip, Ae as steppedRingClip, y as sys, b as sysLength, x as sysLengths, S as systemPxQuantum, me as tileGrid, z as tileImage, B as tileRaster, V as tileRects, H as tileSpan, C as toSys, w as toSysExact, vt as trackFocusModality, u as truePixelRatio, I as vfBase, j as vfBodyDecls, te as vfChromeFrame, P as vfDisplay, F as vfDisplayDecls, Q as vfDots, n as vfElement, ue as vfField, oe as vfFocus, se as vfFocusRing, ce as vfFocusUnderline, ee as vfHardShadowDecls, ne as vfModalFrame, re as vfPanel, ve as vfPatternFill, de as vfScrollRail, L as vfStaticText, $ as vfStripes, he as vfTileGrid, U as vfTileMaskSize, W as vfTileSize, ie as vfTitleBar, le as vfToggle, ae as vfWindowWidgets };