@joist/element 4.0.0-next.9 → 4.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.
Files changed (74) hide show
  1. package/README.md +96 -21
  2. package/package.json +10 -33
  3. package/src/lib/attr-changed.test.ts +34 -0
  4. package/src/lib/attr-changed.ts +15 -0
  5. package/src/lib/attr.test.ts +88 -34
  6. package/src/lib/attr.ts +31 -38
  7. package/src/lib/element.test.ts +69 -49
  8. package/src/lib/element.ts +118 -52
  9. package/src/lib/lifecycle.test.ts +10 -10
  10. package/src/lib/lifecycle.ts +5 -2
  11. package/src/lib/listen.test.ts +43 -27
  12. package/src/lib/listen.ts +13 -9
  13. package/src/lib/metadata.ts +25 -11
  14. package/src/lib/query-all.test.ts +153 -0
  15. package/src/lib/query-all.ts +81 -0
  16. package/src/lib/query.test.ts +113 -24
  17. package/src/lib/query.ts +51 -16
  18. package/src/lib/result.ts +2 -2
  19. package/src/lib/tags.ts +10 -7
  20. package/src/lib/template.test.ts +57 -29
  21. package/src/lib/template.ts +42 -27
  22. package/src/lib.ts +8 -7
  23. package/target/lib/attr-changed.d.ts +2 -0
  24. package/target/lib/attr-changed.js +10 -0
  25. package/target/lib/attr-changed.js.map +1 -0
  26. package/target/lib/attr-changed.test.d.ts +1 -0
  27. package/target/lib/attr-changed.test.js +54 -0
  28. package/target/lib/attr-changed.test.js.map +1 -0
  29. package/target/lib/attr.d.ts +2 -0
  30. package/target/lib/attr.js +28 -30
  31. package/target/lib/attr.js.map +1 -1
  32. package/target/lib/attr.test.js +157 -40
  33. package/target/lib/attr.test.js.map +1 -1
  34. package/target/lib/element.d.ts +9 -337
  35. package/target/lib/element.js +84 -40
  36. package/target/lib/element.js.map +1 -1
  37. package/target/lib/element.test.js +52 -78
  38. package/target/lib/element.test.js.map +1 -1
  39. package/target/lib/lifecycle.d.ts +1 -1
  40. package/target/lib/lifecycle.js +1 -1
  41. package/target/lib/lifecycle.js.map +1 -1
  42. package/target/lib/lifecycle.test.js +10 -10
  43. package/target/lib/lifecycle.test.js.map +1 -1
  44. package/target/lib/listen.d.ts +2 -2
  45. package/target/lib/listen.js +5 -4
  46. package/target/lib/listen.js.map +1 -1
  47. package/target/lib/listen.test.js +35 -27
  48. package/target/lib/listen.test.js.map +1 -1
  49. package/target/lib/metadata.d.ts +21 -11
  50. package/target/lib/metadata.js +8 -3
  51. package/target/lib/metadata.js.map +1 -1
  52. package/target/lib/query-all.d.ts +10 -0
  53. package/target/lib/query-all.js +40 -0
  54. package/target/lib/query-all.js.map +1 -0
  55. package/target/lib/query-all.test.d.ts +1 -0
  56. package/target/lib/query-all.test.js +195 -0
  57. package/target/lib/query-all.test.js.map +1 -0
  58. package/target/lib/query.d.ts +6 -5
  59. package/target/lib/query.js +22 -10
  60. package/target/lib/query.js.map +1 -1
  61. package/target/lib/query.test.js +134 -24
  62. package/target/lib/query.test.js.map +1 -1
  63. package/target/lib/result.d.ts +2 -2
  64. package/target/lib/tags.d.ts +4 -4
  65. package/target/lib/tags.js +6 -3
  66. package/target/lib/tags.js.map +1 -1
  67. package/target/lib/template.d.ts +3 -1
  68. package/target/lib/template.js +26 -20
  69. package/target/lib/template.js.map +1 -1
  70. package/target/lib/template.test.js +47 -26
  71. package/target/lib/template.test.js.map +1 -1
  72. package/target/lib.d.ts +8 -7
  73. package/target/lib.js +8 -7
  74. package/target/lib.js.map +1 -1
@@ -1,37 +1,41 @@
1
- const TOKEN_PREFIX = '#:';
2
1
  class Updates extends Set {
3
2
  }
4
- export function template(templateOpts) {
3
+ export function template({ tokenPrefix = "#:", value } = {}) {
5
4
  let updates = null;
6
- return function render() {
7
- if (!updates) {
8
- updates = findUpdates(this, templateOpts?.value ?? ((key) => getTemplateValue(this, key)));
5
+ return function render(opts) {
6
+ if (!updates || opts?.refresh) {
7
+ updates = findUpdates(this, {
8
+ tokenPrefix,
9
+ value: value ?? ((key) => getTemplateValue(this, key)),
10
+ });
9
11
  }
10
12
  else {
11
- for (let update of updates) {
13
+ for (const update of updates) {
12
14
  update();
13
15
  }
14
16
  }
15
17
  };
16
18
  }
17
- function findUpdates(el, getter) {
19
+ function findUpdates(el, opts) {
18
20
  const iterator = document.createTreeWalker(el.shadowRoot ?? el, NodeFilter.SHOW_ELEMENT);
19
21
  const updates = new Updates();
20
22
  while (iterator.nextNode()) {
21
- const res = trackElement(iterator.currentNode, updates, getter);
23
+ const res = trackElement(iterator.currentNode, updates, opts);
22
24
  if (res !== null) {
23
25
  iterator.currentNode = res;
24
26
  }
25
27
  }
26
28
  return updates;
27
29
  }
28
- function trackElement(node, updates, getter) {
30
+ function trackElement(node, updates, opts) {
29
31
  const element = node;
30
- for (let attr of element.attributes) {
32
+ const getter = opts.value;
33
+ const tokenPrefix = opts.tokenPrefix;
34
+ for (const attr of element.attributes) {
31
35
  const nodeValue = attr.value.trim();
32
- const realAttributeName = attr.name.replace(TOKEN_PREFIX, '');
36
+ const realAttributeName = attr.name.replace(tokenPrefix, "");
33
37
  let update = null;
34
- if (attr.name.startsWith(`${TOKEN_PREFIX}bind`)) {
38
+ if (attr.name.startsWith(`${tokenPrefix}bind`)) {
35
39
  update = () => {
36
40
  const value = getter(attr.value);
37
41
  if (element.textContent !== value) {
@@ -39,15 +43,17 @@ function trackElement(node, updates, getter) {
39
43
  }
40
44
  };
41
45
  }
42
- else if (attr.name.startsWith(TOKEN_PREFIX)) {
43
- const isBooleanAttr = nodeValue.startsWith('!');
44
- const isPositive = nodeValue.startsWith('!!');
45
- const propertyKey = nodeValue.replaceAll('!', '');
46
+ else if (attr.name.startsWith(tokenPrefix)) {
47
+ const isBooleanAttr = nodeValue.startsWith("!");
48
+ const isPositive = nodeValue.startsWith("!!");
49
+ const propertyKey = nodeValue.replaceAll("!", "");
46
50
  if (isBooleanAttr) {
47
51
  update = () => {
48
- let value = isPositive ? !!getter(propertyKey) : !getter(propertyKey);
52
+ const value = isPositive
53
+ ? !!getter(propertyKey)
54
+ : !getter(propertyKey);
49
55
  if (value) {
50
- element.setAttribute(realAttributeName, '');
56
+ element.setAttribute(realAttributeName, "");
51
57
  }
52
58
  else {
53
59
  element.removeAttribute(realAttributeName);
@@ -73,9 +79,9 @@ function trackElement(node, updates, getter) {
73
79
  return null;
74
80
  }
75
81
  export function getTemplateValue(obj, key) {
76
- const parsed = key.split('.');
82
+ const parsed = key.split(".");
77
83
  let pointer = obj;
78
- for (let part of parsed) {
84
+ for (const part of parsed) {
79
85
  pointer = pointer[part];
80
86
  }
81
87
  return pointer;
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/lib/template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/lib/template.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
- import { assert } from 'chai';
2
- import { template } from './template.js';
1
+ import { assert } from "chai";
2
+ import { template } from "./template.js";
3
3
  const TESTS = [
4
- function comments(el, root) {
5
- it(`should intialize bindable nodes ${root instanceof ShadowRoot ? '(ShadowDOM)' : '(LightDOM)'}`, () => {
6
- el.title = 'Hello World';
7
- el.ariaLabel = 'This is the label';
8
- el.ariaDescription = 'This is the description';
4
+ function bindableNodes(el, root) {
5
+ it(`should intialize bindable nodes ${root instanceof ShadowRoot ? "(ShadowDOM)" : "(LightDOM)"}`, () => {
6
+ el.title = "Hello World";
7
+ el.ariaLabel = "This is the label";
8
+ el.ariaDescription = "This is the description";
9
9
  root.innerHTML = `
10
10
  <span #:bind="title"></span>
11
11
 
@@ -17,32 +17,32 @@ const TESTS = [
17
17
  const render = template().bind(el);
18
18
  render();
19
19
  assert.equal(root.innerHTML
20
- .split('\n')
20
+ .split("\n")
21
21
  .map((res) => res.trim())
22
- .join(''), '<span #:bind="title">Hello World</span><ul><li #:bind="ariaLabel">This is the label</li><li #:bind="ariaDescription">This is the description</li></ul>');
22
+ .join(""), '<span #:bind="title">Hello World</span><ul><li #:bind="ariaLabel">This is the label</li><li #:bind="ariaDescription">This is the description</li></ul>');
23
23
  });
24
24
  },
25
- function attributes(el, root) {
26
- it(`should intialize template attributes ${root instanceof ShadowRoot ? '(ShadowDOM)' : '(LightDOM)'}`, () => {
27
- el.ariaLabel = 'This is the label';
28
- el.ariaDescription = 'This is the description';
25
+ function attributeNodes(el, root) {
26
+ it(`should intialize template attributes ${root instanceof ShadowRoot ? "(ShadowDOM)" : "(LightDOM)"}`, () => {
27
+ el.ariaLabel = "This is the label";
28
+ el.ariaDescription = "This is the description";
29
29
  root.innerHTML = `
30
30
  <ul #:aria-label="ariaLabel" #:aria-description="ariaDescription"></ul>
31
31
  `;
32
32
  const render = template().bind(el);
33
33
  render();
34
34
  assert.equal(root.innerHTML
35
- .split('\n')
35
+ .split("\n")
36
36
  .map((res) => res.trim())
37
- .join(''), '<ul #:aria-label="ariaLabel" #:aria-description="ariaDescription" aria-label="This is the label" aria-description="This is the description"></ul>');
37
+ .join(""), '<ul #:aria-label="ariaLabel" #:aria-description="ariaDescription" aria-label="This is the label" aria-description="This is the description"></ul>');
38
38
  });
39
39
  },
40
40
  function customGetter(el, root) {
41
- it(`should use custom getter for values ${root instanceof ShadowRoot ? '(ShadowDOM)' : '(LightDOM)'}`, () => {
41
+ it(`should use custom getter for values ${root instanceof ShadowRoot ? "(ShadowDOM)" : "(LightDOM)"}`, () => {
42
42
  const data = {
43
- title: 'Hello World',
44
- ariaLabel: 'This is the label',
45
- ariaDescription: 'This is the description'
43
+ title: "Hello World",
44
+ ariaLabel: "This is the label",
45
+ ariaDescription: "This is the description",
46
46
  };
47
47
  root.innerHTML = `
48
48
  <span #:bind="title"></span>
@@ -55,16 +55,37 @@ const TESTS = [
55
55
  const render = template({ value: (key) => data[key] }).bind(el);
56
56
  render();
57
57
  assert.equal(root.innerHTML
58
- .split('\n')
58
+ .split("\n")
59
59
  .map((res) => res.trim())
60
- .join(''), '<span #:bind="title">Hello World</span><ul><li #:bind="ariaLabel">This is the label</li><li #:bind="ariaDescription">This is the description</li></ul>');
60
+ .join(""), '<span #:bind="title">Hello World</span><ul><li #:bind="ariaLabel">This is the label</li><li #:bind="ariaDescription">This is the description</li></ul>');
61
61
  });
62
- }
62
+ },
63
+ function customPrefix(el, root) {
64
+ it(`should use custom getter for values ${root instanceof ShadowRoot ? "(ShadowDOM)" : "(LightDOM)"}`, () => {
65
+ el.title = "Hello World";
66
+ el.ariaLabel = "This is the label";
67
+ el.ariaDescription = "This is the description";
68
+ root.innerHTML = `
69
+ <span x-bind="title"></span>
70
+
71
+ <ul x-aria-label="ariaLabel">
72
+ <li x-bind="ariaLabel"></li>
73
+ <li x-bind="ariaDescription"></li>
74
+ </ul>
75
+ `;
76
+ const render = template({ tokenPrefix: "x-" }).bind(el);
77
+ render();
78
+ assert.equal(root.innerHTML
79
+ .split("\n")
80
+ .map((res) => res.trim())
81
+ .join(""), '<span x-bind="title">Hello World</span><ul x-aria-label="ariaLabel" aria-label="This is the label"><li x-bind="ariaLabel">This is the label</li><li x-bind="ariaDescription">This is the description</li></ul>');
82
+ });
83
+ },
63
84
  ];
64
- for (let test of TESTS) {
65
- const lightEl = document.createElement('div');
85
+ for (const test of TESTS) {
86
+ const lightEl = document.createElement("div");
66
87
  test(lightEl, lightEl);
67
- const shadowEl = document.createElement('div');
68
- test(shadowEl, shadowEl.attachShadow({ mode: 'open' }));
88
+ const shadowEl = document.createElement("div");
89
+ test(shadowEl, shadowEl.attachShadow({ mode: "open" }));
69
90
  }
70
91
  //# sourceMappingURL=template.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"template.test.js","sourceRoot":"","sources":["../../src/lib/template.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template.test.js","sourceRoot":"","sources":["../../src/lib/template.test.ts"],"names":[],"mappings":"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"}
package/target/lib.d.ts CHANGED
@@ -1,7 +1,8 @@
1
- export { css, html, HTMLResult, CSSResult } from './lib/tags.js';
2
- export { attr } from './lib/attr.js';
3
- export { listen } from './lib/listen.js';
4
- export { element } from './lib/element.js';
5
- export { query } from './lib/query.js';
6
- export { template, getTemplateValue } from './lib/template.js';
7
- export { ready } from './lib/lifecycle.js';
1
+ export { css, html, HTMLResult, CSSResult } from "./lib/tags.js";
2
+ export { attr } from "./lib/attr.js";
3
+ export { listen } from "./lib/listen.js";
4
+ export { element } from "./lib/element.js";
5
+ export { query } from "./lib/query.js";
6
+ export { queryAll } from "./lib/query-all.js";
7
+ export { ready } from "./lib/lifecycle.js";
8
+ export { attrChanged } from "./lib/attr-changed.js";
package/target/lib.js CHANGED
@@ -1,8 +1,9 @@
1
- export { css, html, HTMLResult, CSSResult } from './lib/tags.js';
2
- export { attr } from './lib/attr.js';
3
- export { listen } from './lib/listen.js';
4
- export { element } from './lib/element.js';
5
- export { query } from './lib/query.js';
6
- export { template, getTemplateValue } from './lib/template.js';
7
- export { ready } from './lib/lifecycle.js';
1
+ export { css, html, HTMLResult, CSSResult } from "./lib/tags.js";
2
+ export { attr } from "./lib/attr.js";
3
+ export { listen } from "./lib/listen.js";
4
+ export { element } from "./lib/element.js";
5
+ export { query } from "./lib/query.js";
6
+ export { queryAll } from "./lib/query-all.js";
7
+ export { ready } from "./lib/lifecycle.js";
8
+ export { attrChanged } from "./lib/attr-changed.js";
8
9
  //# sourceMappingURL=lib.js.map
package/target/lib.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC"}