@raqm/ui 0.0.0-stage → 0.1.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 (178) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/LICENSE +21 -0
  3. package/NOTICE.md +28 -0
  4. package/README.md +125 -3
  5. package/combobox/README.md +17 -0
  6. package/fesm2022/raqm-ui-accordion.mjs +414 -0
  7. package/fesm2022/raqm-ui-accordion.mjs.map +1 -0
  8. package/fesm2022/raqm-ui-alert-dialog.mjs +457 -0
  9. package/fesm2022/raqm-ui-alert-dialog.mjs.map +1 -0
  10. package/fesm2022/raqm-ui-alert.mjs +195 -0
  11. package/fesm2022/raqm-ui-alert.mjs.map +1 -0
  12. package/fesm2022/raqm-ui-aspect-ratio.mjs +66 -0
  13. package/fesm2022/raqm-ui-aspect-ratio.mjs.map +1 -0
  14. package/fesm2022/raqm-ui-attachment.mjs +435 -0
  15. package/fesm2022/raqm-ui-attachment.mjs.map +1 -0
  16. package/fesm2022/raqm-ui-avatar.mjs +337 -0
  17. package/fesm2022/raqm-ui-avatar.mjs.map +1 -0
  18. package/fesm2022/raqm-ui-badge.mjs +68 -0
  19. package/fesm2022/raqm-ui-badge.mjs.map +1 -0
  20. package/fesm2022/raqm-ui-breadcrumb.mjs +309 -0
  21. package/fesm2022/raqm-ui-breadcrumb.mjs.map +1 -0
  22. package/fesm2022/raqm-ui-button-group.mjs +138 -0
  23. package/fesm2022/raqm-ui-button-group.mjs.map +1 -0
  24. package/fesm2022/raqm-ui-button.mjs +295 -0
  25. package/fesm2022/raqm-ui-button.mjs.map +1 -0
  26. package/fesm2022/raqm-ui-calendar.mjs +1394 -0
  27. package/fesm2022/raqm-ui-calendar.mjs.map +1 -0
  28. package/fesm2022/raqm-ui-card.mjs +331 -0
  29. package/fesm2022/raqm-ui-card.mjs.map +1 -0
  30. package/fesm2022/raqm-ui-carousel.mjs +410 -0
  31. package/fesm2022/raqm-ui-carousel.mjs.map +1 -0
  32. package/fesm2022/raqm-ui-checkbox.mjs +86 -0
  33. package/fesm2022/raqm-ui-checkbox.mjs.map +1 -0
  34. package/fesm2022/raqm-ui-collapsible.mjs +266 -0
  35. package/fesm2022/raqm-ui-collapsible.mjs.map +1 -0
  36. package/fesm2022/raqm-ui-combobox.mjs +1584 -0
  37. package/fesm2022/raqm-ui-combobox.mjs.map +1 -0
  38. package/fesm2022/raqm-ui-command.mjs +1210 -0
  39. package/fesm2022/raqm-ui-command.mjs.map +1 -0
  40. package/fesm2022/raqm-ui-context-menu.mjs +723 -0
  41. package/fesm2022/raqm-ui-context-menu.mjs.map +1 -0
  42. package/fesm2022/raqm-ui-dialog.mjs +1214 -0
  43. package/fesm2022/raqm-ui-dialog.mjs.map +1 -0
  44. package/fesm2022/raqm-ui-drawer.mjs +687 -0
  45. package/fesm2022/raqm-ui-drawer.mjs.map +1 -0
  46. package/fesm2022/raqm-ui-dropdown-menu.mjs +1168 -0
  47. package/fesm2022/raqm-ui-dropdown-menu.mjs.map +1 -0
  48. package/fesm2022/raqm-ui-empty.mjs +272 -0
  49. package/fesm2022/raqm-ui-empty.mjs.map +1 -0
  50. package/fesm2022/raqm-ui-field.mjs +517 -0
  51. package/fesm2022/raqm-ui-field.mjs.map +1 -0
  52. package/fesm2022/raqm-ui-hover-card.mjs +828 -0
  53. package/fesm2022/raqm-ui-hover-card.mjs.map +1 -0
  54. package/fesm2022/raqm-ui-input-group.mjs +270 -0
  55. package/fesm2022/raqm-ui-input-group.mjs.map +1 -0
  56. package/fesm2022/raqm-ui-input-otp.mjs +788 -0
  57. package/fesm2022/raqm-ui-input-otp.mjs.map +1 -0
  58. package/fesm2022/raqm-ui-input.mjs +73 -0
  59. package/fesm2022/raqm-ui-input.mjs.map +1 -0
  60. package/fesm2022/raqm-ui-item.mjs +495 -0
  61. package/fesm2022/raqm-ui-item.mjs.map +1 -0
  62. package/fesm2022/raqm-ui-kbd.mjs +80 -0
  63. package/fesm2022/raqm-ui-kbd.mjs.map +1 -0
  64. package/fesm2022/raqm-ui-label.mjs +44 -0
  65. package/fesm2022/raqm-ui-label.mjs.map +1 -0
  66. package/fesm2022/raqm-ui-menubar.mjs +536 -0
  67. package/fesm2022/raqm-ui-menubar.mjs.map +1 -0
  68. package/fesm2022/raqm-ui-native-select.mjs +131 -0
  69. package/fesm2022/raqm-ui-native-select.mjs.map +1 -0
  70. package/fesm2022/raqm-ui-navigation-menu.mjs +1399 -0
  71. package/fesm2022/raqm-ui-navigation-menu.mjs.map +1 -0
  72. package/fesm2022/raqm-ui-overlay-internal.mjs +185 -0
  73. package/fesm2022/raqm-ui-overlay-internal.mjs.map +1 -0
  74. package/fesm2022/raqm-ui-pagination.mjs +440 -0
  75. package/fesm2022/raqm-ui-pagination.mjs.map +1 -0
  76. package/fesm2022/raqm-ui-popover.mjs +1495 -0
  77. package/fesm2022/raqm-ui-popover.mjs.map +1 -0
  78. package/fesm2022/raqm-ui-progress.mjs +369 -0
  79. package/fesm2022/raqm-ui-progress.mjs.map +1 -0
  80. package/fesm2022/raqm-ui-questionnaire.mjs +1005 -0
  81. package/fesm2022/raqm-ui-questionnaire.mjs.map +1 -0
  82. package/fesm2022/raqm-ui-radio-group.mjs +151 -0
  83. package/fesm2022/raqm-ui-radio-group.mjs.map +1 -0
  84. package/fesm2022/raqm-ui-resizable.mjs +439 -0
  85. package/fesm2022/raqm-ui-resizable.mjs.map +1 -0
  86. package/fesm2022/raqm-ui-scroll-area.mjs +510 -0
  87. package/fesm2022/raqm-ui-scroll-area.mjs.map +1 -0
  88. package/fesm2022/raqm-ui-select.mjs +1073 -0
  89. package/fesm2022/raqm-ui-select.mjs.map +1 -0
  90. package/fesm2022/raqm-ui-separator.mjs +103 -0
  91. package/fesm2022/raqm-ui-separator.mjs.map +1 -0
  92. package/fesm2022/raqm-ui-sheet.mjs +411 -0
  93. package/fesm2022/raqm-ui-sheet.mjs.map +1 -0
  94. package/fesm2022/raqm-ui-sidebar.mjs +1784 -0
  95. package/fesm2022/raqm-ui-sidebar.mjs.map +1 -0
  96. package/fesm2022/raqm-ui-skeleton.mjs +50 -0
  97. package/fesm2022/raqm-ui-skeleton.mjs.map +1 -0
  98. package/fesm2022/raqm-ui-slider.mjs +609 -0
  99. package/fesm2022/raqm-ui-slider.mjs.map +1 -0
  100. package/fesm2022/raqm-ui-spinner.mjs +137 -0
  101. package/fesm2022/raqm-ui-spinner.mjs.map +1 -0
  102. package/fesm2022/raqm-ui-switch.mjs +109 -0
  103. package/fesm2022/raqm-ui-switch.mjs.map +1 -0
  104. package/fesm2022/raqm-ui-table.mjs +271 -0
  105. package/fesm2022/raqm-ui-table.mjs.map +1 -0
  106. package/fesm2022/raqm-ui-tabs.mjs +536 -0
  107. package/fesm2022/raqm-ui-tabs.mjs.map +1 -0
  108. package/fesm2022/raqm-ui-textarea.mjs +37 -0
  109. package/fesm2022/raqm-ui-textarea.mjs.map +1 -0
  110. package/fesm2022/raqm-ui-toast.mjs +918 -0
  111. package/fesm2022/raqm-ui-toast.mjs.map +1 -0
  112. package/fesm2022/raqm-ui-toggle-group.mjs +462 -0
  113. package/fesm2022/raqm-ui-toggle-group.mjs.map +1 -0
  114. package/fesm2022/raqm-ui-toggle.mjs +158 -0
  115. package/fesm2022/raqm-ui-toggle.mjs.map +1 -0
  116. package/fesm2022/raqm-ui-tooltip.mjs +1226 -0
  117. package/fesm2022/raqm-ui-tooltip.mjs.map +1 -0
  118. package/fesm2022/raqm-ui.mjs +50 -0
  119. package/input-otp/README.md +12 -0
  120. package/package.json +275 -3
  121. package/styles/theme.css +4322 -0
  122. package/types/raqm-ui-accordion.d.ts +124 -0
  123. package/types/raqm-ui-alert-dialog.d.ts +81 -0
  124. package/types/raqm-ui-alert.d.ts +29 -0
  125. package/types/raqm-ui-aspect-ratio.d.ts +13 -0
  126. package/types/raqm-ui-attachment.d.ts +72 -0
  127. package/types/raqm-ui-avatar.d.ts +67 -0
  128. package/types/raqm-ui-badge.d.ts +20 -0
  129. package/types/raqm-ui-breadcrumb.d.ts +35 -0
  130. package/types/raqm-ui-button-group.d.ts +27 -0
  131. package/types/raqm-ui-button.d.ts +80 -0
  132. package/types/raqm-ui-calendar.d.ts +359 -0
  133. package/types/raqm-ui-card.d.ts +34 -0
  134. package/types/raqm-ui-carousel.d.ts +81 -0
  135. package/types/raqm-ui-checkbox.d.ts +24 -0
  136. package/types/raqm-ui-collapsible.d.ts +72 -0
  137. package/types/raqm-ui-combobox.d.ts +405 -0
  138. package/types/raqm-ui-command.d.ts +256 -0
  139. package/types/raqm-ui-context-menu.d.ts +196 -0
  140. package/types/raqm-ui-dialog.d.ts +232 -0
  141. package/types/raqm-ui-drawer.d.ts +121 -0
  142. package/types/raqm-ui-dropdown-menu.d.ts +319 -0
  143. package/types/raqm-ui-empty.d.ts +35 -0
  144. package/types/raqm-ui-field.d.ts +88 -0
  145. package/types/raqm-ui-hover-card.d.ts +139 -0
  146. package/types/raqm-ui-input-group.d.ts +45 -0
  147. package/types/raqm-ui-input-otp.d.ts +197 -0
  148. package/types/raqm-ui-input.d.ts +16 -0
  149. package/types/raqm-ui-item.d.ts +71 -0
  150. package/types/raqm-ui-kbd.d.ts +12 -0
  151. package/types/raqm-ui-label.d.ts +6 -0
  152. package/types/raqm-ui-menubar.d.ts +159 -0
  153. package/types/raqm-ui-native-select.d.ts +23 -0
  154. package/types/raqm-ui-navigation-menu.d.ts +230 -0
  155. package/types/raqm-ui-overlay-internal.d.ts +5 -0
  156. package/types/raqm-ui-pagination.d.ts +84 -0
  157. package/types/raqm-ui-popover.d.ts +235 -0
  158. package/types/raqm-ui-progress.d.ts +79 -0
  159. package/types/raqm-ui-questionnaire.d.ts +217 -0
  160. package/types/raqm-ui-radio-group.d.ts +48 -0
  161. package/types/raqm-ui-resizable.d.ts +98 -0
  162. package/types/raqm-ui-scroll-area.d.ts +132 -0
  163. package/types/raqm-ui-select.d.ts +205 -0
  164. package/types/raqm-ui-separator.d.ts +21 -0
  165. package/types/raqm-ui-sheet.d.ts +79 -0
  166. package/types/raqm-ui-sidebar.d.ts +285 -0
  167. package/types/raqm-ui-skeleton.d.ts +6 -0
  168. package/types/raqm-ui-slider.d.ts +129 -0
  169. package/types/raqm-ui-spinner.d.ts +32 -0
  170. package/types/raqm-ui-switch.d.ts +32 -0
  171. package/types/raqm-ui-table.d.ts +36 -0
  172. package/types/raqm-ui-tabs.d.ts +154 -0
  173. package/types/raqm-ui-textarea.d.ts +6 -0
  174. package/types/raqm-ui-toast.d.ts +190 -0
  175. package/types/raqm-ui-toggle-group.d.ts +167 -0
  176. package/types/raqm-ui-toggle.d.ts +42 -0
  177. package/types/raqm-ui-tooltip.d.ts +207 -0
  178. package/types/raqm-ui.d.ts +50 -0
@@ -0,0 +1,439 @@
1
+ import * as i0 from "@angular/core";
2
+ import { ChangeDetectionStrategy, Component, DestroyRef, Directive, ElementRef, booleanAttribute, computed, contentChildren, inject, input, signal } from "@angular/core";
3
+ import { _IdGenerator } from "@angular/cdk/a11y";
4
+ var RaqmResizablePanelGroupComponent = class RaqmResizablePanelGroupComponent {
5
+ vertical = input(false, {
6
+ ...ngDevMode ? { debugName: "vertical" } : /* istanbul ignore next */ {},
7
+ transform: booleanAttribute
8
+ });
9
+ defaultSize = input(50, ...ngDevMode ? [{ debugName: "defaultSize" }] : /* istanbul ignore next */ []);
10
+ minSize = input(10, ...ngDevMode ? [{ debugName: "minSize" }] : /* istanbul ignore next */ []);
11
+ maxSize = input(90, ...ngDevMode ? [{ debugName: "maxSize" }] : /* istanbul ignore next */ []);
12
+ element = inject(ElementRef);
13
+ panels = contentChildren(RaqmResizablePanelDirective, ...ngDevMode ? [{ debugName: "panels" }] : /* istanbul ignore next */ []);
14
+ handles = contentChildren(RaqmResizableHandleDirective, ...ngDevMode ? [{ debugName: "handles" }] : /* istanbul ignore next */ []);
15
+ changed = signal(/* @__PURE__ */ new Map(), ...ngDevMode ? [{ debugName: "changed" }] : /* istanbul ignore next */ []);
16
+ sizes = computed(() => {
17
+ const panels = this.panels();
18
+ const changes = this.changed();
19
+ if (!panels.length) return [];
20
+ const explicit = panels.map((p) => p.defaultSize());
21
+ const missing = explicit.filter((x) => x === void 0).length;
22
+ const remaining = Math.max(0, 100 - explicit.reduce((a, b) => a + (b ?? 0), 0));
23
+ let initial = explicit.map((v) => v ?? (missing ? remaining / missing : 0));
24
+ if (panels.every((p) => changes.has(p))) initial = panels.map((p) => changes.get(p));
25
+ else if (panels.length === 2 && explicit.every((v) => v === void 0)) initial = [this.defaultSize(), 100 - this.defaultSize()];
26
+ const mins = panels.map((p, i) => Math.max(0, p.minSize() ?? (panels.length === 2 && i === 0 ? this.minSize() : 0)));
27
+ const maxs = panels.map((p, i) => Math.min(100, p.maxSize() ?? (panels.length === 2 && i === 0 ? this.maxSize() : 100)));
28
+ const values = initial.map((v, i) => Math.min(maxs[i], Math.max(mins[i], Number.isFinite(v) ? v : 0)));
29
+ let remainingSize = 100 - values.reduce((a, b) => a + b, 0);
30
+ for (let i = 0; i < values.length && Math.abs(remainingSize) > 1e-6; i++) {
31
+ const change = remainingSize > 0 ? Math.min(remainingSize, maxs[i] - values[i]) : Math.max(remainingSize, mins[i] - values[i]);
32
+ values[i] += change;
33
+ remainingSize -= change;
34
+ }
35
+ return values;
36
+ }, ...ngDevMode ? [{ debugName: "sizes" }] : /* istanbul ignore next */ []);
37
+ panelIndex(panel) {
38
+ return this.panels().indexOf(panel);
39
+ }
40
+ handleIndex(handle) {
41
+ return this.handles().indexOf(handle);
42
+ }
43
+ bounds(index) {
44
+ const panels = this.panels(), sizes = this.sizes(), left = panels[index], right = panels[index + 1];
45
+ if (!left || !right) return {
46
+ min: 0,
47
+ max: 0
48
+ };
49
+ const total = sizes[index] + sizes[index + 1];
50
+ const legacy = panels.length === 2;
51
+ const leftMin = left.minSize() ?? (legacy ? this.minSize() : 0);
52
+ const leftMax = left.maxSize() ?? (legacy ? this.maxSize() : 100);
53
+ const rightMin = right.minSize() ?? 0;
54
+ const rightMax = right.maxSize() ?? 100;
55
+ return {
56
+ min: Math.max(0, leftMin, total - rightMax),
57
+ max: Math.min(total, leftMax, total - rightMin)
58
+ };
59
+ }
60
+ resize(index, value) {
61
+ const panels = this.panels(), sizes = this.sizes(), bounds = this.bounds(index);
62
+ if (!panels[index] || !panels[index + 1] || bounds.min > bounds.max || !Number.isFinite(value)) return;
63
+ const next = Math.min(bounds.max, Math.max(bounds.min, value));
64
+ const total = sizes[index] + sizes[index + 1];
65
+ const values = new Map(panels.map((panel, i) => [panel, sizes[i]]));
66
+ values.set(panels[index], next);
67
+ values.set(panels[index + 1], total - next);
68
+ this.changed.set(values);
69
+ }
70
+ static ɵfac = i0.ɵɵngDeclareFactory({
71
+ minVersion: "12.0.0",
72
+ version: "22.2.2",
73
+ ngImport: i0,
74
+ type: RaqmResizablePanelGroupComponent,
75
+ deps: [],
76
+ target: i0.ɵɵFactoryTarget.Component
77
+ });
78
+ static ɵcmp = i0.ɵɵngDeclareComponent({
79
+ minVersion: "17.2.0",
80
+ version: "22.2.2",
81
+ type: RaqmResizablePanelGroupComponent,
82
+ isStandalone: true,
83
+ selector: "raqm-resizable-panel-group",
84
+ inputs: {
85
+ vertical: {
86
+ classPropertyName: "vertical",
87
+ publicName: "vertical",
88
+ isSignal: true,
89
+ isRequired: false,
90
+ transformFunction: null
91
+ },
92
+ defaultSize: {
93
+ classPropertyName: "defaultSize",
94
+ publicName: "defaultSize",
95
+ isSignal: true,
96
+ isRequired: false,
97
+ transformFunction: null
98
+ },
99
+ minSize: {
100
+ classPropertyName: "minSize",
101
+ publicName: "minSize",
102
+ isSignal: true,
103
+ isRequired: false,
104
+ transformFunction: null
105
+ },
106
+ maxSize: {
107
+ classPropertyName: "maxSize",
108
+ publicName: "maxSize",
109
+ isSignal: true,
110
+ isRequired: false,
111
+ transformFunction: null
112
+ }
113
+ },
114
+ host: {
115
+ properties: { "attr.data-raqm-vertical": "vertical() ? \"\" : null" },
116
+ classAttribute: "raqm-resizable-panel-group"
117
+ },
118
+ queries: [{
119
+ propertyName: "panels",
120
+ predicate: RaqmResizablePanelDirective,
121
+ isSignal: true
122
+ }, {
123
+ propertyName: "handles",
124
+ predicate: RaqmResizableHandleDirective,
125
+ isSignal: true
126
+ }],
127
+ ngImport: i0,
128
+ template: "<ng-content />",
129
+ isInline: true,
130
+ styles: [":host{display:flex;inline-size:100%;block-size:100%;min-inline-size:0;min-block-size:0}:host([data-raqm-vertical]){flex-direction:column}\n"],
131
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
132
+ });
133
+ };
134
+ i0.ɵɵngDeclareClassMetadata({
135
+ minVersion: "12.0.0",
136
+ version: "22.2.2",
137
+ ngImport: i0,
138
+ type: RaqmResizablePanelGroupComponent,
139
+ decorators: [{
140
+ type: Component,
141
+ args: [{
142
+ selector: "raqm-resizable-panel-group",
143
+ template: "<ng-content />",
144
+ changeDetection: ChangeDetectionStrategy.OnPush,
145
+ host: {
146
+ class: "raqm-resizable-panel-group",
147
+ "[attr.data-raqm-vertical]": "vertical() ? \"\" : null"
148
+ },
149
+ styles: [":host{display:flex;inline-size:100%;block-size:100%;min-inline-size:0;min-block-size:0}:host([data-raqm-vertical]){flex-direction:column}\n"]
150
+ }]
151
+ }],
152
+ propDecorators: {
153
+ vertical: [{
154
+ type: i0.Input,
155
+ args: [{
156
+ isSignal: true,
157
+ alias: "vertical",
158
+ required: false
159
+ }]
160
+ }],
161
+ defaultSize: [{
162
+ type: i0.Input,
163
+ args: [{
164
+ isSignal: true,
165
+ alias: "defaultSize",
166
+ required: false
167
+ }]
168
+ }],
169
+ minSize: [{
170
+ type: i0.Input,
171
+ args: [{
172
+ isSignal: true,
173
+ alias: "minSize",
174
+ required: false
175
+ }]
176
+ }],
177
+ maxSize: [{
178
+ type: i0.Input,
179
+ args: [{
180
+ isSignal: true,
181
+ alias: "maxSize",
182
+ required: false
183
+ }]
184
+ }],
185
+ panels: [{
186
+ type: i0.ContentChildren,
187
+ args: [i0.forwardRef(() => RaqmResizablePanelDirective), { isSignal: true }]
188
+ }],
189
+ handles: [{
190
+ type: i0.ContentChildren,
191
+ args: [i0.forwardRef(() => RaqmResizableHandleDirective), { isSignal: true }]
192
+ }]
193
+ }
194
+ });
195
+ var RaqmResizablePanelDirective = class RaqmResizablePanelDirective {
196
+ group = inject(RaqmResizablePanelGroupComponent);
197
+ id = inject(_IdGenerator).getId("raqm-resizable-panel-");
198
+ defaultSize = input(void 0, ...ngDevMode ? [{ debugName: "defaultSize" }] : /* istanbul ignore next */ []);
199
+ minSize = input(void 0, ...ngDevMode ? [{ debugName: "minSize" }] : /* istanbul ignore next */ []);
200
+ maxSize = input(void 0, ...ngDevMode ? [{ debugName: "maxSize" }] : /* istanbul ignore next */ []);
201
+ basis = computed(() => this.group.sizes()[this.group.panelIndex(this)] ?? 0, ...ngDevMode ? [{ debugName: "basis" }] : /* istanbul ignore next */ []);
202
+ static ɵfac = i0.ɵɵngDeclareFactory({
203
+ minVersion: "12.0.0",
204
+ version: "22.2.2",
205
+ ngImport: i0,
206
+ type: RaqmResizablePanelDirective,
207
+ deps: [],
208
+ target: i0.ɵɵFactoryTarget.Directive
209
+ });
210
+ static ɵdir = i0.ɵɵngDeclareDirective({
211
+ minVersion: "17.1.0",
212
+ version: "22.2.2",
213
+ type: RaqmResizablePanelDirective,
214
+ isStandalone: true,
215
+ selector: "[raqm-resizable-panel]",
216
+ inputs: {
217
+ defaultSize: {
218
+ classPropertyName: "defaultSize",
219
+ publicName: "defaultSize",
220
+ isSignal: true,
221
+ isRequired: false,
222
+ transformFunction: null
223
+ },
224
+ minSize: {
225
+ classPropertyName: "minSize",
226
+ publicName: "minSize",
227
+ isSignal: true,
228
+ isRequired: false,
229
+ transformFunction: null
230
+ },
231
+ maxSize: {
232
+ classPropertyName: "maxSize",
233
+ publicName: "maxSize",
234
+ isSignal: true,
235
+ isRequired: false,
236
+ transformFunction: null
237
+ }
238
+ },
239
+ host: {
240
+ properties: {
241
+ "style.flex-basis.%": "basis()",
242
+ "style.flex-grow": "0",
243
+ "id": "id"
244
+ },
245
+ classAttribute: "raqm-resizable-panel"
246
+ },
247
+ ngImport: i0
248
+ });
249
+ };
250
+ i0.ɵɵngDeclareClassMetadata({
251
+ minVersion: "12.0.0",
252
+ version: "22.2.2",
253
+ ngImport: i0,
254
+ type: RaqmResizablePanelDirective,
255
+ decorators: [{
256
+ type: Directive,
257
+ args: [{
258
+ selector: "[raqm-resizable-panel]",
259
+ host: {
260
+ class: "raqm-resizable-panel",
261
+ "[style.flex-basis.%]": "basis()",
262
+ "[style.flex-grow]": "0",
263
+ "[id]": "id"
264
+ }
265
+ }]
266
+ }],
267
+ propDecorators: {
268
+ defaultSize: [{
269
+ type: i0.Input,
270
+ args: [{
271
+ isSignal: true,
272
+ alias: "defaultSize",
273
+ required: false
274
+ }]
275
+ }],
276
+ minSize: [{
277
+ type: i0.Input,
278
+ args: [{
279
+ isSignal: true,
280
+ alias: "minSize",
281
+ required: false
282
+ }]
283
+ }],
284
+ maxSize: [{
285
+ type: i0.Input,
286
+ args: [{
287
+ isSignal: true,
288
+ alias: "maxSize",
289
+ required: false
290
+ }]
291
+ }]
292
+ }
293
+ });
294
+ var RaqmResizableHandleDirective = class RaqmResizableHandleDirective {
295
+ withHandle = input(false, {
296
+ ...ngDevMode ? { debugName: "withHandle" } : /* istanbul ignore next */ {},
297
+ transform: booleanAttribute
298
+ });
299
+ group = inject(RaqmResizablePanelGroupComponent);
300
+ index = computed(() => this.group.handleIndex(this), ...ngDevMode ? [{ debugName: "index" }] : /* istanbul ignore next */ []);
301
+ value = computed(() => this.group.sizes()[this.index()] ?? 0, ...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
302
+ bounds = computed(() => this.group.bounds(this.index()), ...ngDevMode ? [{ debugName: "bounds" }] : /* istanbul ignore next */ []);
303
+ element = inject(ElementRef);
304
+ destroy = inject(DestroyRef);
305
+ cleanup;
306
+ constructor() {
307
+ this.destroy.onDestroy(() => this.cleanup?.());
308
+ }
309
+ onKey(event) {
310
+ const horizontal = !this.group.vertical();
311
+ const rtl = getComputedStyle(this.group.element.nativeElement).direction === "rtl";
312
+ let delta = 0;
313
+ if (horizontal && event.key === "ArrowRight") delta = rtl ? -1 : 1;
314
+ if (horizontal && event.key === "ArrowLeft") delta = rtl ? 1 : -1;
315
+ if (!horizontal && event.key === "ArrowDown") delta = 1;
316
+ if (!horizontal && event.key === "ArrowUp") delta = -1;
317
+ if (event.key === "Home" || event.key === "End") {
318
+ event.preventDefault();
319
+ this.group.resize(this.index(), event.key === "Home" ? this.bounds().min : this.bounds().max);
320
+ } else if (delta) {
321
+ event.preventDefault();
322
+ this.group.resize(this.index(), this.value() + delta * (event.shiftKey ? 10 : 1));
323
+ }
324
+ }
325
+ onPointer(event) {
326
+ if (event.button !== 0) return;
327
+ event.preventDefault();
328
+ this.cleanup?.();
329
+ const handle = this.element.nativeElement;
330
+ const horizontal = !this.group.vertical();
331
+ const rect = this.group.element.nativeElement.getBoundingClientRect();
332
+ const rtl = horizontal && getComputedStyle(this.group.element.nativeElement).direction === "rtl";
333
+ const start = horizontal ? event.clientX : event.clientY;
334
+ const initialSize = this.value();
335
+ const move = (e) => {
336
+ const distance = (horizontal ? e.clientX : e.clientY) - start;
337
+ const length = horizontal ? rect.width : rect.height;
338
+ if (length) this.group.resize(this.index(), initialSize + (rtl ? -distance : distance) / length * 100);
339
+ };
340
+ const end = () => this.cleanup?.();
341
+ this.cleanup = () => {
342
+ handle.removeEventListener("pointermove", move);
343
+ handle.removeEventListener("pointerup", end);
344
+ handle.removeEventListener("pointercancel", end);
345
+ handle.removeEventListener("lostpointercapture", end);
346
+ if (handle.hasPointerCapture(event.pointerId)) handle.releasePointerCapture(event.pointerId);
347
+ this.cleanup = void 0;
348
+ };
349
+ handle.setPointerCapture(event.pointerId);
350
+ handle.addEventListener("pointermove", move);
351
+ handle.addEventListener("pointerup", end);
352
+ handle.addEventListener("pointercancel", end);
353
+ handle.addEventListener("lostpointercapture", end);
354
+ }
355
+ static ɵfac = i0.ɵɵngDeclareFactory({
356
+ minVersion: "12.0.0",
357
+ version: "22.2.2",
358
+ ngImport: i0,
359
+ type: RaqmResizableHandleDirective,
360
+ deps: [],
361
+ target: i0.ɵɵFactoryTarget.Directive
362
+ });
363
+ static ɵdir = i0.ɵɵngDeclareDirective({
364
+ minVersion: "17.1.0",
365
+ version: "22.2.2",
366
+ type: RaqmResizableHandleDirective,
367
+ isStandalone: true,
368
+ selector: "[raqm-resizable-handle]",
369
+ inputs: { withHandle: {
370
+ classPropertyName: "withHandle",
371
+ publicName: "withHandle",
372
+ isSignal: true,
373
+ isRequired: false,
374
+ transformFunction: null
375
+ } },
376
+ host: {
377
+ attributes: {
378
+ "role": "separator",
379
+ "tabindex": "0"
380
+ },
381
+ listeners: {
382
+ "keydown": "onKey($event)",
383
+ "pointerdown": "onPointer($event)"
384
+ },
385
+ properties: {
386
+ "attr.data-raqm-with-handle": "withHandle() ? \"\" : null",
387
+ "attr.aria-orientation": "group.vertical() ? \"horizontal\" : \"vertical\"",
388
+ "attr.aria-valuenow": "value()",
389
+ "attr.aria-valuemin": "bounds().min",
390
+ "attr.aria-valuemax": "bounds().max",
391
+ "attr.aria-controls": "group.panels()[index()]?.id ?? null"
392
+ },
393
+ classAttribute: "raqm-resizable-handle"
394
+ },
395
+ ngImport: i0
396
+ });
397
+ };
398
+ i0.ɵɵngDeclareClassMetadata({
399
+ minVersion: "12.0.0",
400
+ version: "22.2.2",
401
+ ngImport: i0,
402
+ type: RaqmResizableHandleDirective,
403
+ decorators: [{
404
+ type: Directive,
405
+ args: [{
406
+ selector: "[raqm-resizable-handle]",
407
+ host: {
408
+ class: "raqm-resizable-handle",
409
+ role: "separator",
410
+ tabindex: "0",
411
+ "[attr.data-raqm-with-handle]": "withHandle() ? \"\" : null",
412
+ "[attr.aria-orientation]": "group.vertical() ? \"horizontal\" : \"vertical\"",
413
+ "[attr.aria-valuenow]": "value()",
414
+ "[attr.aria-valuemin]": "bounds().min",
415
+ "[attr.aria-valuemax]": "bounds().max",
416
+ "[attr.aria-controls]": "group.panels()[index()]?.id ?? null",
417
+ "(keydown)": "onKey($event)",
418
+ "(pointerdown)": "onPointer($event)"
419
+ }
420
+ }]
421
+ }],
422
+ ctorParameters: () => [],
423
+ propDecorators: { withHandle: [{
424
+ type: i0.Input,
425
+ args: [{
426
+ isSignal: true,
427
+ alias: "withHandle",
428
+ required: false
429
+ }]
430
+ }] }
431
+ });
432
+ const RaqmResizable = [
433
+ RaqmResizablePanelGroupComponent,
434
+ RaqmResizablePanelDirective,
435
+ RaqmResizableHandleDirective
436
+ ];
437
+ export { RaqmResizable, RaqmResizableHandleDirective, RaqmResizablePanelDirective, RaqmResizablePanelGroupComponent };
438
+
439
+ //# sourceMappingURL=raqm-ui-resizable.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raqm-ui-resizable.mjs","names":[],"sources":["../../../projects/ui/resizable/resizable.ts","../../../projects/ui/resizable/public-api.ts"],"sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n Directive,\r\n ElementRef,\r\n booleanAttribute,\r\n computed,\r\n contentChildren,\r\n inject,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { _IdGenerator } from '@angular/cdk/a11y';\r\n\r\n/** Raqm resizable panel group — percentage-based panels with a draggable divider; the app supplies every accessible name. */\r\n@Component({\r\n selector: 'raqm-resizable-panel-group',\r\n template: '<ng-content />',\r\n styleUrl: './resizable.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'raqm-resizable-panel-group',\r\n '[attr.data-raqm-vertical]': 'vertical() ? \"\" : null',\r\n },\r\n})\r\nexport class RaqmResizablePanelGroupComponent {\r\n /** A horizontal row by default; a bare `vertical` attribute makes a column. */\r\n readonly vertical = input(false, { transform: booleanAttribute });\r\n readonly defaultSize = input(50);\r\n readonly minSize = input(10);\r\n readonly maxSize = input(90);\r\n readonly element = inject(ElementRef<HTMLElement>);\r\n readonly panels = contentChildren(RaqmResizablePanelDirective);\r\n readonly handles = contentChildren(RaqmResizableHandleDirective);\r\n private readonly changed = signal<ReadonlyMap<RaqmResizablePanelDirective, number>>(new Map());\r\n readonly sizes = computed(() => {\r\n const panels = this.panels();\r\n const changes = this.changed();\r\n if (!panels.length) return [];\r\n const explicit = panels.map((p) => p.defaultSize());\r\n const missing = explicit.filter((x) => x === undefined).length;\r\n const remaining = Math.max(0, 100 - explicit.reduce<number>((a, b) => a + (b ?? 0), 0));\r\n let initial = explicit.map((v) => v ?? (missing ? remaining / missing : 0));\r\n if (panels.every((p) => changes.has(p))) initial = panels.map((p) => changes.get(p)!);\r\n else if (panels.length === 2 && explicit.every((v) => v === undefined)) {\r\n initial = [this.defaultSize(), 100 - this.defaultSize()];\r\n }\r\n const mins = panels.map((p, i) =>\r\n Math.max(0, p.minSize() ?? (panels.length === 2 && i === 0 ? this.minSize() : 0)),\r\n );\r\n const maxs = panels.map((p, i) =>\r\n Math.min(100, p.maxSize() ?? (panels.length === 2 && i === 0 ? this.maxSize() : 100)),\r\n );\r\n const values = initial.map((v, i) =>\r\n Math.min(maxs[i], Math.max(mins[i], Number.isFinite(v) ? v : 0)),\r\n );\r\n let remainingSize = 100 - values.reduce((a, b) => a + b, 0);\r\n for (let i = 0; i < values.length && Math.abs(remainingSize) > 0.000001; i++) {\r\n const change =\r\n remainingSize > 0\r\n ? Math.min(remainingSize, maxs[i] - values[i])\r\n : Math.max(remainingSize, mins[i] - values[i]);\r\n values[i] += change;\r\n remainingSize -= change;\r\n }\r\n return values;\r\n });\r\n panelIndex(panel: RaqmResizablePanelDirective): number {\r\n return this.panels().indexOf(panel);\r\n }\r\n handleIndex(handle: RaqmResizableHandleDirective): number {\r\n return this.handles().indexOf(handle);\r\n }\r\n bounds(index: number): { min: number; max: number } {\r\n const panels = this.panels(),\r\n sizes = this.sizes(),\r\n left = panels[index],\r\n right = panels[index + 1];\r\n if (!left || !right) return { min: 0, max: 0 };\r\n const total = sizes[index] + sizes[index + 1];\r\n const legacy = panels.length === 2;\r\n const leftMin = left.minSize() ?? (legacy ? this.minSize() : 0);\r\n const leftMax = left.maxSize() ?? (legacy ? this.maxSize() : 100);\r\n const rightMin = right.minSize() ?? 0;\r\n const rightMax = right.maxSize() ?? 100;\r\n return {\r\n min: Math.max(0, leftMin, total - rightMax),\r\n max: Math.min(total, leftMax, total - rightMin),\r\n };\r\n }\r\n resize(index: number, value: number): void {\r\n const panels = this.panels(),\r\n sizes = this.sizes(),\r\n bounds = this.bounds(index);\r\n if (!panels[index] || !panels[index + 1] || bounds.min > bounds.max || !Number.isFinite(value))\r\n return;\r\n const next = Math.min(bounds.max, Math.max(bounds.min, value));\r\n const total = sizes[index] + sizes[index + 1];\r\n const values = new Map(panels.map((panel, i) => [panel, sizes[i]]));\r\n values.set(panels[index], next);\r\n values.set(panels[index + 1], total - next);\r\n this.changed.set(values);\r\n }\r\n}\r\n\r\n/** Raqm resizable panel — one percentage-sized region; owns its id (the handle's `aria-controls` target) and flex-basis. */\r\n@Directive({\r\n selector: '[raqm-resizable-panel]',\r\n host: {\r\n class: 'raqm-resizable-panel',\r\n '[style.flex-basis.%]': 'basis()',\r\n '[style.flex-grow]': '0',\r\n '[id]': 'id',\r\n },\r\n})\r\nexport class RaqmResizablePanelDirective {\r\n private readonly group = inject(RaqmResizablePanelGroupComponent);\r\n readonly id = inject(_IdGenerator).getId('raqm-resizable-panel-');\r\n readonly defaultSize = input<number | undefined>(undefined);\r\n readonly minSize = input<number | undefined>(undefined);\r\n readonly maxSize = input<number | undefined>(undefined);\r\n protected readonly basis = computed(() => this.group.sizes()[this.group.panelIndex(this)] ?? 0);\r\n}\r\n\r\n/** Raqm resizable handle — draggable `role=\"separator\"`, focusable and keyboard-operable; accessible name is app-authored. */\r\n@Directive({\r\n selector: '[raqm-resizable-handle]',\r\n host: {\r\n class: 'raqm-resizable-handle',\r\n role: 'separator',\r\n tabindex: '0',\r\n '[attr.data-raqm-with-handle]': 'withHandle() ? \"\" : null',\r\n '[attr.aria-orientation]': 'group.vertical() ? \"horizontal\" : \"vertical\"',\r\n '[attr.aria-valuenow]': 'value()',\r\n '[attr.aria-valuemin]': 'bounds().min',\r\n '[attr.aria-valuemax]': 'bounds().max',\r\n '[attr.aria-controls]': 'group.panels()[index()]?.id ?? null',\r\n '(keydown)': 'onKey($event)',\r\n '(pointerdown)': 'onPointer($event)',\r\n },\r\n})\r\nexport class RaqmResizableHandleDirective {\r\n readonly withHandle = input(false, { transform: booleanAttribute });\r\n protected readonly group = inject(RaqmResizablePanelGroupComponent);\r\n protected readonly index = computed(() => this.group.handleIndex(this));\r\n protected readonly value = computed(() => this.group.sizes()[this.index()] ?? 0);\r\n protected readonly bounds = computed(() => this.group.bounds(this.index()));\r\n private readonly element = inject(ElementRef<HTMLElement>);\r\n private readonly destroy = inject(DestroyRef);\r\n private cleanup: (() => void) | undefined;\r\n constructor() {\r\n this.destroy.onDestroy(() => this.cleanup?.());\r\n }\r\n protected onKey(event: KeyboardEvent): void {\r\n const horizontal = !this.group.vertical();\r\n const rtl = getComputedStyle(this.group.element.nativeElement).direction === 'rtl';\r\n let delta = 0;\r\n if (horizontal && event.key === 'ArrowRight') delta = rtl ? -1 : 1;\r\n if (horizontal && event.key === 'ArrowLeft') delta = rtl ? 1 : -1;\r\n if (!horizontal && event.key === 'ArrowDown') delta = 1;\r\n if (!horizontal && event.key === 'ArrowUp') delta = -1;\r\n if (event.key === 'Home' || event.key === 'End') {\r\n event.preventDefault();\r\n this.group.resize(this.index(), event.key === 'Home' ? this.bounds().min : this.bounds().max);\r\n } else if (delta) {\r\n event.preventDefault();\r\n this.group.resize(this.index(), this.value() + delta * (event.shiftKey ? 10 : 1));\r\n }\r\n }\r\n protected onPointer(event: PointerEvent): void {\r\n if (event.button !== 0) return;\r\n event.preventDefault();\r\n this.cleanup?.();\r\n const handle = this.element.nativeElement;\r\n const horizontal = !this.group.vertical();\r\n const rect = this.group.element.nativeElement.getBoundingClientRect();\r\n const rtl =\r\n horizontal && getComputedStyle(this.group.element.nativeElement).direction === 'rtl';\r\n const start = horizontal ? event.clientX : event.clientY;\r\n const initialSize = this.value();\r\n const move = (e: PointerEvent) => {\r\n const distance = (horizontal ? e.clientX : e.clientY) - start;\r\n const length = horizontal ? rect.width : rect.height;\r\n if (length)\r\n this.group.resize(\r\n this.index(),\r\n initialSize + ((rtl ? -distance : distance) / length) * 100,\r\n );\r\n };\r\n const end = () => this.cleanup?.();\r\n this.cleanup = () => {\r\n handle.removeEventListener('pointermove', move);\r\n handle.removeEventListener('pointerup', end);\r\n handle.removeEventListener('pointercancel', end);\r\n handle.removeEventListener('lostpointercapture', end);\r\n if (handle.hasPointerCapture(event.pointerId)) handle.releasePointerCapture(event.pointerId);\r\n this.cleanup = undefined;\r\n };\r\n handle.setPointerCapture(event.pointerId);\r\n handle.addEventListener('pointermove', move);\r\n handle.addEventListener('pointerup', end);\r\n handle.addEventListener('pointercancel', end);\r\n handle.addEventListener('lostpointercapture', end);\r\n }\r\n}\r\n","import {\r\n RaqmResizablePanelGroupComponent,\r\n RaqmResizablePanelDirective,\r\n RaqmResizableHandleDirective,\r\n} from './resizable';\r\n\r\nexport {\r\n RaqmResizablePanelGroupComponent,\r\n RaqmResizablePanelDirective,\r\n RaqmResizableHandleDirective,\r\n};\r\n\r\nexport const RaqmResizable = [\r\n RaqmResizablePanelGroupComponent,\r\n RaqmResizablePanelDirective,\r\n RaqmResizableHandleDirective,\r\n] as const;\r\n"],"mappings":";;;AA0BA,IAAa,mCAAb,MAAa,iCAAgC;CAElC,WAAW,MAAM,OAAK;EAAA,GAAA,YAAA,EAAA,WAAA,WAAA,+BAAA,CAAA;EAAI,WAAW;CAAgB,CAAA;CACrD,cAAc,MAAM,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,cAAA,CAAA,+BAAA,CAAA,CAAA;CACvB,UAAU,MAAM,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CACnB,UAAU,MAAM,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CACnB,UAAU,OAAO,UAAuB;CACxC,SAAS,gBAAgB,6BAA4B,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;CACrD,UAAU,gBAAgB,8BAA6B,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAC/C,UAAU,uBAAyD,IAAI,IAAG,GAAG,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CACrF,QAAQ,eAAc;EAC7B,MAAM,SAAS,KAAK,OAAM;EAC1B,MAAM,UAAU,KAAK,QAAO;EAC5B,IAAI,CAAC,OAAO,QAAQ,OAAO,CAAA;EAC3B,MAAM,WAAW,OAAO,KAAK,MAAM,EAAE,YAAW,CAAE;EAClD,MAAM,UAAU,SAAS,QAAQ,MAAM,MAAM,MAAS,CAAC,CAAC;EACxD,MAAM,YAAY,KAAK,IAAI,GAAG,MAAM,SAAS,QAAgB,GAAG,MAAM,KAAK,KAAK,IAAI,CAAC,CAAC;EACtF,IAAI,UAAU,SAAS,KAAK,MAAM,MAAM,UAAU,YAAY,UAAU,EAAE;EAC1E,IAAI,OAAO,OAAO,MAAM,QAAQ,IAAI,CAAC,CAAC,GAAG,UAAU,OAAO,KAAK,MAAM,QAAQ,IAAI,CAAC,CAAE;OAC/E,IAAI,OAAO,WAAW,KAAK,SAAS,OAAO,MAAM,MAAM,MAAS,GACnE,UAAU,CAAC,KAAK,YAAW,GAAI,MAAM,KAAK,YAAW,CAAE;EAEzD,MAAM,OAAO,OAAO,KAAK,GAAG,MAC1B,KAAK,IAAI,GAAG,EAAE,QAAO,MAAO,OAAO,WAAW,KAAK,MAAM,IAAI,KAAK,QAAO,IAAK,EAAE,CAAC;EAEnF,MAAM,OAAO,OAAO,KAAK,GAAG,MAC1B,KAAK,IAAI,KAAK,EAAE,QAAO,MAAO,OAAO,WAAW,KAAK,MAAM,IAAI,KAAK,QAAO,IAAK,IAAI,CAAC;EAEvF,MAAM,SAAS,QAAQ,KAAK,GAAG,MAC7B,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,OAAO,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;EAElE,IAAI,gBAAgB,MAAM,OAAO,QAAQ,GAAG,MAAM,IAAI,GAAG,CAAC;EAC1D,KAAK,IAAI,IAAI,GAAG,IAAI,OAAO,UAAU,KAAK,IAAI,aAAa,IAAI,MAAU,KAAK;GAC5E,MAAM,SACJ,gBAAgB,IACZ,KAAK,IAAI,eAAe,KAAK,KAAK,OAAO,EAAE,IAC3C,KAAK,IAAI,eAAe,KAAK,KAAK,OAAO,EAAE;GACjD,OAAO,MAAM;GACb,iBAAiB;EACnB;EACA,OAAO;CACT,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CACF,WAAW,OAAkC;EAC3C,OAAO,KAAK,OAAM,CAAE,CAAC,QAAQ,KAAK;CACpC;CACA,YAAY,QAAoC;EAC9C,OAAO,KAAK,QAAO,CAAE,CAAC,QAAQ,MAAM;CACtC;CACA,OAAO,OAAa;EAClB,MAAM,SAAS,KAAK,OAAM,GACxB,QAAQ,KAAK,MAAK,GAClB,OAAO,OAAO,QACd,QAAQ,OAAO,QAAQ;EACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,OAAO;GAAE,KAAK;GAAG,KAAK;EAAC;EAC5C,MAAM,QAAQ,MAAM,SAAS,MAAM,QAAQ;EAC3C,MAAM,SAAS,OAAO,WAAW;EACjC,MAAM,UAAU,KAAK,QAAO,MAAO,SAAS,KAAK,QAAO,IAAK;EAC7D,MAAM,UAAU,KAAK,QAAO,MAAO,SAAS,KAAK,QAAO,IAAK;EAC7D,MAAM,WAAW,MAAM,QAAO,KAAM;EACpC,MAAM,WAAW,MAAM,QAAO,KAAM;EACpC,OAAO;GACL,KAAK,KAAK,IAAI,GAAG,SAAS,QAAQ,QAAQ;GAC1C,KAAK,KAAK,IAAI,OAAO,SAAS,QAAQ,QAAQ;EAC/C;CACH;CACA,OAAO,OAAe,OAAa;EACjC,MAAM,SAAS,KAAK,OAAM,GACxB,QAAQ,KAAK,MAAK,GAClB,SAAS,KAAK,OAAO,KAAK;EAC5B,IAAI,CAAC,OAAO,UAAU,CAAC,OAAO,QAAQ,MAAM,OAAO,MAAM,OAAO,OAAO,CAAC,OAAO,SAAS,KAAK,GAC3F;EACF,MAAM,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,CAAC;EAC7D,MAAM,QAAQ,MAAM,SAAS,MAAM,QAAQ;EAC3C,MAAM,SAAS,IAAI,IAAI,OAAO,KAAK,OAAO,MAAM,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;EAClE,OAAO,IAAI,OAAO,QAAQ,IAAI;EAC9B,OAAO,IAAI,OAAO,QAAQ,IAAI,QAAQ,IAAI;EAC1C,KAAK,QAAQ,IAAI,MAAM;CACzB;CA7EW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAgC,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAhC,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAgC,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,UAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,aAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,MAAA;GAAA,YAAA,EAAA,2BAAA,2BAAA;GAAA,gBAAA;EAAA;EAAA,SAAA,CAAA;GAAA,cAAA;GAAA,WAOT;GAA2B,UAAA;EAAA,GAAA;GAAA,cAAA;GAAA,WAC1B;GAA4B,UAAA;EAAA,CAAA;EAAA,UAAA;EAAA,UAhBrD;EAAgB,UAAA;EAAA,QAAA,CAAA,6IAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAQf,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAgC,YAAA,CAAA;EAV5C,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAA4B,UAC5B;GAAgB,iBAET,wBAAwB;GAAM,MACzC;IACJ,OAAO;IACP,6BAA6B;GAC9B;GAAA,QAAA,CAAA,6IAAA;EAAA,CAAA;CASiC,CAAA;CAAA,gBAAA;EAAA,UAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,aAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,SAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,SAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,QAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA,GAAA,iBAAA,2BAA2B,GAAA,EAAA,UAAA,KAAA,CAAA;EAAA,CAAA;EAAA,SAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA,GAAA,iBAC1B,4BAA4B,GAAA,EAAA,UAAA,KAAA,CAAA;EAAA,CAAA;CAAA;AAAA,CAAA;AAkFjE,IAAa,8BAAb,MAAa,4BAA2B;CACrB,QAAQ,OAAO,gCAAgC;CACvD,KAAK,OAAO,YAAY,CAAC,CAAC,MAAM,uBAAuB;CACvD,cAAc,MAA0B,QAAU,GAAA,YAAA,CAAA,EAAA,WAAA,cAAA,CAAA,+BAAA,CAAA,CAAA;CAClD,UAAU,MAA0B,QAAU,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAC9C,UAAU,MAA0B,QAAU,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CACpC,QAAQ,eAAe,KAAK,MAAM,MAAK,CAAE,CAAC,KAAK,MAAM,WAAW,IAAI,MAAM,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CANpF,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAA2B,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAA3B,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAA2B,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,aAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,MAAA;GAAA,YAAA;IAAA,sBAAA;IAAA,mBAAA;IAAA,MAAA;GAAA;GAAA,gBAAA;EAAA;EAAA,UAAA;CAAA,CAAA;;AAA3B,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAA2B,YAAA,CAAA;EATvC,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,MAAM;IACJ,OAAO;IACP,wBAAwB;IACxB,qBAAqB;IACrB,QAAQ;GACT;EACF,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BD,IAAa,+BAAb,MAAa,6BAA4B;CAC9B,aAAa,MAAM,OAAK;EAAA,GAAA,YAAA,EAAA,WAAA,aAAA,+BAAA,CAAA;EAAI,WAAW;CAAgB,CAAA;CAC7C,QAAQ,OAAO,gCAAgC;CAC/C,QAAQ,eAAe,KAAK,MAAM,YAAY,IAAI,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CACpD,QAAQ,eAAe,KAAK,MAAM,MAAK,CAAE,CAAC,KAAK,MAAK,MAAO,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAC7D,SAAS,eAAe,KAAK,MAAM,OAAO,KAAK,MAAK,CAAE,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;CAC1D,UAAU,OAAO,UAAuB;CACxC,UAAU,OAAO,UAAU;CACpC;CACR,cAAA;EACE,KAAK,QAAQ,gBAAgB,KAAK,UAAS,CAAE;CAC/C;CACU,MAAM,OAAoB;EAClC,MAAM,aAAa,CAAC,KAAK,MAAM,SAAQ;EACvC,MAAM,MAAM,iBAAiB,KAAK,MAAM,QAAQ,aAAa,CAAC,CAAC,cAAc;EAC7E,IAAI,QAAQ;EACZ,IAAI,cAAc,MAAM,QAAQ,cAAc,QAAQ,MAAM,KAAK;EACjE,IAAI,cAAc,MAAM,QAAQ,aAAa,QAAQ,MAAM,IAAI;EAC/D,IAAI,CAAC,cAAc,MAAM,QAAQ,aAAa,QAAQ;EACtD,IAAI,CAAC,cAAc,MAAM,QAAQ,WAAW,QAAQ;EACpD,IAAI,MAAM,QAAQ,UAAU,MAAM,QAAQ,OAAO;GAC/C,MAAM,eAAc;GACpB,KAAK,MAAM,OAAO,KAAK,MAAK,GAAI,MAAM,QAAQ,SAAS,KAAK,OAAM,CAAE,CAAC,MAAM,KAAK,OAAM,CAAE,CAAC,GAAG;EAC9F,OAAO,IAAI,OAAO;GAChB,MAAM,eAAc;GACpB,KAAK,MAAM,OAAO,KAAK,MAAK,GAAI,KAAK,MAAK,IAAK,SAAS,MAAM,WAAW,KAAK,EAAE;EAClF;CACF;CACU,UAAU,OAAmB;EACrC,IAAI,MAAM,WAAW,GAAG;EACxB,MAAM,eAAc;EACpB,KAAK,UAAS;EACd,MAAM,SAAS,KAAK,QAAQ;EAC5B,MAAM,aAAa,CAAC,KAAK,MAAM,SAAQ;EACvC,MAAM,OAAO,KAAK,MAAM,QAAQ,cAAc,sBAAqB;EACnE,MAAM,MACJ,cAAc,iBAAiB,KAAK,MAAM,QAAQ,aAAa,CAAC,CAAC,cAAc;EACjF,MAAM,QAAQ,aAAa,MAAM,UAAU,MAAM;EACjD,MAAM,cAAc,KAAK,MAAK;EAC9B,MAAM,QAAQ,MAAmB;GAC/B,MAAM,YAAY,aAAa,EAAE,UAAU,EAAE,WAAW;GACxD,MAAM,SAAS,aAAa,KAAK,QAAQ,KAAK;GAC9C,IAAI,QACF,KAAK,MAAM,OACT,KAAK,MAAK,GACV,eAAgB,MAAM,CAAC,WAAW,YAAY,SAAU,GAAG;EAEjE;EACA,MAAM,YAAY,KAAK,UAAS;EAChC,KAAK,gBAAe;GAClB,OAAO,oBAAoB,eAAe,IAAI;GAC9C,OAAO,oBAAoB,aAAa,GAAG;GAC3C,OAAO,oBAAoB,iBAAiB,GAAG;GAC/C,OAAO,oBAAoB,sBAAsB,GAAG;GACpD,IAAI,OAAO,kBAAkB,MAAM,SAAS,GAAG,OAAO,sBAAsB,MAAM,SAAS;GAC3F,KAAK,UAAU;EACjB;EACA,OAAO,kBAAkB,MAAM,SAAS;EACxC,OAAO,iBAAiB,eAAe,IAAI;EAC3C,OAAO,iBAAiB,aAAa,GAAG;EACxC,OAAO,iBAAiB,iBAAiB,GAAG;EAC5C,OAAO,iBAAiB,sBAAsB,GAAG;CACnD;CA9DW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAA4B,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAA5B,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAA4B,cAAA;EAAA,UAAA;EAAA,QAAA,EAAA,YAAA;GAAA,mBAAA;GAAA,YAAA;GAAA,UAAA;GAAA,YAAA;GAAA,mBAAA;EAAA,EAAA;EAAA,MAAA;GAAA,YAAA;IAAA,QAAA;IAAA,YAAA;GAAA;GAAA,WAAA;IAAA,WAAA;IAAA,eAAA;GAAA;GAAA,YAAA;IAAA,8BAAA;IAAA,yBAAA;IAAA,sBAAA;IAAA,sBAAA;IAAA,sBAAA;IAAA,sBAAA;GAAA;GAAA,gBAAA;EAAA;EAAA,UAAA;CAAA,CAAA;;AAA5B,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAA4B,YAAA,CAAA;EAhBxC,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,MAAM;IACJ,OAAO;IACP,MAAM;IACN,UAAU;IACV,gCAAgC;IAChC,2BAA2B;IAC3B,wBAAwB;IACxB,wBAAwB;IACxB,wBAAwB;IACxB,wBAAwB;IACxB,aAAa;IACb,iBAAiB;GAClB;EACF,CAAA;;;;;;;;;;;;ACjID,MAAa,gBAAgB;CAC3B;CACA;CACA;AACQ"}