@sectile/core 0.7.0 → 0.8.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 (262) hide show
  1. package/dist/accordion.d.ts +0 -1
  2. package/dist/adapter-runtime.d.ts +53 -2
  3. package/dist/adapter-runtime.js +224 -25
  4. package/dist/adapter-runtime.js.map +1 -1
  5. package/dist/alert-dialog.d.ts +0 -1
  6. package/dist/carousel.d.ts +0 -1
  7. package/dist/cascade-list.d.ts +16 -0
  8. package/dist/cascade-list.js +33 -0
  9. package/dist/cascade-list.js.map +1 -0
  10. package/dist/cascade-select.d.ts +0 -1
  11. package/dist/cascade-select.js +47 -119
  12. package/dist/cascade-select.js.map +1 -1
  13. package/dist/checkbox-group.d.ts +0 -1
  14. package/dist/checkbox.d.ts +0 -1
  15. package/dist/collection-window.d.ts +0 -1
  16. package/dist/color-picker.d.ts +3 -8
  17. package/dist/color-picker.js +60 -305
  18. package/dist/color-picker.js.map +1 -1
  19. package/dist/combobox.d.ts +0 -1
  20. package/dist/dialog.d.ts +0 -1
  21. package/dist/disclosure.d.ts +0 -1
  22. package/dist/drawer.d.ts +0 -1
  23. package/dist/editable.d.ts +0 -1
  24. package/dist/editing/color-text.d.ts +7 -0
  25. package/dist/editing/color-text.js +199 -0
  26. package/dist/editing/color-text.js.map +1 -0
  27. package/dist/error-code.d.ts +1 -2
  28. package/dist/feed.d.ts +0 -1
  29. package/dist/grid-control.d.ts +3 -0
  30. package/dist/grid-control.js +2 -0
  31. package/dist/grid-control.js.map +1 -0
  32. package/dist/identity.d.ts +10 -0
  33. package/dist/identity.js +16 -0
  34. package/dist/identity.js.map +1 -0
  35. package/dist/index.d.ts +2 -2
  36. package/dist/interaction.d.ts +0 -1
  37. package/dist/internal/composites/cascade-choice.d.ts +54 -0
  38. package/dist/internal/composites/cascade-choice.js +154 -0
  39. package/dist/internal/composites/cascade-choice.js.map +1 -0
  40. package/dist/internal/composites/combobox.d.ts +0 -1
  41. package/dist/internal/composites/combobox.js +28 -11
  42. package/dist/internal/composites/combobox.js.map +1 -1
  43. package/dist/internal/composites/grid-control.d.ts +0 -1
  44. package/dist/internal/composites/grid-control.js +18 -23
  45. package/dist/internal/composites/grid-control.js.map +1 -1
  46. package/dist/internal/composites/linear-action.d.ts +0 -1
  47. package/dist/internal/composites/linear-action.js +20 -14
  48. package/dist/internal/composites/linear-action.js.map +1 -1
  49. package/dist/internal/composites/linear-choice.d.ts +0 -1
  50. package/dist/internal/composites/linear-choice.js +15 -8
  51. package/dist/internal/composites/linear-choice.js.map +1 -1
  52. package/dist/internal/composites/listbox.d.ts +0 -1
  53. package/dist/internal/composites/listbox.js +15 -13
  54. package/dist/internal/composites/listbox.js.map +1 -1
  55. package/dist/internal/composites/menu.d.ts +0 -1
  56. package/dist/internal/composites/menu.js +38 -17
  57. package/dist/internal/composites/menu.js.map +1 -1
  58. package/dist/internal/composites/popup.d.ts +0 -1
  59. package/dist/internal/composites/slider.d.ts +0 -1
  60. package/dist/internal/composites/tree-grid.d.ts +0 -1
  61. package/dist/internal/composites/tree-grid.js +70 -48
  62. package/dist/internal/composites/tree-grid.js.map +1 -1
  63. package/dist/internal/composites/tree-view.d.ts +0 -1
  64. package/dist/internal/composites/tree-view.js +32 -20
  65. package/dist/internal/composites/tree-view.js.map +1 -1
  66. package/dist/internal/editing/text.d.ts +0 -1
  67. package/dist/internal/editing/text.js +40 -27
  68. package/dist/internal/editing/text.js.map +1 -1
  69. package/dist/internal/kernel/bounded-scalar.d.ts +31 -0
  70. package/dist/internal/kernel/bounded-scalar.js +78 -0
  71. package/dist/internal/kernel/bounded-scalar.js.map +1 -0
  72. package/dist/internal/kernel/decimal.d.ts +0 -1
  73. package/dist/internal/kernel/exact-ratio.d.ts +5 -0
  74. package/dist/internal/kernel/exact-ratio.js +2 -0
  75. package/dist/internal/kernel/exact-ratio.js.map +1 -0
  76. package/dist/internal/kernel/foundation.d.ts +8 -6
  77. package/dist/internal/kernel/foundation.js +35 -16
  78. package/dist/internal/kernel/foundation.js.map +1 -1
  79. package/dist/internal/kernel/indexed-sequence.d.ts +28 -3
  80. package/dist/internal/kernel/indexed-sequence.js +162 -12
  81. package/dist/internal/kernel/indexed-sequence.js.map +1 -1
  82. package/dist/internal/kernel/machine.d.ts +1 -2
  83. package/dist/internal/kernel/machine.js +5 -2
  84. package/dist/internal/kernel/machine.js.map +1 -1
  85. package/dist/internal/runtime/revision.d.ts +0 -1
  86. package/dist/internal/state/checked.d.ts +0 -1
  87. package/dist/internal/state/cursor.d.ts +0 -1
  88. package/dist/internal/state/expansion.d.ts +0 -1
  89. package/dist/internal/state/open-state.d.ts +0 -1
  90. package/dist/internal/state/selection.d.ts +0 -1
  91. package/dist/internal/state/selection.js +99 -27
  92. package/dist/internal/state/selection.js.map +1 -1
  93. package/dist/layer-stack.d.ts +0 -1
  94. package/dist/listbox.d.ts +0 -1
  95. package/dist/menu-button.d.ts +0 -1
  96. package/dist/menu.d.ts +0 -1
  97. package/dist/menubar.d.ts +0 -1
  98. package/dist/meter-group.d.ts +38 -0
  99. package/dist/meter-group.js +103 -0
  100. package/dist/meter-group.js.map +1 -0
  101. package/dist/meter.d.ts +25 -0
  102. package/dist/meter.js +89 -0
  103. package/dist/meter.js.map +1 -0
  104. package/dist/multi-thumb-slider.d.ts +0 -1
  105. package/dist/navigation-menu.d.ts +0 -1
  106. package/dist/number-field.d.ts +0 -1
  107. package/dist/pagination.d.ts +0 -1
  108. package/dist/pin-input.d.ts +0 -1
  109. package/dist/popover.d.ts +0 -1
  110. package/dist/progress.d.ts +17 -0
  111. package/dist/progress.js +49 -0
  112. package/dist/progress.js.map +1 -0
  113. package/dist/quantity-field.d.ts +0 -1
  114. package/dist/radio-group.d.ts +0 -1
  115. package/dist/rating.d.ts +0 -1
  116. package/dist/reorder.d.ts +0 -1
  117. package/dist/reorder.js +92 -43
  118. package/dist/reorder.js.map +1 -1
  119. package/dist/result.d.ts +2 -1
  120. package/dist/result.js +14 -0
  121. package/dist/result.js.map +1 -1
  122. package/dist/revision.d.ts +1 -1
  123. package/dist/revision.js +1 -0
  124. package/dist/revision.js.map +1 -1
  125. package/dist/select.d.ts +0 -1
  126. package/dist/selection.d.ts +24 -0
  127. package/dist/selection.js +20 -0
  128. package/dist/selection.js.map +1 -0
  129. package/dist/shared.d.ts +0 -1
  130. package/dist/slider.d.ts +0 -1
  131. package/dist/spin-button.d.ts +0 -1
  132. package/dist/stepper.d.ts +0 -1
  133. package/dist/structures/anchored-layout.d.ts +33 -0
  134. package/dist/structures/anchored-layout.js +158 -0
  135. package/dist/structures/anchored-layout.js.map +1 -0
  136. package/dist/structures/color.d.ts +80 -0
  137. package/dist/structures/color.js +206 -0
  138. package/dist/structures/color.js.map +1 -0
  139. package/dist/structures/geometry.d.ts +53 -0
  140. package/dist/structures/geometry.js +165 -0
  141. package/dist/structures/geometry.js.map +1 -0
  142. package/dist/structures/grid.d.ts +20 -4
  143. package/dist/structures/grid.js +91 -50
  144. package/dist/structures/grid.js.map +1 -1
  145. package/dist/structures/index-span.d.ts +31 -0
  146. package/dist/structures/index-span.js +267 -0
  147. package/dist/structures/index-span.js.map +1 -0
  148. package/dist/structures/metric-index.d.ts +36 -0
  149. package/dist/structures/metric-index.js +390 -0
  150. package/dist/structures/metric-index.js.map +1 -0
  151. package/dist/structures/range.d.ts +21 -4
  152. package/dist/structures/range.js +156 -11
  153. package/dist/structures/range.js.map +1 -1
  154. package/dist/structures/selection-expression.d.ts +26 -0
  155. package/dist/structures/selection-expression.js +157 -0
  156. package/dist/structures/selection-expression.js.map +1 -0
  157. package/dist/structures/sequence.d.ts +0 -1
  158. package/dist/structures/sequence.js +69 -7
  159. package/dist/structures/sequence.js.map +1 -1
  160. package/dist/structures/tree.d.ts +5 -1
  161. package/dist/structures/tree.js +33 -5
  162. package/dist/structures/tree.js.map +1 -1
  163. package/dist/switch.d.ts +0 -1
  164. package/dist/tabs.d.ts +0 -1
  165. package/dist/tags-input.d.ts +0 -1
  166. package/dist/text.d.ts +0 -1
  167. package/dist/timer.d.ts +0 -1
  168. package/dist/toast.d.ts +2 -2
  169. package/dist/toast.js +3 -1
  170. package/dist/toast.js.map +1 -1
  171. package/dist/toggle-button.d.ts +0 -1
  172. package/dist/toggle-group.d.ts +0 -1
  173. package/dist/toolbar.d.ts +0 -1
  174. package/dist/tooltip.d.ts +0 -1
  175. package/dist/tree-grid.d.ts +0 -1
  176. package/dist/tree-view.d.ts +0 -1
  177. package/dist/units.d.ts +0 -1
  178. package/dist/window-splitter.d.ts +0 -1
  179. package/package.json +75 -12
  180. package/dist/accordion.d.ts.map +0 -1
  181. package/dist/adapter-runtime.d.ts.map +0 -1
  182. package/dist/alert-dialog.d.ts.map +0 -1
  183. package/dist/carousel.d.ts.map +0 -1
  184. package/dist/cascade-select.d.ts.map +0 -1
  185. package/dist/checkbox-group.d.ts.map +0 -1
  186. package/dist/checkbox.d.ts.map +0 -1
  187. package/dist/collection-window.d.ts.map +0 -1
  188. package/dist/color-picker.d.ts.map +0 -1
  189. package/dist/combobox.d.ts.map +0 -1
  190. package/dist/dialog.d.ts.map +0 -1
  191. package/dist/disclosure.d.ts.map +0 -1
  192. package/dist/drawer.d.ts.map +0 -1
  193. package/dist/editable.d.ts.map +0 -1
  194. package/dist/error-code.d.ts.map +0 -1
  195. package/dist/feed.d.ts.map +0 -1
  196. package/dist/form.d.ts +0 -135
  197. package/dist/form.d.ts.map +0 -1
  198. package/dist/form.js +0 -627
  199. package/dist/form.js.map +0 -1
  200. package/dist/index.d.ts.map +0 -1
  201. package/dist/interaction.d.ts.map +0 -1
  202. package/dist/internal/composites/combobox.d.ts.map +0 -1
  203. package/dist/internal/composites/grid-control.d.ts.map +0 -1
  204. package/dist/internal/composites/linear-action.d.ts.map +0 -1
  205. package/dist/internal/composites/linear-choice.d.ts.map +0 -1
  206. package/dist/internal/composites/listbox.d.ts.map +0 -1
  207. package/dist/internal/composites/menu.d.ts.map +0 -1
  208. package/dist/internal/composites/popup.d.ts.map +0 -1
  209. package/dist/internal/composites/slider.d.ts.map +0 -1
  210. package/dist/internal/composites/tree-grid.d.ts.map +0 -1
  211. package/dist/internal/composites/tree-view.d.ts.map +0 -1
  212. package/dist/internal/editing/text.d.ts.map +0 -1
  213. package/dist/internal/kernel/decimal.d.ts.map +0 -1
  214. package/dist/internal/kernel/foundation.d.ts.map +0 -1
  215. package/dist/internal/kernel/indexed-sequence.d.ts.map +0 -1
  216. package/dist/internal/kernel/machine.d.ts.map +0 -1
  217. package/dist/internal/runtime/revision.d.ts.map +0 -1
  218. package/dist/internal/state/checked.d.ts.map +0 -1
  219. package/dist/internal/state/cursor.d.ts.map +0 -1
  220. package/dist/internal/state/expansion.d.ts.map +0 -1
  221. package/dist/internal/state/open-state.d.ts.map +0 -1
  222. package/dist/internal/state/selection.d.ts.map +0 -1
  223. package/dist/layer-stack.d.ts.map +0 -1
  224. package/dist/listbox.d.ts.map +0 -1
  225. package/dist/menu-button.d.ts.map +0 -1
  226. package/dist/menu.d.ts.map +0 -1
  227. package/dist/menubar.d.ts.map +0 -1
  228. package/dist/multi-thumb-slider.d.ts.map +0 -1
  229. package/dist/navigation-menu.d.ts.map +0 -1
  230. package/dist/number-field.d.ts.map +0 -1
  231. package/dist/pagination.d.ts.map +0 -1
  232. package/dist/pin-input.d.ts.map +0 -1
  233. package/dist/popover.d.ts.map +0 -1
  234. package/dist/quantity-field.d.ts.map +0 -1
  235. package/dist/radio-group.d.ts.map +0 -1
  236. package/dist/rating.d.ts.map +0 -1
  237. package/dist/reorder.d.ts.map +0 -1
  238. package/dist/result.d.ts.map +0 -1
  239. package/dist/revision.d.ts.map +0 -1
  240. package/dist/select.d.ts.map +0 -1
  241. package/dist/shared.d.ts.map +0 -1
  242. package/dist/slider.d.ts.map +0 -1
  243. package/dist/spin-button.d.ts.map +0 -1
  244. package/dist/stepper.d.ts.map +0 -1
  245. package/dist/structures/grid.d.ts.map +0 -1
  246. package/dist/structures/range.d.ts.map +0 -1
  247. package/dist/structures/sequence.d.ts.map +0 -1
  248. package/dist/structures/tree.d.ts.map +0 -1
  249. package/dist/switch.d.ts.map +0 -1
  250. package/dist/tabs.d.ts.map +0 -1
  251. package/dist/tags-input.d.ts.map +0 -1
  252. package/dist/text.d.ts.map +0 -1
  253. package/dist/timer.d.ts.map +0 -1
  254. package/dist/toast.d.ts.map +0 -1
  255. package/dist/toggle-button.d.ts.map +0 -1
  256. package/dist/toggle-group.d.ts.map +0 -1
  257. package/dist/toolbar.d.ts.map +0 -1
  258. package/dist/tooltip.d.ts.map +0 -1
  259. package/dist/tree-grid.d.ts.map +0 -1
  260. package/dist/tree-view.d.ts.map +0 -1
  261. package/dist/units.d.ts.map +0 -1
  262. package/dist/window-splitter.d.ts.map +0 -1
@@ -0,0 +1,158 @@
1
+ import { unwrap } from '../result.js';
2
+ import { fail, ok } from '../internal/kernel/foundation.js';
3
+ import { createInsets, intersectRects, tryCreateRect, tryCreateSize, } from './geometry.js';
4
+ export const MAX_ANCHORED_LAYOUT_CANDIDATES = 4;
5
+ export function solveAnchoredLayout(input) {
6
+ return unwrap(trySolveAnchoredLayout(input));
7
+ }
8
+ export function trySolveAnchoredLayout(input) {
9
+ if (input === null || typeof input !== 'object')
10
+ return invalid('Anchored layout input must be an object.', input);
11
+ const referenceResult = tryCreateRect(input.reference);
12
+ if (!referenceResult.ok)
13
+ return referenceResult;
14
+ const floatingResult = tryCreateSize(input.floating);
15
+ if (!floatingResult.ok)
16
+ return floatingResult;
17
+ const boundaryResult = tryCreateRect(input.boundary);
18
+ if (!boundaryResult.ok)
19
+ return boundaryResult;
20
+ const side = input.side ?? 'bottom';
21
+ const align = input.align ?? 'center';
22
+ if (!SIDES.includes(side) || !ALIGNS.includes(align))
23
+ return invalid('Anchored side or alignment is invalid.', { side, align });
24
+ const offset = input.offset ?? 0;
25
+ const arrowPadding = input.arrowPadding ?? 0;
26
+ if (!Number.isFinite(offset) || !nonNegative(arrowPadding))
27
+ return invalid('Anchored offsets must be finite and arrowPadding non-negative.', { offset, arrowPadding });
28
+ let padding;
29
+ try {
30
+ padding = createInsets(input.padding);
31
+ }
32
+ catch (error) {
33
+ return asFailure(error);
34
+ }
35
+ let arrow = null;
36
+ if (input.arrow !== null && input.arrow !== undefined) {
37
+ const checked = tryCreateSize(input.arrow);
38
+ if (!checked.ok)
39
+ return checked;
40
+ arrow = checked.value;
41
+ }
42
+ const reference = referenceResult.value;
43
+ const floating = floatingResult.value;
44
+ const boundary = boundaryResult.value;
45
+ const innerX = boundary.x + Math.min(boundary.width, padding.left);
46
+ const innerY = boundary.y + Math.min(boundary.height, padding.top);
47
+ const innerWidth = Math.max(0, boundary.width - padding.left - padding.right);
48
+ const innerHeight = Math.max(0, boundary.height - padding.top - padding.bottom);
49
+ const candidateLimit = input.flip === false ? 1 : MAX_ANCHORED_LAYOUT_CANDIDATES;
50
+ let bestSide = side;
51
+ let bestX = 0;
52
+ let bestY = 0;
53
+ let bestOverflow = Number.POSITIVE_INFINITY;
54
+ const crossX = align === 'start' ? reference.x : align === 'end' ? reference.x + reference.width - floating.width : reference.x + (reference.width - floating.width) / 2;
55
+ const crossY = align === 'start' ? reference.y : align === 'end' ? reference.y + reference.height - floating.height : reference.y + (reference.height - floating.height) / 2;
56
+ for (let candidate = 0; candidate < candidateLimit; candidate += 1) {
57
+ const candidateSide = candidateSideAt(side, candidate);
58
+ let candidateX;
59
+ let candidateY;
60
+ if (candidateSide === 'top') {
61
+ candidateX = crossX;
62
+ candidateY = reference.y - floating.height - offset;
63
+ }
64
+ else if (candidateSide === 'bottom') {
65
+ candidateX = crossX;
66
+ candidateY = reference.y + reference.height + offset;
67
+ }
68
+ else if (candidateSide === 'left') {
69
+ candidateX = reference.x - floating.width - offset;
70
+ candidateY = crossY;
71
+ }
72
+ else {
73
+ candidateX = reference.x + reference.width + offset;
74
+ candidateY = crossY;
75
+ }
76
+ const overflow = overflowTotal(candidateX, candidateY, floating.width, floating.height, innerX, innerY, innerWidth, innerHeight);
77
+ if (overflow < bestOverflow) {
78
+ bestOverflow = overflow;
79
+ bestSide = candidateSide;
80
+ bestX = candidateX;
81
+ bestY = candidateY;
82
+ }
83
+ }
84
+ if (input.shift !== false) {
85
+ const maxX = innerX + innerWidth - floating.width;
86
+ const maxY = innerY + innerHeight - floating.height;
87
+ bestX = maxX < innerX ? innerX : Math.min(Math.max(bestX, innerX), maxX);
88
+ bestY = maxY < innerY ? innerY : Math.min(Math.max(bestY, innerY), maxY);
89
+ }
90
+ const rect = Object.freeze({ x: bestX, y: bestY, width: floating.width, height: floating.height });
91
+ const overflow = overflowRecord(rect, innerX, innerY, innerWidth, innerHeight);
92
+ const availableSize = available(reference, boundary, padding, bestSide, offset);
93
+ return ok(Object.freeze({
94
+ rect,
95
+ side: bestSide,
96
+ align,
97
+ overflow,
98
+ availableSize,
99
+ arrow: arrow === null ? null : arrowLayout(reference, rect, bestSide, arrow, arrowPadding),
100
+ referenceHidden: intersectRects(reference, boundary) === null,
101
+ candidateCount: candidateLimit,
102
+ }));
103
+ }
104
+ const SIDES = ['top', 'right', 'bottom', 'left'];
105
+ const ALIGNS = ['start', 'center', 'end'];
106
+ function candidateSideAt(preferred, candidate) {
107
+ const preferredIndex = SIDES.indexOf(preferred);
108
+ if (candidate === 0)
109
+ return preferred;
110
+ if (candidate === 1)
111
+ return SIDES[(preferredIndex + 2) % 4];
112
+ if (candidate === 2)
113
+ return SIDES[(preferredIndex + 1) % 4];
114
+ return SIDES[(preferredIndex + 3) % 4];
115
+ }
116
+ function overflowTotal(x, y, width, height, bx, by, bw, bh) {
117
+ return Math.max(0, by - y) + Math.max(0, x + width - bx - bw) + Math.max(0, y + height - by - bh) + Math.max(0, bx - x);
118
+ }
119
+ function overflowRecord(rect, x, y, width, height) {
120
+ const top = Math.max(0, y - rect.y);
121
+ const right = Math.max(0, rect.x + rect.width - x - width);
122
+ const bottom = Math.max(0, rect.y + rect.height - y - height);
123
+ const left = Math.max(0, x - rect.x);
124
+ return Object.freeze({ top, right, bottom, left, total: top + right + bottom + left, maximum: Math.max(top, right, bottom, left) });
125
+ }
126
+ function available(reference, boundary, padding, side, offset) {
127
+ const left = boundary.x + padding.left;
128
+ const top = boundary.y + padding.top;
129
+ const right = boundary.x + boundary.width - padding.right;
130
+ const bottom = boundary.y + boundary.height - padding.bottom;
131
+ if (side === 'top')
132
+ return Object.freeze({ width: Math.max(0, right - left), height: Math.max(0, reference.y - offset - top) });
133
+ if (side === 'bottom')
134
+ return Object.freeze({ width: Math.max(0, right - left), height: Math.max(0, bottom - reference.y - reference.height - offset) });
135
+ if (side === 'left')
136
+ return Object.freeze({ width: Math.max(0, reference.x - offset - left), height: Math.max(0, bottom - top) });
137
+ return Object.freeze({ width: Math.max(0, right - reference.x - reference.width - offset), height: Math.max(0, bottom - top) });
138
+ }
139
+ function arrowLayout(reference, floating, side, arrow, padding) {
140
+ if (side === 'top' || side === 'bottom') {
141
+ const ideal = reference.x + reference.width / 2 - floating.x - arrow.width / 2;
142
+ const maximum = Math.max(padding, floating.width - arrow.width - padding);
143
+ const x = Math.min(Math.max(ideal, padding), maximum);
144
+ return Object.freeze({ x, y: side === 'top' ? floating.height - arrow.height / 2 : -arrow.height / 2, centerOffset: ideal - x });
145
+ }
146
+ const ideal = reference.y + reference.height / 2 - floating.y - arrow.height / 2;
147
+ const maximum = Math.max(padding, floating.height - arrow.height - padding);
148
+ const y = Math.min(Math.max(ideal, padding), maximum);
149
+ return Object.freeze({ x: side === 'left' ? floating.width - arrow.width / 2 : -arrow.width / 2, y, centerOffset: ideal - y });
150
+ }
151
+ function nonNegative(value) { return typeof value === 'number' && Number.isFinite(value) && value >= 0; }
152
+ function invalid(message, value) { return fail('construction', 'invalid-boundary', message, { value }); }
153
+ function asFailure(error) {
154
+ return error !== null && typeof error === 'object' && 'code' in error
155
+ ? { ok: false, error: error }
156
+ : invalid('Anchored layout normalization failed.', error);
157
+ }
158
+ //# sourceMappingURL=anchored-layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anchored-layout.js","sourceRoot":"","sources":["../../src/structures/anchored-layout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,aAAa,GAQd,MAAM,eAAe,CAAC;AAgCvB,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAEhD,MAAM,UAAU,mBAAmB,CAAC,KAA0B;IAC5D,OAAO,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAA0B;IAC/D,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;IACnH,MAAM,eAAe,GAAG,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACvD,IAAI,CAAC,eAAe,CAAC,EAAE;QAAE,OAAO,eAAe,CAAC;IAChD,MAAM,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,CAAC,cAAc,CAAC,EAAE;QAAE,OAAO,cAAc,CAAC;IAC9C,MAAM,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,CAAC,cAAc,CAAC,EAAE;QAAE,OAAO,cAAc,CAAC;IAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC;IACpC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC;IACtC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,wCAAwC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAChI,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;IACjC,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;QAAE,OAAO,OAAO,CAAC,gEAAgE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IACvK,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QAAC,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAAC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAAC,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;IAAC,CAAC;IACzF,IAAI,KAAK,GAAgB,IAAI,CAAC;IAC9B,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACtD,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,OAAO,OAAO,CAAC;QAChC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IACxB,CAAC;IACD,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC;IACxC,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC;IACtC,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC;IACtC,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9E,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChF,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC;IACjF,IAAI,QAAQ,GAAG,IAAI,CAAC;IACpB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,YAAY,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAC5C,MAAM,MAAM,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzK,MAAM,MAAM,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7K,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,cAAc,EAAE,SAAS,IAAI,CAAC,EAAE,CAAC;QACnE,MAAM,aAAa,GAAG,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACvD,IAAI,UAAkB,CAAC;QACvB,IAAI,UAAkB,CAAC;QACvB,IAAI,aAAa,KAAK,KAAK,EAAE,CAAC;YAC5B,UAAU,GAAG,MAAM,CAAC;YACpB,UAAU,GAAG,SAAS,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;QACtD,CAAC;aAAM,IAAI,aAAa,KAAK,QAAQ,EAAE,CAAC;YACtC,UAAU,GAAG,MAAM,CAAC;YACpB,UAAU,GAAG,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;QACvD,CAAC;aAAM,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;YACpC,UAAU,GAAG,SAAS,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC;YACnD,UAAU,GAAG,MAAM,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,UAAU,GAAG,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC;YACpD,UAAU,GAAG,MAAM,CAAC;QACtB,CAAC;QACD,MAAM,QAAQ,GAAG,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QACjI,IAAI,QAAQ,GAAG,YAAY,EAAE,CAAC;YAC5B,YAAY,GAAG,QAAQ,CAAC;YACxB,QAAQ,GAAG,aAAa,CAAC;YACzB,KAAK,GAAG,UAAU,CAAC;YACnB,KAAK,GAAG,UAAU,CAAC;QACrB,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC;QAClD,MAAM,IAAI,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC;QACpD,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;QACzE,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACnG,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IAC/E,MAAM,aAAa,GAAG,SAAS,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAChF,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;QACtB,IAAI;QACJ,IAAI,EAAE,QAAQ;QACd,KAAK;QACL,QAAQ;QACR,aAAa;QACb,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,CAAC;QAC1F,eAAe,EAAE,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,KAAK,IAAI;QAC7D,cAAc,EAAE,cAAc;KAC/B,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,KAAK,GAAwB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACtE,MAAM,MAAM,GAAyB,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAEhE,SAAS,eAAe,CAAC,SAAmB,EAAE,SAAiB;IAC7D,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChD,IAAI,SAAS,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACtC,IAAI,SAAS,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,GAAG,CAAC,CAAa,CAAC;IACxE,IAAI,SAAS,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,GAAG,CAAC,CAAa,CAAC;IACxE,OAAO,KAAK,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,GAAG,CAAC,CAAa,CAAC;AACrD,CAAC;AAED,SAAS,aAAa,CAAC,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,MAAc,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU;IACxH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1H,CAAC;AAED,SAAS,cAAc,CAAC,IAAU,EAAE,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,MAAc;IACrF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACrC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACtI,CAAC;AAED,SAAS,SAAS,CAAC,SAAe,EAAE,QAAc,EAAE,OAAe,EAAE,IAAc,EAAE,MAAc;IACjG,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IACvC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC1D,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC7D,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;IAChI,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IACzJ,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;IAClI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AAClI,CAAC;AAED,SAAS,WAAW,CAAC,SAAe,EAAE,QAAc,EAAE,IAAc,EAAE,KAAW,EAAE,OAAe;IAChG,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;QAC/E,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC;QAC1E,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QACtD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,YAAY,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;IACnI,CAAC;IACD,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACjF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;IAC5E,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IACtD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;AACjI,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,IAAqB,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;AACnI,SAAS,OAAO,CAAI,OAAe,EAAE,KAAc,IAAe,OAAO,IAAI,CAAC,cAAc,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACxI,SAAS,SAAS,CAAI,KAAc;IAClC,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK;QACnE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAc,EAAE;QACtC,CAAC,CAAC,OAAO,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,80 @@
1
+ import type { Result } from '../shared.js';
2
+ export interface SrgbColor {
3
+ readonly red: number;
4
+ readonly green: number;
5
+ readonly blue: number;
6
+ readonly alpha: number;
7
+ }
8
+ export interface LinearSrgbColor extends SrgbColor {
9
+ }
10
+ export interface Rgba8 {
11
+ readonly red: number;
12
+ readonly green: number;
13
+ readonly blue: number;
14
+ readonly alpha: number;
15
+ }
16
+ export interface HslColor {
17
+ readonly hue: number;
18
+ readonly saturation: number;
19
+ readonly lightness: number;
20
+ readonly alpha: number;
21
+ }
22
+ export interface HsvColor {
23
+ readonly hue: number;
24
+ readonly saturation: number;
25
+ readonly value: number;
26
+ readonly alpha: number;
27
+ }
28
+ export interface DeviceCmykColor {
29
+ readonly cyan: number;
30
+ readonly magenta: number;
31
+ readonly yellow: number;
32
+ readonly black: number;
33
+ readonly alpha: number;
34
+ }
35
+ export interface OklabColor {
36
+ readonly lightness: number;
37
+ readonly a: number;
38
+ readonly b: number;
39
+ readonly alpha: number;
40
+ }
41
+ export interface OklchColor {
42
+ readonly lightness: number;
43
+ readonly chroma: number;
44
+ readonly hue: number;
45
+ readonly alpha: number;
46
+ }
47
+ export type SrgbGamutPolicy = 'reject' | 'clip' | 'reduce-chroma';
48
+ export declare const OKLCH_GAMUT_ITERATIONS = 12;
49
+ export declare function createRgba8(red: number, green: number, blue: number, alpha?: number): Rgba8;
50
+ export declare function tryCreateRgba8(red: number, green: number, blue: number, alpha?: number): Result<Rgba8>;
51
+ export declare function createSrgbColor(red: number, green: number, blue: number, alpha?: number): SrgbColor;
52
+ export declare function tryCreateSrgbColor(red: number, green: number, blue: number, alpha?: number): Result<SrgbColor>;
53
+ export declare function createHslColor(hue: number, saturation: number, lightness: number, alpha?: number): HslColor;
54
+ export declare function tryCreateHslColor(hue: number, saturation: number, lightness: number, alpha?: number): Result<HslColor>;
55
+ export declare function createHsvColor(hue: number, saturation: number, value: number, alpha?: number): HsvColor;
56
+ export declare function tryCreateHsvColor(hue: number, saturation: number, value: number, alpha?: number): Result<HsvColor>;
57
+ export declare function createDeviceCmykColor(cyan: number, magenta: number, yellow: number, black: number, alpha?: number): DeviceCmykColor;
58
+ export declare function tryCreateDeviceCmykColor(cyan: number, magenta: number, yellow: number, black: number, alpha?: number): Result<DeviceCmykColor>;
59
+ export declare function createOklabColor(lightness: number, a: number, b: number, alpha?: number): OklabColor;
60
+ export declare function tryCreateOklabColor(lightness: number, a: number, b: number, alpha?: number): Result<OklabColor>;
61
+ export declare function createOklchColor(lightness: number, chroma: number, hue: number, alpha?: number): OklchColor;
62
+ export declare function tryCreateOklchColor(lightness: number, chroma: number, hue: number, alpha?: number): Result<OklchColor>;
63
+ export declare function rgba8ToSrgb(value: Rgba8): SrgbColor;
64
+ export declare function srgbToRgba8(value: SrgbColor): Rgba8;
65
+ export declare function srgbToLinearSrgb(value: SrgbColor): LinearSrgbColor;
66
+ export declare function linearSrgbToSrgb(value: LinearSrgbColor, policy?: SrgbGamutPolicy): Result<SrgbColor>;
67
+ export declare function srgbToHsv(value: SrgbColor): HsvColor;
68
+ export declare function hsvToSrgb(value: HsvColor): SrgbColor;
69
+ export declare function srgbToHsl(value: SrgbColor): HslColor;
70
+ export declare function hslToSrgb(value: HslColor): SrgbColor;
71
+ export declare function srgbToDeviceCmyk(value: SrgbColor): DeviceCmykColor;
72
+ export declare function deviceCmykToSrgb(value: DeviceCmykColor): SrgbColor;
73
+ export declare function linearSrgbToOklab(value: LinearSrgbColor): OklabColor;
74
+ export declare function oklabToLinearSrgb(value: OklabColor): LinearSrgbColor;
75
+ export declare function oklabToOklch(value: OklabColor): OklchColor;
76
+ export declare function oklchToOklab(value: OklchColor): OklabColor;
77
+ export declare function srgbToOklch(value: SrgbColor): OklchColor;
78
+ export declare function oklchToSrgb(value: OklchColor, policy?: SrgbGamutPolicy): Result<SrgbColor>;
79
+ export declare function normalizeHue(value: number): number;
80
+ export declare function isSrgbInGamut(value: SrgbColor): boolean;
@@ -0,0 +1,206 @@
1
+ import { unwrap } from '../result.js';
2
+ import { fail, ok } from '../internal/kernel/foundation.js';
3
+ export const OKLCH_GAMUT_ITERATIONS = 12;
4
+ export function createRgba8(red, green, blue, alpha = 255) {
5
+ return unwrap(tryCreateRgba8(red, green, blue, alpha));
6
+ }
7
+ export function tryCreateRgba8(red, green, blue, alpha = 255) {
8
+ if (!rgba8Channel(red))
9
+ return invalidRgba8Channel('red', red);
10
+ if (!rgba8Channel(green))
11
+ return invalidRgba8Channel('green', green);
12
+ if (!rgba8Channel(blue))
13
+ return invalidRgba8Channel('blue', blue);
14
+ if (!rgba8Channel(alpha))
15
+ return invalidRgba8Channel('alpha', alpha);
16
+ return ok(Object.freeze({ red, green, blue, alpha }));
17
+ }
18
+ export function createSrgbColor(red, green, blue, alpha = 1) {
19
+ return unwrap(tryCreateSrgbColor(red, green, blue, alpha));
20
+ }
21
+ export function tryCreateSrgbColor(red, green, blue, alpha = 1) {
22
+ return unit(red) && unit(green) && unit(blue) && unit(alpha)
23
+ ? ok(Object.freeze({ red, green, blue, alpha }))
24
+ : invalid('Normalized sRGB channels must be finite numbers from 0 through 1.', { red, green, blue, alpha });
25
+ }
26
+ export function createHslColor(hue, saturation, lightness, alpha = 1) { return unwrap(tryCreateHslColor(hue, saturation, lightness, alpha)); }
27
+ export function tryCreateHslColor(hue, saturation, lightness, alpha = 1) { return angle(hue) && unit(saturation) && unit(lightness) && unit(alpha) ? ok(Object.freeze({ hue: normalizeHue(hue), saturation, lightness, alpha })) : invalid('HSL components are invalid.', { hue, saturation, lightness, alpha }); }
28
+ export function createHsvColor(hue, saturation, value, alpha = 1) { return unwrap(tryCreateHsvColor(hue, saturation, value, alpha)); }
29
+ export function tryCreateHsvColor(hue, saturation, value, alpha = 1) { return angle(hue) && unit(saturation) && unit(value) && unit(alpha) ? ok(Object.freeze({ hue: normalizeHue(hue), saturation, value, alpha })) : invalid('HSV components are invalid.', { hue, saturation, value, alpha }); }
30
+ export function createDeviceCmykColor(cyan, magenta, yellow, black, alpha = 1) { return unwrap(tryCreateDeviceCmykColor(cyan, magenta, yellow, black, alpha)); }
31
+ export function tryCreateDeviceCmykColor(cyan, magenta, yellow, black, alpha = 1) { return unit(cyan) && unit(magenta) && unit(yellow) && unit(black) && unit(alpha) ? ok(Object.freeze({ cyan, magenta, yellow, black, alpha })) : invalid('Device CMYK components are invalid.', { cyan, magenta, yellow, black, alpha }); }
32
+ export function createOklabColor(lightness, a, b, alpha = 1) { return unwrap(tryCreateOklabColor(lightness, a, b, alpha)); }
33
+ export function tryCreateOklabColor(lightness, a, b, alpha = 1) { return unit(lightness) && Number.isFinite(a) && Number.isFinite(b) && unit(alpha) ? ok(Object.freeze({ lightness, a, b, alpha })) : invalid('Oklab components are invalid.', { lightness, a, b, alpha }); }
34
+ export function createOklchColor(lightness, chroma, hue, alpha = 1) { return unwrap(tryCreateOklchColor(lightness, chroma, hue, alpha)); }
35
+ export function tryCreateOklchColor(lightness, chroma, hue, alpha = 1) { return unit(lightness) && finiteNonNegative(chroma) && angle(hue) && unit(alpha) ? ok(Object.freeze({ lightness, chroma, hue: normalizeHue(hue), alpha })) : invalid('OKLCH components are invalid.', { lightness, chroma, hue, alpha }); }
36
+ export function rgba8ToSrgb(value) {
37
+ return Object.freeze({ red: value.red / 255, green: value.green / 255, blue: value.blue / 255, alpha: value.alpha / 255 });
38
+ }
39
+ export function srgbToRgba8(value) {
40
+ return createRgba8(Math.round(value.red * 255), Math.round(value.green * 255), Math.round(value.blue * 255), Math.round(value.alpha * 255));
41
+ }
42
+ export function srgbToLinearSrgb(value) {
43
+ return Object.freeze({ red: decode(value.red), green: decode(value.green), blue: decode(value.blue), alpha: value.alpha });
44
+ }
45
+ export function linearSrgbToSrgb(value, policy = 'reject') {
46
+ const channels = resolveLinearGamut(value, policy);
47
+ if (channels === null)
48
+ return outOfGamut(value);
49
+ return ok(Object.freeze({ red: encode(channels.red), green: encode(channels.green), blue: encode(channels.blue), alpha: clamp01(value.alpha) }));
50
+ }
51
+ export function srgbToHsv(value) {
52
+ const maximum = Math.max(value.red, value.green, value.blue);
53
+ const delta = maximum - Math.min(value.red, value.green, value.blue);
54
+ const sector = delta === 0 ? 0 : maximum === value.red ? (value.green - value.blue) / delta : maximum === value.green ? 2 + (value.blue - value.red) / delta : 4 + (value.red - value.green) / delta;
55
+ return Object.freeze({ hue: normalizeHue(60 * (sector < 0 ? sector + 6 : sector)), saturation: maximum === 0 ? 0 : delta / maximum, value: maximum, alpha: value.alpha });
56
+ }
57
+ export function hsvToSrgb(value) {
58
+ const hue = normalizeHue(value.hue) / 60;
59
+ const saturation = clamp01(value.saturation);
60
+ const brightness = clamp01(value.value);
61
+ const sector = Math.floor(hue) % 6;
62
+ const low = brightness * (1 - saturation);
63
+ const down = brightness * (1 - (hue - Math.floor(hue)) * saturation);
64
+ const up = brightness * (1 - (1 - hue + Math.floor(hue)) * saturation);
65
+ let red;
66
+ let green;
67
+ let blue;
68
+ if (sector === 0) {
69
+ red = brightness;
70
+ green = up;
71
+ blue = low;
72
+ }
73
+ else if (sector === 1) {
74
+ red = down;
75
+ green = brightness;
76
+ blue = low;
77
+ }
78
+ else if (sector === 2) {
79
+ red = low;
80
+ green = brightness;
81
+ blue = up;
82
+ }
83
+ else if (sector === 3) {
84
+ red = low;
85
+ green = down;
86
+ blue = brightness;
87
+ }
88
+ else if (sector === 4) {
89
+ red = up;
90
+ green = low;
91
+ blue = brightness;
92
+ }
93
+ else {
94
+ red = brightness;
95
+ green = low;
96
+ blue = down;
97
+ }
98
+ return Object.freeze({ red, green, blue, alpha: clamp01(value.alpha) });
99
+ }
100
+ export function srgbToHsl(value) {
101
+ const hsv = srgbToHsv(value);
102
+ const lightness2 = (2 - hsv.saturation) * hsv.value;
103
+ const saturation = lightness2 > 0 && lightness2 < 2 ? hsv.saturation * hsv.value / (lightness2 <= 1 ? lightness2 : 2 - lightness2) : 0;
104
+ return Object.freeze({ hue: hsv.hue, saturation, lightness: lightness2 / 2, alpha: value.alpha });
105
+ }
106
+ export function hslToSrgb(value) {
107
+ const saturation = clamp01(value.saturation);
108
+ const lightness = clamp01(value.lightness);
109
+ const scaled = saturation * (lightness < 0.5 ? lightness : 1 - lightness);
110
+ return hsvToSrgb({ hue: value.hue, saturation: scaled > 0 ? 2 * scaled / (lightness + scaled) : 0, value: lightness + scaled, alpha: value.alpha });
111
+ }
112
+ export function srgbToDeviceCmyk(value) {
113
+ const black = 1 - Math.max(value.red, value.green, value.blue);
114
+ const denominator = 1 - black;
115
+ return Object.freeze({
116
+ cyan: denominator === 0 ? 0 : (1 - value.red - black) / denominator,
117
+ magenta: denominator === 0 ? 0 : (1 - value.green - black) / denominator,
118
+ yellow: denominator === 0 ? 0 : (1 - value.blue - black) / denominator,
119
+ black,
120
+ alpha: value.alpha,
121
+ });
122
+ }
123
+ export function deviceCmykToSrgb(value) {
124
+ const black = clamp01(value.black);
125
+ return Object.freeze({
126
+ red: (1 - clamp01(value.cyan)) * (1 - black),
127
+ green: (1 - clamp01(value.magenta)) * (1 - black),
128
+ blue: (1 - clamp01(value.yellow)) * (1 - black),
129
+ alpha: clamp01(value.alpha),
130
+ });
131
+ }
132
+ export function linearSrgbToOklab(value) {
133
+ const l = Math.cbrt(0.4122214708 * value.red + 0.5363325363 * value.green + 0.0514459929 * value.blue);
134
+ const m = Math.cbrt(0.2119034982 * value.red + 0.6806995451 * value.green + 0.1073969566 * value.blue);
135
+ const s = Math.cbrt(0.0883024619 * value.red + 0.2817188376 * value.green + 0.6299787005 * value.blue);
136
+ return Object.freeze({ lightness: 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s, a: 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s, b: 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s, alpha: value.alpha });
137
+ }
138
+ export function oklabToLinearSrgb(value) {
139
+ const lRoot = value.lightness + 0.3963377774 * value.a + 0.2158037573 * value.b;
140
+ const mRoot = value.lightness - 0.1055613458 * value.a - 0.0638541728 * value.b;
141
+ const sRoot = value.lightness - 0.0894841775 * value.a - 1.291485548 * value.b;
142
+ const l = lRoot ** 3;
143
+ const m = mRoot ** 3;
144
+ const s = sRoot ** 3;
145
+ return Object.freeze({ red: 4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s, green: -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s, blue: -0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s, alpha: value.alpha });
146
+ }
147
+ export function oklabToOklch(value) {
148
+ const chroma = Math.hypot(value.a, value.b);
149
+ return Object.freeze({ lightness: value.lightness, chroma, hue: chroma < 1e-7 ? 0 : normalizeHue(Math.atan2(value.b, value.a) * 180 / Math.PI), alpha: value.alpha });
150
+ }
151
+ export function oklchToOklab(value) {
152
+ const radians = normalizeHue(value.hue) * Math.PI / 180;
153
+ return Object.freeze({ lightness: value.lightness, a: value.chroma * Math.cos(radians), b: value.chroma * Math.sin(radians), alpha: value.alpha });
154
+ }
155
+ export function srgbToOklch(value) { return oklabToOklch(linearSrgbToOklab(srgbToLinearSrgb(value))); }
156
+ export function oklchToSrgb(value, policy = 'reject') {
157
+ if (!unit(value.lightness) || !finiteNonNegative(value.chroma) || !Number.isFinite(value.hue) || !unit(value.alpha))
158
+ return invalid('OKLCH components are invalid.', value);
159
+ const direct = oklabToLinearSrgb(oklchToOklab(value));
160
+ if (inLinearGamut(direct))
161
+ return linearSrgbToSrgb(direct);
162
+ if (policy === 'reject')
163
+ return outOfGamut(value);
164
+ if (policy === 'clip')
165
+ return linearSrgbToSrgb(direct, 'clip');
166
+ if (policy !== 'reduce-chroma')
167
+ return invalid('Unknown sRGB gamut policy.', policy);
168
+ let low = 0;
169
+ let high = value.chroma;
170
+ let best = oklabToLinearSrgb(oklchToOklab({ ...value, chroma: 0 }));
171
+ for (let iteration = 0; iteration < OKLCH_GAMUT_ITERATIONS; iteration += 1) {
172
+ const chroma = (low + high) / 2;
173
+ const candidate = oklabToLinearSrgb(oklchToOklab({ ...value, chroma }));
174
+ if (inLinearGamut(candidate)) {
175
+ low = chroma;
176
+ best = candidate;
177
+ }
178
+ else
179
+ high = chroma;
180
+ }
181
+ return linearSrgbToSrgb(best, 'clip');
182
+ }
183
+ export function normalizeHue(value) { return (value % 360 + 360) % 360; }
184
+ export function isSrgbInGamut(value) { return unit(value.red) && unit(value.green) && unit(value.blue) && unit(value.alpha); }
185
+ function resolveLinearGamut(value, policy) {
186
+ if (!Number.isFinite(value.red) || !Number.isFinite(value.green) || !Number.isFinite(value.blue) || !Number.isFinite(value.alpha))
187
+ return null;
188
+ if (inLinearGamut(value))
189
+ return value;
190
+ if (policy !== 'clip')
191
+ return null;
192
+ return { red: clamp01(value.red), green: clamp01(value.green), blue: clamp01(value.blue), alpha: clamp01(value.alpha) };
193
+ }
194
+ function inLinearGamut(value) { return nearUnit(value.red) && nearUnit(value.green) && nearUnit(value.blue) && unit(value.alpha); }
195
+ function nearUnit(value) { return Number.isFinite(value) && value >= -1e-5 && value <= 1.00001; }
196
+ function decode(value) { return value <= 0.04045 ? value / 12.92 : ((value + 0.055) / 1.055) ** 2.4; }
197
+ function encode(value) { const bounded = clamp01(value); return bounded <= 0.0031308 ? 12.92 * bounded : 1.055 * bounded ** (1 / 2.4) - 0.055; }
198
+ function clamp01(value) { return Math.min(1, Math.max(0, value)); }
199
+ function unit(value) { return typeof value === 'number' && Number.isFinite(value) && value >= 0 && value <= 1; }
200
+ function finiteNonNegative(value) { return typeof value === 'number' && Number.isFinite(value) && value >= 0; }
201
+ function angle(value) { return typeof value === 'number' && Number.isFinite(value); }
202
+ function rgba8Channel(value) { return typeof value === 'number' && Number.isInteger(value) && value >= 0 && value <= 255; }
203
+ function invalidRgba8Channel(channel, value) { return fail('construction', 'color-channel-out-of-range', 'Color channels must be integers from 0 through 255.', { channel, value }); }
204
+ function invalid(message, value) { return fail('construction', 'invalid-boundary', message, { value }); }
205
+ function outOfGamut(value) { return fail('construction', 'color-out-of-gamut', 'Color is outside the sRGB gamut.', { value }); }
206
+ //# sourceMappingURL=color.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color.js","sourceRoot":"","sources":["../../src/structures/color.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import type { Result } from '../shared.js';
2
+ export interface Point {
3
+ readonly x: number;
4
+ readonly y: number;
5
+ }
6
+ export interface Size {
7
+ readonly width: number;
8
+ readonly height: number;
9
+ }
10
+ export interface Rect extends Point, Size {
11
+ }
12
+ export interface Insets {
13
+ readonly top: number;
14
+ readonly right: number;
15
+ readonly bottom: number;
16
+ readonly left: number;
17
+ }
18
+ export interface RectOverflow extends Insets {
19
+ readonly total: number;
20
+ readonly maximum: number;
21
+ }
22
+ export type RectSide = 'top' | 'right' | 'bottom' | 'left';
23
+ export type RectAlign = 'start' | 'center' | 'end';
24
+ export interface GeometryBoundsOptions {
25
+ readonly maxRects?: number;
26
+ }
27
+ export declare const ZERO_POINT: Point;
28
+ export declare const ZERO_INSETS: Insets;
29
+ export declare const DEFAULT_MAX_GEOMETRY_RECTS = 100000;
30
+ export declare const MAX_GEOMETRY_RECTS = 1000000;
31
+ export declare function createPoint(input: Point): Point;
32
+ export declare function createSize(input: Size): Size;
33
+ export declare function createRect(input: Rect): Rect;
34
+ export declare function createInsets(input?: number | Partial<Insets>): Insets;
35
+ export declare function tryCreatePoint(input: Point): Result<Point>;
36
+ export declare function tryCreateSize(input: Size): Result<Size>;
37
+ export declare function tryCreateRect(input: Rect): Result<Rect>;
38
+ export declare function tryCreateInsets(input?: number | Partial<Insets>): Result<Insets>;
39
+ export declare function rectanglesIntersect(left: Rect, right: Rect): boolean;
40
+ export declare function intersectRects(left: Rect, right: Rect): Rect | null;
41
+ export declare function rectContainsPoint(rect: Rect, point: Point): boolean;
42
+ export declare function rectContainsRect(outer: Rect, inner: Rect): boolean;
43
+ export declare function boundRects(left: Rect, right: Rect): Rect;
44
+ export declare function boundsOfRects(rects: readonly Rect[], options?: GeometryBoundsOptions): Rect | null;
45
+ export declare function insetRect(rect: Rect, insets: Insets): Rect;
46
+ export declare function outsetRect(rect: Rect, insets: Insets): Rect;
47
+ export declare function rectOverflow(rect: Rect, boundary: Rect, padding?: Insets): RectOverflow;
48
+ export declare function clampRect(rect: Rect, boundary: Rect, padding?: Insets): Rect;
49
+ export declare function alignRect(reference: Rect, size: Size, side: RectSide, align?: RectAlign, offset?: number): Rect;
50
+ export declare function pointDelta(before: Point, after: Point): Point;
51
+ export declare function isFinitePoint(value: unknown): value is Point;
52
+ export declare function isFiniteSize(value: unknown): value is Size;
53
+ export declare function isFiniteRect(value: unknown): value is Rect;