@microsoft/fast-html 1.0.0-alpha.15 → 1.0.0-alpha.17

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.
@@ -1,11 +1,10 @@
1
- import { FASTElement } from "@microsoft/fast-element";
2
- export declare abstract class RenderableFASTElement extends FASTElement {
3
- deferHydration: boolean;
4
- needsHydration: boolean;
5
- constructor();
6
- /**
7
- * A user defined function for determining if the element is ready to be hydrated.
8
- * This function will get called if it has been defined after the template is connected.
9
- */
10
- private prepare;
11
- }
1
+ import { type Constructable, type FASTElement } from "@microsoft/fast-element";
2
+ /**
3
+ * A mixin function that extends a base class with additional functionality for
4
+ * rendering and hydration.
5
+ *
6
+ * @param BaseCtor - The base class to extend.
7
+ * @returns A new class that extends the provided base class with additional functionality for rendering and hydration.
8
+ * @public
9
+ */
10
+ export declare function RenderableFASTElement<T extends Constructable<FASTElement>>(BaseCtor: T): T;
@@ -1,32 +1,27 @@
1
- import { __awaiter, __decorate, __metadata } from "tslib";
2
- import { attr, FASTElement, Observable } from "@microsoft/fast-element";
3
- export class RenderableFASTElement extends FASTElement {
4
- constructor() {
5
- var _a, _b;
6
- super();
7
- this.deferHydration = true;
8
- this.needsHydration = true;
9
- // If the elements template has already been defined there is no need to defer hydration.
10
- if (!((_b = (_a = this.$fastController) === null || _a === void 0 ? void 0 : _a.definition) === null || _b === void 0 ? void 0 : _b.shadowOptions)) {
11
- this.setAttribute("defer-hydration", "");
12
- this.setAttribute("needs-hydration", "");
13
- }
14
- Observable.defineProperty(this.$fastController.definition, "shadowOptions");
15
- Observable.getNotifier(this.$fastController.definition).subscribe({
16
- handleChange: () => __awaiter(this, void 0, void 0, function* () {
17
- if (this.prepare) {
18
- yield this.prepare();
19
- }
1
+ import { attr } from "@microsoft/fast-element";
2
+ /**
3
+ * A mixin function that extends a base class with additional functionality for
4
+ * rendering and hydration.
5
+ *
6
+ * @param BaseCtor - The base class to extend.
7
+ * @returns A new class that extends the provided base class with additional functionality for rendering and hydration.
8
+ * @public
9
+ */
10
+ export function RenderableFASTElement(BaseCtor) {
11
+ const C = class extends BaseCtor {
12
+ constructor(...args) {
13
+ super(...args);
14
+ this.deferHydration = true;
15
+ if (this.prepare) {
16
+ this.prepare().then(() => {
17
+ this.deferHydration = false;
18
+ });
19
+ }
20
+ else {
20
21
  this.deferHydration = false;
21
- }),
22
- }, "shadowOptions");
23
- }
22
+ }
23
+ }
24
+ };
25
+ attr({ mode: "boolean", attribute: "defer-hydration" })(C.prototype, "deferHydration");
26
+ return C;
24
27
  }
25
- __decorate([
26
- attr({ mode: "boolean", attribute: "defer-hydration" }),
27
- __metadata("design:type", Boolean)
28
- ], RenderableFASTElement.prototype, "deferHydration", void 0);
29
- __decorate([
30
- attr({ mode: "boolean", attribute: "needs-hydration" }),
31
- __metadata("design:type", Boolean)
32
- ], RenderableFASTElement.prototype, "needsHydration", void 0);
@@ -1,5 +1,5 @@
1
1
  import { __awaiter, __decorate, __metadata } from "tslib";
2
- import { attr, elements, FAST, FASTElement, fastElementRegistry, HydratableElementController, ViewTemplate, } from "@microsoft/fast-element";
2
+ import { attr, elements, FAST, FASTElement, FASTElementDefinition, fastElementRegistry, HydratableElementController, ViewTemplate, } from "@microsoft/fast-element";
3
3
  import "@microsoft/fast-element/install-hydratable-view-templates.js";
4
4
  import { getAllPartials, getExpressionChain, getNextBehavior, pathResolver, resolveWhen, transformInnerHTML, } from "./utilities.js";
5
5
  /**
@@ -38,9 +38,7 @@ class TemplateElement extends FASTElement {
38
38
  connectedCallback() {
39
39
  super.connectedCallback();
40
40
  if (this.name) {
41
- this.$fastController.definition.registry
42
- .whenDefined(this.name)
43
- .then((value) => __awaiter(this, void 0, void 0, function* () {
41
+ FASTElementDefinition.registerAsync(this.name).then((value) => __awaiter(this, void 0, void 0, function* () {
44
42
  var _a, _b;
45
43
  if (this.name && !!!((_a = TemplateElement.elementOptions) === null || _a === void 0 ? void 0 : _a[this.name])) {
46
44
  TemplateElement.setOptions(this.name);
@@ -53,8 +51,7 @@ class TemplateElement extends FASTElement {
53
51
  const { strings, values } = yield this.resolveStringsAndValues(innerHTML);
54
52
  if (registeredFastElement) {
55
53
  // all new elements will get the updated template
56
- registeredFastElement.template =
57
- this.resolveTemplateOrBehavior(strings, values);
54
+ registeredFastElement.template = this.resolveTemplateOrBehavior(strings, values);
58
55
  // set shadow options as defined by the f-template
59
56
  registeredFastElement.shadowOptions =
60
57
  (_b = TemplateElement.elementOptions[this.name]) === null || _b === void 0 ? void 0 : _b.shadowOptions;
@@ -1,7 +1,7 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { RenderableFASTElement, TemplateElement } from "@microsoft/fast-html";
3
- import { attr } from "@microsoft/fast-element";
4
- class TestElement extends RenderableFASTElement {
3
+ import { attr, FASTElement } from "@microsoft/fast-element";
4
+ class TestElement extends FASTElement {
5
5
  constructor() {
6
6
  super(...arguments);
7
7
  this.type = "radio";
@@ -11,9 +11,9 @@ __decorate([
11
11
  attr,
12
12
  __metadata("design:type", String)
13
13
  ], TestElement.prototype, "type", void 0);
14
- TestElement.define({
14
+ RenderableFASTElement(TestElement).defineAsync({
15
15
  name: "test-element",
16
- shadowOptions: null,
16
+ templateOptions: "defer-and-hydrate",
17
17
  });
18
18
  TemplateElement.define({
19
19
  name: "f-template",
@@ -1,7 +1,7 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { RenderableFASTElement, TemplateElement } from "@microsoft/fast-html";
3
- import { attr } from "@microsoft/fast-element";
4
- class TestElement extends RenderableFASTElement {
3
+ import { attr, FASTElement } from "@microsoft/fast-element";
4
+ class TestElement extends FASTElement {
5
5
  constructor() {
6
6
  super(...arguments);
7
7
  this.text = "Hello";
@@ -11,19 +11,19 @@ __decorate([
11
11
  attr,
12
12
  __metadata("design:type", String)
13
13
  ], TestElement.prototype, "text", void 0);
14
- TestElement.define({
14
+ RenderableFASTElement(TestElement).defineAsync({
15
15
  name: "test-element",
16
- shadowOptions: null,
16
+ templateOptions: "defer-and-hydrate",
17
17
  });
18
- class TestElementUnescaped extends RenderableFASTElement {
18
+ class TestElementUnescaped extends FASTElement {
19
19
  constructor() {
20
20
  super(...arguments);
21
21
  this.html = `<p>Hello world</p>`;
22
22
  }
23
23
  }
24
- TestElementUnescaped.define({
24
+ RenderableFASTElement(TestElementUnescaped).defineAsync({
25
25
  name: "test-element-unescaped",
26
- shadowOptions: null,
26
+ templateOptions: "defer-and-hydrate",
27
27
  });
28
28
  TemplateElement.define({
29
29
  name: "f-template",
@@ -1,7 +1,7 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { RenderableFASTElement, TemplateElement } from "@microsoft/fast-html";
3
- import { observable } from "@microsoft/fast-element";
4
- class TestElement extends RenderableFASTElement {
3
+ import { FASTElement, observable } from "@microsoft/fast-element";
4
+ class TestElement extends FASTElement {
5
5
  constructor() {
6
6
  super(...arguments);
7
7
  this.listItems = [];
@@ -16,9 +16,9 @@ __decorate([
16
16
  observable,
17
17
  __metadata("design:type", Array)
18
18
  ], TestElement.prototype, "list", void 0);
19
- TestElement.define({
19
+ RenderableFASTElement(TestElement).defineAsync({
20
20
  name: "test-element",
21
- shadowOptions: null,
21
+ templateOptions: "defer-and-hydrate",
22
22
  });
23
23
  TemplateElement.define({
24
24
  name: "f-template",
@@ -1,5 +1,6 @@
1
+ import { FASTElement } from "@microsoft/fast-element";
1
2
  import { RenderableFASTElement, TemplateElement } from "@microsoft/fast-html";
2
- class TestElement extends RenderableFASTElement {
3
+ class TestElement extends FASTElement {
3
4
  constructor() {
4
5
  super(...arguments);
5
6
  this.object = {
@@ -7,9 +8,9 @@ class TestElement extends RenderableFASTElement {
7
8
  };
8
9
  }
9
10
  }
10
- TestElement.define({
11
+ RenderableFASTElement(TestElement).defineAsync({
11
12
  name: "test-element",
12
- shadowOptions: null,
13
+ templateOptions: "defer-and-hydrate",
13
14
  });
14
15
  TemplateElement.define({
15
16
  name: "f-template",
@@ -1,7 +1,7 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { RenderableFASTElement, TemplateElement } from "@microsoft/fast-html";
3
- import { attr } from "@microsoft/fast-element";
4
- class TestElement extends RenderableFASTElement {
3
+ import { attr, FASTElement } from "@microsoft/fast-element";
4
+ class TestElement extends FASTElement {
5
5
  constructor() {
6
6
  super(...arguments);
7
7
  this.foo = "";
@@ -23,9 +23,9 @@ __decorate([
23
23
  attr,
24
24
  __metadata("design:type", String)
25
25
  ], TestElement.prototype, "foo", void 0);
26
- TestElement.define({
26
+ RenderableFASTElement(TestElement).defineAsync({
27
27
  name: "test-element",
28
- shadowOptions: null,
28
+ templateOptions: "defer-and-hydrate",
29
29
  });
30
30
  TemplateElement.define({
31
31
  name: "f-template",
@@ -1,5 +1,5 @@
1
- import { TemplateElement } from "@microsoft/fast-html";
2
1
  import { FASTElement } from "@microsoft/fast-element";
2
+ import { RenderableFASTElement, TemplateElement } from "@microsoft/fast-html";
3
3
  class TestElement extends FASTElement {
4
4
  constructor() {
5
5
  super(...arguments);
@@ -23,9 +23,9 @@ class TestElement extends FASTElement {
23
23
  ];
24
24
  }
25
25
  }
26
- TestElement.define({
26
+ RenderableFASTElement(TestElement).defineAsync({
27
27
  name: "test-element",
28
- shadowOptions: null,
28
+ templateOptions: "defer-and-hydrate",
29
29
  });
30
30
  TemplateElement.define({
31
31
  name: "f-template",
@@ -1,13 +1,14 @@
1
+ import { FASTElement } from "@microsoft/fast-element";
1
2
  import { RenderableFASTElement, TemplateElement } from "@microsoft/fast-html";
2
- class TestElement extends RenderableFASTElement {
3
+ class TestElement extends FASTElement {
3
4
  constructor() {
4
5
  super(...arguments);
5
6
  this.video = null;
6
7
  }
7
8
  }
8
- TestElement.define({
9
+ RenderableFASTElement(TestElement).defineAsync({
9
10
  name: "test-element",
10
- shadowOptions: null,
11
+ templateOptions: "defer-and-hydrate",
11
12
  });
12
13
  TemplateElement.define({
13
14
  name: "f-template",
@@ -1,7 +1,7 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { RenderableFASTElement, TemplateElement } from "@microsoft/fast-html";
3
- import { observable } from "@microsoft/fast-element";
4
- class TestElement extends RenderableFASTElement {
3
+ import { FASTElement, observable } from "@microsoft/fast-element";
4
+ class TestElement extends FASTElement {
5
5
  constructor() {
6
6
  super(...arguments);
7
7
  this.list = ["Foo", "Bar"];
@@ -12,11 +12,11 @@ __decorate([
12
12
  observable,
13
13
  __metadata("design:type", Array)
14
14
  ], TestElement.prototype, "list", void 0);
15
- TestElement.define({
15
+ RenderableFASTElement(TestElement).defineAsync({
16
16
  name: "test-element",
17
- shadowOptions: null,
17
+ templateOptions: "defer-and-hydrate",
18
18
  });
19
- class TestElementInnerWhen extends RenderableFASTElement {
19
+ class TestElementInnerWhen extends FASTElement {
20
20
  constructor() {
21
21
  super(...arguments);
22
22
  this.list = [
@@ -35,9 +35,9 @@ __decorate([
35
35
  observable,
36
36
  __metadata("design:type", Array)
37
37
  ], TestElementInnerWhen.prototype, "list", void 0);
38
- TestElementInnerWhen.define({
38
+ RenderableFASTElement(TestElementInnerWhen).defineAsync({
39
39
  name: "test-element-inner-when",
40
- shadowOptions: null,
40
+ templateOptions: "defer-and-hydrate",
41
41
  });
42
42
  TemplateElement.define({
43
43
  name: "f-template",
@@ -1,7 +1,7 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { RenderableFASTElement, TemplateElement } from "@microsoft/fast-html";
3
- import { observable } from "@microsoft/fast-element";
4
- class TestElement extends RenderableFASTElement {
3
+ import { FASTElement, observable } from "@microsoft/fast-element";
4
+ class TestElement extends FASTElement {
5
5
  constructor() {
6
6
  super(...arguments);
7
7
  this.slottedNodes = [];
@@ -24,9 +24,9 @@ __decorate([
24
24
  observable,
25
25
  __metadata("design:type", Array)
26
26
  ], TestElement.prototype, "slottedBarNodes", void 0);
27
- TestElement.define({
27
+ RenderableFASTElement(TestElement).defineAsync({
28
28
  name: "test-element",
29
- shadowOptions: null,
29
+ templateOptions: "defer-and-hydrate",
30
30
  });
31
31
  TemplateElement.define({
32
32
  name: "f-template",
@@ -1,7 +1,7 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { RenderableFASTElement, TemplateElement } from "@microsoft/fast-html";
3
- import { attr } from "@microsoft/fast-element";
4
- class TestElement extends RenderableFASTElement {
3
+ import { attr, FASTElement } from "@microsoft/fast-element";
4
+ class TestElement extends FASTElement {
5
5
  constructor() {
6
6
  super(...arguments);
7
7
  this.show = false;
@@ -11,11 +11,11 @@ __decorate([
11
11
  attr({ mode: "boolean" }),
12
12
  __metadata("design:type", Boolean)
13
13
  ], TestElement.prototype, "show", void 0);
14
- TestElement.define({
14
+ RenderableFASTElement(TestElement).defineAsync({
15
15
  name: "test-element",
16
- shadowOptions: null,
16
+ templateOptions: "defer-and-hydrate",
17
17
  });
18
- class TestElementNot extends RenderableFASTElement {
18
+ class TestElementNot extends FASTElement {
19
19
  constructor() {
20
20
  super(...arguments);
21
21
  this.hide = false;
@@ -25,11 +25,11 @@ __decorate([
25
25
  attr({ mode: "boolean" }),
26
26
  __metadata("design:type", Boolean)
27
27
  ], TestElementNot.prototype, "hide", void 0);
28
- TestElementNot.define({
28
+ RenderableFASTElement(TestElementNot).defineAsync({
29
29
  name: "test-element-not",
30
- shadowOptions: null,
30
+ templateOptions: "defer-and-hydrate",
31
31
  });
32
- class TestElementEquals extends RenderableFASTElement {
32
+ class TestElementEquals extends FASTElement {
33
33
  constructor() {
34
34
  super(...arguments);
35
35
  this.varA = 0;
@@ -39,11 +39,11 @@ __decorate([
39
39
  attr({ attribute: "var-a" }),
40
40
  __metadata("design:type", Number)
41
41
  ], TestElementEquals.prototype, "varA", void 0);
42
- TestElementEquals.define({
42
+ RenderableFASTElement(TestElementEquals).defineAsync({
43
43
  name: "test-element-equals",
44
- shadowOptions: null,
44
+ templateOptions: "defer-and-hydrate",
45
45
  });
46
- class TestElementNotEquals extends RenderableFASTElement {
46
+ class TestElementNotEquals extends FASTElement {
47
47
  constructor() {
48
48
  super(...arguments);
49
49
  this.varA = 0;
@@ -53,11 +53,11 @@ __decorate([
53
53
  attr({ attribute: "var-a" }),
54
54
  __metadata("design:type", Number)
55
55
  ], TestElementNotEquals.prototype, "varA", void 0);
56
- TestElementNotEquals.define({
56
+ RenderableFASTElement(TestElementNotEquals).defineAsync({
57
57
  name: "test-element-not-equals",
58
- shadowOptions: null,
58
+ templateOptions: "defer-and-hydrate",
59
59
  });
60
- class TestElementGe extends RenderableFASTElement {
60
+ class TestElementGe extends FASTElement {
61
61
  constructor() {
62
62
  super(...arguments);
63
63
  this.varA = 0;
@@ -67,11 +67,11 @@ __decorate([
67
67
  attr({ attribute: "var-a" }),
68
68
  __metadata("design:type", Number)
69
69
  ], TestElementGe.prototype, "varA", void 0);
70
- TestElementGe.define({
70
+ RenderableFASTElement(TestElementGe).defineAsync({
71
71
  name: "test-element-ge",
72
- shadowOptions: null,
72
+ templateOptions: "defer-and-hydrate",
73
73
  });
74
- class TestElementGt extends RenderableFASTElement {
74
+ class TestElementGt extends FASTElement {
75
75
  constructor() {
76
76
  super(...arguments);
77
77
  this.varA = 0;
@@ -81,11 +81,11 @@ __decorate([
81
81
  attr({ attribute: "var-a" }),
82
82
  __metadata("design:type", Number)
83
83
  ], TestElementGt.prototype, "varA", void 0);
84
- TestElementGt.define({
84
+ RenderableFASTElement(TestElementGt).defineAsync({
85
85
  name: "test-element-gt",
86
- shadowOptions: null,
86
+ templateOptions: "defer-and-hydrate",
87
87
  });
88
- class TestElementLe extends RenderableFASTElement {
88
+ class TestElementLe extends FASTElement {
89
89
  constructor() {
90
90
  super(...arguments);
91
91
  this.varA = 0;
@@ -95,11 +95,11 @@ __decorate([
95
95
  attr({ attribute: "var-a" }),
96
96
  __metadata("design:type", Number)
97
97
  ], TestElementLe.prototype, "varA", void 0);
98
- TestElementLe.define({
98
+ RenderableFASTElement(TestElementLe).defineAsync({
99
99
  name: "test-element-le",
100
- shadowOptions: null,
100
+ templateOptions: "defer-and-hydrate",
101
101
  });
102
- class TestElementLt extends RenderableFASTElement {
102
+ class TestElementLt extends FASTElement {
103
103
  constructor() {
104
104
  super(...arguments);
105
105
  this.varA = 0;
@@ -109,11 +109,11 @@ __decorate([
109
109
  attr({ attribute: "var-a" }),
110
110
  __metadata("design:type", Number)
111
111
  ], TestElementLt.prototype, "varA", void 0);
112
- TestElementLt.define({
112
+ RenderableFASTElement(TestElementLt).defineAsync({
113
113
  name: "test-element-lt",
114
- shadowOptions: null,
114
+ templateOptions: "defer-and-hydrate",
115
115
  });
116
- class TestElementOr extends RenderableFASTElement {
116
+ class TestElementOr extends FASTElement {
117
117
  constructor() {
118
118
  super(...arguments);
119
119
  this.thisVar = false;
@@ -128,11 +128,11 @@ __decorate([
128
128
  attr({ attribute: "that-var", mode: "boolean" }),
129
129
  __metadata("design:type", Boolean)
130
130
  ], TestElementOr.prototype, "thatVar", void 0);
131
- TestElementOr.define({
131
+ RenderableFASTElement(TestElementOr).defineAsync({
132
132
  name: "test-element-or",
133
- shadowOptions: null,
133
+ templateOptions: "defer-and-hydrate",
134
134
  });
135
- class TestElementAnd extends RenderableFASTElement {
135
+ class TestElementAnd extends FASTElement {
136
136
  constructor() {
137
137
  super(...arguments);
138
138
  this.thisVar = false;
@@ -147,9 +147,9 @@ __decorate([
147
147
  attr({ attribute: "that-var", mode: "boolean" }),
148
148
  __metadata("design:type", Boolean)
149
149
  ], TestElementAnd.prototype, "thatVar", void 0);
150
- TestElementAnd.define({
150
+ RenderableFASTElement(TestElementAnd).defineAsync({
151
151
  name: "test-element-and",
152
- shadowOptions: null,
152
+ templateOptions: "defer-and-hydrate",
153
153
  });
154
154
  TemplateElement.define({
155
155
  name: "f-template",