@raqm/ui 0.1.2 → 0.2.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.
- package/CHANGELOG.md +19 -0
- package/README.md +87 -126
- package/fesm2022/raqm-ui-badge.mjs +3 -1
- package/fesm2022/raqm-ui-badge.mjs.map +1 -1
- package/fesm2022/raqm-ui-calendar.mjs +79 -12
- package/fesm2022/raqm-ui-calendar.mjs.map +1 -1
- package/fesm2022/raqm-ui-combobox.mjs +47 -23
- package/fesm2022/raqm-ui-combobox.mjs.map +1 -1
- package/fesm2022/raqm-ui-command.mjs +60 -12
- package/fesm2022/raqm-ui-command.mjs.map +1 -1
- package/fesm2022/raqm-ui-dialog.mjs +1 -3
- package/fesm2022/raqm-ui-dialog.mjs.map +1 -1
- package/fesm2022/raqm-ui-icon.mjs +160 -0
- package/fesm2022/raqm-ui-icon.mjs.map +1 -0
- package/fesm2022/raqm-ui-input-otp.mjs +7 -4
- package/fesm2022/raqm-ui-input-otp.mjs.map +1 -1
- package/fesm2022/raqm-ui-overlay-internal.mjs +15 -5
- package/fesm2022/raqm-ui-overlay-internal.mjs.map +1 -1
- package/fesm2022/raqm-ui-popover.mjs +51 -19
- package/fesm2022/raqm-ui-popover.mjs.map +1 -1
- package/fesm2022/raqm-ui-resizable.mjs +14 -4
- package/fesm2022/raqm-ui-resizable.mjs.map +1 -1
- package/fesm2022/raqm-ui-scroll-area.mjs +85 -29
- package/fesm2022/raqm-ui-scroll-area.mjs.map +1 -1
- package/fesm2022/raqm-ui-select.mjs +46 -19
- package/fesm2022/raqm-ui-select.mjs.map +1 -1
- package/fesm2022/raqm-ui-sidebar.mjs +13 -3
- package/fesm2022/raqm-ui-sidebar.mjs.map +1 -1
- package/fesm2022/raqm-ui-slider.mjs +59 -12
- package/fesm2022/raqm-ui-slider.mjs.map +1 -1
- package/fesm2022/raqm-ui-toast.mjs +60 -20
- package/fesm2022/raqm-ui-toast.mjs.map +1 -1
- package/fesm2022/raqm-ui-tooltip.mjs +28 -3
- package/fesm2022/raqm-ui-tooltip.mjs.map +1 -1
- package/fesm2022/raqm-ui.mjs +1 -0
- package/package.json +52 -18
- package/styles/accordion.css +1 -0
- package/styles/alert-dialog.css +1 -0
- package/styles/alert.css +1 -0
- package/styles/attachment.css +1 -0
- package/styles/avatar.css +1 -0
- package/styles/badge.css +1 -0
- package/styles/base.css +1 -0
- package/styles/button-group.css +1 -0
- package/styles/button.css +1 -0
- package/styles/checkbox.css +1 -0
- package/styles/combobox.css +1 -0
- package/styles/command.css +1 -0
- package/styles/common.css +17 -0
- package/styles/context-menu.css +1 -0
- package/styles/dialog.css +1 -0
- package/styles/drawer.css +1 -0
- package/styles/dropdown-menu.css +1 -0
- package/styles/empty.css +1 -0
- package/styles/field-parts.css +1 -0
- package/styles/field-relationships.css +1 -0
- package/styles/input-group-button.css +1 -0
- package/styles/input-group-relationships.css +1 -0
- package/styles/input-otp.css +1 -0
- package/styles/input.css +1 -0
- package/styles/item.css +1 -0
- package/styles/kbd.css +1 -0
- package/styles/menubar.css +1 -0
- package/styles/native-select.css +1 -0
- package/styles/navigation-menu.css +1 -0
- package/styles/overlay.css +1 -0
- package/styles/pagination.css +1 -0
- package/styles/popover.css +1 -0
- package/styles/questionnaire.css +1 -0
- package/styles/radio-group.css +1 -0
- package/styles/resizable.css +1 -0
- package/styles/sheet.css +1 -0
- package/styles/sidebar.css +1 -0
- package/styles/spinner.css +1 -0
- package/styles/switch.css +1 -0
- package/styles/table.css +1 -0
- package/styles/tabs.css +1 -0
- package/styles/textarea.css +1 -0
- package/styles/theme.css +50 -4324
- package/styles/toggle-group.css +1 -0
- package/styles/toggle.css +1 -0
- package/styles/tooltip.css +1 -0
- package/types/raqm-ui-calendar.d.ts +1 -0
- package/types/raqm-ui-combobox.d.ts +8 -4
- package/types/raqm-ui-command.d.ts +4 -0
- package/types/raqm-ui-dialog.d.ts +7 -1
- package/types/raqm-ui-icon.d.ts +65 -0
- package/types/raqm-ui-input-otp.d.ts +1 -0
- package/types/raqm-ui-resizable.d.ts +4 -0
- package/types/raqm-ui-scroll-area.d.ts +11 -0
- package/types/raqm-ui-slider.d.ts +1 -1
- package/types/raqm-ui-toast.d.ts +6 -0
- package/types/raqm-ui.d.ts +1 -0
- package/fesm2022/raqm-ui-carousel.mjs +0 -410
- package/fesm2022/raqm-ui-carousel.mjs.map +0 -1
- package/types/raqm-ui-carousel.d.ts +0 -81
|
@@ -80,10 +80,18 @@ function commandScoreInner(string, abbreviation, lowerString, lowerAbbreviation,
|
|
|
80
80
|
memoizedResults[memoizeKey] = highScore;
|
|
81
81
|
return highScore;
|
|
82
82
|
}
|
|
83
|
-
function
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
83
|
+
function normalizeCommandSearch(search) {
|
|
84
|
+
return search.toLowerCase().replace(COUNT_SPACE_REGEXP, " ");
|
|
85
|
+
}
|
|
86
|
+
function prepareCommandText(value, aliases) {
|
|
87
|
+
const text = aliases.length > 0 ? `${value} ${aliases.join(" ")}` : value;
|
|
88
|
+
return {
|
|
89
|
+
text,
|
|
90
|
+
normalized: normalizeCommandSearch(text)
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function scoreCommandText(prepared, search, normalizedSearch) {
|
|
94
|
+
return commandScoreInner(prepared.text, search, prepared.normalized, normalizedSearch, 0, 0, {});
|
|
87
95
|
}
|
|
88
96
|
let nextCommandId = 0;
|
|
89
97
|
var RaqmCommandComponent = class RaqmCommandComponent {
|
|
@@ -104,19 +112,31 @@ var RaqmCommandComponent = class RaqmCommandComponent {
|
|
|
104
112
|
listPresent = signal(false, ...ngDevMode ? [{ debugName: "listPresent" }] : /* istanbul ignore next */ []);
|
|
105
113
|
visibleItems = computed(() => this.items().filter((item) => this.matches(item)), ...ngDevMode ? [{ debugName: "visibleItems" }] : /* istanbul ignore next */ []);
|
|
106
114
|
hasChecked = computed(() => this.items().some((item) => item.checked()), ...ngDevMode ? [{ debugName: "hasChecked" }] : /* istanbul ignore next */ []);
|
|
107
|
-
|
|
115
|
+
normalizedSearch = computed(() => normalizeCommandSearch(this.search()), ...ngDevMode ? [{ debugName: "normalizedSearch" }] : /* istanbul ignore next */ []);
|
|
116
|
+
preparedItems = computed(() => {
|
|
117
|
+
const prepared = /* @__PURE__ */ new Map();
|
|
118
|
+
for (const item of this.items()) prepared.set(item, prepareCommandText(item.value().trim(), [item.title(), ...item.keywords()].filter(Boolean).map((alias) => alias.trim())));
|
|
119
|
+
return prepared;
|
|
120
|
+
}, ...ngDevMode ? [{ debugName: "preparedItems" }] : /* istanbul ignore next */ []);
|
|
121
|
+
scores = computed(() => {
|
|
122
|
+
const search = this.search();
|
|
123
|
+
const normalizedSearch = this.normalizedSearch();
|
|
124
|
+
const scores = /* @__PURE__ */ new Map();
|
|
125
|
+
for (const [item, prepared] of this.preparedItems()) scores.set(item, scoreCommandText(prepared, search, normalizedSearch));
|
|
126
|
+
return scores;
|
|
127
|
+
}, ...ngDevMode ? [{ debugName: "scores" }] : /* istanbul ignore next */ []);
|
|
108
128
|
rankedItems = computed(() => {
|
|
109
129
|
const items = [...this.items()];
|
|
110
130
|
if (!this.shouldFilter() || !this.search()) return items;
|
|
111
131
|
const scores = this.scores();
|
|
112
|
-
const
|
|
113
|
-
for (const item of items) if (item.group !== null)
|
|
114
|
-
const groupOrder = [...
|
|
132
|
+
const groupScores = /* @__PURE__ */ new Map();
|
|
133
|
+
for (const item of items) if (item.group !== null) groupScores.set(item.group, Math.max(groupScores.get(item.group) ?? 0, scores.get(item) ?? 0));
|
|
134
|
+
const groupOrder = new Map([...groupScores.keys()].sort((a, b) => groupScores.get(b) - groupScores.get(a)).map((group, index) => [group, index]));
|
|
115
135
|
return items.sort((a, b) => {
|
|
116
136
|
if (a.group !== b.group) {
|
|
117
137
|
if (a.group === null) return -1;
|
|
118
138
|
if (b.group === null) return 1;
|
|
119
|
-
return groupOrder.
|
|
139
|
+
return groupOrder.get(a.group) - groupOrder.get(b.group);
|
|
120
140
|
}
|
|
121
141
|
if (a.disabled !== b.disabled) return a.disabled ? -1 : 1;
|
|
122
142
|
return (scores.get(b) ?? 0) - (scores.get(a) ?? 0);
|
|
@@ -138,25 +158,39 @@ var RaqmCommandComponent = class RaqmCommandComponent {
|
|
|
138
158
|
afterRenderEffect(() => {
|
|
139
159
|
const items = this.rankedItems();
|
|
140
160
|
if (!this.shouldFilter() || !this.search()) {
|
|
141
|
-
for (const [parent, children] of this.originalChildren)
|
|
161
|
+
for (const [parent, children] of this.originalChildren) this.placeAtEnd(parent, children.filter((child) => child.parentNode === parent));
|
|
142
162
|
this.originalChildren.clear();
|
|
143
163
|
return;
|
|
144
164
|
}
|
|
145
165
|
const remember = (parent) => {
|
|
146
166
|
if (parent && !this.originalChildren.has(parent)) this.originalChildren.set(parent, Array.from(parent.childNodes));
|
|
147
167
|
};
|
|
168
|
+
const childrenByParent = /* @__PURE__ */ new Map();
|
|
148
169
|
const groups = /* @__PURE__ */ new Set();
|
|
149
170
|
for (const item of items) {
|
|
150
171
|
const parent = item.element.parentElement;
|
|
151
172
|
remember(parent);
|
|
152
|
-
parent
|
|
173
|
+
if (parent) {
|
|
174
|
+
const children = childrenByParent.get(parent) ?? [];
|
|
175
|
+
children.push(item.element);
|
|
176
|
+
childrenByParent.set(parent, children);
|
|
177
|
+
}
|
|
153
178
|
const group = item.element.closest(".raqm-command-group");
|
|
154
179
|
if (group) {
|
|
155
180
|
remember(group.parentElement);
|
|
156
181
|
groups.add(group);
|
|
157
182
|
}
|
|
158
183
|
}
|
|
159
|
-
for (const
|
|
184
|
+
for (const [parent, children] of childrenByParent) this.placeAtEnd(parent, children);
|
|
185
|
+
const groupsByParent = /* @__PURE__ */ new Map();
|
|
186
|
+
for (const group of groups) {
|
|
187
|
+
const parent = group.parentElement;
|
|
188
|
+
if (!parent) continue;
|
|
189
|
+
const siblings = groupsByParent.get(parent) ?? [];
|
|
190
|
+
siblings.push(group);
|
|
191
|
+
groupsByParent.set(parent, siblings);
|
|
192
|
+
}
|
|
193
|
+
for (const [parent, groupElements] of groupsByParent) this.placeAtEnd(parent, groupElements);
|
|
160
194
|
});
|
|
161
195
|
effect(() => {
|
|
162
196
|
const items = this.rankedItems().filter((item) => this.matches(item) && !item.disabled);
|
|
@@ -175,6 +209,20 @@ var RaqmCommandComponent = class RaqmCommandComponent {
|
|
|
175
209
|
});
|
|
176
210
|
}
|
|
177
211
|
lastSearch = "";
|
|
212
|
+
placeAtEnd(parent, nodes) {
|
|
213
|
+
if (nodes.length === 0) return;
|
|
214
|
+
const children = parent.childNodes;
|
|
215
|
+
const offset = children.length - nodes.length;
|
|
216
|
+
if (offset >= 0) {
|
|
217
|
+
let ordered = true;
|
|
218
|
+
for (let index = 0; index < nodes.length; index++) if (children[offset + index] !== nodes[index]) {
|
|
219
|
+
ordered = false;
|
|
220
|
+
break;
|
|
221
|
+
}
|
|
222
|
+
if (ordered) return;
|
|
223
|
+
}
|
|
224
|
+
for (const node of nodes) parent.appendChild(node);
|
|
225
|
+
}
|
|
178
226
|
register(item) {
|
|
179
227
|
this.items.update((items) => [...items, item]);
|
|
180
228
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raqm-ui-command.mjs","names":[],"sources":["../../../projects/ui/command/command-context.ts","../../../projects/ui/command/command-score.ts","../../../projects/ui/command/command.component.ts","../../../projects/ui/command/command.component.html","../../../projects/ui/command/command-dialog.component.ts","../../../projects/ui/command/command-dialog.component.html","../../../projects/ui/command/command-input.component.ts","../../../projects/ui/command/command-input.component.html","../../../projects/ui/command/command-parts.component.ts","../../../projects/ui/command/public-api.ts"],"sourcesContent":["import { InjectionToken, Signal } from '@angular/core';\r\nimport type { RaqmCommandComponent } from './command.component';\r\n\r\nexport interface RaqmCommandOption {\r\n readonly id: string;\r\n readonly element: HTMLElement;\r\n readonly disabled: boolean;\r\n readonly checked: Signal<boolean>;\r\n readonly group: string | null;\r\n readonly value: Signal<string>;\r\n readonly title: Signal<string>;\r\n readonly keywords: Signal<readonly string[]>;\r\n setActiveStyles(): void;\r\n setInactiveStyles(): void;\r\n select(): void;\r\n scrollIntoView(): void;\r\n}\r\nexport const RAQM_COMMAND = new InjectionToken<RaqmCommandComponent>('RaqmCommand');\r\nexport const RAQM_COMMAND_GROUP = new InjectionToken<string>('RaqmCommandGroup');\r\n","/** @license\r\n * Typed translation of cmdk/src/command-score.ts:\r\n * https://github.com/dip/cmdk/blob/main/cmdk/src/command-score.ts\r\n *\r\n * MIT License\r\n * Copyright (c) 2022 Paco Coursey\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"Software\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included in all\r\n * copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\n * SOFTWARE.\r\n */\r\nconst SCORE_CONTINUE_MATCH = 1;\r\nconst SCORE_SPACE_WORD_JUMP = 0.9;\r\nconst SCORE_NON_SPACE_WORD_JUMP = 0.8;\r\nconst SCORE_CHARACTER_JUMP = 0.17;\r\nconst SCORE_TRANSPOSITION = 0.1;\r\nconst PENALTY_SKIPPED = 0.999;\r\nconst PENALTY_CASE_MISMATCH = 0.9999;\r\nconst PENALTY_NOT_COMPLETE = 0.99;\r\nconst IS_GAP_REGEXP = /[\\\\/_+.#\"@\\[({&]/;\r\nconst COUNT_GAPS_REGEXP = /[\\\\/_+.#\"@\\[({&]/g;\r\nconst IS_SPACE_REGEXP = /[\\s-]/;\r\nconst COUNT_SPACE_REGEXP = /[\\s-]/g;\r\n\r\nfunction commandScoreInner(\r\n string: string,\r\n abbreviation: string,\r\n lowerString: string,\r\n lowerAbbreviation: string,\r\n stringIndex: number,\r\n abbreviationIndex: number,\r\n memoizedResults: Record<string, number>,\r\n): number {\r\n if (abbreviationIndex === abbreviation.length) {\r\n return stringIndex === string.length ? SCORE_CONTINUE_MATCH : PENALTY_NOT_COMPLETE;\r\n }\r\n const memoizeKey = `${stringIndex},${abbreviationIndex}`;\r\n if (memoizedResults[memoizeKey] !== undefined) return memoizedResults[memoizeKey];\r\n const abbreviationChar = lowerAbbreviation.charAt(abbreviationIndex);\r\n let index = lowerString.indexOf(abbreviationChar, stringIndex);\r\n let highScore = 0;\r\n while (index >= 0) {\r\n let score = commandScoreInner(\r\n string,\r\n abbreviation,\r\n lowerString,\r\n lowerAbbreviation,\r\n index + 1,\r\n abbreviationIndex + 1,\r\n memoizedResults,\r\n );\r\n if (score > highScore) {\r\n if (index === stringIndex) {\r\n score *= SCORE_CONTINUE_MATCH;\r\n } else if (IS_GAP_REGEXP.test(string.charAt(index - 1))) {\r\n score *= SCORE_NON_SPACE_WORD_JUMP;\r\n const wordBreaks = string.slice(stringIndex, index - 1).match(COUNT_GAPS_REGEXP);\r\n if (wordBreaks && stringIndex > 0) score *= Math.pow(PENALTY_SKIPPED, wordBreaks.length);\r\n } else if (IS_SPACE_REGEXP.test(string.charAt(index - 1))) {\r\n score *= SCORE_SPACE_WORD_JUMP;\r\n const spaceBreaks = string.slice(stringIndex, index - 1).match(COUNT_SPACE_REGEXP);\r\n if (spaceBreaks && stringIndex > 0) score *= Math.pow(PENALTY_SKIPPED, spaceBreaks.length);\r\n } else {\r\n score *= SCORE_CHARACTER_JUMP;\r\n if (stringIndex > 0) score *= Math.pow(PENALTY_SKIPPED, index - stringIndex);\r\n }\r\n if (string.charAt(index) !== abbreviation.charAt(abbreviationIndex))\r\n score *= PENALTY_CASE_MISMATCH;\r\n }\r\n if (\r\n (score < SCORE_TRANSPOSITION &&\r\n lowerString.charAt(index - 1) === lowerAbbreviation.charAt(abbreviationIndex + 1)) ||\r\n (lowerAbbreviation.charAt(abbreviationIndex + 1) ===\r\n lowerAbbreviation.charAt(abbreviationIndex) &&\r\n lowerString.charAt(index - 1) !== lowerAbbreviation.charAt(abbreviationIndex))\r\n ) {\r\n const transposedScore = commandScoreInner(\r\n string,\r\n abbreviation,\r\n lowerString,\r\n lowerAbbreviation,\r\n index + 1,\r\n abbreviationIndex + 2,\r\n memoizedResults,\r\n );\r\n if (transposedScore * SCORE_TRANSPOSITION > score)\r\n score = transposedScore * SCORE_TRANSPOSITION;\r\n }\r\n if (score > highScore) highScore = score;\r\n index = lowerString.indexOf(abbreviationChar, index + 1);\r\n }\r\n memoizedResults[memoizeKey] = highScore;\r\n return highScore;\r\n}\r\n\r\nexport function commandScore(value: string, search: string, aliases: readonly string[]): number {\r\n const string = aliases.length > 0 ? `${value} ${aliases.join(' ')}` : value;\r\n const format = (input: string): string => input.toLowerCase().replace(COUNT_SPACE_REGEXP, ' ');\r\n return commandScoreInner(string, search, format(string), format(search), 0, 0, {});\r\n}\r\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n afterRenderEffect,\r\n Injector,\r\n booleanAttribute,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n model,\r\n signal,\r\n untracked,\r\n} from '@angular/core';\r\nimport { RAQM_COMMAND, RaqmCommandOption } from './command-context';\r\nimport { commandScore } from './command-score';\r\n\r\nlet nextCommandId = 0;\r\n\r\n/** Inline command palette. Focus stays on its input; active options never receive DOM focus. */\r\n@Component({\r\n selector: 'raqm-command',\r\n templateUrl: './command.component.html',\r\n styleUrl: './command.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { class: 'raqm-command' },\r\n providers: [{ provide: RAQM_COMMAND, useExisting: RaqmCommandComponent }],\r\n})\r\nexport class RaqmCommandComponent {\r\n /** The application-authored accessible name for the listbox. */\r\n readonly label = input.required<string>();\r\n readonly search = model('');\r\n /** Whether keyboard navigation wraps at the ends; defaults to `false`. */\r\n readonly loop = input(false, { transform: booleanAttribute });\r\n /** Whether search filters and ranks rows; defaults to `true`. */\r\n readonly shouldFilter = input(true, { transform: booleanAttribute });\r\n readonly listId = `raqm-command-${++nextCommandId}-list`;\r\n readonly inputId = `${this.listId}-input`;\r\n readonly items = signal<readonly RaqmCommandOption[]>([]);\r\n readonly activeId = signal<string | null>(null);\r\n readonly listPresent = signal(false);\r\n readonly visibleItems = computed(() => this.items().filter((item) => this.matches(item)));\r\n /** Whether any registered row is checked; switches the list to multi-select. */\r\n readonly hasChecked = computed(() => this.items().some((item) => item.checked()));\r\n private readonly scores = computed(\r\n () =>\r\n new Map(\r\n this.items().map((item) => [\r\n item,\r\n commandScore(\r\n item.value().trim(),\r\n this.search(),\r\n [item.title(), ...item.keywords()].filter(Boolean).map((alias) => alias.trim()),\r\n ),\r\n ]),\r\n ),\r\n );\r\n private readonly rankedItems = computed(() => {\r\n const items = [...this.items()];\r\n if (!this.shouldFilter() || !this.search()) return items;\r\n const scores = this.scores();\r\n const groups = new Map<string, number>();\r\n for (const item of items) {\r\n if (item.group !== null)\r\n groups.set(item.group, Math.max(groups.get(item.group) ?? 0, scores.get(item) ?? 0));\r\n }\r\n const groupOrder = [...groups.keys()].sort((a, b) => groups.get(b)! - groups.get(a)!);\r\n return items.sort((a, b) => {\r\n if (a.group !== b.group) {\r\n if (a.group === null) return -1;\r\n if (b.group === null) return 1;\r\n return groupOrder.indexOf(a.group) - groupOrder.indexOf(b.group);\r\n }\r\n // cmdk re-appends only enabled options when sorting; disabled rows stay\r\n // before those moved options within their original group.\r\n if (a.disabled !== b.disabled) return a.disabled ? -1 : 1;\r\n return (scores.get(b) ?? 0) - (scores.get(a) ?? 0);\r\n });\r\n });\r\n private readonly injector = inject(Injector);\r\n readonly contentInjector = Injector.create({\r\n providers: [{ provide: RAQM_COMMAND, useValue: this }],\r\n parent: this.injector,\r\n });\r\n private readonly manager = new ActiveDescendantKeyManager(this.rankedItems, this.injector)\r\n .withVerticalOrientation()\r\n .withHomeAndEnd()\r\n .skipPredicate((item) => item.disabled || !this.matches(item));\r\n private sequence = 0;\r\n private focusInput: (() => void) | undefined;\r\n private readonly originalChildren = new Map<HTMLElement, readonly ChildNode[]>();\r\n\r\n constructor() {\r\n // Mirror cmdk's DOM sorting so assistive reading order and the key manager\r\n // consume one sequence; restore declaration order when the query clears or filtering is off.\r\n afterRenderEffect(() => {\r\n const items = this.rankedItems();\r\n if (!this.shouldFilter() || !this.search()) {\r\n for (const [parent, children] of this.originalChildren) {\r\n for (const child of children) if (child.parentNode === parent) parent.appendChild(child);\r\n }\r\n this.originalChildren.clear();\r\n return;\r\n }\r\n const remember = (parent: HTMLElement | null): void => {\r\n if (parent && !this.originalChildren.has(parent))\r\n this.originalChildren.set(parent, Array.from(parent.childNodes));\r\n };\r\n const groups = new Set<HTMLElement>();\r\n for (const item of items) {\r\n const parent = item.element.parentElement;\r\n remember(parent);\r\n parent?.appendChild(item.element);\r\n const group = item.element.closest<HTMLElement>('.raqm-command-group');\r\n if (group) {\r\n remember(group.parentElement);\r\n groups.add(group);\r\n }\r\n }\r\n for (const group of groups) group.parentElement?.appendChild(group);\r\n });\r\n effect(() => {\r\n const items = this.rankedItems().filter((item) => this.matches(item) && !item.disabled);\r\n const search = this.search();\r\n untracked(() => {\r\n if (search !== this.lastSearch || !items.some((item) => item.id === this.activeId())) {\r\n this.manager.setActiveItem(items[0] ?? -1);\r\n this.activeId.set(items[0]?.id ?? null);\r\n }\r\n this.lastSearch = search;\r\n });\r\n });\r\n inject(DestroyRef).onDestroy(() => {\r\n this.manager.destroy();\r\n this.contentInjector.destroy();\r\n });\r\n }\r\n private lastSearch = '';\r\n\r\n register(item: RaqmCommandOption): void {\r\n this.items.update((items) => [...items, item]);\r\n }\r\n unregister(item: RaqmCommandOption): void {\r\n this.items.update((items) => items.filter((candidate) => candidate !== item));\r\n }\r\n mintId(): string {\r\n return `${this.listId}-option-${++this.sequence}`;\r\n }\r\n registerInput(focus: () => void): void {\r\n this.focusInput = focus;\r\n }\r\n unregisterInput(): void {\r\n this.focusInput = undefined;\r\n }\r\n matches(item: RaqmCommandOption): boolean {\r\n return !this.shouldFilter() || !this.search() || (this.scores().get(item) ?? 0) > 0;\r\n }\r\n activate(item: RaqmCommandOption): void {\r\n if (item.disabled || !this.matches(item)) return;\r\n this.manager.setActiveItem(item);\r\n this.activeId.set(item.id);\r\n }\r\n select(item: RaqmCommandOption): void {\r\n if (item.disabled || !this.matches(item)) return;\r\n this.activate(item);\r\n this.focusInput?.();\r\n item.select();\r\n }\r\n keydown(event: KeyboardEvent): void {\r\n if (event.isComposing || event.altKey || event.ctrlKey || event.metaKey) return;\r\n if (event.key === 'Enter') {\r\n const item = this.items().find((item) => item.id === this.activeId());\r\n if (item) {\r\n event.preventDefault();\r\n this.select(item);\r\n }\r\n return;\r\n }\r\n if (!['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) return;\r\n this.manager.withWrap(this.loop()).onKeydown(event);\r\n const item = this.manager.activeItem;\r\n this.activeId.set(item?.id ?? null);\r\n item?.scrollIntoView();\r\n }\r\n}\r\n","<ng-content />\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Signal,\r\n booleanAttribute,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { RaqmButton } from '@raqm/ui/button';\r\nimport { RaqmDialogBaseComponent } from '@raqm/ui/dialog';\r\nimport { RaqmDialogTitleDirective, RaqmDialogDescriptionDirective } from '@raqm/ui/dialog';\r\nimport { RAQM_DIALOG, RAQM_DIALOG_POLICY, RaqmDialogPolicy } from '@raqm/ui/dialog';\r\nimport { RaqmCommandComponent } from './command.component';\r\n\r\n/** Command modal using Dialog's lifecycle. Project an ng-template[raqm-dialog-content]; a trigger is optional. */\r\n@Component({\r\n selector: 'raqm-command-dialog',\r\n imports: [\r\n NgTemplateOutlet,\r\n RaqmButton,\r\n RaqmCommandComponent,\r\n RaqmDialogTitleDirective,\r\n RaqmDialogDescriptionDirective,\r\n ],\r\n templateUrl: './command-dialog.component.html',\r\n styleUrls: ['../dialog/dialog.component.scss', './command-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n { provide: RAQM_DIALOG, useExisting: RaqmCommandDialogComponent },\r\n {\r\n provide: RAQM_DIALOG_POLICY,\r\n useFactory: (): RaqmDialogPolicy => ({\r\n role: 'dialog',\r\n contentClass: 'raqm-command-dialog-content',\r\n paneClass: 'raqm-command-dialog-pane',\r\n touchOpening: signal(false),\r\n dismissOnBackdrop: true,\r\n allowWithoutTrigger: true,\r\n }),\r\n },\r\n ],\r\n})\r\nexport class RaqmCommandDialogComponent extends RaqmDialogBaseComponent {\r\n /** Whether the root renders its own close control; defaults to `false`. */\r\n readonly showCloseButton = input(false, { transform: booleanAttribute });\r\n\r\n readonly closeLabel = input<string | undefined>(undefined);\r\n\r\n readonly title = input.required<string>();\r\n\r\n /** Optional supporting copy under the title. */\r\n readonly description = input('');\r\n\r\n protected readonly closeButtonVisible = this.showCloseButton;\r\n protected readonly closeLabelText: Signal<string | undefined> = this.closeLabel;\r\n}\r\n","<ng-content />\r\n<ng-template #panel>\r\n <div\r\n class=\"raqm-dialog-content raqm-command-dialog-content\"\r\n [attr.dir]=\"panelDir()\"\r\n [class.raqm-dialog-content--entering]=\"entering()\"\r\n [class.raqm-dialog-content--closing]=\"closing()\"\r\n >\r\n <header class=\"raqm-command-dialog-header\">\r\n <h2 raqm-dialog-title>{{ title() }}</h2>\r\n @if (description()) {\r\n <p raqm-dialog-description>{{ description() }}</p>\r\n }\r\n </header>\r\n <raqm-command #command [label]=\"title()\"\r\n ><ng-container\r\n [ngTemplateOutlet]=\"contentTemplate()\"\r\n [ngTemplateOutletInjector]=\"command.contentInjector\"\r\n /></raqm-command>\r\n @if (closeButtonVisible()) {\r\n <button\r\n raqm-button=\"ghost\"\r\n icon-small\r\n class=\"raqm-dialog-close\"\r\n [attr.aria-label]=\"closeLabelText()\"\r\n (click)=\"onCloseButtonClick()\"\r\n >\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n >\r\n <path d=\"m18 6-12 12M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n }\r\n </div>\r\n</ng-template>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n booleanAttribute,\r\n inject,\r\n input,\r\n viewChild,\r\n ElementRef,\r\n} from '@angular/core';\r\nimport { RaqmInputGroup } from '@raqm/ui/input-group';\r\nimport { RAQM_COMMAND } from './command-context';\r\n\r\n/** Native search input composed with Input Group, owning the palette's single tab stop. */\r\n@Component({\r\n selector: 'raqm-command-input',\r\n imports: [RaqmInputGroup],\r\n templateUrl: './command-input.component.html',\r\n styleUrl: './command-input.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { class: 'raqm-command-input-wrapper' },\r\n})\r\nexport class RaqmCommandInputComponent {\r\n protected readonly command = inject(RAQM_COMMAND);\r\n readonly placeholder = input('');\r\n readonly label = input.required<string>();\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n private readonly control = viewChild<ElementRef<HTMLInputElement>>('control');\r\n constructor() {\r\n this.command.registerInput(() => this.control()?.nativeElement.focus());\r\n inject(DestroyRef).onDestroy(() => this.command.unregisterInput());\r\n }\r\n protected onInput(event: Event): void {\r\n this.command.search.set((event.target as HTMLInputElement).value);\r\n }\r\n}\r\n","<raqm-input-group class=\"raqm-command-input-group\">\r\n <input\r\n #control\r\n raqm-input-group-control\r\n class=\"raqm-command-input\"\r\n type=\"text\"\r\n role=\"combobox\"\r\n autocomplete=\"off\"\r\n spellcheck=\"false\"\r\n aria-autocomplete=\"list\"\r\n aria-haspopup=\"listbox\"\r\n [id]=\"command.inputId\"\r\n [attr.aria-label]=\"label()\"\r\n [attr.aria-expanded]=\"command.listPresent()\"\r\n [attr.aria-controls]=\"command.listPresent() ? command.listId : null\"\r\n [attr.aria-activedescendant]=\"command.listPresent() ? command.activeId() : null\"\r\n [placeholder]=\"placeholder()\"\r\n [disabled]=\"disabled()\"\r\n [value]=\"command.search()\"\r\n (input)=\"onInput($event)\"\r\n (keydown)=\"command.keydown($event)\"\r\n />\r\n <raqm-input-group-addon>\r\n <svg\r\n class=\"raqm-command-input-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n >\r\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\r\n <path d=\"m21 21-4.3-4.3\" />\r\n </svg>\r\n </raqm-input-group-addon>\r\n</raqm-input-group>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n Directive,\r\n ElementRef,\r\n OnInit,\r\n booleanAttribute,\r\n computed,\r\n inject,\r\n input,\r\n isDevMode,\r\n output,\r\n} from '@angular/core';\r\nimport { RAQM_COMMAND, RAQM_COMMAND_GROUP, RaqmCommandOption } from './command-context';\r\n\r\n/** Scrollable, named result list for the input's combobox. */\r\n@Component({\r\n selector: 'raqm-command-list',\r\n template: '<ng-content />',\r\n styleUrl: './command-parts.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'raqm-command-list',\r\n role: 'listbox',\r\n '[id]': 'command.listId',\r\n '[attr.aria-label]': 'label() || command.label()',\r\n '[attr.aria-multiselectable]': 'command.hasChecked() ? \"true\" : null',\r\n },\r\n})\r\nexport class RaqmCommandListComponent {\r\n protected readonly command = inject(RAQM_COMMAND);\r\n readonly label = input('');\r\n constructor() {\r\n this.command.listPresent.set(true);\r\n inject(DestroyRef).onDestroy(() => this.command.listPresent.set(false));\r\n }\r\n}\r\n\r\n/** Empty-results message, including when filtering removes every group. */\r\n@Component({\r\n selector: 'raqm-command-empty',\r\n template: '<ng-content />',\r\n styleUrl: './command-parts.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'raqm-command-empty',\r\n role: 'presentation',\r\n '[hidden]': 'command.visibleItems().length !== 0',\r\n },\r\n})\r\nexport class RaqmCommandEmptyComponent {\r\n protected readonly command = inject(RAQM_COMMAND);\r\n}\r\n\r\nlet nextGroupId = 0;\r\n/** Named option group; hides its heading with its last filtered-out item. */\r\n@Component({\r\n selector: 'raqm-command-group',\r\n template:\r\n '@if (heading()) { <div class=\"raqm-command-group-heading\" [id]=\"headingId\">{{ heading() }}</div> }<ng-content />',\r\n styleUrl: './command-parts.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n { provide: RAQM_COMMAND_GROUP, useFactory: () => inject(RaqmCommandGroupComponent).id },\r\n ],\r\n host: {\r\n class: 'raqm-command-group',\r\n role: 'group',\r\n '[attr.aria-labelledby]': 'heading() ? headingId : null',\r\n '[attr.aria-label]': 'heading() ? null : label()',\r\n '[hidden]': '!visible()',\r\n },\r\n})\r\nexport class RaqmCommandGroupComponent implements OnInit {\r\n protected readonly command = inject(RAQM_COMMAND);\r\n readonly id = `raqm-command-group-${++nextGroupId}`;\r\n readonly headingId = `${this.id}-heading`;\r\n readonly heading = input('');\r\n readonly label = input('');\r\n protected readonly visible = computed(() =>\r\n this.command.visibleItems().some((item) => item.group === this.id),\r\n );\r\n\r\n ngOnInit(): void {\r\n if (isDevMode() && !this.heading() && !this.label()) {\r\n console.error(\r\n '[raqm-command-group] The group has no accessible name. Provide a `heading` or a `label`.',\r\n );\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[raqm-command-separator]',\r\n host: {\r\n class: 'raqm-command-separator',\r\n role: 'presentation',\r\n '[hidden]': '!alwaysRender() && command.search().trim().length > 0',\r\n },\r\n})\r\nexport class RaqmCommandSeparatorDirective {\r\n protected readonly command = inject(RAQM_COMMAND);\r\n readonly alwaysRender = input(false, { transform: booleanAttribute });\r\n}\r\n\r\n@Component({\r\n selector: 'raqm-command-item',\r\n template:\r\n '<ng-content /><svg class=\"raqm-command-item-indicator\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\" focusable=\"false\"><path d=\"m20 6-11 11-5-5\"/></svg>',\r\n styleUrl: './command-parts.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'raqm-command-item',\r\n role: 'option',\r\n '[id]': 'id',\r\n '[hidden]': '!command.matches(this)',\r\n '[attr.aria-label]': 'title() || value()',\r\n '[attr.aria-checked]': 'command.hasChecked() ? (checked() ? \"true\" : \"false\") : null',\r\n '[attr.aria-disabled]': 'disabled ? \"true\" : null',\r\n '[attr.data-raqm-selected]': 'command.activeId() === id ? \"true\" : null',\r\n '[attr.data-raqm-disabled]': 'disabled ? \"true\" : null',\r\n '[attr.data-raqm-checked]': 'checked() ? \"true\" : null',\r\n '(pointermove)': 'onPointerMove($event)',\r\n '(mousedown)': '$event.preventDefault()',\r\n '(click)': 'command.select(this)',\r\n },\r\n})\r\nexport class RaqmCommandItemComponent implements RaqmCommandOption, OnInit {\r\n protected readonly command = inject(RAQM_COMMAND);\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n readonly group = inject(RAQM_COMMAND_GROUP, { optional: true });\r\n readonly id = this.command.mintId();\r\n readonly value = input.required<string>();\r\n readonly title = input('');\r\n readonly keywords = input<readonly string[]>([]);\r\n readonly disabledValue = input(false, {\r\n alias: 'disabled',\r\n transform: booleanAttribute,\r\n });\r\n readonly checked = input(false, { transform: booleanAttribute });\r\n readonly selected = output<string>();\r\n get disabled(): boolean {\r\n return this.disabledValue();\r\n }\r\n get element(): HTMLElement {\r\n return this.host.nativeElement;\r\n }\r\n constructor() {\r\n inject(DestroyRef).onDestroy(() => this.command.unregister(this));\r\n }\r\n ngOnInit(): void {\r\n this.command.register(this);\r\n }\r\n setActiveStyles(): void {\r\n this.command.activeId.set(this.id);\r\n }\r\n setInactiveStyles(): void {\r\n if (this.command.activeId() === this.id) this.command.activeId.set(null);\r\n }\r\n select(): void {\r\n this.selected.emit(this.value());\r\n }\r\n scrollIntoView(): void {\r\n this.host.nativeElement.scrollIntoView({ block: 'nearest' });\r\n }\r\n protected onPointerMove(event: PointerEvent): void {\r\n if (event.pointerType !== 'touch') this.command.activate(this);\r\n }\r\n}\r\n\r\n/** Display-only shortcut. This never registers a global keyboard binding. */\r\n@Directive({\r\n selector: '[raqm-command-shortcut]',\r\n host: { class: 'raqm-command-shortcut', 'aria-hidden': 'true' },\r\n})\r\nexport class RaqmCommandShortcutDirective {}\r\n","// Public API for `@raqm/ui/command`; the root entry point re-exports these symbols.\r\nimport { RaqmCommandComponent } from './command.component';\r\nimport { RaqmCommandDialogComponent } from './command-dialog.component';\r\nimport { RaqmCommandInputComponent } from './command-input.component';\r\nimport {\r\n RaqmCommandEmptyComponent,\r\n RaqmCommandGroupComponent,\r\n RaqmCommandItemComponent,\r\n RaqmCommandListComponent,\r\n RaqmCommandSeparatorDirective,\r\n RaqmCommandShortcutDirective,\r\n} from './command-parts.component';\r\n\r\nexport {\r\n RaqmCommandComponent,\r\n RaqmCommandDialogComponent,\r\n RaqmCommandInputComponent,\r\n RaqmCommandListComponent,\r\n RaqmCommandEmptyComponent,\r\n RaqmCommandGroupComponent,\r\n RaqmCommandSeparatorDirective,\r\n RaqmCommandItemComponent,\r\n RaqmCommandShortcutDirective,\r\n};\r\n\r\nexport const RaqmCommand = [\r\n RaqmCommandComponent,\r\n RaqmCommandDialogComponent,\r\n RaqmCommandInputComponent,\r\n RaqmCommandListComponent,\r\n RaqmCommandEmptyComponent,\r\n RaqmCommandGroupComponent,\r\n RaqmCommandSeparatorDirective,\r\n RaqmCommandItemComponent,\r\n RaqmCommandShortcutDirective,\r\n] as const;\r\n"],"mappings":";;;;;;;;AAiBA,MAAa,eAAe,IAAI,eAAqC,aAAa;AAClF,MAAa,qBAAqB,IAAI,eAAuB,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;ACO/E,MAAM,uBAAuB;AAC7B,MAAM,wBAAwB;AAC9B,MAAM,4BAA4B;AAClC,MAAM,uBAAuB;AAC7B,MAAM,sBAAsB;AAC5B,MAAM,kBAAkB;AACxB,MAAM,wBAAwB;AAC9B,MAAM,uBAAuB;AAC7B,MAAM,gBAAgB;AACtB,MAAM,oBAAoB;AAC1B,MAAM,kBAAkB;AACxB,MAAM,qBAAqB;AAE3B,SAAS,kBACP,QACA,cACA,aACA,mBACA,aACA,mBACA,iBAAuC;CAEvC,IAAI,sBAAsB,aAAa,QACrC,OAAO,gBAAgB,OAAO,SAAS,uBAAuB;CAEhE,MAAM,aAAa,GAAG,YAAW,GAAI;CACrC,IAAI,gBAAgB,gBAAgB,QAAW,OAAO,gBAAgB;CACtE,MAAM,mBAAmB,kBAAkB,OAAO,iBAAiB;CACnE,IAAI,QAAQ,YAAY,QAAQ,kBAAkB,WAAW;CAC7D,IAAI,YAAY;CAChB,OAAO,SAAS,GAAG;EACjB,IAAI,QAAQ,kBACV,QACA,cACA,aACA,mBACA,QAAQ,GACR,oBAAoB,GACpB,eAAe;EAEjB,IAAI,QAAQ,WAAW;GACrB,IAAI,UAAU,aACZ,SAAS;QACJ,IAAI,cAAc,KAAK,OAAO,OAAO,QAAQ,CAAC,CAAC,GAAG;IACvD,SAAS;IACT,MAAM,aAAa,OAAO,MAAM,aAAa,QAAQ,CAAC,CAAC,CAAC,MAAM,iBAAiB;IAC/E,IAAI,cAAc,cAAc,GAAG,SAAS,KAAK,IAAI,iBAAiB,WAAW,MAAM;GACzF,OAAO,IAAI,gBAAgB,KAAK,OAAO,OAAO,QAAQ,CAAC,CAAC,GAAG;IACzD,SAAS;IACT,MAAM,cAAc,OAAO,MAAM,aAAa,QAAQ,CAAC,CAAC,CAAC,MAAM,kBAAkB;IACjF,IAAI,eAAe,cAAc,GAAG,SAAS,KAAK,IAAI,iBAAiB,YAAY,MAAM;GAC3F,OAAO;IACL,SAAS;IACT,IAAI,cAAc,GAAG,SAAS,KAAK,IAAI,iBAAiB,QAAQ,WAAW;GAC7E;GACA,IAAI,OAAO,OAAO,KAAK,MAAM,aAAa,OAAO,iBAAiB,GAChE,SAAS;EACb;EACA,IACG,QAAQ,uBACP,YAAY,OAAO,QAAQ,CAAC,MAAM,kBAAkB,OAAO,oBAAoB,CAAC,KACjF,kBAAkB,OAAO,oBAAoB,CAAC,MAC7C,kBAAkB,OAAO,iBAAiB,KAC1C,YAAY,OAAO,QAAQ,CAAC,MAAM,kBAAkB,OAAO,iBAAiB,GAC9E;GACA,MAAM,kBAAkB,kBACtB,QACA,cACA,aACA,mBACA,QAAQ,GACR,oBAAoB,GACpB,eAAe;GAEjB,IAAI,kBAAkB,sBAAsB,OAC1C,QAAQ,kBAAkB;EAC9B;EACA,IAAI,QAAQ,WAAW,YAAY;EACnC,QAAQ,YAAY,QAAQ,kBAAkB,QAAQ,CAAC;CACzD;CACA,gBAAgB,cAAc;CAC9B,OAAO;AACT;AAEA,SAAgB,aAAa,OAAe,QAAgB,SAA0B;CACpF,MAAM,SAAS,QAAQ,SAAS,IAAI,GAAG,MAAK,GAAI,QAAQ,KAAK,GAAG,MAAM;CACtE,MAAM,UAAU,UAA0B,MAAM,YAAW,CAAE,CAAC,QAAQ,oBAAoB,GAAG;CAC7F,OAAO,kBAAkB,QAAQ,QAAQ,OAAO,MAAM,GAAG,OAAO,MAAM,GAAG,GAAG,GAAG,CAAA,CAAE;AACnF;AC9FA,IAAI,gBAAgB;AAWpB,IAAa,uBAAb,MAAa,qBAAoB;CAEtB,QAAQ,MAAM,SAAkB,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAChC,SAAS,MAAM,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;CAElB,OAAO,MAAM,OAAK;EAAA,GAAA,YAAA,EAAA,WAAA,OAAA,+BAAA,CAAA;EAAI,WAAW;CAAgB,CAAA;CAEjD,eAAe,MAAM,MAAI;EAAA,GAAA,YAAA,EAAA,WAAA,eAAA,+BAAA,CAAA;EAAI,WAAW;CAAgB,CAAA;CACxD,SAAS,gBAAgB,EAAE,cAAa;CACxC,UAAU,GAAG,KAAK,OAAM;CACxB,QAAQ,OAAqC,CAAA,GAAG,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAChD,WAAW,OAAsB,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;CACtC,cAAc,OAAO,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,cAAA,CAAA,+BAAA,CAAA,CAAA;CAC3B,eAAe,eAAe,KAAK,MAAK,CAAE,CAAC,QAAQ,SAAS,KAAK,QAAQ,IAAI,CAAC,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,eAAA,CAAA,+BAAA,CAAA,CAAA;CAEhF,aAAa,eAAe,KAAK,MAAK,CAAE,CAAC,MAAM,SAAS,KAAK,QAAO,CAAE,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,aAAA,CAAA,+BAAA,CAAA,CAAA;CAChE,SAAS,eAEtB,IAAI,IACF,KAAK,MAAK,CAAE,CAAC,KAAK,SAAS,CACzB,MACA,aACE,KAAK,MAAK,CAAE,CAAC,KAAI,GACjB,KAAK,OAAM,GACX,CAAC,KAAK,MAAK,GAAI,GAAG,KAAK,SAAQ,CAAE,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,UAAU,MAAM,KAAI,CAAE,CAAC,CAElF,CAAA,CAAC,GAEP,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;CACgB,cAAc,eAAc;EAC3C,MAAM,QAAQ,CAAC,GAAG,KAAK,MAAK,CAAE;EAC9B,IAAI,CAAC,KAAK,aAAY,KAAM,CAAC,KAAK,OAAM,GAAI,OAAO;EACnD,MAAM,SAAS,KAAK,OAAM;EAC1B,MAAM,yBAAS,IAAI,IAAG;EACtB,KAAK,MAAM,QAAQ,OACjB,IAAI,KAAK,UAAU,MACjB,OAAO,IAAI,KAAK,OAAO,KAAK,IAAI,OAAO,IAAI,KAAK,KAAK,KAAK,GAAG,OAAO,IAAI,IAAI,KAAK,CAAC,CAAC;EAEvF,MAAM,aAAa,CAAC,GAAG,OAAO,KAAI,CAAE,CAAC,CAAC,MAAM,GAAG,MAAM,OAAO,IAAI,CAAC,IAAK,OAAO,IAAI,CAAC,CAAE;EACpF,OAAO,MAAM,MAAM,GAAG,MAAK;GACzB,IAAI,EAAE,UAAU,EAAE,OAAO;IACvB,IAAI,EAAE,UAAU,MAAM,OAAO;IAC7B,IAAI,EAAE,UAAU,MAAM,OAAO;IAC7B,OAAO,WAAW,QAAQ,EAAE,KAAK,IAAI,WAAW,QAAQ,EAAE,KAAK;GACjE;GAGA,IAAI,EAAE,aAAa,EAAE,UAAU,OAAO,EAAE,WAAW,KAAK;GACxD,QAAQ,OAAO,IAAI,CAAC,KAAK,MAAM,OAAO,IAAI,CAAC,KAAK;EAClD,CAAC;CACH,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,cAAA,CAAA,+BAAA,CAAA,CAAA;CACe,WAAW,OAAO,QAAQ;CAClC,kBAAkB,SAAS,OAAO;EACzC,WAAW,CAAC;GAAE,SAAS;GAAc,UAAU;EAAI,CAAE;EACrD,QAAQ,KAAK;CACd,CAAA;CACgB,UAAU,IAAI,2BAA2B,KAAK,aAAa,KAAK,QAAQ,CAAC,CACvF,wBAAuB,CAAE,CACzB,eAAc,CAAE,CAChB,eAAe,SAAS,KAAK,YAAY,CAAC,KAAK,QAAQ,IAAI,CAAC;CACvD,WAAW;CACX;CACS,mCAAmB,IAAI,IAAG;CAE3C,cAAA;EAGE,wBAAuB;GACrB,MAAM,QAAQ,KAAK,YAAW;GAC9B,IAAI,CAAC,KAAK,aAAY,KAAM,CAAC,KAAK,OAAM,GAAI;IAC1C,KAAK,MAAM,CAAC,QAAQ,aAAa,KAAK,kBACpC,KAAK,MAAM,SAAS,UAAU,IAAI,MAAM,eAAe,QAAQ,OAAO,YAAY,KAAK;IAEzF,KAAK,iBAAiB,MAAK;IAC3B;GACF;GACA,MAAM,YAAY,WAAoC;IACpD,IAAI,UAAU,CAAC,KAAK,iBAAiB,IAAI,MAAM,GAC7C,KAAK,iBAAiB,IAAI,QAAQ,MAAM,KAAK,OAAO,UAAU,CAAC;GACnE;GACA,MAAM,yBAAS,IAAI,IAAG;GACtB,KAAK,MAAM,QAAQ,OAAO;IACxB,MAAM,SAAS,KAAK,QAAQ;IAC5B,SAAS,MAAM;IACf,QAAQ,YAAY,KAAK,OAAO;IAChC,MAAM,QAAQ,KAAK,QAAQ,QAAqB,qBAAqB;IACrE,IAAI,OAAO;KACT,SAAS,MAAM,aAAa;KAC5B,OAAO,IAAI,KAAK;IAClB;GACF;GACA,KAAK,MAAM,SAAS,QAAQ,MAAM,eAAe,YAAY,KAAK;EACpE,CAAC;EACD,aAAY;GACV,MAAM,QAAQ,KAAK,YAAW,CAAE,CAAC,QAAQ,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,QAAQ;GACtF,MAAM,SAAS,KAAK,OAAM;GAC1B,gBAAe;IACb,IAAI,WAAW,KAAK,cAAc,CAAC,MAAM,MAAM,SAAS,KAAK,OAAO,KAAK,SAAQ,CAAE,GAAG;KACpF,KAAK,QAAQ,cAAc,MAAM,MAAM,EAAE;KACzC,KAAK,SAAS,IAAI,MAAM,EAAE,EAAE,MAAM,IAAI;IACxC;IACA,KAAK,aAAa;GACpB,CAAC;EACH,CAAC;EACD,OAAO,UAAU,CAAC,CAAC,gBAAe;GAChC,KAAK,QAAQ,QAAO;GACpB,KAAK,gBAAgB,QAAO;EAC9B,CAAC;CACH;CACQ,aAAa;CAErB,SAAS,MAAuB;EAC9B,KAAK,MAAM,QAAQ,UAAU,CAAC,GAAG,OAAO,IAAI,CAAC;CAC/C;CACA,WAAW,MAAuB;EAChC,KAAK,MAAM,QAAQ,UAAU,MAAM,QAAQ,cAAc,cAAc,IAAI,CAAC;CAC9E;CACA,SAAM;EACJ,OAAO,GAAG,KAAK,OAAM,UAAW,EAAE,KAAK;CACzC;CACA,cAAc,OAAiB;EAC7B,KAAK,aAAa;CACpB;CACA,kBAAe;EACb,KAAK,aAAa;CACpB;CACA,QAAQ,MAAuB;EAC7B,OAAO,CAAC,KAAK,aAAY,KAAM,CAAC,KAAK,OAAM,MAAO,KAAK,OAAM,CAAE,CAAC,IAAI,IAAI,KAAK,KAAK;CACpF;CACA,SAAS,MAAuB;EAC9B,IAAI,KAAK,YAAY,CAAC,KAAK,QAAQ,IAAI,GAAG;EAC1C,KAAK,QAAQ,cAAc,IAAI;EAC/B,KAAK,SAAS,IAAI,KAAK,EAAE;CAC3B;CACA,OAAO,MAAuB;EAC5B,IAAI,KAAK,YAAY,CAAC,KAAK,QAAQ,IAAI,GAAG;EAC1C,KAAK,SAAS,IAAI;EAClB,KAAK,aAAY;EACjB,KAAK,OAAM;CACb;CACA,QAAQ,OAAoB;EAC1B,IAAI,MAAM,eAAe,MAAM,UAAU,MAAM,WAAW,MAAM,SAAS;EACzE,IAAI,MAAM,QAAQ,SAAS;GACzB,MAAM,OAAO,KAAK,MAAK,CAAE,CAAC,MAAM,SAAS,KAAK,OAAO,KAAK,SAAQ,CAAE;GACpE,IAAI,MAAM;IACR,MAAM,eAAc;IACpB,KAAK,OAAO,IAAI;GAClB;GACA;EACF;EACA,IAAI,CAAC;GAAC;GAAa;GAAW;GAAQ;EAAK,CAAC,CAAC,SAAS,MAAM,GAAG,GAAG;EAClE,KAAK,QAAQ,SAAS,KAAK,KAAI,CAAE,CAAC,CAAC,UAAU,KAAK;EAClD,MAAM,OAAO,KAAK,QAAQ;EAC1B,KAAK,SAAS,IAAI,MAAM,MAAM,IAAI;EAClC,MAAM,eAAc;CACtB;CA3JW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAoB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAApB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAoB,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,QAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,MAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,cAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,SAAA,EAAA,QAAA,eAAA;EAAA,MAAA,EAAA,gBAAA,eAAA;EAAA,WAFpB,CAAC;GAAE,SAAS;GAAc,aAAa;EAAoB,CAAE;EAAC,UAAA;EAAA,UC5B3E;EACA,QAAA,CAAA,yQAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AD6Ba,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAoB,YAAA,CAAA;EARhC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAc,iBAGP,wBAAwB;GAAM,MACzC,EAAE,OAAO,eAAc;GAAE,WACpB,CAAC;IAAE,SAAS;IAAc,aAAW;GAAsB,CAAE;GAAC,UAAA;GAAA,QAAA,CAAA,yQAAA;EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AEe3E,IAAa,6BAAb,MAAa,mCAAmC,wBAAuB;CAE5D,kBAAkB,MAAM,OAAK;EAAA,GAAA,YAAA,EAAA,WAAA,kBAAA,+BAAA,CAAA;EAAI,WAAW;CAAgB,CAAA;CAE5D,aAAa,MAA0B,QAAU,GAAA,YAAA,CAAA,EAAA,WAAA,aAAA,CAAA,+BAAA,CAAA,CAAA;CAEjD,QAAQ,MAAM,SAAkB,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAGhC,cAAc,MAAM,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,cAAA,CAAA,+BAAA,CAAA,CAAA;CAEb,qBAAqB,KAAK;CAC1B,iBAA6C,KAAK;CAZ1D,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAA0B,MAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAA1B,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAA0B,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,iBAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,YAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,aAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,WAf1B,CACT;GAAE,SAAS;GAAa,aAAa;EAA0B,GAC/D;GACE,SAAS;GACT,mBAAqC;IACnC,MAAM;IACN,cAAc;IACd,WAAW;IACX,cAAc,OAAO,KAAK;IAC1B,mBAAmB;IACnB,qBAAqB;GACtB;EACF,CACF;EAAA,iBAAA;EAAA,UAAA;EAAA,UCzCH;EA0CA,QAAA,CAAA,24CAAA,ucAAA;EAAA,cAAA;GAAA;IAAA,MAAA;IAAA,MDvBI;IAAgB,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;IAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAChB;IAAU,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;IAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MACV;IAAoB,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;KAAA;IAAA;IAAA,SAAA,CAAA,cAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MACpB;IAAwB,UAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MACxB;IAA8B,UAAA;GAAA;EAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAoBrB,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAA0B,YAAA,CAAA;EA3BtC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAqB,SACtB;IACP;IACA;IACA;IACA;IACA;GACD;GAAA,iBAGgB,wBAAwB;GAAM,WACpC,CACT;IAAE,SAAS;IAAa,aAAW;GAA4B,GAC/D;IACE,SAAS;IACT,mBAAqC;KACnC,MAAM;KACN,cAAc;KACd,WAAW;KACX,cAAc,OAAO,KAAK;KAC1B,mBAAmB;KACnB,qBAAqB;IACtB;GACF,CACF;GAAA,UAAA;GAAA,QAAA,CAAA,24CAAA,ucAAA;EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AEnBH,IAAa,4BAAb,MAAa,0BAAyB;CACjB,UAAU,OAAO,YAAY;CACvC,cAAc,MAAM,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,cAAA,CAAA,+BAAA,CAAA,CAAA;CACvB,QAAQ,MAAM,SAAkB,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAChC,WAAW,MAAM,OAAK;EAAA,GAAA,YAAA,EAAA,WAAA,WAAA,+BAAA,CAAA;EAAI,WAAW;CAAgB,CAAA;CAC7C,UAAU,UAAwC,WAAU,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAC7E,cAAA;EACE,KAAK,QAAQ,oBAAoB,KAAK,QAAO,CAAE,EAAE,cAAc,MAAK,CAAE;EACtE,OAAO,UAAU,CAAC,CAAC,gBAAgB,KAAK,QAAQ,gBAAe,CAAE;CACnE;CACU,QAAQ,OAAY;EAC5B,KAAK,QAAQ,OAAO,IAAK,MAAM,OAA4B,KAAK;CAClE;CAZW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAyB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAzB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAyB,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,aAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,UAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,MAAA,EAAA,gBAAA,6BAAA;EAAA,aAAA,CAAA;GAAA,cAAA;GAAA,OAAA;GAAA,WAAA,CAAA,SAAA;GAAA,aAAA;GAAA,UAAA;EAAA,CAAA;EAAA,UAAA;EAAA,UCtBtC;EAuCA,QAAA,CAAA,g3BAAA;EAAA,cAAA;GAAA;IAAA,MAAA;IAAA,MAAA,GAAA;IAAA,UAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAA,GAAA;IAAA,UAAA;IAAA,QAAA,CAAA,OAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAA,GAAA;IAAA,UAAA;GAAA;EAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;ADjBa,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAyB,YAAA,CAAA;EARrC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAoB,SACrB,CAAC,cAAc;GAAC,iBAGR,wBAAwB;GAAM,MACzC,EAAE,OAAO,6BAA4B;GAAE,UAAA;GAAA,QAAA,CAAA,g3BAAA;EAAA,CAAA;CAOsB,CAAA;CAAA,sBAAA,CAAA;CAAA,gBAAA;EAAA,aAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,OAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,UAAA,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,WAAS,EAAA,UAAA,KAAA,CAAA;EAAA,CAAA;CAAA;AAAA,CAAA;AEG9E,IAAa,2BAAb,MAAa,yBAAwB;CAChB,UAAU,OAAO,YAAY;CACvC,QAAQ,MAAM,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAC1B,cAAA;EACE,KAAK,QAAQ,YAAY,IAAI,IAAI;EACjC,OAAO,UAAU,CAAC,CAAC,gBAAgB,KAAK,QAAQ,YAAY,IAAI,KAAK,CAAC;CACxE;CANW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAwB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAxB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAwB,cAAA;EAAA,UAAA;EAAA,QAAA,EAAA,OAAA;GAAA,mBAAA;GAAA,YAAA;GAAA,UAAA;GAAA,YAAA;GAAA,mBAAA;EAAA,EAAA;EAAA,MAAA;GAAA,YAAA,EAAA,QAAA,UAAA;GAAA,YAAA;IAAA,MAAA;IAAA,mBAAA;IAAA,6BAAA;GAAA;GAAA,gBAAA;EAAA;EAAA,UAAA;EAAA,UAXzB;EAAgB,UAAA;EAAA,QAAA,CAAA,0nDAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAWf,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAwB,YAAA,CAAA;EAbpC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAmB,UACnB;GAAgB,iBAET,wBAAwB;GAAM,MACzC;IACJ,OAAO;IACP,MAAM;IACN,QAAQ;IACR,qBAAqB;IACrB,+BAA+B;GAChC;GAAA,QAAA,CAAA,0nDAAA;EAAA,CAAA;;;;;;;;;;;;AAuBH,IAAa,4BAAb,MAAa,0BAAyB;CACjB,UAAU,OAAO,YAAY;CADrC,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAyB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAzB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAyB,cAAA;EAAA,UAAA;EAAA,MAAA;GAAA,YAAA,EAAA,QAAA,eAAA;GAAA,YAAA,EAAA,UAAA,sCAAA;GAAA,gBAAA;EAAA;EAAA,UAAA;EAAA,UAT1B;EAAgB,UAAA;EAAA,QAAA,CAAA,0nDAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AASf,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAyB,YAAA,CAAA;EAXrC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAoB,UACpB;GAAgB,iBAET,wBAAwB;GAAM,MACzC;IACJ,OAAO;IACP,MAAM;IACN,YAAY;GACb;GAAA,QAAA,CAAA,0nDAAA;EAAA,CAAA;;;AAMH,IAAI,cAAc;AAmBlB,IAAa,4BAAb,MAAa,0BAAyB;CACjB,UAAU,OAAO,YAAY;CACvC,KAAK,sBAAsB,EAAE;CAC7B,YAAY,GAAG,KAAK,GAAE;CACtB,UAAU,MAAM,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CACnB,QAAQ,MAAM,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CACP,UAAU,eAC3B,KAAK,QAAQ,aAAY,CAAE,CAAC,MAAM,SAAS,KAAK,UAAU,KAAK,EAAE,GAClE,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAED,WAAQ;EACN,IAAI,UAAS,KAAM,CAAC,KAAK,QAAO,KAAM,CAAC,KAAK,MAAK,GAC/C,QAAQ,MACN,0FAA0F;CAGhG;CAhBW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAyB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAzB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAyB,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,MAAA;GAAA,YAAA,EAAA,QAAA,QAAA;GAAA,YAAA;IAAA,wBAAA;IAAA,mBAAA;IAAA,UAAA;GAAA;GAAA,gBAAA;EAAA;EAAA,WAXzB,CACT;GAAE,SAAS;GAAoB,kBAAkB,OAAO,yBAAyB,CAAC,CAAC;EAAE,CACtF;EAAA,UAAA;EAAA,UALC;EAAkH,UAAA;EAAA,QAAA,CAAA,0nDAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAczG,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAyB,YAAA,CAAA;EAjBrC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAoB,UAE5B;GAAkH,iBAEnG,wBAAwB;GAAM,WACpC,CACT;IAAE,SAAS;IAAoB,kBAAkB,OAAM,yBAAA,CAA2B,CAAC;GAAE,CACtF;GAAA,MACK;IACJ,OAAO;IACP,MAAM;IACN,0BAA0B;IAC1B,qBAAqB;IACrB,YAAY;GACb;GAAA,QAAA,CAAA,0nDAAA;EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;AA6BH,IAAa,gCAAb,MAAa,8BAA6B;CACrB,UAAU,OAAO,YAAY;CACvC,eAAe,MAAM,OAAK;EAAA,GAAA,YAAA,EAAA,WAAA,eAAA,+BAAA,CAAA;EAAI,WAAW;CAAgB,CAAA;CAFvD,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAA6B,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAA7B,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAA6B,cAAA;EAAA,UAAA;EAAA,QAAA,EAAA,cAAA;GAAA,mBAAA;GAAA,YAAA;GAAA,UAAA;GAAA,YAAA;GAAA,mBAAA;EAAA,EAAA;EAAA,MAAA;GAAA,YAAA,EAAA,QAAA,eAAA;GAAA,YAAA,EAAA,UAAA,wDAAA;GAAA,gBAAA;EAAA;EAAA,UAAA;CAAA,CAAA;;AAA7B,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAA6B,YAAA,CAAA;EARzC,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,MAAM;IACJ,OAAO;IACP,MAAM;IACN,YAAY;GACb;EACF,CAAA;;;;;;;;;;;AA4BD,IAAa,2BAAb,MAAa,yBAAwB;CAChB,UAAU,OAAO,YAAY;CAC/B,OAAO,OAAO,UAAuB;CAC7C,QAAQ,OAAO,oBAAoB,EAAE,UAAU,KAAI,CAAE;CACrD,KAAK,KAAK,QAAQ,OAAM;CACxB,QAAQ,MAAM,SAAkB,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAChC,QAAQ,MAAM,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CACjB,WAAW,MAAyB,CAAA,GAAG,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;CACvC,gBAAgB,MAAM,OAAK;EAAA,GAAA,YAAA,EAAA,WAAA,gBAAA,+BAAA,CAAA;EAClC,OAAO;EACP,WAAW;CAAgB,CAAA;CAEpB,UAAU,MAAM,OAAK;EAAA,GAAA,YAAA,EAAA,WAAA,UAAA,+BAAA,CAAA;EAAI,WAAW;CAAgB,CAAA;CACpD,WAAW,OAAM;CAC1B,IAAI,WAAQ;EACV,OAAO,KAAK,cAAa;CAC3B;CACA,IAAI,UAAO;EACT,OAAO,KAAK,KAAK;CACnB;CACA,cAAA;EACE,OAAO,UAAU,CAAC,CAAC,gBAAgB,KAAK,QAAQ,WAAW,IAAI,CAAC;CAClE;CACA,WAAQ;EACN,KAAK,QAAQ,SAAS,IAAI;CAC5B;CACA,kBAAe;EACb,KAAK,QAAQ,SAAS,IAAI,KAAK,EAAE;CACnC;CACA,oBAAiB;EACf,IAAI,KAAK,QAAQ,SAAQ,MAAO,KAAK,IAAI,KAAK,QAAQ,SAAS,IAAI,IAAI;CACzE;CACA,SAAM;EACJ,KAAK,SAAS,KAAK,KAAK,MAAK,CAAE;CACjC;CACA,iBAAc;EACZ,KAAK,KAAK,cAAc,eAAe,EAAE,OAAO,UAAS,CAAE;CAC7D;CACU,cAAc,OAAmB;EACzC,IAAI,MAAM,gBAAgB,SAAS,KAAK,QAAQ,SAAS,IAAI;CAC/D;CAxCW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAwB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAxB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAwB,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,UAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,eAAA;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,SAAA,EAAA,UAAA,WAAA;EAAA,MAAA;GAAA,YAAA,EAAA,QAAA,SAAA;GAAA,WAAA;IAAA,eAAA;IAAA,aAAA;IAAA,SAAA;GAAA;GAAA,YAAA;IAAA,MAAA;IAAA,UAAA;IAAA,mBAAA;IAAA,qBAAA;IAAA,sBAAA;IAAA,2BAAA;IAAA,2BAAA;IAAA,0BAAA;GAAA;GAAA,gBAAA;EAAA;EAAA,UAAA;EAAA,UAnBjC;EAAqP,UAAA;EAAA,QAAA,CAAA,0nDAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAmB5O,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAwB,YAAA,CAAA;EAtBpC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAmB,UAE3B;GAAqP,iBAEtO,wBAAwB;GAAM,MACzC;IACJ,OAAO;IACP,MAAM;IACN,QAAQ;IACR,YAAY;IACZ,qBAAqB;IACrB,uBAAuB;IACvB,wBAAwB;IACxB,6BAA6B;IAC7B,6BAA6B;IAC7B,4BAA4B;IAC5B,iBAAiB;IACjB,eAAe;IACf,WAAW;GACZ;GAAA,QAAA,CAAA,0nDAAA;EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDH,IAAa,+BAAb,MAAa,6BAA4B;CAA5B,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,MAAA;GAAA,YAAA,EAAA,eAAA,OAAA;GAAA,gBAAA;EAAA;EAAA,UAAA;CAAA,CAAA;;AAA5B,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAA4B,YAAA,CAAA;EAJxC,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,MAAM;IAAE,OAAO;IAAyB,eAAe;GAAM;EAC9D,CAAA;;;ACtJD,MAAa,cAAc;CACzB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACQ"}
|
|
1
|
+
{"version":3,"file":"raqm-ui-command.mjs","names":[],"sources":["../../../projects/ui/command/command-context.ts","../../../projects/ui/command/command-score.ts","../../../projects/ui/command/command.component.ts","../../../projects/ui/command/command.component.html","../../../projects/ui/command/command-dialog.component.ts","../../../projects/ui/command/command-dialog.component.html","../../../projects/ui/command/command-input.component.ts","../../../projects/ui/command/command-input.component.html","../../../projects/ui/command/command-parts.component.ts","../../../projects/ui/command/public-api.ts"],"sourcesContent":["import { InjectionToken, Signal } from '@angular/core';\r\nimport type { RaqmCommandComponent } from './command.component';\r\n\r\nexport interface RaqmCommandOption {\r\n readonly id: string;\r\n readonly element: HTMLElement;\r\n readonly disabled: boolean;\r\n readonly checked: Signal<boolean>;\r\n readonly group: string | null;\r\n readonly value: Signal<string>;\r\n readonly title: Signal<string>;\r\n readonly keywords: Signal<readonly string[]>;\r\n setActiveStyles(): void;\r\n setInactiveStyles(): void;\r\n select(): void;\r\n scrollIntoView(): void;\r\n}\r\nexport const RAQM_COMMAND = new InjectionToken<RaqmCommandComponent>('RaqmCommand');\r\nexport const RAQM_COMMAND_GROUP = new InjectionToken<string>('RaqmCommandGroup');\r\n","/** @license\r\n * Typed translation of cmdk/src/command-score.ts:\r\n * https://github.com/dip/cmdk/blob/main/cmdk/src/command-score.ts\r\n *\r\n * MIT License\r\n * Copyright (c) 2022 Paco Coursey\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"Software\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included in all\r\n * copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\n * SOFTWARE.\r\n */\r\nconst SCORE_CONTINUE_MATCH = 1;\r\nconst SCORE_SPACE_WORD_JUMP = 0.9;\r\nconst SCORE_NON_SPACE_WORD_JUMP = 0.8;\r\nconst SCORE_CHARACTER_JUMP = 0.17;\r\nconst SCORE_TRANSPOSITION = 0.1;\r\nconst PENALTY_SKIPPED = 0.999;\r\nconst PENALTY_CASE_MISMATCH = 0.9999;\r\nconst PENALTY_NOT_COMPLETE = 0.99;\r\nconst IS_GAP_REGEXP = /[\\\\/_+.#\"@\\[({&]/;\r\nconst COUNT_GAPS_REGEXP = /[\\\\/_+.#\"@\\[({&]/g;\r\nconst IS_SPACE_REGEXP = /[\\s-]/;\r\nconst COUNT_SPACE_REGEXP = /[\\s-]/g;\r\n\r\nfunction commandScoreInner(\r\n string: string,\r\n abbreviation: string,\r\n lowerString: string,\r\n lowerAbbreviation: string,\r\n stringIndex: number,\r\n abbreviationIndex: number,\r\n memoizedResults: Record<string, number>,\r\n): number {\r\n if (abbreviationIndex === abbreviation.length) {\r\n return stringIndex === string.length ? SCORE_CONTINUE_MATCH : PENALTY_NOT_COMPLETE;\r\n }\r\n const memoizeKey = `${stringIndex},${abbreviationIndex}`;\r\n if (memoizedResults[memoizeKey] !== undefined) return memoizedResults[memoizeKey];\r\n const abbreviationChar = lowerAbbreviation.charAt(abbreviationIndex);\r\n let index = lowerString.indexOf(abbreviationChar, stringIndex);\r\n let highScore = 0;\r\n while (index >= 0) {\r\n let score = commandScoreInner(\r\n string,\r\n abbreviation,\r\n lowerString,\r\n lowerAbbreviation,\r\n index + 1,\r\n abbreviationIndex + 1,\r\n memoizedResults,\r\n );\r\n if (score > highScore) {\r\n if (index === stringIndex) {\r\n score *= SCORE_CONTINUE_MATCH;\r\n } else if (IS_GAP_REGEXP.test(string.charAt(index - 1))) {\r\n score *= SCORE_NON_SPACE_WORD_JUMP;\r\n const wordBreaks = string.slice(stringIndex, index - 1).match(COUNT_GAPS_REGEXP);\r\n if (wordBreaks && stringIndex > 0) score *= Math.pow(PENALTY_SKIPPED, wordBreaks.length);\r\n } else if (IS_SPACE_REGEXP.test(string.charAt(index - 1))) {\r\n score *= SCORE_SPACE_WORD_JUMP;\r\n const spaceBreaks = string.slice(stringIndex, index - 1).match(COUNT_SPACE_REGEXP);\r\n if (spaceBreaks && stringIndex > 0) score *= Math.pow(PENALTY_SKIPPED, spaceBreaks.length);\r\n } else {\r\n score *= SCORE_CHARACTER_JUMP;\r\n if (stringIndex > 0) score *= Math.pow(PENALTY_SKIPPED, index - stringIndex);\r\n }\r\n if (string.charAt(index) !== abbreviation.charAt(abbreviationIndex))\r\n score *= PENALTY_CASE_MISMATCH;\r\n }\r\n if (\r\n (score < SCORE_TRANSPOSITION &&\r\n lowerString.charAt(index - 1) === lowerAbbreviation.charAt(abbreviationIndex + 1)) ||\r\n (lowerAbbreviation.charAt(abbreviationIndex + 1) ===\r\n lowerAbbreviation.charAt(abbreviationIndex) &&\r\n lowerString.charAt(index - 1) !== lowerAbbreviation.charAt(abbreviationIndex))\r\n ) {\r\n const transposedScore = commandScoreInner(\r\n string,\r\n abbreviation,\r\n lowerString,\r\n lowerAbbreviation,\r\n index + 1,\r\n abbreviationIndex + 2,\r\n memoizedResults,\r\n );\r\n if (transposedScore * SCORE_TRANSPOSITION > score)\r\n score = transposedScore * SCORE_TRANSPOSITION;\r\n }\r\n if (score > highScore) highScore = score;\r\n index = lowerString.indexOf(abbreviationChar, index + 1);\r\n }\r\n memoizedResults[memoizeKey] = highScore;\r\n return highScore;\r\n}\r\n\r\nexport function normalizeCommandSearch(search: string): string {\r\n return search.toLowerCase().replace(COUNT_SPACE_REGEXP, ' ');\r\n}\r\n\r\nexport interface PreparedCommandText {\r\n /** Joined value and aliases; raw case is still needed for the case-mismatch penalty. */\r\n readonly text: string;\r\n readonly normalized: string;\r\n}\r\n\r\nexport function prepareCommandText(value: string, aliases: readonly string[]): PreparedCommandText {\r\n const text = aliases.length > 0 ? `${value} ${aliases.join(' ')}` : value;\r\n return { text, normalized: normalizeCommandSearch(text) };\r\n}\r\n\r\nexport function scoreCommandText(\r\n prepared: PreparedCommandText,\r\n search: string,\r\n normalizedSearch: string,\r\n): number {\r\n return commandScoreInner(prepared.text, search, prepared.normalized, normalizedSearch, 0, 0, {});\r\n}\r\n\r\nexport function commandScore(value: string, search: string, aliases: readonly string[]): number {\r\n return scoreCommandText(\r\n prepareCommandText(value, aliases),\r\n search,\r\n normalizeCommandSearch(search),\r\n );\r\n}\r\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n afterRenderEffect,\r\n Injector,\r\n booleanAttribute,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n model,\r\n signal,\r\n untracked,\r\n} from '@angular/core';\r\nimport { RAQM_COMMAND, RaqmCommandOption } from './command-context';\r\nimport {\r\n normalizeCommandSearch,\r\n prepareCommandText,\r\n scoreCommandText,\r\n type PreparedCommandText,\r\n} from './command-score';\r\n\r\nlet nextCommandId = 0;\r\n\r\n/** Inline command palette. Focus stays on its input; active options never receive DOM focus. */\r\n@Component({\r\n selector: 'raqm-command',\r\n templateUrl: './command.component.html',\r\n styleUrl: './command.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { class: 'raqm-command' },\r\n providers: [{ provide: RAQM_COMMAND, useExisting: RaqmCommandComponent }],\r\n})\r\nexport class RaqmCommandComponent {\r\n /** The application-authored accessible name for the listbox. */\r\n readonly label = input.required<string>();\r\n readonly search = model('');\r\n /** Whether keyboard navigation wraps at the ends; defaults to `false`. */\r\n readonly loop = input(false, { transform: booleanAttribute });\r\n /** Whether search filters and ranks rows; defaults to `true`. */\r\n readonly shouldFilter = input(true, { transform: booleanAttribute });\r\n readonly listId = `raqm-command-${++nextCommandId}-list`;\r\n readonly inputId = `${this.listId}-input`;\r\n readonly items = signal<readonly RaqmCommandOption[]>([]);\r\n readonly activeId = signal<string | null>(null);\r\n readonly listPresent = signal(false);\r\n readonly visibleItems = computed(() => this.items().filter((item) => this.matches(item)));\r\n /** Whether any registered row is checked; switches the list to multi-select. */\r\n readonly hasChecked = computed(() => this.items().some((item) => item.checked()));\r\n private readonly normalizedSearch = computed(() => normalizeCommandSearch(this.search()));\r\n // Item text is independent of the query, so it is prepared once per item text change.\r\n private readonly preparedItems = computed(() => {\r\n const prepared = new Map<RaqmCommandOption, PreparedCommandText>();\r\n for (const item of this.items()) {\r\n prepared.set(\r\n item,\r\n prepareCommandText(\r\n item.value().trim(),\r\n [item.title(), ...item.keywords()].filter(Boolean).map((alias) => alias.trim()),\r\n ),\r\n );\r\n }\r\n return prepared;\r\n });\r\n private readonly scores = computed(() => {\r\n const search = this.search();\r\n const normalizedSearch = this.normalizedSearch();\r\n const scores = new Map<RaqmCommandOption, number>();\r\n for (const [item, prepared] of this.preparedItems()) {\r\n scores.set(item, scoreCommandText(prepared, search, normalizedSearch));\r\n }\r\n return scores;\r\n });\r\n private readonly rankedItems = computed(() => {\r\n const items = [...this.items()];\r\n if (!this.shouldFilter() || !this.search()) return items;\r\n const scores = this.scores();\r\n const groupScores = new Map<string, number>();\r\n for (const item of items) {\r\n if (item.group !== null)\r\n groupScores.set(\r\n item.group,\r\n Math.max(groupScores.get(item.group) ?? 0, scores.get(item) ?? 0),\r\n );\r\n }\r\n const groupOrder = new Map(\r\n [...groupScores.keys()]\r\n .sort((a, b) => groupScores.get(b)! - groupScores.get(a)!)\r\n .map((group, index) => [group, index]),\r\n );\r\n return items.sort((a, b) => {\r\n if (a.group !== b.group) {\r\n if (a.group === null) return -1;\r\n if (b.group === null) return 1;\r\n return groupOrder.get(a.group)! - groupOrder.get(b.group)!;\r\n }\r\n // cmdk re-appends only enabled options when sorting; disabled rows stay\r\n // before those moved options within their original group.\r\n if (a.disabled !== b.disabled) return a.disabled ? -1 : 1;\r\n return (scores.get(b) ?? 0) - (scores.get(a) ?? 0);\r\n });\r\n });\r\n private readonly injector = inject(Injector);\r\n readonly contentInjector = Injector.create({\r\n providers: [{ provide: RAQM_COMMAND, useValue: this }],\r\n parent: this.injector,\r\n });\r\n private readonly manager = new ActiveDescendantKeyManager(this.rankedItems, this.injector)\r\n .withVerticalOrientation()\r\n .withHomeAndEnd()\r\n .skipPredicate((item) => item.disabled || !this.matches(item));\r\n private sequence = 0;\r\n private focusInput: (() => void) | undefined;\r\n private readonly originalChildren = new Map<HTMLElement, readonly ChildNode[]>();\r\n\r\n constructor() {\r\n // Mirror cmdk's DOM sorting so assistive reading order and the key manager\r\n // consume one sequence; restore declaration order when the query clears or filtering is off.\r\n afterRenderEffect(() => {\r\n const items = this.rankedItems();\r\n if (!this.shouldFilter() || !this.search()) {\r\n for (const [parent, children] of this.originalChildren) {\r\n this.placeAtEnd(\r\n parent,\r\n children.filter((child) => child.parentNode === parent),\r\n );\r\n }\r\n this.originalChildren.clear();\r\n return;\r\n }\r\n const remember = (parent: HTMLElement | null): void => {\r\n if (parent && !this.originalChildren.has(parent))\r\n this.originalChildren.set(parent, Array.from(parent.childNodes));\r\n };\r\n const childrenByParent = new Map<HTMLElement, HTMLElement[]>();\r\n const groups = new Set<HTMLElement>();\r\n for (const item of items) {\r\n const parent = item.element.parentElement;\r\n remember(parent);\r\n if (parent) {\r\n const children = childrenByParent.get(parent) ?? [];\r\n children.push(item.element);\r\n childrenByParent.set(parent, children);\r\n }\r\n const group = item.element.closest<HTMLElement>('.raqm-command-group');\r\n if (group) {\r\n remember(group.parentElement);\r\n groups.add(group);\r\n }\r\n }\r\n for (const [parent, children] of childrenByParent) this.placeAtEnd(parent, children);\r\n const groupsByParent = new Map<HTMLElement, HTMLElement[]>();\r\n for (const group of groups) {\r\n const parent = group.parentElement;\r\n if (!parent) continue;\r\n const siblings = groupsByParent.get(parent) ?? [];\r\n siblings.push(group);\r\n groupsByParent.set(parent, siblings);\r\n }\r\n for (const [parent, groupElements] of groupsByParent) this.placeAtEnd(parent, groupElements);\r\n });\r\n effect(() => {\r\n const items = this.rankedItems().filter((item) => this.matches(item) && !item.disabled);\r\n const search = this.search();\r\n untracked(() => {\r\n if (search !== this.lastSearch || !items.some((item) => item.id === this.activeId())) {\r\n this.manager.setActiveItem(items[0] ?? -1);\r\n this.activeId.set(items[0]?.id ?? null);\r\n }\r\n this.lastSearch = search;\r\n });\r\n });\r\n inject(DestroyRef).onDestroy(() => {\r\n this.manager.destroy();\r\n this.contentInjector.destroy();\r\n });\r\n }\r\n private lastSearch = '';\r\n\r\n /** Appends in order, but only when the matching suffix is not already in place. */\r\n private placeAtEnd(parent: HTMLElement, nodes: readonly ChildNode[]): void {\r\n if (nodes.length === 0) return;\r\n const children = parent.childNodes;\r\n const offset = children.length - nodes.length;\r\n if (offset >= 0) {\r\n let ordered = true;\r\n for (let index = 0; index < nodes.length; index++) {\r\n if (children[offset + index] !== nodes[index]) {\r\n ordered = false;\r\n break;\r\n }\r\n }\r\n if (ordered) return;\r\n }\r\n for (const node of nodes) parent.appendChild(node);\r\n }\r\n\r\n register(item: RaqmCommandOption): void {\r\n this.items.update((items) => [...items, item]);\r\n }\r\n unregister(item: RaqmCommandOption): void {\r\n this.items.update((items) => items.filter((candidate) => candidate !== item));\r\n }\r\n mintId(): string {\r\n return `${this.listId}-option-${++this.sequence}`;\r\n }\r\n registerInput(focus: () => void): void {\r\n this.focusInput = focus;\r\n }\r\n unregisterInput(): void {\r\n this.focusInput = undefined;\r\n }\r\n matches(item: RaqmCommandOption): boolean {\r\n return !this.shouldFilter() || !this.search() || (this.scores().get(item) ?? 0) > 0;\r\n }\r\n activate(item: RaqmCommandOption): void {\r\n if (item.disabled || !this.matches(item)) return;\r\n this.manager.setActiveItem(item);\r\n this.activeId.set(item.id);\r\n }\r\n select(item: RaqmCommandOption): void {\r\n if (item.disabled || !this.matches(item)) return;\r\n this.activate(item);\r\n this.focusInput?.();\r\n item.select();\r\n }\r\n keydown(event: KeyboardEvent): void {\r\n if (event.isComposing || event.altKey || event.ctrlKey || event.metaKey) return;\r\n if (event.key === 'Enter') {\r\n const item = this.items().find((item) => item.id === this.activeId());\r\n if (item) {\r\n event.preventDefault();\r\n this.select(item);\r\n }\r\n return;\r\n }\r\n if (!['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) return;\r\n this.manager.withWrap(this.loop()).onKeydown(event);\r\n const item = this.manager.activeItem;\r\n this.activeId.set(item?.id ?? null);\r\n item?.scrollIntoView();\r\n }\r\n}\r\n","<ng-content />\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Signal,\r\n booleanAttribute,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { RaqmButton } from '@raqm/ui/button';\r\nimport { RaqmDialogBaseComponent } from '@raqm/ui/dialog';\r\nimport { RaqmDialogTitleDirective, RaqmDialogDescriptionDirective } from '@raqm/ui/dialog';\r\nimport { RAQM_DIALOG, RAQM_DIALOG_POLICY, RaqmDialogPolicy } from '@raqm/ui/dialog';\r\nimport { RaqmCommandComponent } from './command.component';\r\n\r\n/** Command modal using Dialog's lifecycle. Project an ng-template[raqm-dialog-content]; a trigger is optional. */\r\n@Component({\r\n selector: 'raqm-command-dialog',\r\n imports: [\r\n NgTemplateOutlet,\r\n RaqmButton,\r\n RaqmCommandComponent,\r\n RaqmDialogTitleDirective,\r\n RaqmDialogDescriptionDirective,\r\n ],\r\n templateUrl: './command-dialog.component.html',\r\n styleUrls: ['../dialog/dialog.component.scss', './command-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n { provide: RAQM_DIALOG, useExisting: RaqmCommandDialogComponent },\r\n {\r\n provide: RAQM_DIALOG_POLICY,\r\n useFactory: (): RaqmDialogPolicy => ({\r\n role: 'dialog',\r\n contentClass: 'raqm-command-dialog-content',\r\n paneClass: 'raqm-command-dialog-pane',\r\n touchOpening: signal(false),\r\n dismissOnBackdrop: true,\r\n allowWithoutTrigger: true,\r\n }),\r\n },\r\n ],\r\n})\r\nexport class RaqmCommandDialogComponent extends RaqmDialogBaseComponent {\r\n /** Whether the root renders its own close control; defaults to `false`. */\r\n readonly showCloseButton = input(false, { transform: booleanAttribute });\r\n\r\n readonly closeLabel = input<string | undefined>(undefined);\r\n\r\n readonly title = input.required<string>();\r\n\r\n /** Optional supporting copy under the title. */\r\n readonly description = input('');\r\n\r\n protected readonly closeButtonVisible = this.showCloseButton;\r\n protected readonly closeLabelText: Signal<string | undefined> = this.closeLabel;\r\n}\r\n","<ng-content />\r\n<ng-template #panel>\r\n <div\r\n class=\"raqm-dialog-content raqm-command-dialog-content\"\r\n [attr.dir]=\"panelDir()\"\r\n [class.raqm-dialog-content--entering]=\"entering()\"\r\n [class.raqm-dialog-content--closing]=\"closing()\"\r\n >\r\n <header class=\"raqm-command-dialog-header\">\r\n <h2 raqm-dialog-title>{{ title() }}</h2>\r\n @if (description()) {\r\n <p raqm-dialog-description>{{ description() }}</p>\r\n }\r\n </header>\r\n <raqm-command #command [label]=\"title()\"\r\n ><ng-container\r\n [ngTemplateOutlet]=\"contentTemplate()\"\r\n [ngTemplateOutletInjector]=\"command.contentInjector\"\r\n /></raqm-command>\r\n @if (closeButtonVisible()) {\r\n <button\r\n raqm-button=\"ghost\"\r\n icon-small\r\n class=\"raqm-dialog-close\"\r\n [attr.aria-label]=\"closeLabelText()\"\r\n (click)=\"onCloseButtonClick()\"\r\n >\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n >\r\n <path d=\"m18 6-12 12M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n }\r\n </div>\r\n</ng-template>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n booleanAttribute,\r\n inject,\r\n input,\r\n viewChild,\r\n ElementRef,\r\n} from '@angular/core';\r\nimport { RaqmInputGroup } from '@raqm/ui/input-group';\r\nimport { RAQM_COMMAND } from './command-context';\r\n\r\n/** Native search input composed with Input Group, owning the palette's single tab stop. */\r\n@Component({\r\n selector: 'raqm-command-input',\r\n imports: [RaqmInputGroup],\r\n templateUrl: './command-input.component.html',\r\n styleUrl: './command-input.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { class: 'raqm-command-input-wrapper' },\r\n})\r\nexport class RaqmCommandInputComponent {\r\n protected readonly command = inject(RAQM_COMMAND);\r\n readonly placeholder = input('');\r\n readonly label = input.required<string>();\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n private readonly control = viewChild<ElementRef<HTMLInputElement>>('control');\r\n constructor() {\r\n this.command.registerInput(() => this.control()?.nativeElement.focus());\r\n inject(DestroyRef).onDestroy(() => this.command.unregisterInput());\r\n }\r\n protected onInput(event: Event): void {\r\n this.command.search.set((event.target as HTMLInputElement).value);\r\n }\r\n}\r\n","<raqm-input-group class=\"raqm-command-input-group\">\r\n <input\r\n #control\r\n raqm-input-group-control\r\n class=\"raqm-command-input\"\r\n type=\"text\"\r\n role=\"combobox\"\r\n autocomplete=\"off\"\r\n spellcheck=\"false\"\r\n aria-autocomplete=\"list\"\r\n aria-haspopup=\"listbox\"\r\n [id]=\"command.inputId\"\r\n [attr.aria-label]=\"label()\"\r\n [attr.aria-expanded]=\"command.listPresent()\"\r\n [attr.aria-controls]=\"command.listPresent() ? command.listId : null\"\r\n [attr.aria-activedescendant]=\"command.listPresent() ? command.activeId() : null\"\r\n [placeholder]=\"placeholder()\"\r\n [disabled]=\"disabled()\"\r\n [value]=\"command.search()\"\r\n (input)=\"onInput($event)\"\r\n (keydown)=\"command.keydown($event)\"\r\n />\r\n <raqm-input-group-addon>\r\n <svg\r\n class=\"raqm-command-input-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n >\r\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\r\n <path d=\"m21 21-4.3-4.3\" />\r\n </svg>\r\n </raqm-input-group-addon>\r\n</raqm-input-group>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n Directive,\r\n ElementRef,\r\n OnInit,\r\n booleanAttribute,\r\n computed,\r\n inject,\r\n input,\r\n isDevMode,\r\n output,\r\n} from '@angular/core';\r\nimport { RAQM_COMMAND, RAQM_COMMAND_GROUP, RaqmCommandOption } from './command-context';\r\n\r\n/** Scrollable, named result list for the input's combobox. */\r\n@Component({\r\n selector: 'raqm-command-list',\r\n template: '<ng-content />',\r\n styleUrl: './command-parts.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'raqm-command-list',\r\n role: 'listbox',\r\n '[id]': 'command.listId',\r\n '[attr.aria-label]': 'label() || command.label()',\r\n '[attr.aria-multiselectable]': 'command.hasChecked() ? \"true\" : null',\r\n },\r\n})\r\nexport class RaqmCommandListComponent {\r\n protected readonly command = inject(RAQM_COMMAND);\r\n readonly label = input('');\r\n constructor() {\r\n this.command.listPresent.set(true);\r\n inject(DestroyRef).onDestroy(() => this.command.listPresent.set(false));\r\n }\r\n}\r\n\r\n/** Empty-results message, including when filtering removes every group. */\r\n@Component({\r\n selector: 'raqm-command-empty',\r\n template: '<ng-content />',\r\n styleUrl: './command-parts.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'raqm-command-empty',\r\n role: 'presentation',\r\n '[hidden]': 'command.visibleItems().length !== 0',\r\n },\r\n})\r\nexport class RaqmCommandEmptyComponent {\r\n protected readonly command = inject(RAQM_COMMAND);\r\n}\r\n\r\nlet nextGroupId = 0;\r\n/** Named option group; hides its heading with its last filtered-out item. */\r\n@Component({\r\n selector: 'raqm-command-group',\r\n template:\r\n '@if (heading()) { <div class=\"raqm-command-group-heading\" [id]=\"headingId\">{{ heading() }}</div> }<ng-content />',\r\n styleUrl: './command-parts.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n { provide: RAQM_COMMAND_GROUP, useFactory: () => inject(RaqmCommandGroupComponent).id },\r\n ],\r\n host: {\r\n class: 'raqm-command-group',\r\n role: 'group',\r\n '[attr.aria-labelledby]': 'heading() ? headingId : null',\r\n '[attr.aria-label]': 'heading() ? null : label()',\r\n '[hidden]': '!visible()',\r\n },\r\n})\r\nexport class RaqmCommandGroupComponent implements OnInit {\r\n protected readonly command = inject(RAQM_COMMAND);\r\n readonly id = `raqm-command-group-${++nextGroupId}`;\r\n readonly headingId = `${this.id}-heading`;\r\n readonly heading = input('');\r\n readonly label = input('');\r\n protected readonly visible = computed(() =>\r\n this.command.visibleItems().some((item) => item.group === this.id),\r\n );\r\n\r\n ngOnInit(): void {\r\n if (isDevMode() && !this.heading() && !this.label()) {\r\n console.error(\r\n '[raqm-command-group] The group has no accessible name. Provide a `heading` or a `label`.',\r\n );\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[raqm-command-separator]',\r\n host: {\r\n class: 'raqm-command-separator',\r\n role: 'presentation',\r\n '[hidden]': '!alwaysRender() && command.search().trim().length > 0',\r\n },\r\n})\r\nexport class RaqmCommandSeparatorDirective {\r\n protected readonly command = inject(RAQM_COMMAND);\r\n readonly alwaysRender = input(false, { transform: booleanAttribute });\r\n}\r\n\r\n@Component({\r\n selector: 'raqm-command-item',\r\n template:\r\n '<ng-content /><svg class=\"raqm-command-item-indicator\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\" focusable=\"false\"><path d=\"m20 6-11 11-5-5\"/></svg>',\r\n styleUrl: './command-parts.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'raqm-command-item',\r\n role: 'option',\r\n '[id]': 'id',\r\n '[hidden]': '!command.matches(this)',\r\n '[attr.aria-label]': 'title() || value()',\r\n '[attr.aria-checked]': 'command.hasChecked() ? (checked() ? \"true\" : \"false\") : null',\r\n '[attr.aria-disabled]': 'disabled ? \"true\" : null',\r\n '[attr.data-raqm-selected]': 'command.activeId() === id ? \"true\" : null',\r\n '[attr.data-raqm-disabled]': 'disabled ? \"true\" : null',\r\n '[attr.data-raqm-checked]': 'checked() ? \"true\" : null',\r\n '(pointermove)': 'onPointerMove($event)',\r\n '(mousedown)': '$event.preventDefault()',\r\n '(click)': 'command.select(this)',\r\n },\r\n})\r\nexport class RaqmCommandItemComponent implements RaqmCommandOption, OnInit {\r\n protected readonly command = inject(RAQM_COMMAND);\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n readonly group = inject(RAQM_COMMAND_GROUP, { optional: true });\r\n readonly id = this.command.mintId();\r\n readonly value = input.required<string>();\r\n readonly title = input('');\r\n readonly keywords = input<readonly string[]>([]);\r\n readonly disabledValue = input(false, {\r\n alias: 'disabled',\r\n transform: booleanAttribute,\r\n });\r\n readonly checked = input(false, { transform: booleanAttribute });\r\n readonly selected = output<string>();\r\n get disabled(): boolean {\r\n return this.disabledValue();\r\n }\r\n get element(): HTMLElement {\r\n return this.host.nativeElement;\r\n }\r\n constructor() {\r\n inject(DestroyRef).onDestroy(() => this.command.unregister(this));\r\n }\r\n ngOnInit(): void {\r\n this.command.register(this);\r\n }\r\n setActiveStyles(): void {\r\n this.command.activeId.set(this.id);\r\n }\r\n setInactiveStyles(): void {\r\n if (this.command.activeId() === this.id) this.command.activeId.set(null);\r\n }\r\n select(): void {\r\n this.selected.emit(this.value());\r\n }\r\n scrollIntoView(): void {\r\n this.host.nativeElement.scrollIntoView({ block: 'nearest' });\r\n }\r\n protected onPointerMove(event: PointerEvent): void {\r\n if (event.pointerType !== 'touch') this.command.activate(this);\r\n }\r\n}\r\n\r\n/** Display-only shortcut. This never registers a global keyboard binding. */\r\n@Directive({\r\n selector: '[raqm-command-shortcut]',\r\n host: { class: 'raqm-command-shortcut', 'aria-hidden': 'true' },\r\n})\r\nexport class RaqmCommandShortcutDirective {}\r\n","// Public API for `@raqm/ui/command`; the root entry point re-exports these symbols.\r\nimport { RaqmCommandComponent } from './command.component';\r\nimport { RaqmCommandDialogComponent } from './command-dialog.component';\r\nimport { RaqmCommandInputComponent } from './command-input.component';\r\nimport {\r\n RaqmCommandEmptyComponent,\r\n RaqmCommandGroupComponent,\r\n RaqmCommandItemComponent,\r\n RaqmCommandListComponent,\r\n RaqmCommandSeparatorDirective,\r\n RaqmCommandShortcutDirective,\r\n} from './command-parts.component';\r\n\r\nexport {\r\n RaqmCommandComponent,\r\n RaqmCommandDialogComponent,\r\n RaqmCommandInputComponent,\r\n RaqmCommandListComponent,\r\n RaqmCommandEmptyComponent,\r\n RaqmCommandGroupComponent,\r\n RaqmCommandSeparatorDirective,\r\n RaqmCommandItemComponent,\r\n RaqmCommandShortcutDirective,\r\n};\r\n\r\nexport const RaqmCommand = [\r\n RaqmCommandComponent,\r\n RaqmCommandDialogComponent,\r\n RaqmCommandInputComponent,\r\n RaqmCommandListComponent,\r\n RaqmCommandEmptyComponent,\r\n RaqmCommandGroupComponent,\r\n RaqmCommandSeparatorDirective,\r\n RaqmCommandItemComponent,\r\n RaqmCommandShortcutDirective,\r\n] as const;\r\n"],"mappings":"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"}
|
|
@@ -667,7 +667,6 @@ var RaqmDialogBaseComponent = class RaqmDialogBaseComponent {
|
|
|
667
667
|
}],
|
|
668
668
|
ngImport: i0,
|
|
669
669
|
template: "<ng-content />\r\n\r\n<!-- The CDK container, not this wrapper, is the role=dialog element. -->\r\n<ng-template #panel>\r\n <div\r\n class=\"raqm-dialog-content\"\r\n [class]=\"policy?.contentClass ?? ''\"\r\n [attr.data-raqm-small]=\"policy?.small?.() ? '' : null\"\r\n [attr.data-raqm-side]=\"policy?.side?.() ?? null\"\r\n [attr.dir]=\"panelDir()\"\r\n [class.raqm-dialog-content--entering]=\"entering()\"\r\n [class.raqm-dialog-content--closing]=\"closing()\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"contentTemplate()\" />\r\n\r\n <!-- showCloseButton=false hides only this control; Escape and backdrop dismissal still close. -->\r\n @if (closeButtonVisible()) {\r\n <button\r\n raqm-button=\"ghost\"\r\n icon-small\r\n class=\"raqm-dialog-close\"\r\n [attr.aria-label]=\"closeLabelText()\"\r\n (click)=\"onCloseButtonClick()\"\r\n >\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n >\r\n <path d=\"M18 6 6 18\" />\r\n <path d=\"m6 6 12 12\" />\r\n </svg>\r\n </button>\r\n }\r\n </div>\r\n</ng-template>\r\n",
|
|
670
|
-
styles: [":host{display:contents}.raqm-dialog-content{position:relative;display:grid;gap:calc(var(--raqm-spacing) * 6);box-sizing:border-box;inline-size:calc(100vw - 2rem);inline-size:calc(100dvw - 2rem);max-inline-size:100%;max-block-size:calc(100vh - 2rem);max-block-size:calc(100dvh - 2rem);overflow:auto;padding:calc(var(--raqm-spacing) * 6);border-radius:var(--raqm-radius-xl);background-color:var(--raqm-popover);color:var(--raqm-popover-foreground);font-size:var(--raqm-font-size-sm);line-height:1.25rem;box-shadow:0 0 0 1px color-mix(in oklch,var(--raqm-foreground) 10%,transparent);outline:none}@media(min-width:40rem){.raqm-dialog-content{inline-size:24rem}}.raqm-dialog-content--entering{animation:raqm-dialog-in var(--raqm-duration-fast) var(--raqm-ease-out)}@keyframes raqm-dialog-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:none}}.raqm-dialog-content--closing{opacity:0;transform:scale(.95);transition:opacity var(--raqm-duration-fast) var(--raqm-ease-out),transform var(--raqm-duration-fast) var(--raqm-ease-out)}@media(prefers-reduced-motion:reduce){.raqm-dialog-content,.raqm-dialog-content--closing{animation:none;transition:none}}.raqm-dialog-close{position:absolute;inset-block-start:calc(var(--raqm-spacing) * 4.5);inset-inline-end:calc(var(--raqm-spacing) * 4.5)}@media(forced-colors:active){.raqm-dialog-close{border-color:ButtonText}.raqm-dialog-content{border:1px solid CanvasText}}\n"],
|
|
671
670
|
dependencies: [{
|
|
672
671
|
kind: "directive",
|
|
673
672
|
type: NgTemplateOutlet,
|
|
@@ -708,8 +707,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
708
707
|
selector: "raqm-dialog-base",
|
|
709
708
|
imports: [NgTemplateOutlet, RaqmButton],
|
|
710
709
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
711
|
-
template: "<ng-content />\r\n\r\n<!-- The CDK container, not this wrapper, is the role=dialog element. -->\r\n<ng-template #panel>\r\n <div\r\n class=\"raqm-dialog-content\"\r\n [class]=\"policy?.contentClass ?? ''\"\r\n [attr.data-raqm-small]=\"policy?.small?.() ? '' : null\"\r\n [attr.data-raqm-side]=\"policy?.side?.() ?? null\"\r\n [attr.dir]=\"panelDir()\"\r\n [class.raqm-dialog-content--entering]=\"entering()\"\r\n [class.raqm-dialog-content--closing]=\"closing()\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"contentTemplate()\" />\r\n\r\n <!-- showCloseButton=false hides only this control; Escape and backdrop dismissal still close. -->\r\n @if (closeButtonVisible()) {\r\n <button\r\n raqm-button=\"ghost\"\r\n icon-small\r\n class=\"raqm-dialog-close\"\r\n [attr.aria-label]=\"closeLabelText()\"\r\n (click)=\"onCloseButtonClick()\"\r\n >\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n >\r\n <path d=\"M18 6 6 18\" />\r\n <path d=\"m6 6 12 12\" />\r\n </svg>\r\n </button>\r\n }\r\n </div>\r\n</ng-template>\r\n"
|
|
712
|
-
styles: [":host{display:contents}.raqm-dialog-content{position:relative;display:grid;gap:calc(var(--raqm-spacing) * 6);box-sizing:border-box;inline-size:calc(100vw - 2rem);inline-size:calc(100dvw - 2rem);max-inline-size:100%;max-block-size:calc(100vh - 2rem);max-block-size:calc(100dvh - 2rem);overflow:auto;padding:calc(var(--raqm-spacing) * 6);border-radius:var(--raqm-radius-xl);background-color:var(--raqm-popover);color:var(--raqm-popover-foreground);font-size:var(--raqm-font-size-sm);line-height:1.25rem;box-shadow:0 0 0 1px color-mix(in oklch,var(--raqm-foreground) 10%,transparent);outline:none}@media(min-width:40rem){.raqm-dialog-content{inline-size:24rem}}.raqm-dialog-content--entering{animation:raqm-dialog-in var(--raqm-duration-fast) var(--raqm-ease-out)}@keyframes raqm-dialog-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:none}}.raqm-dialog-content--closing{opacity:0;transform:scale(.95);transition:opacity var(--raqm-duration-fast) var(--raqm-ease-out),transform var(--raqm-duration-fast) var(--raqm-ease-out)}@media(prefers-reduced-motion:reduce){.raqm-dialog-content,.raqm-dialog-content--closing{animation:none;transition:none}}.raqm-dialog-close{position:absolute;inset-block-start:calc(var(--raqm-spacing) * 4.5);inset-inline-end:calc(var(--raqm-spacing) * 4.5)}@media(forced-colors:active){.raqm-dialog-close{border-color:ButtonText}.raqm-dialog-content{border:1px solid CanvasText}}\n"]
|
|
710
|
+
template: "<ng-content />\r\n\r\n<!-- The CDK container, not this wrapper, is the role=dialog element. -->\r\n<ng-template #panel>\r\n <div\r\n class=\"raqm-dialog-content\"\r\n [class]=\"policy?.contentClass ?? ''\"\r\n [attr.data-raqm-small]=\"policy?.small?.() ? '' : null\"\r\n [attr.data-raqm-side]=\"policy?.side?.() ?? null\"\r\n [attr.dir]=\"panelDir()\"\r\n [class.raqm-dialog-content--entering]=\"entering()\"\r\n [class.raqm-dialog-content--closing]=\"closing()\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"contentTemplate()\" />\r\n\r\n <!-- showCloseButton=false hides only this control; Escape and backdrop dismissal still close. -->\r\n @if (closeButtonVisible()) {\r\n <button\r\n raqm-button=\"ghost\"\r\n icon-small\r\n class=\"raqm-dialog-close\"\r\n [attr.aria-label]=\"closeLabelText()\"\r\n (click)=\"onCloseButtonClick()\"\r\n >\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n >\r\n <path d=\"M18 6 6 18\" />\r\n <path d=\"m6 6 12 12\" />\r\n </svg>\r\n </button>\r\n }\r\n </div>\r\n</ng-template>\r\n"
|
|
713
711
|
}]
|
|
714
712
|
}],
|
|
715
713
|
ctorParameters: () => [],
|