@falcon-ui/falcon-ui 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/THIRD_PARTY_NOTICES.md +51 -0
- package/cjs/components/index.cjs +1131 -4
- package/cjs/components/index.cjs.map +1 -1
- package/cjs/components/loading/index.cjs +1186 -0
- package/cjs/components/loading/index.cjs.map +1 -0
- package/cjs/components/loading/src/loading.cjs +72 -0
- package/cjs/components/loading/src/loading.cjs.map +1 -0
- package/cjs/index.cjs +1132 -4
- package/cjs/index.cjs.map +1 -1
- package/esm/components/index.mjs +1130 -6
- package/esm/components/index.mjs.map +1 -1
- package/esm/components/loading/index.mjs +1179 -0
- package/esm/components/loading/index.mjs.map +1 -0
- package/esm/components/loading/src/loading.mjs +66 -0
- package/esm/components/loading/src/loading.mjs.map +1 -0
- package/esm/index.mjs +1131 -6
- package/esm/index.mjs.map +1 -1
- package/global.d.ts +2 -0
- package/package.json +7 -1
- package/theme/index.css +1 -1
- package/theme/index.scss +1 -0
- package/theme/src/loading.scss +52 -0
- package/types/components/barcode/index.d.ts +1 -1
- package/types/components/barcode/src/barcode.vue.d.ts +1 -1
- package/types/components/index.d.ts +2 -0
- package/types/components/input/index.d.ts +1 -1
- package/types/components/input/src/input.vue.d.ts +1 -1
- package/types/components/input-number/index.d.ts +3 -3
- package/types/components/input-number/src/input-number.vue.d.ts +1 -1
- package/types/components/loading/index.d.ts +183 -0
- package/types/components/loading/src/FlLoading.vue.d.ts +109 -0
- package/types/components/loading/src/animations/composing.d.ts +2 -0
- package/types/components/loading/src/animations/earth.d.ts +12 -0
- package/types/components/loading/src/animations/listening.d.ts +2 -0
- package/types/components/loading/src/animations/searching.d.ts +2 -0
- package/types/components/loading/src/animations/shaping.d.ts +2 -0
- package/types/components/loading/src/animations/solving.d.ts +2 -0
- package/types/components/loading/src/animations/working.d.ts +2 -0
- package/types/components/loading/src/earth-points.d.ts +22 -0
- package/types/components/loading/src/loading-frame.d.ts +4 -0
- package/types/components/loading/src/loading-geometry.d.ts +66 -0
- package/types/components/loading/src/loading-presets.d.ts +6 -0
- package/types/components/loading/src/loading-profiles.d.ts +7 -0
- package/types/components/loading/src/loading-renderer.d.ts +4 -0
- package/types/components/loading/src/loading.d.ts +65 -0
- package/types/components/loading/src/use-fl-loading.d.ts +15 -0
- package/types/components/loading/src/use-loading-animation.d.ts +13 -0
- package/types/components/loading/src/use-loading-color.d.ts +6 -0
- package/umd/falcon-ui.umd.js +1137 -7
- package/umd/falcon-ui.umd.js.map +1 -1
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
@use './mixins/bem.scss' as bem;
|
|
2
|
+
|
|
3
|
+
@include bem.b(loading) {
|
|
4
|
+
display: inline-flex;
|
|
5
|
+
align-items: center;
|
|
6
|
+
justify-content: center;
|
|
7
|
+
gap: 10px;
|
|
8
|
+
vertical-align: middle;
|
|
9
|
+
color: var(--el-text-color-regular, #606266);
|
|
10
|
+
font-size: 14px;
|
|
11
|
+
line-height: 1.5;
|
|
12
|
+
|
|
13
|
+
@include bem.m(vertical) {
|
|
14
|
+
flex-direction: column;
|
|
15
|
+
}
|
|
16
|
+
@include bem.when(inactive) {
|
|
17
|
+
visibility: hidden;
|
|
18
|
+
}
|
|
19
|
+
@include bem.e(visual) {
|
|
20
|
+
display: inline-flex;
|
|
21
|
+
width: var(--fl-loading-size, 64px);
|
|
22
|
+
height: var(--fl-loading-size, 64px);
|
|
23
|
+
flex: none;
|
|
24
|
+
align-items: center;
|
|
25
|
+
justify-content: center;
|
|
26
|
+
}
|
|
27
|
+
@include bem.e(canvas) {
|
|
28
|
+
display: block;
|
|
29
|
+
}
|
|
30
|
+
@include bem.e(fallback) {
|
|
31
|
+
font-size: calc(var(--fl-loading-size, 64px) * 0.4);
|
|
32
|
+
}
|
|
33
|
+
@include bem.e(text) {
|
|
34
|
+
overflow-wrap: anywhere;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Direct children make the adapter independent of Element Plus's configurable namespace.
|
|
39
|
+
@include bem.b(loading-adapter) {
|
|
40
|
+
> div {
|
|
41
|
+
top: 50%;
|
|
42
|
+
margin-top: 0 !important;
|
|
43
|
+
transform: translateY(-50%);
|
|
44
|
+
> svg {
|
|
45
|
+
display: none !important;
|
|
46
|
+
}
|
|
47
|
+
> p {
|
|
48
|
+
margin: 0;
|
|
49
|
+
padding: 0 12px;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -171,7 +171,7 @@ export declare const FlBarcode: import("@falcon-ui/falcon-ui/utils").SFCWithInst
|
|
|
171
171
|
readonly displayValue: boolean;
|
|
172
172
|
readonly fontOptions: string;
|
|
173
173
|
readonly fontSize: number;
|
|
174
|
-
readonly textAlign: "center" | "
|
|
174
|
+
readonly textAlign: "center" | "left" | "right";
|
|
175
175
|
readonly textPosition: "top" | "bottom";
|
|
176
176
|
readonly textMargin: number;
|
|
177
177
|
readonly marginTop: number;
|
|
@@ -172,7 +172,7 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
|
|
172
172
|
readonly displayValue: boolean;
|
|
173
173
|
readonly fontOptions: string;
|
|
174
174
|
readonly fontSize: number;
|
|
175
|
-
readonly textAlign: "center" | "
|
|
175
|
+
readonly textAlign: "center" | "left" | "right";
|
|
176
176
|
readonly textPosition: "top" | "bottom";
|
|
177
177
|
readonly textMargin: number;
|
|
178
178
|
readonly marginTop: number;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { FlButton } from './button';
|
|
2
|
+
export { FlLoading, useFlLoading } from './loading';
|
|
3
|
+
export type { FlLoadingProps, FlLoadingAnimation, FlLoadingSize, FlLoadingTheme, FlLoadingLayout, FlLoadingOptions, FlLoadingDirectiveOptions } from './loading';
|
|
2
4
|
export type { ButtonEmits, ButtonProps, FlButtonEmits, FlButtonProps } from './button';
|
|
3
5
|
export { FlDialog } from './dialog';
|
|
4
6
|
export type { DialogEmits, DialogProps, FlDialogEmits, FlDialogProps } from './dialog';
|
|
@@ -49,7 +49,7 @@ export declare const FlInput: import("@falcon-ui/falcon-ui/utils").SFCWithInstal
|
|
|
49
49
|
readonly autofocus?: boolean | undefined;
|
|
50
50
|
readonly rows?: number | undefined;
|
|
51
51
|
readonly ariaLabel?: string | undefined;
|
|
52
|
-
readonly inputmode?: "search" | "text" | "
|
|
52
|
+
readonly inputmode?: "search" | "text" | "none" | "email" | "tel" | "url" | "numeric" | "decimal" | undefined;
|
|
53
53
|
readonly name?: string | undefined;
|
|
54
54
|
readonly onBlur?: ((evt: FocusEvent) => any) | undefined | undefined;
|
|
55
55
|
readonly onChange?: ((value: string, evt?: Event | undefined) => any) | undefined | undefined;
|
|
@@ -49,7 +49,7 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
|
|
49
49
|
readonly autofocus?: boolean | undefined;
|
|
50
50
|
readonly rows?: number | undefined;
|
|
51
51
|
readonly ariaLabel?: string | undefined;
|
|
52
|
-
readonly inputmode?: "search" | "text" | "
|
|
52
|
+
readonly inputmode?: "search" | "text" | "none" | "email" | "tel" | "url" | "numeric" | "decimal" | undefined;
|
|
53
53
|
readonly name?: string | undefined;
|
|
54
54
|
readonly onBlur?: ((evt: FocusEvent) => any) | undefined | undefined;
|
|
55
55
|
readonly onChange?: ((value: string, evt?: Event | undefined) => any) | undefined | undefined;
|
|
@@ -68,7 +68,7 @@ export declare const FlInputNumber: import("@falcon-ui/falcon-ui/utils").SFCWith
|
|
|
68
68
|
readonly autofocus?: boolean | undefined;
|
|
69
69
|
readonly rows?: number | undefined;
|
|
70
70
|
readonly ariaLabel?: string | undefined;
|
|
71
|
-
readonly inputmode?: "search" | "text" | "
|
|
71
|
+
readonly inputmode?: "search" | "text" | "none" | "email" | "tel" | "url" | "numeric" | "decimal" | undefined;
|
|
72
72
|
readonly name?: string | undefined;
|
|
73
73
|
readonly onBlur?: ((evt: FocusEvent) => any) | undefined | undefined;
|
|
74
74
|
readonly onChange?: ((value: string, evt?: Event | undefined) => any) | undefined | undefined;
|
|
@@ -308,7 +308,7 @@ export declare const FlInputNumber: import("@falcon-ui/falcon-ui/utils").SFCWith
|
|
|
308
308
|
readonly autofocus?: boolean | undefined;
|
|
309
309
|
readonly rows?: number | undefined;
|
|
310
310
|
readonly ariaLabel?: string | undefined;
|
|
311
|
-
readonly inputmode?: "search" | "text" | "
|
|
311
|
+
readonly inputmode?: "search" | "text" | "none" | "email" | "tel" | "url" | "numeric" | "decimal" | undefined;
|
|
312
312
|
readonly name?: string | undefined;
|
|
313
313
|
readonly onBlur?: ((evt: FocusEvent) => any) | undefined | undefined;
|
|
314
314
|
readonly onChange?: ((value: string, evt?: Event | undefined) => any) | undefined | undefined;
|
|
@@ -540,7 +540,7 @@ export declare const FlInputNumber: import("@falcon-ui/falcon-ui/utils").SFCWith
|
|
|
540
540
|
readonly autofocus?: boolean | undefined;
|
|
541
541
|
readonly rows?: number | undefined;
|
|
542
542
|
readonly ariaLabel?: string | undefined;
|
|
543
|
-
readonly inputmode?: "search" | "text" | "
|
|
543
|
+
readonly inputmode?: "search" | "text" | "none" | "email" | "tel" | "url" | "numeric" | "decimal" | undefined;
|
|
544
544
|
readonly name?: string | undefined;
|
|
545
545
|
readonly onBlur?: ((evt: FocusEvent) => any) | undefined | undefined;
|
|
546
546
|
readonly onChange?: ((value: string, evt?: Event | undefined) => any) | undefined | undefined;
|
|
@@ -67,7 +67,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
67
67
|
readonly autofocus?: boolean | undefined;
|
|
68
68
|
readonly rows?: number | undefined;
|
|
69
69
|
readonly ariaLabel?: string | undefined;
|
|
70
|
-
readonly inputmode?: "search" | "text" | "
|
|
70
|
+
readonly inputmode?: "search" | "text" | "none" | "email" | "tel" | "url" | "numeric" | "decimal" | undefined;
|
|
71
71
|
readonly name?: string | undefined;
|
|
72
72
|
readonly onBlur?: ((evt: FocusEvent) => any) | undefined | undefined;
|
|
73
73
|
readonly onChange?: ((value: string, evt?: Event | undefined) => any) | undefined | undefined;
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
export declare const FlLoading: import("@falcon-ui/falcon-ui/utils").SFCWithInstall<{
|
|
2
|
+
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<Readonly<import("vue").ExtractPropTypes<{
|
|
3
|
+
readonly active: {
|
|
4
|
+
readonly type: BooleanConstructor;
|
|
5
|
+
readonly default: true;
|
|
6
|
+
};
|
|
7
|
+
readonly animation: {
|
|
8
|
+
readonly type: import("vue").PropType<import("@falcon-ui/falcon-ui").FlLoadingAnimation>;
|
|
9
|
+
readonly default: "searching";
|
|
10
|
+
readonly validator: (v: import("@falcon-ui/falcon-ui").FlLoadingAnimation) => boolean;
|
|
11
|
+
};
|
|
12
|
+
readonly size: {
|
|
13
|
+
readonly type: import("vue").PropType<import("@falcon-ui/falcon-ui").FlLoadingSize>;
|
|
14
|
+
readonly default: 64;
|
|
15
|
+
readonly validator: (v: import("@falcon-ui/falcon-ui").FlLoadingSize) => boolean;
|
|
16
|
+
};
|
|
17
|
+
readonly color: {
|
|
18
|
+
readonly type: StringConstructor;
|
|
19
|
+
readonly default: "";
|
|
20
|
+
};
|
|
21
|
+
readonly theme: {
|
|
22
|
+
readonly type: import("vue").PropType<import("@falcon-ui/falcon-ui").FlLoadingTheme>;
|
|
23
|
+
readonly default: "auto";
|
|
24
|
+
};
|
|
25
|
+
readonly speed: {
|
|
26
|
+
readonly type: NumberConstructor;
|
|
27
|
+
readonly default: 1;
|
|
28
|
+
};
|
|
29
|
+
readonly paused: {
|
|
30
|
+
readonly type: BooleanConstructor;
|
|
31
|
+
readonly default: false;
|
|
32
|
+
};
|
|
33
|
+
readonly text: {
|
|
34
|
+
readonly type: StringConstructor;
|
|
35
|
+
readonly default: "";
|
|
36
|
+
};
|
|
37
|
+
readonly layout: {
|
|
38
|
+
readonly type: import("vue").PropType<import("@falcon-ui/falcon-ui").FlLoadingLayout>;
|
|
39
|
+
readonly default: "inline";
|
|
40
|
+
};
|
|
41
|
+
readonly ariaLabel: {
|
|
42
|
+
readonly type: StringConstructor;
|
|
43
|
+
readonly default: "加载中";
|
|
44
|
+
};
|
|
45
|
+
}>> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, import("vue").PublicProps, {
|
|
46
|
+
readonly size: 20 | 32 | 48 | 64 | 96;
|
|
47
|
+
readonly color: string;
|
|
48
|
+
readonly text: string;
|
|
49
|
+
readonly active: boolean;
|
|
50
|
+
readonly animation: "working" | "searching" | "solving" | "listening" | "composing" | "shaping" | "earth";
|
|
51
|
+
readonly theme: import("@falcon-ui/falcon-ui").FlLoadingTheme;
|
|
52
|
+
readonly speed: number;
|
|
53
|
+
readonly paused: boolean;
|
|
54
|
+
readonly layout: import("@falcon-ui/falcon-ui").FlLoadingLayout;
|
|
55
|
+
readonly ariaLabel: string;
|
|
56
|
+
}, true, {}, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
|
|
57
|
+
P: {};
|
|
58
|
+
B: {};
|
|
59
|
+
D: {};
|
|
60
|
+
C: {};
|
|
61
|
+
M: {};
|
|
62
|
+
Defaults: {};
|
|
63
|
+
}, Readonly<import("vue").ExtractPropTypes<{
|
|
64
|
+
readonly active: {
|
|
65
|
+
readonly type: BooleanConstructor;
|
|
66
|
+
readonly default: true;
|
|
67
|
+
};
|
|
68
|
+
readonly animation: {
|
|
69
|
+
readonly type: import("vue").PropType<import("@falcon-ui/falcon-ui").FlLoadingAnimation>;
|
|
70
|
+
readonly default: "searching";
|
|
71
|
+
readonly validator: (v: import("@falcon-ui/falcon-ui").FlLoadingAnimation) => boolean;
|
|
72
|
+
};
|
|
73
|
+
readonly size: {
|
|
74
|
+
readonly type: import("vue").PropType<import("@falcon-ui/falcon-ui").FlLoadingSize>;
|
|
75
|
+
readonly default: 64;
|
|
76
|
+
readonly validator: (v: import("@falcon-ui/falcon-ui").FlLoadingSize) => boolean;
|
|
77
|
+
};
|
|
78
|
+
readonly color: {
|
|
79
|
+
readonly type: StringConstructor;
|
|
80
|
+
readonly default: "";
|
|
81
|
+
};
|
|
82
|
+
readonly theme: {
|
|
83
|
+
readonly type: import("vue").PropType<import("@falcon-ui/falcon-ui").FlLoadingTheme>;
|
|
84
|
+
readonly default: "auto";
|
|
85
|
+
};
|
|
86
|
+
readonly speed: {
|
|
87
|
+
readonly type: NumberConstructor;
|
|
88
|
+
readonly default: 1;
|
|
89
|
+
};
|
|
90
|
+
readonly paused: {
|
|
91
|
+
readonly type: BooleanConstructor;
|
|
92
|
+
readonly default: false;
|
|
93
|
+
};
|
|
94
|
+
readonly text: {
|
|
95
|
+
readonly type: StringConstructor;
|
|
96
|
+
readonly default: "";
|
|
97
|
+
};
|
|
98
|
+
readonly layout: {
|
|
99
|
+
readonly type: import("vue").PropType<import("@falcon-ui/falcon-ui").FlLoadingLayout>;
|
|
100
|
+
readonly default: "inline";
|
|
101
|
+
};
|
|
102
|
+
readonly ariaLabel: {
|
|
103
|
+
readonly type: StringConstructor;
|
|
104
|
+
readonly default: "加载中";
|
|
105
|
+
};
|
|
106
|
+
}>> & Readonly<{}>, {}, {}, {}, {}, {
|
|
107
|
+
readonly size: 20 | 32 | 48 | 64 | 96;
|
|
108
|
+
readonly color: string;
|
|
109
|
+
readonly text: string;
|
|
110
|
+
readonly active: boolean;
|
|
111
|
+
readonly animation: "working" | "searching" | "solving" | "listening" | "composing" | "shaping" | "earth";
|
|
112
|
+
readonly theme: import("@falcon-ui/falcon-ui").FlLoadingTheme;
|
|
113
|
+
readonly speed: number;
|
|
114
|
+
readonly paused: boolean;
|
|
115
|
+
readonly layout: import("@falcon-ui/falcon-ui").FlLoadingLayout;
|
|
116
|
+
readonly ariaLabel: string;
|
|
117
|
+
}>;
|
|
118
|
+
__isFragment?: never;
|
|
119
|
+
__isTeleport?: never;
|
|
120
|
+
__isSuspense?: never;
|
|
121
|
+
} & import("vue").ComponentOptionsBase<Readonly<import("vue").ExtractPropTypes<{
|
|
122
|
+
readonly active: {
|
|
123
|
+
readonly type: BooleanConstructor;
|
|
124
|
+
readonly default: true;
|
|
125
|
+
};
|
|
126
|
+
readonly animation: {
|
|
127
|
+
readonly type: import("vue").PropType<import("@falcon-ui/falcon-ui").FlLoadingAnimation>;
|
|
128
|
+
readonly default: "searching";
|
|
129
|
+
readonly validator: (v: import("@falcon-ui/falcon-ui").FlLoadingAnimation) => boolean;
|
|
130
|
+
};
|
|
131
|
+
readonly size: {
|
|
132
|
+
readonly type: import("vue").PropType<import("@falcon-ui/falcon-ui").FlLoadingSize>;
|
|
133
|
+
readonly default: 64;
|
|
134
|
+
readonly validator: (v: import("@falcon-ui/falcon-ui").FlLoadingSize) => boolean;
|
|
135
|
+
};
|
|
136
|
+
readonly color: {
|
|
137
|
+
readonly type: StringConstructor;
|
|
138
|
+
readonly default: "";
|
|
139
|
+
};
|
|
140
|
+
readonly theme: {
|
|
141
|
+
readonly type: import("vue").PropType<import("@falcon-ui/falcon-ui").FlLoadingTheme>;
|
|
142
|
+
readonly default: "auto";
|
|
143
|
+
};
|
|
144
|
+
readonly speed: {
|
|
145
|
+
readonly type: NumberConstructor;
|
|
146
|
+
readonly default: 1;
|
|
147
|
+
};
|
|
148
|
+
readonly paused: {
|
|
149
|
+
readonly type: BooleanConstructor;
|
|
150
|
+
readonly default: false;
|
|
151
|
+
};
|
|
152
|
+
readonly text: {
|
|
153
|
+
readonly type: StringConstructor;
|
|
154
|
+
readonly default: "";
|
|
155
|
+
};
|
|
156
|
+
readonly layout: {
|
|
157
|
+
readonly type: import("vue").PropType<import("@falcon-ui/falcon-ui").FlLoadingLayout>;
|
|
158
|
+
readonly default: "inline";
|
|
159
|
+
};
|
|
160
|
+
readonly ariaLabel: {
|
|
161
|
+
readonly type: StringConstructor;
|
|
162
|
+
readonly default: "加载中";
|
|
163
|
+
};
|
|
164
|
+
}>> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
|
|
165
|
+
readonly size: 20 | 32 | 48 | 64 | 96;
|
|
166
|
+
readonly color: string;
|
|
167
|
+
readonly text: string;
|
|
168
|
+
readonly active: boolean;
|
|
169
|
+
readonly animation: "working" | "searching" | "solving" | "listening" | "composing" | "shaping" | "earth";
|
|
170
|
+
readonly theme: import("@falcon-ui/falcon-ui").FlLoadingTheme;
|
|
171
|
+
readonly speed: number;
|
|
172
|
+
readonly paused: boolean;
|
|
173
|
+
readonly layout: import("@falcon-ui/falcon-ui").FlLoadingLayout;
|
|
174
|
+
readonly ariaLabel: string;
|
|
175
|
+
}, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new () => {
|
|
176
|
+
$slots: {
|
|
177
|
+
text?: () => unknown;
|
|
178
|
+
};
|
|
179
|
+
})>;
|
|
180
|
+
export default FlLoading;
|
|
181
|
+
export { useFlLoading } from './src/use-fl-loading';
|
|
182
|
+
export type { FlLoadingOptions, FlLoadingDirectiveOptions } from './src/use-fl-loading';
|
|
183
|
+
export type { FlLoadingProps, FlLoadingAnimation, FlLoadingSize, FlLoadingTheme, FlLoadingLayout } from './src/loading';
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
type __VLS_Slots = {
|
|
2
|
+
text?: () => unknown;
|
|
3
|
+
};
|
|
4
|
+
declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
5
|
+
readonly active: {
|
|
6
|
+
readonly type: BooleanConstructor;
|
|
7
|
+
readonly default: true;
|
|
8
|
+
};
|
|
9
|
+
readonly animation: {
|
|
10
|
+
readonly type: import("vue").PropType<import("@falcon-ui/falcon-ui").FlLoadingAnimation>;
|
|
11
|
+
readonly default: "searching";
|
|
12
|
+
readonly validator: (v: import("@falcon-ui/falcon-ui").FlLoadingAnimation) => boolean;
|
|
13
|
+
};
|
|
14
|
+
readonly size: {
|
|
15
|
+
readonly type: import("vue").PropType<import("@falcon-ui/falcon-ui").FlLoadingSize>;
|
|
16
|
+
readonly default: 64;
|
|
17
|
+
readonly validator: (v: import("@falcon-ui/falcon-ui").FlLoadingSize) => boolean;
|
|
18
|
+
};
|
|
19
|
+
readonly color: {
|
|
20
|
+
readonly type: StringConstructor;
|
|
21
|
+
readonly default: "";
|
|
22
|
+
};
|
|
23
|
+
readonly theme: {
|
|
24
|
+
readonly type: import("vue").PropType<import("@falcon-ui/falcon-ui").FlLoadingTheme>;
|
|
25
|
+
readonly default: "auto";
|
|
26
|
+
};
|
|
27
|
+
readonly speed: {
|
|
28
|
+
readonly type: NumberConstructor;
|
|
29
|
+
readonly default: 1;
|
|
30
|
+
};
|
|
31
|
+
readonly paused: {
|
|
32
|
+
readonly type: BooleanConstructor;
|
|
33
|
+
readonly default: false;
|
|
34
|
+
};
|
|
35
|
+
readonly text: {
|
|
36
|
+
readonly type: StringConstructor;
|
|
37
|
+
readonly default: "";
|
|
38
|
+
};
|
|
39
|
+
readonly layout: {
|
|
40
|
+
readonly type: import("vue").PropType<import("@falcon-ui/falcon-ui").FlLoadingLayout>;
|
|
41
|
+
readonly default: "inline";
|
|
42
|
+
};
|
|
43
|
+
readonly ariaLabel: {
|
|
44
|
+
readonly type: StringConstructor;
|
|
45
|
+
readonly default: "加载中";
|
|
46
|
+
};
|
|
47
|
+
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
48
|
+
readonly active: {
|
|
49
|
+
readonly type: BooleanConstructor;
|
|
50
|
+
readonly default: true;
|
|
51
|
+
};
|
|
52
|
+
readonly animation: {
|
|
53
|
+
readonly type: import("vue").PropType<import("@falcon-ui/falcon-ui").FlLoadingAnimation>;
|
|
54
|
+
readonly default: "searching";
|
|
55
|
+
readonly validator: (v: import("@falcon-ui/falcon-ui").FlLoadingAnimation) => boolean;
|
|
56
|
+
};
|
|
57
|
+
readonly size: {
|
|
58
|
+
readonly type: import("vue").PropType<import("@falcon-ui/falcon-ui").FlLoadingSize>;
|
|
59
|
+
readonly default: 64;
|
|
60
|
+
readonly validator: (v: import("@falcon-ui/falcon-ui").FlLoadingSize) => boolean;
|
|
61
|
+
};
|
|
62
|
+
readonly color: {
|
|
63
|
+
readonly type: StringConstructor;
|
|
64
|
+
readonly default: "";
|
|
65
|
+
};
|
|
66
|
+
readonly theme: {
|
|
67
|
+
readonly type: import("vue").PropType<import("@falcon-ui/falcon-ui").FlLoadingTheme>;
|
|
68
|
+
readonly default: "auto";
|
|
69
|
+
};
|
|
70
|
+
readonly speed: {
|
|
71
|
+
readonly type: NumberConstructor;
|
|
72
|
+
readonly default: 1;
|
|
73
|
+
};
|
|
74
|
+
readonly paused: {
|
|
75
|
+
readonly type: BooleanConstructor;
|
|
76
|
+
readonly default: false;
|
|
77
|
+
};
|
|
78
|
+
readonly text: {
|
|
79
|
+
readonly type: StringConstructor;
|
|
80
|
+
readonly default: "";
|
|
81
|
+
};
|
|
82
|
+
readonly layout: {
|
|
83
|
+
readonly type: import("vue").PropType<import("@falcon-ui/falcon-ui").FlLoadingLayout>;
|
|
84
|
+
readonly default: "inline";
|
|
85
|
+
};
|
|
86
|
+
readonly ariaLabel: {
|
|
87
|
+
readonly type: StringConstructor;
|
|
88
|
+
readonly default: "加载中";
|
|
89
|
+
};
|
|
90
|
+
}>> & Readonly<{}>, {
|
|
91
|
+
readonly size: 20 | 32 | 48 | 64 | 96;
|
|
92
|
+
readonly color: string;
|
|
93
|
+
readonly text: string;
|
|
94
|
+
readonly active: boolean;
|
|
95
|
+
readonly animation: "working" | "searching" | "solving" | "listening" | "composing" | "shaping" | "earth";
|
|
96
|
+
readonly theme: import("@falcon-ui/falcon-ui").FlLoadingTheme;
|
|
97
|
+
readonly speed: number;
|
|
98
|
+
readonly paused: boolean;
|
|
99
|
+
readonly layout: import("@falcon-ui/falcon-ui").FlLoadingLayout;
|
|
100
|
+
readonly ariaLabel: string;
|
|
101
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
102
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
103
|
+
declare const _default: typeof __VLS_export;
|
|
104
|
+
export default _default;
|
|
105
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
106
|
+
new (): {
|
|
107
|
+
$slots: S;
|
|
108
|
+
};
|
|
109
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { OrbFrame } from '../loading-frame';
|
|
2
|
+
import type { FlLoadingSize } from '../loading';
|
|
3
|
+
export interface EarthPoint {
|
|
4
|
+
x: number;
|
|
5
|
+
y: number;
|
|
6
|
+
z: number;
|
|
7
|
+
lon: number;
|
|
8
|
+
land: boolean;
|
|
9
|
+
}
|
|
10
|
+
/** Reconstruct stable geographic positions once, not on every animation frame. */
|
|
11
|
+
export declare function getEarthPoints(size: FlLoadingSize): EarthPoint[];
|
|
12
|
+
export declare function frameEarth(size: FlLoadingSize, time: number): OrbFrame;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare const earthPointData: {
|
|
2
|
+
readonly '20': {
|
|
3
|
+
readonly rings: 9;
|
|
4
|
+
readonly flags: "01100000000000000000000000000000100010000100000011000110011000000000011111100000011001001100011000111010";
|
|
5
|
+
};
|
|
6
|
+
readonly '32': {
|
|
7
|
+
readonly rings: 17;
|
|
8
|
+
readonly flags: "011001001111000000000000000000000100000000000000000000010000000000000000000000000110000010000000101000000000000111000001110000001110000000000001111000011100000000000000000000001110000011110000001000000000000000100000111111000000000000000000100000001111111010100000000000011000000110011111111000000011110000101001111100000011110001111111100011100001111111000000010000";
|
|
9
|
+
};
|
|
10
|
+
readonly '48': {
|
|
11
|
+
readonly rings: 29;
|
|
12
|
+
readonly flags: "111011111111001011001111111100000000000000101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000001000000000000001100000000000000000000000001100000000000000000001100000000001100000000000011111000000000000000000001110000000001110100000000001111100000000000000000000011111000000001111010000000000011100000000000000000000001111110000000011110000000000000001100000000000000000000011111111000000011111000000000000000010100000000000000000000111100000000001111100000000000100000000000000000000000000011100000000111111111000001000000000000000000000000000000100000000001111111111000001000100000000000000000000000101001000000001111111111100110110000000000000000000001110010000000001111111111001111111100000000000000000111110000000000111110111111111111000000000000000011111100000000100001111111111110010000000000011111100000000101101111111111100000000000111111010000011111111111111100000000011110100000100111111111110100011111010100010111111111111111010010001011111110001001100001000000110000000";
|
|
13
|
+
};
|
|
14
|
+
readonly '64': {
|
|
15
|
+
readonly rings: 37;
|
|
16
|
+
readonly flags: "111011111111011110011111111100000001000111111111110000000000000000001101111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000011100000000000010000000000000001000111000000000000000000000000111100000000000011100000000000000011111110000000000000000000000000111100000000000011110100000000000011111110000000000000000000000000001111110000000000111100100000000000000111110000000000000000000000000001111111100000000001111110100000000000000011000000000000000000000000000001111111110000000000111110000000000000000000000001000000000000000000000000111111111000000000011111100000000000000000000100000000000000000000000000001111110000000000001111111000000000000101100000000000000000000000000000000001111100000000000011111111000000000011001000000000000000000000000000000000001100000000011111111111110000010000010000000000000000000000000000000011000000000000011111111111110000011000110000000000000000000000000000011000010000000000111111111111111000110011000000000000000000000000000011000100000000000111111111111110011111111110000000000000000000000011100000000000000011111111111111111111111100000000000000000000011111110000000000001110000111111111111110000000000000000000011111110000000000010000011101111111111000000000000000000011111111000000000010110010111111111111000000000000001111111101000000111111111111111111110000000000001111101110000011111111111111111110000000001111100100000010101111111111110010011111111010100000111111111111111101111010011000011111111111100001110110000001110000001011101000000000000000000";
|
|
17
|
+
};
|
|
18
|
+
readonly '96': {
|
|
19
|
+
readonly rings: 53;
|
|
20
|
+
readonly flags: "111111111111001111011111111100111110011111111111110000110111000111111111111110000000000001000000111111111111111100000000000000000000000000110111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000000000000000000000000000000001000000000000000000000000011100000000000000000000000000000000000000000000000000001000000000000000000000000011110000000000000000000000000000000000000000000000110000001000000000000000000000000000111100000000000000000011000000000000000000000010000111000000000000000000000000000000000001111100000000000000000111100000000000000000000011111111110000000000000000000000000000000000011111100000000000000001111100000000000000000000011111111110000000000000000000000000000000000000111111100000000000000001111110010000000000000000001111111111000000000000000000000000000000000000001111111100000000000000011111100100000000000000000000111111110000000000000000000000000000000000000001111111110000000000000011111111011000000000000000000001111101000000000000000000000000000000000000000111111111110000000000000001111111100000000000000000000000001101000000000000000000000000000000000000000011111111111100000000000000111111110000000000000000000000000000000100000000000000000000000000000000000000111111111111100000000000000111111100000000000000000000110000000111000000000000000000000000000000000000000111111111111000000000000000111111110000000000000000000101101000111000000000000000000000000000000000000000011111111100000000000000000111111111100000000000000000100110000000000000000000000000000000000000000000000000111111100000000000000000011111111111000000000000000110001000000000000000000000000000000000000000000000000111111000000000000001111111111111111100000000010000010000001000000000000000000000000000000000000000000000011100000000000000111111111111111111100000000000000000000000000000000000000000000000000000000000000011000000000000000000011111111111111111110000000110000011100000000000000000000000000000000000000000001110000000000000000000011111111111111110111000000110001111000000000000000000000000000000000000000001100100010000000000000001111111111111110111110000111101111000000000000000000000000000000000000000011100000000000000000000001111111111111111111100111111111111111000000000000000000000000000000000011100001000000000000000001111111111110111011111111111111111100000000000000000000000000000000111111110000000000000000000111111111111111111111111111111111000000000000000000000000000000111111111000000000000000000111100000011111111111111111111100100000000000000000000000001111111111100000000000000011000000011111011111111111111100100000000000000000000000011111111111000000000000000110100111111001111111111111101000000000000000000000001111111111110000000000000011101110010111111111111111111010000000000000000000111111111101010000000000111111111111111111111111111100000000000000000011111111111111000000000111111111111111111111111111100000000000000011111111011110000000000001111111111111111111110001000000000001111110001100000000000010111111111111111111000100000111111111100100010000000101111111111111111111010001111111111111001000100010111111111111111111110111111001010011000001111111111111111111000001111101110000000101111111100000000010011100000000110000000000011110010000000000000101100000000000000000000";
|
|
21
|
+
};
|
|
22
|
+
};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
export interface Dot {
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
z: number;
|
|
5
|
+
r: number;
|
|
6
|
+
/** Ink value: 0 = darkest ink on paper. Mirrored on dark themes. */
|
|
7
|
+
white: number;
|
|
8
|
+
a?: number;
|
|
9
|
+
}
|
|
10
|
+
/** A stroked edge between two projected points (the `connecting` web). */
|
|
11
|
+
export interface Line {
|
|
12
|
+
x1: number;
|
|
13
|
+
y1: number;
|
|
14
|
+
x2: number;
|
|
15
|
+
y2: number;
|
|
16
|
+
/** Ink value, same convention as `Dot.white`. */
|
|
17
|
+
white: number;
|
|
18
|
+
a?: number;
|
|
19
|
+
w: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* One rendered instant: a complete, final set of draw instructions.
|
|
23
|
+
* `dots` is already z-sorted into draw order and radius-clamped; `lines`
|
|
24
|
+
* are drawn first. Nothing here needs further interpretation, which is what
|
|
25
|
+
* makes a frame portable to any 2D renderer.
|
|
26
|
+
*/
|
|
27
|
+
export interface OrbFrame {
|
|
28
|
+
dots: Dot[];
|
|
29
|
+
lines: Line[];
|
|
30
|
+
}
|
|
31
|
+
export type Projector = (x: number, y: number, z: number) => [number, number, number];
|
|
32
|
+
export declare function lerp(a: number, b: number, f: number): number;
|
|
33
|
+
export declare function frac(x: number): number;
|
|
34
|
+
/** Value noise on a 2D lattice — smooth, deterministic, cheap. */
|
|
35
|
+
export declare function vnoise(x: number, y: number): number;
|
|
36
|
+
/** Deterministic hash in [0, 1). */
|
|
37
|
+
export declare function hashD(a: number, b: number): number;
|
|
38
|
+
/** Stable directions on a unit sphere (Fibonacci lattice). */
|
|
39
|
+
export declare function fibDir(i: number, n: number): [number, number, number];
|
|
40
|
+
/** Shortest signed angular distance, wrapped to (-π, π]. */
|
|
41
|
+
export declare function angleDelta(a: number, b: number): number;
|
|
42
|
+
/** Shared spin + tilt + orthographic projection. */
|
|
43
|
+
export declare function makeProj(yaw: number, tilt: number, cx: number, cy: number, scale: number): Projector;
|
|
44
|
+
/**
|
|
45
|
+
* Painter: z-sort far→near, matte grayscale dots. On dark substrates the
|
|
46
|
+
* ink value is mirrored (1 - white) so near dots read bright — the same
|
|
47
|
+
* depth language on an inverted substrate.
|
|
48
|
+
*/
|
|
49
|
+
/** Stroke pass for edge-based modes. Runs before `paint` so nodes sit on top. */
|
|
50
|
+
/**
|
|
51
|
+
* Turn raw mode output into a finished frame: drop invisible marks, clamp
|
|
52
|
+
* radii to the mode's floor, and z-sort far→near into draw order.
|
|
53
|
+
*
|
|
54
|
+
* This runs in the GEOMETRY step, not the painter, so a frame is a complete
|
|
55
|
+
* set of draw instructions: every value is final and the array order is the
|
|
56
|
+
* order to draw in. That is what lets the RN and SwiftUI ports share this
|
|
57
|
+
* output verbatim — a port draws the list, it never re-derives anything —
|
|
58
|
+
* and what lets the golden-vector tests compare numbers instead of pixels.
|
|
59
|
+
*/
|
|
60
|
+
export declare function finalizeFrame(dots: Dot[], lines: Line[], rMin?: number): OrbFrame;
|
|
61
|
+
/** Paint a finished frame. Lines first, so nodes sit on top of their edges. */
|
|
62
|
+
/**
|
|
63
|
+
* Dot radii were tuned for a 300pt frame; sub-linear scaling keeps small
|
|
64
|
+
* spinners legible. Lower pow = radii shrink less with size.
|
|
65
|
+
*/
|
|
66
|
+
export declare function radiusScale(size: number, pow: number): number;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface ModeOpts {
|
|
2
|
+
[key: string]: number | undefined;
|
|
3
|
+
}
|
|
4
|
+
export declare function scaleCounts(opts: ModeOpts, scale: number): ModeOpts;
|
|
5
|
+
export declare function scaleRadii(opts: ModeOpts, scale: number): ModeOpts;
|
|
6
|
+
/** Base (fine) profiles per mode, before preset multipliers. */
|
|
7
|
+
export declare const BASE_PROFILES: Record<string, ModeOpts>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { FlLoadingAnimation, FlLoadingSize } from './loading';
|
|
2
|
+
import type { OrbFrame } from './loading-frame';
|
|
3
|
+
export declare function createLoadingFrame(animation: FlLoadingAnimation, size: FlLoadingSize, time: number): OrbFrame;
|
|
4
|
+
export declare function paintLoadingFrame(ctx: CanvasRenderingContext2D, frame: OrbFrame, color: string): void;
|