@microsoft/fast-element 2.8.4 → 2.9.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 CHANGED
@@ -2,7 +2,37 @@
2
2
  "name": "@microsoft/fast-element",
3
3
  "entries": [
4
4
  {
5
- "date": "Mon, 01 Dec 2025 18:45:37 GMT",
5
+ "date": "Mon, 08 Dec 2025 19:47:27 GMT",
6
+ "version": "2.9.0",
7
+ "tag": "@microsoft/fast-element_v2.9.0",
8
+ "comments": {
9
+ "minor": [
10
+ {
11
+ "author": "863023+radium-v@users.noreply.github.com",
12
+ "package": "@microsoft/fast-element",
13
+ "commit": "1e21fa3cac5f940f639bf76311af291e1a368da1",
14
+ "comment": "feat: add support for compact attribute binding markers"
15
+ }
16
+ ]
17
+ }
18
+ },
19
+ {
20
+ "date": "Tue, 02 Dec 2025 21:46:59 GMT",
21
+ "version": "2.8.5",
22
+ "tag": "@microsoft/fast-element_v2.8.5",
23
+ "comments": {
24
+ "patch": [
25
+ {
26
+ "author": "863023+radium-v@users.noreply.github.com",
27
+ "package": "@microsoft/fast-element",
28
+ "commit": "78c90cc517baa58b21e1dfc99939636fac7fbac6",
29
+ "comment": "fix: move hydration lifecycle callback to correct position"
30
+ }
31
+ ]
32
+ }
33
+ },
34
+ {
35
+ "date": "Mon, 01 Dec 2025 18:46:00 GMT",
6
36
  "version": "2.8.4",
7
37
  "tag": "@microsoft/fast-element_v2.8.4",
8
38
  "comments": {
package/CHANGELOG.md CHANGED
@@ -1,12 +1,28 @@
1
1
  # Change Log - @microsoft/fast-element
2
2
 
3
- <!-- This log was last generated on Mon, 01 Dec 2025 18:45:37 GMT and should not be manually modified. -->
3
+ <!-- This log was last generated on Mon, 08 Dec 2025 19:47:27 GMT and should not be manually modified. -->
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## 2.9.0
8
+
9
+ Mon, 08 Dec 2025 19:47:27 GMT
10
+
11
+ ### Minor changes
12
+
13
+ - feat: add support for compact attribute binding markers (863023+radium-v@users.noreply.github.com)
14
+
15
+ ## 2.8.5
16
+
17
+ Tue, 02 Dec 2025 21:46:59 GMT
18
+
19
+ ### Patches
20
+
21
+ - fix: move hydration lifecycle callback to correct position (863023+radium-v@users.noreply.github.com)
22
+
7
23
  ## 2.8.4
8
24
 
9
- Mon, 01 Dec 2025 18:45:37 GMT
25
+ Mon, 01 Dec 2025 18:46:00 GMT
10
26
 
11
27
  ### Patches
12
28
 
@@ -6,6 +6,10 @@ import type { StyleStrategy, StyleTarget } from "../styles/style-strategy.js";
6
6
  import type { ElementViewTemplate } from "../templating/template.js";
7
7
  import type { ElementView } from "../templating/view.js";
8
8
  import { FASTElementDefinition, ShadowRootOptions } from "./fast-definitions.js";
9
+ /**
10
+ * @deprecated Use the export from ./hydration.js instead.
11
+ */
12
+ export { deferHydrationAttribute } from "./hydration.js";
9
13
  /**
10
14
  * A type that instantiates an ElementController
11
15
  * @public
@@ -256,11 +260,6 @@ export declare class StyleElementStrategy implements StyleStrategy {
256
260
  addStylesTo(target: StyleTarget): void;
257
261
  removeStylesFrom(target: StyleTarget): void;
258
262
  }
259
- /**
260
- * The attribute used to defer hydration of an element.
261
- * @public
262
- */
263
- export declare const deferHydrationAttribute = "defer-hydration";
264
263
  /**
265
264
  * The attribute used to indicate that an element needs hydration.
266
265
  * @public
@@ -8,6 +8,7 @@ import type { HydrationView } from "../templating/view.js";
8
8
  */
9
9
  export declare const HydrationMarkup: Readonly<{
10
10
  attributeMarkerName: "data-fe-b";
11
+ compactAttributeMarkerName: "data-fe-c";
11
12
  attributeBindingSeparator: " ";
12
13
  contentBindingStartMarker(index: number, uniqueId: string): string;
13
14
  contentBindingEndMarker(index: number, uniqueId: string): string;
@@ -22,15 +23,25 @@ export declare const HydrationMarkup: Readonly<{
22
23
  /**
23
24
  * Returns the indexes of the ViewBehaviorFactories affecting
24
25
  * attributes for the element, or null if no factories were found.
26
+ *
27
+ * This method parses the space-separated format: `data-fe-b="0 1 2"`.
25
28
  */
26
29
  parseAttributeBinding(node: Element): null | number[];
27
30
  /**
28
31
  * Returns the indexes of the ViewBehaviorFactories affecting
29
32
  * attributes for the element, or null if no factories were found.
30
33
  *
31
- * Uses the alternative syntax of data-fe-b-<number>
34
+ * This method parses the enumerated format: `data-fe-b-0`, `data-fe-b-1`, `data-fe-b-2`.
35
+ * This is an alternative format that uses separate attributes for each binding index.
32
36
  */
33
37
  parseEnumeratedAttributeBinding(node: Element): null | number[];
38
+ /**
39
+ * Returns the indexes of the ViewBehaviorFactories affecting
40
+ * attributes for the element, or null if no factories were found.
41
+ *
42
+ * This method parses the compact format: `data-fe-c-{index}-{count}`.
43
+ */
44
+ parseCompactAttributeBinding(node: Element): null | number[];
34
45
  /**
35
46
  * Parses the ViewBehaviorFactory index from string data. Returns
36
47
  * the binding index or null if the index cannot be retrieved.
@@ -58,6 +69,14 @@ export declare const Hydratable: unique symbol;
58
69
  * @beta
59
70
  */
60
71
  export declare function isHydratable(view: ViewController): view is HydrationView;
72
+ /** @beta */
61
73
  export declare function isHydratable<TSource = any, TParent = any>(template: SyntheticViewTemplate<TSource, TParent>): template is HydratableSyntheticViewTemplate<TSource, TParent>;
74
+ /** @beta */
62
75
  export declare function isHydratable<TSource = any, TParent = any>(template: ElementViewTemplate<TSource, TParent>): template is HydratableElementViewTemplate<TSource, TParent>;
76
+ /** @beta */
63
77
  export declare function isHydratable(template: ContentTemplate): template is HydratableContentTemplate;
78
+ /**
79
+ * The attribute used to defer hydration of an element.
80
+ * @beta
81
+ */
82
+ export declare const deferHydrationAttribute = "defer-hydration";
@@ -31,4 +31,5 @@ export { render, RenderBehavior, RenderDirective } from "./templating/render.js"
31
31
  export { customElement, FASTElement } from "./components/fast-element.js";
32
32
  export { FASTElementDefinition, PartialFASTElementDefinition, ShadowRootOptions, fastElementRegistry, TemplateOptions, TypeRegistry, type TemplateLifecycleCallbacks, } from "./components/fast-definitions.js";
33
33
  export { attr, AttributeConfiguration, AttributeDefinition, AttributeMode, booleanConverter, DecoratorAttributeConfiguration, nullableBooleanConverter, nullableNumberConverter, ValueConverter, } from "./components/attributes.js";
34
- export { deferHydrationAttribute, ElementController, ElementControllerStrategy, HydratableElementController, type HydrationControllerCallbacks, needsHydrationAttribute, Stages, } from "./components/element-controller.js";
34
+ export { ElementController, ElementControllerStrategy, HydratableElementController, type HydrationControllerCallbacks, needsHydrationAttribute, Stages, } from "./components/element-controller.js";
35
+ export { deferHydrationAttribute, isHydratable } from "./components/hydration.js";
@@ -5,7 +5,11 @@ import { FAST, makeSerializationNoop } from "../platform.js";
5
5
  import { ElementStyles } from "../styles/element-styles.js";
6
6
  import { UnobservableMutationObserver } from "../utilities.js";
7
7
  import { FASTElementDefinition, TemplateOptions, } from "./fast-definitions.js";
8
- import { HydrationMarkup, isHydratable } from "./hydration.js";
8
+ import { deferHydrationAttribute, HydrationMarkup, isHydratable } from "./hydration.js";
9
+ /**
10
+ * @deprecated Use the export from ./hydration.js instead.
11
+ */
12
+ export { deferHydrationAttribute } from "./hydration.js";
9
13
  const defaultEventOptions = {
10
14
  bubbles: true,
11
15
  composed: true,
@@ -623,11 +627,6 @@ if (ElementStyles.supportsAdoptedStyleSheets) {
623
627
  else {
624
628
  ElementStyles.setDefaultStrategy(StyleElementStrategy);
625
629
  }
626
- /**
627
- * The attribute used to defer hydration of an element.
628
- * @public
629
- */
630
- export const deferHydrationAttribute = "defer-hydration";
631
630
  /**
632
631
  * The attribute used to indicate that an element needs hydration.
633
632
  * @public
@@ -712,9 +711,6 @@ export class HydratableElementController extends ElementController {
712
711
  // Initialize needsHydration on first connect
713
712
  this.needsHydration =
714
713
  (_a = this.needsHydration) !== null && _a !== void 0 ? _a : this.source.hasAttribute(needsHydrationAttribute);
715
- if (this.needsHydration) {
716
- (_c = (_b = HydratableElementController.lifecycleCallbacks) === null || _b === void 0 ? void 0 : _b.elementWillHydrate) === null || _c === void 0 ? void 0 : _c.call(_b, this.definition.name);
717
- }
718
714
  // If the `defer-hydration` attribute exists on the source,
719
715
  // wait for it to be removed before continuing connection behavior.
720
716
  if (this.source.hasAttribute(deferHydrationAttribute)) {
@@ -736,6 +732,7 @@ export class HydratableElementController extends ElementController {
736
732
  if (this.stage !== 3 /* Stages.disconnected */) {
737
733
  return;
738
734
  }
735
+ (_c = (_b = HydratableElementController.lifecycleCallbacks) === null || _b === void 0 ? void 0 : _b.elementWillHydrate) === null || _c === void 0 ? void 0 : _c.call(_b, this.definition.name);
739
736
  this.stage = 0 /* Stages.connecting */;
740
737
  this.bindObservables();
741
738
  this.connectBehaviors();
@@ -1,3 +1,4 @@
1
+ import { FAST } from "../platform.js";
1
2
  const bindingStartMarker = /fe-b\$\$start\$\$(\d+)\$\$(.+)\$\$fe-b/;
2
3
  const bindingEndMarker = /fe-b\$\$end\$\$(\d+)\$\$(.+)\$\$fe-b/;
3
4
  const repeatViewStartMarker = /fe-repeat\$\$start\$\$(\d+)\$\$fe-repeat/;
@@ -13,6 +14,7 @@ function isComment(node) {
13
14
  */
14
15
  export const HydrationMarkup = Object.freeze({
15
16
  attributeMarkerName: "data-fe-b",
17
+ compactAttributeMarkerName: "data-fe-c",
16
18
  attributeBindingSeparator: " ",
17
19
  contentBindingStartMarker(index, uniqueId) {
18
20
  return `fe-b$$start$$${index}$$${uniqueId}$$fe-b`;
@@ -47,6 +49,8 @@ export const HydrationMarkup = Object.freeze({
47
49
  /**
48
50
  * Returns the indexes of the ViewBehaviorFactories affecting
49
51
  * attributes for the element, or null if no factories were found.
52
+ *
53
+ * This method parses the space-separated format: `data-fe-b="0 1 2"`.
50
54
  */
51
55
  parseAttributeBinding(node) {
52
56
  const attr = node.getAttribute(this.attributeMarkerName);
@@ -58,7 +62,8 @@ export const HydrationMarkup = Object.freeze({
58
62
  * Returns the indexes of the ViewBehaviorFactories affecting
59
63
  * attributes for the element, or null if no factories were found.
60
64
  *
61
- * Uses the alternative syntax of data-fe-b-<number>
65
+ * This method parses the enumerated format: `data-fe-b-0`, `data-fe-b-1`, `data-fe-b-2`.
66
+ * This is an alternative format that uses separate attributes for each binding index.
62
67
  */
63
68
  parseEnumeratedAttributeBinding(node) {
64
69
  const attrs = [];
@@ -71,12 +76,47 @@ export const HydrationMarkup = Object.freeze({
71
76
  attrs.push(count);
72
77
  }
73
78
  else {
74
- throw new Error(`Invalid attribute marker name: ${attr}. Expected format is ${prefix}<number>.`);
79
+ throw FAST.error(1601 /* invalidAttributeMarkerName */, {
80
+ name: attr,
81
+ expectedFormat: `${prefix}<number>`,
82
+ });
75
83
  }
76
84
  }
77
85
  }
78
86
  return attrs.length === 0 ? null : attrs;
79
87
  },
88
+ /**
89
+ * Returns the indexes of the ViewBehaviorFactories affecting
90
+ * attributes for the element, or null if no factories were found.
91
+ *
92
+ * This method parses the compact format: `data-fe-c-{index}-{count}`.
93
+ */
94
+ parseCompactAttributeBinding(node) {
95
+ const prefix = `${this.compactAttributeMarkerName}-`;
96
+ const attrName = node.getAttributeNames().find(name => name.startsWith(prefix));
97
+ if (!attrName) {
98
+ return null;
99
+ }
100
+ const suffix = attrName.slice(prefix.length);
101
+ const parts = suffix.split("-");
102
+ const startIndex = parseInt(parts[0], 10);
103
+ const count = parseInt(parts[1], 10);
104
+ if (parts.length !== 2 ||
105
+ Number.isNaN(startIndex) ||
106
+ Number.isNaN(count) ||
107
+ startIndex < 0 ||
108
+ count < 1) {
109
+ throw FAST.error(1604 /* invalidCompactAttributeMarkerName */, {
110
+ name: attrName,
111
+ expectedFormat: `${this.compactAttributeMarkerName}-{index}-{count}`,
112
+ });
113
+ }
114
+ const indexes = [];
115
+ for (let i = 0; i < count; i++) {
116
+ indexes.push(startIndex + i);
117
+ }
118
+ return indexes;
119
+ },
80
120
  /**
81
121
  * Parses the ViewBehaviorFactory index from string data. Returns
82
122
  * the binding index or null if the index cannot be retrieved.
@@ -122,6 +162,12 @@ function parseIndexAndIdMarker(regex, content) {
122
162
  * @internal
123
163
  */
124
164
  export const Hydratable = Symbol.for("fe-hydration");
165
+ /** @beta */
125
166
  export function isHydratable(value) {
126
167
  return value[Hydratable] === Hydratable;
127
168
  }
169
+ /**
170
+ * The attribute used to defer hydration of an element.
171
+ * @beta
172
+ */
173
+ export const deferHydrationAttribute = "defer-hydration";
package/dist/esm/debug.js CHANGED
@@ -35,6 +35,9 @@ const debugMessages = {
35
35
  [1512 /* noDefaultResolver */]: "'${key}' not registered. Did you forget to add @singleton()?",
36
36
  [1513 /* cyclicDependency */]: "Cyclic dependency found '${name}'.",
37
37
  [1514 /* connectUpdateRequiresController */]: "Injected properties that are updated on changes to DOM connectivity require the target object to be an instance of FASTElement.",
38
+ [1601 /* invalidAttributeMarkerName */]: "Invalid attribute marker name: ${name}. Expected format is ${expectedFormat}.",
39
+ [1602 /* invalidCompactAttributeMarkerValues */]: "Invalid compact attribute marker values in ${markerName}. Both index and count must be positive integers.",
40
+ [1604 /* invalidCompactAttributeMarkerName */]: "Invalid compact attribute marker name: ${name}. Expected format is ${expectedFormat}.",
38
41
  };
39
42
  const allPlaceholders = /(\$\{\w+?})/g;
40
43
  const placeholder = /\$\{(\w+?)}/g;
@@ -79,9 +79,9 @@ export function buildViewBindingTargets(firstNode, lastNode, factories) {
79
79
  return { targets, boundaries };
80
80
  }
81
81
  function targetElement(node, factories, targets) {
82
- var _a;
82
+ var _a, _b;
83
83
  // Check for attributes and map any factories.
84
- const attrFactoryIds = (_a = HydrationMarkup.parseAttributeBinding(node)) !== null && _a !== void 0 ? _a : HydrationMarkup.parseEnumeratedAttributeBinding(node);
84
+ const attrFactoryIds = (_b = (_a = HydrationMarkup.parseAttributeBinding(node)) !== null && _a !== void 0 ? _a : HydrationMarkup.parseEnumeratedAttributeBinding(node)) !== null && _b !== void 0 ? _b : HydrationMarkup.parseCompactAttributeBinding(node);
85
85
  if (attrFactoryIds !== null) {
86
86
  for (const id of attrFactoryIds) {
87
87
  if (!factories[id]) {
package/dist/esm/index.js CHANGED
@@ -36,4 +36,5 @@ export { render, RenderBehavior, RenderDirective } from "./templating/render.js"
36
36
  export { customElement, FASTElement } from "./components/fast-element.js";
37
37
  export { FASTElementDefinition, fastElementRegistry, TemplateOptions, } from "./components/fast-definitions.js";
38
38
  export { attr, AttributeConfiguration, AttributeDefinition, booleanConverter, nullableBooleanConverter, nullableNumberConverter, } from "./components/attributes.js";
39
- export { deferHydrationAttribute, ElementController, HydratableElementController, needsHydrationAttribute, } from "./components/element-controller.js";
39
+ export { ElementController, HydratableElementController, needsHydrationAttribute, } from "./components/element-controller.js";
40
+ export { deferHydrationAttribute, isHydratable } from "./components/hydration.js";
@@ -4286,7 +4286,7 @@
4286
4286
  {
4287
4287
  "kind": "Variable",
4288
4288
  "canonicalReference": "@microsoft/fast-element!deferHydrationAttribute:var",
4289
- "docComment": "/**\n * The attribute used to defer hydration of an element.\n *\n * @public\n */\n",
4289
+ "docComment": "/**\n * The attribute used to defer hydration of an element.\n *\n * @beta\n */\n",
4290
4290
  "excerptTokens": [
4291
4291
  {
4292
4292
  "kind": "Content",
@@ -4297,13 +4297,13 @@
4297
4297
  "text": "\"defer-hydration\""
4298
4298
  }
4299
4299
  ],
4300
- "fileUrlPath": "dist/dts/components/element-controller.d.ts",
4300
+ "fileUrlPath": "dist/dts/components/hydration.d.ts",
4301
4301
  "initializerTokenRange": {
4302
4302
  "startIndex": 1,
4303
4303
  "endIndex": 2
4304
4304
  },
4305
4305
  "isReadonly": true,
4306
- "releaseTag": "Public",
4306
+ "releaseTag": "Beta",
4307
4307
  "name": "deferHydrationAttribute",
4308
4308
  "variableTypeTokenRange": {
4309
4309
  "startIndex": 0,
@@ -13411,6 +13411,326 @@
13411
13411
  }
13412
13412
  ]
13413
13413
  },
13414
+ {
13415
+ "kind": "Function",
13416
+ "canonicalReference": "@microsoft/fast-element!isHydratable:function(1)",
13417
+ "docComment": "/**\n * Tests if a template or ViewController is hydratable.\n *\n * @beta\n */\n",
13418
+ "excerptTokens": [
13419
+ {
13420
+ "kind": "Content",
13421
+ "text": "export declare function isHydratable(view: "
13422
+ },
13423
+ {
13424
+ "kind": "Reference",
13425
+ "text": "ViewController",
13426
+ "canonicalReference": "@microsoft/fast-element!ViewController:interface"
13427
+ },
13428
+ {
13429
+ "kind": "Content",
13430
+ "text": "): "
13431
+ },
13432
+ {
13433
+ "kind": "Reference",
13434
+ "text": "view",
13435
+ "canonicalReference": "@microsoft/fast-element!~view"
13436
+ },
13437
+ {
13438
+ "kind": "Content",
13439
+ "text": " is "
13440
+ },
13441
+ {
13442
+ "kind": "Reference",
13443
+ "text": "HydrationView",
13444
+ "canonicalReference": "@microsoft/fast-element!~HydrationView:class"
13445
+ },
13446
+ {
13447
+ "kind": "Content",
13448
+ "text": ";"
13449
+ }
13450
+ ],
13451
+ "fileUrlPath": "dist/dts/components/hydration.d.ts",
13452
+ "returnTypeTokenRange": {
13453
+ "startIndex": 3,
13454
+ "endIndex": 6
13455
+ },
13456
+ "releaseTag": "Beta",
13457
+ "overloadIndex": 1,
13458
+ "parameters": [
13459
+ {
13460
+ "parameterName": "view",
13461
+ "parameterTypeTokenRange": {
13462
+ "startIndex": 1,
13463
+ "endIndex": 2
13464
+ },
13465
+ "isOptional": false
13466
+ }
13467
+ ],
13468
+ "name": "isHydratable"
13469
+ },
13470
+ {
13471
+ "kind": "Function",
13472
+ "canonicalReference": "@microsoft/fast-element!isHydratable:function(2)",
13473
+ "docComment": "/**\n * @beta\n */\n",
13474
+ "excerptTokens": [
13475
+ {
13476
+ "kind": "Content",
13477
+ "text": "export declare function isHydratable<TSource = "
13478
+ },
13479
+ {
13480
+ "kind": "Content",
13481
+ "text": "any"
13482
+ },
13483
+ {
13484
+ "kind": "Content",
13485
+ "text": ", TParent = "
13486
+ },
13487
+ {
13488
+ "kind": "Content",
13489
+ "text": "any"
13490
+ },
13491
+ {
13492
+ "kind": "Content",
13493
+ "text": ">(template: "
13494
+ },
13495
+ {
13496
+ "kind": "Reference",
13497
+ "text": "SyntheticViewTemplate",
13498
+ "canonicalReference": "@microsoft/fast-element!SyntheticViewTemplate:interface"
13499
+ },
13500
+ {
13501
+ "kind": "Content",
13502
+ "text": "<TSource, TParent>"
13503
+ },
13504
+ {
13505
+ "kind": "Content",
13506
+ "text": "): "
13507
+ },
13508
+ {
13509
+ "kind": "Reference",
13510
+ "text": "template",
13511
+ "canonicalReference": "@microsoft/fast-element!~template"
13512
+ },
13513
+ {
13514
+ "kind": "Content",
13515
+ "text": " is "
13516
+ },
13517
+ {
13518
+ "kind": "Reference",
13519
+ "text": "HydratableSyntheticViewTemplate",
13520
+ "canonicalReference": "@microsoft/fast-element!~HydratableSyntheticViewTemplate:interface"
13521
+ },
13522
+ {
13523
+ "kind": "Content",
13524
+ "text": "<TSource, TParent>"
13525
+ },
13526
+ {
13527
+ "kind": "Content",
13528
+ "text": ";"
13529
+ }
13530
+ ],
13531
+ "fileUrlPath": "dist/dts/components/hydration.d.ts",
13532
+ "returnTypeTokenRange": {
13533
+ "startIndex": 8,
13534
+ "endIndex": 12
13535
+ },
13536
+ "releaseTag": "Beta",
13537
+ "overloadIndex": 2,
13538
+ "parameters": [
13539
+ {
13540
+ "parameterName": "template",
13541
+ "parameterTypeTokenRange": {
13542
+ "startIndex": 5,
13543
+ "endIndex": 7
13544
+ },
13545
+ "isOptional": false
13546
+ }
13547
+ ],
13548
+ "typeParameters": [
13549
+ {
13550
+ "typeParameterName": "TSource",
13551
+ "constraintTokenRange": {
13552
+ "startIndex": 0,
13553
+ "endIndex": 0
13554
+ },
13555
+ "defaultTypeTokenRange": {
13556
+ "startIndex": 1,
13557
+ "endIndex": 2
13558
+ }
13559
+ },
13560
+ {
13561
+ "typeParameterName": "TParent",
13562
+ "constraintTokenRange": {
13563
+ "startIndex": 0,
13564
+ "endIndex": 0
13565
+ },
13566
+ "defaultTypeTokenRange": {
13567
+ "startIndex": 3,
13568
+ "endIndex": 4
13569
+ }
13570
+ }
13571
+ ],
13572
+ "name": "isHydratable"
13573
+ },
13574
+ {
13575
+ "kind": "Function",
13576
+ "canonicalReference": "@microsoft/fast-element!isHydratable:function(3)",
13577
+ "docComment": "/**\n * @beta\n */\n",
13578
+ "excerptTokens": [
13579
+ {
13580
+ "kind": "Content",
13581
+ "text": "export declare function isHydratable<TSource = "
13582
+ },
13583
+ {
13584
+ "kind": "Content",
13585
+ "text": "any"
13586
+ },
13587
+ {
13588
+ "kind": "Content",
13589
+ "text": ", TParent = "
13590
+ },
13591
+ {
13592
+ "kind": "Content",
13593
+ "text": "any"
13594
+ },
13595
+ {
13596
+ "kind": "Content",
13597
+ "text": ">(template: "
13598
+ },
13599
+ {
13600
+ "kind": "Reference",
13601
+ "text": "ElementViewTemplate",
13602
+ "canonicalReference": "@microsoft/fast-element!ElementViewTemplate:interface"
13603
+ },
13604
+ {
13605
+ "kind": "Content",
13606
+ "text": "<TSource, TParent>"
13607
+ },
13608
+ {
13609
+ "kind": "Content",
13610
+ "text": "): "
13611
+ },
13612
+ {
13613
+ "kind": "Reference",
13614
+ "text": "template",
13615
+ "canonicalReference": "@microsoft/fast-element!~template"
13616
+ },
13617
+ {
13618
+ "kind": "Content",
13619
+ "text": " is "
13620
+ },
13621
+ {
13622
+ "kind": "Reference",
13623
+ "text": "HydratableElementViewTemplate",
13624
+ "canonicalReference": "@microsoft/fast-element!~HydratableElementViewTemplate:interface"
13625
+ },
13626
+ {
13627
+ "kind": "Content",
13628
+ "text": "<TSource, TParent>"
13629
+ },
13630
+ {
13631
+ "kind": "Content",
13632
+ "text": ";"
13633
+ }
13634
+ ],
13635
+ "fileUrlPath": "dist/dts/components/hydration.d.ts",
13636
+ "returnTypeTokenRange": {
13637
+ "startIndex": 8,
13638
+ "endIndex": 12
13639
+ },
13640
+ "releaseTag": "Beta",
13641
+ "overloadIndex": 3,
13642
+ "parameters": [
13643
+ {
13644
+ "parameterName": "template",
13645
+ "parameterTypeTokenRange": {
13646
+ "startIndex": 5,
13647
+ "endIndex": 7
13648
+ },
13649
+ "isOptional": false
13650
+ }
13651
+ ],
13652
+ "typeParameters": [
13653
+ {
13654
+ "typeParameterName": "TSource",
13655
+ "constraintTokenRange": {
13656
+ "startIndex": 0,
13657
+ "endIndex": 0
13658
+ },
13659
+ "defaultTypeTokenRange": {
13660
+ "startIndex": 1,
13661
+ "endIndex": 2
13662
+ }
13663
+ },
13664
+ {
13665
+ "typeParameterName": "TParent",
13666
+ "constraintTokenRange": {
13667
+ "startIndex": 0,
13668
+ "endIndex": 0
13669
+ },
13670
+ "defaultTypeTokenRange": {
13671
+ "startIndex": 3,
13672
+ "endIndex": 4
13673
+ }
13674
+ }
13675
+ ],
13676
+ "name": "isHydratable"
13677
+ },
13678
+ {
13679
+ "kind": "Function",
13680
+ "canonicalReference": "@microsoft/fast-element!isHydratable:function(4)",
13681
+ "docComment": "/**\n * @beta\n */\n",
13682
+ "excerptTokens": [
13683
+ {
13684
+ "kind": "Content",
13685
+ "text": "export declare function isHydratable(template: "
13686
+ },
13687
+ {
13688
+ "kind": "Reference",
13689
+ "text": "ContentTemplate",
13690
+ "canonicalReference": "@microsoft/fast-element!ContentTemplate:interface"
13691
+ },
13692
+ {
13693
+ "kind": "Content",
13694
+ "text": "): "
13695
+ },
13696
+ {
13697
+ "kind": "Reference",
13698
+ "text": "template",
13699
+ "canonicalReference": "@microsoft/fast-element!~template"
13700
+ },
13701
+ {
13702
+ "kind": "Content",
13703
+ "text": " is "
13704
+ },
13705
+ {
13706
+ "kind": "Reference",
13707
+ "text": "HydratableContentTemplate",
13708
+ "canonicalReference": "@microsoft/fast-element!~HydratableContentTemplate:interface"
13709
+ },
13710
+ {
13711
+ "kind": "Content",
13712
+ "text": ";"
13713
+ }
13714
+ ],
13715
+ "fileUrlPath": "dist/dts/components/hydration.d.ts",
13716
+ "returnTypeTokenRange": {
13717
+ "startIndex": 3,
13718
+ "endIndex": 6
13719
+ },
13720
+ "releaseTag": "Beta",
13721
+ "overloadIndex": 4,
13722
+ "parameters": [
13723
+ {
13724
+ "parameterName": "template",
13725
+ "parameterTypeTokenRange": {
13726
+ "startIndex": 1,
13727
+ "endIndex": 2
13728
+ },
13729
+ "isOptional": false
13730
+ }
13731
+ ],
13732
+ "name": "isHydratable"
13733
+ },
13414
13734
  {
13415
13735
  "kind": "Interface",
13416
13736
  "canonicalReference": "@microsoft/fast-element!LengthObserver:interface",