@reactive-web-components/rwc 2.51.5
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/main.d.ts +0 -0
- package/package.json +15 -0
- package/reactive-web-component.B5z__-wD.umd.cjs +2 -0
- package/reactive-web-component.siUNa4Q7.js +912 -0
- package/shared/constants/constants.d.ts +2 -0
- package/shared/index.d.ts +2 -0
- package/shared/types/base-element.d.ts +1 -0
- package/shared/types/element.d.ts +191 -0
- package/shared/types/index.d.ts +3 -0
- package/shared/types/list.type.d.ts +7 -0
- package/shared/utils/helpers.d.ts +7 -0
- package/shared/utils/html-decorators/html-property.d.ts +6 -0
- package/shared/utils/html-decorators/index.d.ts +1 -0
- package/shared/utils/html-elements/__tests__/element.test.d.ts +1 -0
- package/shared/utils/html-elements/base-element.d.ts +33 -0
- package/shared/utils/html-elements/custom-element.d.ts +11 -0
- package/shared/utils/html-elements/element-helper.d.ts +21 -0
- package/shared/utils/html-elements/element.d.ts +84 -0
- package/shared/utils/html-elements/index.d.ts +4 -0
- package/shared/utils/html-fabric/custom-fabric.d.ts +3 -0
- package/shared/utils/html-fabric/fabric.d.ts +67 -0
- package/shared/utils/html-fabric/fn-component.d.ts +5 -0
- package/shared/utils/html-fabric/index.d.ts +3 -0
- package/shared/utils/index.d.ts +5 -0
- package/shared/utils/routing/router.d.ts +10 -0
- package/shared/utils/signal/helpers.types.d.ts +3 -0
- package/shared/utils/signal/index.d.ts +3 -0
- package/shared/utils/signal/signal.d.ts +18 -0
- package/shared/utils/signal/signal.type.d.ts +18 -0
- package/shared/utils/signal/utils.d.ts +10 -0
- package/test-components/examples/button/button.d.ts +12 -0
- package/test-components/examples/counter.d.ts +15 -0
- package/test-components/examples/test-list/dynamic-items-test.d.ts +17 -0
- package/test-components/examples/test-list/example.list.d.ts +26 -0
- package/test-components/examples/useCustomComponent.d.ts +21 -0
- package/test-components/examples/when.d.ts +6 -0
- package/test-components/tab-bar.d.ts +23 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type RootStyle = Promise<typeof import("*?inline")> | Array<Promise<typeof import("*?inline")>> | string | string[];
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { ReactiveSignal } from '../utils/signal';
|
|
2
|
+
export type Split<S extends string, D extends string> = string extends S ? string[] : S extends "" ? [] : S extends `${infer T}${D}${infer U}` ? [T, ...Split<U, D>] : [S];
|
|
3
|
+
export type Join<T extends unknown[], D extends string> = T extends [] ? "" : T extends [string | number | boolean | bigint] ? `${T[0]}` : T extends [string | number | boolean | bigint, ...infer U] ? `${T[0]}${D}${Join<U, D>}` : string;
|
|
4
|
+
export type HtmlTagName = keyof HTMLElementTagNameMap;
|
|
5
|
+
export type ExtraHTMLElement = HTMLElement & {
|
|
6
|
+
render?: () => ComponentConfig<any>;
|
|
7
|
+
onConnected?: (self: ComponentConfig<ExtraHTMLElement>, host: ExtraHTMLElement) => void;
|
|
8
|
+
slotTemplate?: SlotTemplate;
|
|
9
|
+
};
|
|
10
|
+
export type SignalValue<T> = T extends ReactiveSignal<infer V> ? V : T;
|
|
11
|
+
export type EventKeys<T> = {
|
|
12
|
+
[k in keyof T]: T[k] extends EventEmitter<any> ? k : never;
|
|
13
|
+
}[keyof T];
|
|
14
|
+
export type ComponentEventListener<T extends ExtraHTMLElement, E extends Event> = (e: E, self: ComponentConfig<T>, host: T) => void;
|
|
15
|
+
export type CustomEventListener<DetailValue, T extends ExtraHTMLElement> = (e: CustomEvent<DetailValue>, self: ComponentConfig<T>, host: T) => void;
|
|
16
|
+
export type CustomEventValue<T> = T extends EventEmitter<infer V> ? V : T;
|
|
17
|
+
export type ComponentCallback<T extends ExtraHTMLElement> = (self: ComponentConfig<T>, host: T) => void;
|
|
18
|
+
export type AttrSignal<T extends HTMLElement & {
|
|
19
|
+
render?: () => ComponentConfig<any>;
|
|
20
|
+
}> = T["render"] extends () => ComponentConfig<any> ? {
|
|
21
|
+
[k in keyof T]: T[k] extends ReactiveSignal<any> ? k : never;
|
|
22
|
+
}[keyof T & string] : keyof T & string;
|
|
23
|
+
export type EffectCallback<T extends HTMLElement> = (self: ComponentConfig<T>, host: T) => void;
|
|
24
|
+
export type ComponentContent = ComponentConfig<any> | string | ReactiveSignal<any>;
|
|
25
|
+
export type CompFuncContent = () => ComponentContent | ComponentContent[];
|
|
26
|
+
export type ContextCompFuncContent<T extends ExtraHTMLElement> = (self: ComponentConfig<T>) => ComponentContent | ComponentContent[];
|
|
27
|
+
export type ChildrenContent<T extends ExtraHTMLElement> = ComponentContent | ContextCompFuncContent<T>;
|
|
28
|
+
export interface ComponentConfig<T extends ExtraHTMLElement> {
|
|
29
|
+
/**
|
|
30
|
+
* append child components
|
|
31
|
+
*/
|
|
32
|
+
append(...args: ComponentConfig<any>[]): ComponentConfig<T>;
|
|
33
|
+
/**
|
|
34
|
+
* clear and append child components
|
|
35
|
+
*/
|
|
36
|
+
set(...args: ComponentConfig<any>[]): ComponentConfig<T>;
|
|
37
|
+
/**
|
|
38
|
+
* remove child components
|
|
39
|
+
*/
|
|
40
|
+
removeChild(...args: ComponentConfig<any>[]): ComponentConfig<T>;
|
|
41
|
+
/**
|
|
42
|
+
* add html (string) content to host element
|
|
43
|
+
*/
|
|
44
|
+
addHtmlContent(content: string): ComponentConfig<T>;
|
|
45
|
+
/**
|
|
46
|
+
* clear and add html (string) content to host element
|
|
47
|
+
*/
|
|
48
|
+
setHtmlContent(content: string): ComponentConfig<T>;
|
|
49
|
+
/**
|
|
50
|
+
* add css style to host element
|
|
51
|
+
*/
|
|
52
|
+
addStyle(style: ConfigStyle): ComponentConfig<T>;
|
|
53
|
+
/**
|
|
54
|
+
* add event listener to component
|
|
55
|
+
*/
|
|
56
|
+
addEventlistener<K extends T["render"] extends () => ComponentConfig<any> ? never : keyof HTMLElementEventMap>(eventName: K, cb: ComponentEventListener<T, HTMLElementEventMap[K]>, options?: boolean | AddEventListenerOptions): ComponentConfig<T>;
|
|
57
|
+
addEventlistener<K extends EventKeys<T>>(eventName: K, cb: CustomEventListener<CustomEventValue<T[K]>, T>, options?: boolean | AddEventListenerOptions): ComponentConfig<T>;
|
|
58
|
+
/**
|
|
59
|
+
* set attribute value to component
|
|
60
|
+
*/
|
|
61
|
+
setAttribute<AttrName extends AttrSignal<T>, AttrValue extends SignalValue<T[AttrName]>>(attrName: AttrName, value: AttrValue): ComponentConfig<T>;
|
|
62
|
+
setCustomAttribute(attrName: string, value: unknown): ComponentConfig<T>;
|
|
63
|
+
/**
|
|
64
|
+
* bind reactive signal with attribute
|
|
65
|
+
*/
|
|
66
|
+
setReactiveAttribute<AttrName extends AttrSignal<T>, AttrValue extends ReactiveSignal<SignalValue<T[AttrName]>>>(attrName: AttrName, value: AttrValue): ComponentConfig<T>;
|
|
67
|
+
setReactiveCustomAttribute(attrName: string, value: ReactiveSignal<unknown>): ComponentConfig<T>;
|
|
68
|
+
/**
|
|
69
|
+
* remove attribute from component
|
|
70
|
+
*/
|
|
71
|
+
removeAttribute<AttrName extends keyof T & string>(attrName: AttrName): ComponentConfig<T>;
|
|
72
|
+
/**
|
|
73
|
+
* callback function for handling components slot context
|
|
74
|
+
*/
|
|
75
|
+
/**
|
|
76
|
+
* callback function for handling components connected event
|
|
77
|
+
*/
|
|
78
|
+
onConnected(cb: (self: ComponentConfig<T>, host: T) => void): ComponentConfig<T>;
|
|
79
|
+
/**
|
|
80
|
+
* add css-class to component
|
|
81
|
+
*/
|
|
82
|
+
addClass(...className: (string | (() => string))[]): ComponentConfig<T>;
|
|
83
|
+
/**
|
|
84
|
+
* set css-class to component
|
|
85
|
+
*/
|
|
86
|
+
setClass(...className: string[]): ComponentConfig<T>;
|
|
87
|
+
/**
|
|
88
|
+
* bind reactive signal with component css-class
|
|
89
|
+
*/
|
|
90
|
+
addReactiveClass(classConfig: {
|
|
91
|
+
[className: string]: ReactiveSignal<boolean>;
|
|
92
|
+
}): ComponentConfig<T>;
|
|
93
|
+
/**
|
|
94
|
+
* remove css-class from component
|
|
95
|
+
*/
|
|
96
|
+
removeClass(...className: string[]): ComponentConfig<T>;
|
|
97
|
+
/**
|
|
98
|
+
* replace css-class from component
|
|
99
|
+
*/
|
|
100
|
+
replaceClass(oldClass: string, newClass: string): ComponentConfig<T>;
|
|
101
|
+
/**
|
|
102
|
+
* add reactive effect for component instance
|
|
103
|
+
*/
|
|
104
|
+
addEffect(cb: EffectCallback<T>): ComponentConfig<T>;
|
|
105
|
+
/**
|
|
106
|
+
* bind reactive signal with component innerHtml
|
|
107
|
+
*/
|
|
108
|
+
addReactiveContent(content: ReactiveSignal<unknown>): ComponentConfig<T>;
|
|
109
|
+
/**
|
|
110
|
+
* clear content and bind reactive signal with component innerHtml
|
|
111
|
+
*/
|
|
112
|
+
setReactiveContent(content: ReactiveSignal<unknown>): ComponentConfig<T>;
|
|
113
|
+
/**
|
|
114
|
+
* clear component content
|
|
115
|
+
*/
|
|
116
|
+
clear(): ComponentConfig<T>;
|
|
117
|
+
/**
|
|
118
|
+
* host element
|
|
119
|
+
*/
|
|
120
|
+
hostElement: T;
|
|
121
|
+
}
|
|
122
|
+
export type SlotTemplate = Record<string, (slotCtx: any) => ComponentConfig<any> | null>;
|
|
123
|
+
export type CustomComponentConfig<T extends ExtraHTMLElement> = {
|
|
124
|
+
setReactiveValue<ModelType = unknown>(value: ReactiveSignal<ModelType>): CustomComponentConfig<T>;
|
|
125
|
+
/**
|
|
126
|
+
* slot template
|
|
127
|
+
*/
|
|
128
|
+
setSlotTemplate<K extends keyof T["slotTemplate"] & string>(templateConfig: {
|
|
129
|
+
[slotKey in K]: T["slotTemplate"][slotKey];
|
|
130
|
+
}): CustomComponentConfig<T>;
|
|
131
|
+
} & ComponentConfig<T>;
|
|
132
|
+
export type CssKey = Exclude<keyof CSSStyleDeclaration, "length" | "parentRule">;
|
|
133
|
+
export interface EventEmitterWrapper {
|
|
134
|
+
<EventValue = unknown>(): EventEmitter<EventValue>;
|
|
135
|
+
}
|
|
136
|
+
export interface EventEmitter<EventValue> {
|
|
137
|
+
(_value: EventValue | ReactiveSignal<EventValue>): void;
|
|
138
|
+
oldValue: null;
|
|
139
|
+
}
|
|
140
|
+
export type SlotContext = {
|
|
141
|
+
[slotName: string]: ReactiveSignal<unknown>;
|
|
142
|
+
};
|
|
143
|
+
export type AttributeValue<T extends ExtraHTMLElement, K extends AttrSignal<T>> = ReactiveSignal<SignalValue<T[K]>> | SignalValue<T[K]> | (() => SignalValue<T[K]>);
|
|
144
|
+
export type ConfigAttribute<T extends ExtraHTMLElement> = {
|
|
145
|
+
[key in AttrSignal<T>]?: AttributeValue<T, key>;
|
|
146
|
+
};
|
|
147
|
+
export type ConfigEventListener<T extends ExtraHTMLElement> = {
|
|
148
|
+
[key in keyof HTMLElementEventMap]?: ComponentEventListener<T, HTMLElementEventMap[key]>;
|
|
149
|
+
};
|
|
150
|
+
export type ConfigCustomEventListener<T extends ExtraHTMLElement> = {
|
|
151
|
+
[key in EventKeys<T>]?: CustomEventListener<CustomEventValue<T[key]>, T>;
|
|
152
|
+
};
|
|
153
|
+
export type ConfigCustomAttribute = Record<string, unknown>;
|
|
154
|
+
export type ConfigCustomListeners<T extends ExtraHTMLElement> = Record<string, CustomEventListener<unknown, T>>;
|
|
155
|
+
export type ConfigReactiveClassList = Record<string, ReactiveSignal<boolean>>;
|
|
156
|
+
export type ConfigChildren = ComponentContent[];
|
|
157
|
+
export type ConfigEffect<T extends ExtraHTMLElement> = EffectCallback<T>[];
|
|
158
|
+
export type ConfigListeners<T extends ExtraHTMLElement> = ConfigEventListener<T> & ConfigCustomEventListener<T>;
|
|
159
|
+
export type ConfigClassList = (string | (() => string))[];
|
|
160
|
+
export type ConfigStyle = Partial<{
|
|
161
|
+
[key in CssKey]: CSSStyleDeclaration[key] | (() => CSSStyleDeclaration[key]);
|
|
162
|
+
}> & Partial<{
|
|
163
|
+
[key in `--${string}`]: string | (() => string);
|
|
164
|
+
}>;
|
|
165
|
+
export type ComponentInitConfig<T extends ExtraHTMLElement> = Partial<{
|
|
166
|
+
classList: ConfigClassList;
|
|
167
|
+
style: ConfigStyle;
|
|
168
|
+
attributes: ConfigAttribute<T>;
|
|
169
|
+
customAttributes: ConfigCustomAttribute;
|
|
170
|
+
reactiveClassList: ConfigReactiveClassList;
|
|
171
|
+
children: ConfigChildren;
|
|
172
|
+
effects: ConfigEffect<T>;
|
|
173
|
+
listeners: ConfigListeners<T>;
|
|
174
|
+
customListeners: ConfigCustomListeners<T>;
|
|
175
|
+
}> & Partial<{
|
|
176
|
+
[key in AttrSignal<T> as `.${key}`]?: AttributeValue<T, key>;
|
|
177
|
+
} & {
|
|
178
|
+
[K in keyof HTMLElementEventMap as `@${string & K}`]?: ComponentEventListener<T, HTMLElementEventMap[K]>;
|
|
179
|
+
} & {
|
|
180
|
+
[K in EventKeys<T> as `@${string & K}`]?: CustomEventListener<CustomEventValue<T[K]>, T>;
|
|
181
|
+
} & {
|
|
182
|
+
[key in `$${string}`]: EffectCallback<T>;
|
|
183
|
+
}>;
|
|
184
|
+
export declare const isComponentInitConfig: (item: any) => item is ComponentInitConfig<any>;
|
|
185
|
+
export interface ContextEvent<T> extends CustomEvent {
|
|
186
|
+
detail: {
|
|
187
|
+
context: string;
|
|
188
|
+
callback: (value: T) => void;
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
export declare const isComponentConfig: <T extends ExtraHTMLElement>(item: any) => item is ComponentConfig<T>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const checkCall: (ctx: HTMLElement, fn?: (...args: any[]) => any, ...args: any[]) => void;
|
|
2
|
+
export declare const projectLog: (...values: any[]) => void;
|
|
3
|
+
export declare const camelToKebab: (v: string) => string;
|
|
4
|
+
export declare const kebabToCamel: (v: string) => string;
|
|
5
|
+
export declare const colorLog: (message: string, ...args: any[]) => void;
|
|
6
|
+
export declare const enableLogs: () => void;
|
|
7
|
+
export declare const disableLogs: () => void;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { BaseElementConstructor } from '../html-elements';
|
|
2
|
+
type EventConfig = Pick<CustomEventInit, "bubbles" | "composed">;
|
|
3
|
+
export declare const property: () => (<T extends HTMLElement, K extends keyof T>(target: T, propName: K) => void);
|
|
4
|
+
export declare const event: (config?: EventConfig) => (<T extends HTMLElement, K extends keyof T>(target: T, propName: K) => void);
|
|
5
|
+
export declare const component: (selector: `${string}-${string}`, isClosed?: boolean) => (<T extends BaseElementConstructor>(target: T) => T);
|
|
6
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './html-property';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ComponentConfig, ComponentContent, RootStyle, SlotContext, SlotTemplate } from '../../types';
|
|
2
|
+
import { ReactiveSignal } from '../signal';
|
|
3
|
+
export declare abstract class BaseElement extends HTMLElement {
|
|
4
|
+
static observedAttributes: string[];
|
|
5
|
+
static renderTagName: string;
|
|
6
|
+
static styles?: string | string[];
|
|
7
|
+
isSlotLazyLoading: boolean;
|
|
8
|
+
slotTemplate?: SlotTemplate;
|
|
9
|
+
slotContext?: SlotContext;
|
|
10
|
+
rootStyle?: RootStyle;
|
|
11
|
+
modelValue?: ReactiveSignal<unknown>;
|
|
12
|
+
providers?: Record<string, ReactiveSignal<any>>;
|
|
13
|
+
appendAllSlotContent?: () => ComponentConfig<any>;
|
|
14
|
+
allSlotContent?: ComponentContent[];
|
|
15
|
+
slotContent: Record<string, ComponentConfig<any>[]>;
|
|
16
|
+
htmlSlotContent: Record<string, HTMLElement[]>;
|
|
17
|
+
shadow: ShadowRoot;
|
|
18
|
+
appendChild<T extends Node>(node: T, isLazy?: boolean): T;
|
|
19
|
+
constructor(isClosed?: boolean);
|
|
20
|
+
appendSlotContent(): void;
|
|
21
|
+
injects: Record<string, ReactiveSignal<any>>;
|
|
22
|
+
inject<T>(contextKey: string): ReactiveSignal<T | null>;
|
|
23
|
+
checkInjects(): void;
|
|
24
|
+
abstract render(): ComponentConfig<any>;
|
|
25
|
+
setReactiveValue<ModelType = unknown>(value: ReactiveSignal<ModelType>): void;
|
|
26
|
+
}
|
|
27
|
+
export interface BaseElementConstructor {
|
|
28
|
+
new (...params: any[]): BaseElement;
|
|
29
|
+
renderTagName: string;
|
|
30
|
+
styles?: string | string[];
|
|
31
|
+
observedAttributes: string[];
|
|
32
|
+
}
|
|
33
|
+
export declare const isBaseElement: (item: any) => item is BaseElement;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ChildrenContent, ComponentConfig, ComponentInitConfig, CustomComponentConfig, EventEmitter, SlotTemplate } from '../../types/element';
|
|
2
|
+
import { BaseElement, BaseElementConstructor } from './base-element';
|
|
3
|
+
export declare const createCustomElement: <T extends BaseElement>(tagName: string, config?: ComponentInitConfig<T>) => CustomComponentConfig<T>;
|
|
4
|
+
export declare const createCustomEl: <T extends BaseElement>(tagName: string, config?: ComponentInitConfig<T>) => (...content: ChildrenContent<T>[]) => CustomComponentConfig<T>;
|
|
5
|
+
export declare const createCustom: <T extends BaseElementConstructor, K extends string | ComponentInitConfig<InstanceType<T>>>(srcComp: T, classList?: K, config?: K extends string ? ComponentInitConfig<InstanceType<T>> : never) => (...content: ChildrenContent<InstanceType<T>>[]) => CustomComponentConfig<InstanceType<T>>;
|
|
6
|
+
export declare const customEl: <T extends BaseElementConstructor, K extends string | ComponentInitConfig<InstanceType<T>>>(srcComp: T, classList?: K, config?: K extends string ? ComponentInitConfig<InstanceType<T>> : never) => ((...content: ChildrenContent<InstanceType<T>>[]) => CustomComponentConfig<InstanceType<T>>) & {
|
|
7
|
+
setReactiveValue<ModelType = unknown>(value: import('..').ReactiveSignal<ModelType>): CustomComponentConfig<InstanceType<T>>;
|
|
8
|
+
setSlotTemplate<K_1 extends keyof InstanceType<T>["slotTemplate"] & string>(templateConfig: { [slotKey in K_1]: InstanceType<T>["slotTemplate"][slotKey]; }): CustomComponentConfig<InstanceType<T>>;
|
|
9
|
+
} & ComponentConfig<InstanceType<T>>;
|
|
10
|
+
export declare const newEventEmitter: <T = void>() => EventEmitter<T>;
|
|
11
|
+
export declare const defineSlotTemplate: <S extends SlotTemplate>() => Partial<S>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ReactiveSignal } from '../signal';
|
|
2
|
+
import { ComponentConfig, ComponentContent, ComponentInitConfig, ConfigAttribute, ConfigChildren, ConfigClassList, ConfigCustomAttribute, ConfigEffect, ConfigListeners, ConfigReactiveClassList, ConfigStyle, CustomComponentConfig, ExtraHTMLElement } from '../../types/element';
|
|
3
|
+
export declare const eventEmitter: () => () => void;
|
|
4
|
+
export declare const addHtmlContent: <T extends HTMLElement = HTMLElement>(htmlElement: T, content: string | unknown) => T;
|
|
5
|
+
export declare const setHtmlContent: <T extends HTMLElement = HTMLElement>(htmlElement: T, content: string | unknown) => T;
|
|
6
|
+
export declare const htmlEffectWrapper: (content: ReactiveSignal<unknown>) => HTMLDivElement;
|
|
7
|
+
export declare const elementHelpers: <T extends ExtraHTMLElement>(wrapper: T) => ComponentConfig<T>;
|
|
8
|
+
export declare const classList: (strings: TemplateStringsArray, ...args: (string | (() => string))[]) => {
|
|
9
|
+
classList: (string | (() => string))[];
|
|
10
|
+
};
|
|
11
|
+
export declare const cls: (strings: TemplateStringsArray, ...values: (string | (() => string))[]) => ReturnType<typeof classList>;
|
|
12
|
+
export declare const initComponent: <T extends ExtraHTMLElement, K extends ComponentConfig<T> | CustomComponentConfig<T>>(component: K, config?: ComponentInitConfig<T>) => K;
|
|
13
|
+
export declare const setListeners: <T extends ExtraHTMLElement>(comp: ComponentConfig<T>, listeners?: ConfigListeners<T>) => void;
|
|
14
|
+
export declare const setEffects: <T extends ExtraHTMLElement>(comp: ComponentConfig<T>, effects?: ConfigEffect<T>) => void | undefined;
|
|
15
|
+
export declare const setChildren: <T extends ExtraHTMLElement>(comp: ComponentConfig<T>, children?: ConfigChildren) => ComponentConfig<T>;
|
|
16
|
+
export declare const addCustomAttributes: <T extends ExtraHTMLElement>(comp: ComponentConfig<T>, attributeList?: ConfigCustomAttribute) => void;
|
|
17
|
+
export declare const addClassList: <T extends ExtraHTMLElement>(comp: ComponentConfig<T>, classList?: ConfigClassList) => ComponentConfig<T>;
|
|
18
|
+
export declare const addReactiveClassList: <T extends ExtraHTMLElement>(comp: ComponentConfig<T>, classList?: ConfigReactiveClassList) => ComponentConfig<T>;
|
|
19
|
+
export declare const addStyleList: <T extends ExtraHTMLElement>(comp: ComponentConfig<T>, styleList?: ConfigStyle) => ComponentConfig<T>;
|
|
20
|
+
export declare const addAttributeList: <T extends ExtraHTMLElement>(comp: ComponentConfig<T>, attributeList?: ConfigAttribute<T>) => void;
|
|
21
|
+
export declare const appendContentItem: <T extends ExtraHTMLElement, Component extends ComponentConfig<T> | CustomComponentConfig<T>>(comp: Component, ...items: ComponentContent[]) => Component;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { ChildrenContent, CompFuncContent, ComponentConfig, ComponentInitConfig, CustomComponentConfig, ExtraHTMLElement, HtmlTagName } from '../../types/element';
|
|
2
|
+
import { ReactiveSignal } from '../signal';
|
|
3
|
+
export declare const createElement: <K extends HtmlTagName>(tagName: K, config?: ComponentInitConfig<HTMLElementTagNameMap[K]>) => ComponentConfig<HTMLElementTagNameMap[K]>;
|
|
4
|
+
export declare const createEl: <K extends HtmlTagName>(tagName: `${K} ${string}` | K, config?: ComponentInitConfig<HTMLElementTagNameMap[K]>) => (...content: ChildrenContent<HTMLElementTagNameMap[K]>[]) => ComponentConfig<HTMLElementTagNameMap[K]>;
|
|
5
|
+
export declare const el: <K extends HtmlTagName>(tagName: `${K} ${string}` | K, config?: ComponentInitConfig<HTMLElementTagNameMap[K]>) => ((...content: ChildrenContent<HTMLElementTagNameMap[K]>[]) => ComponentConfig<HTMLElementTagNameMap[K]>) & ComponentConfig<HTMLElementTagNameMap[K]>;
|
|
6
|
+
/**
|
|
7
|
+
* Создает реактивный контейнер-элемент, который автоматически обновляет свое содержимое на основе функции обратного вызова.
|
|
8
|
+
* Контейнер будет перерендериваться при изменении зависимостей функции обратного вызова.
|
|
9
|
+
*/
|
|
10
|
+
export declare const getSignalContent: (cb: CompFuncContent) => ComponentConfig<HTMLDivElement>;
|
|
11
|
+
/**
|
|
12
|
+
* Создает реактивный список элементов, который автоматически обновляется при изменении массива данных.
|
|
13
|
+
* Поддерживает эффективное обновление DOM с минимальными перерисовками.
|
|
14
|
+
*
|
|
15
|
+
* @template I - Тип элементов массива (должен быть объектом)
|
|
16
|
+
* @template K - Ключ для уникальной идентификации элементов
|
|
17
|
+
* @param items - Реактивный сигнал с массивом данных
|
|
18
|
+
* @param keyFn - Функция для получения уникального ключа элемента
|
|
19
|
+
* @param cb - Функция рендеринга элемента, принимающая элемент, индекс и весь массив
|
|
20
|
+
* @returns Контейнер с реактивным списком элементов
|
|
21
|
+
*/
|
|
22
|
+
export declare const getList: <I extends Record<string, any>, K extends keyof I>(items: ReactiveSignal<I[]>, keyFn: (item: I) => I[K] | string, cb: (item: I, index: number, items: I[]) => ComponentConfig<any>) => ComponentConfig<HTMLDivElement>;
|
|
23
|
+
export declare const oldGetList: <I extends Record<string, any>, K extends keyof I>(items: ReactiveSignal<I[]>, keyFn: (item: I) => I[K] | string, cb: (item: I, index: number, items: I[]) => ComponentConfig<any>) => ComponentConfig<HTMLDivElement>;
|
|
24
|
+
/**
|
|
25
|
+
* Создает реактивный компонент, который автоматически обновляется при изменении его зависимостей.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* // Создание компонента, который обновляется при изменении сигнала
|
|
29
|
+
* const count = signal(0);
|
|
30
|
+
* const counterComponent = signalComponent(() =>
|
|
31
|
+
* el('div', { text: () => `Счетчик: ${count()}` })
|
|
32
|
+
* );
|
|
33
|
+
*
|
|
34
|
+
* // Позже, когда значение count изменится, компонент автоматически обновится
|
|
35
|
+
* count(1); // Компонент перерендерится с текстом "Счетчик: 1"
|
|
36
|
+
*/
|
|
37
|
+
export declare const signalComponent: <T extends ExtraHTMLElement, R extends ComponentConfig<T> | CustomComponentConfig<T> | Array<ComponentConfig<T> | CustomComponentConfig<T>>>(cb: () => R) => R;
|
|
38
|
+
export declare const isSlotTemplate: (item: Element) => item is ExtraHTMLElement;
|
|
39
|
+
export declare const unsafeHtml: (html: string | ReactiveSignal<string>) => ComponentConfig<HTMLDivElement>;
|
|
40
|
+
export declare const renderIf: (condition: boolean, content: CompFuncContent, elseContent?: CompFuncContent) => ComponentConfig<HTMLDivElement>;
|
|
41
|
+
export declare const rxRenderIf: (condition: ReactiveSignal<any> | (() => boolean), content: CompFuncContent, elseContent?: CompFuncContent) => ComponentConfig<HTMLDivElement>;
|
|
42
|
+
/**
|
|
43
|
+
* Условный рендеринг компонентов на основе условия.
|
|
44
|
+
* Поддерживает как статические, так и реактивные условия.
|
|
45
|
+
*
|
|
46
|
+
* @template T1 - Тип HTML-элемента для основного контента
|
|
47
|
+
* @template T2 - Тип HTML-элемента для альтернативного контента
|
|
48
|
+
*
|
|
49
|
+
* @param {boolean | ReactiveSignal<boolean> | (() => boolean)} condition - Условие для рендеринга.
|
|
50
|
+
* Может быть статическим boolean, реактивным сигналом или функцией, возвращающей boolean.
|
|
51
|
+
* @param {() => ComponentConfig<T1>} content - Функция, возвращающая компонент для отображения при истинном условии
|
|
52
|
+
* @param {() => ComponentConfig<T2>} [elseContent] - Опциональная функция, возвращающая компонент для отображения при ложном условии
|
|
53
|
+
*
|
|
54
|
+
* @returns {ComponentConfig<T1> | ComponentConfig<T2> | ''} Компонент, соответствующий условию, или пустая строка
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* // Статическое условие
|
|
58
|
+
* const isVisible = true;
|
|
59
|
+
* const component = when(
|
|
60
|
+
* isVisible,
|
|
61
|
+
* () => el('div', { text: 'Видимый контент' }),
|
|
62
|
+
* () => el('div', { text: 'Скрытый контент' })
|
|
63
|
+
* );
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* // Реактивное условие с сигналом
|
|
67
|
+
* const isActive = signal(false);
|
|
68
|
+
* const component = when(
|
|
69
|
+
* isActive,
|
|
70
|
+
* () => el('div', { text: 'Активный' }),
|
|
71
|
+
* () => el('div', { text: 'Неактивный' })
|
|
72
|
+
* );
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* // Условный рендеринг без elseContent
|
|
76
|
+
* const hasData = signal(true);
|
|
77
|
+
* const component = when(
|
|
78
|
+
* hasData,
|
|
79
|
+
* () => el('div', { text: 'Данные загружены' })
|
|
80
|
+
* );
|
|
81
|
+
*/
|
|
82
|
+
export declare const when: (condition: boolean | ReactiveSignal<any> | (() => boolean), content: CompFuncContent, elseContent?: CompFuncContent) => ComponentConfig<HTMLDivElement>;
|
|
83
|
+
export declare const showIf: (condition: boolean | ReactiveSignal<any> | (() => boolean), template: CompFuncContent) => ComponentConfig<HTMLDivElement>;
|
|
84
|
+
export declare const show: (condition: boolean | ReactiveSignal<any> | (() => boolean), template: CompFuncContent, elseTemplate?: CompFuncContent) => ComponentConfig<HTMLDivElement>;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { ChildrenContent, ComponentInitConfig } from '../../types';
|
|
2
|
+
import { BaseElementConstructor } from '../html-elements';
|
|
3
|
+
export declare const useCustomComponent: <B extends BaseElementConstructor>(comp: B, selector?: `${string}-${string}`, isClosed?: boolean) => (config?: ComponentInitConfig<InstanceType<B>> | ChildrenContent<InstanceType<B>>, ...content: ChildrenContent<InstanceType<B>>[]) => import('../../types').CustomComponentConfig<InstanceType<B>>;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { ChildrenContent, ComponentInitConfig, HtmlTagName } from '../../types/element';
|
|
2
|
+
import { el } from '../html-elements/element';
|
|
3
|
+
type HtmlFactories = {
|
|
4
|
+
[K in HtmlTagName]: (config?: ComponentInitConfig<HTMLElementTagNameMap[K]> | ChildrenContent<HTMLElementTagNameMap[K]>, ...content: ChildrenContent<HTMLElementTagNameMap[K]>[]) => ReturnType<ReturnType<typeof el<K>>>;
|
|
5
|
+
};
|
|
6
|
+
declare const htmlFactories: HtmlFactories;
|
|
7
|
+
export declare const div: (config?: ChildrenContent<HTMLDivElement> | ComponentInitConfig<HTMLDivElement> | undefined, ...content: ChildrenContent<HTMLDivElement>[]) => import('../..').ComponentConfig<HTMLDivElement>;
|
|
8
|
+
export declare const span: (config?: ChildrenContent<HTMLSpanElement> | ComponentInitConfig<HTMLSpanElement> | undefined, ...content: ChildrenContent<HTMLSpanElement>[]) => import('../..').ComponentConfig<HTMLSpanElement>;
|
|
9
|
+
export declare const section: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
|
|
10
|
+
export declare const input: (config?: ChildrenContent<HTMLInputElement> | ComponentInitConfig<HTMLInputElement> | undefined, ...content: ChildrenContent<HTMLInputElement>[]) => import('../..').ComponentConfig<HTMLInputElement>;
|
|
11
|
+
export declare const button: (config?: ChildrenContent<HTMLButtonElement> | ComponentInitConfig<HTMLButtonElement> | undefined, ...content: ChildrenContent<HTMLButtonElement>[]) => import('../..').ComponentConfig<HTMLButtonElement>;
|
|
12
|
+
export declare const table: (config?: ChildrenContent<HTMLTableElement> | ComponentInitConfig<HTMLTableElement> | undefined, ...content: ChildrenContent<HTMLTableElement>[]) => import('../..').ComponentConfig<HTMLTableElement>;
|
|
13
|
+
export declare const tr: (config?: ChildrenContent<HTMLTableRowElement> | ComponentInitConfig<HTMLTableRowElement> | undefined, ...content: ChildrenContent<HTMLTableRowElement>[]) => import('../..').ComponentConfig<HTMLTableRowElement>;
|
|
14
|
+
export declare const td: (config?: ChildrenContent<HTMLTableCellElement> | ComponentInitConfig<HTMLTableCellElement> | undefined, ...content: ChildrenContent<HTMLTableCellElement>[]) => import('../..').ComponentConfig<HTMLTableCellElement>;
|
|
15
|
+
export declare const th: (config?: ChildrenContent<HTMLTableCellElement> | ComponentInitConfig<HTMLTableCellElement> | undefined, ...content: ChildrenContent<HTMLTableCellElement>[]) => import('../..').ComponentConfig<HTMLTableCellElement>;
|
|
16
|
+
export declare const ul: (config?: ChildrenContent<HTMLUListElement> | ComponentInitConfig<HTMLUListElement> | undefined, ...content: ChildrenContent<HTMLUListElement>[]) => import('../..').ComponentConfig<HTMLUListElement>;
|
|
17
|
+
export declare const li: (config?: ChildrenContent<HTMLLIElement> | ComponentInitConfig<HTMLLIElement> | undefined, ...content: ChildrenContent<HTMLLIElement>[]) => import('../..').ComponentConfig<HTMLLIElement>;
|
|
18
|
+
export declare const ol: (config?: ChildrenContent<HTMLOListElement> | ComponentInitConfig<HTMLOListElement> | undefined, ...content: ChildrenContent<HTMLOListElement>[]) => import('../..').ComponentConfig<HTMLOListElement>;
|
|
19
|
+
export declare const form: (config?: ChildrenContent<HTMLFormElement> | ComponentInitConfig<HTMLFormElement> | undefined, ...content: ChildrenContent<HTMLFormElement>[]) => import('../..').ComponentConfig<HTMLFormElement>;
|
|
20
|
+
export declare const label: (config?: ChildrenContent<HTMLLabelElement> | ComponentInitConfig<HTMLLabelElement> | undefined, ...content: ChildrenContent<HTMLLabelElement>[]) => import('../..').ComponentConfig<HTMLLabelElement>;
|
|
21
|
+
export declare const select: (config?: ChildrenContent<HTMLSelectElement> | ComponentInitConfig<HTMLSelectElement> | undefined, ...content: ChildrenContent<HTMLSelectElement>[]) => import('../..').ComponentConfig<HTMLSelectElement>;
|
|
22
|
+
export declare const option: (config?: ChildrenContent<HTMLOptionElement> | ComponentInitConfig<HTMLOptionElement> | undefined, ...content: ChildrenContent<HTMLOptionElement>[]) => import('../..').ComponentConfig<HTMLOptionElement>;
|
|
23
|
+
export declare const textarea: (config?: ChildrenContent<HTMLTextAreaElement> | ComponentInitConfig<HTMLTextAreaElement> | undefined, ...content: ChildrenContent<HTMLTextAreaElement>[]) => import('../..').ComponentConfig<HTMLTextAreaElement>;
|
|
24
|
+
export declare const img: (config?: ChildrenContent<HTMLImageElement> | ComponentInitConfig<HTMLImageElement> | undefined, ...content: ChildrenContent<HTMLImageElement>[]) => import('../..').ComponentConfig<HTMLImageElement>;
|
|
25
|
+
export declare const a: (config?: ChildrenContent<HTMLAnchorElement> | ComponentInitConfig<HTMLAnchorElement> | undefined, ...content: ChildrenContent<HTMLAnchorElement>[]) => import('../..').ComponentConfig<HTMLAnchorElement>;
|
|
26
|
+
export declare const p: (config?: ChildrenContent<HTMLParagraphElement> | ComponentInitConfig<HTMLParagraphElement> | undefined, ...content: ChildrenContent<HTMLParagraphElement>[]) => import('../..').ComponentConfig<HTMLParagraphElement>;
|
|
27
|
+
export declare const h1: (config?: ChildrenContent<HTMLHeadingElement> | ComponentInitConfig<HTMLHeadingElement> | undefined, ...content: ChildrenContent<HTMLHeadingElement>[]) => import('../..').ComponentConfig<HTMLHeadingElement>;
|
|
28
|
+
export declare const h2: (config?: ChildrenContent<HTMLHeadingElement> | ComponentInitConfig<HTMLHeadingElement> | undefined, ...content: ChildrenContent<HTMLHeadingElement>[]) => import('../..').ComponentConfig<HTMLHeadingElement>;
|
|
29
|
+
export declare const h3: (config?: ChildrenContent<HTMLHeadingElement> | ComponentInitConfig<HTMLHeadingElement> | undefined, ...content: ChildrenContent<HTMLHeadingElement>[]) => import('../..').ComponentConfig<HTMLHeadingElement>;
|
|
30
|
+
export declare const h4: (config?: ChildrenContent<HTMLHeadingElement> | ComponentInitConfig<HTMLHeadingElement> | undefined, ...content: ChildrenContent<HTMLHeadingElement>[]) => import('../..').ComponentConfig<HTMLHeadingElement>;
|
|
31
|
+
export declare const h5: (config?: ChildrenContent<HTMLHeadingElement> | ComponentInitConfig<HTMLHeadingElement> | undefined, ...content: ChildrenContent<HTMLHeadingElement>[]) => import('../..').ComponentConfig<HTMLHeadingElement>;
|
|
32
|
+
export declare const h6: (config?: ChildrenContent<HTMLHeadingElement> | ComponentInitConfig<HTMLHeadingElement> | undefined, ...content: ChildrenContent<HTMLHeadingElement>[]) => import('../..').ComponentConfig<HTMLHeadingElement>;
|
|
33
|
+
export declare const br: (config?: ChildrenContent<HTMLBRElement> | ComponentInitConfig<HTMLBRElement> | undefined, ...content: ChildrenContent<HTMLBRElement>[]) => import('../..').ComponentConfig<HTMLBRElement>;
|
|
34
|
+
export declare const hr: (config?: ChildrenContent<HTMLHRElement> | ComponentInitConfig<HTMLHRElement> | undefined, ...content: ChildrenContent<HTMLHRElement>[]) => import('../..').ComponentConfig<HTMLHRElement>;
|
|
35
|
+
export declare const pre: (config?: ChildrenContent<HTMLPreElement> | ComponentInitConfig<HTMLPreElement> | undefined, ...content: ChildrenContent<HTMLPreElement>[]) => import('../..').ComponentConfig<HTMLPreElement>;
|
|
36
|
+
export declare const code: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
|
|
37
|
+
export declare const nav: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
|
|
38
|
+
export declare const header: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
|
|
39
|
+
export declare const footer: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
|
|
40
|
+
export declare const main: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
|
|
41
|
+
export declare const aside: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
|
|
42
|
+
export declare const article: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
|
|
43
|
+
export declare const figure: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
|
|
44
|
+
export declare const figcaption: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
|
|
45
|
+
export declare const blockquote: (config?: ChildrenContent<HTMLQuoteElement> | ComponentInitConfig<HTMLQuoteElement> | undefined, ...content: ChildrenContent<HTMLQuoteElement>[]) => import('../..').ComponentConfig<HTMLQuoteElement>;
|
|
46
|
+
export declare const cite: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
|
|
47
|
+
export declare const small: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
|
|
48
|
+
export declare const strong: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
|
|
49
|
+
export declare const em: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
|
|
50
|
+
export declare const b: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
|
|
51
|
+
export declare const i: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
|
|
52
|
+
export declare const u: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
|
|
53
|
+
export declare const s: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
|
|
54
|
+
export declare const sub: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
|
|
55
|
+
export declare const sup: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
|
|
56
|
+
export declare const mark: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
|
|
57
|
+
export declare const del: (config?: ChildrenContent<HTMLModElement> | ComponentInitConfig<HTMLModElement> | undefined, ...content: ChildrenContent<HTMLModElement>[]) => import('../..').ComponentConfig<HTMLModElement>;
|
|
58
|
+
export declare const ins: (config?: ChildrenContent<HTMLModElement> | ComponentInitConfig<HTMLModElement> | undefined, ...content: ChildrenContent<HTMLModElement>[]) => import('../..').ComponentConfig<HTMLModElement>;
|
|
59
|
+
export declare const details: (config?: ChildrenContent<HTMLDetailsElement> | ComponentInitConfig<HTMLDetailsElement> | undefined, ...content: ChildrenContent<HTMLDetailsElement>[]) => import('../..').ComponentConfig<HTMLDetailsElement>;
|
|
60
|
+
export declare const summary: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
|
|
61
|
+
export declare const progress: (config?: ChildrenContent<HTMLProgressElement> | ComponentInitConfig<HTMLProgressElement> | undefined, ...content: ChildrenContent<HTMLProgressElement>[]) => import('../..').ComponentConfig<HTMLProgressElement>;
|
|
62
|
+
export declare const meter: (config?: ChildrenContent<HTMLMeterElement> | ComponentInitConfig<HTMLMeterElement> | undefined, ...content: ChildrenContent<HTMLMeterElement>[]) => import('../..').ComponentConfig<HTMLMeterElement>;
|
|
63
|
+
export declare const audio: (config?: ChildrenContent<HTMLAudioElement> | ComponentInitConfig<HTMLAudioElement> | undefined, ...content: ChildrenContent<HTMLAudioElement>[]) => import('../..').ComponentConfig<HTMLAudioElement>;
|
|
64
|
+
export declare const video: (config?: ChildrenContent<HTMLVideoElement> | ComponentInitConfig<HTMLVideoElement> | undefined, ...content: ChildrenContent<HTMLVideoElement>[]) => import('../..').ComponentConfig<HTMLVideoElement>;
|
|
65
|
+
export declare const canvas: (config?: ChildrenContent<HTMLCanvasElement> | ComponentInitConfig<HTMLCanvasElement> | undefined, ...content: ChildrenContent<HTMLCanvasElement>[]) => import('../..').ComponentConfig<HTMLCanvasElement>;
|
|
66
|
+
export declare const slot: (config?: ChildrenContent<HTMLSlotElement> | ComponentInitConfig<HTMLSlotElement> | undefined, ...content: ChildrenContent<HTMLSlotElement>[]) => import('../..').ComponentConfig<HTMLSlotElement>;
|
|
67
|
+
export default htmlFactories;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ComponentConfig, ConfigClassList, ConfigReactiveClassList } from '../../types/element';
|
|
2
|
+
export declare const createComponent: <Props, R extends ComponentConfig<HTMLElement>>(cb: (props: Props) => R) => (props: Props & {
|
|
3
|
+
classList?: ConfigClassList;
|
|
4
|
+
reactiveClassList?: ConfigReactiveClassList;
|
|
5
|
+
}) => ReturnType<typeof cb>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ComponentConfig } from '../../types';
|
|
2
|
+
type RouterConfig = {
|
|
3
|
+
path: string;
|
|
4
|
+
comp: () => ComponentConfig<any>;
|
|
5
|
+
}[];
|
|
6
|
+
export declare const routes: RouterConfig;
|
|
7
|
+
export declare const linkTo: (path: string, comp: ComponentConfig<any>) => void;
|
|
8
|
+
export declare const comparePaths: (path1: string, path2: string) => boolean;
|
|
9
|
+
export declare const routerOutlet: (routes: RouterConfig) => ComponentConfig<HTMLDivElement>;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { IsPromise, IsPromiseFunction, UnwrapPromise } from './helpers.types';
|
|
2
|
+
import { CompareFn, ReactiveSignal, UnwrapSignal } from './signal.type';
|
|
3
|
+
export declare function signal<T = unknown>(initValue: T, signalCompareFn?: CompareFn<T>): ReactiveSignal<T>;
|
|
4
|
+
export declare function effect(cb: () => void): void;
|
|
5
|
+
export declare const isReactiveSignal: <R extends ReactiveSignal<any>>(v: R | any) => v is R;
|
|
6
|
+
/**
|
|
7
|
+
* Reactive String (rs). Создаёт зависимый string сигнал от источника.
|
|
8
|
+
* @param strings
|
|
9
|
+
* @param values
|
|
10
|
+
* @returns
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* const source: ReactiveSignal<string> = signal('test')
|
|
14
|
+
* const dependent: ReactiveSignal<string> = rs`abc-${source}`
|
|
15
|
+
* // log: "abc-test"
|
|
16
|
+
*/
|
|
17
|
+
export declare function rs<T extends ReactiveSignal<any> | any>(strings: TemplateStringsArray, ...values: T[]): ReactiveSignal<string>;
|
|
18
|
+
export declare function createSignal<T extends Promise<any> | (() => any), I extends UnwrapPromise<T extends () => infer R ? UnwrapSignal<R> : T> | undefined>(cb: T, initializeValue?: I): I extends undefined ? (IsPromise<T> extends true ? ReactiveSignal<UnwrapPromise<T> | null> : (IsPromiseFunction<T> extends true ? ReactiveSignal<UnwrapPromise<T extends () => infer R ? R : never> | null> : ReactiveSignal<UnwrapPromise<T extends () => infer R ? UnwrapSignal<R> : never>>)) : ReactiveSignal<UnwrapPromise<T extends () => infer R ? UnwrapSignal<R> : T>>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { UnwrapPromise } from './helpers.types';
|
|
2
|
+
export interface SignalUpdateFunc<T> {
|
|
3
|
+
(v: Readonly<T>): T;
|
|
4
|
+
}
|
|
5
|
+
export type CompareFn<T> = (oldValue: T, newValue: T) => boolean;
|
|
6
|
+
export interface ReactiveSignal<T> {
|
|
7
|
+
(): T;
|
|
8
|
+
oldValue: Readonly<T>;
|
|
9
|
+
initValue: Readonly<T>;
|
|
10
|
+
set(value: T): void;
|
|
11
|
+
forceSet(value: T): void;
|
|
12
|
+
setCompareFn(compareFn: CompareFn<T>): ReactiveSignal<T>;
|
|
13
|
+
update(cb: SignalUpdateFunc<T>): void;
|
|
14
|
+
clearSubscribers(): void;
|
|
15
|
+
peek(): Readonly<T>;
|
|
16
|
+
pipe<R>(fn: (sg: T) => R): ReactiveSignal<R extends Promise<any> ? UnwrapPromise<R> : UnwrapSignal<R>>;
|
|
17
|
+
}
|
|
18
|
+
export type UnwrapSignal<T> = T extends ReactiveSignal<infer U> ? U : T;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ReactiveSignal, UnwrapSignal } from './signal.type';
|
|
2
|
+
/**
|
|
3
|
+
* Универсальная функция для двустороннего связывания двух реактивных сигналов из rwc
|
|
4
|
+
* @param signalA Первый сигнал
|
|
5
|
+
* @param signalB Второй сигнал
|
|
6
|
+
*/
|
|
7
|
+
export declare function bindReactiveSignals<T>(signalA: ReactiveSignal<T>, signalB: ReactiveSignal<T>): void;
|
|
8
|
+
export declare function forkJoin<T extends readonly ReactiveSignal<unknown>[]>(...signals: T): ReactiveSignal<{
|
|
9
|
+
[K in keyof T]: UnwrapSignal<T[K]>;
|
|
10
|
+
}>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ChildrenContent } from '../../../shared/types';
|
|
2
|
+
import { BaseElement } from '../../../shared/utils/html-elements';
|
|
3
|
+
export declare class Button extends BaseElement {
|
|
4
|
+
static styles: string;
|
|
5
|
+
render(): import('../../../shared/types').ComponentConfig<HTMLButtonElement>;
|
|
6
|
+
}
|
|
7
|
+
export declare const ButtonComp: (config?: ChildrenContent<Button> | import('../../../shared/types').ComponentInitConfig<Button> | undefined, ...content: ChildrenContent<Button>[]) => import('../../../shared/types').CustomComponentConfig<Button>;
|
|
8
|
+
export declare const buttonCompTest: (...content: ChildrenContent<HTMLElement>[]) => import('../../../shared/types').ComponentConfig<HTMLButtonElement>;
|
|
9
|
+
export declare class ButtonTest extends BaseElement {
|
|
10
|
+
static styles: string;
|
|
11
|
+
render(): import('../../../shared/types').ComponentConfig<HTMLDivElement>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BaseElement } from '../../shared/utils';
|
|
2
|
+
declare class Counter extends BaseElement {
|
|
3
|
+
countState: import('../../shared/utils').ReactiveSignal<number>;
|
|
4
|
+
countChange: import('../../shared').EventEmitter<number>;
|
|
5
|
+
testProperty: import('../../shared/utils').ReactiveSignal<number>;
|
|
6
|
+
position: import('../../shared/utils').ReactiveSignal<"bottom" | "top">;
|
|
7
|
+
rootStyle: Promise<typeof import("*?inline")>;
|
|
8
|
+
render(): import('../../shared').ComponentConfig<HTMLDivElement>;
|
|
9
|
+
}
|
|
10
|
+
export declare const CounterComponent: (config?: import('../../shared').ChildrenContent<Counter> | import('../../shared').ComponentInitConfig<Counter> | undefined, ...content: import('../../shared').ChildrenContent<Counter>[]) => import('../../shared').CustomComponentConfig<Counter>;
|
|
11
|
+
declare class TestCounter extends BaseElement {
|
|
12
|
+
render(): import('../../shared').ComponentConfig<HTMLDivElement>;
|
|
13
|
+
}
|
|
14
|
+
export declare const TestComponent: (config?: import('../../shared').ChildrenContent<TestCounter> | import('../../shared').ComponentInitConfig<TestCounter> | undefined, ...content: import('../../shared').ChildrenContent<TestCounter>[]) => import('../../shared').CustomComponentConfig<TestCounter>;
|
|
15
|
+
export {};
|