@microsoft/fast-element 2.4.0 → 2.5.0
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.json +31 -1
- package/CHANGELOG.md +18 -2
- package/dist/dts/components/element-controller.d.ts +3 -0
- package/dist/dts/components/fast-definitions.d.ts +35 -0
- package/dist/dts/components/fast-element.d.ts +3 -0
- package/dist/dts/index.d.ts +1 -1
- package/dist/esm/components/element-controller.js +12 -2
- package/dist/esm/components/fast-definitions.js +67 -2
- package/dist/esm/components/fast-element.js +23 -0
- package/dist/esm/components/hydration.js +13 -4
- package/dist/fast-element.api.json +266 -1
- package/dist/fast-element.debug.js +132 -6
- package/dist/fast-element.debug.min.js +2 -2
- package/dist/fast-element.js +132 -6
- package/dist/fast-element.min.js +2 -2
- package/dist/fast-element.untrimmed.d.ts +42 -0
- package/docs/api-report.api.md +19 -3
- package/package.json +7 -2
|
@@ -8566,6 +8566,15 @@
|
|
|
8566
8566
|
"text": "compose",
|
|
8567
8567
|
"canonicalReference": "@microsoft/fast-element!~compose:function"
|
|
8568
8568
|
},
|
|
8569
|
+
{
|
|
8570
|
+
"kind": "Content",
|
|
8571
|
+
"text": ";\n defineAsync: typeof "
|
|
8572
|
+
},
|
|
8573
|
+
{
|
|
8574
|
+
"kind": "Reference",
|
|
8575
|
+
"text": "defineAsync",
|
|
8576
|
+
"canonicalReference": "@microsoft/fast-element!~defineAsync:function"
|
|
8577
|
+
},
|
|
8569
8578
|
{
|
|
8570
8579
|
"kind": "Content",
|
|
8571
8580
|
"text": ";\n from: typeof "
|
|
@@ -8586,7 +8595,7 @@
|
|
|
8586
8595
|
"name": "FASTElement",
|
|
8587
8596
|
"variableTypeTokenRange": {
|
|
8588
8597
|
"startIndex": 1,
|
|
8589
|
-
"endIndex":
|
|
8598
|
+
"endIndex": 12
|
|
8590
8599
|
}
|
|
8591
8600
|
},
|
|
8592
8601
|
{
|
|
@@ -9114,6 +9123,50 @@
|
|
|
9114
9123
|
"isProtected": false,
|
|
9115
9124
|
"isAbstract": false
|
|
9116
9125
|
},
|
|
9126
|
+
{
|
|
9127
|
+
"kind": "Property",
|
|
9128
|
+
"canonicalReference": "@microsoft/fast-element!FASTElementDefinition.isRegistered:member",
|
|
9129
|
+
"docComment": "/**\n * The definition has been registered to the FAST element registry.\n */\n",
|
|
9130
|
+
"excerptTokens": [
|
|
9131
|
+
{
|
|
9132
|
+
"kind": "Content",
|
|
9133
|
+
"text": "static isRegistered: "
|
|
9134
|
+
},
|
|
9135
|
+
{
|
|
9136
|
+
"kind": "Reference",
|
|
9137
|
+
"text": "Record",
|
|
9138
|
+
"canonicalReference": "!Record:type"
|
|
9139
|
+
},
|
|
9140
|
+
{
|
|
9141
|
+
"kind": "Content",
|
|
9142
|
+
"text": "<string, "
|
|
9143
|
+
},
|
|
9144
|
+
{
|
|
9145
|
+
"kind": "Reference",
|
|
9146
|
+
"text": "Function",
|
|
9147
|
+
"canonicalReference": "!Function:interface"
|
|
9148
|
+
},
|
|
9149
|
+
{
|
|
9150
|
+
"kind": "Content",
|
|
9151
|
+
"text": ">"
|
|
9152
|
+
},
|
|
9153
|
+
{
|
|
9154
|
+
"kind": "Content",
|
|
9155
|
+
"text": ";"
|
|
9156
|
+
}
|
|
9157
|
+
],
|
|
9158
|
+
"isReadonly": false,
|
|
9159
|
+
"isOptional": false,
|
|
9160
|
+
"releaseTag": "Public",
|
|
9161
|
+
"name": "isRegistered",
|
|
9162
|
+
"propertyTypeTokenRange": {
|
|
9163
|
+
"startIndex": 1,
|
|
9164
|
+
"endIndex": 5
|
|
9165
|
+
},
|
|
9166
|
+
"isStatic": true,
|
|
9167
|
+
"isProtected": false,
|
|
9168
|
+
"isAbstract": false
|
|
9169
|
+
},
|
|
9117
9170
|
{
|
|
9118
9171
|
"kind": "Property",
|
|
9119
9172
|
"canonicalReference": "@microsoft/fast-element!FASTElementDefinition#name:member",
|
|
@@ -9188,6 +9241,54 @@
|
|
|
9188
9241
|
"isProtected": false,
|
|
9189
9242
|
"isAbstract": false
|
|
9190
9243
|
},
|
|
9244
|
+
{
|
|
9245
|
+
"kind": "Property",
|
|
9246
|
+
"canonicalReference": "@microsoft/fast-element!FASTElementDefinition.registerAsync:member",
|
|
9247
|
+
"docComment": "/**\n * Indicates when a custom elements definition has been registered with the fastElementRegistry.\n *\n * @param name - The name of the defined custom element.\n *\n * @alpha\n */\n",
|
|
9248
|
+
"excerptTokens": [
|
|
9249
|
+
{
|
|
9250
|
+
"kind": "Content",
|
|
9251
|
+
"text": "static registerAsync: "
|
|
9252
|
+
},
|
|
9253
|
+
{
|
|
9254
|
+
"kind": "Content",
|
|
9255
|
+
"text": "(name: string) => "
|
|
9256
|
+
},
|
|
9257
|
+
{
|
|
9258
|
+
"kind": "Reference",
|
|
9259
|
+
"text": "Promise",
|
|
9260
|
+
"canonicalReference": "!Promise:interface"
|
|
9261
|
+
},
|
|
9262
|
+
{
|
|
9263
|
+
"kind": "Content",
|
|
9264
|
+
"text": "<"
|
|
9265
|
+
},
|
|
9266
|
+
{
|
|
9267
|
+
"kind": "Reference",
|
|
9268
|
+
"text": "Function",
|
|
9269
|
+
"canonicalReference": "!Function:interface"
|
|
9270
|
+
},
|
|
9271
|
+
{
|
|
9272
|
+
"kind": "Content",
|
|
9273
|
+
"text": ">"
|
|
9274
|
+
},
|
|
9275
|
+
{
|
|
9276
|
+
"kind": "Content",
|
|
9277
|
+
"text": ";"
|
|
9278
|
+
}
|
|
9279
|
+
],
|
|
9280
|
+
"isReadonly": false,
|
|
9281
|
+
"isOptional": false,
|
|
9282
|
+
"releaseTag": "Alpha",
|
|
9283
|
+
"name": "registerAsync",
|
|
9284
|
+
"propertyTypeTokenRange": {
|
|
9285
|
+
"startIndex": 1,
|
|
9286
|
+
"endIndex": 6
|
|
9287
|
+
},
|
|
9288
|
+
"isStatic": true,
|
|
9289
|
+
"isProtected": false,
|
|
9290
|
+
"isAbstract": false
|
|
9291
|
+
},
|
|
9191
9292
|
{
|
|
9192
9293
|
"kind": "Property",
|
|
9193
9294
|
"canonicalReference": "@microsoft/fast-element!FASTElementDefinition#registry:member",
|
|
@@ -9312,6 +9413,37 @@
|
|
|
9312
9413
|
"isProtected": false,
|
|
9313
9414
|
"isAbstract": false
|
|
9314
9415
|
},
|
|
9416
|
+
{
|
|
9417
|
+
"kind": "Property",
|
|
9418
|
+
"canonicalReference": "@microsoft/fast-element!FASTElementDefinition#templateOptions:member",
|
|
9419
|
+
"docComment": "/**\n * The template options.\n *\n * @alpha\n */\n",
|
|
9420
|
+
"excerptTokens": [
|
|
9421
|
+
{
|
|
9422
|
+
"kind": "Content",
|
|
9423
|
+
"text": "templateOptions?: "
|
|
9424
|
+
},
|
|
9425
|
+
{
|
|
9426
|
+
"kind": "Reference",
|
|
9427
|
+
"text": "TemplateOptions",
|
|
9428
|
+
"canonicalReference": "@microsoft/fast-element!TemplateOptions:type"
|
|
9429
|
+
},
|
|
9430
|
+
{
|
|
9431
|
+
"kind": "Content",
|
|
9432
|
+
"text": ";"
|
|
9433
|
+
}
|
|
9434
|
+
],
|
|
9435
|
+
"isReadonly": false,
|
|
9436
|
+
"isOptional": true,
|
|
9437
|
+
"releaseTag": "Alpha",
|
|
9438
|
+
"name": "templateOptions",
|
|
9439
|
+
"propertyTypeTokenRange": {
|
|
9440
|
+
"startIndex": 1,
|
|
9441
|
+
"endIndex": 2
|
|
9442
|
+
},
|
|
9443
|
+
"isStatic": false,
|
|
9444
|
+
"isProtected": false,
|
|
9445
|
+
"isAbstract": false
|
|
9446
|
+
},
|
|
9315
9447
|
{
|
|
9316
9448
|
"kind": "Property",
|
|
9317
9449
|
"canonicalReference": "@microsoft/fast-element!FASTElementDefinition#type:member",
|
|
@@ -12266,6 +12398,85 @@
|
|
|
12266
12398
|
"isAbstract": false,
|
|
12267
12399
|
"name": "disconnect"
|
|
12268
12400
|
},
|
|
12401
|
+
{
|
|
12402
|
+
"kind": "Method",
|
|
12403
|
+
"canonicalReference": "@microsoft/fast-element!HydratableElementController.forCustomElement:member(1)",
|
|
12404
|
+
"docComment": "",
|
|
12405
|
+
"excerptTokens": [
|
|
12406
|
+
{
|
|
12407
|
+
"kind": "Content",
|
|
12408
|
+
"text": "static forCustomElement(element: "
|
|
12409
|
+
},
|
|
12410
|
+
{
|
|
12411
|
+
"kind": "Reference",
|
|
12412
|
+
"text": "HTMLElement",
|
|
12413
|
+
"canonicalReference": "!HTMLElement:interface"
|
|
12414
|
+
},
|
|
12415
|
+
{
|
|
12416
|
+
"kind": "Content",
|
|
12417
|
+
"text": ", override?: "
|
|
12418
|
+
},
|
|
12419
|
+
{
|
|
12420
|
+
"kind": "Content",
|
|
12421
|
+
"text": "boolean"
|
|
12422
|
+
},
|
|
12423
|
+
{
|
|
12424
|
+
"kind": "Content",
|
|
12425
|
+
"text": "): "
|
|
12426
|
+
},
|
|
12427
|
+
{
|
|
12428
|
+
"kind": "Reference",
|
|
12429
|
+
"text": "ElementController",
|
|
12430
|
+
"canonicalReference": "@microsoft/fast-element!ElementController:class"
|
|
12431
|
+
},
|
|
12432
|
+
{
|
|
12433
|
+
"kind": "Content",
|
|
12434
|
+
"text": "<"
|
|
12435
|
+
},
|
|
12436
|
+
{
|
|
12437
|
+
"kind": "Reference",
|
|
12438
|
+
"text": "HTMLElement",
|
|
12439
|
+
"canonicalReference": "!HTMLElement:interface"
|
|
12440
|
+
},
|
|
12441
|
+
{
|
|
12442
|
+
"kind": "Content",
|
|
12443
|
+
"text": ">"
|
|
12444
|
+
},
|
|
12445
|
+
{
|
|
12446
|
+
"kind": "Content",
|
|
12447
|
+
"text": ";"
|
|
12448
|
+
}
|
|
12449
|
+
],
|
|
12450
|
+
"isStatic": true,
|
|
12451
|
+
"returnTypeTokenRange": {
|
|
12452
|
+
"startIndex": 5,
|
|
12453
|
+
"endIndex": 9
|
|
12454
|
+
},
|
|
12455
|
+
"releaseTag": "Beta",
|
|
12456
|
+
"isProtected": false,
|
|
12457
|
+
"overloadIndex": 1,
|
|
12458
|
+
"parameters": [
|
|
12459
|
+
{
|
|
12460
|
+
"parameterName": "element",
|
|
12461
|
+
"parameterTypeTokenRange": {
|
|
12462
|
+
"startIndex": 1,
|
|
12463
|
+
"endIndex": 2
|
|
12464
|
+
},
|
|
12465
|
+
"isOptional": false
|
|
12466
|
+
},
|
|
12467
|
+
{
|
|
12468
|
+
"parameterName": "override",
|
|
12469
|
+
"parameterTypeTokenRange": {
|
|
12470
|
+
"startIndex": 3,
|
|
12471
|
+
"endIndex": 4
|
|
12472
|
+
},
|
|
12473
|
+
"isOptional": true
|
|
12474
|
+
}
|
|
12475
|
+
],
|
|
12476
|
+
"isOptional": false,
|
|
12477
|
+
"isAbstract": false,
|
|
12478
|
+
"name": "forCustomElement"
|
|
12479
|
+
},
|
|
12269
12480
|
{
|
|
12270
12481
|
"kind": "Method",
|
|
12271
12482
|
"canonicalReference": "@microsoft/fast-element!HydratableElementController.install:member(1)",
|
|
@@ -14926,6 +15137,34 @@
|
|
|
14926
15137
|
"startIndex": 1,
|
|
14927
15138
|
"endIndex": 2
|
|
14928
15139
|
}
|
|
15140
|
+
},
|
|
15141
|
+
{
|
|
15142
|
+
"kind": "PropertySignature",
|
|
15143
|
+
"canonicalReference": "@microsoft/fast-element!PartialFASTElementDefinition#templateOptions:member",
|
|
15144
|
+
"docComment": "/**\n * Options controlling how the template will be created.\n *\n * @alpha\n */\n",
|
|
15145
|
+
"excerptTokens": [
|
|
15146
|
+
{
|
|
15147
|
+
"kind": "Content",
|
|
15148
|
+
"text": "readonly templateOptions?: "
|
|
15149
|
+
},
|
|
15150
|
+
{
|
|
15151
|
+
"kind": "Reference",
|
|
15152
|
+
"text": "TemplateOptions",
|
|
15153
|
+
"canonicalReference": "@microsoft/fast-element!TemplateOptions:type"
|
|
15154
|
+
},
|
|
15155
|
+
{
|
|
15156
|
+
"kind": "Content",
|
|
15157
|
+
"text": ";"
|
|
15158
|
+
}
|
|
15159
|
+
],
|
|
15160
|
+
"isReadonly": true,
|
|
15161
|
+
"isOptional": true,
|
|
15162
|
+
"releaseTag": "Alpha",
|
|
15163
|
+
"name": "templateOptions",
|
|
15164
|
+
"propertyTypeTokenRange": {
|
|
15165
|
+
"startIndex": 1,
|
|
15166
|
+
"endIndex": 2
|
|
15167
|
+
}
|
|
14929
15168
|
}
|
|
14930
15169
|
],
|
|
14931
15170
|
"extendsTokenRanges": []
|
|
@@ -20551,6 +20790,32 @@
|
|
|
20551
20790
|
],
|
|
20552
20791
|
"extendsTokenRanges": []
|
|
20553
20792
|
},
|
|
20793
|
+
{
|
|
20794
|
+
"kind": "TypeAlias",
|
|
20795
|
+
"canonicalReference": "@microsoft/fast-element!TemplateOptions:type",
|
|
20796
|
+
"docComment": "/**\n * Template options.\n *\n * @alpha\n */\n",
|
|
20797
|
+
"excerptTokens": [
|
|
20798
|
+
{
|
|
20799
|
+
"kind": "Content",
|
|
20800
|
+
"text": "export declare type TemplateOptions = "
|
|
20801
|
+
},
|
|
20802
|
+
{
|
|
20803
|
+
"kind": "Content",
|
|
20804
|
+
"text": "\"defer-and-hydrate\""
|
|
20805
|
+
},
|
|
20806
|
+
{
|
|
20807
|
+
"kind": "Content",
|
|
20808
|
+
"text": ";"
|
|
20809
|
+
}
|
|
20810
|
+
],
|
|
20811
|
+
"fileUrlPath": "dist/dts/components/fast-definitions.d.ts",
|
|
20812
|
+
"releaseTag": "Alpha",
|
|
20813
|
+
"name": "TemplateOptions",
|
|
20814
|
+
"typeTokenRange": {
|
|
20815
|
+
"startIndex": 1,
|
|
20816
|
+
"endIndex": 2
|
|
20817
|
+
}
|
|
20818
|
+
},
|
|
20554
20819
|
{
|
|
20555
20820
|
"kind": "TypeAlias",
|
|
20556
20821
|
"canonicalReference": "@microsoft/fast-element!TemplateValue:type",
|
|
@@ -2349,11 +2349,20 @@ const HydrationMarkup = Object.freeze({
|
|
|
2349
2349
|
*/
|
|
2350
2350
|
parseEnumeratedAttributeBinding(node) {
|
|
2351
2351
|
const attrs = [];
|
|
2352
|
-
|
|
2353
|
-
|
|
2354
|
-
|
|
2352
|
+
const prefixLength = this.attributeMarkerName.length + 1;
|
|
2353
|
+
const prefix = `${this.attributeMarkerName}-`;
|
|
2354
|
+
for (const attr of node.getAttributeNames()) {
|
|
2355
|
+
if (attr.startsWith(prefix)) {
|
|
2356
|
+
const count = Number(attr.slice(prefixLength));
|
|
2357
|
+
if (!Number.isNaN(count)) {
|
|
2358
|
+
attrs.push(count);
|
|
2359
|
+
}
|
|
2360
|
+
else {
|
|
2361
|
+
throw new Error(`Invalid attribute marker name: ${attr}. Expected format is ${prefix}<number>.`);
|
|
2362
|
+
}
|
|
2363
|
+
}
|
|
2355
2364
|
}
|
|
2356
|
-
return
|
|
2365
|
+
return attrs.length === 0 ? null : attrs;
|
|
2357
2366
|
},
|
|
2358
2367
|
/**
|
|
2359
2368
|
* Parses the ViewBehaviorFactory index from string data. Returns
|
|
@@ -4501,6 +4510,36 @@ function children(propertyOrOptions) {
|
|
|
4501
4510
|
return new ChildrenDirective(propertyOrOptions);
|
|
4502
4511
|
}
|
|
4503
4512
|
|
|
4513
|
+
/******************************************************************************
|
|
4514
|
+
Copyright (c) Microsoft Corporation.
|
|
4515
|
+
|
|
4516
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
4517
|
+
purpose with or without fee is hereby granted.
|
|
4518
|
+
|
|
4519
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
4520
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
4521
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
4522
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
4523
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
4524
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
4525
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
4526
|
+
***************************************************************************** */
|
|
4527
|
+
|
|
4528
|
+
function __awaiter(thisArg, _arguments, P, generator) {
|
|
4529
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4530
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4531
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
4532
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
4533
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
4534
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
4535
|
+
});
|
|
4536
|
+
}
|
|
4537
|
+
|
|
4538
|
+
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
4539
|
+
var e = new Error(message);
|
|
4540
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
4541
|
+
};
|
|
4542
|
+
|
|
4504
4543
|
const booleanMode = "boolean";
|
|
4505
4544
|
const reflectMode = "reflect";
|
|
4506
4545
|
/**
|
|
@@ -4723,7 +4762,7 @@ const fastElementRegistry = FAST.getById(KernelServiceId.elementRegistry, () =>
|
|
|
4723
4762
|
*/
|
|
4724
4763
|
class FASTElementDefinition {
|
|
4725
4764
|
constructor(type, nameOrConfig = type.definition) {
|
|
4726
|
-
var
|
|
4765
|
+
var _b;
|
|
4727
4766
|
this.platformDefined = false;
|
|
4728
4767
|
if (isString(nameOrConfig)) {
|
|
4729
4768
|
nameOrConfig = { name: nameOrConfig };
|
|
@@ -4731,7 +4770,8 @@ class FASTElementDefinition {
|
|
|
4731
4770
|
this.type = type;
|
|
4732
4771
|
this.name = nameOrConfig.name;
|
|
4733
4772
|
this.template = nameOrConfig.template;
|
|
4734
|
-
this.
|
|
4773
|
+
this.templateOptions = nameOrConfig.templateOptions;
|
|
4774
|
+
this.registry = (_b = nameOrConfig.registry) !== null && _b !== void 0 ? _b : customElements;
|
|
4735
4775
|
const proto = type.prototype;
|
|
4736
4776
|
const attributes = AttributeDefinition.collect(type, nameOrConfig.attributes);
|
|
4737
4777
|
const observedAttributes = new Array(attributes.length);
|
|
@@ -4763,6 +4803,8 @@ class FASTElementDefinition {
|
|
|
4763
4803
|
: Object.assign(Object.assign({}, defaultElementOptions), nameOrConfig.elementOptions);
|
|
4764
4804
|
this.styles = ElementStyles.normalize(nameOrConfig.styles);
|
|
4765
4805
|
fastElementRegistry.register(this);
|
|
4806
|
+
Observable.defineProperty(FASTElementDefinition.isRegistered, this.name);
|
|
4807
|
+
FASTElementDefinition.isRegistered[this.name] = this.type;
|
|
4766
4808
|
}
|
|
4767
4809
|
/**
|
|
4768
4810
|
* Indicates if this element has been defined in at least one registry.
|
|
@@ -4805,7 +4847,43 @@ class FASTElementDefinition {
|
|
|
4805
4847
|
static registerBaseType(type) {
|
|
4806
4848
|
fastElementBaseTypes.add(type);
|
|
4807
4849
|
}
|
|
4850
|
+
/**
|
|
4851
|
+
* Creates an instance of FASTElementDefinition asynchronously. This option assumes
|
|
4852
|
+
* that a template and shadowOptions will be provided and completes when those requirements
|
|
4853
|
+
* are met.
|
|
4854
|
+
* @param type - The type this definition is being created for.
|
|
4855
|
+
* @param nameOrDef - The name of the element to define or a config object
|
|
4856
|
+
* that describes the element to define.
|
|
4857
|
+
* @alpha
|
|
4858
|
+
*/
|
|
4859
|
+
static composeAsync(type, nameOrDef) {
|
|
4860
|
+
return new Promise(resolve => {
|
|
4861
|
+
if (fastElementBaseTypes.has(type) || fastElementRegistry.getByType(type)) {
|
|
4862
|
+
resolve(new FASTElementDefinition(class extends type {
|
|
4863
|
+
}, nameOrDef));
|
|
4864
|
+
}
|
|
4865
|
+
const definition = new FASTElementDefinition(type, nameOrDef);
|
|
4866
|
+
Promise.all([
|
|
4867
|
+
new Promise(resolve => {
|
|
4868
|
+
Observable.getNotifier(definition).subscribe({
|
|
4869
|
+
handleChange: () => resolve(),
|
|
4870
|
+
}, "template");
|
|
4871
|
+
}),
|
|
4872
|
+
new Promise(resolve => {
|
|
4873
|
+
Observable.getNotifier(definition).subscribe({
|
|
4874
|
+
handleChange: () => resolve(),
|
|
4875
|
+
}, "shadowOptions");
|
|
4876
|
+
}),
|
|
4877
|
+
]).then(() => {
|
|
4878
|
+
resolve(definition);
|
|
4879
|
+
});
|
|
4880
|
+
});
|
|
4881
|
+
}
|
|
4808
4882
|
}
|
|
4883
|
+
/**
|
|
4884
|
+
* The definition has been registered to the FAST element registry.
|
|
4885
|
+
*/
|
|
4886
|
+
FASTElementDefinition.isRegistered = {};
|
|
4809
4887
|
/**
|
|
4810
4888
|
* Gets the element definition associated with the specified type.
|
|
4811
4889
|
* @param type - The custom element type to retrieve the definition for.
|
|
@@ -4816,6 +4894,21 @@ FASTElementDefinition.getByType = fastElementRegistry.getByType;
|
|
|
4816
4894
|
* @param instance - The custom element instance to retrieve the definition for.
|
|
4817
4895
|
*/
|
|
4818
4896
|
FASTElementDefinition.getForInstance = fastElementRegistry.getForInstance;
|
|
4897
|
+
/**
|
|
4898
|
+
* Indicates when a custom elements definition has been registered with the fastElementRegistry.
|
|
4899
|
+
* @param name - The name of the defined custom element.
|
|
4900
|
+
* @alpha
|
|
4901
|
+
*/
|
|
4902
|
+
FASTElementDefinition.registerAsync = (name) => __awaiter(void 0, void 0, void 0, function* () {
|
|
4903
|
+
return new Promise(resolve => {
|
|
4904
|
+
if (FASTElementDefinition.isRegistered[name]) {
|
|
4905
|
+
resolve(FASTElementDefinition.isRegistered[name]);
|
|
4906
|
+
}
|
|
4907
|
+
Observable.getNotifier(FASTElementDefinition.isRegistered).subscribe({
|
|
4908
|
+
handleChange: () => resolve(FASTElementDefinition.isRegistered[name]),
|
|
4909
|
+
}, name);
|
|
4910
|
+
});
|
|
4911
|
+
});
|
|
4819
4912
|
Observable.defineProperty(FASTElementDefinition.prototype, "template");
|
|
4820
4913
|
Observable.defineProperty(FASTElementDefinition.prototype, "shadowOptions");
|
|
4821
4914
|
|
|
@@ -5916,6 +6009,16 @@ class HydratableElementController extends ElementController {
|
|
|
5916
6009
|
record.target.$fastController.connect();
|
|
5917
6010
|
}
|
|
5918
6011
|
}
|
|
6012
|
+
static forCustomElement(element, override) {
|
|
6013
|
+
const definition = FASTElementDefinition.getForInstance(element);
|
|
6014
|
+
if (definition !== undefined &&
|
|
6015
|
+
definition.templateOptions === "defer-and-hydrate" &&
|
|
6016
|
+
!definition.template) {
|
|
6017
|
+
element.setAttribute(deferHydrationAttribute, "");
|
|
6018
|
+
element.setAttribute(needsHydrationAttribute, "");
|
|
6019
|
+
}
|
|
6020
|
+
return super.forCustomElement(element, override);
|
|
6021
|
+
}
|
|
5919
6022
|
connect() {
|
|
5920
6023
|
var _a, _b;
|
|
5921
6024
|
// Initialize needsHydration on first connect
|
|
@@ -6015,6 +6118,24 @@ function compose(type, nameOrDef) {
|
|
|
6015
6118
|
}
|
|
6016
6119
|
return FASTElementDefinition.compose(this, type);
|
|
6017
6120
|
}
|
|
6121
|
+
function defineAsync(type, nameOrDef) {
|
|
6122
|
+
if (isFunction(type)) {
|
|
6123
|
+
return new Promise(resolve => {
|
|
6124
|
+
FASTElementDefinition.composeAsync(type, nameOrDef).then(value => {
|
|
6125
|
+
resolve(value);
|
|
6126
|
+
});
|
|
6127
|
+
}).then(value => {
|
|
6128
|
+
return value.define().type;
|
|
6129
|
+
});
|
|
6130
|
+
}
|
|
6131
|
+
return new Promise(resolve => {
|
|
6132
|
+
FASTElementDefinition.composeAsync(this, type).then(value => {
|
|
6133
|
+
resolve(value);
|
|
6134
|
+
});
|
|
6135
|
+
}).then(value => {
|
|
6136
|
+
return value.define().type;
|
|
6137
|
+
});
|
|
6138
|
+
}
|
|
6018
6139
|
function define(type, nameOrDef) {
|
|
6019
6140
|
if (isFunction(type)) {
|
|
6020
6141
|
return FASTElementDefinition.compose(type, nameOrDef).define().type;
|
|
@@ -6048,6 +6169,11 @@ const FASTElement = Object.assign(createFASTElement(HTMLElement), {
|
|
|
6048
6169
|
* @public
|
|
6049
6170
|
*/
|
|
6050
6171
|
compose,
|
|
6172
|
+
/**
|
|
6173
|
+
* Defines metadata for a FASTElement which can be used after it has been resolved to define the element.
|
|
6174
|
+
* @alpha
|
|
6175
|
+
*/
|
|
6176
|
+
defineAsync,
|
|
6051
6177
|
});
|
|
6052
6178
|
/**
|
|
6053
6179
|
* Decorator: Defines a platform custom element based on `FASTElement`.
|