@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.
Files changed (51) hide show
  1. package/README.md +1 -0
  2. package/THIRD_PARTY_NOTICES.md +51 -0
  3. package/cjs/components/index.cjs +1131 -4
  4. package/cjs/components/index.cjs.map +1 -1
  5. package/cjs/components/loading/index.cjs +1186 -0
  6. package/cjs/components/loading/index.cjs.map +1 -0
  7. package/cjs/components/loading/src/loading.cjs +72 -0
  8. package/cjs/components/loading/src/loading.cjs.map +1 -0
  9. package/cjs/index.cjs +1132 -4
  10. package/cjs/index.cjs.map +1 -1
  11. package/esm/components/index.mjs +1130 -6
  12. package/esm/components/index.mjs.map +1 -1
  13. package/esm/components/loading/index.mjs +1179 -0
  14. package/esm/components/loading/index.mjs.map +1 -0
  15. package/esm/components/loading/src/loading.mjs +66 -0
  16. package/esm/components/loading/src/loading.mjs.map +1 -0
  17. package/esm/index.mjs +1131 -6
  18. package/esm/index.mjs.map +1 -1
  19. package/global.d.ts +2 -0
  20. package/package.json +7 -1
  21. package/theme/index.css +1 -1
  22. package/theme/index.scss +1 -0
  23. package/theme/src/loading.scss +52 -0
  24. package/types/components/barcode/index.d.ts +1 -1
  25. package/types/components/barcode/src/barcode.vue.d.ts +1 -1
  26. package/types/components/index.d.ts +2 -0
  27. package/types/components/input/index.d.ts +1 -1
  28. package/types/components/input/src/input.vue.d.ts +1 -1
  29. package/types/components/input-number/index.d.ts +3 -3
  30. package/types/components/input-number/src/input-number.vue.d.ts +1 -1
  31. package/types/components/loading/index.d.ts +183 -0
  32. package/types/components/loading/src/FlLoading.vue.d.ts +109 -0
  33. package/types/components/loading/src/animations/composing.d.ts +2 -0
  34. package/types/components/loading/src/animations/earth.d.ts +12 -0
  35. package/types/components/loading/src/animations/listening.d.ts +2 -0
  36. package/types/components/loading/src/animations/searching.d.ts +2 -0
  37. package/types/components/loading/src/animations/shaping.d.ts +2 -0
  38. package/types/components/loading/src/animations/solving.d.ts +2 -0
  39. package/types/components/loading/src/animations/working.d.ts +2 -0
  40. package/types/components/loading/src/earth-points.d.ts +22 -0
  41. package/types/components/loading/src/loading-frame.d.ts +4 -0
  42. package/types/components/loading/src/loading-geometry.d.ts +66 -0
  43. package/types/components/loading/src/loading-presets.d.ts +6 -0
  44. package/types/components/loading/src/loading-profiles.d.ts +7 -0
  45. package/types/components/loading/src/loading-renderer.d.ts +4 -0
  46. package/types/components/loading/src/loading.d.ts +65 -0
  47. package/types/components/loading/src/use-fl-loading.d.ts +15 -0
  48. package/types/components/loading/src/use-loading-animation.d.ts +13 -0
  49. package/types/components/loading/src/use-loading-color.d.ts +6 -0
  50. package/umd/falcon-ui.umd.js +1137 -7
  51. 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" | "right" | "left";
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" | "right" | "left";
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" | "email" | "tel" | "url" | "none" | "numeric" | "decimal" | undefined;
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" | "email" | "tel" | "url" | "none" | "numeric" | "decimal" | undefined;
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" | "email" | "tel" | "url" | "none" | "numeric" | "decimal" | undefined;
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" | "email" | "tel" | "url" | "none" | "numeric" | "decimal" | undefined;
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" | "email" | "tel" | "url" | "none" | "numeric" | "decimal" | undefined;
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" | "email" | "tel" | "url" | "none" | "numeric" | "decimal" | undefined;
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,2 @@
1
+ import type { ModeFrame } from '../loading-frame';
2
+ export declare const frameRibbon: ModeFrame;
@@ -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,2 @@
1
+ import type { ModeFrame } from '../loading-frame';
2
+ export declare const frameWave: ModeFrame;
@@ -0,0 +1,2 @@
1
+ import type { ModeFrame } from '../loading-frame';
2
+ export declare const frameGlobe: ModeFrame;
@@ -0,0 +1,2 @@
1
+ import type { ModeFrame } from '../loading-frame';
2
+ export declare const frameMorph: ModeFrame;
@@ -0,0 +1,2 @@
1
+ import type { ModeFrame } from '../loading-frame';
2
+ export declare const frameRubik: ModeFrame;
@@ -0,0 +1,2 @@
1
+ import type { ModeFrame } from '../loading-frame';
2
+ export declare const frameOrbits: ModeFrame;
@@ -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,4 @@
1
+ import type { ModeOpts } from './loading-profiles';
2
+ import type { OrbFrame } from './loading-geometry';
3
+ export type { Dot, OrbFrame } from './loading-geometry';
4
+ export type ModeFrame = (size: number, time: number, options: ModeOpts) => OrbFrame;
@@ -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,6 @@
1
+ import type { ModeOpts } from './loading-profiles';
2
+ import type { FlLoadingAnimation, FlLoadingSize } from './loading';
3
+ export declare function resolvePreset(animation: FlLoadingAnimation, size: FlLoadingSize): {
4
+ speed: number;
5
+ opts: ModeOpts;
6
+ };
@@ -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;