element-vir 5.3.0 → 5.4.2
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/dist/{augments → cjs/augments}/array.d.ts +0 -0
- package/dist/cjs/augments/array.js +7 -0
- package/dist/{augments → cjs/augments}/type.d.ts +0 -0
- package/dist/cjs/augments/type.js +2 -0
- package/dist/{functional-element → cjs/functional-element}/define-functional-element.d.ts +0 -0
- package/dist/cjs/functional-element/define-functional-element.js +47 -0
- package/dist/{functional-element → cjs/functional-element}/directives/assign-with-clean-up.directive.d.ts +0 -0
- package/dist/cjs/functional-element/directives/assign-with-clean-up.directive.js +40 -0
- package/dist/{functional-element → cjs/functional-element}/directives/assign.directive.d.ts +0 -0
- package/dist/cjs/functional-element/directives/assign.directive.js +27 -0
- package/dist/{functional-element → cjs/functional-element}/directives/directive-util.d.ts +0 -0
- package/dist/cjs/functional-element/directives/directive-util.js +27 -0
- package/dist/{functional-element → cjs/functional-element}/directives/listen.directive.d.ts +0 -0
- package/dist/cjs/functional-element/directives/listen.directive.js +51 -0
- package/dist/{functional-element → cjs/functional-element}/directives/on-dom-created.directive.d.ts +0 -0
- package/dist/cjs/functional-element/directives/on-dom-created.directive.js +26 -0
- package/dist/{functional-element → cjs/functional-element}/directives/on-resize.directive.d.ts +0 -0
- package/dist/cjs/functional-element/directives/on-resize.directive.js +39 -0
- package/dist/{functional-element → cjs/functional-element}/element-events.d.ts +0 -0
- package/dist/cjs/functional-element/element-events.js +29 -0
- package/dist/{functional-element → cjs/functional-element}/element-properties.d.ts +0 -0
- package/dist/cjs/functional-element/element-properties.js +55 -0
- package/dist/{functional-element → cjs/functional-element}/functional-element.d.ts +0 -0
- package/dist/cjs/functional-element/functional-element.js +7 -0
- package/dist/{functional-element → cjs/functional-element}/render-callback.d.ts +0 -0
- package/dist/cjs/functional-element/render-callback.js +24 -0
- package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
- package/dist/cjs/index.js +33 -0
- package/dist/{require-functional-element.d.ts → cjs/require-functional-element.d.ts} +0 -0
- package/dist/cjs/require-functional-element.js +8 -0
- package/dist/{template-transforms → cjs/template-transforms}/has-static-tag-name.d.ts +0 -0
- package/dist/cjs/template-transforms/has-static-tag-name.js +10 -0
- package/dist/{template-transforms → cjs/template-transforms}/transform-template.d.ts +0 -0
- package/dist/cjs/template-transforms/transform-template.js +74 -0
- package/dist/{template-transforms → cjs/template-transforms}/vir-css/css-transform.d.ts +0 -0
- package/dist/cjs/template-transforms/vir-css/css-transform.js +16 -0
- package/dist/{template-transforms → cjs/template-transforms}/vir-css/vir-css.d.ts +0 -0
- package/dist/cjs/template-transforms/vir-css/vir-css.js +16 -0
- package/dist/{template-transforms → cjs/template-transforms}/vir-html/html-transform.d.ts +0 -0
- package/dist/cjs/template-transforms/vir-html/html-transform.js +48 -0
- package/dist/{template-transforms → cjs/template-transforms}/vir-html/vir-html.d.ts +0 -0
- package/dist/cjs/template-transforms/vir-html/vir-html.js +20 -0
- package/dist/{typed-event → cjs/typed-event}/typed-event.d.ts +0 -0
- package/dist/cjs/typed-event/typed-event.js +37 -0
- package/dist/esm/augments/array.d.ts +1 -0
- package/dist/{augments → esm/augments}/array.js +0 -0
- package/dist/esm/augments/type.d.ts +1 -0
- package/dist/{augments → esm/augments}/type.js +0 -0
- package/dist/esm/functional-element/define-functional-element.d.ts +4 -0
- package/dist/esm/functional-element/define-functional-element.js +43 -0
- package/dist/esm/functional-element/directives/assign-with-clean-up.directive.d.ts +19 -0
- package/dist/{functional-element → esm/functional-element}/directives/assign-with-clean-up.directive.js +0 -3
- package/dist/esm/functional-element/directives/assign.directive.d.ts +15 -0
- package/dist/{functional-element → esm/functional-element}/directives/assign.directive.js +0 -1
- package/dist/esm/functional-element/directives/directive-util.d.ts +15 -0
- package/dist/{functional-element → esm/functional-element}/directives/directive-util.js +0 -0
- package/dist/esm/functional-element/directives/listen.directive.d.ts +13 -0
- package/dist/{functional-element → esm/functional-element}/directives/listen.directive.js +1 -3
- package/dist/esm/functional-element/directives/on-dom-created.directive.d.ts +11 -0
- package/dist/{functional-element → esm/functional-element}/directives/on-dom-created.directive.js +0 -1
- package/dist/esm/functional-element/directives/on-resize.directive.d.ts +15 -0
- package/dist/{functional-element → esm/functional-element}/directives/on-resize.directive.js +3 -4
- package/dist/esm/functional-element/element-events.d.ts +10 -0
- package/dist/{functional-element → esm/functional-element}/element-events.js +0 -0
- package/dist/esm/functional-element/element-properties.d.ts +16 -0
- package/dist/{functional-element → esm/functional-element}/element-properties.js +0 -0
- package/dist/esm/functional-element/functional-element.d.ts +42 -0
- package/dist/{functional-element → esm/functional-element}/functional-element.js +0 -2
- package/dist/esm/functional-element/render-callback.d.ts +21 -0
- package/dist/{functional-element → esm/functional-element}/render-callback.js +0 -0
- package/dist/{index.js → esm/index.d.ts} +0 -0
- package/dist/esm/index.js +15 -0
- package/dist/esm/require-functional-element.d.ts +2 -0
- package/dist/{require-functional-element.js → esm/require-functional-element.js} +0 -0
- package/dist/esm/template-transforms/has-static-tag-name.d.ts +4 -0
- package/dist/{template-transforms → esm/template-transforms}/has-static-tag-name.js +0 -0
- package/dist/esm/template-transforms/transform-template.d.ts +16 -0
- package/dist/{template-transforms → esm/template-transforms}/transform-template.js +4 -3
- package/dist/esm/template-transforms/vir-css/css-transform.d.ts +7 -0
- package/dist/{template-transforms → esm/template-transforms}/vir-css/css-transform.js +0 -0
- package/dist/esm/template-transforms/vir-css/vir-css.d.ts +3 -0
- package/dist/{template-transforms → esm/template-transforms}/vir-css/vir-css.js +0 -0
- package/dist/esm/template-transforms/vir-html/html-transform.d.ts +3 -0
- package/dist/{template-transforms → esm/template-transforms}/vir-html/html-transform.js +1 -1
- package/dist/esm/template-transforms/vir-html/vir-html.d.ts +3 -0
- package/dist/{template-transforms → esm/template-transforms}/vir-html/vir-html.js +0 -0
- package/dist/esm/typed-event/typed-event.d.ts +19 -0
- package/dist/{typed-event → esm/typed-event}/typed-event.js +13 -11
- package/dist/types/augments/array.d.ts +1 -0
- package/dist/types/augments/type.d.ts +1 -0
- package/dist/types/functional-element/define-functional-element.d.ts +4 -0
- package/dist/types/functional-element/directives/assign-with-clean-up.directive.d.ts +19 -0
- package/dist/types/functional-element/directives/assign.directive.d.ts +15 -0
- package/dist/types/functional-element/directives/directive-util.d.ts +15 -0
- package/dist/types/functional-element/directives/listen.directive.d.ts +13 -0
- package/dist/types/functional-element/directives/on-dom-created.directive.d.ts +11 -0
- package/dist/types/functional-element/directives/on-resize.directive.d.ts +15 -0
- package/dist/types/functional-element/element-events.d.ts +10 -0
- package/dist/types/functional-element/element-properties.d.ts +16 -0
- package/dist/types/functional-element/functional-element.d.ts +42 -0
- package/dist/types/functional-element/render-callback.d.ts +21 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/require-functional-element.d.ts +2 -0
- package/dist/types/template-transforms/has-static-tag-name.d.ts +4 -0
- package/dist/types/template-transforms/transform-template.d.ts +16 -0
- package/dist/types/template-transforms/vir-css/css-transform.d.ts +7 -0
- package/dist/types/template-transforms/vir-css/vir-css.d.ts +3 -0
- package/dist/types/template-transforms/vir-html/html-transform.d.ts +3 -0
- package/dist/types/template-transforms/vir-html/vir-html.d.ts +3 -0
- package/dist/types/typed-event/typed-event.d.ts +19 -0
- package/package.json +6 -5
- package/dist/functional-element/define-functional-element.js +0 -41
|
File without changes
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.filterOutArrayIndexes = void 0;
|
|
4
|
+
function filterOutArrayIndexes(array, indexes) {
|
|
5
|
+
return array.filter((_, index) => !indexes.includes(index));
|
|
6
|
+
}
|
|
7
|
+
exports.filterOutArrayIndexes = filterOutArrayIndexes;
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defineFunctionalElement = void 0;
|
|
4
|
+
const lit_1 = require("lit");
|
|
5
|
+
const decorators_js_1 = require("lit/decorators.js");
|
|
6
|
+
const element_events_1 = require("./element-events");
|
|
7
|
+
const element_properties_1 = require("./element-properties");
|
|
8
|
+
const functional_element_1 = require("./functional-element");
|
|
9
|
+
const render_callback_1 = require("./render-callback");
|
|
10
|
+
function defineFunctionalElement(functionalElementInit) {
|
|
11
|
+
var _a;
|
|
12
|
+
const eventsMap = (0, element_events_1.createEventDescriptorMap)(functionalElementInit.events);
|
|
13
|
+
const anonymousClass = (_a = class extends functional_element_1.FunctionalElementBaseClass {
|
|
14
|
+
constructor() {
|
|
15
|
+
super();
|
|
16
|
+
this.initCalled = false;
|
|
17
|
+
this.instanceProps = (0, element_properties_1.createPropertyProxy)(functionalElementInit.props, this);
|
|
18
|
+
const initProps = functionalElementInit.props || {};
|
|
19
|
+
Object.keys(initProps).forEach((propName) => {
|
|
20
|
+
const functionalElementInstance = this;
|
|
21
|
+
(0, decorators_js_1.property)()(functionalElementInstance, propName);
|
|
22
|
+
functionalElementInstance[propName] = initProps[propName];
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
createRenderParams() {
|
|
26
|
+
return (0, render_callback_1.createRenderParams)(this, eventsMap);
|
|
27
|
+
}
|
|
28
|
+
render() {
|
|
29
|
+
const renderParams = this.createRenderParams();
|
|
30
|
+
if (!this.initCalled && functionalElementInit.initCallback) {
|
|
31
|
+
this.initCalled = true;
|
|
32
|
+
functionalElementInit.initCallback(renderParams);
|
|
33
|
+
}
|
|
34
|
+
return functionalElementInit.renderCallback(renderParams);
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
_a.tagName = functionalElementInit.tagName,
|
|
38
|
+
_a.styles = functionalElementInit.styles || (0, lit_1.css) ``,
|
|
39
|
+
_a.initInput = functionalElementInit,
|
|
40
|
+
_a.events = eventsMap,
|
|
41
|
+
_a.renderCallback = functionalElementInit.renderCallback,
|
|
42
|
+
_a.props = (0, element_properties_1.createPropertyDescriptorMap)(functionalElementInit.props),
|
|
43
|
+
_a);
|
|
44
|
+
window.customElements.define(functionalElementInit.tagName, anonymousClass);
|
|
45
|
+
return anonymousClass;
|
|
46
|
+
}
|
|
47
|
+
exports.defineFunctionalElement = defineFunctionalElement;
|
|
File without changes
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.assignWithCleanup = void 0;
|
|
4
|
+
const lit_1 = require("lit");
|
|
5
|
+
const async_directive_js_1 = require("lit/async-directive.js");
|
|
6
|
+
const directive_js_1 = require("lit/directive.js");
|
|
7
|
+
const directive_util_1 = require("./directive-util");
|
|
8
|
+
/**
|
|
9
|
+
* The directive generics (in listenDirective) are not strong enough to maintain their values. Thus,
|
|
10
|
+
* the directive call is wrapped in this function.
|
|
11
|
+
*/
|
|
12
|
+
function assignWithCleanup(propertyDescriptor, value, cleanupCallback) {
|
|
13
|
+
return assignWithCleanupDirective(propertyDescriptor.propName, value, cleanupCallback);
|
|
14
|
+
}
|
|
15
|
+
exports.assignWithCleanup = assignWithCleanup;
|
|
16
|
+
class AssignWithCleanupDirectiveClass extends async_directive_js_1.AsyncDirective {
|
|
17
|
+
constructor(partInfo) {
|
|
18
|
+
super(partInfo);
|
|
19
|
+
this.element = (0, directive_util_1.extractFunctionalElement)(partInfo, 'assign');
|
|
20
|
+
}
|
|
21
|
+
disconnected() {
|
|
22
|
+
if (this.lastValue != undefined && this.lastCallback != undefined) {
|
|
23
|
+
this.lastCallback(this.lastValue);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
render(propName, value, cleanupCallback, equalityCheck = (a, b) => a === b) {
|
|
27
|
+
if (!(propName in this.element.instanceProps)) {
|
|
28
|
+
throw new Error(`${this.element.tagName} element has no property of name "${propName}"`);
|
|
29
|
+
}
|
|
30
|
+
// reference equality check!
|
|
31
|
+
if (!equalityCheck(this.lastValue, value)) {
|
|
32
|
+
cleanupCallback(this.lastValue);
|
|
33
|
+
}
|
|
34
|
+
this.element.instanceProps[propName] = value;
|
|
35
|
+
this.lastValue = value;
|
|
36
|
+
this.lastCallback = cleanupCallback;
|
|
37
|
+
return lit_1.noChange;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const assignWithCleanupDirective = (0, directive_js_1.directive)(AssignWithCleanupDirectiveClass);
|
|
File without changes
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.assign = void 0;
|
|
4
|
+
const lit_1 = require("lit");
|
|
5
|
+
const directive_js_1 = require("lit/directive.js");
|
|
6
|
+
const directive_util_1 = require("./directive-util");
|
|
7
|
+
/**
|
|
8
|
+
* The directive generics (in listenDirective) are not strong enough to maintain their values. Thus,
|
|
9
|
+
* the directive call is wrapped in this function.
|
|
10
|
+
*/
|
|
11
|
+
function assign(propertyDescriptor, value) {
|
|
12
|
+
return assignDirective(propertyDescriptor.propName, value);
|
|
13
|
+
}
|
|
14
|
+
exports.assign = assign;
|
|
15
|
+
const assignDirective = (0, directive_js_1.directive)(class extends directive_js_1.Directive {
|
|
16
|
+
constructor(partInfo) {
|
|
17
|
+
super(partInfo);
|
|
18
|
+
this.element = (0, directive_util_1.extractFunctionalElement)(partInfo, 'assign');
|
|
19
|
+
}
|
|
20
|
+
render(propName, value) {
|
|
21
|
+
if (!(propName in this.element.instanceProps)) {
|
|
22
|
+
throw new Error(`${this.element.tagName} element has no property of name "${propName}"`);
|
|
23
|
+
}
|
|
24
|
+
this.element.instanceProps[propName] = value;
|
|
25
|
+
return lit_1.noChange;
|
|
26
|
+
}
|
|
27
|
+
});
|
|
File without changes
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.assertsIsElementPartInfo = exports.extractElement = exports.extractFunctionalElement = void 0;
|
|
4
|
+
const directive_js_1 = require("lit/directive.js");
|
|
5
|
+
const functional_element_1 = require("../functional-element");
|
|
6
|
+
function extractFunctionalElement(partInfo, directiveName) {
|
|
7
|
+
return extractElement(partInfo, directiveName, functional_element_1.FunctionalElementBaseClass);
|
|
8
|
+
}
|
|
9
|
+
exports.extractFunctionalElement = extractFunctionalElement;
|
|
10
|
+
function extractElement(partInfo, directiveName, constructorClass) {
|
|
11
|
+
assertsIsElementPartInfo(partInfo, directiveName);
|
|
12
|
+
const element = partInfo.element;
|
|
13
|
+
if (!(element instanceof constructorClass)) {
|
|
14
|
+
throw new Error(`${directiveName} attached to non ${constructorClass.name} element.`);
|
|
15
|
+
}
|
|
16
|
+
return element;
|
|
17
|
+
}
|
|
18
|
+
exports.extractElement = extractElement;
|
|
19
|
+
function assertsIsElementPartInfo(partInfo, directiveName) {
|
|
20
|
+
if (partInfo.type !== directive_js_1.PartType.ELEMENT) {
|
|
21
|
+
throw new Error(`${directiveName} directive can only be attached directly to an element.`);
|
|
22
|
+
}
|
|
23
|
+
if (!partInfo.element) {
|
|
24
|
+
throw new Error(`${directiveName} directive found no element`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.assertsIsElementPartInfo = assertsIsElementPartInfo;
|
|
File without changes
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.listen = void 0;
|
|
4
|
+
const lit_1 = require("lit");
|
|
5
|
+
const directive_js_1 = require("lit/directive.js");
|
|
6
|
+
const directive_util_1 = require("./directive-util");
|
|
7
|
+
function listen(eventType, listener) {
|
|
8
|
+
return listenDirective(eventType, listener);
|
|
9
|
+
}
|
|
10
|
+
exports.listen = listen;
|
|
11
|
+
/**
|
|
12
|
+
* The directive generics here are not strong enough to maintain their values. Thus, the directive
|
|
13
|
+
* call is wrapped in the function above.
|
|
14
|
+
*/
|
|
15
|
+
const listenDirective = (0, directive_js_1.directive)(class extends directive_js_1.Directive {
|
|
16
|
+
constructor(partInfo) {
|
|
17
|
+
super(partInfo);
|
|
18
|
+
this.element = (0, directive_util_1.extractElement)(partInfo, 'listen', HTMLElement);
|
|
19
|
+
}
|
|
20
|
+
resetListener(listenerMetaData) {
|
|
21
|
+
if (this.lastListenerMetaData) {
|
|
22
|
+
this.element.removeEventListener(this.lastListenerMetaData.eventType, this.lastListenerMetaData.listener);
|
|
23
|
+
}
|
|
24
|
+
this.element.addEventListener(listenerMetaData.eventType, listenerMetaData.listener);
|
|
25
|
+
this.lastListenerMetaData = listenerMetaData;
|
|
26
|
+
}
|
|
27
|
+
createListenerMetaData(eventType, callback) {
|
|
28
|
+
return {
|
|
29
|
+
eventType,
|
|
30
|
+
callback,
|
|
31
|
+
listener: (event) => { var _a; return (_a = this.lastListenerMetaData) === null || _a === void 0 ? void 0 : _a.callback(event); },
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
render(eventTypeInput, callback) {
|
|
35
|
+
const eventType = typeof eventTypeInput === 'string' ? eventTypeInput : eventTypeInput.type;
|
|
36
|
+
if (typeof eventType !== 'string') {
|
|
37
|
+
throw new Error(`Cannot listen to an event with a name that is not a string. Given event name: "${eventType}"`);
|
|
38
|
+
}
|
|
39
|
+
if (this.lastListenerMetaData && this.lastListenerMetaData.eventType === eventType) {
|
|
40
|
+
/**
|
|
41
|
+
* Store the callback here so we don't have to update the attached listener every
|
|
42
|
+
* time the callback is updated.
|
|
43
|
+
*/
|
|
44
|
+
this.lastListenerMetaData.callback = callback;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
this.resetListener(this.createListenerMetaData(eventType, callback));
|
|
48
|
+
}
|
|
49
|
+
return lit_1.noChange;
|
|
50
|
+
}
|
|
51
|
+
});
|
package/dist/{functional-element → cjs/functional-element}/directives/on-dom-created.directive.d.ts
RENAMED
|
File without changes
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.onDomCreated = void 0;
|
|
4
|
+
const directive_js_1 = require("lit/directive.js");
|
|
5
|
+
const directive_util_1 = require("./directive-util");
|
|
6
|
+
const directiveName = 'onDomCreated';
|
|
7
|
+
/** Only fires once, when the element has been created. */
|
|
8
|
+
exports.onDomCreated = (0, directive_js_1.directive)(class extends directive_js_1.Directive {
|
|
9
|
+
constructor(partInfo) {
|
|
10
|
+
super(partInfo);
|
|
11
|
+
(0, directive_util_1.assertsIsElementPartInfo)(partInfo, directiveName);
|
|
12
|
+
}
|
|
13
|
+
update(partInfo, [callback]) {
|
|
14
|
+
(0, directive_util_1.assertsIsElementPartInfo)(partInfo, directiveName);
|
|
15
|
+
const newElement = partInfo.element;
|
|
16
|
+
if (newElement !== this.element) {
|
|
17
|
+
// use requestAnimationFrame here so it can fire property changes outside of a render loop
|
|
18
|
+
requestAnimationFrame(() => callback(newElement));
|
|
19
|
+
this.element = newElement;
|
|
20
|
+
}
|
|
21
|
+
return this.render(callback);
|
|
22
|
+
}
|
|
23
|
+
render(callback) {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
});
|
package/dist/{functional-element → cjs/functional-element}/directives/on-resize.directive.d.ts
RENAMED
|
File without changes
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.onResize = void 0;
|
|
4
|
+
const directive_js_1 = require("lit/directive.js");
|
|
5
|
+
const directive_util_1 = require("./directive-util");
|
|
6
|
+
const directiveName = 'onResize';
|
|
7
|
+
exports.onResize = (0, directive_js_1.directive)(class extends directive_js_1.Directive {
|
|
8
|
+
constructor(partInfo) {
|
|
9
|
+
super(partInfo);
|
|
10
|
+
this.resizeObserver = new ResizeObserver((entries) => this.fireCallback(entries));
|
|
11
|
+
(0, directive_util_1.assertsIsElementPartInfo)(partInfo, directiveName);
|
|
12
|
+
}
|
|
13
|
+
fireCallback(entries) {
|
|
14
|
+
var _a;
|
|
15
|
+
const resizeEntry = entries[0];
|
|
16
|
+
if (!resizeEntry) {
|
|
17
|
+
console.error(entries);
|
|
18
|
+
throw new Error(`${directiveName} observation triggered but the first entry was empty.`);
|
|
19
|
+
}
|
|
20
|
+
(_a = this.callback) === null || _a === void 0 ? void 0 : _a.call(this, { target: resizeEntry.target, contentRect: resizeEntry.contentRect });
|
|
21
|
+
}
|
|
22
|
+
update(partInfo, [callback]) {
|
|
23
|
+
(0, directive_util_1.assertsIsElementPartInfo)(partInfo, directiveName);
|
|
24
|
+
this.callback = callback;
|
|
25
|
+
const newElement = partInfo.element;
|
|
26
|
+
// if the element changes we need to observe the new one
|
|
27
|
+
if (newElement !== this.element) {
|
|
28
|
+
if (this.element) {
|
|
29
|
+
this.resizeObserver.unobserve(this.element);
|
|
30
|
+
}
|
|
31
|
+
this.resizeObserver.observe(newElement);
|
|
32
|
+
this.element = newElement;
|
|
33
|
+
}
|
|
34
|
+
return this.render(callback);
|
|
35
|
+
}
|
|
36
|
+
render(callback) {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
});
|
|
File without changes
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createEventDescriptorMap = exports.defineElementEvent = void 0;
|
|
4
|
+
const typed_event_1 = require("../typed-event/typed-event");
|
|
5
|
+
function defineElementEvent() {
|
|
6
|
+
return (0, typed_event_1.defineTypedEvent)();
|
|
7
|
+
}
|
|
8
|
+
exports.defineElementEvent = defineElementEvent;
|
|
9
|
+
function createEventDescriptorMap(eventsInit) {
|
|
10
|
+
if (!eventsInit) {
|
|
11
|
+
return {};
|
|
12
|
+
}
|
|
13
|
+
return Object.keys(eventsInit)
|
|
14
|
+
.filter((currentElementEventKey) => {
|
|
15
|
+
if (typeof currentElementEventKey !== 'string') {
|
|
16
|
+
throw new Error(`Expected event key of type string but got type "${typeof currentElementEventKey}" for key ${currentElementEventKey}`);
|
|
17
|
+
}
|
|
18
|
+
if (currentElementEventKey === '') {
|
|
19
|
+
throw new Error(`Got empty string for events key.`);
|
|
20
|
+
}
|
|
21
|
+
return true;
|
|
22
|
+
})
|
|
23
|
+
.reduce((accum, currentElementEventKey) => {
|
|
24
|
+
const eventObject = (0, typed_event_1.defineTypedEvent)()(currentElementEventKey);
|
|
25
|
+
accum[currentElementEventKey] = eventObject;
|
|
26
|
+
return accum;
|
|
27
|
+
}, {});
|
|
28
|
+
}
|
|
29
|
+
exports.createEventDescriptorMap = createEventDescriptorMap;
|
|
File without changes
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createPropertyDescriptorMap = exports.createPropertyProxy = void 0;
|
|
4
|
+
function assertValidPropertyName(propertyName, propsInitMap, elementTagName) {
|
|
5
|
+
if (typeof propertyName !== 'string') {
|
|
6
|
+
throw new Error(`Property name must be a string, got type "${typeof propertyName}" from: "${String(propertyName)}" for ${elementTagName}`);
|
|
7
|
+
}
|
|
8
|
+
if (!(propertyName in propsInitMap)) {
|
|
9
|
+
throw new Error(`Property name "${propertyName}" does not exist on ${elementTagName}.`);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function createPropertyProxy(propsInitMap, element) {
|
|
13
|
+
if (!propsInitMap) {
|
|
14
|
+
return {};
|
|
15
|
+
}
|
|
16
|
+
const props = Object.keys(propsInitMap).reduce((accum, propertyName) => {
|
|
17
|
+
accum[propertyName] = element[propertyName];
|
|
18
|
+
return accum;
|
|
19
|
+
}, {});
|
|
20
|
+
const propsProxy = new Proxy(props, {
|
|
21
|
+
get: (_target, propertyName) => {
|
|
22
|
+
assertValidPropertyName(propertyName, propsInitMap, element.tagName);
|
|
23
|
+
return element[propertyName];
|
|
24
|
+
},
|
|
25
|
+
set: (_target, propertyName, value) => {
|
|
26
|
+
assertValidPropertyName(propertyName, propsInitMap, element.tagName);
|
|
27
|
+
element[propertyName] = value;
|
|
28
|
+
return true;
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
return propsProxy;
|
|
32
|
+
}
|
|
33
|
+
exports.createPropertyProxy = createPropertyProxy;
|
|
34
|
+
function createPropertyDescriptorMap(propertyInit) {
|
|
35
|
+
if (!propertyInit) {
|
|
36
|
+
return {};
|
|
37
|
+
}
|
|
38
|
+
return Object.keys(propertyInit)
|
|
39
|
+
.filter((key) => {
|
|
40
|
+
if (typeof key === 'string') {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
throw new Error(`Property init cannot have non string keys: "${key}"`);
|
|
45
|
+
}
|
|
46
|
+
})
|
|
47
|
+
.reduce((accum, currentKey) => {
|
|
48
|
+
accum[currentKey] = {
|
|
49
|
+
propName: currentKey,
|
|
50
|
+
initValue: propertyInit[currentKey],
|
|
51
|
+
};
|
|
52
|
+
return accum;
|
|
53
|
+
}, {});
|
|
54
|
+
}
|
|
55
|
+
exports.createPropertyDescriptorMap = createPropertyDescriptorMap;
|
|
File without changes
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FunctionalElementBaseClass = void 0;
|
|
4
|
+
const lit_1 = require("lit");
|
|
5
|
+
class FunctionalElementBaseClass extends lit_1.LitElement {
|
|
6
|
+
}
|
|
7
|
+
exports.FunctionalElementBaseClass = FunctionalElementBaseClass;
|
|
File without changes
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createRenderParams = void 0;
|
|
4
|
+
const augment_vir_1 = require("augment-vir");
|
|
5
|
+
function createRenderParams(element, eventsMap) {
|
|
6
|
+
const renderParams = {
|
|
7
|
+
/**
|
|
8
|
+
* These two dispatch properties do the same thing but their interfaces are different.
|
|
9
|
+
* DispatchEvent's type interface is much stricter.
|
|
10
|
+
*/
|
|
11
|
+
dispatch: (event) => element.dispatchEvent(event),
|
|
12
|
+
genericDispatch: (event) => element.dispatchEvent(event),
|
|
13
|
+
setProps: (partialProps) => {
|
|
14
|
+
(0, augment_vir_1.getObjectTypedKeys)(partialProps).forEach((propKey) => {
|
|
15
|
+
element.instanceProps[propKey] = partialProps[propKey];
|
|
16
|
+
});
|
|
17
|
+
},
|
|
18
|
+
host: element,
|
|
19
|
+
props: element.instanceProps,
|
|
20
|
+
events: eventsMap,
|
|
21
|
+
};
|
|
22
|
+
return renderParams;
|
|
23
|
+
}
|
|
24
|
+
exports.createRenderParams = createRenderParams;
|
|
File without changes
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.requireAllCustomElementsToBeFunctionalElement = void 0;
|
|
18
|
+
__exportStar(require("./functional-element/define-functional-element"), exports);
|
|
19
|
+
__exportStar(require("./functional-element/directives/assign-with-clean-up.directive"), exports);
|
|
20
|
+
__exportStar(require("./functional-element/directives/assign.directive"), exports);
|
|
21
|
+
__exportStar(require("./functional-element/directives/directive-util"), exports);
|
|
22
|
+
__exportStar(require("./functional-element/directives/listen.directive"), exports);
|
|
23
|
+
__exportStar(require("./functional-element/directives/on-dom-created.directive"), exports);
|
|
24
|
+
__exportStar(require("./functional-element/directives/on-resize.directive"), exports);
|
|
25
|
+
__exportStar(require("./functional-element/element-events"), exports);
|
|
26
|
+
__exportStar(require("./functional-element/element-properties"), exports);
|
|
27
|
+
__exportStar(require("./functional-element/functional-element"), exports);
|
|
28
|
+
__exportStar(require("./functional-element/render-callback"), exports);
|
|
29
|
+
var require_functional_element_1 = require("./require-functional-element");
|
|
30
|
+
Object.defineProperty(exports, "requireAllCustomElementsToBeFunctionalElement", { enumerable: true, get: function () { return require_functional_element_1.requireAllCustomElementsToBeFunctionalElement; } });
|
|
31
|
+
__exportStar(require("./template-transforms/vir-css/vir-css"), exports);
|
|
32
|
+
__exportStar(require("./template-transforms/vir-html/vir-html"), exports);
|
|
33
|
+
__exportStar(require("./typed-event/typed-event"), exports);
|
|
File without changes
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.requireAllCustomElementsToBeFunctionalElement = exports.functionalElementRequired = void 0;
|
|
4
|
+
exports.functionalElementRequired = false;
|
|
5
|
+
function requireAllCustomElementsToBeFunctionalElement() {
|
|
6
|
+
exports.functionalElementRequired = true;
|
|
7
|
+
}
|
|
8
|
+
exports.requireAllCustomElementsToBeFunctionalElement = requireAllCustomElementsToBeFunctionalElement;
|
|
File without changes
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hasStaticTagName = void 0;
|
|
4
|
+
function hasStaticTagName(value) {
|
|
5
|
+
return (typeof value === 'function' &&
|
|
6
|
+
value.hasOwnProperty('tagName') &&
|
|
7
|
+
typeof value.tagName === 'string' &&
|
|
8
|
+
value.tagName.includes('-'));
|
|
9
|
+
}
|
|
10
|
+
exports.hasStaticTagName = hasStaticTagName;
|
|
File without changes
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.transformTemplate = exports.getTransformedTemplate = exports.makeCheckTransform = void 0;
|
|
4
|
+
const array_1 = require("../augments/array");
|
|
5
|
+
function makeCheckTransform(name, check, transform) {
|
|
6
|
+
return {
|
|
7
|
+
name,
|
|
8
|
+
check,
|
|
9
|
+
transform,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
exports.makeCheckTransform = makeCheckTransform;
|
|
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
|
+
function getTransformedTemplate(templateStringsKey, values, fallbackTransform) {
|
|
23
|
+
const alreadyTransformedTemplateStrings = transformedTemplateStrings.get(templateStringsKey);
|
|
24
|
+
const templateTransform = alreadyTransformedTemplateStrings !== null && alreadyTransformedTemplateStrings !== void 0 ? alreadyTransformedTemplateStrings : fallbackTransform();
|
|
25
|
+
if (!alreadyTransformedTemplateStrings) {
|
|
26
|
+
transformedTemplateStrings.set(templateStringsKey, templateTransform);
|
|
27
|
+
}
|
|
28
|
+
const transformedValuesArray = (0, array_1.filterOutArrayIndexes)(values, templateTransform.valueIndexDeletions);
|
|
29
|
+
return { strings: templateTransform.templateStrings, values: transformedValuesArray };
|
|
30
|
+
}
|
|
31
|
+
exports.getTransformedTemplate = getTransformedTemplate;
|
|
32
|
+
function transformTemplate(inputTemplateStrings, inputValues, checksAndTransforms, assertValidString) {
|
|
33
|
+
const newStrings = [];
|
|
34
|
+
const newRaws = [];
|
|
35
|
+
const valueDeletions = [];
|
|
36
|
+
inputTemplateStrings.forEach((currentTemplateString, index) => {
|
|
37
|
+
var _a;
|
|
38
|
+
const lastNewStringsIndex = newStrings.length - 1;
|
|
39
|
+
const lastNewString = newStrings[lastNewStringsIndex];
|
|
40
|
+
const currentValueIndex = index - 1;
|
|
41
|
+
const currentValue = inputValues[currentValueIndex];
|
|
42
|
+
let validTransform;
|
|
43
|
+
assertValidString && assertValidString(currentTemplateString);
|
|
44
|
+
if (typeof lastNewString === 'string') {
|
|
45
|
+
validTransform = (_a = checksAndTransforms.find((checkAndTransform) => {
|
|
46
|
+
return checkAndTransform.check(lastNewString, currentTemplateString, currentValue);
|
|
47
|
+
})) === null || _a === void 0 ? void 0 : _a.transform;
|
|
48
|
+
if (validTransform) {
|
|
49
|
+
newStrings[lastNewStringsIndex] =
|
|
50
|
+
lastNewString + validTransform(currentValue) + currentTemplateString;
|
|
51
|
+
valueDeletions.push(currentValueIndex);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (!validTransform) {
|
|
55
|
+
newStrings.push(currentTemplateString);
|
|
56
|
+
}
|
|
57
|
+
const currentRawLitString = inputTemplateStrings.raw[index];
|
|
58
|
+
if (validTransform) {
|
|
59
|
+
newRaws[lastNewStringsIndex] =
|
|
60
|
+
newRaws[lastNewStringsIndex] + validTransform(currentValue) + currentRawLitString;
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
newRaws.push(currentRawLitString);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
const newTemplateStrings = Object.assign([], newStrings, {
|
|
67
|
+
raw: newRaws,
|
|
68
|
+
});
|
|
69
|
+
return {
|
|
70
|
+
templateStrings: newTemplateStrings,
|
|
71
|
+
valueIndexDeletions: valueDeletions,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
exports.transformTemplate = transformTemplate;
|
|
File without changes
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.transformCssTemplate = void 0;
|
|
4
|
+
const has_static_tag_name_1 = require("../has-static-tag-name");
|
|
5
|
+
const transform_template_1 = require("../transform-template");
|
|
6
|
+
const cssChecksAndTransforms = [
|
|
7
|
+
(0, transform_template_1.makeCheckTransform)('tag name css selector interpolation', (lastNewString, currentLitString, currentValue) => {
|
|
8
|
+
return (0, has_static_tag_name_1.hasStaticTagName)(currentValue);
|
|
9
|
+
}, (input) =>
|
|
10
|
+
// cast is safe because the check method above verifies that this value is a VirElement
|
|
11
|
+
input.tagName),
|
|
12
|
+
];
|
|
13
|
+
function transformCssTemplate(inputTemplateStrings, inputValues) {
|
|
14
|
+
return (0, transform_template_1.transformTemplate)(inputTemplateStrings, inputValues, cssChecksAndTransforms);
|
|
15
|
+
}
|
|
16
|
+
exports.transformCssTemplate = transformCssTemplate;
|
|
File without changes
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.css = void 0;
|
|
4
|
+
const lit_1 = require("lit");
|
|
5
|
+
const transform_template_1 = require("../transform-template");
|
|
6
|
+
const css_transform_1 = require("./css-transform");
|
|
7
|
+
function css(inputTemplateStrings, ...inputValues) {
|
|
8
|
+
const transformedTemplate = (0, transform_template_1.getTransformedTemplate)(inputTemplateStrings, inputValues, () => {
|
|
9
|
+
return (0, css_transform_1.transformCssTemplate)(inputTemplateStrings, inputValues);
|
|
10
|
+
});
|
|
11
|
+
const cssResult = (0, lit_1.css)(transformedTemplate.strings,
|
|
12
|
+
/** The filter will remove the FunctionalElement elements */
|
|
13
|
+
...transformedTemplate.values);
|
|
14
|
+
return cssResult;
|
|
15
|
+
}
|
|
16
|
+
exports.css = css;
|
|
File without changes
|