@mantine/spotlight 9.0.0-alpha.5 → 9.0.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/Spotlight.cjs +85 -75
- package/cjs/Spotlight.cjs.map +1 -1
- package/cjs/Spotlight.context.cjs +6 -10
- package/cjs/Spotlight.context.cjs.map +1 -1
- package/cjs/Spotlight.module.cjs +21 -0
- package/cjs/Spotlight.module.cjs.map +1 -0
- package/cjs/SpotlightAction.cjs +75 -92
- package/cjs/SpotlightAction.cjs.map +1 -1
- package/cjs/SpotlightActionsGroup.cjs +23 -29
- package/cjs/SpotlightActionsGroup.cjs.map +1 -1
- package/cjs/SpotlightActionsList.cjs +35 -38
- package/cjs/SpotlightActionsList.cjs.map +1 -1
- package/cjs/SpotlightEmpty.cjs +21 -19
- package/cjs/SpotlightEmpty.cjs.map +1 -1
- package/cjs/SpotlightFooter.cjs +21 -19
- package/cjs/SpotlightFooter.cjs.map +1 -1
- package/cjs/SpotlightRoot.cjs +92 -120
- package/cjs/SpotlightRoot.cjs.map +1 -1
- package/cjs/SpotlightSearch.cjs +48 -60
- package/cjs/SpotlightSearch.cjs.map +1 -1
- package/cjs/default-spotlight-filter.cjs +41 -46
- package/cjs/default-spotlight-filter.cjs.map +1 -1
- package/cjs/get-hotkeys.cjs +10 -15
- package/cjs/get-hotkeys.cjs.map +1 -1
- package/cjs/index.cjs +27 -32
- package/cjs/is-actions-group.cjs +7 -7
- package/cjs/is-actions-group.cjs.map +1 -1
- package/cjs/limit-actions.cjs +23 -28
- package/cjs/limit-actions.cjs.map +1 -1
- package/cjs/spotlight.store.cjs +98 -117
- package/cjs/spotlight.store.cjs.map +1 -1
- package/esm/Spotlight.context.mjs +7 -8
- package/esm/Spotlight.context.mjs.map +1 -1
- package/esm/Spotlight.mjs +74 -62
- package/esm/Spotlight.mjs.map +1 -1
- package/esm/Spotlight.module.mjs +21 -0
- package/esm/Spotlight.module.mjs.map +1 -0
- package/esm/SpotlightAction.mjs +74 -89
- package/esm/SpotlightAction.mjs.map +1 -1
- package/esm/SpotlightActionsGroup.mjs +22 -26
- package/esm/SpotlightActionsGroup.mjs.map +1 -1
- package/esm/SpotlightActionsList.mjs +34 -35
- package/esm/SpotlightActionsList.mjs.map +1 -1
- package/esm/SpotlightEmpty.mjs +20 -16
- package/esm/SpotlightEmpty.mjs.map +1 -1
- package/esm/SpotlightFooter.mjs +20 -16
- package/esm/SpotlightFooter.mjs.map +1 -1
- package/esm/SpotlightRoot.mjs +91 -117
- package/esm/SpotlightRoot.mjs.map +1 -1
- package/esm/SpotlightSearch.mjs +47 -57
- package/esm/SpotlightSearch.mjs.map +1 -1
- package/esm/default-spotlight-filter.mjs +41 -44
- package/esm/default-spotlight-filter.mjs.map +1 -1
- package/esm/get-hotkeys.mjs +10 -13
- package/esm/get-hotkeys.mjs.map +1 -1
- package/esm/index.mjs +11 -11
- package/esm/is-actions-group.mjs +7 -5
- package/esm/is-actions-group.mjs.map +1 -1
- package/esm/limit-actions.mjs +23 -26
- package/esm/limit-actions.mjs.map +1 -1
- package/esm/spotlight.store.mjs +96 -100
- package/esm/spotlight.store.mjs.map +1 -1
- package/package.json +4 -4
- package/cjs/Spotlight.module.css.cjs +0 -7
- package/cjs/Spotlight.module.css.cjs.map +0 -1
- package/cjs/index.cjs.map +0 -1
- package/esm/Spotlight.module.css.mjs +0 -5
- package/esm/Spotlight.module.css.mjs.map +0 -1
- package/esm/index.mjs.map +0 -1
package/cjs/spotlight.store.cjs
CHANGED
|
@@ -1,161 +1,142 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
query: "",
|
|
13
|
-
registeredActions: /* @__PURE__ */ new Set()
|
|
1
|
+
"use client";
|
|
2
|
+
let _mantine_hooks = require("@mantine/hooks");
|
|
3
|
+
let _mantine_store = require("@mantine/store");
|
|
4
|
+
//#region packages/@mantine/spotlight/src/spotlight.store.ts
|
|
5
|
+
const createSpotlightStore = () => (0, _mantine_store.createStore)({
|
|
6
|
+
opened: false,
|
|
7
|
+
empty: false,
|
|
8
|
+
selected: -1,
|
|
9
|
+
listId: "",
|
|
10
|
+
query: "",
|
|
11
|
+
registeredActions: /* @__PURE__ */ new Set()
|
|
14
12
|
});
|
|
15
|
-
const useSpotlight = (store
|
|
13
|
+
const useSpotlight = (store) => (0, _mantine_store.useStore)(store);
|
|
16
14
|
function updateSpotlightStateAction(update, store) {
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
const state = store.getState();
|
|
16
|
+
store.setState({
|
|
17
|
+
...state,
|
|
18
|
+
...update(store.getState())
|
|
19
|
+
});
|
|
19
20
|
}
|
|
20
21
|
function openSpotlightAction(store) {
|
|
21
|
-
|
|
22
|
+
updateSpotlightStateAction(() => ({
|
|
23
|
+
opened: true,
|
|
24
|
+
selected: -1
|
|
25
|
+
}), store);
|
|
22
26
|
}
|
|
23
27
|
function closeSpotlightAction(store) {
|
|
24
|
-
|
|
28
|
+
updateSpotlightStateAction(() => ({ opened: false }), store);
|
|
25
29
|
}
|
|
26
30
|
function toggleSpotlightAction(store) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
+
updateSpotlightStateAction((state) => ({
|
|
32
|
+
opened: !state.opened,
|
|
33
|
+
selected: state.opened ? state.selected : -1
|
|
34
|
+
}), store);
|
|
31
35
|
}
|
|
32
36
|
function setSelectedAction(index, store) {
|
|
33
|
-
|
|
37
|
+
store.updateState((state) => ({
|
|
38
|
+
...state,
|
|
39
|
+
selected: index
|
|
40
|
+
}));
|
|
34
41
|
}
|
|
35
42
|
function setListId(id, store) {
|
|
36
|
-
|
|
43
|
+
store.updateState((state) => ({
|
|
44
|
+
...state,
|
|
45
|
+
listId: id
|
|
46
|
+
}));
|
|
37
47
|
}
|
|
38
48
|
function findElementByQuerySelector(selector, root = document) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
const nestedElement = findElementByQuerySelector(selector, child);
|
|
53
|
-
if (nestedElement) {
|
|
54
|
-
return nestedElement;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return null;
|
|
49
|
+
const element = root.querySelector(selector);
|
|
50
|
+
if (element) return element;
|
|
51
|
+
const children = root instanceof ShadowRoot ? root.host.children : root.children;
|
|
52
|
+
for (let i = 0; i < children.length; i += 1) {
|
|
53
|
+
const child = children[i];
|
|
54
|
+
if (child.shadowRoot) {
|
|
55
|
+
const shadowElement = findElementByQuerySelector(selector, child.shadowRoot);
|
|
56
|
+
if (shadowElement) return shadowElement;
|
|
57
|
+
}
|
|
58
|
+
const nestedElement = findElementByQuerySelector(selector, child);
|
|
59
|
+
if (nestedElement) return nestedElement;
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
58
62
|
}
|
|
59
63
|
function selectAction(index, store) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
return selectedIndex;
|
|
64
|
+
const state = store.getState();
|
|
65
|
+
const actionsList = state.listId ? findElementByQuerySelector(`#${state.listId}`) : null;
|
|
66
|
+
const selected = actionsList?.querySelector("[data-selected]");
|
|
67
|
+
const actions = actionsList?.querySelectorAll("[data-action]") ?? [];
|
|
68
|
+
const selectedIndex = (0, _mantine_hooks.clamp)(index === -1 ? actions.length - 1 : index === actions.length ? 0 : index, 0, actions.length - 1);
|
|
69
|
+
selected?.removeAttribute("data-selected");
|
|
70
|
+
actions[selectedIndex]?.scrollIntoView({ block: "nearest" });
|
|
71
|
+
actions[selectedIndex]?.setAttribute("data-selected", "true");
|
|
72
|
+
setSelectedAction(selectedIndex, store);
|
|
73
|
+
return selectedIndex;
|
|
71
74
|
}
|
|
72
75
|
function selectNextAction(store) {
|
|
73
|
-
|
|
76
|
+
return selectAction(store.getState().selected + 1, store);
|
|
74
77
|
}
|
|
75
78
|
function selectPreviousAction(store) {
|
|
76
|
-
|
|
79
|
+
return selectAction(store.getState().selected - 1, store);
|
|
77
80
|
}
|
|
78
81
|
function triggerSelectedAction(store) {
|
|
79
|
-
|
|
80
|
-
const selected = findElementByQuerySelector(
|
|
81
|
-
`#${state.listId} [data-selected]`
|
|
82
|
-
);
|
|
83
|
-
selected?.click();
|
|
82
|
+
findElementByQuerySelector(`#${store.getState().listId} [data-selected]`)?.click();
|
|
84
83
|
}
|
|
85
84
|
function registerAction(id, store) {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
85
|
+
const state = store.getState();
|
|
86
|
+
state.registeredActions.add(id);
|
|
87
|
+
return () => {
|
|
88
|
+
state.registeredActions.delete(id);
|
|
89
|
+
};
|
|
91
90
|
}
|
|
92
91
|
function setQuery(query, store) {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
empty: state.query.trim().length > 0 && state.registeredActions.size === 0 || false
|
|
99
|
-
}),
|
|
100
|
-
store
|
|
101
|
-
);
|
|
102
|
-
});
|
|
92
|
+
updateSpotlightStateAction(() => ({ query }), store);
|
|
93
|
+
Promise.resolve().then(() => {
|
|
94
|
+
selectAction(0, store);
|
|
95
|
+
updateSpotlightStateAction((state) => ({ empty: state.query.trim().length > 0 && state.registeredActions.size === 0 || false }), store);
|
|
96
|
+
});
|
|
103
97
|
}
|
|
104
98
|
function clearSpotlightState({ clearQuery }, store) {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
99
|
+
store.updateState((state) => ({
|
|
100
|
+
...state,
|
|
101
|
+
selected: -1,
|
|
102
|
+
query: clearQuery ? "" : state.query,
|
|
103
|
+
empty: clearQuery ? false : state.empty
|
|
104
|
+
}));
|
|
111
105
|
}
|
|
112
106
|
const spotlightActions = {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
107
|
+
open: openSpotlightAction,
|
|
108
|
+
close: closeSpotlightAction,
|
|
109
|
+
toggle: toggleSpotlightAction,
|
|
110
|
+
updateState: updateSpotlightStateAction,
|
|
111
|
+
setSelectedAction,
|
|
112
|
+
setListId,
|
|
113
|
+
selectAction,
|
|
114
|
+
selectNextAction,
|
|
115
|
+
selectPreviousAction,
|
|
116
|
+
triggerSelectedAction,
|
|
117
|
+
registerAction,
|
|
118
|
+
setQuery,
|
|
119
|
+
clearSpotlightState
|
|
126
120
|
};
|
|
127
121
|
function createSpotlight() {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
return [store, actions];
|
|
122
|
+
const store = createSpotlightStore();
|
|
123
|
+
return [store, {
|
|
124
|
+
open: () => openSpotlightAction(store),
|
|
125
|
+
close: () => closeSpotlightAction(store),
|
|
126
|
+
toggle: () => toggleSpotlightAction(store)
|
|
127
|
+
}];
|
|
135
128
|
}
|
|
136
129
|
const [spotlightStore, spotlight] = createSpotlight();
|
|
137
130
|
const { open: openSpotlight, close: closeSpotlight, toggle: toggleSpotlight } = spotlight;
|
|
138
|
-
|
|
139
|
-
exports.clearSpotlightState = clearSpotlightState;
|
|
131
|
+
//#endregion
|
|
140
132
|
exports.closeSpotlight = closeSpotlight;
|
|
141
|
-
exports.closeSpotlightAction = closeSpotlightAction;
|
|
142
133
|
exports.createSpotlight = createSpotlight;
|
|
143
134
|
exports.createSpotlightStore = createSpotlightStore;
|
|
144
135
|
exports.openSpotlight = openSpotlight;
|
|
145
|
-
exports.openSpotlightAction = openSpotlightAction;
|
|
146
|
-
exports.registerAction = registerAction;
|
|
147
|
-
exports.selectAction = selectAction;
|
|
148
|
-
exports.selectNextAction = selectNextAction;
|
|
149
|
-
exports.selectPreviousAction = selectPreviousAction;
|
|
150
|
-
exports.setListId = setListId;
|
|
151
|
-
exports.setQuery = setQuery;
|
|
152
|
-
exports.setSelectedAction = setSelectedAction;
|
|
153
136
|
exports.spotlight = spotlight;
|
|
154
137
|
exports.spotlightActions = spotlightActions;
|
|
155
138
|
exports.spotlightStore = spotlightStore;
|
|
156
139
|
exports.toggleSpotlight = toggleSpotlight;
|
|
157
|
-
exports.toggleSpotlightAction = toggleSpotlightAction;
|
|
158
|
-
exports.triggerSelectedAction = triggerSelectedAction;
|
|
159
|
-
exports.updateSpotlightStateAction = updateSpotlightStateAction;
|
|
160
140
|
exports.useSpotlight = useSpotlight;
|
|
161
|
-
|
|
141
|
+
|
|
142
|
+
//# sourceMappingURL=spotlight.store.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spotlight.store.cjs","sources":["../src/spotlight.store.ts"],"sourcesContent":["import { clamp } from '@mantine/hooks';\nimport { createStore, MantineStore, useStore } from '@mantine/store';\n\nexport interface SpotlightState {\n opened: boolean;\n selected: number;\n listId: string;\n query: string;\n empty: boolean;\n registeredActions: Set<string>;\n}\n\nexport type SpotlightStore = MantineStore<SpotlightState>;\n\nexport const createSpotlightStore = () =>\n createStore<SpotlightState>({\n opened: false,\n empty: false,\n selected: -1,\n listId: '',\n query: '',\n registeredActions: new Set(),\n });\n\nexport const useSpotlight = (store: SpotlightStore) => useStore(store);\n\nexport function updateSpotlightStateAction(\n update: (state: SpotlightState) => Partial<SpotlightState>,\n store: SpotlightStore\n) {\n const state = store.getState();\n store.setState({ ...state, ...update(store.getState()) });\n}\n\nexport function openSpotlightAction(store: SpotlightStore) {\n updateSpotlightStateAction(() => ({ opened: true, selected: -1 }), store);\n}\n\nexport function closeSpotlightAction(store: SpotlightStore) {\n updateSpotlightStateAction(() => ({ opened: false }), store);\n}\n\nexport function toggleSpotlightAction(store: SpotlightStore) {\n updateSpotlightStateAction(\n (state) => ({ opened: !state.opened, selected: state.opened ? state.selected : -1 }),\n store\n );\n}\n\nexport function setSelectedAction(index: number, store: SpotlightStore) {\n store.updateState((state) => ({ ...state, selected: index }));\n}\n\nexport function setListId(id: string, store: SpotlightStore) {\n store.updateState((state) => ({ ...state, listId: id }));\n}\n\nfunction findElementByQuerySelector<T extends HTMLElement>(\n selector: string,\n root: Document | Element | ShadowRoot = document\n): T | null {\n // Directly try to find the element in the current root.\n const element = root.querySelector<T>(selector);\n if (element) {\n return element;\n }\n\n // Iterate through all children of the current root.\n const children = root instanceof ShadowRoot ? root.host.children : root.children;\n for (let i = 0; i < children.length; i += 1) {\n const child = children[i];\n\n // Recursively search in the child's shadow root if it exists.\n if (child.shadowRoot) {\n const shadowElement = findElementByQuerySelector<T>(selector, child.shadowRoot);\n if (shadowElement) {\n return shadowElement;\n }\n }\n\n // Also, search recursively in the child itself if it does not have a shadow root or the element wasn't found in its shadow root.\n const nestedElement = findElementByQuerySelector<T>(selector, child);\n if (nestedElement) {\n return nestedElement;\n }\n }\n\n // Return null if the element isn't found in the current root or any of its shadow DOMs.\n return null;\n}\n\nexport function selectAction(index: number, store: SpotlightStore): number {\n const state = store.getState();\n const actionsList = state.listId ? findElementByQuerySelector(`#${state.listId}`) : null;\n const selected = actionsList?.querySelector<HTMLButtonElement>('[data-selected]');\n const actions = actionsList?.querySelectorAll<HTMLButtonElement>('[data-action]') ?? [];\n const nextIndex = index === -1 ? actions.length - 1 : index === actions.length ? 0 : index;\n\n const selectedIndex = clamp(nextIndex, 0, actions.length - 1);\n selected?.removeAttribute('data-selected');\n actions[selectedIndex]?.scrollIntoView({ block: 'nearest' });\n actions[selectedIndex]?.setAttribute('data-selected', 'true');\n setSelectedAction(selectedIndex, store);\n\n return selectedIndex;\n}\n\nexport function selectNextAction(store: SpotlightStore) {\n return selectAction(store.getState().selected + 1, store);\n}\n\nexport function selectPreviousAction(store: SpotlightStore) {\n return selectAction(store.getState().selected - 1, store);\n}\n\nexport function triggerSelectedAction(store: SpotlightStore) {\n const state = store.getState();\n const selected = findElementByQuerySelector<HTMLButtonElement>(\n `#${state.listId} [data-selected]`\n );\n selected?.click();\n}\n\nexport function registerAction(id: string, store: SpotlightStore) {\n const state = store.getState();\n state.registeredActions.add(id);\n return () => {\n state.registeredActions.delete(id);\n };\n}\n\nexport function setQuery(query: string, store: SpotlightStore) {\n updateSpotlightStateAction(() => ({ query }), store);\n Promise.resolve().then(() => {\n selectAction(0, store);\n updateSpotlightStateAction(\n (state) => ({\n empty: (state.query.trim().length > 0 && state.registeredActions.size === 0) || false,\n }),\n store\n );\n });\n}\n\nexport function clearSpotlightState(\n { clearQuery }: { clearQuery: boolean | undefined },\n store: SpotlightStore\n) {\n store.updateState((state) => ({\n ...state,\n selected: -1,\n query: clearQuery ? '' : state.query,\n empty: clearQuery ? false : state.empty,\n }));\n}\n\nexport const spotlightActions = {\n open: openSpotlightAction,\n close: closeSpotlightAction,\n toggle: toggleSpotlightAction,\n updateState: updateSpotlightStateAction,\n setSelectedAction,\n setListId,\n selectAction,\n selectNextAction,\n selectPreviousAction,\n triggerSelectedAction,\n registerAction,\n setQuery,\n clearSpotlightState,\n};\n\nexport function createSpotlight() {\n const store = createSpotlightStore();\n const actions = {\n open: () => openSpotlightAction(store),\n close: () => closeSpotlightAction(store),\n toggle: () => toggleSpotlightAction(store),\n };\n\n return [store, actions] as const;\n}\n\nexport const [spotlightStore, spotlight] = createSpotlight();\nexport const { open: openSpotlight, close: closeSpotlight, toggle: toggleSpotlight } = spotlight;\n"],"names":["createStore","store","useStore","clamp"],"mappings":";;;;;;AAcO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuB,CAAA,CAAA,CAAA,CAAA,CAAA,CAClCA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,CAA4B,CAAA;AAAA,CAAA,CAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CACR,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAU,CAAA,CAAA,CAAA;AAAA,CAAA,CACV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA;AAAA,CAAA,CACR,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,CAAA,CAAA,CAAA;AAAA,CAAA,CACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAuB,CAAA,CAAA,CAAA,CAAA,CAAA;AACzB,CAAC,CAAA,CAAA;AAEI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,YAAA,CAAA,CAAA,CAAe,CAACC,OAAA,CAAA,CAAA,CAAA,CAAA,CAA0BC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,CAASD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,CAAA,CAAA;AAE9D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACd,CAAA,CAAA,CAAA,CAAA,CAAA,GACA,KAAA,CAAA,CACA,CAAA;AACA,CAAA,CAAA,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,EAAM,QAAA,CAAA,CAAS,CAAA;AAC7B,CAAA,CAAA,KAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,QAAA,CAAA,CAAU,CAAA,EAAG,CAAA,CAAA;AAC1D,CAAA;AAEO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAoB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuB,CAAA;AACzD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA2B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAE,MAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,GAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAU,CAAA,CAAA,CAAA,IAAO,KAAK,CAAA,CAAA;AAC1E,CAAA;AAEO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAqB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuB,CAAA;AAC1D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA2B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAU,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA;AAC7D,CAAA;AAEO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuB,CAAA;AAC3D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CACE,CAAC,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAE,MAAA,CAAA,CAAQ,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,QAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,CAAG,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAClF,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CACF,CAAA;AACF,CAAA;AAEO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkB,CAAA,CAAA,CAAA,CAAA,GAAe,KAAA,CAAA,CAAuB,CAAA;AACtE,CAAA,CAAA,KAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAC,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAE,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,GAAM,CAAE,CAAA,CAAA;AAC9D,CAAA;AAEO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,GAAY,KAAA,CAAA,CAAuB,CAAA;AAC3D,CAAA,CAAA,KAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAC,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAE,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,GAAG,CAAE,CAAA,CAAA;AACzD,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,0BAAA,CACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAwC,QAAA,CAAA,CAC9B,CAAA;AAEV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,OAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB,QAAQ,CAAA,CAAA;AAC9C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,OAAA,CAAA,CAAS,CAAA;AACX,CAAA,CAAA,CAAA,CAAA,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CACT,CAAA;AAGA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAW,CAAA,CAAA,CAAA,CAAA,YAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CAAA,CAAA,CAAA,CAAA,CAAK,IAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAW,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACxE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,IAAI,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,KAAK,CAAA,CAAA,CAAG,CAAA;AAC3C,CAAA,CAAA,CAAA,CAAA,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAS,CAAC,CAAA,CAAA;AAGxB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,EAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA;AACpB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA8B,QAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA;AAC9E,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,aAAA,CAAA,CAAe,CAAA;AACjB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACT,CAAA;AAAA,CAAA,CAAA,CAAA,CACF,CAAA;AAGA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,aAAA,CAAA,CAAA,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA8B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,KAAK,CAAA,CAAA;AACnE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,aAAA,CAAA,CAAe,CAAA;AACjB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CACT,CAAA;AAAA,CAAA,CACF,CAAA;AAGA,CAAA,CAAA,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA;AACT,CAAA;AAEO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CAAA,CAAA,CAAA,CAAA,GAAe,KAAA,CAAA,CAA+B,CAAA;AACzE,CAAA,CAAA,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,EAAM,QAAA,CAAA,CAAS,CAAA;AAC7B,CAAA,CAAA,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA2B,IAAI,KAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,EAAE,CAAA,GAAI,CAAA,CAAA,CAAA,CAAA,CAAA;AACpF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,QAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiC,iBAAiB,CAAA,CAAA;AAChF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,gBAAA,CAAoC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,KAAK,CAAA,CAAC,CAAA;AACtF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,SAAA,CAAA,CAAA,CAAY,CAAA,CAAA,CAAA,CAAA,MAAU,CAAA,CAAA,CAAA,CAAA,CAAK,OAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,IAAS,CAAA,CAAA,CAAA,CAAI,KAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAErF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAgBE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,IAAS,CAAC,CAAA,CAAA;AAC5D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAgB,eAAe,CAAA,CAAA;AACzC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAW,CAAA,CAAA;AAC3D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CAAA,CAAA,CAAG,YAAA,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA;AAC5D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAe,KAAK,CAAA,CAAA;AAEtC,CAAA,CAAA,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACT,CAAA;AAEO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuB,CAAA;AACtD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,GAAG,KAAK,CAAA,CAAA;AAC1D,CAAA;AAEO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAqB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuB,CAAA;AAC1D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,GAAG,KAAK,CAAA,CAAA;AAC1D,CAAA;AAEO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuB,CAAA;AAC3D,CAAA,CAAA,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,EAAM,QAAA,CAAA,CAAS,CAAA;AAC7B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CACf,CAAA,CAAA,CAAA,CAAI,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAClB,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA;AAClB,CAAA;AAEO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,CAAA,GAAY,KAAA,CAAA,CAAuB,CAAA;AAChE,CAAA,CAAA,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,EAAM,QAAA,CAAA,CAAS,CAAA;AAC7B,CAAA,CAAA,KAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkB,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA;AAC9B,CAAA,CAAA,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA;AACX,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkB,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,EAAE,CAAA,CAAA;AAAA,CAAA,CACnC,CAAA,CAAA;AACF,CAAA;AAEO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,GAAe,KAAA,CAAA,CAAuB,CAAA;AAC7D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA2B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAE,KAAA,CAAA,CAAM,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA;AACnD,CAAA,CAAA,OAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAE,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA;AAC3B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,GAAG,KAAK,CAAA,CAAA;AACrB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACE,CAAC,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACV,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,KAAA,CAAM,CAAA,CAAA,CAAA,CAAA,EAAK,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,IAAS,CAAA,CAAA,CAAA,CAAA,CAAK,KAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAClF,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CACF,CAAA;AAAA,CAAA,CACF,CAAC,CAAA,CAAA;AACH,CAAA;AAEO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,mBAAA,CACd,CAAA,CAAE,UAAA,CAAA,CAAW,CAAA,CACb,KAAA,CAAA,CACA,CAAA;AACA,CAAA,CAAA,KAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAC,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA;AAAA,CAAA,CAAA,CAAA,CAC5B,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CACH,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAU,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CACV,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,EAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAC/B,KAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,KAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CACpC,CAAE,CAAA,CAAA;AACJ,CAAA;AAEO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,gBAAA,CAAA,CAAA,CAAmB,CAAA;AAAA,CAAA,CAC9B,CAAA,CAAA,CAAA,CAAA,EAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CACN,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CACb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACF,CAAA,CAAA;AAEO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,eAAA,CAAA,CAAA,CAAkB,CAAA;AAChC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,IAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAqB,CAAA;AACnC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,OAAA,CAAA,CAAA,CAAU,CAAA;AAAA,CAAA,CAAA,CAAA,CACd,IAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAoB,KAAK,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CACrC,KAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAqB,KAAK,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CACvC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA;AAAA,CAAA,CAAA,CAC3C,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAC,CAAA,CAAA,CAAA,CAAA,GAAO,OAAO,CAAA,CAAA;AACxB,CAAA;AAEO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,GAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACpC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,CAAA,CAAA,CAAA,CAAA,GAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAgB,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"spotlight.store.cjs","names":[],"sources":["../src/spotlight.store.ts"],"sourcesContent":["import { clamp } from '@mantine/hooks';\nimport { createStore, MantineStore, useStore } from '@mantine/store';\n\nexport interface SpotlightState {\n opened: boolean;\n selected: number;\n listId: string;\n query: string;\n empty: boolean;\n registeredActions: Set<string>;\n}\n\nexport type SpotlightStore = MantineStore<SpotlightState>;\n\nexport const createSpotlightStore = () =>\n createStore<SpotlightState>({\n opened: false,\n empty: false,\n selected: -1,\n listId: '',\n query: '',\n registeredActions: new Set(),\n });\n\nexport const useSpotlight = (store: SpotlightStore) => useStore(store);\n\nexport function updateSpotlightStateAction(\n update: (state: SpotlightState) => Partial<SpotlightState>,\n store: SpotlightStore\n) {\n const state = store.getState();\n store.setState({ ...state, ...update(store.getState()) });\n}\n\nexport function openSpotlightAction(store: SpotlightStore) {\n updateSpotlightStateAction(() => ({ opened: true, selected: -1 }), store);\n}\n\nexport function closeSpotlightAction(store: SpotlightStore) {\n updateSpotlightStateAction(() => ({ opened: false }), store);\n}\n\nexport function toggleSpotlightAction(store: SpotlightStore) {\n updateSpotlightStateAction(\n (state) => ({ opened: !state.opened, selected: state.opened ? state.selected : -1 }),\n store\n );\n}\n\nexport function setSelectedAction(index: number, store: SpotlightStore) {\n store.updateState((state) => ({ ...state, selected: index }));\n}\n\nexport function setListId(id: string, store: SpotlightStore) {\n store.updateState((state) => ({ ...state, listId: id }));\n}\n\nfunction findElementByQuerySelector<T extends HTMLElement>(\n selector: string,\n root: Document | Element | ShadowRoot = document\n): T | null {\n // Directly try to find the element in the current root.\n const element = root.querySelector<T>(selector);\n if (element) {\n return element;\n }\n\n // Iterate through all children of the current root.\n const children = root instanceof ShadowRoot ? root.host.children : root.children;\n for (let i = 0; i < children.length; i += 1) {\n const child = children[i];\n\n // Recursively search in the child's shadow root if it exists.\n if (child.shadowRoot) {\n const shadowElement = findElementByQuerySelector<T>(selector, child.shadowRoot);\n if (shadowElement) {\n return shadowElement;\n }\n }\n\n // Also, search recursively in the child itself if it does not have a shadow root or the element wasn't found in its shadow root.\n const nestedElement = findElementByQuerySelector<T>(selector, child);\n if (nestedElement) {\n return nestedElement;\n }\n }\n\n // Return null if the element isn't found in the current root or any of its shadow DOMs.\n return null;\n}\n\nexport function selectAction(index: number, store: SpotlightStore): number {\n const state = store.getState();\n const actionsList = state.listId ? findElementByQuerySelector(`#${state.listId}`) : null;\n const selected = actionsList?.querySelector<HTMLButtonElement>('[data-selected]');\n const actions = actionsList?.querySelectorAll<HTMLButtonElement>('[data-action]') ?? [];\n const nextIndex = index === -1 ? actions.length - 1 : index === actions.length ? 0 : index;\n\n const selectedIndex = clamp(nextIndex, 0, actions.length - 1);\n selected?.removeAttribute('data-selected');\n actions[selectedIndex]?.scrollIntoView({ block: 'nearest' });\n actions[selectedIndex]?.setAttribute('data-selected', 'true');\n setSelectedAction(selectedIndex, store);\n\n return selectedIndex;\n}\n\nexport function selectNextAction(store: SpotlightStore) {\n return selectAction(store.getState().selected + 1, store);\n}\n\nexport function selectPreviousAction(store: SpotlightStore) {\n return selectAction(store.getState().selected - 1, store);\n}\n\nexport function triggerSelectedAction(store: SpotlightStore) {\n const state = store.getState();\n const selected = findElementByQuerySelector<HTMLButtonElement>(\n `#${state.listId} [data-selected]`\n );\n selected?.click();\n}\n\nexport function registerAction(id: string, store: SpotlightStore) {\n const state = store.getState();\n state.registeredActions.add(id);\n return () => {\n state.registeredActions.delete(id);\n };\n}\n\nexport function setQuery(query: string, store: SpotlightStore) {\n updateSpotlightStateAction(() => ({ query }), store);\n Promise.resolve().then(() => {\n selectAction(0, store);\n updateSpotlightStateAction(\n (state) => ({\n empty: (state.query.trim().length > 0 && state.registeredActions.size === 0) || false,\n }),\n store\n );\n });\n}\n\nexport function clearSpotlightState(\n { clearQuery }: { clearQuery: boolean | undefined },\n store: SpotlightStore\n) {\n store.updateState((state) => ({\n ...state,\n selected: -1,\n query: clearQuery ? '' : state.query,\n empty: clearQuery ? false : state.empty,\n }));\n}\n\nexport const spotlightActions = {\n open: openSpotlightAction,\n close: closeSpotlightAction,\n toggle: toggleSpotlightAction,\n updateState: updateSpotlightStateAction,\n setSelectedAction,\n setListId,\n selectAction,\n selectNextAction,\n selectPreviousAction,\n triggerSelectedAction,\n registerAction,\n setQuery,\n clearSpotlightState,\n};\n\nexport function createSpotlight() {\n const store = createSpotlightStore();\n const actions = {\n open: () => openSpotlightAction(store),\n close: () => closeSpotlightAction(store),\n toggle: () => toggleSpotlightAction(store),\n };\n\n return [store, actions] as const;\n}\n\nexport const [spotlightStore, spotlight] = createSpotlight();\nexport const { open: openSpotlight, close: closeSpotlight, toggle: toggleSpotlight } = spotlight;\n"],"mappings":"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"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
import { createSafeContext } from
|
|
3
|
-
|
|
4
|
-
const [SpotlightProvider, useSpotlightContext] = createSafeContext(
|
|
5
|
-
|
|
6
|
-
);
|
|
7
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
import { createSafeContext } from "@mantine/core";
|
|
3
|
+
//#region packages/@mantine/spotlight/src/Spotlight.context.ts
|
|
4
|
+
const [SpotlightProvider, useSpotlightContext] = createSafeContext("Spotlight component was not found in tree");
|
|
5
|
+
//#endregion
|
|
8
6
|
export { SpotlightProvider, useSpotlightContext };
|
|
9
|
-
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=Spotlight.context.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Spotlight.context.mjs","sources":["../src/Spotlight.context.ts"],"sourcesContent":["import { createSafeContext, GetStylesApi } from '@mantine/core';\nimport { SpotlightStore } from './spotlight.store';\nimport type { SpotlightRootFactory } from './SpotlightRoot';\n\ninterface SpotlightContextValue {\n query: string;\n setQuery: (query: string) => void;\n getStyles: GetStylesApi<SpotlightRootFactory>;\n store: SpotlightStore;\n closeOnActionTrigger: boolean | undefined;\n}\n\nexport const [SpotlightProvider, useSpotlightContext] = createSafeContext<SpotlightContextValue>(\n 'Spotlight component was not found in tree'\n);\n"],"
|
|
1
|
+
{"version":3,"file":"Spotlight.context.mjs","names":[],"sources":["../src/Spotlight.context.ts"],"sourcesContent":["import { createSafeContext, GetStylesApi } from '@mantine/core';\nimport { SpotlightStore } from './spotlight.store';\nimport type { SpotlightRootFactory } from './SpotlightRoot';\n\ninterface SpotlightContextValue {\n query: string;\n setQuery: (query: string) => void;\n getStyles: GetStylesApi<SpotlightRootFactory>;\n store: SpotlightStore;\n closeOnActionTrigger: boolean | undefined;\n}\n\nexport const [SpotlightProvider, useSpotlightContext] = createSafeContext<SpotlightContextValue>(\n 'Spotlight component was not found in tree'\n);\n"],"mappings":";;;AAYA,MAAa,CAAC,mBAAmB,uBAAuB,kBACtD,4CACD"}
|
package/esm/Spotlight.mjs
CHANGED
|
@@ -1,67 +1,78 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import
|
|
17
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
import { spotlight, spotlightStore } from "./spotlight.store.mjs";
|
|
3
|
+
import { isActionsGroup } from "./is-actions-group.mjs";
|
|
4
|
+
import { defaultSpotlightFilter } from "./default-spotlight-filter.mjs";
|
|
5
|
+
import { limitActions } from "./limit-actions.mjs";
|
|
6
|
+
import Spotlight_module_default from "./Spotlight.module.mjs";
|
|
7
|
+
import { SpotlightAction } from "./SpotlightAction.mjs";
|
|
8
|
+
import { SpotlightActionsGroup } from "./SpotlightActionsGroup.mjs";
|
|
9
|
+
import { SpotlightActionsList } from "./SpotlightActionsList.mjs";
|
|
10
|
+
import { SpotlightEmpty } from "./SpotlightEmpty.mjs";
|
|
11
|
+
import { SpotlightFooter } from "./SpotlightFooter.mjs";
|
|
12
|
+
import { SpotlightRoot } from "./SpotlightRoot.mjs";
|
|
13
|
+
import { SpotlightSearch } from "./SpotlightSearch.mjs";
|
|
14
|
+
import { useUncontrolled } from "@mantine/hooks";
|
|
15
|
+
import { factory, getDefaultZIndex, useProps } from "@mantine/core";
|
|
16
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
17
|
+
//#region packages/@mantine/spotlight/src/Spotlight.tsx
|
|
18
18
|
const defaultProps = {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
19
|
+
size: 600,
|
|
20
|
+
yOffset: 80,
|
|
21
|
+
limit: Infinity,
|
|
22
|
+
zIndex: getDefaultZIndex("max"),
|
|
23
|
+
overlayProps: {
|
|
24
|
+
backgroundOpacity: .35,
|
|
25
|
+
blur: 7
|
|
26
|
+
},
|
|
27
|
+
transitionProps: {
|
|
28
|
+
duration: 200,
|
|
29
|
+
transition: "pop"
|
|
30
|
+
},
|
|
31
|
+
store: spotlightStore,
|
|
32
|
+
filter: defaultSpotlightFilter,
|
|
33
|
+
clearQueryOnClose: true,
|
|
34
|
+
closeOnActionTrigger: true,
|
|
35
|
+
shortcut: "mod + K"
|
|
30
36
|
};
|
|
31
37
|
const Spotlight = factory((_props) => {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
38
|
+
const { searchProps, filter, query, onQueryChange, actions, nothingFound, highlightQuery, limit, scrollAreaProps, ...others } = useProps("Spotlight", defaultProps, _props);
|
|
39
|
+
const [_query, setQuery] = useUncontrolled({
|
|
40
|
+
value: query,
|
|
41
|
+
defaultValue: "",
|
|
42
|
+
finalValue: "",
|
|
43
|
+
onChange: onQueryChange
|
|
44
|
+
});
|
|
45
|
+
const filteredActions = limitActions(filter(_query, actions), limit).map((item) => {
|
|
46
|
+
if (isActionsGroup(item)) {
|
|
47
|
+
const items = item.actions.map(({ id, ...actionData }) => /* @__PURE__ */ jsx(SpotlightAction, {
|
|
48
|
+
highlightQuery,
|
|
49
|
+
...actionData
|
|
50
|
+
}, id));
|
|
51
|
+
return /* @__PURE__ */ jsx(SpotlightActionsGroup, {
|
|
52
|
+
label: item.group,
|
|
53
|
+
children: items
|
|
54
|
+
}, item.group);
|
|
55
|
+
}
|
|
56
|
+
return /* @__PURE__ */ jsx(SpotlightAction, {
|
|
57
|
+
highlightQuery,
|
|
58
|
+
...item
|
|
59
|
+
}, item.id);
|
|
60
|
+
});
|
|
61
|
+
return /* @__PURE__ */ jsxs(SpotlightRoot, {
|
|
62
|
+
...others,
|
|
63
|
+
query: _query,
|
|
64
|
+
onQueryChange: setQuery,
|
|
65
|
+
children: [
|
|
66
|
+
/* @__PURE__ */ jsx(SpotlightSearch, { ...searchProps }),
|
|
67
|
+
filteredActions.length > 0 && /* @__PURE__ */ jsx(SpotlightActionsList, {
|
|
68
|
+
...scrollAreaProps,
|
|
69
|
+
children: filteredActions
|
|
70
|
+
}),
|
|
71
|
+
filteredActions.length === 0 && nothingFound && /* @__PURE__ */ jsx(SpotlightEmpty, { children: nothingFound })
|
|
72
|
+
]
|
|
73
|
+
});
|
|
63
74
|
});
|
|
64
|
-
Spotlight.classes =
|
|
75
|
+
Spotlight.classes = Spotlight_module_default;
|
|
65
76
|
Spotlight.displayName = "@mantine/spotlight/Spotlight";
|
|
66
77
|
Spotlight.Search = SpotlightSearch;
|
|
67
78
|
Spotlight.ActionsList = SpotlightActionsList;
|
|
@@ -73,6 +84,7 @@ Spotlight.Root = SpotlightRoot;
|
|
|
73
84
|
Spotlight.open = spotlight.open;
|
|
74
85
|
Spotlight.close = spotlight.close;
|
|
75
86
|
Spotlight.toggle = spotlight.toggle;
|
|
76
|
-
|
|
87
|
+
//#endregion
|
|
77
88
|
export { Spotlight };
|
|
78
|
-
|
|
89
|
+
|
|
90
|
+
//# sourceMappingURL=Spotlight.mjs.map
|
package/esm/Spotlight.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Spotlight.mjs","sources":["../src/Spotlight.tsx"],"sourcesContent":["import {\n factory,\n Factory,\n getDefaultZIndex,\n ScrollAreaAutosizeProps,\n useProps,\n} from '@mantine/core';\nimport { useUncontrolled } from '@mantine/hooks';\nimport { defaultSpotlightFilter } from './default-spotlight-filter';\nimport { isActionsGroup } from './is-actions-group';\nimport { limitActions } from './limit-actions';\nimport { spotlight, spotlightStore } from './spotlight.store';\nimport { SpotlightAction, SpotlightActionProps } from './SpotlightAction';\nimport { SpotlightActionsGroup } from './SpotlightActionsGroup';\nimport { SpotlightActionsList } from './SpotlightActionsList';\nimport { SpotlightEmpty } from './SpotlightEmpty';\nimport { SpotlightFooter } from './SpotlightFooter';\nimport { SpotlightRoot, SpotlightRootProps, SpotlightRootStylesNames } from './SpotlightRoot';\nimport { SpotlightSearch, SpotlightSearchProps } from './SpotlightSearch';\nimport classes from './Spotlight.module.css';\n\nexport type SpotlightFilterFunction = (\n query: string,\n actions: SpotlightActions[]\n) => SpotlightActions[];\n\nexport interface SpotlightActionData extends SpotlightActionProps {\n id: string;\n group?: string;\n}\n\nexport interface SpotlightActionGroupData {\n group: string;\n actions: SpotlightActionData[];\n}\n\nexport type SpotlightActions = SpotlightActionData | SpotlightActionGroupData;\n\nexport type SpotlightStylesNames = SpotlightRootStylesNames;\n\nexport interface SpotlightProps extends SpotlightRootProps {\n /** Props passed down to the `Spotlight.Search` */\n searchProps?: SpotlightSearchProps;\n\n /** Actions data, passed down to `Spotlight.Action` component */\n actions: SpotlightActions[];\n\n /** Function to filter actions data based on search query, by default actions are filtered by title, description and keywords */\n filter?: SpotlightFilterFunction;\n\n /** Message displayed when none of the actions match given `filter` */\n nothingFound?: React.ReactNode;\n\n /** Determines whether search query should be highlighted in action label @default false */\n highlightQuery?: boolean;\n\n /** Maximum number of actions displayed at a time @default Infinity */\n limit?: number;\n\n /** Props passed down to the `ScrollArea` component */\n scrollAreaProps?: Partial<ScrollAreaAutosizeProps>;\n}\n\nexport type SpotlightFactory = Factory<{\n props: SpotlightProps;\n ref: HTMLDivElement;\n stylesNames: SpotlightStylesNames;\n staticComponents: {\n Search: typeof SpotlightSearch;\n ActionsList: typeof SpotlightActionsList;\n Action: typeof SpotlightAction;\n Empty: typeof SpotlightEmpty;\n Footer: typeof SpotlightFooter;\n ActionsGroup: typeof SpotlightActionsGroup;\n Root: typeof SpotlightRoot;\n open: typeof spotlight.open;\n close: typeof spotlight.close;\n toggle: typeof spotlight.toggle;\n };\n}>;\n\nconst defaultProps = {\n size: 600,\n yOffset: 80,\n limit: Infinity,\n zIndex: getDefaultZIndex('max'),\n overlayProps: { backgroundOpacity: 0.35, blur: 7 },\n transitionProps: { duration: 200, transition: 'pop' },\n store: spotlightStore,\n filter: defaultSpotlightFilter,\n clearQueryOnClose: true,\n closeOnActionTrigger: true,\n shortcut: 'mod + K',\n} satisfies Partial<SpotlightProps>;\n\nexport const Spotlight = factory<SpotlightFactory>((_props) => {\n const props = useProps('Spotlight', defaultProps, _props);\n const {\n searchProps,\n filter,\n query,\n onQueryChange,\n actions,\n nothingFound,\n highlightQuery,\n limit,\n scrollAreaProps,\n ...others\n } = props;\n\n const [_query, setQuery] = useUncontrolled({\n value: query,\n defaultValue: '',\n finalValue: '',\n onChange: onQueryChange,\n });\n\n const filteredActions = limitActions(filter(_query, actions), limit).map((item) => {\n if (isActionsGroup(item)) {\n const items = item.actions.map(({ id, ...actionData }) => (\n <SpotlightAction key={id} highlightQuery={highlightQuery} {...actionData} />\n ));\n\n return (\n <SpotlightActionsGroup key={item.group} label={item.group}>\n {items}\n </SpotlightActionsGroup>\n );\n }\n\n return <SpotlightAction key={item.id} highlightQuery={highlightQuery} {...item} />;\n });\n\n return (\n <SpotlightRoot {...others} query={_query} onQueryChange={setQuery}>\n <SpotlightSearch {...searchProps} />\n {filteredActions.length > 0 && (\n <SpotlightActionsList {...(scrollAreaProps as any)}>{filteredActions}</SpotlightActionsList>\n )}\n {filteredActions.length === 0 && nothingFound && (\n <SpotlightEmpty>{nothingFound}</SpotlightEmpty>\n )}\n </SpotlightRoot>\n );\n});\n\nSpotlight.classes = classes;\nSpotlight.displayName = '@mantine/spotlight/Spotlight';\nSpotlight.Search = SpotlightSearch;\nSpotlight.ActionsList = SpotlightActionsList;\nSpotlight.Action = SpotlightAction;\nSpotlight.Empty = SpotlightEmpty;\nSpotlight.ActionsGroup = SpotlightActionsGroup;\nSpotlight.Footer = SpotlightFooter;\nSpotlight.Root = SpotlightRoot;\nSpotlight.open = spotlight.open;\nSpotlight.close = spotlight.close;\nSpotlight.toggle = spotlight.toggle;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Spotlight.mjs","names":["classes"],"sources":["../src/Spotlight.tsx"],"sourcesContent":["import {\n factory,\n Factory,\n getDefaultZIndex,\n ScrollAreaAutosizeProps,\n useProps,\n} from '@mantine/core';\nimport { useUncontrolled } from '@mantine/hooks';\nimport { defaultSpotlightFilter } from './default-spotlight-filter';\nimport { isActionsGroup } from './is-actions-group';\nimport { limitActions } from './limit-actions';\nimport { spotlight, spotlightStore } from './spotlight.store';\nimport { SpotlightAction, SpotlightActionProps } from './SpotlightAction';\nimport { SpotlightActionsGroup } from './SpotlightActionsGroup';\nimport { SpotlightActionsList } from './SpotlightActionsList';\nimport { SpotlightEmpty } from './SpotlightEmpty';\nimport { SpotlightFooter } from './SpotlightFooter';\nimport { SpotlightRoot, SpotlightRootProps, SpotlightRootStylesNames } from './SpotlightRoot';\nimport { SpotlightSearch, SpotlightSearchProps } from './SpotlightSearch';\nimport classes from './Spotlight.module.css';\n\nexport type SpotlightFilterFunction = (\n query: string,\n actions: SpotlightActions[]\n) => SpotlightActions[];\n\nexport interface SpotlightActionData extends SpotlightActionProps {\n id: string;\n group?: string;\n}\n\nexport interface SpotlightActionGroupData {\n group: string;\n actions: SpotlightActionData[];\n}\n\nexport type SpotlightActions = SpotlightActionData | SpotlightActionGroupData;\n\nexport type SpotlightStylesNames = SpotlightRootStylesNames;\n\nexport interface SpotlightProps extends SpotlightRootProps {\n /** Props passed down to the `Spotlight.Search` */\n searchProps?: SpotlightSearchProps;\n\n /** Actions data, passed down to `Spotlight.Action` component */\n actions: SpotlightActions[];\n\n /** Function to filter actions data based on search query, by default actions are filtered by title, description and keywords */\n filter?: SpotlightFilterFunction;\n\n /** Message displayed when none of the actions match given `filter` */\n nothingFound?: React.ReactNode;\n\n /** Determines whether search query should be highlighted in action label @default false */\n highlightQuery?: boolean;\n\n /** Maximum number of actions displayed at a time @default Infinity */\n limit?: number;\n\n /** Props passed down to the `ScrollArea` component */\n scrollAreaProps?: Partial<ScrollAreaAutosizeProps>;\n}\n\nexport type SpotlightFactory = Factory<{\n props: SpotlightProps;\n ref: HTMLDivElement;\n stylesNames: SpotlightStylesNames;\n staticComponents: {\n Search: typeof SpotlightSearch;\n ActionsList: typeof SpotlightActionsList;\n Action: typeof SpotlightAction;\n Empty: typeof SpotlightEmpty;\n Footer: typeof SpotlightFooter;\n ActionsGroup: typeof SpotlightActionsGroup;\n Root: typeof SpotlightRoot;\n open: typeof spotlight.open;\n close: typeof spotlight.close;\n toggle: typeof spotlight.toggle;\n };\n}>;\n\nconst defaultProps = {\n size: 600,\n yOffset: 80,\n limit: Infinity,\n zIndex: getDefaultZIndex('max'),\n overlayProps: { backgroundOpacity: 0.35, blur: 7 },\n transitionProps: { duration: 200, transition: 'pop' },\n store: spotlightStore,\n filter: defaultSpotlightFilter,\n clearQueryOnClose: true,\n closeOnActionTrigger: true,\n shortcut: 'mod + K',\n} satisfies Partial<SpotlightProps>;\n\nexport const Spotlight = factory<SpotlightFactory>((_props) => {\n const props = useProps('Spotlight', defaultProps, _props);\n const {\n searchProps,\n filter,\n query,\n onQueryChange,\n actions,\n nothingFound,\n highlightQuery,\n limit,\n scrollAreaProps,\n ...others\n } = props;\n\n const [_query, setQuery] = useUncontrolled({\n value: query,\n defaultValue: '',\n finalValue: '',\n onChange: onQueryChange,\n });\n\n const filteredActions = limitActions(filter(_query, actions), limit).map((item) => {\n if (isActionsGroup(item)) {\n const items = item.actions.map(({ id, ...actionData }) => (\n <SpotlightAction key={id} highlightQuery={highlightQuery} {...actionData} />\n ));\n\n return (\n <SpotlightActionsGroup key={item.group} label={item.group}>\n {items}\n </SpotlightActionsGroup>\n );\n }\n\n return <SpotlightAction key={item.id} highlightQuery={highlightQuery} {...item} />;\n });\n\n return (\n <SpotlightRoot {...others} query={_query} onQueryChange={setQuery}>\n <SpotlightSearch {...searchProps} />\n {filteredActions.length > 0 && (\n <SpotlightActionsList {...(scrollAreaProps as any)}>{filteredActions}</SpotlightActionsList>\n )}\n {filteredActions.length === 0 && nothingFound && (\n <SpotlightEmpty>{nothingFound}</SpotlightEmpty>\n )}\n </SpotlightRoot>\n );\n});\n\nSpotlight.classes = classes;\nSpotlight.displayName = '@mantine/spotlight/Spotlight';\nSpotlight.Search = SpotlightSearch;\nSpotlight.ActionsList = SpotlightActionsList;\nSpotlight.Action = SpotlightAction;\nSpotlight.Empty = SpotlightEmpty;\nSpotlight.ActionsGroup = SpotlightActionsGroup;\nSpotlight.Footer = SpotlightFooter;\nSpotlight.Root = SpotlightRoot;\nSpotlight.open = spotlight.open;\nSpotlight.close = spotlight.close;\nSpotlight.toggle = spotlight.toggle;\n"],"mappings":";;;;;;;;;;;;;;;;;AAiFA,MAAM,eAAe;CACnB,MAAM;CACN,SAAS;CACT,OAAO;CACP,QAAQ,iBAAiB,MAAM;CAC/B,cAAc;EAAE,mBAAmB;EAAM,MAAM;EAAG;CAClD,iBAAiB;EAAE,UAAU;EAAK,YAAY;EAAO;CACrD,OAAO;CACP,QAAQ;CACR,mBAAmB;CACnB,sBAAsB;CACtB,UAAU;CACX;AAED,MAAa,YAAY,SAA2B,WAAW;CAE7D,MAAM,EACJ,aACA,QACA,OACA,eACA,SACA,cACA,gBACA,OACA,iBACA,GAAG,WAXS,SAAS,aAAa,cAAc,OAAO;CAczD,MAAM,CAAC,QAAQ,YAAY,gBAAgB;EACzC,OAAO;EACP,cAAc;EACd,YAAY;EACZ,UAAU;EACX,CAAC;CAEF,MAAM,kBAAkB,aAAa,OAAO,QAAQ,QAAQ,EAAE,MAAM,CAAC,KAAK,SAAS;AACjF,MAAI,eAAe,KAAK,EAAE;GACxB,MAAM,QAAQ,KAAK,QAAQ,KAAK,EAAE,IAAI,GAAG,iBACvC,oBAAC,iBAAD;IAA0C;IAAgB,GAAI;IAAc,EAAtD,GAAsD,CAC5E;AAEF,UACE,oBAAC,uBAAD;IAAwC,OAAO,KAAK;cACjD;IACqB,EAFI,KAAK,MAET;;AAI5B,SAAO,oBAAC,iBAAD;GAA+C;GAAgB,GAAI;GAAQ,EAArD,KAAK,GAAgD;GAClF;AAEF,QACE,qBAAC,eAAD;EAAe,GAAI;EAAQ,OAAO;EAAQ,eAAe;YAAzD;GACE,oBAAC,iBAAD,EAAiB,GAAI,aAAe,CAAA;GACnC,gBAAgB,SAAS,KACxB,oBAAC,sBAAD;IAAsB,GAAK;cAA0B;IAAuC,CAAA;GAE7F,gBAAgB,WAAW,KAAK,gBAC/B,oBAAC,gBAAD,EAAA,UAAiB,cAA8B,CAAA;GAEnC;;EAElB;AAEF,UAAU,UAAUA;AACpB,UAAU,cAAc;AACxB,UAAU,SAAS;AACnB,UAAU,cAAc;AACxB,UAAU,SAAS;AACnB,UAAU,QAAQ;AAClB,UAAU,eAAe;AACzB,UAAU,SAAS;AACnB,UAAU,OAAO;AACjB,UAAU,OAAO,UAAU;AAC3B,UAAU,QAAQ,UAAU;AAC5B,UAAU,SAAS,UAAU"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
//#region packages/@mantine/spotlight/src/Spotlight.module.css
|
|
3
|
+
var Spotlight_module_default = {
|
|
4
|
+
"root": "m_d2b315db",
|
|
5
|
+
"content": "m_3cd250e0",
|
|
6
|
+
"body": "m_d2abce9b",
|
|
7
|
+
"search": "m_f366a061",
|
|
8
|
+
"actionsList": "m_6e463822",
|
|
9
|
+
"action": "m_d49bb8ef",
|
|
10
|
+
"actionBody": "m_3d475731",
|
|
11
|
+
"actionSection": "m_832642f6",
|
|
12
|
+
"actionLabel": "m_6c2a1345",
|
|
13
|
+
"actionDescription": "m_a6d9d78d",
|
|
14
|
+
"empty": "m_82f78f74",
|
|
15
|
+
"footer": "m_ddcaf054",
|
|
16
|
+
"actionsGroup": "m_5a3e5f7b"
|
|
17
|
+
};
|
|
18
|
+
//#endregion
|
|
19
|
+
export { Spotlight_module_default as default };
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=Spotlight.module.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Spotlight.module.mjs","names":[],"sources":["../src/Spotlight.module.css"],"sourcesContent":[".root {\n &[data-scrollable] {\n --spotlight-content-height: 100%;\n }\n}\n\n.content {\n overflow: hidden;\n height: var(--spotlight-content-height, auto);\n max-height: var(--spotlight-max-height);\n}\n\n.body {\n display: flex;\n flex-direction: column;\n height: var(--spotlight-content-height, auto);\n}\n\n.search {\n border: 0;\n background-color: transparent;\n}\n\n.actionsList {\n /* Used in child ScrollArea */\n --spotlight-actions-list-padding: 4px;\n\n border-top: 1px solid;\n flex: 1;\n padding: var(--spotlight-actions-list-padding);\n max-height: calc(100vh - 15rem);\n margin-inline-end: calc(var(--spotlight-actions-list-padding) * -1);\n width: 100%;\n\n @mixin where-light {\n border-color: var(--mantine-color-gray-2);\n }\n\n @mixin where-dark {\n border-color: var(--mantine-color-dark-4);\n }\n}\n\n.action {\n display: flex;\n align-items: center;\n width: 100%;\n padding: 7px var(--mantine-spacing-md);\n border-radius: var(--mantine-radius-default);\n background-color: transparent;\n color: inherit;\n text-align: left;\n\n @mixin where-rtl {\n text-align: right;\n }\n\n &:where(:not([data-selected])) {\n @mixin hover {\n @mixin where-light {\n background-color: var(--mantine-color-gray-0);\n }\n\n @mixin where-dark {\n background-color: var(--mantine-color-dark-6);\n }\n }\n }\n\n &:where([data-selected]) {\n background-color: var(--mantine-primary-color-filled);\n color: var(--mantine-primary-color-contrast, var(--mantine-color-white));\n --action-description-color: var(--mantine-primary-color-contrast, var(--mantine-color-white));\n --action-description-opacity: 0.7;\n }\n}\n\n.actionBody {\n flex: 1;\n}\n\n.actionSection {\n opacity: 1;\n color: inherit;\n\n &:where([data-dimmed]) {\n opacity: var(--action-description-opacity, 1);\n color: var(--action-description-color, var(--mantine-color-dimmed));\n }\n\n &:where([data-position='left']) {\n margin-inline-end: var(--mantine-spacing-md);\n }\n\n &:where([data-position='right']) {\n margin-inline-start: var(--mantine-spacing-md);\n }\n\n & > svg {\n display: block;\n }\n}\n\n.actionLabel {\n display: block;\n}\n\n.actionDescription {\n display: block;\n font-size: var(--mantine-font-size-xs);\n opacity: var(--action-description-opacity, 1);\n color: var(--action-description-color, var(--mantine-color-dimmed));\n}\n\n.empty {\n color: var(--mantine-color-dimmed);\n padding: var(--mantine-spacing-md);\n text-align: center;\n}\n\n.footer {\n padding: var(--mantine-spacing-xs) calc(var(--mantine-spacing-md) + rem(4px));\n border-top: 1px solid;\n\n @mixin where-light {\n border-color: var(--mantine-color-gray-2);\n }\n\n @mixin where-dark {\n border-color: var(--mantine-color-dark-4);\n }\n}\n\n.actionsGroup {\n display: flex;\n flex-direction: column;\n margin-top: var(--mantine-spacing-md);\n\n &::before {\n content: var(--spotlight-label);\n text-transform: uppercase;\n font-size: var(--mantine-font-size-xs);\n font-weight: var(--mantine-font-weight-bold);\n color: var(--mantine-color-dimmed);\n padding-inline-start: var(--mantine-spacing-md);\n }\n\n &:empty {\n display: none;\n }\n}\n"],"mappings":""}
|