@mantine/core 9.0.0-alpha.6 → 9.0.0-alpha.7

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 (145) hide show
  1. package/cjs/components/Autocomplete/Autocomplete.cjs +1 -0
  2. package/cjs/components/Autocomplete/Autocomplete.cjs.map +1 -1
  3. package/cjs/components/Combobox/use-combobox-target-props/use-combobox-target-props.cjs +1 -0
  4. package/cjs/components/Combobox/use-combobox-target-props/use-combobox-target-props.cjs.map +1 -1
  5. package/cjs/components/MultiSelect/MultiSelect.cjs +1 -0
  6. package/cjs/components/MultiSelect/MultiSelect.cjs.map +1 -1
  7. package/cjs/components/PasswordInput/PasswordInput.cjs +2 -0
  8. package/cjs/components/PasswordInput/PasswordInput.cjs.map +1 -1
  9. package/cjs/components/Popover/PopoverTarget/PopoverTarget.cjs +2 -2
  10. package/cjs/components/Popover/PopoverTarget/PopoverTarget.cjs.map +1 -1
  11. package/cjs/components/Radio/Radio.cjs +1 -1
  12. package/cjs/components/Radio/Radio.cjs.map +1 -1
  13. package/cjs/components/Select/Select.cjs +7 -6
  14. package/cjs/components/Select/Select.cjs.map +1 -1
  15. package/cjs/components/TagsInput/TagsInput.cjs +1 -0
  16. package/cjs/components/TagsInput/TagsInput.cjs.map +1 -1
  17. package/esm/components/Autocomplete/Autocomplete.mjs +1 -0
  18. package/esm/components/Autocomplete/Autocomplete.mjs.map +1 -1
  19. package/esm/components/Combobox/use-combobox-target-props/use-combobox-target-props.mjs +1 -0
  20. package/esm/components/Combobox/use-combobox-target-props/use-combobox-target-props.mjs.map +1 -1
  21. package/esm/components/MultiSelect/MultiSelect.mjs +1 -0
  22. package/esm/components/MultiSelect/MultiSelect.mjs.map +1 -1
  23. package/esm/components/PasswordInput/PasswordInput.mjs +2 -0
  24. package/esm/components/PasswordInput/PasswordInput.mjs.map +1 -1
  25. package/esm/components/Popover/PopoverTarget/PopoverTarget.mjs +2 -2
  26. package/esm/components/Popover/PopoverTarget/PopoverTarget.mjs.map +1 -1
  27. package/esm/components/Radio/Radio.mjs +1 -1
  28. package/esm/components/Radio/Radio.mjs.map +1 -1
  29. package/esm/components/Select/Select.mjs +7 -6
  30. package/esm/components/Select/Select.mjs.map +1 -1
  31. package/esm/components/TagsInput/TagsInput.mjs +1 -0
  32. package/esm/components/TagsInput/TagsInput.mjs.map +1 -1
  33. package/esm/core/utils/get-env/get-env.mjs +1 -1
  34. package/esm/core/utils/get-env/get-env.mjs.map +1 -1
  35. package/lib/components/Combobox/use-combobox-target-props/use-combobox-target-props.d.ts +0 -16
  36. package/lib/components/Input/InputClearSection/InputClearSection.d.ts +1 -1
  37. package/lib/components/Input/use-input-props.d.ts +18 -18
  38. package/lib/components/Popover/use-popover.d.ts +2 -2
  39. package/lib/core/MantineProvider/color-functions/get-contrast-color/get-contrast-color.d.ts +2 -2
  40. package/package.json +4 -4
  41. package/cjs/components/MaskInput/MaskInput.cjs +0 -24
  42. package/cjs/components/MaskInput/MaskInput.cjs.map +0 -1
  43. package/cjs/components/MaskInput/use-mask-input-props.cjs +0 -29
  44. package/cjs/components/MaskInput/use-mask-input-props.cjs.map +0 -1
  45. package/cjs/components/Pagination/PaginationLabel/PaginationLabel.cjs +0 -33
  46. package/cjs/components/Pagination/PaginationLabel/PaginationLabel.cjs.map +0 -1
  47. package/cjs/components/RollingNumber/DigitColumn.cjs +0 -41
  48. package/cjs/components/RollingNumber/DigitColumn.cjs.map +0 -1
  49. package/cjs/components/RollingNumber/RollingNumber.cjs +0 -100
  50. package/cjs/components/RollingNumber/RollingNumber.cjs.map +0 -1
  51. package/cjs/components/RollingNumber/RollingNumber.module.cjs +0 -12
  52. package/cjs/components/RollingNumber/RollingNumber.module.cjs.map +0 -1
  53. package/cjs/components/RollingNumber/build-value.cjs +0 -22
  54. package/cjs/components/RollingNumber/build-value.cjs.map +0 -1
  55. package/cjs/components/RollingNumber/get-digit-parts.cjs +0 -40
  56. package/cjs/components/RollingNumber/get-digit-parts.cjs.map +0 -1
  57. package/cjs/components/RollingNumber/get-render-slots.cjs +0 -78
  58. package/cjs/components/RollingNumber/get-render-slots.cjs.map +0 -1
  59. package/cjs/components/Tree/FlatTreeNode.cjs +0 -102
  60. package/cjs/components/Tree/FlatTreeNode.cjs.map +0 -1
  61. package/cjs/components/Tree/filter-tree-data/filter-tree-data.cjs +0 -23
  62. package/cjs/components/Tree/filter-tree-data/filter-tree-data.cjs.map +0 -1
  63. package/cjs/components/Tree/flatten-tree-data/flatten-tree-data.cjs +0 -28
  64. package/cjs/components/Tree/flatten-tree-data/flatten-tree-data.cjs.map +0 -1
  65. package/cjs/components/Tree/merge-async-children/merge-async-children.cjs +0 -32
  66. package/cjs/components/Tree/merge-async-children/merge-async-children.cjs.map +0 -1
  67. package/cjs/components/Tree/move-tree-node/move-tree-node.cjs +0 -78
  68. package/cjs/components/Tree/move-tree-node/move-tree-node.cjs.map +0 -1
  69. package/cjs/components/Tree/use-tree-node-drag-drop.cjs +0 -96
  70. package/cjs/components/Tree/use-tree-node-drag-drop.cjs.map +0 -1
  71. package/cjs/components/TreeSelect/TreeSelect.cjs +0 -594
  72. package/cjs/components/TreeSelect/TreeSelect.cjs.map +0 -1
  73. package/cjs/components/TreeSelect/TreeSelect.module.cjs +0 -16
  74. package/cjs/components/TreeSelect/TreeSelect.module.cjs.map +0 -1
  75. package/cjs/components/TreeSelect/TreeSelectOption.cjs +0 -91
  76. package/cjs/components/TreeSelect/TreeSelectOption.cjs.map +0 -1
  77. package/cjs/components/TreeSelect/flatten-tree-select-data.cjs +0 -34
  78. package/cjs/components/TreeSelect/flatten-tree-select-data.cjs.map +0 -1
  79. package/cjs/components/TreeSelect/get-checked-values-by-strategy.cjs +0 -30
  80. package/cjs/components/TreeSelect/get-checked-values-by-strategy.cjs.map +0 -1
  81. package/esm/components/MaskInput/MaskInput.mjs +0 -23
  82. package/esm/components/MaskInput/MaskInput.mjs.map +0 -1
  83. package/esm/components/MaskInput/use-mask-input-props.mjs +0 -28
  84. package/esm/components/MaskInput/use-mask-input-props.mjs.map +0 -1
  85. package/esm/components/Pagination/PaginationLabel/PaginationLabel.mjs +0 -32
  86. package/esm/components/Pagination/PaginationLabel/PaginationLabel.mjs.map +0 -1
  87. package/esm/components/RollingNumber/DigitColumn.mjs +0 -40
  88. package/esm/components/RollingNumber/DigitColumn.mjs.map +0 -1
  89. package/esm/components/RollingNumber/RollingNumber.mjs +0 -99
  90. package/esm/components/RollingNumber/RollingNumber.mjs.map +0 -1
  91. package/esm/components/RollingNumber/RollingNumber.module.mjs +0 -12
  92. package/esm/components/RollingNumber/RollingNumber.module.mjs.map +0 -1
  93. package/esm/components/RollingNumber/build-value.mjs +0 -22
  94. package/esm/components/RollingNumber/build-value.mjs.map +0 -1
  95. package/esm/components/RollingNumber/get-digit-parts.mjs +0 -40
  96. package/esm/components/RollingNumber/get-digit-parts.mjs.map +0 -1
  97. package/esm/components/RollingNumber/get-render-slots.mjs +0 -78
  98. package/esm/components/RollingNumber/get-render-slots.mjs.map +0 -1
  99. package/esm/components/Tree/FlatTreeNode.mjs +0 -101
  100. package/esm/components/Tree/FlatTreeNode.mjs.map +0 -1
  101. package/esm/components/Tree/filter-tree-data/filter-tree-data.mjs +0 -22
  102. package/esm/components/Tree/filter-tree-data/filter-tree-data.mjs.map +0 -1
  103. package/esm/components/Tree/flatten-tree-data/flatten-tree-data.mjs +0 -28
  104. package/esm/components/Tree/flatten-tree-data/flatten-tree-data.mjs.map +0 -1
  105. package/esm/components/Tree/merge-async-children/merge-async-children.mjs +0 -32
  106. package/esm/components/Tree/merge-async-children/merge-async-children.mjs.map +0 -1
  107. package/esm/components/Tree/move-tree-node/move-tree-node.mjs +0 -78
  108. package/esm/components/Tree/move-tree-node/move-tree-node.mjs.map +0 -1
  109. package/esm/components/Tree/use-tree-node-drag-drop.mjs +0 -96
  110. package/esm/components/Tree/use-tree-node-drag-drop.mjs.map +0 -1
  111. package/esm/components/TreeSelect/TreeSelect.mjs +0 -593
  112. package/esm/components/TreeSelect/TreeSelect.mjs.map +0 -1
  113. package/esm/components/TreeSelect/TreeSelect.module.mjs +0 -16
  114. package/esm/components/TreeSelect/TreeSelect.module.mjs.map +0 -1
  115. package/esm/components/TreeSelect/TreeSelectOption.mjs +0 -90
  116. package/esm/components/TreeSelect/TreeSelectOption.mjs.map +0 -1
  117. package/esm/components/TreeSelect/flatten-tree-select-data.mjs +0 -34
  118. package/esm/components/TreeSelect/flatten-tree-select-data.mjs.map +0 -1
  119. package/esm/components/TreeSelect/get-checked-values-by-strategy.mjs +0 -29
  120. package/esm/components/TreeSelect/get-checked-values-by-strategy.mjs.map +0 -1
  121. package/lib/components/MaskInput/MaskInput.d.ts +0 -68
  122. package/lib/components/MaskInput/index.d.ts +0 -7
  123. package/lib/components/MaskInput/use-mask-input-props.d.ts +0 -428
  124. package/lib/components/Pagination/PaginationLabel/PaginationLabel.d.ts +0 -22
  125. package/lib/components/RollingNumber/DigitColumn.d.ts +0 -10
  126. package/lib/components/RollingNumber/RollingNumber.d.ts +0 -39
  127. package/lib/components/RollingNumber/build-value.d.ts +0 -10
  128. package/lib/components/RollingNumber/get-digit-parts.d.ts +0 -12
  129. package/lib/components/RollingNumber/get-render-slots.d.ts +0 -35
  130. package/lib/components/RollingNumber/index.d.ts +0 -9
  131. package/lib/components/Tree/FlatTreeNode.d.ts +0 -34
  132. package/lib/components/Tree/filter-tree-data/filter-tree-data.d.ts +0 -4
  133. package/lib/components/Tree/flatten-tree-data/flatten-tree-data.d.ts +0 -15
  134. package/lib/components/Tree/merge-async-children/merge-async-children.d.ts +0 -2
  135. package/lib/components/Tree/move-tree-node/move-tree-node.d.ts +0 -11
  136. package/lib/components/Tree/use-tree-node-drag-drop.d.ts +0 -18
  137. package/lib/components/TreeSelect/TreeSelect.d.ts +0 -122
  138. package/lib/components/TreeSelect/TreeSelectOption.d.ts +0 -29
  139. package/lib/components/TreeSelect/flatten-tree-select-data.d.ts +0 -12
  140. package/lib/components/TreeSelect/get-checked-values-by-strategy.d.ts +0 -4
  141. package/lib/components/TreeSelect/index.d.ts +0 -13
  142. package/styles/RollingNumber.css +0 -50
  143. package/styles/RollingNumber.layer.css +0 -51
  144. package/styles/TreeSelect.css +0 -113
  145. package/styles/TreeSelect.layer.css +0 -114
@@ -1,96 +0,0 @@
1
- "use client";
2
- const require_get_children_nodes_values = require("./get-children-nodes-values/get-children-nodes-values.cjs");
3
- //#region packages/@mantine/core/src/components/Tree/use-tree-node-drag-drop.ts
4
- function isDescendantOf(data, ancestorValue, descendantValue) {
5
- const ancestor = require_get_children_nodes_values.findTreeNode(ancestorValue, data);
6
- if (!ancestor || !ancestor.children) return false;
7
- function check(nodes) {
8
- for (const node of nodes) {
9
- if (node.value === descendantValue) return true;
10
- if (node.children && check(node.children)) return true;
11
- }
12
- return false;
13
- }
14
- return check(ancestor.children);
15
- }
16
- function getDragDropPosition(event, element, hasChildren) {
17
- const rect = element.getBoundingClientRect();
18
- const y = event.clientY - rect.top;
19
- const height = rect.height;
20
- if (hasChildren) {
21
- if (y < height * .25) return "before";
22
- if (y > height * .75) return "after";
23
- return "inside";
24
- }
25
- if (y < height * .5) return "before";
26
- return "after";
27
- }
28
- const EMPTY_DRAG_PROPS = {};
29
- function useTreeNodeDragDrop({ nodeValue, hasChildren, data, onDragDrop, dragStateRef }) {
30
- if (!onDragDrop) return EMPTY_DRAG_PROPS;
31
- const handleDragStart = (event) => {
32
- event.stopPropagation();
33
- event.dataTransfer.effectAllowed = "move";
34
- event.dataTransfer.setData("text/plain", nodeValue);
35
- dragStateRef.current.draggedValue = nodeValue;
36
- const target = event.currentTarget;
37
- requestAnimationFrame(() => {
38
- target.setAttribute("data-dragging", "true");
39
- });
40
- };
41
- const handleDragOver = (event) => {
42
- const draggedValue = dragStateRef.current.draggedValue;
43
- if (!draggedValue || draggedValue === nodeValue) return;
44
- if (isDescendantOf(data, draggedValue, nodeValue)) return;
45
- event.preventDefault();
46
- event.stopPropagation();
47
- event.dataTransfer.dropEffect = "move";
48
- const target = event.currentTarget;
49
- const position = getDragDropPosition(event, target, hasChildren);
50
- const prevTarget = dragStateRef.current.currentDropTarget;
51
- if (prevTarget && prevTarget !== target) prevTarget.removeAttribute("data-drag-over");
52
- target.setAttribute("data-drag-over", position);
53
- dragStateRef.current.currentDropTarget = target;
54
- };
55
- const handleDragLeave = (event) => {
56
- const target = event.currentTarget;
57
- const related = event.relatedTarget;
58
- if (related && target.contains(related)) return;
59
- target.removeAttribute("data-drag-over");
60
- if (dragStateRef.current.currentDropTarget === target) dragStateRef.current.currentDropTarget = null;
61
- };
62
- const handleDrop = (event) => {
63
- event.preventDefault();
64
- event.stopPropagation();
65
- const target = event.currentTarget;
66
- const position = target.getAttribute("data-drag-over");
67
- target.removeAttribute("data-drag-over");
68
- const draggedValue = dragStateRef.current.draggedValue;
69
- if (draggedValue && position && draggedValue !== nodeValue) onDragDrop({
70
- draggedNode: draggedValue,
71
- targetNode: nodeValue,
72
- position
73
- });
74
- dragStateRef.current.draggedValue = null;
75
- dragStateRef.current.currentDropTarget = null;
76
- };
77
- const handleDragEnd = (event) => {
78
- event.currentTarget.removeAttribute("data-dragging");
79
- const prevTarget = dragStateRef.current.currentDropTarget;
80
- if (prevTarget) prevTarget.removeAttribute("data-drag-over");
81
- dragStateRef.current.draggedValue = null;
82
- dragStateRef.current.currentDropTarget = null;
83
- };
84
- return {
85
- draggable: true,
86
- onDragStart: handleDragStart,
87
- onDragOver: handleDragOver,
88
- onDragLeave: handleDragLeave,
89
- onDrop: handleDrop,
90
- onDragEnd: handleDragEnd
91
- };
92
- }
93
- //#endregion
94
- exports.useTreeNodeDragDrop = useTreeNodeDragDrop;
95
-
96
- //# sourceMappingURL=use-tree-node-drag-drop.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-tree-node-drag-drop.cjs","names":["findTreeNode"],"sources":["../../../src/components/Tree/use-tree-node-drag-drop.ts"],"sourcesContent":["import { findTreeNode } from './get-children-nodes-values/get-children-nodes-values';\nimport type { TreeDragDropPayload, TreeDragDropPosition } from './move-tree-node/move-tree-node';\nimport type { TreeDragState, TreeNodeData } from './Tree';\n\ninterface UseTreeNodeDragDropInput {\n nodeValue: string;\n hasChildren: boolean;\n data: TreeNodeData[];\n onDragDrop: ((payload: TreeDragDropPayload) => void) | undefined;\n dragStateRef: React.RefObject<TreeDragState>;\n}\n\nfunction isDescendantOf(\n data: TreeNodeData[],\n ancestorValue: string,\n descendantValue: string\n): boolean {\n const ancestor = findTreeNode(ancestorValue, data);\n if (!ancestor || !ancestor.children) {\n return false;\n }\n\n function check(nodes: TreeNodeData[]): boolean {\n for (const node of nodes) {\n if (node.value === descendantValue) {\n return true;\n }\n\n if (node.children && check(node.children)) {\n return true;\n }\n }\n\n return false;\n }\n\n return check(ancestor.children);\n}\n\nfunction getDragDropPosition(\n event: React.DragEvent,\n element: HTMLElement,\n hasChildren: boolean\n): TreeDragDropPosition {\n const rect = element.getBoundingClientRect();\n const y = event.clientY - rect.top;\n const height = rect.height;\n\n if (hasChildren) {\n if (y < height * 0.25) {\n return 'before';\n }\n\n if (y > height * 0.75) {\n return 'after';\n }\n\n return 'inside';\n }\n\n if (y < height * 0.5) {\n return 'before';\n }\n\n return 'after';\n}\n\nconst EMPTY_DRAG_PROPS: Record<string, never> = {};\n\nexport function useTreeNodeDragDrop({\n nodeValue,\n hasChildren,\n data,\n onDragDrop,\n dragStateRef,\n}: UseTreeNodeDragDropInput) {\n if (!onDragDrop) {\n return EMPTY_DRAG_PROPS;\n }\n\n const handleDragStart = (event: React.DragEvent) => {\n event.stopPropagation();\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData('text/plain', nodeValue);\n dragStateRef.current.draggedValue = nodeValue;\n\n const target = event.currentTarget as HTMLElement;\n requestAnimationFrame(() => {\n target.setAttribute('data-dragging', 'true');\n });\n };\n\n const handleDragOver = (event: React.DragEvent) => {\n const draggedValue = dragStateRef.current.draggedValue;\n if (!draggedValue || draggedValue === nodeValue) {\n return;\n }\n\n if (isDescendantOf(data, draggedValue, nodeValue)) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n event.dataTransfer.dropEffect = 'move';\n\n const target = event.currentTarget as HTMLElement;\n const position = getDragDropPosition(event, target, hasChildren);\n\n const prevTarget = dragStateRef.current.currentDropTarget;\n if (prevTarget && prevTarget !== target) {\n prevTarget.removeAttribute('data-drag-over');\n }\n\n target.setAttribute('data-drag-over', position);\n dragStateRef.current.currentDropTarget = target;\n };\n\n const handleDragLeave = (event: React.DragEvent) => {\n const target = event.currentTarget as HTMLElement;\n const related = event.relatedTarget as HTMLElement | null;\n\n if (related && target.contains(related)) {\n return;\n }\n\n target.removeAttribute('data-drag-over');\n\n if (dragStateRef.current.currentDropTarget === target) {\n dragStateRef.current.currentDropTarget = null;\n }\n };\n\n const handleDrop = (event: React.DragEvent) => {\n event.preventDefault();\n event.stopPropagation();\n\n const target = event.currentTarget as HTMLElement;\n const position = target.getAttribute('data-drag-over') as TreeDragDropPosition | null;\n target.removeAttribute('data-drag-over');\n\n const draggedValue = dragStateRef.current.draggedValue;\n if (draggedValue && position && draggedValue !== nodeValue) {\n onDragDrop({ draggedNode: draggedValue, targetNode: nodeValue, position });\n }\n\n dragStateRef.current.draggedValue = null;\n dragStateRef.current.currentDropTarget = null;\n };\n\n const handleDragEnd = (event: React.DragEvent) => {\n const target = event.currentTarget as HTMLElement;\n target.removeAttribute('data-dragging');\n\n const prevTarget = dragStateRef.current.currentDropTarget;\n if (prevTarget) {\n prevTarget.removeAttribute('data-drag-over');\n }\n\n dragStateRef.current.draggedValue = null;\n dragStateRef.current.currentDropTarget = null;\n };\n\n return {\n draggable: true as const,\n onDragStart: handleDragStart,\n onDragOver: handleDragOver,\n onDragLeave: handleDragLeave,\n onDrop: handleDrop,\n onDragEnd: handleDragEnd,\n };\n}\n"],"mappings":";;;AAYA,SAAS,eACP,MACA,eACA,iBACS;CACT,MAAM,WAAWA,kCAAAA,aAAa,eAAe,KAAK;AAClD,KAAI,CAAC,YAAY,CAAC,SAAS,SACzB,QAAO;CAGT,SAAS,MAAM,OAAgC;AAC7C,OAAK,MAAM,QAAQ,OAAO;AACxB,OAAI,KAAK,UAAU,gBACjB,QAAO;AAGT,OAAI,KAAK,YAAY,MAAM,KAAK,SAAS,CACvC,QAAO;;AAIX,SAAO;;AAGT,QAAO,MAAM,SAAS,SAAS;;AAGjC,SAAS,oBACP,OACA,SACA,aACsB;CACtB,MAAM,OAAO,QAAQ,uBAAuB;CAC5C,MAAM,IAAI,MAAM,UAAU,KAAK;CAC/B,MAAM,SAAS,KAAK;AAEpB,KAAI,aAAa;AACf,MAAI,IAAI,SAAS,IACf,QAAO;AAGT,MAAI,IAAI,SAAS,IACf,QAAO;AAGT,SAAO;;AAGT,KAAI,IAAI,SAAS,GACf,QAAO;AAGT,QAAO;;AAGT,MAAM,mBAA0C,EAAE;AAElD,SAAgB,oBAAoB,EAClC,WACA,aACA,MACA,YACA,gBAC2B;AAC3B,KAAI,CAAC,WACH,QAAO;CAGT,MAAM,mBAAmB,UAA2B;AAClD,QAAM,iBAAiB;AACvB,QAAM,aAAa,gBAAgB;AACnC,QAAM,aAAa,QAAQ,cAAc,UAAU;AACnD,eAAa,QAAQ,eAAe;EAEpC,MAAM,SAAS,MAAM;AACrB,8BAA4B;AAC1B,UAAO,aAAa,iBAAiB,OAAO;IAC5C;;CAGJ,MAAM,kBAAkB,UAA2B;EACjD,MAAM,eAAe,aAAa,QAAQ;AAC1C,MAAI,CAAC,gBAAgB,iBAAiB,UACpC;AAGF,MAAI,eAAe,MAAM,cAAc,UAAU,CAC/C;AAGF,QAAM,gBAAgB;AACtB,QAAM,iBAAiB;AACvB,QAAM,aAAa,aAAa;EAEhC,MAAM,SAAS,MAAM;EACrB,MAAM,WAAW,oBAAoB,OAAO,QAAQ,YAAY;EAEhE,MAAM,aAAa,aAAa,QAAQ;AACxC,MAAI,cAAc,eAAe,OAC/B,YAAW,gBAAgB,iBAAiB;AAG9C,SAAO,aAAa,kBAAkB,SAAS;AAC/C,eAAa,QAAQ,oBAAoB;;CAG3C,MAAM,mBAAmB,UAA2B;EAClD,MAAM,SAAS,MAAM;EACrB,MAAM,UAAU,MAAM;AAEtB,MAAI,WAAW,OAAO,SAAS,QAAQ,CACrC;AAGF,SAAO,gBAAgB,iBAAiB;AAExC,MAAI,aAAa,QAAQ,sBAAsB,OAC7C,cAAa,QAAQ,oBAAoB;;CAI7C,MAAM,cAAc,UAA2B;AAC7C,QAAM,gBAAgB;AACtB,QAAM,iBAAiB;EAEvB,MAAM,SAAS,MAAM;EACrB,MAAM,WAAW,OAAO,aAAa,iBAAiB;AACtD,SAAO,gBAAgB,iBAAiB;EAExC,MAAM,eAAe,aAAa,QAAQ;AAC1C,MAAI,gBAAgB,YAAY,iBAAiB,UAC/C,YAAW;GAAE,aAAa;GAAc,YAAY;GAAW;GAAU,CAAC;AAG5E,eAAa,QAAQ,eAAe;AACpC,eAAa,QAAQ,oBAAoB;;CAG3C,MAAM,iBAAiB,UAA2B;AACjC,QAAM,cACd,gBAAgB,gBAAgB;EAEvC,MAAM,aAAa,aAAa,QAAQ;AACxC,MAAI,WACF,YAAW,gBAAgB,iBAAiB;AAG9C,eAAa,QAAQ,eAAe;AACpC,eAAa,QAAQ,oBAAoB;;AAG3C,QAAO;EACL,WAAW;EACX,aAAa;EACb,YAAY;EACZ,aAAa;EACb,QAAQ;EACR,WAAW;EACZ"}