css-calipers 1.0.0 → 1.1.0-beta.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 (207) hide show
  1. package/LICENSE.txt +1 -1
  2. package/README.md +70 -424
  3. package/dist/cjs/color/formats/display-p3/display-p3.js +25 -0
  4. package/dist/cjs/color/formats/escalate.js +41 -0
  5. package/dist/cjs/color/formats/hex/hex.js +28 -0
  6. package/dist/cjs/color/formats/hexAlpha/hexAlpha.js +25 -0
  7. package/dist/cjs/color/formats/hsl/hsl.js +23 -0
  8. package/dist/cjs/color/formats/hwb/hwb.js +24 -0
  9. package/dist/cjs/color/formats/index.js +36 -0
  10. package/dist/cjs/color/formats/internals.js +93 -0
  11. package/dist/cjs/color/formats/lab/lab.js +24 -0
  12. package/dist/cjs/color/formats/lch/lch.js +23 -0
  13. package/dist/cjs/color/formats/oklab/oklab.js +24 -0
  14. package/dist/cjs/color/formats/oklch/oklch.js +28 -0
  15. package/dist/cjs/color/formats/resolve.js +16 -0
  16. package/dist/cjs/color/formats/rgb/rgb.js +29 -0
  17. package/dist/cjs/color/formats/rgba/rgba.js +27 -0
  18. package/dist/cjs/color/formats/types.js +11 -0
  19. package/dist/cjs/color/index.js +619 -0
  20. package/dist/cjs/color/types.js +2 -0
  21. package/dist/cjs/core.js +11 -8
  22. package/dist/cjs/corpus.js +53 -0
  23. package/dist/cjs/css-values/cssValues.js +78 -0
  24. package/dist/cjs/css-values/index.js +36 -0
  25. package/dist/cjs/css-values/multi.js +290 -0
  26. package/dist/cjs/css-values/propertyMap.js +2 -0
  27. package/dist/cjs/css-values/spec.js +197 -0
  28. package/dist/cjs/default.js +17 -0
  29. package/dist/cjs/factory.js +1 -1
  30. package/dist/cjs/float.js +110 -0
  31. package/dist/cjs/index.js +29 -9
  32. package/dist/cjs/integer.js +114 -0
  33. package/dist/cjs/internal/createCoreApi.js +103 -38
  34. package/dist/cjs/internal/errors.js +13 -14
  35. package/dist/cjs/internal/toPlainDecimal.js +31 -0
  36. package/dist/cjs/measurements.js +41 -0
  37. package/dist/cjs/ratio.js +57 -22
  38. package/dist/cjs/scalar.js +9 -0
  39. package/dist/cjs/units/absolute.js +8 -8
  40. package/dist/cjs/units/angle.js +5 -5
  41. package/dist/cjs/units/container.js +7 -7
  42. package/dist/cjs/units/font-relative.js +13 -13
  43. package/dist/cjs/units/frequency.js +3 -3
  44. package/dist/cjs/units/grid.js +2 -2
  45. package/dist/cjs/units/index.js +9 -9
  46. package/dist/cjs/units/percent.js +4 -4
  47. package/dist/cjs/units/resolution.js +4 -4
  48. package/dist/cjs/units/time.js +3 -3
  49. package/dist/cjs/units/viewport-dynamic.js +7 -7
  50. package/dist/cjs/units/viewport-large.js +7 -7
  51. package/dist/cjs/units/viewport-small.js +7 -7
  52. package/dist/cjs/units/viewport.js +7 -7
  53. package/dist/esm/color/formats/display-p3/display-p3.d.ts +10 -0
  54. package/dist/esm/color/formats/display-p3/display-p3.d.ts.map +1 -0
  55. package/dist/esm/color/formats/display-p3/display-p3.js +22 -0
  56. package/dist/esm/color/formats/escalate.d.ts +10 -0
  57. package/dist/esm/color/formats/escalate.d.ts.map +1 -0
  58. package/dist/esm/color/formats/escalate.js +37 -0
  59. package/dist/esm/color/formats/hex/hex.d.ts +9 -0
  60. package/dist/esm/color/formats/hex/hex.d.ts.map +1 -0
  61. package/dist/esm/color/formats/hex/hex.js +25 -0
  62. package/dist/esm/color/formats/hexAlpha/hexAlpha.d.ts +9 -0
  63. package/dist/esm/color/formats/hexAlpha/hexAlpha.d.ts.map +1 -0
  64. package/dist/esm/color/formats/hexAlpha/hexAlpha.js +22 -0
  65. package/dist/esm/color/formats/hsl/hsl.d.ts +8 -0
  66. package/dist/esm/color/formats/hsl/hsl.d.ts.map +1 -0
  67. package/dist/esm/color/formats/hsl/hsl.js +20 -0
  68. package/dist/esm/color/formats/hwb/hwb.d.ts +9 -0
  69. package/dist/esm/color/formats/hwb/hwb.d.ts.map +1 -0
  70. package/dist/esm/color/formats/hwb/hwb.js +21 -0
  71. package/dist/esm/color/formats/index.d.ts +24 -0
  72. package/dist/esm/color/formats/index.d.ts.map +1 -0
  73. package/dist/esm/color/formats/index.js +32 -0
  74. package/dist/esm/color/formats/internals.d.ts +35 -0
  75. package/dist/esm/color/formats/internals.d.ts.map +1 -0
  76. package/dist/esm/color/formats/internals.js +78 -0
  77. package/dist/esm/color/formats/lab/lab.d.ts +9 -0
  78. package/dist/esm/color/formats/lab/lab.d.ts.map +1 -0
  79. package/dist/esm/color/formats/lab/lab.js +21 -0
  80. package/dist/esm/color/formats/lch/lch.d.ts +8 -0
  81. package/dist/esm/color/formats/lch/lch.d.ts.map +1 -0
  82. package/dist/esm/color/formats/lch/lch.js +20 -0
  83. package/dist/esm/color/formats/oklab/oklab.d.ts +9 -0
  84. package/dist/esm/color/formats/oklab/oklab.d.ts.map +1 -0
  85. package/dist/esm/color/formats/oklab/oklab.js +21 -0
  86. package/dist/esm/color/formats/oklch/oklch.d.ts +13 -0
  87. package/dist/esm/color/formats/oklch/oklch.d.ts.map +1 -0
  88. package/dist/esm/color/formats/oklch/oklch.js +25 -0
  89. package/dist/esm/color/formats/resolve.d.ts +15 -0
  90. package/dist/esm/color/formats/resolve.d.ts.map +1 -0
  91. package/dist/esm/color/formats/resolve.js +12 -0
  92. package/dist/esm/color/formats/rgb/rgb.d.ts +11 -0
  93. package/dist/esm/color/formats/rgb/rgb.d.ts.map +1 -0
  94. package/dist/esm/color/formats/rgb/rgb.js +26 -0
  95. package/dist/esm/color/formats/rgba/rgba.d.ts +9 -0
  96. package/dist/esm/color/formats/rgba/rgba.d.ts.map +1 -0
  97. package/dist/esm/color/formats/rgba/rgba.js +24 -0
  98. package/dist/esm/color/formats/types.d.ts +48 -0
  99. package/dist/esm/color/formats/types.d.ts.map +1 -0
  100. package/dist/esm/color/formats/types.js +7 -0
  101. package/dist/esm/color/index.d.ts +81 -0
  102. package/dist/esm/color/index.d.ts.map +1 -0
  103. package/dist/esm/color/index.js +609 -0
  104. package/dist/esm/color/types.d.ts +294 -0
  105. package/dist/esm/color/types.d.ts.map +1 -0
  106. package/dist/esm/color/types.js +1 -0
  107. package/dist/esm/core.d.ts +76 -270
  108. package/dist/esm/core.d.ts.map +1 -1
  109. package/dist/esm/core.js +5 -7
  110. package/dist/esm/corpus.d.ts +26 -0
  111. package/dist/esm/corpus.d.ts.map +1 -0
  112. package/dist/esm/corpus.js +37 -0
  113. package/dist/esm/css-values/cssValues.d.ts +60 -0
  114. package/dist/esm/css-values/cssValues.d.ts.map +1 -0
  115. package/dist/esm/css-values/cssValues.js +74 -0
  116. package/dist/esm/css-values/index.d.ts +6 -0
  117. package/dist/esm/css-values/index.d.ts.map +1 -0
  118. package/dist/esm/css-values/index.js +12 -0
  119. package/dist/esm/css-values/multi.d.ts +188 -0
  120. package/dist/esm/css-values/multi.d.ts.map +1 -0
  121. package/dist/esm/css-values/multi.js +281 -0
  122. package/dist/esm/css-values/propertyMap.d.ts +39 -0
  123. package/dist/esm/css-values/propertyMap.d.ts.map +1 -0
  124. package/dist/esm/css-values/propertyMap.js +1 -0
  125. package/dist/esm/css-values/spec.d.ts +36 -0
  126. package/dist/esm/css-values/spec.d.ts.map +1 -0
  127. package/dist/esm/css-values/spec.js +194 -0
  128. package/dist/esm/default.d.ts +267 -0
  129. package/dist/esm/default.d.ts.map +1 -0
  130. package/dist/esm/default.js +14 -0
  131. package/dist/esm/factory.d.ts +1 -1
  132. package/dist/esm/factory.d.ts.map +1 -1
  133. package/dist/esm/factory.js +3 -3
  134. package/dist/esm/float.d.ts +35 -0
  135. package/dist/esm/float.d.ts.map +1 -0
  136. package/dist/esm/float.js +104 -0
  137. package/dist/esm/index.d.ts +11 -9
  138. package/dist/esm/index.d.ts.map +1 -1
  139. package/dist/esm/index.js +19 -9
  140. package/dist/esm/integer.d.ts +36 -0
  141. package/dist/esm/integer.d.ts.map +1 -0
  142. package/dist/esm/integer.js +108 -0
  143. package/dist/esm/internal/buildMeasurementCreationError.tests.d.ts +1 -1
  144. package/dist/esm/internal/buildMeasurementCreationError.tests.d.ts.map +1 -1
  145. package/dist/esm/internal/createCoreApi.d.ts +9 -1
  146. package/dist/esm/internal/createCoreApi.d.ts.map +1 -1
  147. package/dist/esm/internal/createCoreApi.js +103 -38
  148. package/dist/esm/internal/createUnitsApi.d.ts +1 -1
  149. package/dist/esm/internal/createUnitsApi.d.ts.map +1 -1
  150. package/dist/esm/internal/errors.d.ts +3 -3
  151. package/dist/esm/internal/errors.d.ts.map +1 -1
  152. package/dist/esm/internal/errors.js +13 -14
  153. package/dist/esm/internal/toPlainDecimal.d.ts +2 -0
  154. package/dist/esm/internal/toPlainDecimal.d.ts.map +1 -0
  155. package/dist/esm/internal/toPlainDecimal.js +27 -0
  156. package/dist/esm/measurements.d.ts +16 -0
  157. package/dist/esm/measurements.d.ts.map +1 -0
  158. package/dist/esm/measurements.js +25 -0
  159. package/dist/esm/ratio.d.ts +14 -5
  160. package/dist/esm/ratio.d.ts.map +1 -1
  161. package/dist/esm/ratio.js +57 -22
  162. package/dist/esm/scalar.d.ts +14 -0
  163. package/dist/esm/scalar.d.ts.map +1 -0
  164. package/dist/esm/scalar.js +5 -0
  165. package/dist/esm/units/absolute.d.ts +1 -1
  166. package/dist/esm/units/absolute.d.ts.map +1 -1
  167. package/dist/esm/units/absolute.js +1 -1
  168. package/dist/esm/units/angle.d.ts +1 -1
  169. package/dist/esm/units/angle.d.ts.map +1 -1
  170. package/dist/esm/units/angle.js +1 -1
  171. package/dist/esm/units/container.d.ts +1 -1
  172. package/dist/esm/units/container.d.ts.map +1 -1
  173. package/dist/esm/units/container.js +1 -1
  174. package/dist/esm/units/font-relative.d.ts +1 -1
  175. package/dist/esm/units/font-relative.d.ts.map +1 -1
  176. package/dist/esm/units/font-relative.js +1 -1
  177. package/dist/esm/units/frequency.d.ts +1 -1
  178. package/dist/esm/units/frequency.d.ts.map +1 -1
  179. package/dist/esm/units/frequency.js +1 -1
  180. package/dist/esm/units/grid.d.ts +1 -1
  181. package/dist/esm/units/grid.d.ts.map +1 -1
  182. package/dist/esm/units/grid.js +1 -1
  183. package/dist/esm/units/index.d.ts +9 -9
  184. package/dist/esm/units/index.d.ts.map +1 -1
  185. package/dist/esm/units/index.js +9 -9
  186. package/dist/esm/units/percent.d.ts +1 -1
  187. package/dist/esm/units/percent.d.ts.map +1 -1
  188. package/dist/esm/units/percent.js +1 -1
  189. package/dist/esm/units/resolution.d.ts +1 -1
  190. package/dist/esm/units/resolution.d.ts.map +1 -1
  191. package/dist/esm/units/resolution.js +1 -1
  192. package/dist/esm/units/time.d.ts +1 -1
  193. package/dist/esm/units/time.d.ts.map +1 -1
  194. package/dist/esm/units/time.js +1 -1
  195. package/dist/esm/units/viewport-dynamic.d.ts +1 -1
  196. package/dist/esm/units/viewport-dynamic.d.ts.map +1 -1
  197. package/dist/esm/units/viewport-dynamic.js +1 -1
  198. package/dist/esm/units/viewport-large.d.ts +1 -1
  199. package/dist/esm/units/viewport-large.d.ts.map +1 -1
  200. package/dist/esm/units/viewport-large.js +1 -1
  201. package/dist/esm/units/viewport-small.d.ts +1 -1
  202. package/dist/esm/units/viewport-small.d.ts.map +1 -1
  203. package/dist/esm/units/viewport-small.js +1 -1
  204. package/dist/esm/units/viewport.d.ts +1 -1
  205. package/dist/esm/units/viewport.d.ts.map +1 -1
  206. package/dist/esm/units/viewport.js +1 -1
  207. package/package.json +54 -12
@@ -0,0 +1,194 @@
1
+ /**
2
+ * Helper that ties a row's `name`, `cssProperty`, and `keywords` together while
3
+ * inferring each as a literal. Authoring a row through `row(...)` keeps `name`
4
+ * and `keywords` as literals (so the helper map key and keyword param stay
5
+ * precise) without sprinkling `as const` on every entry.
6
+ */
7
+ const row = (entry) => entry;
8
+ /**
9
+ * The css-value spec table: one row per single-value property. The factory in
10
+ * `./cssValues.ts` generates a typed helper from each row, so adding a property
11
+ * is a one-line table edit, not a hand-written function.
12
+ *
13
+ * Sourced from `docs/css-number-value-types.md`. Multi-value properties and
14
+ * those lacking a clean single-value mapping (e.g. `maxLines`, the counter
15
+ * trio, grid lines, `scale`, `tabSize`) are intentionally excluded.
16
+ */
17
+ export const CSS_VALUE_SPEC = [
18
+ // Opacity family: float, [0, 1], no keywords.
19
+ row({
20
+ name: 'opacity',
21
+ kind: 'float',
22
+ min: 0,
23
+ max: 1,
24
+ keywords: [],
25
+ cssProperty: 'Opacity',
26
+ }),
27
+ row({
28
+ name: 'fillOpacity',
29
+ kind: 'float',
30
+ min: 0,
31
+ max: 1,
32
+ keywords: [],
33
+ cssProperty: 'FillOpacity',
34
+ }),
35
+ row({
36
+ name: 'strokeOpacity',
37
+ kind: 'float',
38
+ min: 0,
39
+ max: 1,
40
+ keywords: [],
41
+ cssProperty: 'StrokeOpacity',
42
+ }),
43
+ row({
44
+ name: 'stopOpacity',
45
+ kind: 'float',
46
+ min: 0,
47
+ max: 1,
48
+ keywords: [],
49
+ cssProperty: 'StopOpacity',
50
+ }),
51
+ row({
52
+ name: 'floodOpacity',
53
+ kind: 'float',
54
+ min: 0,
55
+ max: 1,
56
+ keywords: [],
57
+ cssProperty: 'FloodOpacity',
58
+ }),
59
+ row({
60
+ name: 'shapeImageThreshold',
61
+ kind: 'float',
62
+ min: 0,
63
+ max: 1,
64
+ keywords: [],
65
+ cssProperty: 'ShapeImageThreshold',
66
+ }),
67
+ // Float, >= 0.
68
+ row({
69
+ name: 'lineHeight',
70
+ kind: 'float',
71
+ min: 0,
72
+ keywords: [
73
+ 'normal',
74
+ ],
75
+ cssProperty: 'LineHeight',
76
+ }),
77
+ row({
78
+ name: 'flexGrow',
79
+ kind: 'float',
80
+ min: 0,
81
+ keywords: [],
82
+ cssProperty: 'FlexGrow',
83
+ }),
84
+ row({
85
+ name: 'flexShrink',
86
+ kind: 'float',
87
+ min: 0,
88
+ keywords: [],
89
+ cssProperty: 'FlexShrink',
90
+ }),
91
+ row({
92
+ name: 'animationIterationCount',
93
+ kind: 'float',
94
+ min: 0,
95
+ keywords: [
96
+ 'infinite',
97
+ ],
98
+ cssProperty: 'AnimationIterationCount',
99
+ }),
100
+ row({
101
+ name: 'fontSizeAdjust',
102
+ kind: 'float',
103
+ min: 0,
104
+ keywords: [
105
+ 'none',
106
+ 'from-font',
107
+ ],
108
+ cssProperty: 'FontSizeAdjust',
109
+ }),
110
+ row({
111
+ name: 'zoom',
112
+ kind: 'float',
113
+ min: 0,
114
+ keywords: [],
115
+ cssProperty: 'Zoom',
116
+ }),
117
+ // Float, specific range.
118
+ row({
119
+ name: 'fontWeight',
120
+ kind: 'float',
121
+ min: 1,
122
+ max: 1000,
123
+ keywords: [
124
+ 'normal',
125
+ 'bold',
126
+ 'lighter',
127
+ 'bolder',
128
+ ],
129
+ cssProperty: 'FontWeight',
130
+ }),
131
+ row({
132
+ name: 'strokeMiterlimit',
133
+ kind: 'float',
134
+ min: 1,
135
+ keywords: [],
136
+ cssProperty: 'StrokeMiterlimit',
137
+ }),
138
+ // Integer, unbounded (negatives allowed).
139
+ row({
140
+ name: 'zIndex',
141
+ kind: 'int',
142
+ keywords: [
143
+ 'auto',
144
+ ],
145
+ cssProperty: 'ZIndex',
146
+ }),
147
+ row({
148
+ name: 'order',
149
+ kind: 'int',
150
+ keywords: [],
151
+ cssProperty: 'Order',
152
+ }),
153
+ row({
154
+ name: 'mathDepth',
155
+ kind: 'int',
156
+ keywords: [
157
+ 'auto-add',
158
+ ],
159
+ cssProperty: 'MathDepth',
160
+ }),
161
+ // Integer, min 1.
162
+ row({
163
+ name: 'columnCount',
164
+ kind: 'int',
165
+ min: 1,
166
+ keywords: [
167
+ 'auto',
168
+ ],
169
+ cssProperty: 'ColumnCount',
170
+ }),
171
+ row({
172
+ name: 'orphans',
173
+ kind: 'int',
174
+ min: 1,
175
+ keywords: [],
176
+ cssProperty: 'Orphans',
177
+ }),
178
+ row({
179
+ name: 'widows',
180
+ kind: 'int',
181
+ min: 1,
182
+ keywords: [],
183
+ cssProperty: 'Widows',
184
+ }),
185
+ row({
186
+ name: 'lineClamp',
187
+ kind: 'int',
188
+ min: 1,
189
+ keywords: [
190
+ 'none',
191
+ ],
192
+ cssProperty: 'WebkitLineClamp',
193
+ }),
194
+ ];
@@ -0,0 +1,267 @@
1
+ export declare const m: {
2
+ (value: number): import("./core").InscribedMeasurement<"px">;
3
+ (value: number, options: {
4
+ context?: string;
5
+ }): import("./core").InscribedMeasurement<"px">;
6
+ <Unit extends string>(value: number, unit: Unit, context?: string): import("./core").InscribedMeasurement<Lowercase<Unit>>;
7
+ <Unit extends string>(value: number, options: {
8
+ unit?: Unit | undefined;
9
+ context?: string;
10
+ }): import("./core").InscribedMeasurement<Lowercase<Unit>>;
11
+ }, isMeasurement: (x: unknown) => x is import("./core").IMeasurement<string>, assertMatchingUnits: <Unit extends string>(left: import("./core").IMeasurement<Unit>, right: import("./core").IMeasurement<Unit>, context: string) => void, measurementMin: <Unit extends string>(a: import("./core").IMeasurement<Unit>, b: import("./core").IMeasurement<NoInfer<Unit>>) => import("./core").IMeasurement<Unit>, measurementMax: <Unit extends string>(a: import("./core").IMeasurement<Unit>, b: import("./core").IMeasurement<NoInfer<Unit>>) => import("./core").IMeasurement<Unit>, measurementUnitMetadata: {
12
+ readonly mPercent: {
13
+ readonly unit: "%";
14
+ readonly category: "percent";
15
+ };
16
+ readonly mPx: {
17
+ readonly unit: "px";
18
+ readonly category: "length-absolute";
19
+ };
20
+ readonly mCm: {
21
+ readonly unit: "cm";
22
+ readonly category: "length-absolute";
23
+ };
24
+ readonly mMm: {
25
+ readonly unit: "mm";
26
+ readonly category: "length-absolute";
27
+ };
28
+ readonly mQ: {
29
+ readonly unit: "q";
30
+ readonly category: "length-absolute";
31
+ };
32
+ readonly mIn: {
33
+ readonly unit: "in";
34
+ readonly category: "length-absolute";
35
+ };
36
+ readonly mPc: {
37
+ readonly unit: "pc";
38
+ readonly category: "length-absolute";
39
+ };
40
+ readonly mPt: {
41
+ readonly unit: "pt";
42
+ readonly category: "length-absolute";
43
+ };
44
+ readonly mEm: {
45
+ readonly unit: "em";
46
+ readonly category: "length-font-relative";
47
+ };
48
+ readonly mRem: {
49
+ readonly unit: "rem";
50
+ readonly category: "length-font-relative";
51
+ };
52
+ readonly mEx: {
53
+ readonly unit: "ex";
54
+ readonly category: "length-font-relative";
55
+ };
56
+ readonly mRex: {
57
+ readonly unit: "rex";
58
+ readonly category: "length-font-relative";
59
+ };
60
+ readonly mCh: {
61
+ readonly unit: "ch";
62
+ readonly category: "length-font-relative";
63
+ };
64
+ readonly mRch: {
65
+ readonly unit: "rch";
66
+ readonly category: "length-font-relative";
67
+ };
68
+ readonly mCap: {
69
+ readonly unit: "cap";
70
+ readonly category: "length-font-relative";
71
+ };
72
+ readonly mRcap: {
73
+ readonly unit: "rcap";
74
+ readonly category: "length-font-relative";
75
+ };
76
+ readonly mIc: {
77
+ readonly unit: "ic";
78
+ readonly category: "length-font-relative";
79
+ };
80
+ readonly mRic: {
81
+ readonly unit: "ric";
82
+ readonly category: "length-font-relative";
83
+ };
84
+ readonly mLh: {
85
+ readonly unit: "lh";
86
+ readonly category: "length-font-relative";
87
+ };
88
+ readonly mRlh: {
89
+ readonly unit: "rlh";
90
+ readonly category: "length-font-relative";
91
+ };
92
+ readonly mVw: {
93
+ readonly unit: "vw";
94
+ readonly category: "length-viewport";
95
+ };
96
+ readonly mVh: {
97
+ readonly unit: "vh";
98
+ readonly category: "length-viewport";
99
+ };
100
+ readonly mVi: {
101
+ readonly unit: "vi";
102
+ readonly category: "length-viewport";
103
+ };
104
+ readonly mVb: {
105
+ readonly unit: "vb";
106
+ readonly category: "length-viewport";
107
+ };
108
+ readonly mVmin: {
109
+ readonly unit: "vmin";
110
+ readonly category: "length-viewport";
111
+ };
112
+ readonly mVmax: {
113
+ readonly unit: "vmax";
114
+ readonly category: "length-viewport";
115
+ };
116
+ readonly mSvw: {
117
+ readonly unit: "svw";
118
+ readonly category: "length-viewport-small";
119
+ };
120
+ readonly mSvh: {
121
+ readonly unit: "svh";
122
+ readonly category: "length-viewport-small";
123
+ };
124
+ readonly mSvi: {
125
+ readonly unit: "svi";
126
+ readonly category: "length-viewport-small";
127
+ };
128
+ readonly mSvb: {
129
+ readonly unit: "svb";
130
+ readonly category: "length-viewport-small";
131
+ };
132
+ readonly mSvmin: {
133
+ readonly unit: "svmin";
134
+ readonly category: "length-viewport-small";
135
+ };
136
+ readonly mSvmax: {
137
+ readonly unit: "svmax";
138
+ readonly category: "length-viewport-small";
139
+ };
140
+ readonly mLvw: {
141
+ readonly unit: "lvw";
142
+ readonly category: "length-viewport-large";
143
+ };
144
+ readonly mLvh: {
145
+ readonly unit: "lvh";
146
+ readonly category: "length-viewport-large";
147
+ };
148
+ readonly mLvi: {
149
+ readonly unit: "lvi";
150
+ readonly category: "length-viewport-large";
151
+ };
152
+ readonly mLvb: {
153
+ readonly unit: "lvb";
154
+ readonly category: "length-viewport-large";
155
+ };
156
+ readonly mLvmin: {
157
+ readonly unit: "lvmin";
158
+ readonly category: "length-viewport-large";
159
+ };
160
+ readonly mLvmax: {
161
+ readonly unit: "lvmax";
162
+ readonly category: "length-viewport-large";
163
+ };
164
+ readonly mDvw: {
165
+ readonly unit: "dvw";
166
+ readonly category: "length-viewport-dynamic";
167
+ };
168
+ readonly mDvh: {
169
+ readonly unit: "dvh";
170
+ readonly category: "length-viewport-dynamic";
171
+ };
172
+ readonly mDvi: {
173
+ readonly unit: "dvi";
174
+ readonly category: "length-viewport-dynamic";
175
+ };
176
+ readonly mDvb: {
177
+ readonly unit: "dvb";
178
+ readonly category: "length-viewport-dynamic";
179
+ };
180
+ readonly mDvmin: {
181
+ readonly unit: "dvmin";
182
+ readonly category: "length-viewport-dynamic";
183
+ };
184
+ readonly mDvmax: {
185
+ readonly unit: "dvmax";
186
+ readonly category: "length-viewport-dynamic";
187
+ };
188
+ readonly mCqw: {
189
+ readonly unit: "cqw";
190
+ readonly category: "length-container";
191
+ };
192
+ readonly mCqh: {
193
+ readonly unit: "cqh";
194
+ readonly category: "length-container";
195
+ };
196
+ readonly mCqi: {
197
+ readonly unit: "cqi";
198
+ readonly category: "length-container";
199
+ };
200
+ readonly mCqb: {
201
+ readonly unit: "cqb";
202
+ readonly category: "length-container";
203
+ };
204
+ readonly mCqmin: {
205
+ readonly unit: "cqmin";
206
+ readonly category: "length-container";
207
+ };
208
+ readonly mCqmax: {
209
+ readonly unit: "cqmax";
210
+ readonly category: "length-container";
211
+ };
212
+ readonly mDeg: {
213
+ readonly unit: "deg";
214
+ readonly category: "angle";
215
+ };
216
+ readonly mRad: {
217
+ readonly unit: "rad";
218
+ readonly category: "angle";
219
+ };
220
+ readonly mGrad: {
221
+ readonly unit: "grad";
222
+ readonly category: "angle";
223
+ };
224
+ readonly mTurn: {
225
+ readonly unit: "turn";
226
+ readonly category: "angle";
227
+ };
228
+ readonly mS: {
229
+ readonly unit: "s";
230
+ readonly category: "time";
231
+ };
232
+ readonly mMs: {
233
+ readonly unit: "ms";
234
+ readonly category: "time";
235
+ };
236
+ readonly mHz: {
237
+ readonly unit: "hz";
238
+ readonly category: "frequency";
239
+ };
240
+ readonly mKhz: {
241
+ readonly unit: "khz";
242
+ readonly category: "frequency";
243
+ };
244
+ readonly mDpi: {
245
+ readonly unit: "dpi";
246
+ readonly category: "resolution";
247
+ };
248
+ readonly mDpcm: {
249
+ readonly unit: "dpcm";
250
+ readonly category: "resolution";
251
+ };
252
+ readonly mDppx: {
253
+ readonly unit: "dppx";
254
+ readonly category: "resolution";
255
+ };
256
+ readonly mFr: {
257
+ readonly unit: "fr";
258
+ readonly category: "flex";
259
+ };
260
+ }, makeUnitHelper: <Unit extends string>(unit: Unit) => import("./core").UnitHelper<Unit>, makeUnitHelperFromDefinition: <Name extends import("./unitDefinitions").UnitHelperName>(name: Name) => import("./core").UnitHelper<import("./unitDefinitions").UnitDefinitionRecord[Name]["unit"]>, makeUnitGuard: <T extends import("./core").UnitHelper>(helper: T) => import("./core").UnitGuard<T>, makeUnitAssert: <T extends import("./core").UnitHelper>(helper: T) => import("./core").UnitAssertion<T>, hasCssMethod: (x: unknown) => x is {
261
+ css: () => string;
262
+ }, assertUnit: <Unit extends string>(measurement: import("./core").IMeasurement<Unit>, expectedUnit: string, context?: string) => void, assertCondition: (condition: boolean | (() => boolean), message: string) => void, makeMeasurementRefinement: <B>(spec: {
263
+ predicate: (value: number) => boolean;
264
+ message: (measurement: import("./core").IMeasurement) => string;
265
+ defaultFallback?: number;
266
+ }) => import("./core").MeasurementRefinement<B>, nonNegative: import("./core").MeasurementRefinement<import("./core").GreaterOrEqualToZeroBrand>, nonPositive: import("./core").MeasurementRefinement<import("./core").SmallerOrEqualToZeroBrand>, inRange: <Min extends number, Max extends number>(min: Min, max: Max) => import("./core").MeasurementRefinement<import("./core").InRangeBrand<Min, Max>>, getErrorConfig: () => Required<import("./core").ErrorConfig>, setErrorConfig: (next: import("./core").ErrorConfig) => void;
267
+ //# sourceMappingURL=default.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../src/default.ts"],"names":[],"mappings":"AAeA,eAAO,MACL,CAAC;;;eAoBs9O,CAAC;;;;;;;GAnBx9O,aAAa,8DACb,mBAAmB,yIACnB,cAAc,yJACd,cAAc,yJACd,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GACvB,cAAc,0EACd,4BAA4B,uGAaqgU,sDAA0B,WAZ3jU,aAAa,uFACb,cAAc,2FACd,YAAY;;GACZ,UAAU,2HACV,eAAe,mEACf,yBAAyB;;;mBAOg0Z,CAAC;iDAN11Z,WAAW,sFACX,WAAW,sFACX,OAAO,mJACP,cAAc,gDACd,cAAc,8CACG,CAAC"}
@@ -0,0 +1,14 @@
1
+ // THE DEFAULT INSTANCE. This module sits ABOVE both `core.ts` and `factory.ts`
2
+ // and is the single place where the package's bare, default-instance helpers are
3
+ // assembled. It calls the public factory `createCalipers()` at its defaults, so
4
+ // the bare `m` / refinements / unit-helper builders below are exactly the same
5
+ // construction path a consumer gets from `createCalipers()` with no config. The
6
+ // default can no longer drift from a custom instance, because there is one path.
7
+ //
8
+ // `factory.ts` depends only on the `internal/*` builders (which import nothing
9
+ // but TYPES from `core.ts`), so importing the factory here introduces no runtime
10
+ // import cycle: `default.ts -> factory.ts -> internal/* -> core.ts (types only)`.
11
+ // `core.ts` itself imports nothing from this module.
12
+ import { createCalipers } from './factory';
13
+ const defaultCalipers = createCalipers();
14
+ export const { m, isMeasurement, assertMatchingUnits, measurementMin, measurementMax, measurementUnitMetadata, makeUnitHelper, makeUnitHelperFromDefinition, makeUnitGuard, makeUnitAssert, hasCssMethod, assertUnit, assertCondition, makeMeasurementRefinement, nonNegative, nonPositive, inRange, getErrorConfig, setErrorConfig, } = defaultCalipers;
@@ -1,6 +1,6 @@
1
- import { type ErrorConfig } from './internal/errors';
2
1
  import { type CoreApi } from './internal/createCoreApi';
3
2
  import { type UnitsApi } from './internal/createUnitsApi';
3
+ import { type ErrorConfig } from './internal/errors';
4
4
  export type CalipersFactoryConfig = {
5
5
  errorConfig?: ErrorConfig;
6
6
  };
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE1E,MAAM,MAAM,qBAAqB,GAAG;IAClC,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,OAAO,GACpC,QAAQ,GAAG;IACT,KAAK,EAAE,QAAQ,CAAC;CACjB,CAAC;AAEJ,eAAO,MAAM,cAAc,GACzB,SAAQ,qBAA0B,KACjC,gBAYF,CAAC"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAEb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAEL,KAAK,QAAQ,EACd,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,qBAAqB,GAAG;IAClC,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,OAAO,GACpC,QAAQ,GAAG;IACT,KAAK,EAAE,QAAQ,CAAC;CACjB,CAAC;AAEJ,eAAO,MAAM,cAAc,GACzB,SAAQ,qBAA0B,KACjC,gBAUF,CAAC"}
@@ -1,6 +1,6 @@
1
- import { createErrorConfigStore } from './internal/errors';
2
- import { createCoreApi } from './internal/createCoreApi';
3
- import { createUnitsApi } from './internal/createUnitsApi';
1
+ import { createCoreApi, } from './internal/createCoreApi';
2
+ import { createUnitsApi, } from './internal/createUnitsApi';
3
+ import { createErrorConfigStore, } from './internal/errors';
4
4
  export const createCalipers = (config = {}) => {
5
5
  var _a;
6
6
  const errorStore = createErrorConfigStore((_a = config.errorConfig) !== null && _a !== void 0 ? _a : {});
@@ -0,0 +1,35 @@
1
+ import { type Scalar } from './scalar';
2
+ export type FloatConstraints = {
3
+ min?: number;
4
+ max?: number;
5
+ };
6
+ export type FloatOptions = FloatConstraints & {
7
+ context?: string;
8
+ };
9
+ export interface IFloat {
10
+ css: () => string;
11
+ toString: () => string;
12
+ valueOf: () => number;
13
+ value: () => number;
14
+ constraints: () => FloatConstraints;
15
+ withValue: (value: number) => IFloat;
16
+ add: (delta: Scalar) => IFloat;
17
+ subtract: (delta: Scalar) => IFloat;
18
+ multiply: (factor: Scalar) => IFloat;
19
+ divide: (divisor: Scalar) => IFloat;
20
+ clamp: (min: number, max: number) => IFloat;
21
+ }
22
+ /**
23
+ * Create a typed float (a finite, unitless real number) with optional range
24
+ * constraints. Operations re-validate against the same constraints, so a
25
+ * hardened float stays hardened (or throws) through arithmetic.
26
+ */
27
+ export declare function f(value: number, options?: FloatOptions): IFloat;
28
+ /**
29
+ * Bind a set of float constraints once and reuse the bound factory, the scalar
30
+ * analogue of `makeUnitHelper`. For example, an opacity value is
31
+ * `hardenFloat({ min: 0, max: 1 })`.
32
+ */
33
+ export declare const hardenFloat: (constraints?: FloatConstraints) => (value: number, context?: string) => IFloat;
34
+ export declare const isFloat: (value: unknown) => value is IFloat;
35
+ //# sourceMappingURL=float.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"float.d.ts","sourceRoot":"","sources":["../../src/float.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAY,MAAM,UAAU,CAAC;AAEjD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,gBAAgB,CAAC;IACpC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACpC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IACpC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;CAC7C;AA2GD;;;;GAIG;AACH,wBAAgB,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,MAAM,CAEnE;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,GACrB,cAAa,gBAAqB,MAClC,OAAO,MAAM,EAAE,UAAU,MAAM,KAAG,MACgB,CAAC;AAEtD,eAAO,MAAM,OAAO,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MACtB,CAAC"}
@@ -0,0 +1,104 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _FloatImpl_instances, _FloatImpl_value, _FloatImpl_min, _FloatImpl_max, _FloatImpl_context, _FloatImpl_options;
13
+ import { toPlainDecimal } from './internal/toPlainDecimal';
14
+ import { toNumber } from './scalar';
15
+ const suffix = (context) => context ? ` [${context}]` : '';
16
+ const coerce = (value) => toNumber(value);
17
+ class FloatImpl {
18
+ constructor(value, options = {}) {
19
+ _FloatImpl_instances.add(this);
20
+ _FloatImpl_value.set(this, void 0);
21
+ _FloatImpl_min.set(this, void 0);
22
+ _FloatImpl_max.set(this, void 0);
23
+ _FloatImpl_context.set(this, void 0);
24
+ const { min, max, context } = options;
25
+ if (min !== undefined && max !== undefined && min > max) {
26
+ throw new Error(`f: min (${min}) must be <= max (${max})${suffix(context)}`);
27
+ }
28
+ if (!Number.isFinite(value)) {
29
+ throw new Error(`f: expected a finite number (got ${value})${suffix(context)}`);
30
+ }
31
+ if (min !== undefined && value < min) {
32
+ throw new Error(`f: ${value} is below the minimum ${min}${suffix(context)}`);
33
+ }
34
+ if (max !== undefined && value > max) {
35
+ throw new Error(`f: ${value} is above the maximum ${max}${suffix(context)}`);
36
+ }
37
+ __classPrivateFieldSet(this, _FloatImpl_value, value, "f");
38
+ __classPrivateFieldSet(this, _FloatImpl_min, min, "f");
39
+ __classPrivateFieldSet(this, _FloatImpl_max, max, "f");
40
+ __classPrivateFieldSet(this, _FloatImpl_context, context, "f");
41
+ }
42
+ value() {
43
+ return __classPrivateFieldGet(this, _FloatImpl_value, "f");
44
+ }
45
+ valueOf() {
46
+ return __classPrivateFieldGet(this, _FloatImpl_value, "f");
47
+ }
48
+ constraints() {
49
+ return { min: __classPrivateFieldGet(this, _FloatImpl_min, "f"), max: __classPrivateFieldGet(this, _FloatImpl_max, "f") };
50
+ }
51
+ css() {
52
+ return toPlainDecimal(__classPrivateFieldGet(this, _FloatImpl_value, "f"));
53
+ }
54
+ toString() {
55
+ return this.css();
56
+ }
57
+ withValue(value) {
58
+ return new FloatImpl(value, __classPrivateFieldGet(this, _FloatImpl_instances, "m", _FloatImpl_options).call(this));
59
+ }
60
+ add(delta) {
61
+ return this.withValue(__classPrivateFieldGet(this, _FloatImpl_value, "f") + coerce(delta));
62
+ }
63
+ subtract(delta) {
64
+ return this.withValue(__classPrivateFieldGet(this, _FloatImpl_value, "f") - coerce(delta));
65
+ }
66
+ multiply(factor) {
67
+ return this.withValue(__classPrivateFieldGet(this, _FloatImpl_value, "f") * coerce(factor));
68
+ }
69
+ divide(divisor) {
70
+ const numeric = coerce(divisor);
71
+ if (numeric === 0) {
72
+ throw new Error(`f: cannot divide ${__classPrivateFieldGet(this, _FloatImpl_value, "f")} by zero${suffix(__classPrivateFieldGet(this, _FloatImpl_context, "f"))}`);
73
+ }
74
+ const result = __classPrivateFieldGet(this, _FloatImpl_value, "f") / numeric;
75
+ if (!Number.isFinite(result)) {
76
+ throw new Error(`f: non-finite result dividing ${__classPrivateFieldGet(this, _FloatImpl_value, "f")} by ${numeric}${suffix(__classPrivateFieldGet(this, _FloatImpl_context, "f"))}`);
77
+ }
78
+ return this.withValue(result);
79
+ }
80
+ clamp(min, max) {
81
+ if (min > max) {
82
+ throw new Error(`f.clamp: min (${min}) must be <= max (${max})`);
83
+ }
84
+ return this.withValue(Math.min(max, Math.max(min, __classPrivateFieldGet(this, _FloatImpl_value, "f"))));
85
+ }
86
+ }
87
+ _FloatImpl_value = new WeakMap(), _FloatImpl_min = new WeakMap(), _FloatImpl_max = new WeakMap(), _FloatImpl_context = new WeakMap(), _FloatImpl_instances = new WeakSet(), _FloatImpl_options = function _FloatImpl_options() {
88
+ return { min: __classPrivateFieldGet(this, _FloatImpl_min, "f"), max: __classPrivateFieldGet(this, _FloatImpl_max, "f"), context: __classPrivateFieldGet(this, _FloatImpl_context, "f") };
89
+ };
90
+ /**
91
+ * Create a typed float (a finite, unitless real number) with optional range
92
+ * constraints. Operations re-validate against the same constraints, so a
93
+ * hardened float stays hardened (or throws) through arithmetic.
94
+ */
95
+ export function f(value, options = {}) {
96
+ return new FloatImpl(value, options);
97
+ }
98
+ /**
99
+ * Bind a set of float constraints once and reuse the bound factory, the scalar
100
+ * analogue of `makeUnitHelper`. For example, an opacity value is
101
+ * `hardenFloat({ min: 0, max: 1 })`.
102
+ */
103
+ export const hardenFloat = (constraints = {}) => (value, context) => new FloatImpl(value, { ...constraints, context });
104
+ export const isFloat = (value) => value instanceof FloatImpl;
@@ -1,15 +1,17 @@
1
1
  export * from './core';
2
- export * from './units/percent';
2
+ export * from './default';
3
+ export { type CascadeKeyword, color, type ColorConfig, type ColorFormatPlugin, colorFormats, type ColorInput, type ColorObject, type ColorSpace, type ColorSpaceDescriptor, type Store as ColorStore, type ColorString, createColor, type CreateColorConfig, type CssColor, type CssFormat, type CurrentColor, type CustomColor, defaultColorConfig, defaultFormatPriority, defineColorSpace, type DeprecatedSystemColor, type FormatName, type Gamut, parseColor, resolve as resolveColor, type ResolvedColor, storeColor, type Strictness, type SymbolicColor, type SystemColor, type TransparentRendering, } from './color';
3
4
  export * from './units/absolute';
4
- export * from './units/font-relative';
5
- export * from './units/viewport';
6
- export * from './units/viewport-small';
7
- export * from './units/viewport-large';
8
- export * from './units/viewport-dynamic';
9
- export * from './units/container';
10
5
  export * from './units/angle';
11
- export * from './units/time';
6
+ export * from './units/container';
7
+ export * from './units/font-relative';
12
8
  export * from './units/frequency';
13
- export * from './units/resolution';
14
9
  export * from './units/grid';
10
+ export * from './units/percent';
11
+ export * from './units/resolution';
12
+ export * from './units/time';
13
+ export * from './units/viewport';
14
+ export * from './units/viewport-dynamic';
15
+ export * from './units/viewport-large';
16
+ export * from './units/viewport-small';
15
17
  //# sourceMappingURL=index.d.ts.map