@falcon-ui/falcon-ui 1.0.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/LICENSE +21 -0
- package/README.md +182 -0
- package/cjs/JsBarcode-BlUjuVmB.cjs +3519 -0
- package/cjs/JsBarcode-BlUjuVmB.cjs.map +1 -0
- package/cjs/chunk-D4y6LrGi.cjs +40 -0
- package/cjs/components/JsBarcode-BOXEZn4Q.cjs +3519 -0
- package/cjs/components/JsBarcode-BOXEZn4Q.cjs.map +1 -0
- package/cjs/components/barcode/JsBarcode-BOXEZn4Q.cjs +3519 -0
- package/cjs/components/barcode/JsBarcode-BOXEZn4Q.cjs.map +1 -0
- package/cjs/components/barcode/chunk-D4y6LrGi.cjs +40 -0
- package/cjs/components/barcode/index.cjs +211 -0
- package/cjs/components/barcode/index.cjs.map +1 -0
- package/cjs/components/barcode/src/JsBarcode-BOXEZn4Q.cjs +3519 -0
- package/cjs/components/barcode/src/JsBarcode-BOXEZn4Q.cjs.map +1 -0
- package/cjs/components/barcode/src/barcode.cjs +102 -0
- package/cjs/components/barcode/src/barcode.cjs.map +1 -0
- package/cjs/components/barcode/src/barcode.vue.cjs +200 -0
- package/cjs/components/barcode/src/barcode.vue.cjs.map +1 -0
- package/cjs/components/barcode/src/chunk-D4y6LrGi.cjs +40 -0
- package/cjs/components/button/index.cjs +135 -0
- package/cjs/components/button/index.cjs.map +1 -0
- package/cjs/components/button/src/button.cjs +16 -0
- package/cjs/components/button/src/button.cjs.map +1 -0
- package/cjs/components/button/src/button.vue.cjs +124 -0
- package/cjs/components/button/src/button.vue.cjs.map +1 -0
- package/cjs/components/chunk-D4y6LrGi.cjs +40 -0
- package/cjs/components/date-picker/index.cjs +164 -0
- package/cjs/components/date-picker/index.cjs.map +1 -0
- package/cjs/components/date-picker/src/date-picker.cjs +25 -0
- package/cjs/components/date-picker/src/date-picker.cjs.map +1 -0
- package/cjs/components/date-picker/src/date-picker.vue.cjs +153 -0
- package/cjs/components/date-picker/src/date-picker.vue.cjs.map +1 -0
- package/cjs/components/dialog/index.cjs +346 -0
- package/cjs/components/dialog/index.cjs.map +1 -0
- package/cjs/components/dialog/src/dialog.cjs +40 -0
- package/cjs/components/dialog/src/dialog.cjs.map +1 -0
- package/cjs/components/dialog/src/dialog.vue.cjs +343 -0
- package/cjs/components/dialog/src/dialog.vue.cjs.map +1 -0
- package/cjs/components/index.cjs +9450 -0
- package/cjs/components/index.cjs.map +1 -0
- package/cjs/components/input/index.cjs +175 -0
- package/cjs/components/input/index.cjs.map +1 -0
- package/cjs/components/input/src/input.cjs +27 -0
- package/cjs/components/input/src/input.cjs.map +1 -0
- package/cjs/components/input/src/input.vue.cjs +164 -0
- package/cjs/components/input/src/input.vue.cjs.map +1 -0
- package/cjs/components/input-number/index.cjs +374 -0
- package/cjs/components/input-number/index.cjs.map +1 -0
- package/cjs/components/input-number/src/input-number.cjs +48 -0
- package/cjs/components/input-number/src/input-number.cjs.map +1 -0
- package/cjs/components/input-number/src/input-number.vue.cjs +363 -0
- package/cjs/components/input-number/src/input-number.vue.cjs.map +1 -0
- package/cjs/components/input-search/index.cjs +286 -0
- package/cjs/components/input-search/index.cjs.map +1 -0
- package/cjs/components/input-search/src/input-search.cjs +55 -0
- package/cjs/components/input-search/src/input-search.cjs.map +1 -0
- package/cjs/components/input-search/src/input-search.vue.cjs +275 -0
- package/cjs/components/input-search/src/input-search.vue.cjs.map +1 -0
- package/cjs/components/qr-code/index.cjs +1975 -0
- package/cjs/components/qr-code/index.cjs.map +1 -0
- package/cjs/components/qr-code/src/qr-code.cjs +63 -0
- package/cjs/components/qr-code/src/qr-code.cjs.map +1 -0
- package/cjs/components/qr-code/src/qr-code.vue.cjs +1964 -0
- package/cjs/components/qr-code/src/qr-code.vue.cjs.map +1 -0
- package/cjs/components/radial-menu/index.cjs +983 -0
- package/cjs/components/radial-menu/index.cjs.map +1 -0
- package/cjs/components/radial-menu/src/radial-menu.cjs +96 -0
- package/cjs/components/radial-menu/src/radial-menu.cjs.map +1 -0
- package/cjs/components/radial-menu/src/radial-menu.vue.cjs +921 -0
- package/cjs/components/radial-menu/src/radial-menu.vue.cjs.map +1 -0
- package/cjs/components/select/index.cjs +163 -0
- package/cjs/components/select/index.cjs.map +1 -0
- package/cjs/components/select/src/select.cjs +16 -0
- package/cjs/components/select/src/select.cjs.map +1 -0
- package/cjs/components/select/src/select.vue.cjs +152 -0
- package/cjs/components/select/src/select.vue.cjs.map +1 -0
- package/cjs/components/table/index.cjs +3351 -0
- package/cjs/components/table/index.cjs.map +1 -0
- package/cjs/components/table/src/table.cjs +62 -0
- package/cjs/components/table/src/table.cjs.map +1 -0
- package/cjs/components/table/src/table.vue.cjs +3085 -0
- package/cjs/components/table/src/table.vue.cjs.map +1 -0
- package/cjs/dialog-CJU00aEV.cjs +614 -0
- package/cjs/dialog-CJU00aEV.cjs.map +1 -0
- package/cjs/dialog-DcH26KbE.cjs +2 -0
- package/cjs/hooks/dialog-DpYPBcKV.cjs +266 -0
- package/cjs/hooks/dialog-DpYPBcKV.cjs.map +1 -0
- package/cjs/hooks/hooks-D2Jaq5kO.cjs +328 -0
- package/cjs/hooks/hooks-D2Jaq5kO.cjs.map +1 -0
- package/cjs/hooks/index.cjs +8 -0
- package/cjs/icons/index.cjs +86 -0
- package/cjs/icons/index.cjs.map +1 -0
- package/cjs/index.cjs +9141 -0
- package/cjs/index.cjs.map +1 -0
- package/cjs/utils/index.cjs +69 -0
- package/cjs/utils/index.cjs.map +1 -0
- package/esm/JsBarcode-kVJER62m.js +3514 -0
- package/esm/JsBarcode-kVJER62m.js.map +1 -0
- package/esm/chunk-BuRq7rDw.js +23 -0
- package/esm/components/JsBarcode-CzzxrEd_.js +3514 -0
- package/esm/components/JsBarcode-CzzxrEd_.js.map +1 -0
- package/esm/components/barcode/JsBarcode-C5ux6wsb.js +3514 -0
- package/esm/components/barcode/JsBarcode-C5ux6wsb.js.map +1 -0
- package/esm/components/barcode/chunk--em_ddB3.js +23 -0
- package/esm/components/barcode/index.mjs +204 -0
- package/esm/components/barcode/index.mjs.map +1 -0
- package/esm/components/barcode/src/JsBarcode-C5ux6wsb.js +3514 -0
- package/esm/components/barcode/src/JsBarcode-C5ux6wsb.js.map +1 -0
- package/esm/components/barcode/src/barcode.mjs +98 -0
- package/esm/components/barcode/src/barcode.mjs.map +1 -0
- package/esm/components/barcode/src/barcode.vue.mjs +194 -0
- package/esm/components/barcode/src/barcode.vue.mjs.map +1 -0
- package/esm/components/barcode/src/chunk--em_ddB3.js +23 -0
- package/esm/components/button/index.mjs +126 -0
- package/esm/components/button/index.mjs.map +1 -0
- package/esm/components/button/src/button.mjs +14 -0
- package/esm/components/button/src/button.mjs.map +1 -0
- package/esm/components/button/src/button.vue.mjs +117 -0
- package/esm/components/button/src/button.vue.mjs.map +1 -0
- package/esm/components/chunk-BuRq7rDw.js +23 -0
- package/esm/components/date-picker/index.mjs +155 -0
- package/esm/components/date-picker/index.mjs.map +1 -0
- package/esm/components/date-picker/src/date-picker.mjs +23 -0
- package/esm/components/date-picker/src/date-picker.mjs.map +1 -0
- package/esm/components/date-picker/src/date-picker.vue.mjs +146 -0
- package/esm/components/date-picker/src/date-picker.vue.mjs.map +1 -0
- package/esm/components/dialog/index.mjs +335 -0
- package/esm/components/dialog/index.mjs.map +1 -0
- package/esm/components/dialog/src/dialog.mjs +38 -0
- package/esm/components/dialog/src/dialog.mjs.map +1 -0
- package/esm/components/dialog/src/dialog.vue.mjs +334 -0
- package/esm/components/dialog/src/dialog.vue.mjs.map +1 -0
- package/esm/components/index.mjs +9386 -0
- package/esm/components/index.mjs.map +1 -0
- package/esm/components/input/index.mjs +166 -0
- package/esm/components/input/index.mjs.map +1 -0
- package/esm/components/input/src/input.mjs +25 -0
- package/esm/components/input/src/input.mjs.map +1 -0
- package/esm/components/input/src/input.vue.mjs +157 -0
- package/esm/components/input/src/input.vue.mjs.map +1 -0
- package/esm/components/input-number/index.mjs +365 -0
- package/esm/components/input-number/index.mjs.map +1 -0
- package/esm/components/input-number/src/input-number.mjs +45 -0
- package/esm/components/input-number/src/input-number.mjs.map +1 -0
- package/esm/components/input-number/src/input-number.vue.mjs +356 -0
- package/esm/components/input-number/src/input-number.vue.mjs.map +1 -0
- package/esm/components/input-search/index.mjs +277 -0
- package/esm/components/input-search/index.mjs.map +1 -0
- package/esm/components/input-search/src/input-search.mjs +53 -0
- package/esm/components/input-search/src/input-search.mjs.map +1 -0
- package/esm/components/input-search/src/input-search.vue.mjs +268 -0
- package/esm/components/input-search/src/input-search.vue.mjs.map +1 -0
- package/esm/components/qr-code/index.mjs +1967 -0
- package/esm/components/qr-code/index.mjs.map +1 -0
- package/esm/components/qr-code/src/qr-code.mjs +59 -0
- package/esm/components/qr-code/src/qr-code.mjs.map +1 -0
- package/esm/components/qr-code/src/qr-code.vue.mjs +1958 -0
- package/esm/components/qr-code/src/qr-code.vue.mjs.map +1 -0
- package/esm/components/radial-menu/index.mjs +974 -0
- package/esm/components/radial-menu/index.mjs.map +1 -0
- package/esm/components/radial-menu/src/radial-menu.mjs +94 -0
- package/esm/components/radial-menu/src/radial-menu.mjs.map +1 -0
- package/esm/components/radial-menu/src/radial-menu.vue.mjs +916 -0
- package/esm/components/radial-menu/src/radial-menu.vue.mjs.map +1 -0
- package/esm/components/select/index.mjs +154 -0
- package/esm/components/select/index.mjs.map +1 -0
- package/esm/components/select/src/select.mjs +14 -0
- package/esm/components/select/src/select.mjs.map +1 -0
- package/esm/components/select/src/select.vue.mjs +145 -0
- package/esm/components/select/src/select.vue.mjs.map +1 -0
- package/esm/components/table/index.mjs +3342 -0
- package/esm/components/table/index.mjs.map +1 -0
- package/esm/components/table/src/table.mjs +60 -0
- package/esm/components/table/src/table.mjs.map +1 -0
- package/esm/components/table/src/table.vue.mjs +3080 -0
- package/esm/components/table/src/table.vue.mjs.map +1 -0
- package/esm/dialog-Cm3Px-Bu.js +537 -0
- package/esm/dialog-Cm3Px-Bu.js.map +1 -0
- package/esm/dialog-CzZm50XM.js +2 -0
- package/esm/hooks/dialog-d4SMZWbw.js +261 -0
- package/esm/hooks/dialog-d4SMZWbw.js.map +1 -0
- package/esm/hooks/hooks-DdjieG2I.js +281 -0
- package/esm/hooks/hooks-DdjieG2I.js.map +1 -0
- package/esm/hooks/index.mjs +2 -0
- package/esm/icons/index.mjs +79 -0
- package/esm/icons/index.mjs.map +1 -0
- package/esm/index.mjs +9065 -0
- package/esm/index.mjs.map +1 -0
- package/esm/utils/index.mjs +65 -0
- package/esm/utils/index.mjs.map +1 -0
- package/global.d.ts +39 -0
- package/package.json +131 -0
- package/theme/index.css +1 -0
- package/theme/index.scss +16 -0
- package/theme/src/barcode.scss +14 -0
- package/theme/src/button.scss +65 -0
- package/theme/src/date-picker.scss +87 -0
- package/theme/src/dialog.scss +146 -0
- package/theme/src/ep-vars.scss +11 -0
- package/theme/src/input-number.scss +66 -0
- package/theme/src/input-search.scss +78 -0
- package/theme/src/input.scss +66 -0
- package/theme/src/mixins/bem.scss +35 -0
- package/theme/src/mixins/color.scss +8 -0
- package/theme/src/qr-code.scss +23 -0
- package/theme/src/radial-menu.scss +346 -0
- package/theme/src/select.scss +44 -0
- package/theme/src/table.scss +143 -0
- package/theme/src/tokens.scss +26 -0
- package/theme/src/tree-select.scss +45 -0
- package/theme/src/tree.scss +369 -0
- package/types/components/barcode/index.d.ts +183 -0
- package/types/components/barcode/src/barcode.d.ts +147 -0
- package/types/components/barcode/src/barcode.vue.d.ts +184 -0
- package/types/components/button/index.d.ts +135 -0
- package/types/components/button/src/button.d.ts +33 -0
- package/types/components/button/src/button.vue.d.ts +138 -0
- package/types/components/date-picker/index.d.ts +508 -0
- package/types/components/date-picker/src/date-picker.d.ts +35 -0
- package/types/components/date-picker/src/date-picker.vue.d.ts +509 -0
- package/types/components/dialog/index.d.ts +630 -0
- package/types/components/dialog/src/dialog.d.ts +70 -0
- package/types/components/dialog/src/dialog.vue.d.ts +257 -0
- package/types/components/index.d.ts +27 -0
- package/types/components/input/index.d.ts +233 -0
- package/types/components/input/src/input.d.ts +65 -0
- package/types/components/input/src/input.vue.d.ts +239 -0
- package/types/components/input-number/index.d.ts +713 -0
- package/types/components/input-number/src/input-number.d.ts +101 -0
- package/types/components/input-number/src/input-number.vue.d.ts +283 -0
- package/types/components/input-search/index.d.ts +113 -0
- package/types/components/input-search/src/input-search.d.ts +128 -0
- package/types/components/input-search/src/input-search.vue.d.ts +114 -0
- package/types/components/qr-code/index.d.ts +109 -0
- package/types/components/qr-code/src/qr-code.d.ts +93 -0
- package/types/components/qr-code/src/qr-code.vue.d.ts +109 -0
- package/types/components/radial-menu/index.d.ts +499 -0
- package/types/components/radial-menu/src/radial-menu-item.d.ts +40 -0
- package/types/components/radial-menu/src/radial-menu-item.vue.d.ts +95 -0
- package/types/components/radial-menu/src/radial-menu.d.ts +92 -0
- package/types/components/radial-menu/src/radial-menu.vue.d.ts +200 -0
- package/types/components/radial-menu/src/types.d.ts +48 -0
- package/types/components/radial-menu/src/use-radial-menu-items.d.ts +19 -0
- package/types/components/radial-menu/src/use-radial-menu-keyboard.d.ts +17 -0
- package/types/components/radial-menu/src/use-radial-menu-position.d.ts +45 -0
- package/types/components/radial-menu/src/use-radial-menu-shortcut.d.ts +8 -0
- package/types/components/radial-menu/src/use-radial-menu-state.d.ts +15 -0
- package/types/components/select/index.d.ts +5 -0
- package/types/components/select/src/select.d.ts +30 -0
- package/types/components/select/src/select.vue.d.ts +25 -0
- package/types/components/table/index.d.ts +8 -0
- package/types/components/table/src/editor-registry.d.ts +24 -0
- package/types/components/table/src/proxy-data.d.ts +10 -0
- package/types/components/table/src/table-editor.d.ts +18 -0
- package/types/components/table/src/table-editor.vue.d.ts +43 -0
- package/types/components/table/src/table.d.ts +179 -0
- package/types/components/table/src/table.vue.d.ts +121 -0
- package/types/components/tree/index.d.ts +5 -0
- package/types/components/tree/src/tree-node.vue.d.ts +88 -0
- package/types/components/tree/src/tree-types.d.ts +90 -0
- package/types/components/tree/src/tree.d.ts +448 -0
- package/types/components/tree/src/tree.vue.d.ts +301 -0
- package/types/components/tree/src/use-tree-check-conduct.d.ts +43 -0
- package/types/components/tree/src/use-tree-checked-state.d.ts +34 -0
- package/types/components/tree/src/use-tree-drag.d.ts +45 -0
- package/types/components/tree/src/use-tree-expanded-state.d.ts +41 -0
- package/types/components/tree/src/use-tree-keyboard.d.ts +21 -0
- package/types/components/tree/src/use-tree-load.d.ts +25 -0
- package/types/components/tree/src/use-tree-scroll.d.ts +17 -0
- package/types/components/tree/src/use-tree-selected-state.d.ts +29 -0
- package/types/components/tree-select/index.d.ts +5 -0
- package/types/components/tree-select/src/tree-select.d.ts +26 -0
- package/types/components/tree-select/src/tree-select.vue.d.ts +25 -0
- package/types/falcon-ui/index.d.ts +8 -0
- package/types/hooks/index.d.ts +3 -0
- package/types/hooks/src/use-clearable-state.d.ts +10 -0
- package/types/hooks/src/use-component.d.ts +15 -0
- package/types/hooks/src/use-dialog.d.ts +49 -0
- package/types/icons/index.d.ts +1 -0
- package/types/icons/src/components/holder-outlined.vue.d.ts +3 -0
- package/types/icons/src/components/index.d.ts +3 -0
- package/types/icons/src/components/minus-square-outlined.vue.d.ts +3 -0
- package/types/icons/src/components/plus-square-outlined.vue.d.ts +3 -0
- package/types/utils/index.d.ts +3 -0
- package/types/utils/src/bem.d.ts +11 -0
- package/types/utils/src/component.d.ts +6 -0
- package/types/utils/src/install.d.ts +5 -0
- package/umd/falcon-ui.umd.js +13297 -0
- package/umd/falcon-ui.umd.js.map +1 -0
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
let vue = require("vue");
|
|
2
|
+
var defaultNamespace = "fl";
|
|
3
|
+
var statePrefix = "is-";
|
|
4
|
+
var buildBemName = (namespace, block, blockSuffix = "", element = "", modifier = "") => {
|
|
5
|
+
let className = `${namespace}-${block}`;
|
|
6
|
+
if (blockSuffix) className += `-${blockSuffix}`;
|
|
7
|
+
if (element) className += `__${element}`;
|
|
8
|
+
if (modifier) className += `--${modifier}`;
|
|
9
|
+
return className;
|
|
10
|
+
};
|
|
11
|
+
const useNamespace = (block, namespace = defaultNamespace) => {
|
|
12
|
+
const b = (blockSuffix = "") => buildBemName(namespace, block, blockSuffix);
|
|
13
|
+
const e = (element) => element ? buildBemName(namespace, block, "", element) : "";
|
|
14
|
+
const m = (modifier) => modifier ? buildBemName(namespace, block, "", "", modifier) : "";
|
|
15
|
+
const be = (blockSuffix, element) => {
|
|
16
|
+
if (!blockSuffix || !element) return "";
|
|
17
|
+
return buildBemName(namespace, block, blockSuffix, element);
|
|
18
|
+
};
|
|
19
|
+
const em = (element, modifier) => {
|
|
20
|
+
if (!element || !modifier) return "";
|
|
21
|
+
return buildBemName(namespace, block, "", element, modifier);
|
|
22
|
+
};
|
|
23
|
+
const bm = (blockSuffix, modifier) => {
|
|
24
|
+
if (!blockSuffix || !modifier) return "";
|
|
25
|
+
return buildBemName(namespace, block, blockSuffix, "", modifier);
|
|
26
|
+
};
|
|
27
|
+
const bem = (blockSuffix, element, modifier) => {
|
|
28
|
+
if (!blockSuffix && !element && !modifier) return b();
|
|
29
|
+
return buildBemName(namespace, block, blockSuffix, element, modifier);
|
|
30
|
+
};
|
|
31
|
+
const is = (name, state = true) => state ? `${statePrefix}${name}` : "";
|
|
32
|
+
return {
|
|
33
|
+
namespace,
|
|
34
|
+
b,
|
|
35
|
+
e,
|
|
36
|
+
m,
|
|
37
|
+
be,
|
|
38
|
+
em,
|
|
39
|
+
bm,
|
|
40
|
+
bem,
|
|
41
|
+
is
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
const mergeComponentExpose = (vm, exposed, extras = {}) => {
|
|
45
|
+
if (!vm?.exposed || !exposed || typeof exposed !== "object" && typeof exposed !== "function") return;
|
|
46
|
+
Object.assign(vm.exposed, extras, exposed);
|
|
47
|
+
};
|
|
48
|
+
const invokeListener = (listener, ...args) => {
|
|
49
|
+
if (typeof listener === "function") {
|
|
50
|
+
listener(...args);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (!Array.isArray(listener)) return;
|
|
54
|
+
for (const item of listener) if (typeof item === "function") item(...args);
|
|
55
|
+
};
|
|
56
|
+
const useMergedAttrs = ({ attrs, block, listenerName, onListener }) => {
|
|
57
|
+
const className = useNamespace(block).b();
|
|
58
|
+
return { mergedAttrs: (0, vue.computed)(() => {
|
|
59
|
+
const next = { ...attrs };
|
|
60
|
+
const originalListener = next[listenerName];
|
|
61
|
+
next.class = [className, next.class];
|
|
62
|
+
next[listenerName] = (...args) => {
|
|
63
|
+
onListener?.(...args);
|
|
64
|
+
invokeListener(originalListener, ...args);
|
|
65
|
+
};
|
|
66
|
+
return next;
|
|
67
|
+
}) };
|
|
68
|
+
};
|
|
69
|
+
const useMergedExpose = (extras) => {
|
|
70
|
+
const vm = (0, vue.getCurrentInstance)();
|
|
71
|
+
const changeRef = (exposed) => {
|
|
72
|
+
mergeComponentExpose(vm, exposed, extras);
|
|
73
|
+
};
|
|
74
|
+
return { changeRef };
|
|
75
|
+
};
|
|
76
|
+
const useClearableState = ({ attrs, isError, resolveClearValue = () => void 0 }) => {
|
|
77
|
+
const resolveClearable = () => {
|
|
78
|
+
const candidate = attrs.clearable;
|
|
79
|
+
if (typeof candidate === "boolean") return candidate;
|
|
80
|
+
return true;
|
|
81
|
+
};
|
|
82
|
+
const clearModelValue = () => {
|
|
83
|
+
invokeListener(attrs["onUpdate:modelValue"], resolveClearValue());
|
|
84
|
+
};
|
|
85
|
+
(0, vue.watch)(isError, (active, previousActive) => {
|
|
86
|
+
if (active && previousActive !== true) clearModelValue();
|
|
87
|
+
}, { immediate: true });
|
|
88
|
+
return {
|
|
89
|
+
clearModelValue,
|
|
90
|
+
resolveClearable
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
var componentVNodeShapeFlag = 6;
|
|
94
|
+
var managedDialogPropKeys = new Set([
|
|
95
|
+
"modelValue",
|
|
96
|
+
"title",
|
|
97
|
+
"showClose",
|
|
98
|
+
"closeOnClickModal",
|
|
99
|
+
"closeOnPressEscape",
|
|
100
|
+
"onCancel",
|
|
101
|
+
"onConfirm",
|
|
102
|
+
"onUpdate:modelValue",
|
|
103
|
+
"onUpdateModelValue"
|
|
104
|
+
]);
|
|
105
|
+
var activeDialogInstance = null;
|
|
106
|
+
var dialogSeed = 0;
|
|
107
|
+
var dialogComponentLoader = null;
|
|
108
|
+
var loadDialogComponent = async () => {
|
|
109
|
+
if (!dialogComponentLoader) dialogComponentLoader = Promise.resolve().then(() => require("./dialog-DpYPBcKV.cjs")).then((module$1) => module$1.default);
|
|
110
|
+
return dialogComponentLoader;
|
|
111
|
+
};
|
|
112
|
+
var toDialogRejectAction = (action) => action === "confirm" ? "close" : action;
|
|
113
|
+
var resolveAppendTarget = (appendTo) => {
|
|
114
|
+
if (typeof document === "undefined") throw new Error("[useDialog] document is not available in current runtime.");
|
|
115
|
+
if (appendTo instanceof HTMLElement) return appendTo;
|
|
116
|
+
if (typeof appendTo === "string") {
|
|
117
|
+
const node = document.querySelector(appendTo);
|
|
118
|
+
if (node instanceof HTMLElement) return node;
|
|
119
|
+
}
|
|
120
|
+
return document.body;
|
|
121
|
+
};
|
|
122
|
+
var sanitizeDialogProps = (dialogProps) => {
|
|
123
|
+
if (!dialogProps) return {};
|
|
124
|
+
const nextProps = {};
|
|
125
|
+
for (const [key, value] of Object.entries(dialogProps)) if (!managedDialogPropKeys.has(key)) nextProps[key] = value;
|
|
126
|
+
return nextProps;
|
|
127
|
+
};
|
|
128
|
+
var resolveMessageContent = (message) => {
|
|
129
|
+
if (typeof message === "function") return message();
|
|
130
|
+
return message;
|
|
131
|
+
};
|
|
132
|
+
var isComponentVNode = (value) => {
|
|
133
|
+
if (!(0, vue.isVNode)(value)) return false;
|
|
134
|
+
return (value.shapeFlag & componentVNodeShapeFlag) !== 0;
|
|
135
|
+
};
|
|
136
|
+
var injectPayloadTargetRef = (messageContent, payloadTargetRef) => {
|
|
137
|
+
if (!isComponentVNode(messageContent)) return messageContent;
|
|
138
|
+
return (0, vue.cloneVNode)(messageContent, { ref: payloadTargetRef }, true);
|
|
139
|
+
};
|
|
140
|
+
var resolvePayloadByMethod = async (options, payloadTargetRef) => {
|
|
141
|
+
const payloadMethod = options.payloadMethod;
|
|
142
|
+
if (!payloadMethod) return;
|
|
143
|
+
const targetInstance = payloadTargetRef.value;
|
|
144
|
+
if (!targetInstance) throw new Error(`[useDialog] payload target is not available for method "${payloadMethod}".`);
|
|
145
|
+
const method = targetInstance[payloadMethod];
|
|
146
|
+
if (typeof method !== "function") throw new Error(`[useDialog] payload method "${payloadMethod}" is not a function.`);
|
|
147
|
+
return await method(...options.payloadMethodArgs ?? []);
|
|
148
|
+
};
|
|
149
|
+
var resolveConfirmPayload = async (options, payloadTargetRef) => {
|
|
150
|
+
if (options.payloadResolver) return await options.payloadResolver();
|
|
151
|
+
if (options.payloadMethod) return await resolvePayloadByMethod(options, payloadTargetRef);
|
|
152
|
+
};
|
|
153
|
+
var resolveBeforeClose = async (beforeClose, action) => {
|
|
154
|
+
if (!beforeClose) return true;
|
|
155
|
+
try {
|
|
156
|
+
return await beforeClose(action) !== false;
|
|
157
|
+
} catch {
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
var open = (options = {}) => {
|
|
162
|
+
activeDialogInstance?.close("closeAll");
|
|
163
|
+
const appendTarget = resolveAppendTarget(options.appendTo);
|
|
164
|
+
const container = document.createElement("div");
|
|
165
|
+
appendTarget.appendChild(container);
|
|
166
|
+
const instanceId = ++dialogSeed;
|
|
167
|
+
return new Promise((resolve, reject) => {
|
|
168
|
+
let isSettled = false;
|
|
169
|
+
let isSettling = false;
|
|
170
|
+
let skipNextModelUpdate = false;
|
|
171
|
+
let pendingModelUpdateAction = null;
|
|
172
|
+
const payloadTargetRef = (0, vue.ref)(null);
|
|
173
|
+
const cleanup = () => {
|
|
174
|
+
(0, vue.render)(null, container);
|
|
175
|
+
container.remove();
|
|
176
|
+
if (activeDialogInstance?.id === instanceId) activeDialogInstance = null;
|
|
177
|
+
};
|
|
178
|
+
const settle = async (action) => {
|
|
179
|
+
if (isSettled || isSettling) return;
|
|
180
|
+
isSettling = true;
|
|
181
|
+
try {
|
|
182
|
+
if (action === "confirm") {
|
|
183
|
+
const payload = await resolveConfirmPayload(options, payloadTargetRef);
|
|
184
|
+
if (isSettled) return;
|
|
185
|
+
isSettled = true;
|
|
186
|
+
options.onAction?.(action);
|
|
187
|
+
if (payload === void 0) resolve({ action: "confirm" });
|
|
188
|
+
else resolve({
|
|
189
|
+
action: "confirm",
|
|
190
|
+
data: payload
|
|
191
|
+
});
|
|
192
|
+
} else {
|
|
193
|
+
isSettled = true;
|
|
194
|
+
options.onAction?.(action);
|
|
195
|
+
reject({ action: toDialogRejectAction(action) });
|
|
196
|
+
}
|
|
197
|
+
cleanup();
|
|
198
|
+
} catch (error) {
|
|
199
|
+
isSettled = true;
|
|
200
|
+
cleanup();
|
|
201
|
+
reject(error);
|
|
202
|
+
} finally {
|
|
203
|
+
isSettling = false;
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
const requestClose = async (action, force = false) => {
|
|
207
|
+
if (isSettled) return;
|
|
208
|
+
if (!force) {
|
|
209
|
+
if (!await resolveBeforeClose(options.beforeClose, action)) {
|
|
210
|
+
skipNextModelUpdate = action === "cancel" || action === "confirm";
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
settle(action);
|
|
215
|
+
};
|
|
216
|
+
const handleCancel = () => {
|
|
217
|
+
pendingModelUpdateAction = "cancel";
|
|
218
|
+
requestClose("cancel");
|
|
219
|
+
};
|
|
220
|
+
const handleConfirm = () => {
|
|
221
|
+
pendingModelUpdateAction = "confirm";
|
|
222
|
+
requestClose("confirm");
|
|
223
|
+
};
|
|
224
|
+
const handleModelValueUpdate = (value) => {
|
|
225
|
+
if (value || isSettled) return;
|
|
226
|
+
if (skipNextModelUpdate) {
|
|
227
|
+
skipNextModelUpdate = false;
|
|
228
|
+
pendingModelUpdateAction = null;
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
const action = pendingModelUpdateAction ?? "close";
|
|
232
|
+
pendingModelUpdateAction = null;
|
|
233
|
+
requestClose(action);
|
|
234
|
+
};
|
|
235
|
+
activeDialogInstance = {
|
|
236
|
+
id: instanceId,
|
|
237
|
+
close: (reason = "closeAll") => {
|
|
238
|
+
requestClose(reason, true);
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
loadDialogComponent().then((DialogComponent) => {
|
|
242
|
+
if (isSettled) return;
|
|
243
|
+
(0, vue.render)((0, vue.createVNode)((0, vue.defineComponent)({
|
|
244
|
+
name: "FlDialogServiceWrapper",
|
|
245
|
+
setup() {
|
|
246
|
+
const safeDialogProps = sanitizeDialogProps(options.dialogProps);
|
|
247
|
+
return () => {
|
|
248
|
+
const injectedMessageContent = injectPayloadTargetRef(resolveMessageContent(options.message), payloadTargetRef);
|
|
249
|
+
return (0, vue.h)(DialogComponent, {
|
|
250
|
+
...safeDialogProps,
|
|
251
|
+
modelValue: true,
|
|
252
|
+
title: options.title,
|
|
253
|
+
showClose: options.showClose ?? true,
|
|
254
|
+
closeOnClickModal: options.closeOnClickModal ?? true,
|
|
255
|
+
closeOnPressEscape: options.closeOnPressEscape ?? true,
|
|
256
|
+
teleported: safeDialogProps.teleported ?? false,
|
|
257
|
+
onCancel: handleCancel,
|
|
258
|
+
onConfirm: handleConfirm,
|
|
259
|
+
"onUpdate:modelValue": handleModelValueUpdate
|
|
260
|
+
}, injectedMessageContent === void 0 ? void 0 : { default: () => [injectedMessageContent] });
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
})), container);
|
|
264
|
+
}).catch((error) => {
|
|
265
|
+
if (isSettled) return;
|
|
266
|
+
isSettled = true;
|
|
267
|
+
cleanup();
|
|
268
|
+
reject(error);
|
|
269
|
+
});
|
|
270
|
+
});
|
|
271
|
+
};
|
|
272
|
+
var closeAll = (reason = "closeAll") => {
|
|
273
|
+
activeDialogInstance?.close(reason);
|
|
274
|
+
};
|
|
275
|
+
var useDialog = () => ({
|
|
276
|
+
open,
|
|
277
|
+
closeAll
|
|
278
|
+
});
|
|
279
|
+
Object.defineProperty(exports, "closeAll", {
|
|
280
|
+
enumerable: true,
|
|
281
|
+
get: function() {
|
|
282
|
+
return closeAll;
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
Object.defineProperty(exports, "invokeListener", {
|
|
286
|
+
enumerable: true,
|
|
287
|
+
get: function() {
|
|
288
|
+
return invokeListener;
|
|
289
|
+
}
|
|
290
|
+
});
|
|
291
|
+
Object.defineProperty(exports, "open", {
|
|
292
|
+
enumerable: true,
|
|
293
|
+
get: function() {
|
|
294
|
+
return open;
|
|
295
|
+
}
|
|
296
|
+
});
|
|
297
|
+
Object.defineProperty(exports, "useClearableState", {
|
|
298
|
+
enumerable: true,
|
|
299
|
+
get: function() {
|
|
300
|
+
return useClearableState;
|
|
301
|
+
}
|
|
302
|
+
});
|
|
303
|
+
Object.defineProperty(exports, "useDialog", {
|
|
304
|
+
enumerable: true,
|
|
305
|
+
get: function() {
|
|
306
|
+
return useDialog;
|
|
307
|
+
}
|
|
308
|
+
});
|
|
309
|
+
Object.defineProperty(exports, "useMergedAttrs", {
|
|
310
|
+
enumerable: true,
|
|
311
|
+
get: function() {
|
|
312
|
+
return useMergedAttrs;
|
|
313
|
+
}
|
|
314
|
+
});
|
|
315
|
+
Object.defineProperty(exports, "useMergedExpose", {
|
|
316
|
+
enumerable: true,
|
|
317
|
+
get: function() {
|
|
318
|
+
return useMergedExpose;
|
|
319
|
+
}
|
|
320
|
+
});
|
|
321
|
+
Object.defineProperty(exports, "useNamespace", {
|
|
322
|
+
enumerable: true,
|
|
323
|
+
get: function() {
|
|
324
|
+
return useNamespace;
|
|
325
|
+
}
|
|
326
|
+
});
|
|
327
|
+
|
|
328
|
+
//# sourceMappingURL=hooks-D2Jaq5kO.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks-D2Jaq5kO.cjs","names":["activeDialogInstance: ActiveDialogInstance | null","dialogComponentLoader: Promise<DialogComponent> | null","nextProps: Record<string, unknown>","pendingModelUpdateAction: DialogAction | null","closeAll: UseDialogService['closeAll']"],"sources":["../../../../packages/utils/src/bem.ts","../../../../packages/utils/src/component.ts","../../../../packages/hooks/src/use-component.ts","../../../../packages/hooks/src/use-clearable-state.ts","../../../../packages/hooks/src/use-dialog.ts"],"sourcesContent":["const defaultNamespace = 'fl'\r\nconst statePrefix = 'is-'\r\n\r\nconst buildBemName = (\r\n namespace: string,\r\n block: string,\r\n blockSuffix = '',\r\n element = '',\r\n modifier = ''\r\n) => {\r\n let className = `${namespace}-${block}`\r\n\r\n if (blockSuffix) {\r\n className += `-${blockSuffix}`\r\n }\r\n\r\n if (element) {\r\n className += `__${element}`\r\n }\r\n\r\n if (modifier) {\r\n className += `--${modifier}`\r\n }\r\n\r\n return className\r\n}\r\n\r\nexport const useNamespace = (block: string, namespace = defaultNamespace) => {\r\n const b = (blockSuffix = '') => buildBemName(namespace, block, blockSuffix)\r\n\r\n const e = (element?: string) => (element ? buildBemName(namespace, block, '', element) : '')\r\n\r\n const m = (modifier?: string) =>\r\n modifier ? buildBemName(namespace, block, '', '', modifier) : ''\r\n\r\n const be = (blockSuffix?: string, element?: string) => {\r\n if (!blockSuffix || !element) {\r\n return ''\r\n }\r\n\r\n return buildBemName(namespace, block, blockSuffix, element)\r\n }\r\n\r\n const em = (element?: string, modifier?: string) => {\r\n if (!element || !modifier) {\r\n return ''\r\n }\r\n\r\n return buildBemName(namespace, block, '', element, modifier)\r\n }\r\n\r\n const bm = (blockSuffix?: string, modifier?: string) => {\r\n if (!blockSuffix || !modifier) {\r\n return ''\r\n }\r\n\r\n return buildBemName(namespace, block, blockSuffix, '', modifier)\r\n }\r\n\r\n const bem = (blockSuffix?: string, element?: string, modifier?: string) => {\r\n if (!blockSuffix && !element && !modifier) {\r\n return b()\r\n }\r\n\r\n return buildBemName(namespace, block, blockSuffix, element, modifier)\r\n }\r\n\r\n const is = (name: string, state = true) => (state ? `${statePrefix}${name}` : '')\r\n\r\n return {\r\n namespace,\r\n b,\r\n e,\r\n m,\r\n be,\r\n em,\r\n bm,\r\n bem,\r\n is\r\n }\r\n}\r\n","type ExposedTarget = {\r\n exposed?: Record<string, unknown> | null\r\n} | null\r\n\r\nexport const mergeComponentExpose = (\r\n vm: ExposedTarget,\r\n exposed: unknown,\r\n extras: Record<string, unknown> = {}\r\n) => {\r\n if (!vm?.exposed || !exposed || (typeof exposed !== 'object' && typeof exposed !== 'function')) {\r\n return\r\n }\r\n\r\n Object.assign(vm.exposed, extras, exposed)\r\n}\r\n\r\nexport const invokeListener = (listener: unknown, ...args: unknown[]) => {\r\n if (typeof listener === 'function') {\r\n listener(...args)\r\n return\r\n }\r\n\r\n if (!Array.isArray(listener)) {\r\n return\r\n }\r\n\r\n for (const item of listener) {\r\n if (typeof item === 'function') {\r\n item(...args)\r\n }\r\n }\r\n}\r\n","import { computed, getCurrentInstance } from 'vue'\r\nimport { invokeListener, mergeComponentExpose, useNamespace } from '@falcon-ui/utils'\r\n\r\ntype UseMergedAttrsOptions = {\r\n attrs: Record<string, unknown>\r\n block: string\r\n listenerName: string\r\n onListener?: (...args: unknown[]) => void\r\n}\r\n\r\nexport const useMergedAttrs = ({\r\n attrs,\r\n block,\r\n listenerName,\r\n onListener\r\n}: UseMergedAttrsOptions) => {\r\n const ns = useNamespace(block)\r\n const className = ns.b()\r\n\r\n const mergedAttrs = computed(() => {\r\n const next = { ...attrs }\r\n const originalListener = next[listenerName]\r\n next.class = [className, next.class]\r\n\r\n next[listenerName] = (...args: unknown[]) => {\r\n onListener?.(...args)\r\n invokeListener(originalListener, ...args)\r\n }\r\n\r\n return next\r\n })\r\n\r\n return {\r\n mergedAttrs\r\n }\r\n}\r\n\r\nexport const useMergedExpose = <TExpose extends Record<string, unknown>>(extras: TExpose) => {\r\n const vm = getCurrentInstance()\r\n\r\n const changeRef = (exposed: unknown) => {\r\n mergeComponentExpose(vm, exposed, extras)\r\n }\r\n\r\n return {\r\n changeRef\r\n }\r\n}\r\n","import { watch } from 'vue'\r\nimport { invokeListener } from '@falcon-ui/utils'\r\n\r\nexport type ClearValueResolver = () => unknown\r\n\r\nexport interface UseClearableStateOptions {\r\n attrs: Record<string, unknown>\r\n isError: () => boolean\r\n resolveClearValue?: ClearValueResolver\r\n}\r\n\r\nexport const useClearableState = ({\r\n attrs,\r\n isError,\r\n resolveClearValue = () => undefined\r\n}: UseClearableStateOptions) => {\r\n const resolveClearable = (): boolean => {\r\n const candidate = attrs.clearable\r\n if (typeof candidate === 'boolean') {\r\n return candidate\r\n }\r\n\r\n return true\r\n }\r\n\r\n const clearModelValue = () => {\r\n invokeListener(attrs['onUpdate:modelValue'], resolveClearValue())\r\n }\r\n\r\n watch(\r\n isError,\r\n (active, previousActive) => {\r\n if (active && previousActive !== true) {\r\n clearModelValue()\r\n }\r\n },\r\n { immediate: true }\r\n )\r\n\r\n return {\r\n clearModelValue,\r\n resolveClearable\r\n }\r\n}\r\n","// 复用 FlDialog 的公开 props 类型,保证调用式服务与组件 props 契约一致。\r\nimport type { FlDialogProps } from '../../components/dialog/src/dialog'\r\n// 支持通过字符串、VNode 或渲染函数提供弹窗内容。\r\nimport type { Ref, VNode } from 'vue'\r\n// 调用式弹窗通过运行时动态创建 VNode 并手动渲染/销毁。\r\nimport { cloneVNode, createVNode, defineComponent, h, isVNode, ref, render } from 'vue'\r\n\r\n// useDialog 支持的所有动作类型。\r\nexport type DialogAction = 'confirm' | 'cancel' | 'close' | 'mask' | 'esc' | 'closeAll'\r\n// closeAll 的原因类型与动作类型保持一致。\r\nexport type DialogCloseReason = DialogAction\r\n\r\n// Promise resolve 分支的载荷,仅 confirm 会进入 resolve。\r\nexport type DialogResolvePayload<TPayload = void> = TPayload extends void\r\n ? { action: 'confirm' }\r\n : { action: 'confirm'; data: TPayload }\r\n\r\n// Promise reject 分支动作(排除 confirm)。\r\nexport type DialogRejectAction = Exclude<DialogAction, 'confirm'>\r\n\r\n// Promise reject 分支的载荷结构。\r\nexport interface DialogRejectPayload {\r\n action: DialogRejectAction\r\n}\r\n\r\n// 关闭前拦截钩子:返回 false 则阻止关闭。\r\nexport type DialogBeforeClose = (action: DialogAction) => boolean | Promise<boolean>\r\n// 确认动作的数据解析器。\r\nexport type DialogPayloadResolver<TPayload> = () => TPayload | Promise<TPayload>\r\n// 确认动作通过组件实例方法读取数据的方法名。\r\nexport type DialogPayloadMethod = string\r\n// 弹窗正文支持的消息类型。\r\nexport type DialogMessage = string | VNode | (() => VNode)\r\n\r\n// open 方法参数。\r\nexport interface DialogOpenOptions<TPayload = void> {\r\n // 标题。\r\n title?: string\r\n // 正文内容。\r\n message?: DialogMessage\r\n // 挂载目标,非法时回退到 document.body。\r\n appendTo?: string | HTMLElement\r\n // 是否显示右上角关闭按钮。\r\n showClose?: boolean\r\n // 是否允许点击遮罩关闭。\r\n closeOnClickModal?: boolean\r\n // 是否允许按 ESC 关闭。\r\n closeOnPressEscape?: boolean\r\n // 关闭前拦截。\r\n beforeClose?: DialogBeforeClose\r\n // 透传给 FlDialog 的额外参数(内部托管字段会被过滤)。\r\n dialogProps?: Partial<FlDialogProps> & Record<string, unknown>\r\n // 确认时读取业务数据并返回到 then 回调。\r\n payloadResolver?: DialogPayloadResolver<TPayload>\r\n // 确认时自动从 message 对应组件实例调用的方法名。\r\n payloadMethod?: DialogPayloadMethod\r\n // 调用 payloadMethod 时透传的参数列表。\r\n payloadMethodArgs?: unknown[]\r\n // 弹窗最终关闭时的动作回调。\r\n onAction?: (action: DialogAction) => void\r\n}\r\n\r\n// useDialog 对外暴露的服务接口。\r\nexport interface UseDialogService {\r\n // 打开弹窗,confirm resolve,其余动作 reject。\r\n open: <TPayload = void>(\r\n options?: DialogOpenOptions<TPayload>\r\n ) => Promise<DialogResolvePayload<TPayload>>\r\n // 关闭当前活动实例。\r\n closeAll: (reason?: DialogCloseReason) => void\r\n}\r\n\r\n// 动态导入 .vue 组件后的类型。\r\ntype DialogComponent = ReturnType<typeof defineComponent>\r\n\r\n// 当前活动实例元信息,用于单例控制与关闭。\r\ntype ActiveDialogInstance = {\r\n // 主动关闭当前实例。\r\n close: (reason?: DialogCloseReason) => void\r\n // 实例唯一 id,用于避免旧实例清理误伤新实例。\r\n id: number\r\n}\r\n\r\n// 支持从组件 VNode 自动注入 ref 的 shapeFlag(有状态/函数式组件)。\r\nconst componentVNodeShapeFlag = 4 | 2\r\n\r\n// 这些字段由服务层统一管理,禁止调用方在 dialogProps 里覆盖。\r\nconst managedDialogPropKeys = new Set([\r\n 'modelValue',\r\n 'title',\r\n 'showClose',\r\n 'closeOnClickModal',\r\n 'closeOnPressEscape',\r\n 'onCancel',\r\n 'onConfirm',\r\n 'onUpdate:modelValue',\r\n 'onUpdateModelValue'\r\n])\r\n\r\n// 当前活动实例引用(单例)。\r\nlet activeDialogInstance: ActiveDialogInstance | null = null\r\n// 自增实例 id 种子。\r\nlet dialogSeed = 0\r\n// 懒加载缓存,避免重复动态导入对话框组件。\r\nlet dialogComponentLoader: Promise<DialogComponent> | null = null\r\n\r\n/**\r\n * [04] 懒加载 FlDialog 组件并进行缓存。\r\n */\r\nconst loadDialogComponent = async (): Promise<DialogComponent> => {\r\n if (!dialogComponentLoader) {\r\n // 仅首次调用时执行动态导入。\r\n dialogComponentLoader = import('../../components/dialog/src/dialog.vue').then(\r\n (module) => module.default as DialogComponent\r\n )\r\n }\r\n\r\n return dialogComponentLoader\r\n}\r\n\r\n/**\r\n * 将任意动作映射到 reject 分支动作。\r\n * 理论上 confirm 不会走 reject,这里兜底转换为 close。\r\n */\r\nconst toDialogRejectAction = (action: DialogAction): DialogRejectAction =>\r\n action === 'confirm' ? 'close' : action\r\n\r\n/**\r\n * [03] 解析挂载容器,优先使用 appendTo,失败回退到 document.body。\r\n */\r\nconst resolveAppendTarget = (appendTo?: string | HTMLElement): HTMLElement => {\r\n // 首版仅支持浏览器运行时。\r\n if (typeof document === 'undefined') {\r\n throw new Error('[useDialog] document is not available in current runtime.')\r\n }\r\n\r\n // 直接传入 DOM 节点时直接使用。\r\n if (appendTo instanceof HTMLElement) {\r\n return appendTo\r\n }\r\n\r\n // 传入选择器时尝试查询目标节点。\r\n if (typeof appendTo === 'string') {\r\n const node = document.querySelector(appendTo)\r\n if (node instanceof HTMLElement) {\r\n return node\r\n }\r\n }\r\n\r\n return document.body\r\n}\r\n\r\n/**\r\n * 过滤 dialogProps,移除由服务层托管的字段。\r\n */\r\nconst sanitizeDialogProps = (\r\n dialogProps?: Partial<FlDialogProps> & Record<string, unknown>\r\n): Record<string, unknown> => {\r\n if (!dialogProps) {\r\n return {}\r\n }\r\n\r\n const nextProps: Record<string, unknown> = {}\r\n\r\n // 仅保留允许透传的字段。\r\n for (const [key, value] of Object.entries(dialogProps)) {\r\n if (!managedDialogPropKeys.has(key)) {\r\n nextProps[key] = value\r\n }\r\n }\r\n\r\n return nextProps\r\n}\r\n\r\n/**\r\n * 解析 message:若为函数则执行得到 VNode/字符串。\r\n */\r\nconst resolveMessageContent = (message?: DialogMessage) => {\r\n if (typeof message === 'function') {\r\n return message()\r\n }\r\n\r\n return message\r\n}\r\n\r\n/**\r\n * 判断当前 VNode 是否为组件。\r\n */\r\nconst isComponentVNode = (value: unknown): value is VNode => {\r\n if (!isVNode(value)) {\r\n return false\r\n }\r\n\r\n return (value.shapeFlag & componentVNodeShapeFlag) !== 0\r\n}\r\n\r\n/**\r\n * 若 message 是组件 VNode,则自动注入内部 payloadTargetRef。\r\n */\r\nconst injectPayloadTargetRef = (\r\n messageContent: unknown,\r\n payloadTargetRef: Ref<Record<string, unknown> | null>\r\n) => {\r\n if (!isComponentVNode(messageContent)) {\r\n return messageContent\r\n }\r\n\r\n // mergeRef=true:保留调用方已有 ref,同时附加内部 payloadTargetRef。\r\n return cloneVNode(\r\n messageContent,\r\n {\r\n ref: payloadTargetRef\r\n },\r\n true\r\n )\r\n}\r\n\r\n/**\r\n * 通过 payloadMethod 从 message 组件实例读取确认数据。\r\n */\r\nconst resolvePayloadByMethod = async <TPayload>(\r\n options: DialogOpenOptions<TPayload>,\r\n payloadTargetRef: Ref<Record<string, unknown> | null>\r\n) => {\r\n const payloadMethod = options.payloadMethod\r\n if (!payloadMethod) {\r\n return undefined as TPayload\r\n }\r\n\r\n const targetInstance = payloadTargetRef.value\r\n if (!targetInstance) {\r\n throw new Error(`[useDialog] payload target is not available for method \"${payloadMethod}\".`)\r\n }\r\n\r\n const method = targetInstance[payloadMethod]\r\n if (typeof method !== 'function') {\r\n throw new Error(`[useDialog] payload method \"${payloadMethod}\" is not a function.`)\r\n }\r\n\r\n return (await method(...(options.payloadMethodArgs ?? []))) as TPayload\r\n}\r\n\r\n/**\r\n * 执行 confirm 数据解析,作为 then 分支的 data。\r\n * 优先级:payloadResolver > payloadMethod。\r\n */\r\nconst resolveConfirmPayload = async <TPayload>(\r\n options: DialogOpenOptions<TPayload>,\r\n payloadTargetRef: Ref<Record<string, unknown> | null>\r\n) => {\r\n if (options.payloadResolver) {\r\n return await options.payloadResolver()\r\n }\r\n\r\n if (options.payloadMethod) {\r\n return await resolvePayloadByMethod(options, payloadTargetRef)\r\n }\r\n\r\n return undefined as TPayload\r\n}\r\n\r\n/**\r\n * [05] 执行 beforeClose 拦截逻辑。\r\n * - 未提供 beforeClose:允许关闭\r\n * - 返回 false:阻止关闭\r\n * - beforeClose 抛错:按阻止关闭处理,避免异常导致状态错乱\r\n */\r\nconst resolveBeforeClose = async (\r\n beforeClose: DialogBeforeClose | undefined,\r\n action: DialogAction\r\n) => {\r\n if (!beforeClose) {\r\n return true\r\n }\r\n\r\n try {\r\n const result = await beforeClose(action)\r\n return result !== false\r\n } catch {\r\n return false\r\n }\r\n}\r\n\r\n/**\r\n * [02] 打开调用式弹窗。\r\n */\r\nconst open = <TPayload = void>(\r\n options: DialogOpenOptions<TPayload> = {}\r\n): Promise<DialogResolvePayload<TPayload>> => {\r\n // 单例覆盖策略:打开新实例前先关闭旧实例。\r\n activeDialogInstance?.close('closeAll')\r\n\r\n // 创建挂载容器并插入目标节点。\r\n const appendTarget = resolveAppendTarget(options.appendTo)\r\n const container = document.createElement('div')\r\n appendTarget.appendChild(container)\r\n\r\n // 生成当前实例唯一 id。\r\n const instanceId = ++dialogSeed\r\n\r\n return new Promise<DialogResolvePayload<TPayload>>((resolve, reject) => {\r\n // 防止 Promise 重复 settle。\r\n let isSettled = false\r\n // 防止异步结算期间重复进入 settle。\r\n let isSettling = false\r\n // beforeClose 拦截 cancel/confirm 后,忽略其后跟随的一次 modelValue=false。\r\n let skipNextModelUpdate = false\r\n // 记录 footer 行为,以便在 update:modelValue 时还原为正确 action。\r\n let pendingModelUpdateAction: DialogAction | null = null\r\n // message 组件实例引用(用于 payloadMethod 自动调用)。\r\n const payloadTargetRef = ref<Record<string, unknown> | null>(null)\r\n\r\n /**\r\n * 卸载 VNode、移除容器并清理活动实例引用。\r\n */\r\n const cleanup = () => {\r\n render(null, container)\r\n container.remove()\r\n\r\n // 仅当当前实例仍是活动实例时才清空引用,防止误清理新实例。\r\n if (activeDialogInstance?.id === instanceId) {\r\n activeDialogInstance = null\r\n }\r\n }\r\n\r\n /**\r\n * 最终结算 Promise 并执行资源清理。\r\n */\r\n const settle = async (action: DialogAction) => {\r\n if (isSettled || isSettling) {\r\n return\r\n }\r\n\r\n isSettling = true\r\n\r\n try {\r\n // confirm 进入 resolve,其他动作进入 reject。\r\n if (action === 'confirm') {\r\n const payload = await resolveConfirmPayload(options, payloadTargetRef)\r\n if (isSettled) {\r\n return\r\n }\r\n\r\n isSettled = true\r\n // 通知调用方最终动作。\r\n options.onAction?.(action)\r\n\r\n if (payload === undefined) {\r\n resolve({ action: 'confirm' } as DialogResolvePayload<TPayload>)\r\n } else {\r\n resolve({ action: 'confirm', data: payload } as DialogResolvePayload<TPayload>)\r\n }\r\n } else {\r\n isSettled = true\r\n // 通知调用方最终动作。\r\n options.onAction?.(action)\r\n reject({ action: toDialogRejectAction(action) })\r\n }\r\n\r\n cleanup()\r\n } catch (error) {\r\n // payloadResolver 异常走 reject(error),便于业务定位错误原因。\r\n isSettled = true\r\n cleanup()\r\n reject(error)\r\n } finally {\r\n isSettling = false\r\n }\r\n }\r\n\r\n /**\r\n * 尝试关闭弹窗。\r\n * force=true 时跳过 beforeClose(用于 closeAll 强制关闭)。\r\n */\r\n const requestClose = async (action: DialogAction, force = false) => {\r\n if (isSettled) {\r\n return\r\n }\r\n\r\n if (!force) {\r\n const canClose = await resolveBeforeClose(options.beforeClose, action)\r\n if (!canClose) {\r\n // cancel/confirm 来自 footer 点击,FlDialog 仍会触发 modelValue=false。\r\n // 为避免在拦截后被 onUpdate:modelValue 二次关闭,这里标记跳过一次。\r\n skipNextModelUpdate = action === 'cancel' || action === 'confirm'\r\n return\r\n }\r\n }\r\n\r\n void settle(action)\r\n }\r\n\r\n // 内置取消按钮事件。\r\n const handleCancel = () => {\r\n pendingModelUpdateAction = 'cancel'\r\n void requestClose('cancel')\r\n }\r\n\r\n // 内置确认按钮事件。\r\n const handleConfirm = () => {\r\n pendingModelUpdateAction = 'confirm'\r\n void requestClose('confirm')\r\n }\r\n\r\n // 监听 FlDialog 的 modelValue 变化,用于识别 close/mask/esc 等关闭动作。\r\n const handleModelValueUpdate = (value: boolean) => {\r\n // 仅关心关闭场景(false)。\r\n if (value || isSettled) {\r\n return\r\n }\r\n\r\n // 跳过一次由拦截后的 footer 自动触发的 update。\r\n if (skipNextModelUpdate) {\r\n skipNextModelUpdate = false\r\n pendingModelUpdateAction = null\r\n return\r\n }\r\n\r\n // 优先使用 footer 记录的动作;否则按通用 close 处理。\r\n const action = pendingModelUpdateAction ?? 'close'\r\n pendingModelUpdateAction = null\r\n void requestClose(action)\r\n }\r\n\r\n // 注册当前活动实例,供后续 closeAll / open 覆盖调用。\r\n activeDialogInstance = {\r\n id: instanceId,\r\n close: (reason = 'closeAll') => {\r\n // 主动关闭时强制执行,不经过 beforeClose。\r\n void requestClose(reason, true)\r\n }\r\n }\r\n\r\n // 异步加载组件后渲染弹窗。\r\n void loadDialogComponent()\r\n .then((DialogComponent) => {\r\n // 若在组件加载完成前已 settle,则不再渲染。\r\n if (isSettled) {\r\n return\r\n }\r\n\r\n // 轻量 wrapper:仅负责桥接 service 状态到 FlDialog。\r\n const Wrapper = defineComponent({\r\n name: 'FlDialogServiceWrapper',\r\n setup() {\r\n // 过滤冲突 props。\r\n const safeDialogProps = sanitizeDialogProps(options.dialogProps)\r\n\r\n return () => {\r\n // 在 render 阶段解析 message,确保 VNode ref 拥有正确 owner context。\r\n const messageContent = resolveMessageContent(options.message)\r\n const injectedMessageContent = injectPayloadTargetRef(\r\n messageContent,\r\n payloadTargetRef\r\n )\r\n\r\n return h(\r\n DialogComponent,\r\n {\r\n ...safeDialogProps,\r\n modelValue: true,\r\n title: options.title,\r\n showClose: options.showClose ?? true,\r\n closeOnClickModal: options.closeOnClickModal ?? true,\r\n closeOnPressEscape: options.closeOnPressEscape ?? true,\r\n // service 场景默认不使用 teleport,便于可控挂载到 appendTo 容器。\r\n teleported: safeDialogProps.teleported ?? false,\r\n onCancel: handleCancel,\r\n onConfirm: handleConfirm,\r\n 'onUpdate:modelValue': handleModelValueUpdate\r\n },\r\n injectedMessageContent === undefined\r\n ? undefined\r\n : { default: () => [injectedMessageContent] }\r\n )\r\n }\r\n }\r\n })\r\n\r\n // 将 wrapper 渲染到动态容器。\r\n render(createVNode(Wrapper), container)\r\n })\r\n .catch((error) => {\r\n // 异步加载失败时走 reject,并清理资源。\r\n if (isSettled) {\r\n return\r\n }\r\n\r\n isSettled = true\r\n cleanup()\r\n reject(error)\r\n })\r\n })\r\n}\r\n\r\n/**\r\n * [06] 关闭当前活动实例(无实例时无副作用)。\r\n */\r\nconst closeAll: UseDialogService['closeAll'] = (reason = 'closeAll') => {\r\n activeDialogInstance?.close(reason)\r\n}\r\n\r\n/**\r\n * [01] useDialog 入口:返回调用式弹窗服务。\r\n */\r\nconst useDialog = (): UseDialogService => ({\r\n open,\r\n closeAll\r\n})\r\n\r\n// 同时导出函数与组合式入口,方便按需使用。\r\nexport { closeAll, open, useDialog }\r\n"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_hooks = require("./hooks-D2Jaq5kO.cjs");
|
|
3
|
+
exports.closeAll = require_hooks.closeAll;
|
|
4
|
+
exports.open = require_hooks.open;
|
|
5
|
+
exports.useClearableState = require_hooks.useClearableState;
|
|
6
|
+
exports.useDialog = require_hooks.useDialog;
|
|
7
|
+
exports.useMergedAttrs = require_hooks.useMergedAttrs;
|
|
8
|
+
exports.useMergedExpose = require_hooks.useMergedExpose;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
let vue = require("vue");
|
|
3
|
+
const withInstall = (component) => {
|
|
4
|
+
const installable = component;
|
|
5
|
+
installable.install = (app) => {
|
|
6
|
+
if (!component.name) return;
|
|
7
|
+
app.component(component.name, component);
|
|
8
|
+
};
|
|
9
|
+
return installable;
|
|
10
|
+
};
|
|
11
|
+
var _hoisted_1$2 = {
|
|
12
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
13
|
+
viewBox: "0 0 1024 1024"
|
|
14
|
+
};
|
|
15
|
+
var holder_outlined_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
16
|
+
name: "HolderOutlined",
|
|
17
|
+
__name: "holder-outlined",
|
|
18
|
+
setup(__props) {
|
|
19
|
+
return (_ctx, _cache) => {
|
|
20
|
+
return (0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_1$2, [..._cache[0] || (_cache[0] = [(0, vue.createElementVNode)("path", {
|
|
21
|
+
fill: "currentColor",
|
|
22
|
+
d: "M300 276.5a56 56 0 1 0 56-97 56 56 0 0 0-56 97zm0 284a56 56 0 1 0 56-97 56 56 0 0 0-56 97zM640 228a56 56 0 1 0 112 0 56 56 0 0 0-112 0zm0 284a56 56 0 1 0 112 0 56 56 0 0 0-112 0zM300 844.5a56 56 0 1 0 56-97 56 56 0 0 0-56 97zM640 796a56 56 0 1 0 112 0 56 56 0 0 0-112 0z"
|
|
23
|
+
}, null, -1)])]);
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
var holder_outlined_default = holder_outlined_vue_vue_type_script_setup_true_lang_default;
|
|
28
|
+
var _hoisted_1$1 = {
|
|
29
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
30
|
+
viewBox: "0 0 1024 1024"
|
|
31
|
+
};
|
|
32
|
+
var minus_square_outlined_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
33
|
+
name: "MinusSquareOutlined",
|
|
34
|
+
__name: "minus-square-outlined",
|
|
35
|
+
setup(__props) {
|
|
36
|
+
return (_ctx, _cache) => {
|
|
37
|
+
return (0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_1$1, [..._cache[0] || (_cache[0] = [(0, vue.createElementVNode)("path", {
|
|
38
|
+
fill: "currentColor",
|
|
39
|
+
"fill-rule": "evenodd",
|
|
40
|
+
"clip-rule": "evenodd",
|
|
41
|
+
d: "M192 192v640h640V192zm-32-64h704a32 32 0 0 1 32 32v704a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32"
|
|
42
|
+
}, null, -1), (0, vue.createElementVNode)("path", {
|
|
43
|
+
fill: "currentColor",
|
|
44
|
+
d: "M352 480h320a32 32 0 1 1 0 64H352a32 32 0 0 1 0-64"
|
|
45
|
+
}, null, -1)])]);
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
var minus_square_outlined_default = minus_square_outlined_vue_vue_type_script_setup_true_lang_default;
|
|
50
|
+
var _hoisted_1 = {
|
|
51
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
52
|
+
viewBox: "0 0 1024 1024"
|
|
53
|
+
};
|
|
54
|
+
var plus_square_outlined_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({
|
|
55
|
+
name: "PlusSquareOutlined",
|
|
56
|
+
__name: "plus-square-outlined",
|
|
57
|
+
setup(__props) {
|
|
58
|
+
return (_ctx, _cache) => {
|
|
59
|
+
return (0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_1, [..._cache[0] || (_cache[0] = [
|
|
60
|
+
(0, vue.createElementVNode)("path", {
|
|
61
|
+
fill: "currentColor",
|
|
62
|
+
"fill-rule": "evenodd",
|
|
63
|
+
"clip-rule": "evenodd",
|
|
64
|
+
d: "M192 192v640h640V192zm-32-64h704a32 32 0 0 1 32 32v704a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32"
|
|
65
|
+
}, null, -1),
|
|
66
|
+
(0, vue.createElementVNode)("path", {
|
|
67
|
+
fill: "currentColor",
|
|
68
|
+
d: "M352 480h320a32 32 0 1 1 0 64H352a32 32 0 0 1 0-64"
|
|
69
|
+
}, null, -1),
|
|
70
|
+
(0, vue.createElementVNode)("path", {
|
|
71
|
+
fill: "currentColor",
|
|
72
|
+
d: "M480 672V352a32 32 0 1 1 64 0v320a32 32 0 0 1-64 0"
|
|
73
|
+
}, null, -1)
|
|
74
|
+
])]);
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
var plus_square_outlined_default = plus_square_outlined_vue_vue_type_script_setup_true_lang_default;
|
|
79
|
+
const PlusSquareOutlined = withInstall(plus_square_outlined_default);
|
|
80
|
+
const MinusSquareOutlined = withInstall(minus_square_outlined_default);
|
|
81
|
+
const HolderOutlined = withInstall(holder_outlined_default);
|
|
82
|
+
exports.HolderOutlined = HolderOutlined;
|
|
83
|
+
exports.MinusSquareOutlined = MinusSquareOutlined;
|
|
84
|
+
exports.PlusSquareOutlined = PlusSquareOutlined;
|
|
85
|
+
|
|
86
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":[],"sources":["../../../../packages/utils/src/install.ts","../../../../packages/icons/src/components/holder-outlined.vue","../../../../packages/icons/src/components/holder-outlined.vue","../../../../packages/icons/src/components/minus-square-outlined.vue","../../../../packages/icons/src/components/minus-square-outlined.vue","../../../../packages/icons/src/components/plus-square-outlined.vue","../../../../packages/icons/src/components/plus-square-outlined.vue","../../../../packages/icons/src/components/index.ts"],"sourcesContent":["import type { App, Plugin } from 'vue'\r\n\r\nexport type SFCWithInstall<T> = T & Plugin\r\n\r\nexport const withInstall = <T extends { name?: string }>(component: T): SFCWithInstall<T> => {\r\n const installable = component as SFCWithInstall<T>\r\n\r\n installable.install = (app: App) => {\r\n if (!component.name) {\r\n return\r\n }\r\n\r\n app.component(component.name, component as unknown as object)\r\n }\r\n\r\n return installable\r\n}\r\n","<template>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M300 276.5a56 56 0 1 0 56-97 56 56 0 0 0-56 97zm0 284a56 56 0 1 0 56-97 56 56 0 0 0-56 97zM640 228a56 56 0 1 0 112 0 56 56 0 0 0-112 0zm0 284a56 56 0 1 0 112 0 56 56 0 0 0-112 0zM300 844.5a56 56 0 1 0 56-97 56 56 0 0 0-56 97zM640 796a56 56 0 1 0 112 0 56 56 0 0 0-112 0z\" />\r\n </svg>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\ndefineOptions({\r\n name: 'HolderOutlined'\r\n})\r\n</script>\r\n","<template>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M300 276.5a56 56 0 1 0 56-97 56 56 0 0 0-56 97zm0 284a56 56 0 1 0 56-97 56 56 0 0 0-56 97zM640 228a56 56 0 1 0 112 0 56 56 0 0 0-112 0zm0 284a56 56 0 1 0 112 0 56 56 0 0 0-112 0zM300 844.5a56 56 0 1 0 56-97 56 56 0 0 0-56 97zM640 796a56 56 0 1 0 112 0 56 56 0 0 0-112 0z\" />\r\n </svg>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\ndefineOptions({\r\n name: 'HolderOutlined'\r\n})\r\n</script>\r\n","<template>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\r\n <path\r\n fill=\"currentColor\"\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M192 192v640h640V192zm-32-64h704a32 32 0 0 1 32 32v704a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32\" />\r\n <path fill=\"currentColor\" d=\"M352 480h320a32 32 0 1 1 0 64H352a32 32 0 0 1 0-64\" />\r\n </svg>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\ndefineOptions({\r\n name: 'MinusSquareOutlined'\r\n})\r\n</script>\r\n","<template>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\r\n <path\r\n fill=\"currentColor\"\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M192 192v640h640V192zm-32-64h704a32 32 0 0 1 32 32v704a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32\" />\r\n <path fill=\"currentColor\" d=\"M352 480h320a32 32 0 1 1 0 64H352a32 32 0 0 1 0-64\" />\r\n </svg>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\ndefineOptions({\r\n name: 'MinusSquareOutlined'\r\n})\r\n</script>\r\n","<template>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\r\n <path\r\n fill=\"currentColor\"\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M192 192v640h640V192zm-32-64h704a32 32 0 0 1 32 32v704a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32\" />\r\n <path fill=\"currentColor\" d=\"M352 480h320a32 32 0 1 1 0 64H352a32 32 0 0 1 0-64\" />\r\n <path fill=\"currentColor\" d=\"M480 672V352a32 32 0 1 1 64 0v320a32 32 0 0 1-64 0\" />\r\n </svg>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\ndefineOptions({\r\n name: 'PlusSquareOutlined'\r\n})\r\n</script>\r\n","<template>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\r\n <path\r\n fill=\"currentColor\"\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M192 192v640h640V192zm-32-64h704a32 32 0 0 1 32 32v704a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32\" />\r\n <path fill=\"currentColor\" d=\"M352 480h320a32 32 0 1 1 0 64H352a32 32 0 0 1 0-64\" />\r\n <path fill=\"currentColor\" d=\"M480 672V352a32 32 0 1 1 64 0v320a32 32 0 0 1-64 0\" />\r\n </svg>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\ndefineOptions({\r\n name: 'PlusSquareOutlined'\r\n})\r\n</script>\r\n","import { withInstall } from '@falcon-ui/utils'\r\nimport HolderOutlinedComponent from './holder-outlined.vue'\r\nimport MinusSquareOutlinedComponent from './minus-square-outlined.vue'\r\nimport PlusSquareOutlinedComponent from './plus-square-outlined.vue'\r\n\r\nexport const PlusSquareOutlined = withInstall(PlusSquareOutlinedComponent)\r\nexport const MinusSquareOutlined = withInstall(MinusSquareOutlinedComponent)\r\nexport const HolderOutlined = withInstall(HolderOutlinedComponent)\r\n"],"mappings":";;AAIA,MAAa,eAA4C,cAAoC;CAC3F,MAAM,cAAc;AAEpB,aAAY,WAAW,QAAa;AAClC,MAAI,CAAC,UAAU,KACb;AAGF,MAAI,UAAU,UAAU,MAAM,UAA+B;;AAG/D,QAAO;;;;;;;;;;;4DCVD,OAJN,cAIM,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,EAAA,GAAA,IAAA,oBADmR,QAAA;IADrR,MAAK;IACL,GAAE;;;;;;;;;;;;;;;4DEIA,OAPN,cAOM,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,EAAA,GAAA,IAAA,oBAFyH,QAAA;IAH3H,MAAK;IACL,aAAU;IACV,aAAU;IACV,GAAE;6CAC+E,QAAA;IAA7E,MAAK;IAAe,GAAE;;;;;;;;;;;;;;;4DEExB,OARN,YAQM,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA;gCAHyH,QAAA;KAH3H,MAAK;KACL,aAAU;KACV,aAAU;KACV,GAAE;;gCAC+E,QAAA;KAA7E,MAAK;KAAe,GAAE;;gCACuD,QAAA;KAA7E,MAAK;KAAe,GAAE;;;;;;;AEHhC,MAAa,qBAAqB,YAAY,6BAA4B;AAC1E,MAAa,sBAAsB,YAAY,8BAA6B;AAC5E,MAAa,iBAAiB,YAAY,wBAAwB"}
|