@fluixi/web-components 0.0.0-stage → 1.0.0-alpha.100
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +31 -2
- package/dist/context.cjs +162 -0
- package/dist/context.d.ts +65 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +192 -0
- package/dist/context.mjs +141 -0
- package/dist/element.cjs +847 -0
- package/dist/element.d.ts +213 -0
- package/dist/element.d.ts.map +1 -0
- package/dist/element.js +681 -0
- package/dist/element.mjs +835 -0
- package/dist/events.cjs +35 -0
- package/dist/events.d.ts +24 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +20 -0
- package/dist/events.mjs +14 -0
- package/dist/focus.cjs +156 -0
- package/dist/focus.d.ts +34 -0
- package/dist/focus.d.ts.map +1 -0
- package/dist/focus.js +185 -0
- package/dist/focus.mjs +135 -0
- package/dist/form.cjs +145 -0
- package/dist/form.d.ts +33 -0
- package/dist/form.d.ts.map +1 -0
- package/dist/form.js +113 -0
- package/dist/form.mjs +125 -0
- package/dist/index.cjs +1202 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.mjs +1188 -0
- package/dist/props.cjs +114 -0
- package/dist/props.d.ts +93 -0
- package/dist/props.d.ts.map +1 -0
- package/dist/props.js +99 -0
- package/dist/props.mjs +93 -0
- package/dist/registry.cjs +77 -0
- package/dist/registry.d.ts +26 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +91 -0
- package/dist/registry.mjs +56 -0
- package/dist/styles.cjs +59 -0
- package/dist/styles.d.ts +17 -0
- package/dist/styles.d.ts.map +1 -0
- package/dist/styles.js +53 -0
- package/dist/styles.mjs +38 -0
- package/dist/targets.cjs +42 -0
- package/dist/targets.d.ts +26 -0
- package/dist/targets.d.ts.map +1 -0
- package/dist/targets.js +35 -0
- package/dist/targets.mjs +21 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -0
- package/dist/types.cjs +18 -0
- package/dist/types.d.ts +78 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +1 -0
- package/dist/types.mjs +0 -0
- package/package.json +53 -3
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The custom element itself: lifecycle on Fluixi's existing ownership model.
|
|
3
|
+
*
|
|
4
|
+
* `HTMLReactiveElement` is a real class, authored the way the platform defines elements:
|
|
5
|
+
* `class X extends HTMLReactiveElement`, callbacks as methods, `customElements.define`.
|
|
6
|
+
* What it adds is the reactive part. Declared props are signals behind accessors, and the
|
|
7
|
+
* first connect runs `render()` once inside one `createRoot` scope; bindings update after
|
|
8
|
+
* that and `dispose` takes the whole subtree down.
|
|
9
|
+
*
|
|
10
|
+
* Visibility is deliberate. The platform callbacks are public because the browser calls
|
|
11
|
+
* them. `render`, `emit`, `targets`, `renderRoot`, `internals` and `authoredChildren` are
|
|
12
|
+
* protected: they are for the element's own code, not its consumers. The engine's state is
|
|
13
|
+
* in `#private` fields, private at runtime and not only to TypeScript.
|
|
14
|
+
*
|
|
15
|
+
* `insert` rather than `render`: `render` clears its container going in and again coming
|
|
16
|
+
* out (@fluixi/dom runtime.ts), which for a light-DOM element would delete the author's own
|
|
17
|
+
* children before the component ever saw them.
|
|
18
|
+
*/
|
|
19
|
+
import { type Accessor } from '@fluixi/reactive/signal';
|
|
20
|
+
import { type PropAccessors, type PropDeclaration } from './props.js';
|
|
21
|
+
import { type DefineOptions } from './registry.js';
|
|
22
|
+
import { type Dispatch, type DispatchInit } from './events.js';
|
|
23
|
+
import { type Targets } from './targets.js';
|
|
24
|
+
import { type ElementStyles } from './styles.js';
|
|
25
|
+
import { type ConsumeOptions, type ElementContext } from './context.js';
|
|
26
|
+
/** Each element class's own server render, so the copy of this package that defined it does the work. */
|
|
27
|
+
declare const RENDER_ON_SERVER: unique symbol;
|
|
28
|
+
/** The part of a @fluixi/dom server node the renderer uses. */
|
|
29
|
+
interface ServerNodeLike {
|
|
30
|
+
localName: string;
|
|
31
|
+
childNodes: unknown[];
|
|
32
|
+
getAttribute(name: string): string | null;
|
|
33
|
+
setAttribute(name: string, value: string): void;
|
|
34
|
+
removeChild(child: unknown): unknown;
|
|
35
|
+
}
|
|
36
|
+
import type { PropValues } from './types.js';
|
|
37
|
+
/**
|
|
38
|
+
* `true`, `'open'` or `'closed'` for a plain shadow root, or the options `attachShadow` takes:
|
|
39
|
+
* `{ mode: 'open', delegatesFocus: true }` makes focusing the host focus the first focusable
|
|
40
|
+
* thing inside, which is what a custom input wants.
|
|
41
|
+
*/
|
|
42
|
+
export type ShadowOption = boolean | 'open' | 'closed' | {
|
|
43
|
+
mode?: 'open' | 'closed';
|
|
44
|
+
delegatesFocus?: boolean;
|
|
45
|
+
slotAssignment?: 'named' | 'manual';
|
|
46
|
+
};
|
|
47
|
+
type Schema = Record<string, PropDeclaration<unknown>>;
|
|
48
|
+
/**
|
|
49
|
+
* `HTMLElement` in a browser. On a server there is none, and a module declaring
|
|
50
|
+
* `class X extends HTMLReactiveElement` is still imported by code that renders there, so
|
|
51
|
+
* the base is an inert stand-in: the class can be declared, nothing is ever defined.
|
|
52
|
+
*/
|
|
53
|
+
declare const BaseElement: typeof HTMLElement;
|
|
54
|
+
export declare class HTMLReactiveElement extends BaseElement {
|
|
55
|
+
#private;
|
|
56
|
+
/** The declared properties, and the attributes that mirror them. Inherited and merged. */
|
|
57
|
+
static props?: Schema;
|
|
58
|
+
/**
|
|
59
|
+
* `false` (the default) renders into the element itself. `'open'`, `'closed'`, `true` or an
|
|
60
|
+
* options object attach a shadow root, which is what native `<slot>` needs. Light DOM is the default: a
|
|
61
|
+
* component that inherits the page's styles is usually what an app wants, and it is the
|
|
62
|
+
* mode that survives a server render without declarative shadow DOM.
|
|
63
|
+
*/
|
|
64
|
+
static shadow?: ShadowOption;
|
|
65
|
+
/**
|
|
66
|
+
* Adopted by the shadow root, one parsed sheet shared by every instance. CSS text, a
|
|
67
|
+
* `CSSStyleSheet`, or a list: `[super.styles, '…']` keeps the parent's. A class meant to be
|
|
68
|
+
* extended declares it as `static styles: ElementStyles = …`, since a bare string narrows
|
|
69
|
+
* the type and a subclass's list no longer fits. Ignored in light DOM, which has no scope.
|
|
70
|
+
*/
|
|
71
|
+
static styles?: ElementStyles;
|
|
72
|
+
/**
|
|
73
|
+
* The attributes of every declared prop. A mixin in between that observes its own
|
|
74
|
+
* extends this with `super.observedAttributes`; a subclass need not touch it.
|
|
75
|
+
*/
|
|
76
|
+
static get observedAttributes(): string[];
|
|
77
|
+
constructor();
|
|
78
|
+
connectedCallback(): void;
|
|
79
|
+
disconnectedCallback(): void;
|
|
80
|
+
/** Another document, the same scope: nothing reactive depends on which document holds the node. */
|
|
81
|
+
adoptedCallback(): void;
|
|
82
|
+
attributeChangedCallback(name: string, previous: string | null, value: string | null): void;
|
|
83
|
+
/**
|
|
84
|
+
* What the element shows. Runs once, on the first connect, inside the element's reactive
|
|
85
|
+
* scope; bindings keep it current after that. It is never re-run, so read a prop inside a
|
|
86
|
+
* binding (`() => this.step`), not in the body, to follow it.
|
|
87
|
+
*/
|
|
88
|
+
protected render(): unknown;
|
|
89
|
+
/**
|
|
90
|
+
* Give `context` to the elements inside this one, and to `useContext` in the components it
|
|
91
|
+
* renders. A value or an accessor; subscribed consumers follow the accessor. Call in `render()`.
|
|
92
|
+
*/
|
|
93
|
+
protected provide<T>(context: ElementContext<T>, value: T | Accessor<T>): void;
|
|
94
|
+
/**
|
|
95
|
+
* The nearest value of `context` above this element, as an accessor: an element providing
|
|
96
|
+
* it, else the Fluixi app the element was rendered in, else the default. Call in `render()`.
|
|
97
|
+
*/
|
|
98
|
+
protected consume<T>(context: ElementContext<T>, options?: ConsumeOptions): Accessor<T>;
|
|
99
|
+
/**
|
|
100
|
+
* Dispatch a `CustomEvent`, bubbling and composed by default. False when cancelled.
|
|
101
|
+
*
|
|
102
|
+
* The name goes out lowercased: a JSX handler listens for the name after `on`, lowercased,
|
|
103
|
+
* so `emit('signOut')` reaches `onSignOut`, and a listener added by hand uses `signout`.
|
|
104
|
+
*/
|
|
105
|
+
protected emit<T>(type: string, detail?: T, init?: DispatchInit): boolean;
|
|
106
|
+
/** Elements inside this one, by `data-target`, scoped to its render root. */
|
|
107
|
+
protected get targets(): Targets;
|
|
108
|
+
/** Where `render()` output goes: the shadow root, or the element itself in light DOM. */
|
|
109
|
+
protected get renderRoot(): ShadowRoot | HTMLElement;
|
|
110
|
+
/**
|
|
111
|
+
* The children the author wrote between the tags, in light DOM. Empty under shadow DOM,
|
|
112
|
+
* where the browser projects them through `<slot>` and they were never the element's to place.
|
|
113
|
+
*/
|
|
114
|
+
protected get authoredChildren(): readonly ChildNode[];
|
|
115
|
+
/**
|
|
116
|
+
* The element's `ElementInternals`, attached on first use: ARIA defaults, custom states,
|
|
117
|
+
* and with `static formAssociated = true`, taking part in a `<form>`.
|
|
118
|
+
*/
|
|
119
|
+
protected get internals(): ElementInternals;
|
|
120
|
+
/**
|
|
121
|
+
* Render a light DOM element's content into its server node, under the page's owner so its
|
|
122
|
+
* context and resources are the page's. Props come from what @fluixi/dom recorded on the
|
|
123
|
+
* node; the ones with no attribute form ride along as JSON for the client. Shadow DOM
|
|
124
|
+
* elements are left to the client until declarative shadow roots are emitted.
|
|
125
|
+
*/
|
|
126
|
+
static [RENDER_ON_SERVER](this: typeof HTMLReactiveElement, node: ServerNodeLike): void;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* `HTMLReactiveElement` with the declared props typed on the instance:
|
|
130
|
+
* `class Counter extends typedElement(props)` gives `this.step` its type. Static props alone
|
|
131
|
+
* work at runtime; this is only the type.
|
|
132
|
+
*/
|
|
133
|
+
export declare function typedElement<S extends Schema>(props: S): TypedElementClass<S>;
|
|
134
|
+
/**
|
|
135
|
+
* What `typedElement` returns: the base class, with the props typed on the instance and on
|
|
136
|
+
* the static side, so a subclass can write `static props = { ...Parent.props, extra }`.
|
|
137
|
+
*/
|
|
138
|
+
export type TypedElementClass<S extends Schema> = (abstract new () => HTMLReactiveElement & PropValues<S>) & Omit<typeof HTMLReactiveElement, 'prototype' | 'props'> & {
|
|
139
|
+
props: S;
|
|
140
|
+
};
|
|
141
|
+
/**
|
|
142
|
+
* What a mixin extends: an element class, instance and statics. Constrain a mixin's base to it,
|
|
143
|
+
* `function Toggle<B extends ElementBase>(Base: B)`, and `super.observedAttributes` is typed.
|
|
144
|
+
*/
|
|
145
|
+
export type ElementBase = (abstract new (...args: any[]) => HTMLReactiveElement) & {
|
|
146
|
+
readonly observedAttributes: string[];
|
|
147
|
+
props?: Schema;
|
|
148
|
+
shadow?: ShadowOption;
|
|
149
|
+
styles?: ElementStyles;
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* A class-to-class mixin, applied over `HTMLReactiveElement` in the function form. Generic over
|
|
153
|
+
* `ElementBase`, or written against `HTMLReactiveElement` itself.
|
|
154
|
+
*/
|
|
155
|
+
export type ElementMixin = ((base: ElementBase) => ElementBase) | ((base: typeof HTMLReactiveElement) => typeof HTMLReactiveElement);
|
|
156
|
+
export interface ElementOptions<S extends Schema> {
|
|
157
|
+
/** Declared properties and the attributes that mirror them. */
|
|
158
|
+
props?: S;
|
|
159
|
+
/** See `HTMLReactiveElement.shadow`. */
|
|
160
|
+
shadow?: ShadowOption;
|
|
161
|
+
/** See `HTMLReactiveElement.styles`. */
|
|
162
|
+
styles?: ElementStyles;
|
|
163
|
+
/** Passed through to `customElements.define`. */
|
|
164
|
+
define?: DefineOptions;
|
|
165
|
+
/**
|
|
166
|
+
* Mixins applied over `HTMLReactiveElement`, in order, the way a class writes
|
|
167
|
+
* `extends B(A(HTMLReactiveElement))`. A mixin that implements a platform callback calls
|
|
168
|
+
* `super` and runs before this element's own work.
|
|
169
|
+
*/
|
|
170
|
+
mixins?: ElementMixin[];
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* The constructor the function form hands back, carrying the element's properties.
|
|
174
|
+
*
|
|
175
|
+
* `new Counter().step` is a number rather than an error, and
|
|
176
|
+
* `HTMLElementTagNameMap['fx-counter'] = InstanceType<typeof Counter>` is the whole
|
|
177
|
+
* declaration a consumer writes.
|
|
178
|
+
*/
|
|
179
|
+
export interface ElementConstructor<S extends Schema> extends CustomElementConstructor {
|
|
180
|
+
new (): HTMLReactiveElement & PropValues<S>;
|
|
181
|
+
readonly observedAttributes: string[];
|
|
182
|
+
}
|
|
183
|
+
/** What a setup function is handed. */
|
|
184
|
+
export interface Host<S extends Schema> {
|
|
185
|
+
/** The custom element. For focus, measurement, and anything DOM-level. */
|
|
186
|
+
readonly el: HTMLElement;
|
|
187
|
+
/** Reactive reads of the declared properties. */
|
|
188
|
+
readonly props: PropAccessors<S>;
|
|
189
|
+
/** Write a property from inside. Reflects too, when the declaration says so. */
|
|
190
|
+
set<K extends keyof S>(name: K, value: S[K] extends PropDeclaration<infer T> ? T : never): void;
|
|
191
|
+
/** Emit a `CustomEvent`. False when a listener cancelled it. */
|
|
192
|
+
readonly dispatch: Dispatch;
|
|
193
|
+
/** Elements inside this one, by `data-target`. */
|
|
194
|
+
readonly targets: Targets;
|
|
195
|
+
/** The children the author wrote between the tags, in light DOM. Empty under shadow DOM. */
|
|
196
|
+
children(): ChildNode[];
|
|
197
|
+
/** See `HTMLReactiveElement.provide`. */
|
|
198
|
+
provide<T>(context: ElementContext<T>, value: T | Accessor<T>): void;
|
|
199
|
+
/** See `HTMLReactiveElement.consume`. */
|
|
200
|
+
consume<T>(context: ElementContext<T>, options?: ConsumeOptions): Accessor<T>;
|
|
201
|
+
}
|
|
202
|
+
export type Setup<S extends Schema> = (host: Host<S>) => unknown;
|
|
203
|
+
export declare function createElementClass<S extends Schema>(setup: Setup<S>, options?: ElementOptions<S>): ElementConstructor<S>;
|
|
204
|
+
/**
|
|
205
|
+
* Define a Fluixi component as a custom element.
|
|
206
|
+
*
|
|
207
|
+
* Returns the constructor, so a caller can subclass it or hand it to a lazy loader. On a
|
|
208
|
+
* server it builds the class and registers nothing, which keeps the module importable from
|
|
209
|
+
* code that also runs during a server render.
|
|
210
|
+
*/
|
|
211
|
+
export declare function defineElement<S extends Schema>(name: string, setup: Setup<S>, options?: ElementOptions<S>): ElementConstructor<S>;
|
|
212
|
+
export {};
|
|
213
|
+
//# sourceMappingURL=element.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../src/element.ts"],"names":[],"mappings":"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"}
|