@microsoft/fast-element 2.10.4 → 3.0.0-rc.2
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/CHANGELOG.md +52 -2
- package/README.md +244 -1
- package/dist/arrays/arrays.api.json +2621 -0
- package/dist/context/context.api.json +13 -13
- package/dist/declarative/declarative.api.json +8483 -0
- package/dist/di/di.api.json +16 -16
- package/dist/dts/__test__/helpers.d.ts +6 -0
- package/dist/dts/array-observer.d.ts +2 -0
- package/dist/dts/arrays.d.ts +2 -0
- package/dist/dts/attr.d.ts +1 -0
- package/dist/dts/binding/binding.d.ts +15 -5
- package/dist/dts/binding/one-time.d.ts +1 -1
- package/dist/dts/binding/one-way.d.ts +1 -1
- package/dist/dts/binding/signal.d.ts +6 -6
- package/dist/dts/binding/two-way.d.ts +2 -1
- package/dist/dts/binding.d.ts +7 -0
- package/dist/dts/components/attributes.d.ts +1 -4
- package/dist/dts/components/definition-schema-transforms.d.ts +9 -0
- package/dist/dts/components/element-controller.d.ts +80 -114
- package/dist/dts/components/element-hydration.d.ts +1 -1
- package/dist/dts/components/enable-hydration.d.ts +54 -0
- package/dist/dts/components/fast-definitions.d.ts +98 -46
- package/dist/dts/components/fast-element.d.ts +43 -16
- package/dist/dts/components/hydration-tracker.d.ts +83 -0
- package/dist/dts/components/hydration.d.ts +23 -53
- package/dist/dts/components/schema.d.ts +205 -0
- package/dist/dts/context.d.ts +13 -13
- package/dist/dts/css.d.ts +3 -0
- package/dist/dts/debug.d.ts +5 -1
- package/dist/dts/declarative/attribute-map.d.ts +58 -0
- package/dist/dts/declarative/debug.d.ts +4 -0
- package/dist/dts/declarative/index.d.ts +14 -0
- package/dist/dts/declarative/interfaces.d.ts +8 -0
- package/dist/dts/declarative/observer-map-utilities.d.ts +58 -0
- package/dist/dts/declarative/observer-map.d.ts +89 -0
- package/dist/dts/declarative/runtime.d.ts +5 -0
- package/dist/dts/declarative/syntax.d.ts +21 -0
- package/dist/dts/declarative/template-bridge.d.ts +33 -0
- package/dist/dts/declarative/template-parser.d.ts +98 -0
- package/dist/dts/declarative/template.d.ts +10 -0
- package/dist/dts/declarative/utilities.d.ts +358 -0
- package/dist/dts/di/di.d.ts +7 -7
- package/dist/dts/directives/children.d.ts +2 -0
- package/dist/dts/directives/node-observation.d.ts +2 -0
- package/dist/dts/directives/ref.d.ts +2 -0
- package/dist/dts/directives/repeat.d.ts +4 -0
- package/dist/dts/directives/slotted.d.ts +2 -0
- package/dist/dts/directives/when.d.ts +3 -0
- package/dist/dts/dom-policy.d.ts +23 -5
- package/dist/dts/dom.d.ts +4 -16
- package/dist/dts/html.d.ts +5 -0
- package/dist/dts/hydration/diagnostics.d.ts +93 -0
- package/dist/dts/hydration/hydration-debugger.d.ts +35 -0
- package/dist/dts/hydration/messages.d.ts +62 -0
- package/dist/dts/hydration/runtime.d.ts +7 -0
- package/dist/dts/hydration/target-builder.d.ts +40 -12
- package/dist/dts/hydration.d.ts +18 -0
- package/dist/dts/index.d.ts +42 -42
- package/dist/dts/index.debug.d.ts +0 -1
- package/dist/dts/index.rollup.debug.d.ts +0 -1
- package/dist/dts/interfaces.d.ts +2 -49
- package/dist/dts/observable.d.ts +3 -6
- package/dist/dts/observation/arrays.d.ts +1 -1
- package/dist/dts/observation/observable.d.ts +3 -3
- package/dist/dts/observation/update-queue.d.ts +1 -1
- package/dist/dts/platform.d.ts +45 -8
- package/dist/dts/registry.d.ts +1 -0
- package/dist/dts/render.d.ts +7 -0
- package/dist/dts/schema.d.ts +1 -0
- package/dist/dts/state/exports.d.ts +1 -1
- package/dist/dts/state/state.d.ts +2 -2
- package/dist/dts/styles/css-directive.d.ts +5 -12
- package/dist/dts/styles/css.d.ts +5 -7
- package/dist/dts/styles/element-styles.d.ts +0 -10
- package/dist/dts/styles.d.ts +6 -0
- package/dist/dts/templating/compiler.d.ts +1 -1
- package/dist/dts/templating/html-binding-directive.d.ts +10 -2
- package/dist/dts/templating/html-directive.d.ts +19 -1
- package/dist/dts/templating/hydration-view.d.ts +130 -0
- package/dist/dts/templating/render.d.ts +1 -1
- package/dist/dts/templating/repeat.d.ts +1 -1
- package/dist/dts/templating/template.d.ts +15 -7
- package/dist/dts/templating/view.d.ts +25 -102
- package/dist/dts/templating.d.ts +10 -0
- package/dist/dts/testing/exports.d.ts +2 -2
- package/dist/dts/testing/fakes.d.ts +4 -4
- package/dist/dts/updates.d.ts +1 -0
- package/dist/dts/volatile.d.ts +2 -0
- package/dist/esm/__test__/helpers.js +22 -0
- package/dist/esm/__test__/setup-node.js +18 -0
- package/dist/esm/array-observer.js +1 -0
- package/dist/esm/arrays.js +1 -0
- package/dist/esm/attr.js +1 -0
- package/dist/esm/binding/normalize.js +1 -1
- package/dist/esm/binding/signal.js +4 -4
- package/dist/esm/binding/two-way.js +3 -3
- package/dist/esm/binding.js +4 -0
- package/dist/esm/components/attributes.js +18 -11
- package/dist/esm/components/definition-schema-transforms.js +23 -0
- package/dist/esm/components/element-controller.js +206 -270
- package/dist/esm/components/element-hydration.js +1 -1
- package/dist/esm/components/enable-hydration.js +124 -0
- package/dist/esm/components/fast-definitions.js +219 -56
- package/dist/esm/components/fast-element.js +18 -27
- package/dist/esm/components/hydration-tracker.js +122 -0
- package/dist/esm/components/hydration.js +137 -140
- package/dist/esm/components/schema.js +253 -0
- package/dist/esm/context.js +6 -6
- package/dist/esm/css.js +3 -0
- package/dist/esm/debug.js +27 -26
- package/dist/esm/declarative/attribute-map.js +122 -0
- package/dist/esm/declarative/debug.js +4 -0
- package/dist/esm/declarative/index.js +4 -0
- package/dist/esm/declarative/interfaces.js +9 -0
- package/dist/esm/declarative/observer-map-utilities.js +565 -0
- package/dist/esm/declarative/observer-map.js +216 -0
- package/dist/esm/declarative/runtime.js +14 -0
- package/dist/esm/declarative/syntax.js +36 -0
- package/dist/esm/declarative/template-bridge.js +160 -0
- package/dist/esm/declarative/template-parser.js +306 -0
- package/dist/esm/declarative/template.js +143 -0
- package/dist/esm/declarative/utilities.js +1069 -0
- package/dist/esm/di/di.js +8 -9
- package/dist/esm/directives/children.js +1 -0
- package/dist/esm/directives/node-observation.js +1 -0
- package/dist/esm/directives/ref.js +1 -0
- package/dist/esm/directives/repeat.js +1 -0
- package/dist/esm/directives/slotted.js +1 -0
- package/dist/esm/directives/when.js +1 -0
- package/dist/esm/dom-policy.js +35 -6
- package/dist/esm/dom.js +1 -1
- package/dist/esm/html.js +2 -0
- package/dist/esm/hydration/diagnostics.js +50 -0
- package/dist/esm/hydration/hydration-debugger.js +112 -0
- package/dist/esm/hydration/messages.js +84 -0
- package/dist/esm/hydration/runtime.js +33 -0
- package/dist/esm/hydration/target-builder.js +144 -91
- package/dist/esm/hydration.js +6 -0
- package/dist/esm/index.debug.js +2 -1
- package/dist/esm/index.js +38 -29
- package/dist/esm/index.rollup.debug.js +3 -2
- package/dist/esm/index.rollup.js +1 -1
- package/dist/esm/interfaces.js +2 -45
- package/dist/esm/metadata.js +2 -8
- package/dist/esm/observable.js +1 -4
- package/dist/esm/observation/arrays.js +1 -1
- package/dist/esm/observation/notifier.js +2 -4
- package/dist/esm/observation/observable.js +5 -5
- package/dist/esm/observation/update-queue.js +47 -58
- package/dist/esm/platform.js +31 -30
- package/dist/esm/registry.js +1 -0
- package/dist/esm/render.js +1 -0
- package/dist/esm/schema.js +1 -0
- package/dist/esm/state/exports.js +1 -1
- package/dist/esm/styles/css-directive.js +1 -2
- package/dist/esm/styles/css.js +15 -56
- package/dist/esm/styles/element-styles.js +69 -15
- package/dist/esm/styles.js +2 -0
- package/dist/esm/templating/html-binding-directive.js +11 -9
- package/dist/esm/templating/hydration-view.js +228 -0
- package/dist/esm/templating/render.js +39 -18
- package/dist/esm/templating/repeat.js +69 -33
- package/dist/esm/templating/template.js +7 -7
- package/dist/esm/templating/view.js +25 -234
- package/dist/esm/templating.js +7 -0
- package/dist/esm/testing/exports.js +2 -2
- package/dist/esm/testing/fixture.js +2 -2
- package/dist/esm/testing/timeout.js +2 -2
- package/dist/esm/updates.js +1 -0
- package/dist/esm/volatile.js +1 -0
- package/dist/fast-element.api.json +14389 -11138
- package/dist/fast-element.d.ts +3651 -809
- package/dist/fast-element.debug.js +5666 -4722
- package/dist/fast-element.debug.min.js +2 -2
- package/dist/fast-element.js +5394 -4381
- package/dist/fast-element.min.js +2 -2
- package/dist/fast-element.untrimmed.d.ts +923 -472
- package/dist/hydration/hydration.api.json +6460 -0
- package/dist/styles/styles.api.json +2672 -0
- package/package.json +165 -45
- package/ARCHITECTURE_FASTELEMENT.md +0 -63
- package/ARCHITECTURE_HTML_TAGGED_TEMPLATE_LITERAL.md +0 -36
- package/ARCHITECTURE_INTRO.md +0 -10
- package/ARCHITECTURE_OVERVIEW.md +0 -52
- package/ARCHITECTURE_UPDATES.md +0 -11
- package/CHANGELOG.json +0 -2275
- package/DESIGN.md +0 -510
- package/api-extractor.context.json +0 -14
- package/api-extractor.di.json +0 -14
- package/biome.json +0 -4
- package/dist/dts/components/install-hydration.d.ts +0 -1
- package/dist/dts/pending-task.d.ts +0 -32
- package/dist/dts/styles/css-binding-directive.d.ts +0 -60
- package/dist/dts/templating/install-hydratable-view-templates.d.ts +0 -1
- package/dist/esm/components/install-hydration.js +0 -3
- package/dist/esm/pending-task.js +0 -28
- package/dist/esm/polyfills.js +0 -60
- package/dist/esm/styles/css-binding-directive.js +0 -76
- package/dist/esm/templating/install-hydratable-view-templates.js +0 -23
- package/docs/ACKNOWLEDGEMENTS.md +0 -12
- package/docs/api-report.api.md +0 -1122
- package/docs/context/api-report.api.md +0 -69
- package/docs/di/api-report.api.md +0 -315
- package/docs/fast-element-2-changes.md +0 -15
- package/playwright.config.ts +0 -26
- package/scripts/run-api-extractor.js +0 -51
- package/test/index.html +0 -11
- package/test/main.ts +0 -104
- package/test/vite.config.ts +0 -19
- package/tsconfig.api-extractor.json +0 -6
- /package/dist/dts/{polyfills.d.ts → __test__/setup-node.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { lengthOf, Sort, Splice, SpliceStrategy, SpliceStrategySupport, sortedCount, } from "./observation/arrays.js";
|
package/dist/esm/attr.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { AttributeConfiguration, AttributeDefinition, attr, booleanConverter, nullableBooleanConverter, nullableNumberConverter, } from "./components/attributes.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isFunction } from "../interfaces.js";
|
|
2
2
|
import { Binding } from "./binding.js";
|
|
3
|
-
import { oneWay } from "./one-way.js";
|
|
4
3
|
import { oneTime } from "./one-time.js";
|
|
4
|
+
import { oneWay } from "./one-way.js";
|
|
5
5
|
/**
|
|
6
6
|
* Normalizes the input value into a binding.
|
|
7
7
|
* @param value - The value to create the default binding for.
|
|
@@ -9,8 +9,8 @@ const subscribers = Object.create(null);
|
|
|
9
9
|
export const Signal = Object.freeze({
|
|
10
10
|
/**
|
|
11
11
|
* Subscribes to a signal.
|
|
12
|
-
* @param signal The signal to subscribe to.
|
|
13
|
-
* @param subscriber The subscriber.
|
|
12
|
+
* @param signal - The signal to subscribe to.
|
|
13
|
+
* @param subscriber - The subscriber.
|
|
14
14
|
*/
|
|
15
15
|
subscribe(signal, subscriber) {
|
|
16
16
|
const found = subscribers[signal];
|
|
@@ -25,8 +25,8 @@ export const Signal = Object.freeze({
|
|
|
25
25
|
},
|
|
26
26
|
/**
|
|
27
27
|
* Unsubscribes from the signal.
|
|
28
|
-
* @param signal The signal to unsubscribe from.
|
|
29
|
-
* @param subscriber The subscriber.
|
|
28
|
+
* @param signal - The signal to unsubscribe from.
|
|
29
|
+
* @param subscriber - The subscriber.
|
|
30
30
|
*/
|
|
31
31
|
unsubscribe(signal, subscriber) {
|
|
32
32
|
const found = subscribers[signal];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isString, Message } from "../interfaces.js";
|
|
2
|
-
import {
|
|
2
|
+
import { Observable, } from "../observation/observable.js";
|
|
3
3
|
import { FAST, makeSerializationNoop } from "../platform.js";
|
|
4
4
|
import { Binding } from "./binding.js";
|
|
5
5
|
const defaultOptions = {
|
|
@@ -12,6 +12,7 @@ let twoWaySettings = {
|
|
|
12
12
|
};
|
|
13
13
|
/**
|
|
14
14
|
* Enables configuring two-way binding settings.
|
|
15
|
+
* @public
|
|
15
16
|
*/
|
|
16
17
|
export const TwoWaySettings = Object.freeze({
|
|
17
18
|
/**
|
|
@@ -33,8 +34,7 @@ class TwoWayObserver {
|
|
|
33
34
|
bind(controller) {
|
|
34
35
|
var _a;
|
|
35
36
|
if (!this.changeEvent) {
|
|
36
|
-
this.changeEvent =
|
|
37
|
-
(_a = this.dataBinding.options.changeEvent) !== null && _a !== void 0 ? _a : twoWaySettings.determineChangeEvent(this.directive, this.target);
|
|
37
|
+
this.changeEvent = (_a = this.dataBinding.options.changeEvent) !== null && _a !== void 0 ? _a : twoWaySettings.determineChangeEvent(this.directive, this.target);
|
|
38
38
|
}
|
|
39
39
|
if (this.isNotBound) {
|
|
40
40
|
this.target.addEventListener(this.changeEvent, this);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DOM } from "../dom.js";
|
|
2
2
|
import { isString } from "../interfaces.js";
|
|
3
|
+
import { Observable } from "../observation/observable.js";
|
|
3
4
|
import { Updates } from "../observation/update-queue.js";
|
|
4
|
-
import { DOM } from "../dom.js";
|
|
5
5
|
import { createMetadataLocator } from "../platform.js";
|
|
6
6
|
const booleanMode = "boolean";
|
|
7
7
|
const reflectMode = "reflect";
|
|
@@ -23,14 +23,10 @@ export const AttributeConfiguration = Object.freeze({
|
|
|
23
23
|
*/
|
|
24
24
|
export const booleanConverter = {
|
|
25
25
|
toView(value) {
|
|
26
|
-
return value ? "
|
|
26
|
+
return value ? "" : null;
|
|
27
27
|
},
|
|
28
28
|
fromView(value) {
|
|
29
|
-
return
|
|
30
|
-
value === void 0 ||
|
|
31
|
-
value === "false" ||
|
|
32
|
-
value === false ||
|
|
33
|
-
value === 0);
|
|
29
|
+
return !!value;
|
|
34
30
|
},
|
|
35
31
|
};
|
|
36
32
|
/**
|
|
@@ -133,7 +129,15 @@ export class AttributeDefinition {
|
|
|
133
129
|
return;
|
|
134
130
|
}
|
|
135
131
|
this.guards.add(element);
|
|
136
|
-
this.
|
|
132
|
+
if (this.mode === booleanMode) {
|
|
133
|
+
// Native HTML boolean attribute semantics: presence of the attribute
|
|
134
|
+
// (any string value, including "") means `true`; `null` (the value
|
|
135
|
+
// passed by the platform on `removeAttribute`) means `false`.
|
|
136
|
+
this.setValue(element, value !== null);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
this.setValue(element, value);
|
|
140
|
+
}
|
|
137
141
|
this.guards.delete(element);
|
|
138
142
|
}
|
|
139
143
|
tryReflectToAttribute(element) {
|
|
@@ -146,10 +150,13 @@ export class AttributeDefinition {
|
|
|
146
150
|
guards.add(element);
|
|
147
151
|
const latestValue = element[this.fieldName];
|
|
148
152
|
switch (mode) {
|
|
149
|
-
case reflectMode:
|
|
153
|
+
case reflectMode: {
|
|
150
154
|
const converter = this.converter;
|
|
151
|
-
DOM.setAttribute(element, this.attribute, converter !== void 0
|
|
155
|
+
DOM.setAttribute(element, this.attribute, converter !== void 0
|
|
156
|
+
? converter.toView(latestValue)
|
|
157
|
+
: latestValue);
|
|
152
158
|
break;
|
|
159
|
+
}
|
|
153
160
|
case booleanMode:
|
|
154
161
|
DOM.setBooleanAttribute(element, this.attribute, latestValue);
|
|
155
162
|
break;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
const definitionSchemaTransformsKey = Symbol("definitionSchemaTransforms");
|
|
2
|
+
let schemaTransformOrder = 0;
|
|
3
|
+
export function setDefinitionSchemaTransform(definition, key, transform, priority) {
|
|
4
|
+
var _a;
|
|
5
|
+
const target = definition;
|
|
6
|
+
const transforms = ((_a = target[definitionSchemaTransformsKey]) !== null && _a !== void 0 ? _a : (target[definitionSchemaTransformsKey] = []));
|
|
7
|
+
const existingIndex = transforms.findIndex(record => record.key === key);
|
|
8
|
+
if (existingIndex !== -1) {
|
|
9
|
+
transforms.splice(existingIndex, 1);
|
|
10
|
+
}
|
|
11
|
+
transforms.push({
|
|
12
|
+
key,
|
|
13
|
+
transform,
|
|
14
|
+
order: schemaTransformOrder++,
|
|
15
|
+
priority,
|
|
16
|
+
});
|
|
17
|
+
transforms.sort((a, b) => a.priority - b.priority || a.order - b.order);
|
|
18
|
+
}
|
|
19
|
+
export function getDefinitionSchemaTransforms(definition) {
|
|
20
|
+
var _a;
|
|
21
|
+
const transforms = definition === null || definition === void 0 ? void 0 : definition[definitionSchemaTransformsKey];
|
|
22
|
+
return (_a = transforms === null || transforms === void 0 ? void 0 : transforms.map(record => record.transform)) !== null && _a !== void 0 ? _a : [];
|
|
23
|
+
}
|