element-vir 5.1.1 → 5.3.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.
Files changed (112) hide show
  1. package/dist/{cjs/augments → augments}/array.d.ts +0 -0
  2. package/dist/{esm/augments → augments}/array.js +0 -0
  3. package/dist/{cjs/augments → augments}/type.d.ts +0 -0
  4. package/dist/{esm/augments → augments}/type.js +0 -0
  5. package/dist/{cjs/functional-element → functional-element}/define-functional-element.d.ts +0 -0
  6. package/dist/functional-element/define-functional-element.js +41 -0
  7. package/dist/{cjs/functional-element → functional-element}/directives/assign-with-clean-up.directive.d.ts +0 -0
  8. package/dist/{esm/functional-element → functional-element}/directives/assign-with-clean-up.directive.js +3 -0
  9. package/dist/{cjs/functional-element → functional-element}/directives/assign.directive.d.ts +0 -0
  10. package/dist/{esm/functional-element → functional-element}/directives/assign.directive.js +1 -0
  11. package/dist/{cjs/functional-element → functional-element}/directives/directive-util.d.ts +0 -0
  12. package/dist/{esm/functional-element → functional-element}/directives/directive-util.js +0 -0
  13. package/dist/{cjs/functional-element → functional-element}/directives/listen.directive.d.ts +0 -0
  14. package/dist/{esm/functional-element → functional-element}/directives/listen.directive.js +3 -1
  15. package/dist/{cjs/functional-element → functional-element}/directives/on-dom-created.directive.d.ts +0 -0
  16. package/dist/{esm/functional-element → functional-element}/directives/on-dom-created.directive.js +1 -0
  17. package/dist/{cjs/functional-element → functional-element}/directives/on-resize.directive.d.ts +0 -0
  18. package/dist/{esm/functional-element → functional-element}/directives/on-resize.directive.js +4 -3
  19. package/dist/{cjs/functional-element → functional-element}/element-events.d.ts +0 -0
  20. package/dist/{esm/functional-element → functional-element}/element-events.js +0 -0
  21. package/dist/{cjs/functional-element → functional-element}/element-properties.d.ts +0 -0
  22. package/dist/{esm/functional-element → functional-element}/element-properties.js +0 -0
  23. package/dist/{cjs/functional-element → functional-element}/functional-element.d.ts +0 -0
  24. package/dist/{esm/functional-element → functional-element}/functional-element.js +2 -0
  25. package/dist/{cjs/functional-element → functional-element}/render-callback.d.ts +0 -0
  26. package/dist/{esm/functional-element → functional-element}/render-callback.js +0 -0
  27. package/dist/{cjs/index.d.ts → index.d.ts} +0 -0
  28. package/dist/{esm/index.js → index.js} +0 -0
  29. package/dist/{cjs/require-functional-element.d.ts → require-functional-element.d.ts} +0 -0
  30. package/dist/{esm/require-functional-element.js → require-functional-element.js} +0 -0
  31. package/dist/{cjs/template-transforms → template-transforms}/has-static-tag-name.d.ts +0 -0
  32. package/dist/{esm/template-transforms → template-transforms}/has-static-tag-name.js +0 -0
  33. package/dist/{cjs/template-transforms → template-transforms}/transform-template.d.ts +0 -0
  34. package/dist/{esm/template-transforms → template-transforms}/transform-template.js +3 -4
  35. package/dist/{cjs/template-transforms → template-transforms}/vir-css/css-transform.d.ts +0 -0
  36. package/dist/{esm/template-transforms → template-transforms}/vir-css/css-transform.js +0 -0
  37. package/dist/{cjs/template-transforms → template-transforms}/vir-css/vir-css.d.ts +0 -0
  38. package/dist/{esm/template-transforms → template-transforms}/vir-css/vir-css.js +0 -0
  39. package/dist/{cjs/template-transforms → template-transforms}/vir-html/html-transform.d.ts +0 -0
  40. package/dist/{esm/template-transforms → template-transforms}/vir-html/html-transform.js +1 -1
  41. package/dist/{cjs/template-transforms → template-transforms}/vir-html/vir-html.d.ts +0 -0
  42. package/dist/{esm/template-transforms → template-transforms}/vir-html/vir-html.js +0 -0
  43. package/dist/{cjs/typed-event → typed-event}/typed-event.d.ts +0 -0
  44. package/dist/{esm/typed-event → typed-event}/typed-event.js +11 -13
  45. package/package.json +4 -10
  46. package/dist/cjs/augments/array.js +0 -7
  47. package/dist/cjs/augments/type.js +0 -2
  48. package/dist/cjs/functional-element/define-functional-element.js +0 -47
  49. package/dist/cjs/functional-element/directives/assign-with-clean-up.directive.js +0 -40
  50. package/dist/cjs/functional-element/directives/assign.directive.js +0 -27
  51. package/dist/cjs/functional-element/directives/directive-util.js +0 -27
  52. package/dist/cjs/functional-element/directives/listen.directive.js +0 -51
  53. package/dist/cjs/functional-element/directives/on-dom-created.directive.js +0 -26
  54. package/dist/cjs/functional-element/directives/on-resize.directive.js +0 -39
  55. package/dist/cjs/functional-element/element-events.js +0 -29
  56. package/dist/cjs/functional-element/element-properties.js +0 -55
  57. package/dist/cjs/functional-element/functional-element.js +0 -7
  58. package/dist/cjs/functional-element/render-callback.js +0 -24
  59. package/dist/cjs/index.js +0 -33
  60. package/dist/cjs/require-functional-element.js +0 -8
  61. package/dist/cjs/template-transforms/has-static-tag-name.js +0 -10
  62. package/dist/cjs/template-transforms/transform-template.js +0 -74
  63. package/dist/cjs/template-transforms/vir-css/css-transform.js +0 -16
  64. package/dist/cjs/template-transforms/vir-css/vir-css.js +0 -16
  65. package/dist/cjs/template-transforms/vir-html/html-transform.js +0 -48
  66. package/dist/cjs/template-transforms/vir-html/vir-html.js +0 -20
  67. package/dist/cjs/typed-event/typed-event.js +0 -37
  68. package/dist/esm/augments/array.d.ts +0 -1
  69. package/dist/esm/augments/type.d.ts +0 -1
  70. package/dist/esm/functional-element/define-functional-element.d.ts +0 -4
  71. package/dist/esm/functional-element/define-functional-element.js +0 -43
  72. package/dist/esm/functional-element/directives/assign-with-clean-up.directive.d.ts +0 -19
  73. package/dist/esm/functional-element/directives/assign.directive.d.ts +0 -15
  74. package/dist/esm/functional-element/directives/directive-util.d.ts +0 -15
  75. package/dist/esm/functional-element/directives/listen.directive.d.ts +0 -13
  76. package/dist/esm/functional-element/directives/on-dom-created.directive.d.ts +0 -11
  77. package/dist/esm/functional-element/directives/on-resize.directive.d.ts +0 -15
  78. package/dist/esm/functional-element/element-events.d.ts +0 -10
  79. package/dist/esm/functional-element/element-properties.d.ts +0 -16
  80. package/dist/esm/functional-element/functional-element.d.ts +0 -42
  81. package/dist/esm/functional-element/render-callback.d.ts +0 -21
  82. package/dist/esm/index.d.ts +0 -15
  83. package/dist/esm/require-functional-element.d.ts +0 -2
  84. package/dist/esm/template-transforms/has-static-tag-name.d.ts +0 -4
  85. package/dist/esm/template-transforms/transform-template.d.ts +0 -16
  86. package/dist/esm/template-transforms/vir-css/css-transform.d.ts +0 -7
  87. package/dist/esm/template-transforms/vir-css/vir-css.d.ts +0 -3
  88. package/dist/esm/template-transforms/vir-html/html-transform.d.ts +0 -3
  89. package/dist/esm/template-transforms/vir-html/vir-html.d.ts +0 -3
  90. package/dist/esm/typed-event/typed-event.d.ts +0 -19
  91. package/dist/types/augments/array.d.ts +0 -1
  92. package/dist/types/augments/type.d.ts +0 -1
  93. package/dist/types/functional-element/define-functional-element.d.ts +0 -4
  94. package/dist/types/functional-element/directives/assign-with-clean-up.directive.d.ts +0 -19
  95. package/dist/types/functional-element/directives/assign.directive.d.ts +0 -15
  96. package/dist/types/functional-element/directives/directive-util.d.ts +0 -15
  97. package/dist/types/functional-element/directives/listen.directive.d.ts +0 -13
  98. package/dist/types/functional-element/directives/on-dom-created.directive.d.ts +0 -11
  99. package/dist/types/functional-element/directives/on-resize.directive.d.ts +0 -15
  100. package/dist/types/functional-element/element-events.d.ts +0 -10
  101. package/dist/types/functional-element/element-properties.d.ts +0 -16
  102. package/dist/types/functional-element/functional-element.d.ts +0 -42
  103. package/dist/types/functional-element/render-callback.d.ts +0 -21
  104. package/dist/types/index.d.ts +0 -15
  105. package/dist/types/require-functional-element.d.ts +0 -2
  106. package/dist/types/template-transforms/has-static-tag-name.d.ts +0 -4
  107. package/dist/types/template-transforms/transform-template.d.ts +0 -16
  108. package/dist/types/template-transforms/vir-css/css-transform.d.ts +0 -7
  109. package/dist/types/template-transforms/vir-css/vir-css.d.ts +0 -3
  110. package/dist/types/template-transforms/vir-html/html-transform.d.ts +0 -3
  111. package/dist/types/template-transforms/vir-html/vir-html.d.ts +0 -3
  112. package/dist/types/typed-event/typed-event.d.ts +0 -19
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,41 @@
1
+ import { css } from 'lit';
2
+ import { property } from 'lit/decorators.js';
3
+ import { createEventDescriptorMap } from './element-events';
4
+ import { createPropertyDescriptorMap, createPropertyProxy, } from './element-properties';
5
+ import { FunctionalElementBaseClass, } from './functional-element';
6
+ import { createRenderParams } from './render-callback';
7
+ export function defineFunctionalElement(functionalElementInit) {
8
+ const eventsMap = createEventDescriptorMap(functionalElementInit.events);
9
+ const anonymousClass = class extends FunctionalElementBaseClass {
10
+ static tagName = functionalElementInit.tagName;
11
+ static styles = functionalElementInit.styles || css ``;
12
+ createRenderParams() {
13
+ return createRenderParams(this, eventsMap);
14
+ }
15
+ static initInput = functionalElementInit;
16
+ static events = eventsMap;
17
+ static renderCallback = functionalElementInit.renderCallback;
18
+ static props = createPropertyDescriptorMap(functionalElementInit.props);
19
+ initCalled = false;
20
+ render() {
21
+ const renderParams = this.createRenderParams();
22
+ if (!this.initCalled && functionalElementInit.initCallback) {
23
+ this.initCalled = true;
24
+ functionalElementInit.initCallback(renderParams);
25
+ }
26
+ return functionalElementInit.renderCallback(renderParams);
27
+ }
28
+ instanceProps = createPropertyProxy(functionalElementInit.props, this);
29
+ constructor() {
30
+ super();
31
+ const initProps = functionalElementInit.props || {};
32
+ Object.keys(initProps).forEach((propName) => {
33
+ const functionalElementInstance = this;
34
+ property()(functionalElementInstance, propName);
35
+ functionalElementInstance[propName] = initProps[propName];
36
+ });
37
+ }
38
+ };
39
+ window.customElements.define(functionalElementInit.tagName, anonymousClass);
40
+ return anonymousClass;
41
+ }
@@ -10,6 +10,9 @@ export function assignWithCleanup(propertyDescriptor, value, cleanupCallback) {
10
10
  return assignWithCleanupDirective(propertyDescriptor.propName, value, cleanupCallback);
11
11
  }
12
12
  class AssignWithCleanupDirectiveClass extends AsyncDirective {
13
+ element;
14
+ lastValue;
15
+ lastCallback;
13
16
  constructor(partInfo) {
14
17
  super(partInfo);
15
18
  this.element = extractFunctionalElement(partInfo, 'assign');
@@ -9,6 +9,7 @@ export function assign(propertyDescriptor, value) {
9
9
  return assignDirective(propertyDescriptor.propName, value);
10
10
  }
11
11
  const assignDirective = directive(class extends Directive {
12
+ element;
12
13
  constructor(partInfo) {
13
14
  super(partInfo);
14
15
  this.element = extractFunctionalElement(partInfo, 'assign');
@@ -9,6 +9,8 @@ export function listen(eventType, listener) {
9
9
  * call is wrapped in the function above.
10
10
  */
11
11
  const listenDirective = directive(class extends Directive {
12
+ element;
13
+ lastListenerMetaData;
12
14
  constructor(partInfo) {
13
15
  super(partInfo);
14
16
  this.element = extractElement(partInfo, 'listen', HTMLElement);
@@ -24,7 +26,7 @@ const listenDirective = directive(class extends Directive {
24
26
  return {
25
27
  eventType,
26
28
  callback,
27
- listener: (event) => { var _a; return (_a = this.lastListenerMetaData) === null || _a === void 0 ? void 0 : _a.callback(event); },
29
+ listener: (event) => this.lastListenerMetaData?.callback(event),
28
30
  };
29
31
  }
30
32
  render(eventTypeInput, callback) {
@@ -3,6 +3,7 @@ import { assertsIsElementPartInfo } from './directive-util';
3
3
  const directiveName = 'onDomCreated';
4
4
  /** Only fires once, when the element has been created. */
5
5
  export const onDomCreated = directive(class extends Directive {
6
+ element;
6
7
  constructor(partInfo) {
7
8
  super(partInfo);
8
9
  assertsIsElementPartInfo(partInfo, directiveName);
@@ -2,19 +2,20 @@ import { directive, Directive } from 'lit/directive.js';
2
2
  import { assertsIsElementPartInfo } from './directive-util';
3
3
  const directiveName = 'onResize';
4
4
  export const onResize = directive(class extends Directive {
5
+ element;
6
+ resizeObserver = new ResizeObserver((entries) => this.fireCallback(entries));
7
+ callback;
5
8
  constructor(partInfo) {
6
9
  super(partInfo);
7
- this.resizeObserver = new ResizeObserver((entries) => this.fireCallback(entries));
8
10
  assertsIsElementPartInfo(partInfo, directiveName);
9
11
  }
10
12
  fireCallback(entries) {
11
- var _a;
12
13
  const resizeEntry = entries[0];
13
14
  if (!resizeEntry) {
14
15
  console.error(entries);
15
16
  throw new Error(`${directiveName} observation triggered but the first entry was empty.`);
16
17
  }
17
- (_a = this.callback) === null || _a === void 0 ? void 0 : _a.call(this, { target: resizeEntry.target, contentRect: resizeEntry.contentRect });
18
+ this.callback?.({ target: resizeEntry.target, contentRect: resizeEntry.contentRect });
18
19
  }
19
20
  update(partInfo, [callback]) {
20
21
  assertsIsElementPartInfo(partInfo, directiveName);
@@ -1,3 +1,5 @@
1
1
  import { LitElement } from 'lit';
2
2
  export class FunctionalElementBaseClass extends LitElement {
3
+ static tagName;
4
+ static styles;
3
5
  }
File without changes
File without changes
@@ -17,7 +17,7 @@ export function makeCheckTransform(name, check, transform) {
17
17
  const transformedTemplateStrings = new WeakMap();
18
18
  export function getTransformedTemplate(templateStringsKey, values, fallbackTransform) {
19
19
  const alreadyTransformedTemplateStrings = transformedTemplateStrings.get(templateStringsKey);
20
- const templateTransform = alreadyTransformedTemplateStrings !== null && alreadyTransformedTemplateStrings !== void 0 ? alreadyTransformedTemplateStrings : fallbackTransform();
20
+ const templateTransform = alreadyTransformedTemplateStrings ?? fallbackTransform();
21
21
  if (!alreadyTransformedTemplateStrings) {
22
22
  transformedTemplateStrings.set(templateStringsKey, templateTransform);
23
23
  }
@@ -29,7 +29,6 @@ export function transformTemplate(inputTemplateStrings, inputValues, checksAndTr
29
29
  const newRaws = [];
30
30
  const valueDeletions = [];
31
31
  inputTemplateStrings.forEach((currentTemplateString, index) => {
32
- var _a;
33
32
  const lastNewStringsIndex = newStrings.length - 1;
34
33
  const lastNewString = newStrings[lastNewStringsIndex];
35
34
  const currentValueIndex = index - 1;
@@ -37,9 +36,9 @@ export function transformTemplate(inputTemplateStrings, inputValues, checksAndTr
37
36
  let validTransform;
38
37
  assertValidString && assertValidString(currentTemplateString);
39
38
  if (typeof lastNewString === 'string') {
40
- validTransform = (_a = checksAndTransforms.find((checkAndTransform) => {
39
+ validTransform = checksAndTransforms.find((checkAndTransform) => {
41
40
  return checkAndTransform.check(lastNewString, currentTemplateString, currentValue);
42
- })) === null || _a === void 0 ? void 0 : _a.transform;
41
+ })?.transform;
43
42
  if (validTransform) {
44
43
  newStrings[lastNewStringsIndex] =
45
44
  lastNewString + validTransform(currentValue) + currentTemplateString;
@@ -5,7 +5,7 @@ import { makeCheckTransform, transformTemplate, } from '../transform-template';
5
5
  const htmlChecksAndTransforms = [
6
6
  makeCheckTransform('tag name interpolation', (lastNewString, currentLitString, currentValue) => {
7
7
  const shouldHaveTagNameHere = (lastNewString.trim().endsWith('<') && !!currentLitString.match(/^[\s\n>]/)) ||
8
- ((lastNewString === null || lastNewString === void 0 ? void 0 : lastNewString.trim().endsWith('</')) && currentLitString.trim().startsWith('>'));
8
+ (lastNewString?.trim().endsWith('</') && currentLitString.trim().startsWith('>'));
9
9
  const staticTagName = hasStaticTagName(currentValue);
10
10
  if (shouldHaveTagNameHere && !staticTagName) {
11
11
  console.error({
@@ -1,14 +1,14 @@
1
1
  export class TypedEvent extends CustomEvent {
2
+ _type = '';
3
+ get type() {
4
+ return this._type;
5
+ }
2
6
  constructor(type, value) {
3
7
  super(typeof type === 'string' ? type : type.type, {
4
8
  detail: value,
5
9
  bubbles: true,
6
10
  composed: true,
7
11
  });
8
- this._type = '';
9
- }
10
- get type() {
11
- return this._type;
12
12
  }
13
13
  }
14
14
  /**
@@ -19,14 +19,12 @@ export class TypedEvent extends CustomEvent {
19
19
  */
20
20
  export function defineTypedEvent() {
21
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;
22
+ return class extends TypedEvent {
23
+ static type = eventType;
24
+ _type = eventType;
25
+ constructor(value) {
26
+ super(eventType, value);
27
+ }
28
+ };
31
29
  };
32
30
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "element-vir",
3
- "version": "5.1.1",
3
+ "version": "5.3.0",
4
4
  "keywords": [
5
5
  "custom",
6
6
  "web",
@@ -22,16 +22,10 @@
22
22
  "name": "electrovir",
23
23
  "url": "https://github.com/electrovir"
24
24
  },
25
- "exports": {
26
- "import": "./dist/esm/index.js",
27
- "require": "./dist/cjs/index.js",
28
- "default": "./dist/esm/index.js"
29
- },
30
- "main": "dist/cjs/index.js",
31
- "module": "dist/esm/index.js",
32
- "types": "dist/types/index.d.ts",
25
+ "main": "dist/index.js",
26
+ "types": "dist/index.d.ts",
33
27
  "scripts": {
34
- "compile": "rm -rf dist && tsc --project tsconfig.json && tsc --project tsconfig.cjs.json && tsc --project tsconfig.esm.json",
28
+ "compile": "rm -rf dist && tsc",
35
29
  "format": "virmator format write",
36
30
  "jest": "jest --config ./src/jest/jest.config.ts",
37
31
  "prepublishOnly": "npm run compile && npm run test:full",
@@ -1,7 +0,0 @@
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;
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,47 +0,0 @@
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;
@@ -1,40 +0,0 @@
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);
@@ -1,27 +0,0 @@
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
- });
@@ -1,27 +0,0 @@
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;
@@ -1,51 +0,0 @@
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
- });
@@ -1,26 +0,0 @@
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
- });
@@ -1,39 +0,0 @@
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
- });
@@ -1,29 +0,0 @@
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;