element-vir 6.3.3 → 7.0.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/README.md +91 -2
- package/package.json +23 -27
- package/dist/augments/array.d.ts +0 -1
- package/dist/augments/array.js +0 -3
- package/dist/augments/type.d.ts +0 -8
- package/dist/augments/type.js +0 -13
- package/dist/declarative-element/css-vars.d.ts +0 -6
- package/dist/declarative-element/css-vars.js +0 -22
- package/dist/declarative-element/declarative-element-init.d.ts +0 -34
- package/dist/declarative-element/declarative-element-init.js +0 -1
- package/dist/declarative-element/declarative-element.d.ts +0 -48
- package/dist/declarative-element/declarative-element.js +0 -18
- package/dist/declarative-element/define-element-no-inputs.d.ts +0 -5
- package/dist/declarative-element/define-element-no-inputs.js +0 -133
- package/dist/declarative-element/define-element.d.ts +0 -5
- package/dist/declarative-element/define-element.js +0 -13
- package/dist/declarative-element/definition-options.d.ts +0 -5
- package/dist/declarative-element/definition-options.js +0 -4
- package/dist/declarative-element/directives/assign-with-clean-up.directive.d.ts +0 -23
- package/dist/declarative-element/directives/assign-with-clean-up.directive.js +0 -43
- package/dist/declarative-element/directives/assign.directive.d.ts +0 -12
- package/dist/declarative-element/directives/assign.directive.js +0 -28
- package/dist/declarative-element/directives/awaiting.directive.d.ts +0 -18
- package/dist/declarative-element/directives/awaiting.directive.js +0 -42
- package/dist/declarative-element/directives/directive-helpers.d.ts +0 -14
- package/dist/declarative-element/directives/directive-helpers.js +0 -21
- package/dist/declarative-element/directives/listen.directive.d.ts +0 -14
- package/dist/declarative-element/directives/listen.directive.js +0 -47
- package/dist/declarative-element/directives/on-dom-created.directive.d.ts +0 -11
- package/dist/declarative-element/directives/on-dom-created.directive.js +0 -23
- package/dist/declarative-element/directives/on-resize.directive.d.ts +0 -15
- package/dist/declarative-element/directives/on-resize.directive.js +0 -36
- package/dist/declarative-element/element-events.d.ts +0 -10
- package/dist/declarative-element/element-events.js +0 -24
- package/dist/declarative-element/element-properties.d.ts +0 -16
- package/dist/declarative-element/element-properties.js +0 -72
- package/dist/declarative-element/has-declarative-element-parent.d.ts +0 -1
- package/dist/declarative-element/has-declarative-element-parent.js +0 -16
- package/dist/declarative-element/host-classes.d.ts +0 -21
- package/dist/declarative-element/host-classes.js +0 -12
- package/dist/declarative-element/render-callback.d.ts +0 -22
- package/dist/declarative-element/render-callback.js +0 -21
- package/dist/declarative-element/styles.d.ts +0 -23
- package/dist/declarative-element/styles.js +0 -32
- package/dist/declarative-element/tag-name.d.ts +0 -2
- package/dist/declarative-element/tag-name.js +0 -4
- package/dist/declarative-element-marker-symbol.d.ts +0 -1
- package/dist/declarative-element-marker-symbol.js +0 -1
- package/dist/index.d.ts +0 -18
- package/dist/index.js +0 -17
- package/dist/require-declarative-element.d.ts +0 -2
- package/dist/require-declarative-element.js +0 -4
- package/dist/template-transforms/has-static-tag-name.d.ts +0 -4
- package/dist/template-transforms/has-static-tag-name.js +0 -6
- package/dist/template-transforms/nested-mapped-templates.d.ts +0 -6
- package/dist/template-transforms/nested-mapped-templates.js +0 -96
- package/dist/template-transforms/transform-template.d.ts +0 -16
- package/dist/template-transforms/transform-template.js +0 -87
- package/dist/template-transforms/vir-css/css-transform.d.ts +0 -7
- package/dist/template-transforms/vir-css/css-transform.js +0 -12
- package/dist/template-transforms/vir-css/vir-css.d.ts +0 -3
- package/dist/template-transforms/vir-css/vir-css.js +0 -12
- package/dist/template-transforms/vir-html/html-transform.d.ts +0 -3
- package/dist/template-transforms/vir-html/html-transform.js +0 -44
- package/dist/template-transforms/vir-html/vir-html.d.ts +0 -3
- package/dist/template-transforms/vir-html/vir-html.js +0 -16
- package/dist/typed-event/typed-event.d.ts +0 -19
- package/dist/typed-event/typed-event.js +0 -32
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateTransform } from './transform-template';
|
|
2
|
-
export declare function getAlreadyMappedTemplate<PossibleValues>(templateStringsKey: TemplateStringsArray, values: PossibleValues[]): TemplateTransform | undefined;
|
|
3
|
-
export declare function setMappedTemplate<PossibleValues>(templateStringsKey: TemplateStringsArray, values: PossibleValues[], valueToSet: TemplateTransform): {
|
|
4
|
-
result: boolean;
|
|
5
|
-
reason: string;
|
|
6
|
-
};
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { typedHasProperties } from '@augment-vir/common';
|
|
2
|
-
import { DeclarativeElementMarkerSymbol } from '../declarative-element-marker-symbol';
|
|
3
|
-
function extractElementKeys(values) {
|
|
4
|
-
return values.filter((value) => {
|
|
5
|
-
return (typedHasProperties(value, [
|
|
6
|
-
'tagName',
|
|
7
|
-
DeclarativeElementMarkerSymbol,
|
|
8
|
-
]) &&
|
|
9
|
-
!!value.tagName &&
|
|
10
|
-
!!value[DeclarativeElementMarkerSymbol]);
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* The transformed templates are written to a map so that we can preserve reference equality between
|
|
15
|
-
* calls. Without maintaining reference equality between html`` calls, lit-element reconstructs all
|
|
16
|
-
* of its children on every render.
|
|
17
|
-
*
|
|
18
|
-
* This is a WeakMap because we only care about the transformed array value as long as the original
|
|
19
|
-
* template array key exists.
|
|
20
|
-
*/
|
|
21
|
-
const transformedTemplateStrings = new WeakMap();
|
|
22
|
-
export function getAlreadyMappedTemplate(templateStringsKey, values) {
|
|
23
|
-
var _a;
|
|
24
|
-
const elementKeys = extractElementKeys(values);
|
|
25
|
-
const nestedValue = getNestedValues(transformedTemplateStrings, [
|
|
26
|
-
templateStringsKey,
|
|
27
|
-
...elementKeys,
|
|
28
|
-
]);
|
|
29
|
-
return (_a = nestedValue.value) === null || _a === void 0 ? void 0 : _a.template;
|
|
30
|
-
}
|
|
31
|
-
export function setMappedTemplate(templateStringsKey, values, valueToSet) {
|
|
32
|
-
const elementKeys = extractElementKeys(values);
|
|
33
|
-
return setNestedValues(transformedTemplateStrings, [
|
|
34
|
-
templateStringsKey,
|
|
35
|
-
...elementKeys,
|
|
36
|
-
], valueToSet);
|
|
37
|
-
}
|
|
38
|
-
function getNestedValues(map, keys, index = 0) {
|
|
39
|
-
const { currentTemplateAndNested, reason } = getCurrentKeyAndValue(map, keys, index);
|
|
40
|
-
if (!currentTemplateAndNested) {
|
|
41
|
-
return { value: currentTemplateAndNested, reason };
|
|
42
|
-
}
|
|
43
|
-
if (index === keys.length - 1) {
|
|
44
|
-
return { value: currentTemplateAndNested, reason: `reached end of keys array` };
|
|
45
|
-
}
|
|
46
|
-
if (!currentTemplateAndNested.nested) {
|
|
47
|
-
return { value: undefined, reason: `map at key index ${index} did not have nested maps` };
|
|
48
|
-
}
|
|
49
|
-
return getNestedValues(currentTemplateAndNested.nested, keys, index + 1);
|
|
50
|
-
}
|
|
51
|
-
function getCurrentKeyAndValue(map, keys, index) {
|
|
52
|
-
const currentKey = keys[index];
|
|
53
|
-
if (currentKey == undefined) {
|
|
54
|
-
return {
|
|
55
|
-
currentKey: undefined,
|
|
56
|
-
currentTemplateAndNested: undefined,
|
|
57
|
-
reason: `key at index ${index} not found`,
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
if (!map.has(currentKey)) {
|
|
61
|
-
return {
|
|
62
|
-
currentKey,
|
|
63
|
-
currentTemplateAndNested: undefined,
|
|
64
|
-
reason: `key at index ${index} was not in the map`,
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
const currentTemplateAndNested = map.get(currentKey);
|
|
68
|
-
if (currentTemplateAndNested == undefined) {
|
|
69
|
-
return {
|
|
70
|
-
currentKey,
|
|
71
|
-
currentTemplateAndNested: undefined,
|
|
72
|
-
reason: `value at key at index ${index} was undefined`,
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
return { currentKey, currentTemplateAndNested, reason: `key and value exists` };
|
|
76
|
-
}
|
|
77
|
-
function setNestedValues(map, keys, valueToSet, index = 0) {
|
|
78
|
-
var _a;
|
|
79
|
-
const { currentTemplateAndNested, currentKey, reason } = getCurrentKeyAndValue(map, keys, index);
|
|
80
|
-
if (!currentKey) {
|
|
81
|
-
return { result: false, reason };
|
|
82
|
-
}
|
|
83
|
-
const nestedAndTemplate = currentTemplateAndNested !== null && currentTemplateAndNested !== void 0 ? currentTemplateAndNested : { nested: undefined, template: undefined };
|
|
84
|
-
if (!currentTemplateAndNested) {
|
|
85
|
-
map.set(currentKey, nestedAndTemplate);
|
|
86
|
-
}
|
|
87
|
-
if (index === keys.length - 1) {
|
|
88
|
-
nestedAndTemplate.template = valueToSet;
|
|
89
|
-
return { result: true, reason: `set value at end of keys array` };
|
|
90
|
-
}
|
|
91
|
-
const nestedWeakMap = (_a = nestedAndTemplate.nested) !== null && _a !== void 0 ? _a : new WeakMap();
|
|
92
|
-
if (!nestedAndTemplate.nested) {
|
|
93
|
-
nestedAndTemplate.nested = nestedWeakMap;
|
|
94
|
-
}
|
|
95
|
-
return setNestedValues(nestedWeakMap, keys, valueToSet, index + 1);
|
|
96
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export type TemplateTransform = {
|
|
2
|
-
templateStrings: TemplateStringsArray;
|
|
3
|
-
valueIndexDeletions: number[];
|
|
4
|
-
};
|
|
5
|
-
export type ValueTransform = (value: unknown) => unknown;
|
|
6
|
-
export type CheckAndTransform<T> = {
|
|
7
|
-
check: (lastNewString: string, currentLitString: string, currentValue: unknown) => currentValue is T;
|
|
8
|
-
transform: (value: T) => unknown;
|
|
9
|
-
name: string;
|
|
10
|
-
};
|
|
11
|
-
export declare function makeCheckTransform<T>(name: string, check: (lastNewString: string, currentLitString: string, currentValue: unknown) => currentValue is T, transform: (value: T) => unknown): CheckAndTransform<T>;
|
|
12
|
-
export declare function getTransformedTemplate<PossibleValues>(templateStringsKey: TemplateStringsArray, values: PossibleValues[], fallbackTransform: () => TemplateTransform): {
|
|
13
|
-
strings: TemplateStringsArray;
|
|
14
|
-
values: PossibleValues[];
|
|
15
|
-
};
|
|
16
|
-
export declare function transformTemplate<TransformsGeneric extends CheckAndTransform<any>[], PossibleValues>(inputTemplateStrings: TemplateStringsArray, inputValues: PossibleValues[], checksAndTransforms: TransformsGeneric, assertValidString?: (templateStringPart: string) => void): TemplateTransform;
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { typedHasProperties } from '@augment-vir/common';
|
|
2
|
-
import { filterOutArrayIndexes } from '../augments/array';
|
|
3
|
-
import { DeclarativeElementMarkerSymbol } from '../declarative-element-marker-symbol';
|
|
4
|
-
import { getAlreadyMappedTemplate, setMappedTemplate } from './nested-mapped-templates';
|
|
5
|
-
export function makeCheckTransform(name, check, transform) {
|
|
6
|
-
return {
|
|
7
|
-
name,
|
|
8
|
-
check,
|
|
9
|
-
transform,
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* The transformed templates are written to a map so that we can preserve reference equality between
|
|
14
|
-
* calls. Without maintaining reference equality between html`` calls, lit-element reconstructs all
|
|
15
|
-
* of its children on every render.
|
|
16
|
-
*
|
|
17
|
-
* This is a WeakMap because we only care about the transformed array value as long as the original
|
|
18
|
-
* template array key exists.
|
|
19
|
-
*/
|
|
20
|
-
const transformedTemplateStrings = new WeakMap();
|
|
21
|
-
function extractElementValues(values) {
|
|
22
|
-
return values.filter((value) => {
|
|
23
|
-
return (typedHasProperties(value, [
|
|
24
|
-
'tagName',
|
|
25
|
-
DeclarativeElementMarkerSymbol,
|
|
26
|
-
]) &&
|
|
27
|
-
!!value.tagName &&
|
|
28
|
-
!!value[DeclarativeElementMarkerSymbol]);
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
export function getTransformedTemplate(templateStringsKey, values, fallbackTransform) {
|
|
32
|
-
const alreadyTransformedTemplateStrings = getAlreadyMappedTemplate(templateStringsKey, values);
|
|
33
|
-
const templateTransform = alreadyTransformedTemplateStrings !== null && alreadyTransformedTemplateStrings !== void 0 ? alreadyTransformedTemplateStrings : fallbackTransform();
|
|
34
|
-
if (!alreadyTransformedTemplateStrings) {
|
|
35
|
-
const result = setMappedTemplate(templateStringsKey, values, templateTransform);
|
|
36
|
-
if (!result.result) {
|
|
37
|
-
throw new Error(`Failed to set template transform: ${result.reason}`);
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
transformedTemplateStrings.set(templateStringsKey, templateTransform);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
const transformedValuesArray = filterOutArrayIndexes(values, templateTransform.valueIndexDeletions);
|
|
44
|
-
return { strings: templateTransform.templateStrings, values: transformedValuesArray };
|
|
45
|
-
}
|
|
46
|
-
export function transformTemplate(inputTemplateStrings, inputValues, checksAndTransforms, assertValidString) {
|
|
47
|
-
const newStrings = [];
|
|
48
|
-
const newRaws = [];
|
|
49
|
-
const valueDeletions = [];
|
|
50
|
-
inputTemplateStrings.forEach((currentTemplateString, index) => {
|
|
51
|
-
var _a;
|
|
52
|
-
const lastNewStringsIndex = newStrings.length - 1;
|
|
53
|
-
const lastNewString = newStrings[lastNewStringsIndex];
|
|
54
|
-
const currentValueIndex = index - 1;
|
|
55
|
-
const currentValue = inputValues[currentValueIndex];
|
|
56
|
-
let validTransform;
|
|
57
|
-
assertValidString && assertValidString(currentTemplateString);
|
|
58
|
-
if (typeof lastNewString === 'string') {
|
|
59
|
-
validTransform = (_a = checksAndTransforms.find((checkAndTransform) => {
|
|
60
|
-
return checkAndTransform.check(lastNewString, currentTemplateString, currentValue);
|
|
61
|
-
})) === null || _a === void 0 ? void 0 : _a.transform;
|
|
62
|
-
if (validTransform) {
|
|
63
|
-
newStrings[lastNewStringsIndex] =
|
|
64
|
-
lastNewString + validTransform(currentValue) + currentTemplateString;
|
|
65
|
-
valueDeletions.push(currentValueIndex);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
if (!validTransform) {
|
|
69
|
-
newStrings.push(currentTemplateString);
|
|
70
|
-
}
|
|
71
|
-
const currentRawLitString = inputTemplateStrings.raw[index];
|
|
72
|
-
if (validTransform) {
|
|
73
|
-
newRaws[lastNewStringsIndex] =
|
|
74
|
-
newRaws[lastNewStringsIndex] + validTransform(currentValue) + currentRawLitString;
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
newRaws.push(currentRawLitString);
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
const newTemplateStrings = Object.assign([], newStrings, {
|
|
81
|
-
raw: newRaws,
|
|
82
|
-
});
|
|
83
|
-
return {
|
|
84
|
-
templateStrings: newTemplateStrings,
|
|
85
|
-
valueIndexDeletions: valueDeletions,
|
|
86
|
-
};
|
|
87
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { CSSResultGroup } from 'lit';
|
|
2
|
-
import { DeclarativeElementDefinition } from '../../declarative-element/declarative-element';
|
|
3
|
-
export type CssTemplateTransform = {
|
|
4
|
-
templateStrings: TemplateStringsArray;
|
|
5
|
-
valueIndexDeletions: number[];
|
|
6
|
-
};
|
|
7
|
-
export declare function transformCssTemplate(inputTemplateStrings: TemplateStringsArray, inputValues: (number | CSSResultGroup | DeclarativeElementDefinition)[]): CssTemplateTransform;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { hasStaticTagName } from '../has-static-tag-name';
|
|
2
|
-
import { makeCheckTransform, transformTemplate } from '../transform-template';
|
|
3
|
-
const cssChecksAndTransforms = [
|
|
4
|
-
makeCheckTransform('tag name css selector interpolation', (lastNewString, currentLitString, currentValue) => {
|
|
5
|
-
return hasStaticTagName(currentValue);
|
|
6
|
-
}, (input) =>
|
|
7
|
-
// cast is safe because the check method above verifies that this value is a VirElement
|
|
8
|
-
input.tagName),
|
|
9
|
-
];
|
|
10
|
-
export function transformCssTemplate(inputTemplateStrings, inputValues) {
|
|
11
|
-
return transformTemplate(inputTemplateStrings, inputValues, cssChecksAndTransforms);
|
|
12
|
-
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { CSSResult, CSSResultGroup } from 'lit';
|
|
2
|
-
import { DeclarativeElementDefinition } from '../../declarative-element/declarative-element';
|
|
3
|
-
export declare function css(inputTemplateStrings: TemplateStringsArray, ...inputValues: (number | CSSResultGroup | DeclarativeElementDefinition)[]): CSSResult;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { css as litCss } from 'lit';
|
|
2
|
-
import { getTransformedTemplate } from '../transform-template';
|
|
3
|
-
import { transformCssTemplate } from './css-transform';
|
|
4
|
-
export function css(inputTemplateStrings, ...inputValues) {
|
|
5
|
-
const transformedTemplate = getTransformedTemplate(inputTemplateStrings, inputValues, () => {
|
|
6
|
-
return transformCssTemplate(inputTemplateStrings, inputValues);
|
|
7
|
-
});
|
|
8
|
-
const cssResult = litCss(transformedTemplate.strings,
|
|
9
|
-
/** The filter will remove the DeclarativeElement elements */
|
|
10
|
-
...transformedTemplate.values);
|
|
11
|
-
return cssResult;
|
|
12
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { collapseWhiteSpace, safeMatch } from '@augment-vir/common';
|
|
2
|
-
import { declarativeElementRequired } from '../../require-declarative-element';
|
|
3
|
-
import { hasStaticTagName } from '../has-static-tag-name';
|
|
4
|
-
import { makeCheckTransform, transformTemplate, } from '../transform-template';
|
|
5
|
-
const htmlChecksAndTransforms = [
|
|
6
|
-
makeCheckTransform('tag name interpolation', (lastNewString, currentLitString, currentValue) => {
|
|
7
|
-
const shouldHaveTagNameHere = (lastNewString.trim().endsWith('<') && !!currentLitString.match(/^[\s\n>]/)) ||
|
|
8
|
-
((lastNewString === null || lastNewString === void 0 ? void 0 : lastNewString.trim().endsWith('</')) && currentLitString.trim().startsWith('>'));
|
|
9
|
-
const staticTagName = hasStaticTagName(currentValue);
|
|
10
|
-
if (shouldHaveTagNameHere && !staticTagName) {
|
|
11
|
-
console.error({
|
|
12
|
-
lastNewString,
|
|
13
|
-
currentLitString,
|
|
14
|
-
currentValue,
|
|
15
|
-
});
|
|
16
|
-
throw new Error(`Got interpolated tag name but it wasn't of type VirElement: ${currentValue.prototype.constructor.name}`);
|
|
17
|
-
}
|
|
18
|
-
return shouldHaveTagNameHere && staticTagName;
|
|
19
|
-
}, (input) =>
|
|
20
|
-
// cast is safe because the check method above verifies that this value is a VirElement
|
|
21
|
-
input.tagName),
|
|
22
|
-
];
|
|
23
|
-
function extractCustomElementTags(input) {
|
|
24
|
-
const tagNameMatches = safeMatch(input, /<\/[\s\n]*[^\s\n><]+[\s\n]*>/g);
|
|
25
|
-
return tagNameMatches.reduce((accum, match) => {
|
|
26
|
-
const tagName = collapseWhiteSpace(match.replace(/\n/g, ' ')).replace(/<\/|>/g, '');
|
|
27
|
-
// custom elements always have a dash in them
|
|
28
|
-
if (tagName.includes('-')) {
|
|
29
|
-
return accum.concat(tagName);
|
|
30
|
-
}
|
|
31
|
-
return accum;
|
|
32
|
-
}, []);
|
|
33
|
-
}
|
|
34
|
-
function stringValidator(input) {
|
|
35
|
-
if (declarativeElementRequired) {
|
|
36
|
-
const customElementTagNames = extractCustomElementTags(input);
|
|
37
|
-
if (customElementTagNames.length) {
|
|
38
|
-
console.error(`Custom element tags must be interpolated from declarative elements: ${customElementTagNames.join(', ')}`);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
export function transformHtmlTemplate(litTemplate) {
|
|
43
|
-
return transformTemplate(litTemplate.strings, litTemplate.values, htmlChecksAndTransforms, stringValidator);
|
|
44
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { html as litHtml } from 'lit';
|
|
2
|
-
import { getTransformedTemplate } from '../transform-template';
|
|
3
|
-
import { transformHtmlTemplate } from './html-transform';
|
|
4
|
-
/** Enables interpolation of DeclarativeElement tag names */
|
|
5
|
-
export function html(inputTemplateStrings, ...inputValues) {
|
|
6
|
-
const litTemplate = litHtml(inputTemplateStrings, ...inputValues);
|
|
7
|
-
const transformedTemplate = getTransformedTemplate(inputTemplateStrings, inputValues, () => {
|
|
8
|
-
return transformHtmlTemplate(litTemplate);
|
|
9
|
-
});
|
|
10
|
-
const htmlTemplate = {
|
|
11
|
-
...litTemplate,
|
|
12
|
-
strings: transformedTemplate.strings,
|
|
13
|
-
values: transformedTemplate.values,
|
|
14
|
-
};
|
|
15
|
-
return htmlTemplate;
|
|
16
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { NonEmptyString } from '../augments/type';
|
|
2
|
-
export declare class TypedEvent<EventTypeNameGeneric extends string = '', EventDetailGeneric = undefined> extends CustomEvent<EventDetailGeneric> {
|
|
3
|
-
readonly _type: EventTypeNameGeneric;
|
|
4
|
-
get type(): EventTypeNameGeneric;
|
|
5
|
-
constructor(type: EventTypeNameGeneric | {
|
|
6
|
-
type: EventTypeNameGeneric;
|
|
7
|
-
}, value: EventDetailGeneric);
|
|
8
|
-
}
|
|
9
|
-
export type DefinedTypedEventNameDefinition<EventDetailGeneric> = <EventTypeNameGeneric extends string>(eventType: NonEmptyString<EventTypeNameGeneric>) => DefinedTypedEvent<EventTypeNameGeneric, EventDetailGeneric>;
|
|
10
|
-
export type DefinedTypedEvent<EventTypeNameGeneric extends string, EventDetailGeneric> = (new (eventValue: EventDetailGeneric) => TypedEvent<EventTypeNameGeneric, EventDetailGeneric>) & {
|
|
11
|
-
type: EventTypeNameGeneric;
|
|
12
|
-
};
|
|
13
|
-
/**
|
|
14
|
-
* Defined a typed event. Make sure to use currying and call this function twice! Typescript's
|
|
15
|
-
* generic restrictions require this setup to get the types right without excessive verbosity.
|
|
16
|
-
*
|
|
17
|
-
* Example: const myCustomEvent = defineTypedEvent<number>()('my-custom-event')
|
|
18
|
-
*/
|
|
19
|
-
export declare function defineTypedEvent<EventDetailGeneric>(): <EventTypeNameGeneric extends string>(eventType: NonEmptyString<EventTypeNameGeneric>) => DefinedTypedEvent<EventTypeNameGeneric, EventDetailGeneric>;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
export class TypedEvent extends CustomEvent {
|
|
2
|
-
get type() {
|
|
3
|
-
return this._type;
|
|
4
|
-
}
|
|
5
|
-
constructor(type, value) {
|
|
6
|
-
super(typeof type === 'string' ? type : type.type, {
|
|
7
|
-
detail: value,
|
|
8
|
-
bubbles: true,
|
|
9
|
-
composed: true,
|
|
10
|
-
});
|
|
11
|
-
this._type = '';
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Defined a typed event. Make sure to use currying and call this function twice! Typescript's
|
|
16
|
-
* generic restrictions require this setup to get the types right without excessive verbosity.
|
|
17
|
-
*
|
|
18
|
-
* Example: const myCustomEvent = defineTypedEvent<number>()('my-custom-event')
|
|
19
|
-
*/
|
|
20
|
-
export function defineTypedEvent() {
|
|
21
|
-
return (eventType) => {
|
|
22
|
-
var _a;
|
|
23
|
-
return _a = class extends TypedEvent {
|
|
24
|
-
constructor(value) {
|
|
25
|
-
super(eventType, value);
|
|
26
|
-
this._type = eventType;
|
|
27
|
-
}
|
|
28
|
-
},
|
|
29
|
-
_a.type = eventType,
|
|
30
|
-
_a;
|
|
31
|
-
};
|
|
32
|
-
}
|