mtrl 0.3.9 → 0.4.3
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/dist/components/badge/api.d.ts +5 -5
- package/dist/components/badge/config.d.ts +18 -8
- package/dist/components/bottom-app-bar/bottom-app-bar.d.ts +1 -1
- package/dist/components/bottom-app-bar/config.d.ts +1 -1
- package/dist/components/button/api.d.ts +19 -3
- package/dist/components/button/button.d.ts +41 -1
- package/dist/components/button/config.d.ts +18 -7
- package/dist/components/button/constants.d.ts +36 -0
- package/dist/components/button/features/progress.d.ts +26 -0
- package/dist/components/button/types.d.ts +108 -1
- package/dist/components/card/config.d.ts +2 -2
- package/dist/components/card/features.d.ts +14 -1
- package/dist/components/card/index.d.ts +6 -6
- package/dist/components/carousel/api.d.ts +15 -11
- package/dist/components/carousel/carousel.d.ts +1 -1
- package/dist/components/carousel/config.d.ts +2 -2
- package/dist/components/carousel/features/drag.d.ts +1 -1
- package/dist/components/carousel/features/slides.d.ts +1 -1
- package/dist/components/checkbox/config.d.ts +2 -2
- package/dist/components/checkbox/types.d.ts +2 -2
- package/dist/components/chips/chip/chip.d.ts +1 -1
- package/dist/components/chips/chip/config.d.ts +2 -2
- package/dist/components/chips/chips.d.ts +1 -1
- package/dist/components/chips/config.d.ts +1 -1
- package/dist/components/chips/features/chip-items.d.ts +1 -1
- package/dist/components/chips/schema.d.ts +1 -2
- package/dist/components/datepicker/api.d.ts +1 -1
- package/dist/components/datepicker/config.d.ts +4 -4
- package/dist/components/datepicker/datepicker.d.ts +1 -1
- package/dist/components/datepicker/render.d.ts +5 -5
- package/dist/components/dialog/config.d.ts +2 -2
- package/dist/components/dialog/features.d.ts +1 -1
- package/dist/components/dialog/types.d.ts +1 -1
- package/dist/components/divider/divider.d.ts +2 -2
- package/dist/components/extended-fab/config.d.ts +2 -2
- package/dist/components/fab/config.d.ts +2 -2
- package/dist/components/index.d.ts +2 -1
- package/dist/components/list/config.d.ts +1 -1
- package/dist/components/menu/api.d.ts +14 -14
- package/dist/components/menu/config.d.ts +2 -2
- package/dist/components/menu/features/controller.d.ts +1 -1
- package/dist/components/menu/features/keyboard.d.ts +2 -2
- package/dist/components/menu/features/submenu.d.ts +1 -1
- package/dist/components/menu/menu.d.ts +1 -1
- package/dist/components/navigation/config.d.ts +2 -2
- package/dist/components/navigation/features/controller.d.ts +1 -1
- package/dist/components/navigation/features/items.d.ts +2 -1
- package/dist/components/navigation/navigation.d.ts +1 -1
- package/dist/components/navigation/system/core.d.ts +1 -1
- package/dist/components/navigation/system/events.d.ts +1 -1
- package/dist/components/navigation/system/index.d.ts +2 -2
- package/dist/components/progress/api.d.ts +49 -18
- package/dist/components/progress/config.d.ts +20 -11
- package/dist/components/progress/constants.d.ts +86 -1
- package/dist/components/progress/features/canvas.d.ts +61 -0
- package/dist/components/progress/features/circular.d.ts +9 -0
- package/dist/components/progress/features/index.d.ts +8 -0
- package/dist/components/progress/features/linear.d.ts +9 -0
- package/dist/components/progress/features/resize-observer.d.ts +5 -0
- package/dist/components/progress/features/state.d.ts +46 -0
- package/dist/components/progress/index.d.ts +2 -2
- package/dist/components/progress/progress.d.ts +2 -2
- package/dist/components/progress/types.d.ts +102 -17
- package/dist/components/radios/api.d.ts +11 -11
- package/dist/components/radios/config.d.ts +2 -2
- package/dist/components/radios/radios.d.ts +1 -1
- package/dist/components/search/api.d.ts +15 -11
- package/dist/components/search/config.d.ts +1 -1
- package/dist/components/search/features/search.d.ts +1 -1
- package/dist/components/segmented-button/config.d.ts +8 -8
- package/dist/components/select/api.d.ts +1 -1
- package/dist/components/select/config.d.ts +1 -1
- package/dist/components/select/features.d.ts +1 -1
- package/dist/components/select/types.d.ts +20 -5
- package/dist/components/sheet/config.d.ts +2 -2
- package/dist/components/sheet/sheet.d.ts +1 -1
- package/dist/components/slider/api.d.ts +3 -2
- package/dist/components/slider/config.d.ts +2 -2
- package/dist/components/slider/constants.d.ts +50 -21
- package/dist/components/slider/features/canvas.d.ts +47 -0
- package/dist/components/slider/features/controller.d.ts +1 -1
- package/dist/components/slider/features/handlers.d.ts +1 -1
- package/dist/components/slider/features/index.d.ts +1 -0
- package/dist/components/slider/features/states.d.ts +1 -1
- package/dist/components/slider/schema.d.ts +7 -50
- package/dist/components/slider/slider.d.ts +5 -4
- package/dist/components/slider/types.d.ts +10 -37
- package/dist/components/snackbar/api.d.ts +1 -1
- package/dist/components/snackbar/config.d.ts +3 -3
- package/dist/components/switch/api.d.ts +1 -1
- package/dist/components/switch/config.d.ts +2 -2
- package/dist/components/switch/features.d.ts +4 -4
- package/dist/components/switch/switch.d.ts +1 -1
- package/dist/components/switch/types.d.ts +22 -17
- package/dist/components/tabs/config.d.ts +2 -3
- package/dist/components/tabs/features.d.ts +5 -5
- package/dist/components/tabs/index.d.ts +10 -10
- package/dist/components/tabs/tab.d.ts +1 -1
- package/dist/components/tabs/utils.d.ts +1 -1
- package/dist/components/textfield/api.d.ts +13 -3
- package/dist/components/textfield/config.d.ts +2 -2
- package/dist/components/textfield/constants.d.ts +12 -20
- package/dist/components/textfield/features/density.d.ts +28 -0
- package/dist/components/textfield/features/index.d.ts +13 -12
- package/dist/components/textfield/index.d.ts +3 -3
- package/dist/components/textfield/textfield.d.ts +1 -1
- package/dist/components/textfield/types.d.ts +42 -35
- package/dist/components/timepicker/clockdial.d.ts +2 -2
- package/dist/components/timepicker/config.d.ts +4 -4
- package/dist/components/timepicker/render.d.ts +1 -1
- package/dist/components/timepicker/timepicker.d.ts +1 -1
- package/dist/components/timepicker/utils.d.ts +2 -2
- package/dist/components/tooltip/api.d.ts +1 -1
- package/dist/components/tooltip/config.d.ts +2 -2
- package/dist/components/top-app-bar/top-app-bar.d.ts +2 -2
- package/dist/constants.d.ts +30 -30
- package/dist/core/canvas/animation.d.ts +27 -0
- package/dist/core/canvas/drawing.d.ts +57 -0
- package/dist/core/canvas/index.d.ts +8 -0
- package/dist/core/canvas/resize.d.ts +14 -0
- package/dist/core/canvas/utils.d.ts +84 -0
- package/dist/core/collection/collection.d.ts +7 -7
- package/dist/core/collection/list-manager/index.d.ts +2 -2
- package/dist/core/collection/list-manager/renderer.d.ts +3 -3
- package/dist/core/collection/list-manager/scroll-tracker.d.ts +1 -1
- package/dist/core/compose/component.d.ts +2 -1
- package/dist/core/compose/features/checkable.d.ts +2 -2
- package/dist/core/compose/features/gestures/longpress.d.ts +2 -2
- package/dist/core/compose/features/gestures/pan.d.ts +2 -2
- package/dist/core/compose/features/gestures/pinch.d.ts +2 -2
- package/dist/core/compose/features/gestures/rotate.d.ts +2 -2
- package/dist/core/compose/features/gestures/swipe.d.ts +2 -2
- package/dist/core/compose/features/gestures/tap.d.ts +2 -2
- package/dist/core/compose/features/gestures.d.ts +2 -2
- package/dist/core/compose/features/input.d.ts +1 -1
- package/dist/core/compose/features/ripple.d.ts +2 -2
- package/dist/core/compose/features/size.d.ts +1 -1
- package/dist/core/compose/features/textinput.d.ts +1 -1
- package/dist/core/compose/features/throttle.d.ts +1 -1
- package/dist/core/compose/features/variant.d.ts +1 -1
- package/dist/core/compose/features/withEvents.d.ts +1 -1
- package/dist/core/composition/features/label.d.ts +1 -1
- package/dist/core/config/component.d.ts +4 -2
- package/dist/core/config/global.d.ts +65 -0
- package/dist/core/dom/attributes.d.ts +13 -15
- package/dist/core/dom/classes.d.ts +10 -0
- package/dist/core/dom/create.d.ts +36 -6
- package/dist/core/dom/index.d.ts +2 -2
- package/dist/core/gestures/pan.d.ts +1 -1
- package/dist/core/gestures/pinch.d.ts +1 -1
- package/dist/core/gestures/rotate.d.ts +1 -1
- package/dist/core/index.d.ts +3 -1
- package/dist/core/layout/array.d.ts +7 -2
- package/dist/core/layout/object.d.ts +2 -2
- package/dist/core/layout/processor.d.ts +2 -2
- package/dist/core/layout/utils.d.ts +1 -1
- package/dist/core/utils/color.d.ts +14 -0
- package/dist/core/utils/index.d.ts +2 -6
- package/dist/core/utils/theme.d.ts +38 -0
- package/dist/index.cjs +15 -15
- package/dist/index.cjs.map +158 -143
- package/dist/index.d.ts +7 -7
- package/dist/index.js +15 -15
- package/dist/index.js.map +158 -143
- package/dist/package.json +1 -1
- package/dist/styles.css +2 -2
- package/package.json +9 -13
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Common canvas context interface used by components
|
|
3
|
+
*/
|
|
4
|
+
export interface CanvasContext {
|
|
5
|
+
canvas: HTMLCanvasElement;
|
|
6
|
+
ctx: CanvasRenderingContext2D;
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
pixelRatio: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Creates and initializes a canvas context with proper pixel ratio handling
|
|
13
|
+
*
|
|
14
|
+
* @param canvas - The canvas element
|
|
15
|
+
* @param width - Canvas width
|
|
16
|
+
* @param height - Canvas height
|
|
17
|
+
* @returns Initialized canvas context
|
|
18
|
+
*/
|
|
19
|
+
export declare const createCanvasContext: (canvas: HTMLCanvasElement, width: number, height: number) => CanvasContext;
|
|
20
|
+
/**
|
|
21
|
+
* Updates canvas dimensions while preserving pixel ratio
|
|
22
|
+
*
|
|
23
|
+
* @param context - The canvas context to update
|
|
24
|
+
* @param width - New width
|
|
25
|
+
* @param height - New height
|
|
26
|
+
*/
|
|
27
|
+
export declare const updateCanvasDimensions: (context: CanvasContext, width: number, height: number) => void;
|
|
28
|
+
/**
|
|
29
|
+
* Tries to initialize a canvas with retry mechanism
|
|
30
|
+
*
|
|
31
|
+
* @param initFn - Function that performs initialization
|
|
32
|
+
* @param onSuccess - Optional callback on successful initialization
|
|
33
|
+
* @returns Whether initialization was immediately successful
|
|
34
|
+
*/
|
|
35
|
+
export declare const initializeCanvasWithRetry: (initFn: () => boolean, onSuccess?: () => void) => boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Creates a theme observer that triggers a callback on theme changes
|
|
38
|
+
*
|
|
39
|
+
* @param color - The theme color to observe (e.g., 'primary', 'secondary')
|
|
40
|
+
* @param callback - Function to call when theme changes
|
|
41
|
+
* @returns Cleanup function or null
|
|
42
|
+
*/
|
|
43
|
+
export declare const createCanvasThemeObserver: (color: string, callback: () => void) => (() => void) | null;
|
|
44
|
+
/**
|
|
45
|
+
* Standard animation frame manager for components
|
|
46
|
+
*/
|
|
47
|
+
export declare class AnimationFrameManager {
|
|
48
|
+
private animationId;
|
|
49
|
+
/**
|
|
50
|
+
* Starts an animation loop
|
|
51
|
+
* @param callback - Animation callback receiving timestamp
|
|
52
|
+
*/
|
|
53
|
+
start(callback: (timestamp: number) => void): void;
|
|
54
|
+
/**
|
|
55
|
+
* Stops the animation loop
|
|
56
|
+
*/
|
|
57
|
+
stop(): void;
|
|
58
|
+
/**
|
|
59
|
+
* Whether animation is currently running
|
|
60
|
+
*/
|
|
61
|
+
get isRunning(): boolean;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Manages multiple cleanup functions for components
|
|
65
|
+
*/
|
|
66
|
+
export declare class CleanupManager {
|
|
67
|
+
private cleanupFunctions;
|
|
68
|
+
/**
|
|
69
|
+
* Adds a cleanup function
|
|
70
|
+
*/
|
|
71
|
+
add(cleanup: (() => void) | null | undefined): void;
|
|
72
|
+
/**
|
|
73
|
+
* Runs all cleanup functions and clears the list
|
|
74
|
+
*/
|
|
75
|
+
cleanup(): void;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Creates a standard canvas element with common styles
|
|
79
|
+
*
|
|
80
|
+
* @param className - CSS class name for the canvas
|
|
81
|
+
* @param additionalStyles - Additional styles to apply
|
|
82
|
+
* @returns Canvas element
|
|
83
|
+
*/
|
|
84
|
+
export declare const createStyledCanvas: (className: string, additionalStyles?: Partial<CSSStyleDeclaration>) => HTMLCanvasElement;
|
|
@@ -12,13 +12,13 @@ export declare const COLLECTION_EVENTS: {
|
|
|
12
12
|
/**
|
|
13
13
|
* Collection event type
|
|
14
14
|
*/
|
|
15
|
-
export type CollectionEvent = typeof COLLECTION_EVENTS[keyof typeof COLLECTION_EVENTS];
|
|
15
|
+
export type CollectionEvent = (typeof COLLECTION_EVENTS)[keyof typeof COLLECTION_EVENTS];
|
|
16
16
|
/**
|
|
17
17
|
* Observer callback type for collection events
|
|
18
18
|
*/
|
|
19
|
-
export type CollectionObserver<T> = (payload: {
|
|
19
|
+
export type CollectionObserver<T = unknown> = (payload: {
|
|
20
20
|
event: CollectionEvent;
|
|
21
|
-
data:
|
|
21
|
+
data: T | readonly T[] | readonly string[] | boolean | Error | null;
|
|
22
22
|
}) => void;
|
|
23
23
|
/**
|
|
24
24
|
* Query operators for filtering
|
|
@@ -41,7 +41,7 @@ export declare const OPERATORS: {
|
|
|
41
41
|
*/
|
|
42
42
|
export interface CollectionItem {
|
|
43
43
|
id: string;
|
|
44
|
-
[key: string]:
|
|
44
|
+
[key: string]: unknown;
|
|
45
45
|
}
|
|
46
46
|
/**
|
|
47
47
|
* Collection configuration
|
|
@@ -50,11 +50,11 @@ export interface CollectionConfig<T extends CollectionItem> {
|
|
|
50
50
|
/**
|
|
51
51
|
* Transform function for items
|
|
52
52
|
*/
|
|
53
|
-
transform?: (item:
|
|
53
|
+
transform?: (item: unknown) => T;
|
|
54
54
|
/**
|
|
55
55
|
* Validation function for items
|
|
56
56
|
*/
|
|
57
|
-
validate?: (item:
|
|
57
|
+
validate?: (item: unknown) => boolean;
|
|
58
58
|
/**
|
|
59
59
|
* Initial capacity for collection
|
|
60
60
|
*/
|
|
@@ -69,7 +69,7 @@ export interface Collection<T extends CollectionItem> {
|
|
|
69
69
|
* @param observer - Observer callback
|
|
70
70
|
* @returns Unsubscribe function
|
|
71
71
|
*/
|
|
72
|
-
subscribe: (observer: CollectionObserver
|
|
72
|
+
subscribe: (observer: CollectionObserver) => () => void;
|
|
73
73
|
/**
|
|
74
74
|
* Get collection items based on current query and sort
|
|
75
75
|
* @returns Collection items
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ListManagerConfig, ListManager, LoadStatus } from
|
|
1
|
+
import { ListManagerConfig, ListManager, LoadStatus } from "./types";
|
|
2
2
|
/**
|
|
3
3
|
* Creates a list manager for a specific collection
|
|
4
4
|
* @param {string} collection - Collection name
|
|
@@ -58,4 +58,4 @@ export declare const transforms: {
|
|
|
58
58
|
meta: any;
|
|
59
59
|
};
|
|
60
60
|
};
|
|
61
|
-
export * from
|
|
61
|
+
export * from "./types";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ListManagerConfig, ListManagerElements, VisibleRange } from
|
|
2
|
-
import { RecyclingPool } from
|
|
3
|
-
import { ItemMeasurement } from
|
|
1
|
+
import { ListManagerConfig, ListManagerElements, VisibleRange } from "./types";
|
|
2
|
+
import { RecyclingPool } from "./utils/recycling";
|
|
3
|
+
import { ItemMeasurement } from "./item-measurement";
|
|
4
4
|
/**
|
|
5
5
|
* Creates a renderer for list items
|
|
6
6
|
* @param config List manager configuration
|
|
@@ -40,10 +40,11 @@ export interface ElementComponent extends BaseComponent {
|
|
|
40
40
|
export interface WithElementOptions {
|
|
41
41
|
tag?: string;
|
|
42
42
|
componentName?: string;
|
|
43
|
-
|
|
43
|
+
attributes?: Record<string, any>;
|
|
44
44
|
className?: string | string[];
|
|
45
45
|
forwardEvents?: Record<string, boolean | ((component: any, event: Event) => boolean)>;
|
|
46
46
|
interactive?: boolean;
|
|
47
|
+
parent?: HTMLElement | string;
|
|
47
48
|
}
|
|
48
49
|
/**
|
|
49
50
|
* Creates a base component with configuration and prefix utilities.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BaseComponent } from
|
|
1
|
+
import { BaseComponent } from "../component";
|
|
2
2
|
/**
|
|
3
3
|
* Configuration for checkable feature
|
|
4
4
|
*/
|
|
@@ -12,7 +12,7 @@ export interface CheckableConfig {
|
|
|
12
12
|
export interface InputComponent extends BaseComponent {
|
|
13
13
|
element: HTMLElement;
|
|
14
14
|
input: HTMLInputElement;
|
|
15
|
-
emit?: (event: string, data:
|
|
15
|
+
emit?: (event: string, data: unknown) => InputComponent;
|
|
16
16
|
on?: (event: string, handler: Function) => InputComponent;
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* @module core/compose/features/gestures
|
|
3
3
|
* @description Adds long press gesture recognition to components
|
|
4
4
|
*/
|
|
5
|
-
import { BaseComponent, ElementComponent } from
|
|
6
|
-
import { LongPressEvent, GestureHandler } from
|
|
5
|
+
import { BaseComponent, ElementComponent } from "../../component";
|
|
6
|
+
import { LongPressEvent, GestureHandler } from "../../../gestures";
|
|
7
7
|
/**
|
|
8
8
|
* Configuration for long press gesture feature
|
|
9
9
|
*/
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* @module core/compose/features/gestures
|
|
3
3
|
* @description Adds pan gesture recognition to components
|
|
4
4
|
*/
|
|
5
|
-
import { BaseComponent, ElementComponent } from
|
|
6
|
-
import { PanEvent, GestureHandler } from
|
|
5
|
+
import { BaseComponent, ElementComponent } from "../../component";
|
|
6
|
+
import { PanEvent, GestureHandler } from "../../../gestures";
|
|
7
7
|
/**
|
|
8
8
|
* Configuration for pan gesture feature
|
|
9
9
|
*/
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* @module core/compose/features/gestures
|
|
3
3
|
* @description Adds pinch gesture recognition to components
|
|
4
4
|
*/
|
|
5
|
-
import { BaseComponent, ElementComponent } from
|
|
6
|
-
import { PinchEvent, GestureHandler } from
|
|
5
|
+
import { BaseComponent, ElementComponent } from "../../component";
|
|
6
|
+
import { PinchEvent, GestureHandler } from "../../../gestures";
|
|
7
7
|
/**
|
|
8
8
|
* Configuration for pinch gesture feature
|
|
9
9
|
*/
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* @module core/compose/features/gestures
|
|
3
3
|
* @description Adds rotate gesture recognition to components
|
|
4
4
|
*/
|
|
5
|
-
import { BaseComponent, ElementComponent } from
|
|
6
|
-
import { RotateEvent, GestureHandler } from
|
|
5
|
+
import { BaseComponent, ElementComponent } from "../../component";
|
|
6
|
+
import { RotateEvent, GestureHandler } from "../../../gestures";
|
|
7
7
|
/**
|
|
8
8
|
* Configuration for rotate gesture feature
|
|
9
9
|
*/
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* @module core/compose/features/gestures
|
|
3
3
|
* @description Adds swipe gesture recognition to components
|
|
4
4
|
*/
|
|
5
|
-
import { BaseComponent, ElementComponent } from
|
|
6
|
-
import { SwipeEvent, GestureHandler } from
|
|
5
|
+
import { BaseComponent, ElementComponent } from "../../component";
|
|
6
|
+
import { SwipeEvent, GestureHandler } from "../../../gestures";
|
|
7
7
|
/**
|
|
8
8
|
* Configuration for swipe gesture feature
|
|
9
9
|
*/
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* @module core/compose/features/gestures
|
|
3
3
|
* @description Adds tap gesture recognition to components
|
|
4
4
|
*/
|
|
5
|
-
import { BaseComponent, ElementComponent } from
|
|
6
|
-
import { TapEvent, GestureHandler } from
|
|
5
|
+
import { BaseComponent, ElementComponent } from "../../component";
|
|
6
|
+
import { TapEvent, GestureHandler } from "../../../gestures";
|
|
7
7
|
/**
|
|
8
8
|
* Configuration for tap gesture feature
|
|
9
9
|
*/
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* @module core/compose/features
|
|
3
3
|
* @description Adds gesture recognition capabilities to components
|
|
4
4
|
*/
|
|
5
|
-
import { BaseComponent, ElementComponent } from
|
|
6
|
-
import { GestureManager, GestureConfig, GestureHandler } from
|
|
5
|
+
import { BaseComponent, ElementComponent } from "../component";
|
|
6
|
+
import { GestureManager, GestureConfig, GestureHandler } from "../../gestures";
|
|
7
7
|
/**
|
|
8
8
|
* Configuration for gestures feature
|
|
9
9
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BaseComponent, ElementComponent } from
|
|
2
|
-
import { LifecycleComponent } from
|
|
1
|
+
import { BaseComponent, ElementComponent } from "../component";
|
|
2
|
+
import { LifecycleComponent } from "./lifecycle";
|
|
3
3
|
/**
|
|
4
4
|
* Ripple configuration interface
|
|
5
5
|
*/
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @module core/compose/features
|
|
3
3
|
* @description Adds throttled event handling capabilities to components
|
|
4
4
|
*/
|
|
5
|
-
import { BaseComponent, ElementComponent } from
|
|
5
|
+
import { BaseComponent, ElementComponent } from "../component";
|
|
6
6
|
/**
|
|
7
7
|
* Configuration for throttled event handlers
|
|
8
8
|
*/
|
|
@@ -8,10 +8,12 @@ export interface BaseComponentConfig {
|
|
|
8
8
|
class?: string | string[];
|
|
9
9
|
className?: string | string[];
|
|
10
10
|
rawClass?: string | string[];
|
|
11
|
+
parent?: HTMLElement | string | null;
|
|
11
12
|
[key: string]: any;
|
|
12
13
|
}
|
|
13
14
|
/**
|
|
14
15
|
* Creates a base configuration for any component
|
|
16
|
+
* Automatically merges global defaults if available
|
|
15
17
|
*
|
|
16
18
|
* @param {BaseComponentConfig} defaults - Default configuration for the component
|
|
17
19
|
* @param {BaseComponentConfig} userConfig - User provided configuration
|
|
@@ -69,7 +71,7 @@ export declare const processClassNames: (classNames: string | string[] | null) =
|
|
|
69
71
|
*/
|
|
70
72
|
export declare const createElementConfig: (config: BaseComponentConfig, options: {
|
|
71
73
|
tag: string;
|
|
72
|
-
|
|
74
|
+
attributes?: Record<string, any>;
|
|
73
75
|
className?: string | string[] | null;
|
|
74
76
|
html?: string;
|
|
75
77
|
text?: string;
|
|
@@ -78,7 +80,7 @@ export declare const createElementConfig: (config: BaseComponentConfig, options:
|
|
|
78
80
|
}) => {
|
|
79
81
|
tag: string;
|
|
80
82
|
componentName: string;
|
|
81
|
-
|
|
83
|
+
attributes: Record<string, any>;
|
|
82
84
|
className: string[];
|
|
83
85
|
rawClass: string | string[];
|
|
84
86
|
html: string;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight Global Configuration System for mtrl
|
|
3
|
+
*
|
|
4
|
+
* This system allows setting default configurations for all components
|
|
5
|
+
* without adding complexity or performance overhead.
|
|
6
|
+
*/
|
|
7
|
+
import { ButtonConfig } from '../../components/button/types';
|
|
8
|
+
import { TextfieldConfig } from '../../components/textfield/types';
|
|
9
|
+
/**
|
|
10
|
+
* Component configuration map
|
|
11
|
+
* Add new components here as they support global config
|
|
12
|
+
*
|
|
13
|
+
* For components not yet integrated, use Partial<any> as a placeholder
|
|
14
|
+
*/
|
|
15
|
+
export interface ComponentConfigMap {
|
|
16
|
+
button?: Partial<ButtonConfig>;
|
|
17
|
+
textfield?: Partial<TextfieldConfig>;
|
|
18
|
+
checkbox?: Partial<any>;
|
|
19
|
+
switch?: Partial<any>;
|
|
20
|
+
slider?: Partial<any>;
|
|
21
|
+
card?: Partial<any>;
|
|
22
|
+
chip?: Partial<any>;
|
|
23
|
+
dialog?: Partial<any>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Sets global defaults for a specific component
|
|
27
|
+
*
|
|
28
|
+
* @param component - Component name
|
|
29
|
+
* @param config - Default configuration to apply
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* // Set all buttons to be square by default
|
|
34
|
+
* setComponentDefaults('button', {
|
|
35
|
+
* shape: 'square',
|
|
36
|
+
* size: 'm'
|
|
37
|
+
* });
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export declare function setComponentDefaults<K extends keyof ComponentConfigMap>(component: K, config: ComponentConfigMap[K]): void;
|
|
41
|
+
/**
|
|
42
|
+
* Gets global defaults for a component
|
|
43
|
+
*
|
|
44
|
+
* @param component - Component name
|
|
45
|
+
* @returns Component defaults or empty object
|
|
46
|
+
*/
|
|
47
|
+
export declare function getComponentDefaults<K extends keyof ComponentConfigMap>(component: K): ComponentConfigMap[K];
|
|
48
|
+
/**
|
|
49
|
+
* Sets global defaults for multiple components at once
|
|
50
|
+
*
|
|
51
|
+
* @param configs - Map of component names to their default configs
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```typescript
|
|
55
|
+
* setGlobalDefaults({
|
|
56
|
+
* button: { shape: 'square', size: 'm' },
|
|
57
|
+
* textfield: { variant: 'outlined' }
|
|
58
|
+
* });
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare function setGlobalDefaults(configs: Partial<ComponentConfigMap>): void;
|
|
62
|
+
/**
|
|
63
|
+
* Clears all global defaults
|
|
64
|
+
*/
|
|
65
|
+
export declare function clearGlobalDefaults(): void;
|
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module core/dom
|
|
3
|
-
* @description DOM
|
|
3
|
+
* @description DOM attribute helpers
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
* Sets
|
|
7
|
-
*
|
|
8
|
-
* @
|
|
9
|
-
* @param {
|
|
10
|
-
* @
|
|
11
|
-
* @returns {HTMLElement} Modified element
|
|
6
|
+
* Sets attributes on an HTML element
|
|
7
|
+
*
|
|
8
|
+
* @param {HTMLElement} element - Element to set attributes on
|
|
9
|
+
* @param {Record<string, any>} attributes - Attributes to set
|
|
10
|
+
* @returns {HTMLElement} The element for chaining
|
|
12
11
|
*/
|
|
13
|
-
export declare const setAttributes: (element: HTMLElement,
|
|
12
|
+
export declare const setAttributes: (element: HTMLElement, attributes?: Record<string, any>) => HTMLElement;
|
|
14
13
|
/**
|
|
15
|
-
* Removes
|
|
16
|
-
*
|
|
17
|
-
* @
|
|
18
|
-
* @param {
|
|
19
|
-
* @
|
|
20
|
-
* @returns {HTMLElement} Modified element
|
|
14
|
+
* Removes attributes from an HTML element
|
|
15
|
+
*
|
|
16
|
+
* @param {HTMLElement} element - Element to remove attributes from
|
|
17
|
+
* @param {string[]} attributes - Attributes to remove
|
|
18
|
+
* @returns {HTMLElement} The element for chaining
|
|
21
19
|
*/
|
|
22
|
-
export declare const removeAttributes: (element: HTMLElement,
|
|
20
|
+
export declare const removeAttributes: (element: HTMLElement, attributes?: string[]) => HTMLElement;
|
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
* @module core/dom
|
|
3
3
|
* @description DOM manipulation utilities optimized for performance
|
|
4
4
|
*/
|
|
5
|
+
/**
|
|
6
|
+
* Normalizes class names input by handling various formats:
|
|
7
|
+
* - String with space-separated classes
|
|
8
|
+
* - Array of strings
|
|
9
|
+
* - Mixed array of strings and space-separated classes
|
|
10
|
+
*
|
|
11
|
+
* @param classes - Classes to normalize
|
|
12
|
+
* @returns Array of unique, non-empty class names
|
|
13
|
+
*/
|
|
14
|
+
export declare const normalizeClasses: (...classes: (string | string[])[]) => string[];
|
|
5
15
|
/**
|
|
6
16
|
* Adds multiple classes to an element
|
|
7
17
|
* Automatically adds prefix to classes that don't already have it
|
|
@@ -10,6 +10,10 @@ export type EventHandler = (event: Event) => void;
|
|
|
10
10
|
* Event condition type - either a boolean or a function that returns a boolean
|
|
11
11
|
*/
|
|
12
12
|
export type EventCondition = boolean | ((context: any, event: Event) => boolean);
|
|
13
|
+
/**
|
|
14
|
+
* Element type that can be either HTMLElement or SVGElement
|
|
15
|
+
*/
|
|
16
|
+
export type DOMElement = HTMLElement | SVGElement;
|
|
13
17
|
/**
|
|
14
18
|
* Options for element creation
|
|
15
19
|
*/
|
|
@@ -60,7 +64,7 @@ export interface CreateElementOptions {
|
|
|
60
64
|
/**
|
|
61
65
|
* HTML attributes
|
|
62
66
|
*/
|
|
63
|
-
|
|
67
|
+
attributes?: Record<string, any>;
|
|
64
68
|
/**
|
|
65
69
|
* Events to forward when component has emit method
|
|
66
70
|
*/
|
|
@@ -78,6 +82,19 @@ export interface CreateElementOptions {
|
|
|
78
82
|
*/
|
|
79
83
|
[key: string]: any;
|
|
80
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Options for SVG element creation, extends regular element options
|
|
87
|
+
*/
|
|
88
|
+
export interface CreateSVGElementOptions extends Omit<CreateElementOptions, "container" | "onCreate"> {
|
|
89
|
+
/**
|
|
90
|
+
* Container to append element to
|
|
91
|
+
*/
|
|
92
|
+
container?: DOMElement | null;
|
|
93
|
+
/**
|
|
94
|
+
* Callback after element creation
|
|
95
|
+
*/
|
|
96
|
+
onCreate?: (element: SVGElement, context?: any) => void;
|
|
97
|
+
}
|
|
81
98
|
/**
|
|
82
99
|
* Event handler storage to facilitate cleanup
|
|
83
100
|
*/
|
|
@@ -85,23 +102,30 @@ export interface EventHandlerStorage {
|
|
|
85
102
|
[eventName: string]: EventHandler;
|
|
86
103
|
}
|
|
87
104
|
/**
|
|
88
|
-
* Creates
|
|
105
|
+
* Creates an HTML element with the specified options
|
|
89
106
|
*
|
|
90
107
|
* @param {CreateElementOptions} options - Element creation options
|
|
91
|
-
* @returns {HTMLElement} Created element
|
|
108
|
+
* @returns {HTMLElement} Created HTML element
|
|
92
109
|
*/
|
|
93
110
|
export declare const createElement: (options?: CreateElementOptions) => HTMLElement;
|
|
111
|
+
/**
|
|
112
|
+
* Creates an SVG element with the specified options
|
|
113
|
+
*
|
|
114
|
+
* @param {CreateSVGElementOptions} options - SVG element creation options
|
|
115
|
+
* @returns {SVGElement} Created SVG element
|
|
116
|
+
*/
|
|
117
|
+
export declare const createSVGElement: (options?: CreateSVGElementOptions) => SVGElement;
|
|
94
118
|
/**
|
|
95
119
|
* Removes event handlers from an element
|
|
96
120
|
* @param element - Element to cleanup
|
|
97
121
|
*/
|
|
98
|
-
export declare const removeEventHandlers: (element: HTMLElement) => void;
|
|
122
|
+
export declare const removeEventHandlers: (element: HTMLElement | SVGElement) => void;
|
|
99
123
|
/**
|
|
100
124
|
* Higher-order function to add attributes to an element
|
|
101
|
-
* @param {Record<string, any>}
|
|
125
|
+
* @param {Record<string, any>} attributes - Attributes to add
|
|
102
126
|
* @returns {(element: HTMLElement) => HTMLElement} Element transformer
|
|
103
127
|
*/
|
|
104
|
-
export declare const withAttributes: (
|
|
128
|
+
export declare const withAttributes: (attributes: Record<string, any>) => (element: HTMLElement) => HTMLElement;
|
|
105
129
|
/**
|
|
106
130
|
* Higher-order function to add classes to an element
|
|
107
131
|
* @param {...(string | string[])} classes - Classes to add
|
|
@@ -121,4 +145,10 @@ declare global {
|
|
|
121
145
|
*/
|
|
122
146
|
__eventHandlers?: EventHandlerStorage;
|
|
123
147
|
}
|
|
148
|
+
interface SVGElement {
|
|
149
|
+
/**
|
|
150
|
+
* Storage for event handlers to enable cleanup
|
|
151
|
+
*/
|
|
152
|
+
__eventHandlers?: EventHandlerStorage;
|
|
153
|
+
}
|
|
124
154
|
}
|
package/dist/core/dom/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { createElement,
|
|
1
|
+
export { createElement, createSVGElement } from './create';
|
|
2
2
|
export type { CreateElementOptions } from './create';
|
|
3
3
|
export { setAttributes, removeAttributes } from './attributes';
|
|
4
|
-
export { addClass, removeClass, toggleClass, hasClass } from './classes';
|
|
4
|
+
export { addClass, removeClass, toggleClass, hasClass, normalizeClasses } from './classes';
|
|
5
5
|
export { createEventManager } from './events';
|
|
6
6
|
export type { EventManager } from './events';
|
package/dist/core/index.d.ts
CHANGED
|
@@ -21,8 +21,10 @@ export { createEventManager as createStateEventManager } from './state/events';
|
|
|
21
21
|
export type { EventManagerState } from './state/events';
|
|
22
22
|
export * from './layout';
|
|
23
23
|
export * from './collection';
|
|
24
|
+
export * from './canvas';
|
|
24
25
|
export { PREFIX, COMPONENTS, STATES, classNames, getComponentClass, getModifierClass, getElementClass } from './config';
|
|
25
|
-
export {
|
|
26
|
+
export { setComponentDefaults, getComponentDefaults, setGlobalDefaults, clearGlobalDefaults, type ComponentConfigMap } from './config/global';
|
|
27
|
+
export { when, classNames as joinClasses, isObject, byString, hasTouchSupport, normalizeEvent, throttle, debounce, once, getInheritedBackground } from './utils';
|
|
26
28
|
export { createGestureManager } from './gestures';
|
|
27
29
|
export type { GestureManager, GestureConfig, GestureEvent, TapEvent, SwipeEvent, LongPressEvent, PinchEvent, RotateEvent, PanEvent, AnyGestureEvent, GestureHandler } from './gestures';
|
|
28
30
|
export type { ThemeConfig, ComponentConfig, ThemedComponentConfig, VariantComponentConfig, StateComponentConfig } from './config';
|