@ex-grid/mantine 0.0.0-stage → 0.2.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js ADDED
@@ -0,0 +1,824 @@
1
+ // src/mantine-ex-grid.ts
2
+ import { createElement as createElement2, useMemo } from "react";
3
+ import { Paper } from "@mantine/core";
4
+ import { ExGrid } from "@ex-grid/react";
5
+
6
+ // src/chrome.ts
7
+ import { createContext, createElement, useCallback, useContext } from "react";
8
+ import { Button, Checkbox, Loader, NativeSelect, Radio, Text, TextInput } from "@mantine/core";
9
+ import {
10
+ filterPanelLabelIds,
11
+ findPanelLabelIds,
12
+ operatorLabelId,
13
+ summaryLabelIds
14
+ } from "@ex-grid/core";
15
+ import {
16
+ useCellEditor,
17
+ useEditorCompletion,
18
+ useFilterPanel,
19
+ useFindPanel,
20
+ useFormulaBarText,
21
+ useMenuItems,
22
+ useNameBox
23
+ } from "@ex-grid/react";
24
+ var MantineSizeContext = createContext("xs");
25
+ function MantineMenu({ context }) {
26
+ const item = useMenuItems(context);
27
+ const size = useContext(MantineSizeContext);
28
+ return createElement(
29
+ "div",
30
+ { role: "none", className: "mantine-ex-grid-menu" },
31
+ ...context.commands.map((command, index) => createElement(Button, {
32
+ ...item(index),
33
+ key: command.id,
34
+ type: "button",
35
+ variant: "subtle",
36
+ color: "gray",
37
+ size,
38
+ fullWidth: true,
39
+ justify: "flex-start",
40
+ className: "mantine-ex-grid-menu-item"
41
+ }, context.label(command.id)))
42
+ );
43
+ }
44
+ function conditionControls(context, condition, allowed, second, size, handles) {
45
+ const choices = allowed.map((operator2) => ({ value: operator2, label: context.label(operatorLabelId(operator2)) }));
46
+ const operator = createElement(NativeSelect, {
47
+ key: second ? "second-operator" : "operator",
48
+ size,
49
+ data: second ? [{ value: "", label: context.label(filterPanelLabelIds.none) }, ...choices] : choices,
50
+ value: condition === void 0 ? "" : condition.operator,
51
+ onChange: (event) => {
52
+ const { value } = event.currentTarget;
53
+ if (second && value === "") context.setSecond(void 0);
54
+ else if (second) context.setSecond(operatorOf(value, allowed));
55
+ else context.setOperator(operatorOf(value, allowed));
56
+ },
57
+ ...second ? {} : { ref: handles.first }
58
+ });
59
+ if (condition === void 0 || !condition.takesOperand) return [operator];
60
+ const operand = createElement(TextInput, {
61
+ key: second ? "second-operand" : "operand",
62
+ size,
63
+ type: "text",
64
+ value: condition.operand,
65
+ error: condition.refusal,
66
+ onChange: (event) => {
67
+ if (second) context.setSecondOperand(event.currentTarget.value);
68
+ else context.setOperand(event.currentTarget.value);
69
+ },
70
+ ...second ? {} : { ref: handles.search }
71
+ });
72
+ return [operator, operand];
73
+ }
74
+ function operatorOf(value, allowed) {
75
+ const found = allowed.find((operator) => operator === value);
76
+ if (found === void 0) throw new RangeError(`'${value}' is not an operator this column's filter offers.`);
77
+ return found;
78
+ }
79
+ function MantineFilterPanel({ context }) {
80
+ const handles = useFilterPanel(context);
81
+ const { view, first, last, search, onValueListKeyDown } = handles;
82
+ const size = useContext(MantineSizeContext);
83
+ const searchBox = useCallback((control) => {
84
+ first(control);
85
+ search(control);
86
+ }, [first, search]);
87
+ const body = view.kind === "valueList" ? [
88
+ createElement(TextInput, {
89
+ key: "search",
90
+ size,
91
+ type: "search",
92
+ value: view.search,
93
+ placeholder: context.label(filterPanelLabelIds.search),
94
+ "aria-label": context.label(filterPanelLabelIds.search),
95
+ ref: searchBox,
96
+ onChange: (event) => {
97
+ context.setSearch(event.currentTarget.value);
98
+ }
99
+ }),
100
+ view.addOffered ? createElement(Checkbox, {
101
+ key: "add",
102
+ size,
103
+ label: context.label(filterPanelLabelIds.addToCurrent),
104
+ checked: view.addToCurrent,
105
+ onChange: (event) => {
106
+ context.setAddToCurrent(event.currentTarget.checked);
107
+ }
108
+ }) : null,
109
+ createElement(
110
+ "div",
111
+ { key: "list", className: "mantine-ex-grid-filter-values", onKeyDown: onValueListKeyDown },
112
+ createElement(Checkbox, {
113
+ key: "all",
114
+ size,
115
+ checked: view.selectAll === "checked",
116
+ indeterminate: view.selectAll === "mixed",
117
+ label: context.label(view.search === "" ? filterPanelLabelIds.selectAll : filterPanelLabelIds.selectAllSearchResults),
118
+ onChange: () => {
119
+ context.toggleAll();
120
+ }
121
+ }),
122
+ ...view.entries.map((each, at) => createElement(Checkbox, {
123
+ key: at,
124
+ size,
125
+ label: each.text,
126
+ checked: each.checked,
127
+ onChange: (event) => {
128
+ context.setChecked(each.value, event.currentTarget.checked);
129
+ }
130
+ }))
131
+ )
132
+ ] : [
133
+ ...conditionControls(context, view.first, view.allowed, false, size, handles),
134
+ createElement(Radio.Group, {
135
+ key: "join",
136
+ value: view.combinator,
137
+ size,
138
+ onChange: (value) => {
139
+ if (value !== "and" && value !== "or") throw new RangeError(`'${String(value)}' joins no two conditions (FN-18).`);
140
+ context.setCombinator(value);
141
+ },
142
+ children: createElement(
143
+ "div",
144
+ { className: "mantine-ex-grid-filter-join" },
145
+ createElement(Radio, { value: "and", size, label: context.label(filterPanelLabelIds.and) }),
146
+ createElement(Radio, { value: "or", size, label: context.label(filterPanelLabelIds.or) })
147
+ )
148
+ }),
149
+ ...conditionControls(context, view.second, view.allowed, true, size, handles)
150
+ ];
151
+ return createElement(
152
+ "div",
153
+ { className: "mantine-ex-grid-filter" },
154
+ ...body,
155
+ createElement(
156
+ "div",
157
+ { className: "mantine-ex-grid-filter-actions" },
158
+ createElement(Button, {
159
+ type: "button",
160
+ size,
161
+ className: "ex-popover-closes",
162
+ disabled: !view.canApply,
163
+ onClick: () => {
164
+ context.apply();
165
+ }
166
+ }, context.label(filterPanelLabelIds.ok)),
167
+ createElement(Button, {
168
+ type: "button",
169
+ size,
170
+ variant: "default",
171
+ className: "ex-popover-closes",
172
+ ref: last,
173
+ onClick: () => {
174
+ context.cancel();
175
+ }
176
+ }, context.label(filterPanelLabelIds.cancel))
177
+ )
178
+ );
179
+ }
180
+ function MantineFindPanel({ context }) {
181
+ const { view, field } = useFindPanel(context);
182
+ const size = useContext(MantineSizeContext);
183
+ const button = (id, press, variant, disabled = false) => createElement(Button, { key: id, type: "button", size, variant, disabled, onClick: press }, context.label(id));
184
+ return createElement(
185
+ "div",
186
+ { className: "mantine-ex-grid-find" },
187
+ createElement(TextInput, {
188
+ size,
189
+ ref: field,
190
+ value: view.text,
191
+ "aria-label": context.label(findPanelLabelIds.field),
192
+ placeholder: context.label(findPanelLabelIds.field),
193
+ onChange: (event) => {
194
+ context.setText(event.currentTarget.value);
195
+ }
196
+ }),
197
+ createElement(Checkbox, {
198
+ size,
199
+ label: context.label(findPanelLabelIds.matchCase),
200
+ checked: view.matchCase,
201
+ onChange: (event) => {
202
+ context.setMatchCase(event.currentTarget.checked);
203
+ }
204
+ }),
205
+ createElement(Checkbox, {
206
+ size,
207
+ label: context.label(findPanelLabelIds.wholeCell),
208
+ checked: view.wholeCell,
209
+ onChange: (event) => {
210
+ context.setWholeCell(event.currentTarget.checked);
211
+ }
212
+ }),
213
+ createElement(
214
+ "div",
215
+ { className: "mantine-ex-grid-find-actions" },
216
+ ...view.findAllShown ? [button(findPanelLabelIds.findAll, context.findAll, "default")] : [],
217
+ button(findPanelLabelIds.previous, context.previous, "default"),
218
+ button(findPanelLabelIds.next, context.next, "filled")
219
+ ),
220
+ ...view.replaceShown ? [
221
+ createElement(TextInput, {
222
+ key: "replace",
223
+ size,
224
+ value: view.replaceText,
225
+ "aria-label": context.label(findPanelLabelIds.replaceField),
226
+ placeholder: context.label(findPanelLabelIds.replaceField),
227
+ onChange: (event) => {
228
+ context.setReplaceText(event.currentTarget.value);
229
+ }
230
+ }),
231
+ createElement(
232
+ "div",
233
+ { key: "writes", className: "mantine-ex-grid-find-actions" },
234
+ button(findPanelLabelIds.replace, context.replace, "default", view.replaceWaiting),
235
+ button(findPanelLabelIds.replaceAll, context.replaceAll, "filled", view.replaceWaiting)
236
+ )
237
+ ] : [],
238
+ createElement(Text, { size, role: "status", className: "mantine-ex-grid-find-outcome" }, view.outcome)
239
+ );
240
+ }
241
+ function MantineCellEditor({ context }) {
242
+ const { field, defaultValue } = useCellEditor(context);
243
+ return createElement("input", { ref: field, defaultValue, className: "mantine-ex-editor" });
244
+ }
245
+ function MantineBarText({ context }) {
246
+ const { view, field } = useFormulaBarText(context);
247
+ return createElement("input", { ref: field, className: "mantine-ex-formula-bar-text", "data-borrowed": view.borrowed ? "" : void 0 });
248
+ }
249
+ function MantineNameBox({ context }) {
250
+ const { field } = useNameBox(context);
251
+ return createElement("input", { ref: field, className: "mantine-ex-name-box" });
252
+ }
253
+ function MantineCellMessage({ context }) {
254
+ const size = useContext(MantineSizeContext);
255
+ return createElement(Text, { size, span: true }, context.message);
256
+ }
257
+ function MantineLoading({ context }) {
258
+ const size = useContext(MantineSizeContext);
259
+ return context.loading ? createElement(Loader, { size, type: "dots" }) : null;
260
+ }
261
+ function MantineSelectionSummary({ context }) {
262
+ const size = useContext(MantineSizeContext);
263
+ const said = context.status === "pending" ? context.label(summaryLabelIds.pending) : context.status === "declined" ? context.declineReason : context.figures.map((figure) => `${context.label(figure.labelId)}: ${figure.text}`).join(" ");
264
+ return createElement(Text, { size, span: true }, said);
265
+ }
266
+ function MantineCompletion({ context }) {
267
+ const { list, option } = useEditorCompletion(context);
268
+ const hint = context.hint?.parts();
269
+ return createElement(
270
+ "div",
271
+ { className: "mantine-ex-grid-completion" },
272
+ context.candidates.length === 0 ? null : createElement(
273
+ "div",
274
+ { ...list, className: "mantine-ex-grid-completion-list" },
275
+ ...context.candidates.map((candidate, index) => createElement("div", {
276
+ ...option(index),
277
+ key: index,
278
+ className: "mantine-ex-grid-completion-item"
279
+ }, candidate.label))
280
+ ),
281
+ hint === void 0 ? null : createElement(
282
+ "div",
283
+ { className: "mantine-ex-grid-completion-hint" },
284
+ hint[0],
285
+ hint[1].length === 0 ? null : createElement("strong", null, hint[1]),
286
+ hint[2]
287
+ )
288
+ );
289
+ }
290
+ var menu = (context) => createElement(MantineMenu, { context });
291
+ var mantineChrome = Object.freeze({
292
+ columnMenu: menu,
293
+ contextMenu: menu,
294
+ filterPanel: (context) => createElement(MantineFilterPanel, { context }),
295
+ findPanel: (context) => createElement(MantineFindPanel, { context }),
296
+ cellEditor: (context) => createElement(MantineCellEditor, { context }),
297
+ cellMessage: (context) => createElement(MantineCellMessage, { context }),
298
+ loadingIndicator: (context) => createElement(MantineLoading, { context }),
299
+ selectionSummary: (context) => createElement(MantineSelectionSummary, { context }),
300
+ formulaBarText: (context) => createElement(MantineBarText, { context }),
301
+ nameBox: (context) => createElement(MantineNameBox, { context }),
302
+ editorCompletion: (context) => createElement(MantineCompletion, { context })
303
+ });
304
+
305
+ // src/presentation.ts
306
+ import { GridPresentationDefaults } from "@ex-grid/core";
307
+
308
+ // src/mantine-glyph-widths.ts
309
+ import { GlyphWidthTable } from "@ex-grid/core";
310
+ var mantineClassWidths = Object.freeze({
311
+ fontSizePx: 14,
312
+ wideWidthPx: 14.05,
313
+ digitWidthPx: 9.76,
314
+ narrowWidthPx: 6.42,
315
+ otherWidthPx: 14.01,
316
+ boldWideWidthPx: 14.52,
317
+ boldDigitWidthPx: 9.76,
318
+ boldNarrowWidthPx: 6.42,
319
+ boldOtherWidthPx: 14.01
320
+ });
321
+ var at14 = [
322
+ ["A", 10.86, 10.86],
323
+ ["B", 10.69, 10.69],
324
+ ["C", 10.29, 10.4],
325
+ ["D", 11.64, 11.64],
326
+ ["F", 9.59, 9.59],
327
+ ["G", 11.51, 11.51],
328
+ ["H", 11.73, 11.73],
329
+ ["I", 5.23, 5.23],
330
+ ["J", 8.14, 8.43],
331
+ ["K", 10.87, 10.87],
332
+ ["L", 8.94, 8.94],
333
+ ["M", 13.96, 13.96],
334
+ ["N", 11.73, 11.73],
335
+ ["O", 11.92, 11.92],
336
+ ["P", 10.28, 10.28],
337
+ ["Q", 11.92, 11.92],
338
+ ["R", 10.8, 10.8],
339
+ ["S", 10.11, 10.11],
340
+ ["T", 9.89, 9.89],
341
+ ["U", 11.38, 11.38],
342
+ ["V", 10.86, 10.86],
343
+ ["W", 15.47, 15.47],
344
+ ["X", 10.82, 10.82],
345
+ ["Y", 10.16, 10.16],
346
+ ["Z", 10.17, 10.17],
347
+ ["a", 9.47, 9.47],
348
+ ["b", 10.04, 10.04],
349
+ ["c", 8.32, 8.32],
350
+ ["d", 10.04, 10.04],
351
+ ["e", 9.51, 9.51],
352
+ ["f", 6.12, 6.12],
353
+ ["g", 10.04, 10.04],
354
+ ["h", 9.98, 9.98],
355
+ ["i", 4.82, 4.82],
356
+ ["j", 4.82, 4.82],
357
+ ["k", 9.33, 9.33],
358
+ ["l", 4.82, 4.82],
359
+ ["m", 14.61, 14.61],
360
+ ["n", 9.98, 9.98],
361
+ ["o", 9.64, 9.64],
362
+ ["p", 10.04, 10.04],
363
+ ["q", 10.04, 10.04],
364
+ ["r", 6.92, 6.92],
365
+ ["s", 8.36, 8.36],
366
+ ["t", 6.72, 6.72],
367
+ ["u", 9.98, 9.98],
368
+ ["v", 9.15, 9.15],
369
+ ["w", 12.95, 12.95],
370
+ ["x", 9.05, 9.05],
371
+ ["y", 9.15, 9.15],
372
+ ["z", 8.17, 8.17],
373
+ ["\xA2", 9.76, 9.76],
374
+ ["\xA4", 10.01, 9.71],
375
+ ["\xC0", 10.86, 10.86],
376
+ ["\xC1", 10.86, 10.86],
377
+ ["\xC2", 10.86, 10.86],
378
+ ["\xC3", 10.86, 10.86],
379
+ ["\xC4", 10.86, 10.86],
380
+ ["\xC5", 10.86, 10.86],
381
+ ["\xC6", 15.21, 15.21],
382
+ ["\xC7", 10.29, 10.4],
383
+ ["\xC8", 9.59, 9.59],
384
+ ["\xC9", 9.59, 9.59],
385
+ ["\xCA", 9.59, 9.59],
386
+ ["\xCB", 9.59, 9.59],
387
+ ["\xCC", 5.23, 5.23],
388
+ ["\xCD", 5.23, 5.23],
389
+ ["\xCE", 5.23, 5.23],
390
+ ["\xCF", 5.23, 5.23],
391
+ ["\xD0", 11.75, 11.75],
392
+ ["\xD1", 11.73, 11.73],
393
+ ["\xD2", 11.92, 11.92],
394
+ ["\xD3", 11.92, 11.92],
395
+ ["\xD4", 11.92, 11.92],
396
+ ["\xD5", 11.92, 11.92],
397
+ ["\xD6", 11.92, 11.92],
398
+ ["\xD8", 11.92, 11.92],
399
+ ["\xD9", 11.38, 11.38],
400
+ ["\xDA", 11.38, 11.38],
401
+ ["\xDB", 11.38, 11.38],
402
+ ["\xDC", 11.38, 11.38],
403
+ ["\xDD", 10.16, 10.16],
404
+ ["\xDE", 10.35, 10.35],
405
+ ["\xDF", 10.09, 10.09],
406
+ ["\xE0", 9.47, 9.47],
407
+ ["\xE1", 9.47, 9.47],
408
+ ["\xE2", 9.47, 9.47],
409
+ ["\xE3", 9.47, 9.47],
410
+ ["\xE4", 9.47, 9.47],
411
+ ["\xE5", 9.47, 9.47],
412
+ ["\xE6", 14.68, 14.68],
413
+ ["\xE7", 8.32, 8.32],
414
+ ["\xE8", 9.51, 9.51],
415
+ ["\xE9", 9.51, 9.51],
416
+ ["\xEA", 9.51, 9.51],
417
+ ["\xEB", 9.51, 9.51],
418
+ ["\xEC", 4.82, 4.82],
419
+ ["\xED", 4.82, 4.82],
420
+ ["\xEE", 4.82, 4.82],
421
+ ["\xEF", 4.82, 4.82],
422
+ ["\xF0", 9.64, 9.64],
423
+ ["\xF1", 9.98, 9.98],
424
+ ["\xF2", 9.64, 9.64],
425
+ ["\xF3", 9.64, 9.64],
426
+ ["\xF4", 9.64, 9.64],
427
+ ["\xF5", 9.64, 9.64],
428
+ ["\xF6", 9.64, 9.64],
429
+ ["\xF8", 9.64, 9.64],
430
+ ["\xF9", 9.98, 9.98],
431
+ ["\xFA", 9.98, 9.98],
432
+ ["\xFB", 9.98, 9.98],
433
+ ["\xFC", 9.98, 9.98],
434
+ ["\xFD", 9.15, 9.15],
435
+ ["\xFE", 10.04, 10.04],
436
+ ["\xFF", 9.15, 9.15],
437
+ ["\u0100", 10.86, 10.86],
438
+ ["\u0101", 9.47, 9.47],
439
+ ["\u0102", 10.86, 10.86],
440
+ ["\u0103", 9.47, 9.47],
441
+ ["\u0104", 10.86, 10.86],
442
+ ["\u0105", 9.47, 9.47],
443
+ ["\u0106", 10.29, 10.4],
444
+ ["\u0107", 8.32, 8.32],
445
+ ["\u0108", 10.29, 10.4],
446
+ ["\u0109", 8.32, 8.32],
447
+ ["\u010A", 10.29, 10.4],
448
+ ["\u010B", 8.32, 8.32],
449
+ ["\u010C", 10.29, 10.4],
450
+ ["\u010D", 8.32, 8.32],
451
+ ["\u010E", 11.64, 11.64],
452
+ ["\u010F", 10.55, 10.89],
453
+ ["\u0110", 11.75, 11.75],
454
+ ["\u0111", 10.04, 10.04],
455
+ ["\u0112", 9.59, 9.59],
456
+ ["\u0113", 9.51, 9.51],
457
+ ["\u0114", 9.59, 9.59],
458
+ ["\u0115", 9.51, 9.51],
459
+ ["\u0116", 9.59, 9.59],
460
+ ["\u0117", 9.51, 9.51],
461
+ ["\u0118", 9.59, 9.59],
462
+ ["\u0119", 9.51, 9.51],
463
+ ["\u011A", 9.59, 9.59],
464
+ ["\u011B", 9.51, 9.51],
465
+ ["\u011C", 11.51, 11.51],
466
+ ["\u011D", 10.04, 10.04],
467
+ ["\u011E", 11.51, 11.51],
468
+ ["\u011F", 10.04, 10.04],
469
+ ["\u0120", 11.51, 11.51],
470
+ ["\u0121", 10.04, 10.04],
471
+ ["\u0122", 11.51, 11.51],
472
+ ["\u0123", 10.04, 10.04],
473
+ ["\u0124", 11.73, 11.73],
474
+ ["\u0125", 9.98, 9.98],
475
+ ["\u0126", 13.65, 13.65],
476
+ ["\u0127", 11.08, 11.08],
477
+ ["\u0128", 5.23, 5.23],
478
+ ["\u0129", 4.82, 4.82],
479
+ ["\u012A", 5.23, 5.23],
480
+ ["\u012B", 4.82, 4.82],
481
+ ["\u012C", 5.23, 5.23],
482
+ ["\u012D", 4.82, 4.82],
483
+ ["\u012E", 5.23, 5.23],
484
+ ["\u012F", 4.82, 4.82],
485
+ ["\u0130", 5.23, 5.23],
486
+ ["\u0131", 4.82, 4.82],
487
+ ["\u0132", 12.35, 12.9],
488
+ ["\u0133", 9.62, 9.62],
489
+ ["\u0134", 8.14, 8.43],
490
+ ["\u0135", 4.82, 4.82],
491
+ ["\u0136", 10.87, 10.87],
492
+ ["\u0137", 9.33, 9.33],
493
+ ["\u0138", 9.33, 9.33],
494
+ ["\u0139", 8.94, 8.94],
495
+ ["\u013A", 4.82, 4.82],
496
+ ["\u013B", 8.94, 8.94],
497
+ ["\u013C", 4.82, 4.82],
498
+ ["\u013D", 8.94, 8.94],
499
+ ["\u013E", 6.74, 6.74],
500
+ ["\u013F", 8.94, 8.94],
501
+ ["\u0140", 7.81, 7.81],
502
+ ["\u0141", 9.02, 9.02],
503
+ ["\u0142", 5.21, 5.21],
504
+ ["\u0143", 11.73, 11.73],
505
+ ["\u0144", 9.98, 9.98],
506
+ ["\u0145", 11.73, 11.73],
507
+ ["\u0146", 9.98, 9.98],
508
+ ["\u0147", 11.73, 11.73],
509
+ ["\u0148", 9.98, 9.98],
510
+ ["\u0149", 13.78, 13.78],
511
+ ["\u014A", 11.73, 11.73],
512
+ ["\u014B", 9.98, 9.98],
513
+ ["\u014C", 11.92, 11.92],
514
+ ["\u014D", 9.64, 9.64],
515
+ ["\u014E", 11.92, 11.92],
516
+ ["\u014F", 9.64, 9.64],
517
+ ["\u0150", 11.92, 11.92],
518
+ ["\u0151", 9.64, 9.64],
519
+ ["\u0152", 16.36, 16.36],
520
+ ["\u0153", 15.34, 15.34],
521
+ ["\u0154", 10.8, 10.8],
522
+ ["\u0155", 6.92, 6.92],
523
+ ["\u0156", 10.8, 10.8],
524
+ ["\u0157", 6.92, 6.92],
525
+ ["\u0158", 10.8, 10.8],
526
+ ["\u0159", 6.92, 6.92],
527
+ ["\u015A", 10.11, 10.11],
528
+ ["\u015B", 8.36, 8.36],
529
+ ["\u015C", 10.11, 10.11],
530
+ ["\u015D", 8.36, 8.36],
531
+ ["\u015E", 10.11, 10.11],
532
+ ["\u015F", 8.36, 8.36],
533
+ ["\u0160", 10.11, 10.11],
534
+ ["\u0161", 8.36, 8.36],
535
+ ["\u0162", 9.57, 9.57],
536
+ ["\u0163", 6.72, 6.72],
537
+ ["\u0164", 9.89, 9.89],
538
+ ["\u0165", 6.73, 7.2],
539
+ ["\u0166", 9.57, 9.57],
540
+ ["\u0167", 6.72, 6.72],
541
+ ["\u0168", 11.38, 11.38],
542
+ ["\u0169", 9.98, 9.98],
543
+ ["\u016A", 11.38, 11.38],
544
+ ["\u016B", 9.98, 9.98],
545
+ ["\u016C", 11.38, 11.38],
546
+ ["\u016D", 9.98, 9.98],
547
+ ["\u016E", 11.38, 11.38],
548
+ ["\u016F", 9.98, 9.98],
549
+ ["\u0170", 11.38, 11.38],
550
+ ["\u0171", 9.98, 9.98],
551
+ ["\u0172", 11.38, 11.38],
552
+ ["\u0173", 9.98, 9.98],
553
+ ["\u0174", 15.47, 15.47],
554
+ ["\u0175", 12.95, 12.95],
555
+ ["\u0176", 10.16, 10.16],
556
+ ["\u0177", 9.15, 9.15],
557
+ ["\u0178", 10.16, 10.16],
558
+ ["\u0179", 10.17, 10.17],
559
+ ["\u017A", 8.17, 8.17],
560
+ ["\u017B", 10.17, 10.17],
561
+ ["\u017C", 8.17, 8.17],
562
+ ["\u017D", 10.17, 10.17],
563
+ ["\u017E", 8.17, 8.17],
564
+ ["\u017F", 6.12, 6.12],
565
+ ["\u0192", 7.81, 8.07],
566
+ ["\u0386", 11.18, 11.18],
567
+ ["\u0388", 11.97, 11.97],
568
+ ["\u0389", 14.14, 14.14],
569
+ ["\u038A", 7.9, 7.9],
570
+ ["\u038C", 12.48, 12.48],
571
+ ["\u038E", 13.74, 13.74],
572
+ ["\u038F", 12.73, 12.97],
573
+ ["\u0390", 5.48, 5.48],
574
+ ["\u0391", 10.86, 10.86],
575
+ ["\u0392", 10.69, 10.69],
576
+ ["\u0393", 8.94, 8.94],
577
+ ["\u0394", 10.86, 10.86],
578
+ ["\u0395", 9.59, 9.59],
579
+ ["\u0396", 10.17, 10.17],
580
+ ["\u0397", 11.73, 11.73],
581
+ ["\u0398", 11.92, 11.92],
582
+ ["\u0399", 5.23, 5.23],
583
+ ["\u039A", 10.87, 10.87],
584
+ ["\u039B", 10.86, 10.86],
585
+ ["\u039C", 13.96, 13.96],
586
+ ["\u039D", 11.73, 11.73],
587
+ ["\u039E", 9.34, 9.4],
588
+ ["\u039F", 11.92, 11.92],
589
+ ["\u03A0", 11.73, 11.73],
590
+ ["\u03A1", 10.28, 10.28],
591
+ ["\u03A3", 9.59, 9.59],
592
+ ["\u03A4", 9.57, 9.57],
593
+ ["\u03A5", 10.16, 10.16],
594
+ ["\u03A6", 12.42, 12.77],
595
+ ["\u03A7", 10.82, 10.82],
596
+ ["\u03A8", 11.95, 12.19],
597
+ ["\u03A9", 11.92, 11.92],
598
+ ["\u03AA", 5.23, 5.23],
599
+ ["\u03AB", 10.16, 10.16],
600
+ ["\u03AC", 9.64, 9.64],
601
+ ["\u03AD", 7.81, 8.09],
602
+ ["\u03AE", 9.98, 9.98],
603
+ ["\u03AF", 5.48, 5.48],
604
+ ["\u03B0", 9.48, 9.48],
605
+ ["\u03B1", 9.64, 9.64],
606
+ ["\u03B2", 10.04, 10.04],
607
+ ["\u03B3", 9.56, 9.56],
608
+ ["\u03B4", 9.64, 9.64],
609
+ ["\u03B5", 7.81, 8.09],
610
+ ["\u03B6", 8.29, 8.29],
611
+ ["\u03B7", 9.98, 9.98],
612
+ ["\u03B8", 9.64, 9.64],
613
+ ["\u03B9", 5.48, 5.48],
614
+ ["\u03BA", 9.96, 9.96],
615
+ ["\u03BB", 8.87, 8.87],
616
+ ["\u03BC", 10.33, 10.33],
617
+ ["\u03BD", 9.56, 9.56],
618
+ ["\u03BE", 8.29, 8.29],
619
+ ["\u03BF", 9.64, 9.64],
620
+ ["\u03C0", 11.09, 11.09],
621
+ ["\u03C1", 10.04, 10.04],
622
+ ["\u03C2", 8.32, 8.32],
623
+ ["\u03C3", 10.93, 10.93],
624
+ ["\u03C4", 8.96, 8.96],
625
+ ["\u03C5", 9.48, 9.48],
626
+ ["\u03C6", 10.97, 10.97],
627
+ ["\u03C7", 9.05, 9.05],
628
+ ["\u03C8", 11.13, 11.13],
629
+ ["\u03C9", 12.19, 12.19],
630
+ ["\u03CA", 5.48, 5.48],
631
+ ["\u03CB", 9.48, 9.48],
632
+ ["\u03CC", 9.64, 9.64],
633
+ ["\u03CD", 9.48, 9.48],
634
+ ["\u03CE", 12.19, 12.19],
635
+ ["\u0400", 9.59, 9.59],
636
+ ["\u0401", 9.59, 9.59],
637
+ ["\u0402", 12.42, 12.42],
638
+ ["\u0403", 8.94, 8.94],
639
+ ["\u0404", 10.55, 10.67],
640
+ ["\u0405", 10.11, 10.11],
641
+ ["\u0406", 5.23, 5.23],
642
+ ["\u0407", 5.23, 5.23],
643
+ ["\u0408", 8.27, 8.58],
644
+ ["\u0409", 16.18, 16.18],
645
+ ["\u040A", 16.07, 16.29],
646
+ ["\u040B", 12.83, 12.97],
647
+ ["\u040C", 11.46, 11.46],
648
+ ["\u040D", 11.73, 11.73],
649
+ ["\u040E", 10.82, 10.82],
650
+ ["\u040F", 11.73, 11.73],
651
+ ["\u0410", 10.86, 10.86],
652
+ ["\u0411", 10.69, 10.69],
653
+ ["\u0412", 10.69, 10.69],
654
+ ["\u0413", 8.94, 8.94],
655
+ ["\u0414", 12.48, 12.48],
656
+ ["\u0415", 9.59, 9.59],
657
+ ["\u0416", 17.16, 17.16],
658
+ ["\u0417", 9.96, 9.96],
659
+ ["\u0418", 11.73, 11.73],
660
+ ["\u0419", 11.73, 11.73],
661
+ ["\u041A", 11.46, 11.46],
662
+ ["\u041B", 11.65, 11.65],
663
+ ["\u041C", 13.96, 13.96],
664
+ ["\u041D", 11.73, 11.73],
665
+ ["\u041E", 11.92, 11.92],
666
+ ["\u041F", 11.73, 11.73],
667
+ ["\u0420", 10.28, 10.28],
668
+ ["\u0421", 10.42, 10.53],
669
+ ["\u0422", 9.57, 9.57],
670
+ ["\u0423", 10.82, 10.82],
671
+ ["\u0424", 13.9, 13.9],
672
+ ["\u0425", 10.82, 10.82],
673
+ ["\u0426", 13.01, 13.01],
674
+ ["\u0427", 11.34, 11.34],
675
+ ["\u0428", 17.31, 17.31],
676
+ ["\u0429", 18.59, 18.59],
677
+ ["\u042A", 13.17, 13.17],
678
+ ["\u042B", 14.53, 14.53],
679
+ ["\u042C", 10.69, 10.69],
680
+ ["\u042D", 10.55, 10.67],
681
+ ["\u042E", 16.45, 16.45],
682
+ ["\u042F", 10.8, 10.8],
683
+ ["\u0430", 9.47, 9.47],
684
+ ["\u0431", 9.8, 9.8],
685
+ ["\u0432", 8.87, 8.87],
686
+ ["\u0433", 7.37, 7.34],
687
+ ["\u0434", 11.33, 11.33],
688
+ ["\u0435", 9.51, 9.51],
689
+ ["\u0436", 13.96, 13.96],
690
+ ["\u0437", 8.16, 8.16],
691
+ ["\u0438", 9.84, 9.84],
692
+ ["\u0439", 9.84, 9.84],
693
+ ["\u043A", 9.53, 9.53],
694
+ ["\u043B", 10.28, 10.28],
695
+ ["\u043C", 11.46, 11.46],
696
+ ["\u043D", 9.7, 9.7],
697
+ ["\u043E", 9.64, 9.64],
698
+ ["\u043F", 9.7, 9.7],
699
+ ["\u0440", 10.04, 10.04],
700
+ ["\u0441", 8.32, 8.38],
701
+ ["\u0442", 8.18, 8.14],
702
+ ["\u0443", 9.15, 9.15],
703
+ ["\u0444", 13.9, 13.9],
704
+ ["\u0445", 9.05, 9.05],
705
+ ["\u0446", 10.4, 10.4],
706
+ ["\u0447", 9.64, 9.64],
707
+ ["\u0448", 14.88, 14.88],
708
+ ["\u0449", 15.49, 15.49],
709
+ ["\u044A", 10.55, 10.55],
710
+ ["\u044B", 12.68, 12.68],
711
+ ["\u044C", 8.87, 8.87],
712
+ ["\u044D", 8.32, 8.41],
713
+ ["\u044E", 13.63, 13.63],
714
+ ["\u044F", 9.02, 9.02],
715
+ ["\u0450", 9.51, 9.51],
716
+ ["\u0451", 9.51, 9.51],
717
+ ["\u0452", 10.02, 10.02],
718
+ ["\u0453", 7.37, 7.34],
719
+ ["\u0454", 8.32, 8.41],
720
+ ["\u0455", 8.36, 8.36],
721
+ ["\u0456", 4.82, 4.82],
722
+ ["\u0457", 4.82, 4.82],
723
+ ["\u0458", 4.82, 4.82],
724
+ ["\u0459", 13.9, 13.9],
725
+ ["\u045A", 13.41, 13.41],
726
+ ["\u045B", 10.29, 10.29],
727
+ ["\u045C", 9.53, 9.53],
728
+ ["\u045D", 9.84, 9.84],
729
+ ["\u045E", 9.15, 9.15],
730
+ ["\u045F", 9.7, 9.7],
731
+ ["\u20A6", 11.34, 11.4],
732
+ ["\u20A9", 15.47, 15.47],
733
+ ["\u20AA", 12.68, 12.68],
734
+ ["\u20B1", 10.42, 10.46]
735
+ ];
736
+ var built;
737
+ function mantineGlyphWidths() {
738
+ built ??= new GlyphWidthTable(14, at14);
739
+ return built;
740
+ }
741
+
742
+ // src/presentation.ts
743
+ var mantineDefaultFont = Object.freeze({
744
+ family: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif',
745
+ widths: Object.freeze({
746
+ ...mantineClassWidths,
747
+ get glyphWidths() {
748
+ return mantineGlyphWidths();
749
+ }
750
+ })
751
+ });
752
+ function mantinePresentationDefaults(font, words = {}) {
753
+ return new GridPresentationDefaults({
754
+ ...font.widths,
755
+ ...words.density === void 0 ? {} : { density: words.density },
756
+ ...words.striped === void 0 ? {} : { stripeRows: words.striped },
757
+ ...words.highlightOnHover === void 0 ? {} : { highlightHoverRow: words.highlightOnHover }
758
+ });
759
+ }
760
+ function mantineSizeOf(density) {
761
+ switch (density) {
762
+ case "compact":
763
+ case "excel":
764
+ return "xs";
765
+ case "standard":
766
+ return "sm";
767
+ case "comfortable":
768
+ return "md";
769
+ default:
770
+ throw new RangeError(`Unknown density preset '${String(density)}' (ADR-0028).`);
771
+ }
772
+ }
773
+
774
+ // src/mantine-ex-grid.ts
775
+ function MantineExGrid(props) {
776
+ const {
777
+ withBorder,
778
+ radius,
779
+ shadow,
780
+ striped,
781
+ highlightOnHover,
782
+ withColumnBorders,
783
+ font = mantineDefaultFont,
784
+ className,
785
+ style,
786
+ chrome,
787
+ ...grid
788
+ } = props;
789
+ const density = grid.density ?? "compact";
790
+ const defaults = useMemo(
791
+ () => mantinePresentationDefaults(font, {
792
+ ...striped === void 0 ? {} : { striped },
793
+ ...highlightOnHover === void 0 ? {} : { highlightOnHover }
794
+ }),
795
+ [font, striped, highlightOnHover]
796
+ );
797
+ const merged = useMemo(() => chrome === void 0 ? mantineChrome : { ...mantineChrome, ...chrome }, [chrome]);
798
+ const classes = ["mantine-ex-grid"];
799
+ if (radius === 0) classes.push("mantine-ex-grid-square");
800
+ if (grid.viewportWidth === "stretch") classes.push("mantine-ex-grid-stretch");
801
+ if (withColumnBorders === true) classes.push("mantine-ex-grid-column-borders");
802
+ if (className !== void 0) classes.push(className);
803
+ const paperStyle = { ...style, "--ex-font-family": font.family };
804
+ return createElement2(Paper, {
805
+ className: classes.join(" "),
806
+ style: paperStyle,
807
+ ...withBorder === void 0 ? {} : { withBorder },
808
+ ...radius === void 0 ? {} : { radius },
809
+ ...shadow === void 0 ? {} : { shadow }
810
+ }, createElement2(
811
+ MantineSizeContext.Provider,
812
+ { value: mantineSizeOf(density) },
813
+ createElement2(ExGrid, { ...grid, presentationDefaults: defaults, chrome: merged })
814
+ ));
815
+ }
816
+ export {
817
+ MantineExGrid,
818
+ MantineSizeContext,
819
+ mantineChrome,
820
+ mantineDefaultFont,
821
+ mantinePresentationDefaults,
822
+ mantineSizeOf
823
+ };
824
+ //# sourceMappingURL=index.js.map