element-vir 26.12.0 → 26.12.1

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.
Files changed (189) hide show
  1. package/dist/declarative-element/custom-tag-name.js +1 -0
  2. package/dist/declarative-element/declarative-element-init.d.ts +56 -0
  3. package/dist/declarative-element/declarative-element-init.js +1 -0
  4. package/dist/declarative-element/declarative-element.d.ts +114 -0
  5. package/dist/declarative-element/declarative-element.js +36 -0
  6. package/dist/declarative-element/define-element.d.ts +41 -0
  7. package/dist/declarative-element/define-element.js +248 -0
  8. package/{src/declarative-element/definition-options.ts → dist/declarative-element/definition-options.d.ts} +2 -7
  9. package/dist/declarative-element/definition-options.js +9 -0
  10. package/dist/declarative-element/directives/assign.directive.d.ts +24 -0
  11. package/dist/declarative-element/directives/assign.directive.js +34 -0
  12. package/dist/declarative-element/directives/async-prop.d.ts +61 -0
  13. package/{src/declarative-element/directives/async-prop.ts → dist/declarative-element/directives/async-prop.js} +8 -42
  14. package/dist/declarative-element/directives/attributes.directive.d.ts +30 -0
  15. package/dist/declarative-element/directives/attributes.directive.js +35 -0
  16. package/dist/declarative-element/directives/create-attribute-directive.d.ts +28 -0
  17. package/dist/declarative-element/directives/create-attribute-directive.js +41 -0
  18. package/dist/declarative-element/directives/directive-helpers.d.ts +27 -0
  19. package/dist/declarative-element/directives/directive-helpers.js +37 -0
  20. package/dist/declarative-element/directives/listen-to-activate.d.ts +15 -0
  21. package/{src/declarative-element/directives/listen-to-activate.ts → dist/declarative-element/directives/listen-to-activate.js} +3 -8
  22. package/dist/declarative-element/directives/listen.directive.d.ts +92 -0
  23. package/dist/declarative-element/directives/listen.directive.js +48 -0
  24. package/dist/declarative-element/directives/mutate.directive.d.ts +38 -0
  25. package/dist/declarative-element/directives/mutate.directive.js +45 -0
  26. package/dist/declarative-element/directives/on-dom-created.directive.d.ts +44 -0
  27. package/dist/declarative-element/directives/on-dom-created.directive.js +51 -0
  28. package/dist/declarative-element/directives/on-dom-rendered.directive.d.ts +41 -0
  29. package/dist/declarative-element/directives/on-dom-rendered.directive.js +45 -0
  30. package/dist/declarative-element/directives/on-intersect.directive.d.ts +64 -0
  31. package/dist/declarative-element/directives/on-intersect.directive.js +89 -0
  32. package/dist/declarative-element/directives/on-resize.directive.d.ts +74 -0
  33. package/dist/declarative-element/directives/on-resize.directive.js +106 -0
  34. package/dist/declarative-element/directives/render-async.directive.d.ts +45 -0
  35. package/dist/declarative-element/directives/render-async.directive.js +33 -0
  36. package/dist/declarative-element/directives/render-if.directive.d.ts +32 -0
  37. package/{src/declarative-element/directives/render-if.directive.ts → dist/declarative-element/directives/render-if.directive.js} +3 -12
  38. package/dist/declarative-element/directives/test-id.directive.d.ts +52 -0
  39. package/{src/declarative-element/directives/test-id.directive.ts → dist/declarative-element/directives/test-id.directive.js} +2 -7
  40. package/dist/declarative-element/has-declarative-element-parent.d.ts +1 -0
  41. package/{src/declarative-element/has-declarative-element-parent.ts → dist/declarative-element/has-declarative-element-parent.js} +4 -7
  42. package/dist/declarative-element/is-declarative-element-definition.d.ts +17 -0
  43. package/{src/declarative-element/is-declarative-element-definition.ts → dist/declarative-element/is-declarative-element-definition.js} +11 -28
  44. package/dist/declarative-element/is-declarative-element.d.ts +15 -0
  45. package/{src/declarative-element/is-declarative-element.ts → dist/declarative-element/is-declarative-element.js} +5 -11
  46. package/dist/declarative-element/properties/assign-inputs.d.ts +1 -0
  47. package/dist/declarative-element/properties/assign-inputs.js +25 -0
  48. package/dist/declarative-element/properties/css-vars.d.ts +16 -0
  49. package/dist/declarative-element/properties/css-vars.js +1 -0
  50. package/dist/declarative-element/properties/element-events.d.ts +65 -0
  51. package/dist/declarative-element/properties/element-events.js +62 -0
  52. package/dist/declarative-element/properties/element-properties.js +1 -0
  53. package/dist/declarative-element/properties/host-classes.d.ts +36 -0
  54. package/dist/declarative-element/properties/host-classes.js +16 -0
  55. package/dist/declarative-element/properties/property-proxy.d.ts +22 -0
  56. package/{src/declarative-element/properties/property-proxy.ts → dist/declarative-element/properties/property-proxy.js} +21 -58
  57. package/dist/declarative-element/properties/string-names.d.ts +28 -0
  58. package/dist/declarative-element/properties/string-names.js +40 -0
  59. package/dist/declarative-element/properties/styles.d.ts +51 -0
  60. package/dist/declarative-element/properties/styles.js +41 -0
  61. package/dist/declarative-element/properties/tag-name.js +1 -0
  62. package/dist/declarative-element/render-callback.d.ts +56 -0
  63. package/dist/declarative-element/render-callback.js +27 -0
  64. package/dist/declarative-element/wrap-define-element.d.ts +36 -0
  65. package/dist/declarative-element/wrap-define-element.js +25 -0
  66. package/{src/index.ts → dist/index.d.ts} +0 -1
  67. package/dist/index.js +43 -0
  68. package/dist/lit-exports/all-lit-exports.js +2 -0
  69. package/{src/lit-exports/base-lit-exports.ts → dist/lit-exports/base-lit-exports.d.ts} +2 -10
  70. package/dist/lit-exports/base-lit-exports.js +24 -0
  71. package/{src/lit-exports/lit-repeat-fix.ts → dist/lit-exports/lit-repeat-fix.d.ts} +16 -45
  72. package/dist/lit-exports/lit-repeat-fix.js +37 -0
  73. package/dist/readme-examples/my-app.element.d.ts +1 -0
  74. package/{src/readme-examples/my-app.element.ts → dist/readme-examples/my-app.element.js} +4 -5
  75. package/dist/readme-examples/my-custom-action.event.d.ts +1 -0
  76. package/dist/readme-examples/my-custom-action.event.js +2 -0
  77. package/dist/readme-examples/my-custom-define.d.ts +4 -0
  78. package/{src/readme-examples/my-custom-define.ts → dist/readme-examples/my-custom-define.js} +4 -9
  79. package/dist/readme-examples/my-simple.element.d.ts +1 -0
  80. package/{src/readme-examples/my-simple.element.ts → dist/readme-examples/my-simple.element.js} +3 -4
  81. package/dist/readme-examples/my-with-assignment.element.d.ts +1 -0
  82. package/dist/readme-examples/my-with-assignment.element.js +15 -0
  83. package/dist/readme-examples/my-with-async-prop.element.d.ts +10 -0
  84. package/{src/readme-examples/my-with-async-prop.element.ts → dist/readme-examples/my-with-async-prop.element.js} +16 -24
  85. package/dist/readme-examples/my-with-cleanup-callback.element.d.ts +3 -0
  86. package/{src/readme-examples/my-with-cleanup-callback.element.ts → dist/readme-examples/my-with-cleanup-callback.element.js} +4 -5
  87. package/dist/readme-examples/my-with-css-vars.element.d.ts +1 -0
  88. package/{src/readme-examples/my-with-css-vars.element.ts → dist/readme-examples/my-with-css-vars.element.js} +4 -5
  89. package/dist/readme-examples/my-with-custom-events.element.d.ts +1 -0
  90. package/dist/readme-examples/my-with-custom-events.element.js +22 -0
  91. package/dist/readme-examples/my-with-event-listening.element.d.ts +3 -0
  92. package/{src/readme-examples/my-with-event-listening.element.ts → dist/readme-examples/my-with-event-listening.element.js} +9 -10
  93. package/dist/readme-examples/my-with-events.element.d.ts +4 -0
  94. package/dist/readme-examples/my-with-events.element.js +20 -0
  95. package/dist/readme-examples/my-with-host-class-definition.element.d.ts +3 -0
  96. package/{src/readme-examples/my-with-host-class-definition.element.ts → dist/readme-examples/my-with-host-class-definition.element.js} +6 -7
  97. package/dist/readme-examples/my-with-host-class-usage.element.d.ts +1 -0
  98. package/{src/readme-examples/my-with-host-class-usage.element.ts → dist/readme-examples/my-with-host-class-usage.element.js} +4 -5
  99. package/dist/readme-examples/my-with-inputs.element.d.ts +4 -0
  100. package/dist/readme-examples/my-with-inputs.element.js +9 -0
  101. package/dist/readme-examples/my-with-on-dom-created.element.d.ts +1 -0
  102. package/{src/readme-examples/my-with-on-dom-created.element.ts → dist/readme-examples/my-with-on-dom-created.element.js} +6 -7
  103. package/dist/readme-examples/my-with-on-resize.element.d.ts +1 -0
  104. package/dist/readme-examples/my-with-on-resize.element.js +18 -0
  105. package/dist/readme-examples/my-with-render-if.element.d.ts +3 -0
  106. package/dist/readme-examples/my-with-render-if.element.js +11 -0
  107. package/dist/readme-examples/my-with-styles-and-interpolated-selector.element.d.ts +1 -0
  108. package/{src/readme-examples/my-with-styles-and-interpolated-selector.element.ts → dist/readme-examples/my-with-styles-and-interpolated-selector.element.js} +5 -6
  109. package/dist/readme-examples/my-with-styles.element.d.ts +1 -0
  110. package/{src/readme-examples/my-with-styles.element.ts → dist/readme-examples/my-with-styles.element.js} +4 -5
  111. package/dist/readme-examples/my-with-update-state.element.d.ts +8 -0
  112. package/{src/readme-examples/my-with-update-state.element.ts → dist/readme-examples/my-with-update-state.element.js} +7 -8
  113. package/dist/readme-examples/require-declarative-element.d.ts +1 -0
  114. package/dist/readme-examples/require-declarative-element.js +2 -0
  115. package/dist/require-declarative-element.d.ts +14 -0
  116. package/{src/require-declarative-element.ts → dist/require-declarative-element.js} +0 -1
  117. package/{src/template-transforms/minimal-element-definition.ts → dist/template-transforms/minimal-element-definition.d.ts} +7 -19
  118. package/dist/template-transforms/minimal-element-definition.js +19 -0
  119. package/dist/template-transforms/nested-mapped-templates.d.ts +6 -0
  120. package/dist/template-transforms/nested-mapped-templates.js +96 -0
  121. package/{src/template-transforms/template-transform-type.ts → dist/template-transforms/template-transform-type.d.ts} +1 -3
  122. package/dist/template-transforms/template-transform-type.js +1 -0
  123. package/dist/template-transforms/transform-template.d.ts +14 -0
  124. package/{src/template-transforms/transform-template.ts → dist/template-transforms/transform-template.js} +22 -70
  125. package/dist/template-transforms/vir-css/css-transform.d.ts +4 -0
  126. package/dist/template-transforms/vir-css/css-transform.js +15 -0
  127. package/dist/template-transforms/vir-css/vir-css.d.ts +12 -0
  128. package/dist/template-transforms/vir-css/vir-css.js +21 -0
  129. package/dist/template-transforms/vir-html/html-interpolation.d.ts +42 -0
  130. package/dist/template-transforms/vir-html/html-interpolation.js +1 -0
  131. package/dist/template-transforms/vir-html/html-transform.d.ts +5 -0
  132. package/dist/template-transforms/vir-html/html-transform.js +96 -0
  133. package/dist/template-transforms/vir-html/tag-name-keys.d.ts +7 -0
  134. package/{src/template-transforms/vir-html/tag-name-keys.ts → dist/template-transforms/vir-html/tag-name-keys.js} +1 -1
  135. package/dist/template-transforms/vir-html/vir-html.d.ts +11 -0
  136. package/{src/template-transforms/vir-html/vir-html.ts → dist/template-transforms/vir-html/vir-html.js} +5 -13
  137. package/dist/typed-event/typed-event.d.ts +55 -0
  138. package/dist/typed-event/typed-event.js +50 -0
  139. package/dist/util/array.d.ts +5 -0
  140. package/{src/util/array.ts → dist/util/array.js} +5 -18
  141. package/{src/util/increment.ts → dist/util/increment.d.ts} +5 -24
  142. package/dist/util/increment.js +1 -0
  143. package/dist/util/lit-template.d.ts +9 -0
  144. package/{src/util/lit-template.ts → dist/util/lit-template.js} +10 -30
  145. package/dist/util/map-async-value.d.ts +7 -0
  146. package/{src/util/map-async-value.ts → dist/util/map-async-value.js} +10 -12
  147. package/dist/util/type.js +1 -0
  148. package/package.json +4 -4
  149. package/src/declarative-element/declarative-element-init.ts +0 -115
  150. package/src/declarative-element/declarative-element.ts +0 -372
  151. package/src/declarative-element/define-element.ts +0 -515
  152. package/src/declarative-element/directives/assign.directive.ts +0 -89
  153. package/src/declarative-element/directives/attributes.directive.ts +0 -63
  154. package/src/declarative-element/directives/create-attribute-directive.ts +0 -47
  155. package/src/declarative-element/directives/directive-helpers.ts +0 -67
  156. package/src/declarative-element/directives/listen.directive.ts +0 -206
  157. package/src/declarative-element/directives/mutate.directive.ts +0 -78
  158. package/src/declarative-element/directives/on-dom-created.directive.ts +0 -68
  159. package/src/declarative-element/directives/on-dom-rendered.directive.ts +0 -61
  160. package/src/declarative-element/directives/on-intersect.directive.ts +0 -139
  161. package/src/declarative-element/directives/on-resize.directive.ts +0 -142
  162. package/src/declarative-element/directives/render-async.directive.ts +0 -111
  163. package/src/declarative-element/properties/assign-inputs.ts +0 -30
  164. package/src/declarative-element/properties/css-vars.ts +0 -24
  165. package/src/declarative-element/properties/element-events.ts +0 -161
  166. package/src/declarative-element/properties/host-classes.ts +0 -63
  167. package/src/declarative-element/properties/string-names.ts +0 -83
  168. package/src/declarative-element/properties/styles.ts +0 -112
  169. package/src/declarative-element/render-callback.ts +0 -196
  170. package/src/declarative-element/wrap-define-element.ts +0 -127
  171. package/src/readme-examples/my-custom-action.event.ts +0 -3
  172. package/src/readme-examples/my-with-assignment.element.ts +0 -16
  173. package/src/readme-examples/my-with-custom-events.element.ts +0 -23
  174. package/src/readme-examples/my-with-events.element.ts +0 -23
  175. package/src/readme-examples/my-with-inputs.element.ts +0 -13
  176. package/src/readme-examples/my-with-on-resize.element.ts +0 -19
  177. package/src/readme-examples/my-with-render-if.element.ts +0 -15
  178. package/src/readme-examples/require-declarative-element.ts +0 -3
  179. package/src/template-transforms/nested-mapped-templates.ts +0 -157
  180. package/src/template-transforms/vir-css/css-transform.ts +0 -30
  181. package/src/template-transforms/vir-css/vir-css.ts +0 -30
  182. package/src/template-transforms/vir-html/html-interpolation.ts +0 -103
  183. package/src/template-transforms/vir-html/html-transform.ts +0 -149
  184. package/src/typed-event/typed-event.ts +0 -90
  185. /package/{src/declarative-element/custom-tag-name.ts → dist/declarative-element/custom-tag-name.d.ts} +0 -0
  186. /package/{src/declarative-element/properties/element-properties.ts → dist/declarative-element/properties/element-properties.d.ts} +0 -0
  187. /package/{src/declarative-element/properties/tag-name.ts → dist/declarative-element/properties/tag-name.d.ts} +0 -0
  188. /package/{src/lit-exports/all-lit-exports.ts → dist/lit-exports/all-lit-exports.d.ts} +0 -0
  189. /package/{src/util/type.ts → dist/util/type.d.ts} +0 -0
@@ -0,0 +1,28 @@
1
+ import { type ArrayElement } from '@augment-vir/common';
2
+ import { type CustomElementTagName } from '../custom-tag-name.js';
3
+ /**
4
+ * Base requirement for all string names with the element tag name prepended.
5
+ *
6
+ * @category Internal
7
+ */
8
+ export type BaseStringName<ElementTagName extends CustomElementTagName> = `${ElementTagName}-${string}`;
9
+ /**
10
+ * Asserts that all the given string names for the given element are valid.
11
+ *
12
+ * @category Internal
13
+ */
14
+ export declare function assertValidStringNames(elementTagName: CustomElementTagName, stringNames: Record<BaseStringName<CustomElementTagName>, any>): void;
15
+ /**
16
+ * Type safe mapping of string names to themself with the element tag name inserted.
17
+ *
18
+ * @category Internal
19
+ */
20
+ export type StringNameMap<ElementTagName extends CustomElementTagName, NameType extends string, StringNames extends ReadonlyArray<string>> = Readonly<{
21
+ [StringName in ArrayElement<StringNames>]: `${ElementTagName}-${NameType}-${StringName}`;
22
+ }>;
23
+ /**
24
+ * Converts an array of string names into a `StringNameMap`.
25
+ *
26
+ * @category Internal
27
+ */
28
+ export declare function createStringNameMap<ElementTagName extends CustomElementTagName, NameType extends string, StringNames extends ReadonlyArray<string>>(elementTagName: ElementTagName, nameType: NameType, stringNames: StringNames | undefined): StringNameMap<ElementTagName, NameType, StringNames>;
@@ -0,0 +1,40 @@
1
+ import { arrayToObject } from '@augment-vir/common';
2
+ /**
3
+ * Asserts that all the given string names for the given element are valid.
4
+ *
5
+ * @category Internal
6
+ */
7
+ export function assertValidStringNames(elementTagName, stringNames) {
8
+ const requiredNameStart = [
9
+ elementTagName,
10
+ '-',
11
+ ].join('');
12
+ Object.keys(stringNames).forEach((stringName) => {
13
+ if (!stringName.startsWith(requiredNameStart)) {
14
+ throw new Error(`Invalid element string name '${stringName}' in '${elementTagName}': element string names must begin with the element's tag name.`);
15
+ }
16
+ });
17
+ }
18
+ /**
19
+ * Converts an array of string names into a `StringNameMap`.
20
+ *
21
+ * @category Internal
22
+ */
23
+ export function createStringNameMap(elementTagName, nameType, stringNames) {
24
+ if (!stringNames) {
25
+ return {};
26
+ }
27
+ const stringNameMap = arrayToObject(stringNames, (stringName) => {
28
+ return {
29
+ key: stringName,
30
+ value: [
31
+ elementTagName,
32
+ nameType,
33
+ stringName,
34
+ ].join('-'),
35
+ };
36
+ }, {
37
+ useRequired: true,
38
+ });
39
+ return stringNameMap;
40
+ }
@@ -0,0 +1,51 @@
1
+ import { type CSSResult } from '../../lit-exports/base-lit-exports.js';
2
+ import { type CustomElementTagName } from '../custom-tag-name.js';
3
+ import { type CssVars } from './css-vars.js';
4
+ import { type PropertyInitMapBase } from './element-properties.js';
5
+ import { type HostClassNamesMap, type HostClassesInitMap } from './host-classes.js';
6
+ import { type BaseStringName } from './string-names.js';
7
+ /**
8
+ * A host class instance to be referenced inside of an element definition's `styles` callback.
9
+ *
10
+ * @category Internal
11
+ */
12
+ export type HostClass = {
13
+ selector: CSSResult;
14
+ name: CSSResult;
15
+ };
16
+ /**
17
+ * Input type for an element definition's `styles` callback.
18
+ *
19
+ * @category Internal
20
+ */
21
+ export type StylesCallbackInput<TagName extends CustomElementTagName, HostClassKeys extends BaseStringName<TagName>, CssVarKeys extends BaseStringName<TagName>> = {
22
+ hostClasses: Record<HostClassKeys, HostClass>;
23
+ cssVars: Readonly<CssVars<TagName, CssVarKeys>>;
24
+ };
25
+ /**
26
+ * The type for an element definition's `styles` callback.
27
+ *
28
+ * @category Internal
29
+ */
30
+ export type StylesCallback<TagName extends CustomElementTagName, HostClassKeys extends BaseStringName<TagName>, CssVarKeys extends BaseStringName<TagName>> = (input: StylesCallbackInput<TagName, HostClassKeys, CssVarKeys>) => CSSResult;
31
+ /**
32
+ * Creates the input for an element definition's `styles` callback.
33
+ *
34
+ * @category Internal
35
+ */
36
+ export declare function createStylesCallbackInput<TagName extends CustomElementTagName, HostClassKeys extends BaseStringName<TagName>, CssVarKeys extends BaseStringName<TagName>>({ hostClassNames, cssVars, }: {
37
+ hostClassNames: HostClassNamesMap<TagName, HostClassKeys>;
38
+ cssVars: Readonly<CssVars<TagName, CssVarKeys>>;
39
+ }): StylesCallbackInput<TagName, HostClassKeys, CssVarKeys>;
40
+ /**
41
+ * Used inside of an element instance to apply host classes on each render.
42
+ *
43
+ * @category Internal
44
+ */
45
+ export declare function applyHostClasses<TagName extends CustomElementTagName, Inputs extends PropertyInitMapBase, State extends PropertyInitMapBase, HostClassKeys extends BaseStringName<TagName>>({ host, hostClassesInit, hostClassNames, state, inputs, }: {
46
+ host: HTMLElement;
47
+ hostClassesInit: Readonly<HostClassesInitMap<TagName, HostClassKeys, Inputs, State>> | undefined;
48
+ hostClassNames: HostClassNamesMap<string, HostClassKeys>;
49
+ state: Readonly<State>;
50
+ inputs: Readonly<Inputs>;
51
+ }): void;
@@ -0,0 +1,41 @@
1
+ import { getObjectTypedKeys, mapObjectValues } from '@augment-vir/common';
2
+ import { unsafeCSS } from '../../lit-exports/base-lit-exports.js';
3
+ /**
4
+ * Creates the input for an element definition's `styles` callback.
5
+ *
6
+ * @category Internal
7
+ */
8
+ export function createStylesCallbackInput({ hostClassNames, cssVars, }) {
9
+ return {
10
+ hostClasses: mapObjectValues(hostClassNames, (key, name) => {
11
+ return {
12
+ name: unsafeCSS(name),
13
+ selector: unsafeCSS(`:host(.${name})`),
14
+ };
15
+ }),
16
+ cssVars,
17
+ };
18
+ }
19
+ /**
20
+ * Used inside of an element instance to apply host classes on each render.
21
+ *
22
+ * @category Internal
23
+ */
24
+ export function applyHostClasses({ host, hostClassesInit, hostClassNames, state, inputs, }) {
25
+ if (!hostClassesInit) {
26
+ return;
27
+ }
28
+ getObjectTypedKeys(hostClassesInit).forEach((hostClassKey) => {
29
+ const maybeCallback = hostClassesInit[hostClassKey];
30
+ const hostClassName = hostClassNames[hostClassKey];
31
+ if (typeof maybeCallback === 'function') {
32
+ const shouldApplyHostClass = maybeCallback({ state, inputs });
33
+ if (shouldApplyHostClass) {
34
+ host.classList.add(hostClassName);
35
+ }
36
+ else {
37
+ host.classList.remove(hostClassName);
38
+ }
39
+ }
40
+ });
41
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,56 @@
1
+ import { type HtmlInterpolation } from '../template-transforms/vir-html/html-interpolation.js';
2
+ import { type TypedEvent } from '../typed-event/typed-event.js';
3
+ import { type CustomElementTagName } from './custom-tag-name.js';
4
+ import { type DeclarativeElement, type DeclarativeElementHost } from './declarative-element.js';
5
+ import { type CssVars } from './properties/css-vars.js';
6
+ import { type EventDescriptorMap, type EventInitMapEventDetailExtractor, type EventsInitMap } from './properties/element-events.js';
7
+ import { type PropertyInitMapBase } from './properties/element-properties.js';
8
+ import { type BaseStringName, type StringNameMap } from './properties/string-names.js';
9
+ /**
10
+ * Type for the `render` element definition method.
11
+ *
12
+ * @category Internal
13
+ */
14
+ export type RenderCallback<TagName extends CustomElementTagName = any, Inputs extends PropertyInitMapBase = any, State extends PropertyInitMapBase = any, EventsInit extends EventsInitMap = any, HostClassKeys extends BaseStringName<TagName> = any, CssVarKeys extends BaseStringName<TagName> = any, SlotNames extends ReadonlyArray<string> = any, TestIds extends ReadonlyArray<string> = any> = (params: RenderParams<TagName, Inputs, State, EventsInit, HostClassKeys, CssVarKeys, SlotNames, TestIds>) => HtmlInterpolation;
15
+ /**
16
+ * Type for the `init` and `cleanup` element definition methods.
17
+ *
18
+ * @category Internal
19
+ */
20
+ export type InitCallback<TagName extends CustomElementTagName, Inputs extends PropertyInitMapBase, State extends PropertyInitMapBase, EventsInit extends EventsInitMap, HostClassKeys extends BaseStringName<TagName>, CssVarKeys extends BaseStringName<TagName>, SlotNames extends ReadonlyArray<string>, TestIds extends ReadonlyArray<string>> = (params: RenderParams<TagName, Inputs, State, EventsInit, HostClassKeys, CssVarKeys, SlotNames, TestIds>) => undefined | void;
21
+ /**
22
+ * Type for the `updateState` render parameter.
23
+ *
24
+ * @category Internal
25
+ */
26
+ export type UpdateStateCallback<State extends PropertyInitMapBase> = (newState: Partial<State>) => void;
27
+ /**
28
+ * The full parameters object passed to `render`, `init`, and `cleanup` element definition methods.
29
+ *
30
+ * @category Internal
31
+ */
32
+ export type RenderParams<TagName extends CustomElementTagName, Inputs extends PropertyInitMapBase, State extends PropertyInitMapBase, EventsInit extends EventsInitMap, HostClassKeys extends BaseStringName<TagName>, CssVarKeys extends BaseStringName<TagName>, SlotNames extends ReadonlyArray<string>, TestIds extends ReadonlyArray<string>> = {
33
+ state: Readonly<State>;
34
+ cssVars: Readonly<CssVars<TagName, CssVarKeys>>;
35
+ updateState: UpdateStateCallback<State>;
36
+ events: EventDescriptorMap<TagName, EventsInit>;
37
+ host: DeclarativeElementHost<TagName, Inputs, State, EventsInit, HostClassKeys, CssVarKeys, SlotNames, TestIds>;
38
+ slotNames: Readonly<StringNameMap<TagName, 'slot', SlotNames>>;
39
+ testIds: Readonly<StringNameMap<TagName, 'test-id', TestIds>>;
40
+ /** Dispatch an event from the current element. */
41
+ dispatch: <EventTypeName extends keyof EventsInit>(event: TypedEvent<EventTypeName extends string ? EventTypeName : never, EventInitMapEventDetailExtractor<EventTypeName, EventsInit>> | Event) => boolean;
42
+ inputs: Readonly<Inputs>;
43
+ };
44
+ /**
45
+ * This is used to create the parameters passed to the `render`, `init`, and `cleanup` element
46
+ * definition methods whenever they are called.
47
+ *
48
+ * @category Internal
49
+ */
50
+ export declare function createRenderParams<TagName extends CustomElementTagName, Inputs extends PropertyInitMapBase, State extends PropertyInitMapBase, EventsInit extends EventsInitMap, HostClassKeys extends BaseStringName<TagName>, CssVarKeys extends BaseStringName<TagName>, SlotNames extends ReadonlyArray<string>, TestIds extends ReadonlyArray<string>>({ element, eventsMap, cssVars, slotNamesMap, testIdsMap, }: {
51
+ element: DeclarativeElement<TagName, Inputs, State, EventsInit, HostClassKeys, CssVarKeys, SlotNames, TestIds>;
52
+ eventsMap: EventDescriptorMap<TagName, EventsInit>;
53
+ cssVars: Readonly<CssVars<TagName, CssVarKeys>>;
54
+ slotNamesMap: Readonly<StringNameMap<TagName, 'slot', SlotNames>>;
55
+ testIdsMap: Readonly<StringNameMap<TagName, 'test-id', TestIds>>;
56
+ }): RenderParams<TagName, Inputs, State, EventsInit, HostClassKeys, CssVarKeys, SlotNames, TestIds>;
@@ -0,0 +1,27 @@
1
+ import { getObjectTypedKeys } from '@augment-vir/common';
2
+ /**
3
+ * This is used to create the parameters passed to the `render`, `init`, and `cleanup` element
4
+ * definition methods whenever they are called.
5
+ *
6
+ * @category Internal
7
+ */
8
+ export function createRenderParams({ element, eventsMap, cssVars, slotNamesMap, testIdsMap, }) {
9
+ function updateState(newStatePartial) {
10
+ getObjectTypedKeys(newStatePartial).forEach((stateKey) => {
11
+ const newValue = newStatePartial[stateKey];
12
+ element.instanceState[stateKey] = newValue;
13
+ });
14
+ }
15
+ const renderParams = {
16
+ cssVars,
17
+ slotNames: slotNamesMap,
18
+ testIds: testIdsMap,
19
+ dispatch: (event) => element.dispatchEvent(event),
20
+ events: eventsMap,
21
+ host: element,
22
+ inputs: element.instanceInputs,
23
+ state: element.instanceState,
24
+ updateState,
25
+ };
26
+ return renderParams;
27
+ }
@@ -0,0 +1,36 @@
1
+ import { type PartialWithNullable } from '@augment-vir/common';
2
+ import { type CustomElementTagName } from './custom-tag-name.js';
3
+ import { type DeclarativeElementInit } from './declarative-element-init.js';
4
+ import { type DeclarativeElementInputErrorParams } from './define-element.js';
5
+ import { type EventsInitMap } from './properties/element-events.js';
6
+ import { type PropertyInitMapBase } from './properties/element-properties.js';
7
+ import { type BaseStringName } from './properties/string-names.js';
8
+ /**
9
+ * Options for {@link wrapDefineElement}.
10
+ *
11
+ * @category Internal
12
+ */
13
+ export type WrapDefineElementOptions<TagNameRequirement extends CustomElementTagName = CustomElementTagName, InputsRequirement extends PropertyInitMapBase = {}, StateRequirement extends PropertyInitMapBase = {}, EventsInitRequirement extends EventsInitMap = {}> = PartialWithNullable<{
14
+ /**
15
+ * An optional callback which asserts that an element definition init object given to the
16
+ * wrapped element definition functions is valid.
17
+ */
18
+ assertInputs: (inputInit: DeclarativeElementInit<TagNameRequirement, InputsRequirement, StateRequirement, EventsInitRequirement, BaseStringName<TagNameRequirement>, BaseStringName<TagNameRequirement>, ReadonlyArray<string>, ReadonlyArray<string>>) => void;
19
+ /**
20
+ * An optional callback which transforms a element definition init object given to the wrapped
21
+ * element definition.
22
+ */
23
+ transformInputs: (inputInit: DeclarativeElementInit<TagNameRequirement, InputsRequirement, StateRequirement, EventsInitRequirement, BaseStringName<TagNameRequirement>, BaseStringName<TagNameRequirement>, ReadonlyArray<string>, ReadonlyArray<string>>) => DeclarativeElementInit<TagNameRequirement, InputsRequirement, StateRequirement, EventsInitRequirement, BaseStringName<TagNameRequirement>, BaseStringName<TagNameRequirement>, ReadonlyArray<string>, ReadonlyArray<string>>;
24
+ }>;
25
+ /**
26
+ * Wraps {@link defineElement} in a superset of requirements. For example:
27
+ *
28
+ * - You could create element definition functions that require all elements to start with a common
29
+ * prefix, like `vir-`.
30
+ * - You could create element definition functions that require all elements to have _at least_ a
31
+ * specified set of input properties.
32
+ * - Etc.
33
+ *
34
+ * @category Element Definition
35
+ */
36
+ export declare function wrapDefineElement<TagNameRequirement extends CustomElementTagName = CustomElementTagName, InputsRequirement extends PropertyInitMapBase = {}, StateRequirement extends PropertyInitMapBase = {}, EventsInitRequirement extends EventsInitMap = {}>(options?: WrapDefineElementOptions | undefined): <Inputs extends InputsRequirement>(...errorParams: DeclarativeElementInputErrorParams<Inputs>) => <const TagName extends TagNameRequirement, State extends StateRequirement, EventsInit extends EventsInitRequirement, const HostClassKeys extends BaseStringName<TagName> = `${TagName}-`, const CssVarKeys extends BaseStringName<TagName> = `${TagName}-`, const SlotNames extends ReadonlyArray<string> = Readonly<[]>, const TestIds extends ReadonlyArray<string> = Readonly<[]>>(inputs: DeclarativeElementInit<TagName, Inputs, State, EventsInit, HostClassKeys, CssVarKeys, SlotNames, TestIds>) => import("./declarative-element.js").DeclarativeElementDefinition<TagName, Inputs, State, EventsInit, HostClassKeys, CssVarKeys, SlotNames, TestIds>;
@@ -0,0 +1,25 @@
1
+ /* eslint-disable @typescript-eslint/no-empty-object-type */
2
+ import { defineElement } from './define-element.js';
3
+ /**
4
+ * Wraps {@link defineElement} in a superset of requirements. For example:
5
+ *
6
+ * - You could create element definition functions that require all elements to start with a common
7
+ * prefix, like `vir-`.
8
+ * - You could create element definition functions that require all elements to have _at least_ a
9
+ * specified set of input properties.
10
+ * - Etc.
11
+ *
12
+ * @category Element Definition
13
+ */
14
+ export function wrapDefineElement(options) {
15
+ const { assertInputs, transformInputs } = {
16
+ assertInputs: options?.assertInputs ?? (() => { }),
17
+ transformInputs: options?.transformInputs ?? ((inputs) => inputs),
18
+ };
19
+ return (...errorParams) => {
20
+ return (inputs) => {
21
+ assertInputs(inputs);
22
+ return defineElement(...errorParams)(transformInputs(inputs));
23
+ };
24
+ };
25
+ }
@@ -1,5 +1,4 @@
1
1
  export * from 'observavir';
2
-
3
2
  export * from './declarative-element/custom-tag-name.js';
4
3
  export * from './declarative-element/declarative-element-init.js';
5
4
  export * from './declarative-element/declarative-element.js';
package/dist/index.js ADDED
@@ -0,0 +1,43 @@
1
+ export * from 'observavir';
2
+ export * from './declarative-element/custom-tag-name.js';
3
+ export * from './declarative-element/declarative-element-init.js';
4
+ export * from './declarative-element/declarative-element.js';
5
+ export * from './declarative-element/define-element.js';
6
+ export * from './declarative-element/definition-options.js';
7
+ export * from './declarative-element/directives/async-prop.js';
8
+ export * from './declarative-element/directives/attributes.directive.js';
9
+ export * from './declarative-element/directives/create-attribute-directive.js';
10
+ export * from './declarative-element/directives/directive-helpers.js';
11
+ export * from './declarative-element/directives/listen-to-activate.js';
12
+ export * from './declarative-element/directives/listen.directive.js';
13
+ export * from './declarative-element/directives/mutate.directive.js';
14
+ export * from './declarative-element/directives/on-dom-created.directive.js';
15
+ export * from './declarative-element/directives/on-dom-rendered.directive.js';
16
+ export * from './declarative-element/directives/on-intersect.directive.js';
17
+ export * from './declarative-element/directives/on-resize.directive.js';
18
+ export * from './declarative-element/directives/render-async.directive.js';
19
+ export * from './declarative-element/directives/render-if.directive.js';
20
+ export * from './declarative-element/directives/test-id.directive.js';
21
+ export * from './declarative-element/is-declarative-element-definition.js';
22
+ export * from './declarative-element/is-declarative-element.js';
23
+ export * from './declarative-element/properties/css-vars.js';
24
+ export * from './declarative-element/properties/element-events.js';
25
+ export * from './declarative-element/properties/element-properties.js';
26
+ export * from './declarative-element/properties/host-classes.js';
27
+ export * from './declarative-element/properties/property-proxy.js';
28
+ export * from './declarative-element/properties/string-names.js';
29
+ export * from './declarative-element/properties/styles.js';
30
+ export * from './declarative-element/properties/tag-name.js';
31
+ export * from './declarative-element/render-callback.js';
32
+ export * from './declarative-element/wrap-define-element.js';
33
+ export * from './lit-exports/all-lit-exports.js';
34
+ export * from './require-declarative-element.js';
35
+ export * from './template-transforms/minimal-element-definition.js';
36
+ export * from './template-transforms/vir-css/vir-css.js';
37
+ export * from './template-transforms/vir-html/html-interpolation.js';
38
+ export * from './template-transforms/vir-html/vir-html.js';
39
+ export * from './typed-event/typed-event.js';
40
+ export * from './util/increment.js';
41
+ export * from './util/lit-template.js';
42
+ export * from './util/map-async-value.js';
43
+ export * from './util/type.js';
@@ -0,0 +1,2 @@
1
+ export * from './base-lit-exports.js';
2
+ export * from './lit-repeat-fix.js';
@@ -1,13 +1,5 @@
1
- export {LitElement, noChange, nothing, svg, unsafeCSS} from 'lit';
2
- export type {
3
- CSSResult,
4
- CSSResultGroup,
5
- CompiledTemplate,
6
- CompiledTemplateResult,
7
- HTMLTemplateResult,
8
- SVGTemplateResult,
9
- TemplateResult,
10
- } from 'lit';
1
+ export { LitElement, noChange, nothing, svg, unsafeCSS } from 'lit';
2
+ export type { CSSResult, CSSResultGroup, CompiledTemplate, CompiledTemplateResult, HTMLTemplateResult, SVGTemplateResult, TemplateResult, } from 'lit';
11
3
  export * from 'lit/async-directive.js';
12
4
  export * from 'lit/decorators.js';
13
5
  export * from 'lit/directive-helpers.js';
@@ -0,0 +1,24 @@
1
+ export { LitElement, noChange, nothing, svg, unsafeCSS } from 'lit';
2
+ export * from 'lit/async-directive.js';
3
+ export * from 'lit/decorators.js';
4
+ export * from 'lit/directive-helpers.js';
5
+ export * from 'lit/directive.js';
6
+ export * from 'lit/directives/async-append.js';
7
+ export * from 'lit/directives/async-replace.js';
8
+ export * from 'lit/directives/cache.js';
9
+ export * from 'lit/directives/choose.js';
10
+ export * from 'lit/directives/class-map.js';
11
+ export * from 'lit/directives/guard.js';
12
+ export * from 'lit/directives/if-defined.js';
13
+ export * from 'lit/directives/join.js';
14
+ export * from 'lit/directives/keyed.js';
15
+ export * from 'lit/directives/live.js';
16
+ export * from 'lit/directives/map.js';
17
+ export * from 'lit/directives/range.js';
18
+ export * from 'lit/directives/ref.js';
19
+ export * from 'lit/directives/style-map.js';
20
+ export * from 'lit/directives/template-content.js';
21
+ export * from 'lit/directives/unsafe-html.js';
22
+ export * from 'lit/directives/unsafe-svg.js';
23
+ export * from 'lit/directives/until.js';
24
+ export * from 'lit/directives/when.js';
@@ -1,12 +1,9 @@
1
- export type {KeyFn} from 'lit/directives/repeat.js';
2
- export type {RepeatDirective};
3
-
4
- import {type Directive, type PartInfo} from 'lit-html/directive.js';
5
- import {type KeyFn} from 'lit-html/directives/repeat.js';
6
- import {type ChildPart, type noChange} from 'lit-html/lit-html.js';
7
- import {repeat as repeatImport} from 'lit/directives/repeat.js';
8
- import {type HtmlInterpolation} from '../template-transforms/vir-html/html-interpolation.js';
9
-
1
+ export type { KeyFn } from 'lit/directives/repeat.js';
2
+ export type { RepeatDirective };
3
+ import { type Directive, type PartInfo } from 'lit-html/directive.js';
4
+ import { type KeyFn } from 'lit-html/directives/repeat.js';
5
+ import { type ChildPart, type noChange } from 'lit-html/lit-html.js';
6
+ import { type HtmlInterpolation } from '../template-transforms/vir-html/html-interpolation.js';
10
7
  /**
11
8
  * A modified class type for the built-in lit `repeat` directive which works for element-vir
12
9
  * declarative elements.
@@ -18,32 +15,16 @@ declare class RepeatDirective extends Directive {
18
15
  constructor(partInfo: PartInfo);
19
16
  private _getValuesAndKeys;
20
17
  /** Renders the repeated templates. */
21
- public render<T>(items: Iterable<T>, template: ItemTemplate<T>): Array<HtmlInterpolation>;
18
+ render<T>(items: Iterable<T>, template: ItemTemplate<T>): Array<HtmlInterpolation>;
22
19
  /** Renders the repeated templates. */
23
- public render<T>(
24
- items: Iterable<T>,
25
- keyFn: KeyFn<T> | ItemTemplate<T>,
26
- template: ItemTemplate<T>,
27
- ): Array<HtmlInterpolation>;
28
-
20
+ render<T>(items: Iterable<T>, keyFn: KeyFn<T> | ItemTemplate<T>, template: ItemTemplate<T>): Array<HtmlInterpolation>;
29
21
  /** Updates the repeated templates. */
30
- public update<T>(
31
- containerPart: ChildPart,
32
- [
33
- items,
34
- keyFnOrTemplate,
35
- template,
36
- ]: [
37
- Iterable<T>,
38
- (
39
- | KeyFn<T>
40
- | ItemTemplate<T>
41
- ),
42
- ItemTemplate<T>,
43
- ],
44
- ): HtmlInterpolation[] | typeof noChange;
22
+ update<T>(containerPart: ChildPart, [items, keyFnOrTemplate, template,]: [
23
+ Iterable<T>,
24
+ (KeyFn<T> | ItemTemplate<T>),
25
+ ItemTemplate<T>
26
+ ]): HtmlInterpolation[] | typeof noChange;
45
27
  }
46
-
47
28
  /**
48
29
  * A modified `ItemTemplate` type for the built-in lit `repeat` directive which works for
49
30
  * element-vir declarative elements.
@@ -51,7 +32,6 @@ declare class RepeatDirective extends Directive {
51
32
  * @category Internal
52
33
  */
53
34
  export type ItemTemplate<T> = (item: T, index: number) => HtmlInterpolation;
54
-
55
35
  /**
56
36
  * A modified `RepeatDirectiveFn` type for the built-in lit `repeat` directive which works for
57
37
  * element-vir declarative elements.
@@ -59,19 +39,10 @@ export type ItemTemplate<T> = (item: T, index: number) => HtmlInterpolation;
59
39
  * @category Internal
60
40
  */
61
41
  export interface RepeatDirectiveFn {
62
- <T>(
63
- items: Iterable<T>,
64
- keyFnOrTemplate: KeyFn<T> | ItemTemplate<T>,
65
- template?: ItemTemplate<T>,
66
- ): HtmlInterpolation[];
42
+ <T>(items: Iterable<T>, keyFnOrTemplate: KeyFn<T> | ItemTemplate<T>, template?: ItemTemplate<T>): HtmlInterpolation[];
67
43
  <T>(items: Iterable<T>, template: ItemTemplate<T>): HtmlInterpolation[];
68
- <T>(
69
- items: Iterable<T>,
70
- keyFn: KeyFn<T> | ItemTemplate<T>,
71
- template: ItemTemplate<T>,
72
- ): HtmlInterpolation[];
44
+ <T>(items: Iterable<T>, keyFn: KeyFn<T> | ItemTemplate<T>, template: ItemTemplate<T>): HtmlInterpolation[];
73
45
  }
74
-
75
46
  /**
76
47
  * A directive that repeats a series of values (usually `TemplateResults`) generated from an
77
48
  * iterable, and updates those items efficiently when the iterable changes based on user-provided
@@ -107,4 +78,4 @@ export interface RepeatDirectiveFn {
107
78
  * If no `keyFn` is provided, this directive will perform similar to mapping items to values, and
108
79
  * DOM will be reused against potentially different items.
109
80
  */
110
- export const repeat = repeatImport as RepeatDirectiveFn;
81
+ export declare const repeat: RepeatDirectiveFn;
@@ -0,0 +1,37 @@
1
+ import { repeat as repeatImport } from 'lit/directives/repeat.js';
2
+ /**
3
+ * A directive that repeats a series of values (usually `TemplateResults`) generated from an
4
+ * iterable, and updates those items efficiently when the iterable changes based on user-provided
5
+ * `keys` associated with each item.
6
+ *
7
+ * Note that if a `keyFn` is provided, strict key-to-DOM mapping is maintained, meaning previous DOM
8
+ * for a given key is moved into the new position if needed, and DOM will never be reused with
9
+ * values for different keys (new DOM will always be created for new keys). This is generally the
10
+ * most efficient way to use `repeat` since it performs minimum unnecessary work for insertions and
11
+ * removals.
12
+ *
13
+ * The `keyFn` takes two parameters, the item and its index, and returns a unique key value.
14
+ *
15
+ * ```js
16
+ * html`
17
+ * <ol>
18
+ * ${repeat(
19
+ * this.items,
20
+ * (item) => item.id,
21
+ * (item, index) => {
22
+ * return html`
23
+ * <li>${index}: ${item.name}</li>
24
+ * `;
25
+ * },
26
+ * )}
27
+ * </ol>
28
+ * `;
29
+ * ```
30
+ *
31
+ * **Important**: If providing a `keyFn`, keys _must_ be unique for all items in a given call to
32
+ * `repeat`. The behavior when two or more items have the same key is undefined.
33
+ *
34
+ * If no `keyFn` is provided, this directive will perform similar to mapping items to values, and
35
+ * DOM will be reused against potentially different items.
36
+ */
37
+ export const repeat = repeatImport;
@@ -0,0 +1 @@
1
+ export declare const MyApp: import("element-vir").DeclarativeElementDefinition<"my-app", {}, {}, {}, "my-app-", "my-app-", readonly [], readonly []>;
@@ -1,11 +1,10 @@
1
- import {defineElement} from 'element-vir';
2
- import {html} from '../index.js';
3
- import {MySimple} from './my-simple.element.js';
4
-
1
+ import { defineElement } from 'element-vir';
2
+ import { html } from '../index.js';
3
+ import { MySimple } from './my-simple.element.js';
5
4
  export const MyApp = defineElement()({
6
5
  tagName: 'my-app',
7
6
  render() {
8
- return html`
7
+ return html `
9
8
  <h1>My App</h1>
10
9
  <${MySimple}></${MySimple}>
11
10
  `;
@@ -0,0 +1 @@
1
+ export declare const MyCustomActionEvent: import("../index.js").DefinedTypedEvent<"my-custom-action", number>;
@@ -0,0 +1,2 @@
1
+ import { defineTypedEvent } from '../index.js';
2
+ export const MyCustomActionEvent = defineTypedEvent()('my-custom-action');
@@ -0,0 +1,4 @@
1
+ export type VirTagName = `vir-${string}`;
2
+ export declare const defineVirElement: <Inputs extends {}>(...errorParams: import("../index.js").DeclarativeElementInputErrorParams<Inputs>) => <const TagName extends `vir-${string}`, State extends {}, EventsInit extends {}, const HostClassKeys extends import("../index.js").BaseStringName<TagName> = `${TagName}-`, const CssVarKeys extends import("../index.js").BaseStringName<TagName> = `${TagName}-`, const SlotNames extends ReadonlyArray<string> = Readonly<[]>, const TestIds extends ReadonlyArray<string> = Readonly<[]>>(inputs: import("../index.js").DeclarativeElementInit<TagName, Inputs, State, EventsInit, HostClassKeys, CssVarKeys, SlotNames, TestIds>) => import("../index.js").DeclarativeElementDefinition<TagName, Inputs, State, EventsInit, HostClassKeys, CssVarKeys, SlotNames, TestIds>;
3
+ export declare const defineVerifiedVirElement: <Inputs extends {}>(...errorParams: import("../index.js").DeclarativeElementInputErrorParams<Inputs>) => <const TagName extends `vir-${string}`, State extends {}, EventsInit extends {}, const HostClassKeys extends import("../index.js").BaseStringName<TagName> = `${TagName}-`, const CssVarKeys extends import("../index.js").BaseStringName<TagName> = `${TagName}-`, const SlotNames extends ReadonlyArray<string> = Readonly<[]>, const TestIds extends ReadonlyArray<string> = Readonly<[]>>(inputs: import("../index.js").DeclarativeElementInit<TagName, Inputs, State, EventsInit, HostClassKeys, CssVarKeys, SlotNames, TestIds>) => import("../index.js").DeclarativeElementDefinition<TagName, Inputs, State, EventsInit, HostClassKeys, CssVarKeys, SlotNames, TestIds>;
4
+ export declare const defineTransformedVirElement: <Inputs extends {}>(...errorParams: import("../index.js").DeclarativeElementInputErrorParams<Inputs>) => <const TagName extends `vir-${string}`, State extends {}, EventsInit extends {}, const HostClassKeys extends import("../index.js").BaseStringName<TagName> = `${TagName}-`, const CssVarKeys extends import("../index.js").BaseStringName<TagName> = `${TagName}-`, const SlotNames extends ReadonlyArray<string> = Readonly<[]>, const TestIds extends ReadonlyArray<string> = Readonly<[]>>(inputs: import("../index.js").DeclarativeElementInit<TagName, Inputs, State, EventsInit, HostClassKeys, CssVarKeys, SlotNames, TestIds>) => import("../index.js").DeclarativeElementDefinition<TagName, Inputs, State, EventsInit, HostClassKeys, CssVarKeys, SlotNames, TestIds>;
@@ -1,20 +1,15 @@
1
- import {wrapDefineElement} from '../index.js';
2
-
3
- export type VirTagName = `vir-${string}`;
4
-
5
- export const defineVirElement = wrapDefineElement<VirTagName>();
6
-
1
+ import { wrapDefineElement } from '../index.js';
2
+ export const defineVirElement = wrapDefineElement();
7
3
  // add an optional assert callback
8
- export const defineVerifiedVirElement = wrapDefineElement<VirTagName>({
4
+ export const defineVerifiedVirElement = wrapDefineElement({
9
5
  assertInputs: (inputs) => {
10
6
  if (!inputs.tagName.startsWith('vir-')) {
11
7
  throw new Error(`all custom elements must start with "vir-"`);
12
8
  }
13
9
  },
14
10
  });
15
-
16
11
  // add an optional transform callback
17
- export const defineTransformedVirElement = wrapDefineElement<VirTagName>({
12
+ export const defineTransformedVirElement = wrapDefineElement({
18
13
  transformInputs: (inputs) => {
19
14
  return {
20
15
  ...inputs,
@@ -0,0 +1 @@
1
+ export declare const MySimple: import("element-vir").DeclarativeElementDefinition<"my-simple", {}, {}, {}, "my-simple-", "my-simple-", readonly [], readonly []>;
@@ -1,10 +1,9 @@
1
- import {defineElement} from 'element-vir';
2
- import {html} from '../index.js';
3
-
1
+ import { defineElement } from 'element-vir';
2
+ import { html } from '../index.js';
4
3
  export const MySimple = defineElement()({
5
4
  tagName: 'my-simple',
6
5
  render() {
7
- return html`
6
+ return html `
8
7
  <span>Hello there!</span>
9
8
  `;
10
9
  },
@@ -0,0 +1 @@
1
+ export declare const MyWithAssignment: import("element-vir").DeclarativeElementDefinition<"my-with-assignment", {}, {}, {}, "my-with-assignment-", "my-with-assignment-", readonly [], readonly []>;