tweakit 0.5.2 → 0.7.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 (120) hide show
  1. package/AGENTS.md +32 -30
  2. package/README.md +55 -29
  3. package/THIRD-PARTY-NOTICES.md +0 -1
  4. package/dist/tweaks/auto.js +2 -0
  5. package/dist/tweaks/auto.js.map +6 -0
  6. package/dist/tweaks/bezier-S2BOXQBM.js +2 -0
  7. package/dist/tweaks/bezier-S2BOXQBM.js.map +6 -0
  8. package/dist/tweaks/chunk-3MZAAMC2.js +2 -0
  9. package/dist/tweaks/chunk-3MZAAMC2.js.map +6 -0
  10. package/dist/tweaks/chunk-ETB35KFV.js +2 -0
  11. package/dist/tweaks/chunk-ETB35KFV.js.map +6 -0
  12. package/dist/tweaks/chunk-YB5GKWZI.js +2 -0
  13. package/dist/tweaks/chunk-YB5GKWZI.js.map +6 -0
  14. package/dist/tweaks/clip-A3VI53BK.js +2 -0
  15. package/dist/tweaks/clip-A3VI53BK.js.map +6 -0
  16. package/dist/tweaks/color-UGYMAF3W.js +2 -0
  17. package/dist/tweaks/color-UGYMAF3W.js.map +6 -0
  18. package/dist/tweaks/core.js +2 -1
  19. package/dist/tweaks/core.js.map +6 -0
  20. package/dist/tweaks/fold-GY47HIQA.js +2 -0
  21. package/dist/tweaks/fold-GY47HIQA.js.map +6 -0
  22. package/dist/tweaks/gradient-BTX25WSH.js +2 -0
  23. package/dist/tweaks/gradient-BTX25WSH.js.map +6 -0
  24. package/dist/tweaks/heavy-NPFIGHRM.js +2 -0
  25. package/dist/tweaks/heavy-NPFIGHRM.js.map +6 -0
  26. package/dist/tweaks/image-HTQQ4WX6.js +4 -0
  27. package/dist/tweaks/image-HTQQ4WX6.js.map +6 -0
  28. package/dist/tweaks/image-store-QD5SMZXG.js +2 -0
  29. package/dist/tweaks/image-store-QD5SMZXG.js.map +6 -0
  30. package/dist/tweaks/interval-BHPI4LRN.js +2 -0
  31. package/dist/tweaks/interval-BHPI4LRN.js.map +6 -0
  32. package/dist/tweaks/markup-QM53TQJZ.js +2 -0
  33. package/dist/tweaks/markup-QM53TQJZ.js.map +6 -0
  34. package/dist/tweaks/monitor-722WIYGW.js +3 -0
  35. package/dist/tweaks/monitor-722WIYGW.js.map +6 -0
  36. package/dist/tweaks/motion-HMCZK6HJ.js +2 -0
  37. package/dist/tweaks/motion-HMCZK6HJ.js.map +6 -0
  38. package/dist/tweaks/plot-D3NQ6XNN.js +3 -0
  39. package/dist/tweaks/plot-D3NQ6XNN.js.map +6 -0
  40. package/dist/tweaks/point-XDXKMDXH.js +2 -0
  41. package/dist/tweaks/point-XDXKMDXH.js.map +6 -0
  42. package/dist/tweaks/presets-EUWNSCUW.js +2 -0
  43. package/dist/tweaks/presets-EUWNSCUW.js.map +6 -0
  44. package/dist/tweaks/shadow-AM7VSRNS.js +2 -0
  45. package/dist/tweaks/shadow-AM7VSRNS.js.map +6 -0
  46. package/dist/tweaks/shadow-root-RYUV3AGS.js +3 -0
  47. package/dist/tweaks/shadow-root-RYUV3AGS.js.map +6 -0
  48. package/dist/tweaks/sides-JWIURDA4.js +2 -0
  49. package/dist/tweaks/sides-JWIURDA4.js.map +6 -0
  50. package/dist/tweaks/spring-BF5GBTPM.js +2 -0
  51. package/dist/tweaks/spring-BF5GBTPM.js.map +6 -0
  52. package/dist/tweaks/tabs-PRVUUZXZ.js +2 -0
  53. package/dist/tweaks/tabs-PRVUUZXZ.js.map +6 -0
  54. package/dist/tweaks.css +1 -1
  55. package/dist/tweaks.js +7 -3
  56. package/dist/tweaks.js.map +6 -0
  57. package/dist/types/tweaks/easing.d.ts +8 -11
  58. package/dist/types/tweaks/enhance.d.ts +3 -2
  59. package/dist/types/tweaks/panel.d.ts +6 -4
  60. package/dist/types/tweaks/schema.d.ts +4 -8
  61. package/dist/types/tweaks/standalone.d.ts +3 -3
  62. package/dist/types/tweaks/types.d.ts +499 -116
  63. package/package.json +30 -5
  64. package/src/tweaks/auto.ts +16 -0
  65. package/src/tweaks/clip.ts +156 -0
  66. package/src/tweaks/controls/basic.ts +727 -0
  67. package/src/tweaks/controls/bezier.ts +204 -0
  68. package/src/tweaks/controls/color.ts +861 -0
  69. package/src/tweaks/controls/gradient.ts +419 -0
  70. package/src/tweaks/controls/image.ts +555 -0
  71. package/src/tweaks/controls/interval.ts +189 -0
  72. package/src/tweaks/controls/monitor.ts +211 -0
  73. package/src/tweaks/controls/motion.ts +316 -0
  74. package/src/tweaks/controls/plot.ts +440 -0
  75. package/src/tweaks/controls/point.ts +208 -0
  76. package/src/tweaks/controls/shadow.ts +156 -0
  77. package/src/tweaks/controls/sides.ts +196 -0
  78. package/src/tweaks/controls/spring.ts +308 -0
  79. package/src/tweaks/controls/tabs.ts +68 -0
  80. package/src/tweaks/core.ts +9 -0
  81. package/src/tweaks/easing.ts +118 -0
  82. package/src/tweaks/enhance.ts +35 -0
  83. package/src/tweaks/feedback.ts +218 -0
  84. package/src/tweaks/fold.ts +33 -0
  85. package/src/tweaks/heavy.ts +626 -0
  86. package/src/tweaks/icons.ts +26 -0
  87. package/src/tweaks/image-store.ts +189 -0
  88. package/src/tweaks/lazy.ts +63 -0
  89. package/src/tweaks/markup.ts +317 -0
  90. package/src/tweaks/panel.ts +1693 -0
  91. package/src/tweaks/presets.ts +85 -0
  92. package/src/tweaks/schema.ts +351 -0
  93. package/src/tweaks/shadow-root.ts +178 -0
  94. package/src/tweaks/shared.ts +1137 -0
  95. package/src/tweaks/single.ts +22 -0
  96. package/src/tweaks/standalone.ts +179 -0
  97. package/src/tweaks/types.ts +1027 -0
  98. package/src/tweaks/undo.ts +104 -0
  99. package/src/tweaks.css +965 -0
  100. package/src/wide-gamut.ts +658 -0
  101. package/dist/tweaks/bezier-2RABC6LD.js +0 -1
  102. package/dist/tweaks/chunk-4ATI34PB.js +0 -1
  103. package/dist/tweaks/chunk-7OSCMZ2J.js +0 -1
  104. package/dist/tweaks/chunk-W3JNIJ2F.js +0 -1
  105. package/dist/tweaks/clip-ECGCECEC.js +0 -1
  106. package/dist/tweaks/colour-2RE3FQ5E.js +0 -1
  107. package/dist/tweaks/fold-UGN7TXGX.js +0 -1
  108. package/dist/tweaks/gradient-DB6XTDHO.js +0 -1
  109. package/dist/tweaks/heavy-PKOMHB3C.js +0 -1
  110. package/dist/tweaks/image-7MCLBOZ3.js +0 -1
  111. package/dist/tweaks/interval-L2E4L3AZ.js +0 -1
  112. package/dist/tweaks/markup-ZJJ6CCWM.js +0 -1
  113. package/dist/tweaks/monitor-IEK742PG.js +0 -2
  114. package/dist/tweaks/motion-N5UNVR55.js +0 -1
  115. package/dist/tweaks/plot-VVTOY3RA.js +0 -2
  116. package/dist/tweaks/point-YMMHSLO7.js +0 -1
  117. package/dist/tweaks/shadow-IKYOV3VN.js +0 -1
  118. package/dist/tweaks/sides-FH227Z54.js +0 -1
  119. package/dist/tweaks/spring-3PKAFIH7.js +0 -1
  120. package/dist/tweaks/tabs-BKK5NIIY.js +0 -1
@@ -1,18 +1,15 @@
1
- import type { GradientEasing, GradientValue } from "./types.js";
1
+ import type { GradientValue } from "./types.js";
2
2
  /** cubic-bezier control points [x1, y1, x2, y2]. */
3
- type Bez = [number, number, number, number];
4
- /** Bezier control points, or null for linear and anything unrecognised (bad input degrades to a
3
+ export type Bez = [number, number, number, number];
4
+ export declare const KEYWORDS: Record<string, Bez>;
5
+ /** Bezier control points, or null for linear and anything unrecognized (bad input degrades to a
5
6
  * straight blend). x1/x2 clamp into [0,1] as CSS requires; y may overshoot. */
6
7
  export declare function parseEasing(e: unknown): Bez | null;
7
- /** The name an easing is stored under: trimmed and lowercased when parseEasing knows it, else "linear". */
8
- export declare const easingName: (e: unknown) => GradientEasing;
9
8
  /** The curve at 16 even t: [x, y] pairs, y clamped to [0,1] since it becomes a color-mix percentage. */
10
9
  export declare function easingSamples(b: Bez): Array<[number, number]>;
11
- /** The blend progress at a position, linear between samples exactly as the browser draws the
12
- * stops, so a stop inserted at x takes the colour the ramp really shows. Null is the identity. */
13
- export declare function easingAt(b: Bez | null, x: number): number;
14
- /** A gradient value's `<color-stop-list>` with the easing expanded; for a conic / radial gradient. */
10
+ /** A gradient value's `<color-stop-list>` with the easing expanded; for a conic / radial gradient.
11
+ * One stop comes back doubled and none as `transparent, transparent`, so the list stays valid. */
15
12
  export declare function gradientStops(value: GradientValue): string;
16
- /** The `linear-gradient(…)` for a gradient value; `direction` is degrees or any CSS direction. */
13
+ /** The `linear-gradient(…)` for a gradient value; `direction` is degrees or any CSS direction.
14
+ * One stop draws a solid fill and no stops is `none`, both still valid for background-image. */
17
15
  export declare function gradientCss(value: GradientValue, direction?: number | string): string;
18
- export {};
@@ -1,2 +1,3 @@
1
- /** Bind every unbound [data-tw] host under `root` (the document by default). */
2
- export declare function enhance(root?: Document | Element): Promise<void>;
1
+ import type { EnhanceOptions } from "./types.js";
2
+ /** Bind every unbound [data-twk] host under `root` (the document by default). */
3
+ export declare function enhance(root?: Document | Element, opts?: EnhanceOptions): Promise<void>;
@@ -1,4 +1,4 @@
1
- import type { Schema, TweaksOptions, Panel, Control } from "./types.js";
1
+ import type { HeldSchema, TweaksOptions, Panel, ParamsOf, KnownTypes, Control } from "./types.js";
2
2
  import type { Meta } from "./schema.js";
3
3
  /** A params object or one of its folder/tabs sub-objects — the holder a control writes into. */
4
4
  type Target = Record<string, unknown>;
@@ -15,9 +15,11 @@ export interface Entry {
15
15
  m: Meta;
16
16
  el: HTMLElement;
17
17
  note?: Control["note"];
18
+ range?: Control["range"];
18
19
  }
19
- /** A values snapshot — params minus `_last`, as JSON round-trips it. */
20
+ /** A values snapshot — params as JSON round-trips it. */
20
21
  export type Snapshot = Record<string, any>;
21
- /** Build a panel from `schema`; the shell and API exist synchronously, lazy controls fill in on `ready`. */
22
- export declare function tweaks(name: string, schema: Schema, opts?: TweaksOptions): Panel;
22
+ /** Build a panel from `schema`; the shell and API exist synchronously, lazy controls fill in on `ready`.
23
+ * A schema written inline (or `as const`) types `params` from its shape. */
24
+ export declare function tweaks<const S extends HeldSchema>(name: string, schema: S & KnownTypes<S>, opts?: TweaksOptions): Panel<ParamsOf<S>>;
23
25
  export {};
@@ -1,7 +1,8 @@
1
- import type { SchemaObject, Option, Get, Control } from "./types.js";
1
+ import type { SchemaObject, Option, Get } from "./types.js";
2
2
  /** A point control's component spec, as the public verbose form declares it. */
3
3
  type PointComponent = Extract<SchemaObject, {
4
4
  type: "point";
5
+ components: ReadonlyArray<unknown>;
5
6
  }>["components"][number];
6
7
  /** One page of a tabs control: its slug key, title and the metas built inside it. */
7
8
  interface TabPage {
@@ -71,12 +72,7 @@ interface Meta {
71
72
  /** A verbose handler's result: the control's own fields, or falsy for a malformed shape. */
72
73
  type MetaFields = Partial<Meta> | false;
73
74
  declare function metaFor(key: string, value: any, depth?: number): Meta | null;
74
- declare const hasOwn: <T extends object>(o: T, k: PropertyKey) => k is keyof T;
75
- declare const isReservedKey: (k: string) => k is "__proto__" | "constructor" | "prototype";
76
- declare const valueChanged: (a: unknown, b: unknown) => boolean;
77
- declare const restoreDefault: (ctrl: Pick<Control, "set">, raw: unknown, def: unknown) => void;
78
- declare const SPRING_KEYS: string[];
79
- declare const TYPED_META: Partial<Record<SchemaObject["type"], (v: any, depth: number) => MetaFields>>;
75
+ declare const TYPED_META: Partial<Record<SchemaObject["type"], (v: any, depth: number, key: string) => MetaFields>>;
80
76
  declare const VALUELESS: Set<string>;
81
- export { metaFor, valueChanged, restoreDefault, hasOwn, isReservedKey, VALUELESS, TYPED_META, SPRING_KEYS };
77
+ export { metaFor, VALUELESS, TYPED_META };
82
78
  export type { Meta, TabPage, PointComponent };
@@ -1,5 +1,5 @@
1
- import type { SchemaValue, MountOptions, MountedControl, ColorPickerOptions, ColorPicker } from "./types.js";
1
+ import type { HeldValue, KnownType, MountOptions, MountedControl, ColorPickerOptions, ColorPicker } from "./types.js";
2
2
  /** One control from a schema value, into `host`; a folder or tabs set is tweaks()'s to build. */
3
- export declare function mountControl(host: Element, value: SchemaValue, opts?: MountOptions): MountedControl;
4
- /** The colour editor surface alone, for a host page that brings its own swatch. */
3
+ export declare function mountControl<const V extends HeldValue>(host: Element, value: V & KnownType<V>, opts?: MountOptions): MountedControl;
4
+ /** The color editor surface alone, for a host page that brings its own swatch. */
5
5
  export declare function createColorPicker(opts?: ColorPickerOptions): ColorPicker;