@microsoft/fast-html 1.0.0-alpha.20 → 1.0.0-alpha.22

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/README.md CHANGED
@@ -55,24 +55,6 @@ Example:
55
55
 
56
56
  One of the benefits of FAST declarative HTML templates is that the server can be stack agnostic as JavaScript does not need to be interpreted. By default `@microsoft/fast-html` will expect hydratable content and uses comments and datasets for tracking the binding logic. For more information on what that markup should look like, as well as an example of how initial state may be applied, read our [documentation](./RENDERING.md) to understand what markup should be generated for a hydratable experience. For the sake of brevity hydratable markup will be excluded from the README.
57
57
 
58
- #### Adding shadowOptions
59
-
60
- By default `shadowOptions` via the `TemplateElement` will be with `"mode": "open"` once the template has been set. To set each components `shadowOptions` you can pass an `options` object.
61
-
62
- Example:
63
-
64
- ```typescript
65
- TemplateElement.options({
66
- "my-custom-element": {
67
- shadowOptions: {
68
- mode: "closed",
69
- }
70
- },
71
- }).define({
72
- name: "f-template",
73
- });
74
- ```
75
-
76
58
  #### Using the RenderableFASTElement
77
59
 
78
60
  The use of `RenderableFASTElement` as a mixin for your custom element will automatically remove the `defer-hydration` attribute signalling for hydration to begin, and if you need to add state before hydration should occur you can make use of the `prepare` method.
@@ -37,7 +37,7 @@ export interface RepeatCachedPath extends CachedPathCommon {
37
37
  type: RepeatCachedPathType;
38
38
  }
39
39
  export type CachedPath = DefaultCachedPath | RepeatCachedPath | AccessCachedPath | EventCachedPath;
40
- export type CachedPathMap = Map<string, JSONSchema>;
40
+ export type CachedPathMap = Map<string, Map<string, JSONSchema>>;
41
41
  interface RegisterPathConfig {
42
42
  rootPropertyName: string;
43
43
  pathConfig: CachedPath;
@@ -57,7 +57,7 @@ export declare class Schema {
57
57
  /**
58
58
  * A JSON schema describing each root schema
59
59
  */
60
- private jsonSchemaMap;
60
+ static jsonSchemaMap: CachedPathMap;
61
61
  constructor(name: string);
62
62
  /**
63
63
  * Add a path to a schema
@@ -1,8 +1,7 @@
1
- import { FASTElement, ShadowRootOptions } from "@microsoft/fast-element";
1
+ import { FASTElement } from "@microsoft/fast-element";
2
2
  import "@microsoft/fast-element/install-hydratable-view-templates.js";
3
3
  export type ObserverMapOption = "all";
4
4
  export interface ElementOptions {
5
- shadowOptions?: ShadowRootOptions | undefined;
6
5
  observerMap?: ObserverMapOption | undefined;
7
6
  }
8
7
  /**
@@ -23,13 +22,18 @@ declare class TemplateElement extends FASTElement {
23
22
  * A dictionary of custom element options
24
23
  */
25
24
  static elementOptions: ElementOptionsDictionary;
26
- private partials;
27
25
  /**
28
26
  * ObserverMap instance for caching binding paths
29
27
  */
30
28
  private observerMap?;
31
- private schema?;
29
+ /**
30
+ * Default element options
31
+ */
32
32
  private static defaultElementOptions;
33
+ /**
34
+ * Metadata containing JSON schema for properties on a custom eleemnt
35
+ */
36
+ private schema?;
33
37
  static options(elementOptions?: ElementOptionsDictionary): typeof TemplateElement;
34
38
  constructor();
35
39
  /**
@@ -9,11 +9,8 @@ export const refPropertyName = "$ref";
9
9
  */
10
10
  export class Schema {
11
11
  constructor(name) {
12
- /**
13
- * A JSON schema describing each root schema
14
- */
15
- this.jsonSchemaMap = new Map();
16
12
  this.customElementName = name;
13
+ Schema.jsonSchemaMap.set(this.customElementName, new Map());
17
14
  }
18
15
  /**
19
16
  * Add a path to a schema
@@ -22,11 +19,11 @@ export class Schema {
22
19
  addPath(config) {
23
20
  var _a, _b, _c;
24
21
  const splitPath = this.getSplitPath(config.pathConfig.path);
25
- let schema = this.jsonSchemaMap.get(config.rootPropertyName);
22
+ let schema = Schema.jsonSchemaMap.get(this.customElementName).get(config.rootPropertyName);
26
23
  // Create a root level property JSON
27
24
  if (!schema) {
28
25
  this.addNewSchema(config.rootPropertyName);
29
- schema = this.jsonSchemaMap.get(config.rootPropertyName);
26
+ schema = Schema.jsonSchemaMap.get(this.customElementName).get(config.rootPropertyName);
30
27
  }
31
28
  switch (config.pathConfig.type) {
32
29
  case "default":
@@ -80,14 +77,14 @@ export class Schema {
80
77
  */
81
78
  getSchema(rootPropertyName) {
82
79
  var _a;
83
- return (_a = this.jsonSchemaMap.get(rootPropertyName)) !== null && _a !== void 0 ? _a : null;
80
+ return ((_a = Schema.jsonSchemaMap.get(this.customElementName).get(rootPropertyName)) !== null && _a !== void 0 ? _a : null);
84
81
  }
85
82
  /**
86
83
  * Gets root properties
87
84
  * @returns IterableIterator<string>
88
85
  */
89
86
  getRootProperties() {
90
- return this.jsonSchemaMap.keys();
87
+ return Schema.jsonSchemaMap.get(this.customElementName).keys();
91
88
  }
92
89
  /**
93
90
  * Get a path split into property names
@@ -110,7 +107,7 @@ export class Schema {
110
107
  * @param propertyName The name of the property to assign this JSON schema to
111
108
  */
112
109
  addNewSchema(propertyName) {
113
- this.jsonSchemaMap.set(propertyName, {
110
+ Schema.jsonSchemaMap.get(this.customElementName).set(propertyName, {
114
111
  $schema: "https://json-schema.org/draft/2019-09/schema",
115
112
  $id: `https://fast.design/schemas/${this.customElementName}/${propertyName}.json`,
116
113
  [defsPropertyName]: {},
@@ -213,3 +210,7 @@ export class Schema {
213
210
  return this.getParentContexts(schema, parentParentContext.at(-1), [parentContext, ...contexts]);
214
211
  }
215
212
  }
213
+ /**
214
+ * A JSON schema describing each root schema
215
+ */
216
+ Schema.jsonSchemaMap = new Map();
@@ -75,8 +75,41 @@ test.describe("Schema", () => __awaiter(void 0, void 0, void 0, function* () {
75
75
  expect((_b = schemaA.$defs) === null || _b === void 0 ? void 0 : _b["item"].$fast_context).toEqual("items");
76
76
  expect((_c = schemaA.$defs) === null || _c === void 0 ? void 0 : _c["item"].$fast_parent_contexts).toEqual([null]);
77
77
  }));
78
+ test("should add an object to a context in a schema", () => __awaiter(void 0, void 0, void 0, function* () {
79
+ var _d, _e, _f, _g, _h, _j;
80
+ const schema = new Schema("my-custom-element");
81
+ schema.addPath({
82
+ rootPropertyName: "items",
83
+ pathConfig: {
84
+ type: "repeat",
85
+ path: "items",
86
+ currentContext: "item",
87
+ parentContext: null,
88
+ },
89
+ });
90
+ schema.addPath({
91
+ rootPropertyName: "items",
92
+ pathConfig: {
93
+ type: "default",
94
+ path: "item.a.b",
95
+ currentContext: "item",
96
+ parentContext: null,
97
+ },
98
+ });
99
+ const schemaA = schema.getSchema("items");
100
+ expect(schemaA).toBeDefined();
101
+ expect(schemaA.$ref).toBeDefined();
102
+ expect(schemaA.$ref).toEqual("#/$defs/item");
103
+ expect(schemaA.type).toEqual("array");
104
+ expect((_d = schemaA.$defs) === null || _d === void 0 ? void 0 : _d["item"]).toBeDefined();
105
+ expect((_e = schemaA.$defs) === null || _e === void 0 ? void 0 : _e["item"].$fast_context).toEqual("items");
106
+ expect((_f = schemaA.$defs) === null || _f === void 0 ? void 0 : _f["item"].$fast_parent_contexts).toEqual([null]);
107
+ expect((_g = schemaA.$defs) === null || _g === void 0 ? void 0 : _g["item"].properties).toBeDefined();
108
+ expect((_h = schemaA.$defs) === null || _h === void 0 ? void 0 : _h["item"].properties["a"]).toBeDefined();
109
+ expect((_j = schemaA.$defs) === null || _j === void 0 ? void 0 : _j["item"].properties["a"].type).toEqual("object");
110
+ }));
78
111
  test("should add a nested context in a schema", () => __awaiter(void 0, void 0, void 0, function* () {
79
- var _d, _e, _f, _g, _h;
112
+ var _k, _l, _m, _o, _p;
80
113
  const schema = new Schema("my-custom-element");
81
114
  schema.addPath({
82
115
  rootPropertyName: "a",
@@ -98,14 +131,14 @@ test.describe("Schema", () => __awaiter(void 0, void 0, void 0, function* () {
98
131
  });
99
132
  const schemaA = schema.getSchema("a");
100
133
  expect(schemaA).toBeDefined();
101
- expect((_d = schemaA === null || schemaA === void 0 ? void 0 : schemaA.properties) === null || _d === void 0 ? void 0 : _d["items"]).toBeDefined();
102
- expect((_e = schemaA === null || schemaA === void 0 ? void 0 : schemaA.properties) === null || _e === void 0 ? void 0 : _e["items"].items.$ref).toEqual("#/$defs/item");
103
- expect((_f = schemaA.$defs) === null || _f === void 0 ? void 0 : _f["item"]).toBeDefined();
104
- expect((_g = schemaA.$defs) === null || _g === void 0 ? void 0 : _g["item"].$fast_context).toEqual("items");
105
- expect((_h = schemaA.$defs) === null || _h === void 0 ? void 0 : _h["item"].$fast_parent_contexts).toEqual([null]);
134
+ expect((_k = schemaA === null || schemaA === void 0 ? void 0 : schemaA.properties) === null || _k === void 0 ? void 0 : _k["items"]).toBeDefined();
135
+ expect((_l = schemaA === null || schemaA === void 0 ? void 0 : schemaA.properties) === null || _l === void 0 ? void 0 : _l["items"].items.$ref).toEqual("#/$defs/item");
136
+ expect((_m = schemaA.$defs) === null || _m === void 0 ? void 0 : _m["item"]).toBeDefined();
137
+ expect((_o = schemaA.$defs) === null || _o === void 0 ? void 0 : _o["item"].$fast_context).toEqual("items");
138
+ expect((_p = schemaA.$defs) === null || _p === void 0 ? void 0 : _p["item"].$fast_parent_contexts).toEqual([null]);
106
139
  }));
107
140
  test("should define an object as a nested context in a schema", () => __awaiter(void 0, void 0, void 0, function* () {
108
- var _j, _k, _l, _m, _o, _p, _q;
141
+ var _q, _r, _s, _t, _u, _v, _w;
109
142
  const schema = new Schema("my-custom-element");
110
143
  schema.addPath({
111
144
  rootPropertyName: "a",
@@ -136,15 +169,15 @@ test.describe("Schema", () => __awaiter(void 0, void 0, void 0, function* () {
136
169
  });
137
170
  const schemaA = schema.getSchema("a");
138
171
  expect(schemaA).toBeDefined();
139
- expect((_j = schemaA.$defs) === null || _j === void 0 ? void 0 : _j["item"]).toBeDefined();
140
- expect((_k = schemaA.$defs) === null || _k === void 0 ? void 0 : _k["item"].$fast_context).toEqual("items");
141
- expect((_l = schemaA.$defs) === null || _l === void 0 ? void 0 : _l["item"].$fast_parent_contexts).toEqual([null]);
142
- expect((_m = schemaA.$defs) === null || _m === void 0 ? void 0 : _m["item"].type).toEqual("object");
143
- expect((_o = schemaA.$defs) === null || _o === void 0 ? void 0 : _o["item"].properties).toBeDefined();
144
- expect((_q = (_p = schemaA.$defs) === null || _p === void 0 ? void 0 : _p["item"].properties) === null || _q === void 0 ? void 0 : _q["b"]).toBeDefined();
172
+ expect((_q = schemaA.$defs) === null || _q === void 0 ? void 0 : _q["item"]).toBeDefined();
173
+ expect((_r = schemaA.$defs) === null || _r === void 0 ? void 0 : _r["item"].$fast_context).toEqual("items");
174
+ expect((_s = schemaA.$defs) === null || _s === void 0 ? void 0 : _s["item"].$fast_parent_contexts).toEqual([null]);
175
+ expect((_t = schemaA.$defs) === null || _t === void 0 ? void 0 : _t["item"].type).toEqual("object");
176
+ expect((_u = schemaA.$defs) === null || _u === void 0 ? void 0 : _u["item"].properties).toBeDefined();
177
+ expect((_w = (_v = schemaA.$defs) === null || _v === void 0 ? void 0 : _v["item"].properties) === null || _w === void 0 ? void 0 : _w["b"]).toBeDefined();
145
178
  }));
146
179
  test("should define nested contexts in a schema", () => __awaiter(void 0, void 0, void 0, function* () {
147
- var _r, _s, _t, _u, _v, _w;
180
+ var _x, _y, _z, _0, _1, _2;
148
181
  const schema = new Schema("my-custom-element");
149
182
  schema.addPath({
150
183
  rootPropertyName: "a",
@@ -175,15 +208,15 @@ test.describe("Schema", () => __awaiter(void 0, void 0, void 0, function* () {
175
208
  });
176
209
  const schemaA = schema.getSchema("a");
177
210
  expect(schemaA).toBeDefined();
178
- expect((_r = schemaA.$defs) === null || _r === void 0 ? void 0 : _r["user"]).toBeDefined();
179
- expect((_s = schemaA.$defs) === null || _s === void 0 ? void 0 : _s["user"].$fast_context).toEqual("users");
180
- expect((_t = schemaA.$defs) === null || _t === void 0 ? void 0 : _t["user"].$fast_parent_contexts).toEqual([null]);
181
- expect((_u = schemaA.$defs) === null || _u === void 0 ? void 0 : _u["post"]).toBeDefined();
182
- expect((_v = schemaA.$defs) === null || _v === void 0 ? void 0 : _v["post"].$fast_context).toEqual("posts");
183
- expect((_w = schemaA.$defs) === null || _w === void 0 ? void 0 : _w["post"].$fast_parent_contexts).toEqual([null, "user"]);
211
+ expect((_x = schemaA.$defs) === null || _x === void 0 ? void 0 : _x["user"]).toBeDefined();
212
+ expect((_y = schemaA.$defs) === null || _y === void 0 ? void 0 : _y["user"].$fast_context).toEqual("users");
213
+ expect((_z = schemaA.$defs) === null || _z === void 0 ? void 0 : _z["user"].$fast_parent_contexts).toEqual([null]);
214
+ expect((_0 = schemaA.$defs) === null || _0 === void 0 ? void 0 : _0["post"]).toBeDefined();
215
+ expect((_1 = schemaA.$defs) === null || _1 === void 0 ? void 0 : _1["post"].$fast_context).toEqual("posts");
216
+ expect((_2 = schemaA.$defs) === null || _2 === void 0 ? void 0 : _2["post"].$fast_parent_contexts).toEqual([null, "user"]);
184
217
  }));
185
218
  test("should define nested contexts with objects in a schema", () => __awaiter(void 0, void 0, void 0, function* () {
186
- var _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17;
219
+ var _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23;
187
220
  const schema = new Schema("my-custom-element");
188
221
  schema.addPath({
189
222
  rootPropertyName: "a",
@@ -232,26 +265,26 @@ test.describe("Schema", () => __awaiter(void 0, void 0, void 0, function* () {
232
265
  });
233
266
  const schemaA = schema.getSchema("a");
234
267
  expect(schemaA).toBeDefined();
235
- expect((_x = schemaA.$defs) === null || _x === void 0 ? void 0 : _x["user"]).toBeDefined();
236
- expect((_y = schemaA.$defs) === null || _y === void 0 ? void 0 : _y["user"].$fast_context).toEqual("users");
237
- expect((_z = schemaA.$defs) === null || _z === void 0 ? void 0 : _z["user"].$fast_parent_contexts).toEqual([null]);
238
- expect((_0 = schemaA.$defs) === null || _0 === void 0 ? void 0 : _0["user"].type).toEqual("object");
239
- expect((_1 = schemaA.$defs) === null || _1 === void 0 ? void 0 : _1["user"].properties).toBeDefined();
240
- expect((_2 = schemaA.$defs) === null || _2 === void 0 ? void 0 : _2["user"].properties["a"]).toBeDefined();
241
- expect((_3 = schemaA.$defs) === null || _3 === void 0 ? void 0 : _3["user"].properties["a"].properties["b"]).toBeDefined();
242
- expect((_4 = schemaA.$defs) === null || _4 === void 0 ? void 0 : _4["post"]).toBeDefined();
243
- expect((_5 = schemaA.$defs) === null || _5 === void 0 ? void 0 : _5["post"].$fast_context).toEqual("posts");
244
- expect((_6 = schemaA.$defs) === null || _6 === void 0 ? void 0 : _6["post"].$fast_parent_contexts).toEqual([null, "user"]);
245
- expect((_7 = schemaA.$defs) === null || _7 === void 0 ? void 0 : _7["post"].type).toEqual("object");
246
- expect((_8 = schemaA.$defs) === null || _8 === void 0 ? void 0 : _8["post"].properties).toBeDefined();
247
- expect((_9 = schemaA.$defs) === null || _9 === void 0 ? void 0 : _9["post"].properties["c"]).toBeDefined();
248
- expect((_10 = schemaA.$defs) === null || _10 === void 0 ? void 0 : _10["post"].properties["c"].properties["d"]).toBeDefined();
249
- expect((_11 = schemaA.$defs) === null || _11 === void 0 ? void 0 : _11["post"].properties["meta"]).toBeDefined();
250
- expect((_12 = schemaA.$defs) === null || _12 === void 0 ? void 0 : _12["post"].properties["meta"].properties["tags"]).toBeDefined();
251
- expect((_13 = schemaA.$defs) === null || _13 === void 0 ? void 0 : _13["post"].properties["meta"].properties["tags"].items).toBeDefined();
252
- expect((_14 = schemaA.$defs) === null || _14 === void 0 ? void 0 : _14["post"].properties["meta"].properties["tags"].items.$ref).toEqual("#/$defs/tag");
253
- expect((_15 = schemaA.$defs) === null || _15 === void 0 ? void 0 : _15["tag"]).toBeDefined();
254
- expect((_16 = schemaA.$defs) === null || _16 === void 0 ? void 0 : _16["tag"].$fast_context).toEqual("tags");
255
- expect((_17 = schemaA.$defs) === null || _17 === void 0 ? void 0 : _17["tag"].$fast_parent_contexts).toEqual([null, "user", "post"]);
268
+ expect((_3 = schemaA.$defs) === null || _3 === void 0 ? void 0 : _3["user"]).toBeDefined();
269
+ expect((_4 = schemaA.$defs) === null || _4 === void 0 ? void 0 : _4["user"].$fast_context).toEqual("users");
270
+ expect((_5 = schemaA.$defs) === null || _5 === void 0 ? void 0 : _5["user"].$fast_parent_contexts).toEqual([null]);
271
+ expect((_6 = schemaA.$defs) === null || _6 === void 0 ? void 0 : _6["user"].type).toEqual("object");
272
+ expect((_7 = schemaA.$defs) === null || _7 === void 0 ? void 0 : _7["user"].properties).toBeDefined();
273
+ expect((_8 = schemaA.$defs) === null || _8 === void 0 ? void 0 : _8["user"].properties["a"]).toBeDefined();
274
+ expect((_9 = schemaA.$defs) === null || _9 === void 0 ? void 0 : _9["user"].properties["a"].properties["b"]).toBeDefined();
275
+ expect((_10 = schemaA.$defs) === null || _10 === void 0 ? void 0 : _10["post"]).toBeDefined();
276
+ expect((_11 = schemaA.$defs) === null || _11 === void 0 ? void 0 : _11["post"].$fast_context).toEqual("posts");
277
+ expect((_12 = schemaA.$defs) === null || _12 === void 0 ? void 0 : _12["post"].$fast_parent_contexts).toEqual([null, "user"]);
278
+ expect((_13 = schemaA.$defs) === null || _13 === void 0 ? void 0 : _13["post"].type).toEqual("object");
279
+ expect((_14 = schemaA.$defs) === null || _14 === void 0 ? void 0 : _14["post"].properties).toBeDefined();
280
+ expect((_15 = schemaA.$defs) === null || _15 === void 0 ? void 0 : _15["post"].properties["c"]).toBeDefined();
281
+ expect((_16 = schemaA.$defs) === null || _16 === void 0 ? void 0 : _16["post"].properties["c"].properties["d"]).toBeDefined();
282
+ expect((_17 = schemaA.$defs) === null || _17 === void 0 ? void 0 : _17["post"].properties["meta"]).toBeDefined();
283
+ expect((_18 = schemaA.$defs) === null || _18 === void 0 ? void 0 : _18["post"].properties["meta"].properties["tags"]).toBeDefined();
284
+ expect((_19 = schemaA.$defs) === null || _19 === void 0 ? void 0 : _19["post"].properties["meta"].properties["tags"].items).toBeDefined();
285
+ expect((_20 = schemaA.$defs) === null || _20 === void 0 ? void 0 : _20["post"].properties["meta"].properties["tags"].items.$ref).toEqual("#/$defs/tag");
286
+ expect((_21 = schemaA.$defs) === null || _21 === void 0 ? void 0 : _21["tag"]).toBeDefined();
287
+ expect((_22 = schemaA.$defs) === null || _22 === void 0 ? void 0 : _22["tag"].$fast_context).toEqual("tags");
288
+ expect((_23 = schemaA.$defs) === null || _23 === void 0 ? void 0 : _23["tag"].$fast_parent_contexts).toEqual([null, "user", "post"]);
256
289
  }));
257
290
  }));
@@ -9,12 +9,10 @@ import { Schema } from "./schema.js";
9
9
  */
10
10
  class TemplateElement extends FASTElement {
11
11
  static options(elementOptions = {}) {
12
- var _a;
13
12
  const result = {};
14
13
  for (const key in elementOptions) {
15
14
  const value = elementOptions[key];
16
15
  result[key] = {
17
- shadowOptions: (_a = value.shadowOptions) !== null && _a !== void 0 ? _a : TemplateElement.defaultElementOptions.shadowOptions,
18
16
  observerMap: value.observerMap,
19
17
  };
20
18
  }
@@ -24,7 +22,6 @@ class TemplateElement extends FASTElement {
24
22
  }
25
23
  constructor() {
26
24
  super();
27
- this.partials = {};
28
25
  // Ensure elementOptions is initialized if it's empty
29
26
  if (!TemplateElement.elementOptions ||
30
27
  Object.keys(TemplateElement.elementOptions).length === 0) {
@@ -45,7 +42,7 @@ class TemplateElement extends FASTElement {
45
42
  if (typeof this.name === "string") {
46
43
  this.schema = new Schema(this.name);
47
44
  FASTElementDefinition.registerAsync(this.name).then((value) => __awaiter(this, void 0, void 0, function* () {
48
- var _a, _b, _c, _d;
45
+ var _a, _b, _c;
49
46
  if (!((_a = TemplateElement.elementOptions) === null || _a === void 0 ? void 0 : _a[this.name])) {
50
47
  TemplateElement.setOptions(this.name);
51
48
  }
@@ -64,9 +61,6 @@ class TemplateElement extends FASTElement {
64
61
  if (registeredFastElement) {
65
62
  // all new elements will get the updated template
66
63
  registeredFastElement.template = this.resolveTemplateOrBehavior(strings, values);
67
- // set shadow options as defined by the f-template
68
- registeredFastElement.shadowOptions =
69
- (_d = TemplateElement.elementOptions[this.name]) === null || _d === void 0 ? void 0 : _d.shadowOptions;
70
64
  }
71
65
  }
72
66
  else {
@@ -272,11 +266,10 @@ class TemplateElement extends FASTElement {
272
266
  * A dictionary of custom element options
273
267
  */
274
268
  TemplateElement.elementOptions = {};
275
- TemplateElement.defaultElementOptions = {
276
- shadowOptions: {
277
- mode: "open",
278
- },
279
- };
269
+ /**
270
+ * Default element options
271
+ */
272
+ TemplateElement.defaultElementOptions = {};
280
273
  __decorate([
281
274
  attr,
282
275
  __metadata("design:type", String)