jj 2.2.0 → 2.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 (93) hide show
  1. package/lib/JJD.d.ts +76 -0
  2. package/lib/JJD.js +91 -0
  3. package/lib/JJD.js.map +1 -0
  4. package/lib/JJDF.d.ts +60 -0
  5. package/lib/JJDF.js +68 -0
  6. package/lib/JJDF.js.map +1 -0
  7. package/lib/JJE.d.ts +313 -0
  8. package/lib/JJE.js +412 -0
  9. package/lib/JJE.js.map +1 -0
  10. package/lib/JJHE.d.ts +120 -0
  11. package/lib/JJHE.js +164 -0
  12. package/lib/JJHE.js.map +1 -0
  13. package/lib/JJN.d.ts +211 -0
  14. package/lib/JJN.js +286 -0
  15. package/lib/JJN.js.map +1 -0
  16. package/lib/JJSE.d.ts +148 -0
  17. package/lib/JJSE.js +190 -0
  18. package/lib/JJSE.js.map +1 -0
  19. package/lib/JJSR.d.ts +67 -0
  20. package/lib/JJSR.js +85 -0
  21. package/lib/JJSR.js.map +1 -0
  22. package/lib/JJT.d.ts +79 -0
  23. package/lib/JJT.js +108 -0
  24. package/lib/JJT.js.map +1 -0
  25. package/lib/bundle.d.ts +1 -0
  26. package/lib/bundle.js +1505 -445
  27. package/lib/bundle.js.map +3 -3
  28. package/lib/bundle.min.d.ts +1 -0
  29. package/lib/bundle.min.js +2 -2
  30. package/lib/case.d.ts +57 -0
  31. package/lib/case.js +61 -3
  32. package/lib/case.js.map +1 -1
  33. package/lib/components.d.ts +147 -0
  34. package/lib/components.js +286 -0
  35. package/lib/components.js.map +1 -0
  36. package/lib/helpers.d.ts +158 -0
  37. package/lib/helpers.js +231 -0
  38. package/lib/helpers.js.map +1 -0
  39. package/lib/index.d.ts +13 -12
  40. package/lib/index.js +13 -12
  41. package/lib/index.js.map +1 -1
  42. package/lib/mixin-types.d.ts +143 -0
  43. package/lib/mixin-types.js +2 -0
  44. package/lib/mixin-types.js.map +1 -0
  45. package/lib/mixins.d.ts +94 -0
  46. package/lib/mixins.js +359 -0
  47. package/lib/mixins.js.map +1 -0
  48. package/lib/types.d.ts +77 -0
  49. package/lib/types.js +2 -0
  50. package/lib/types.js.map +1 -0
  51. package/lib/util.d.ts +90 -2
  52. package/lib/util.js +106 -2
  53. package/lib/util.js.map +1 -1
  54. package/lib/util.test.d.ts +1 -0
  55. package/lib/util.test.js +46 -0
  56. package/lib/util.test.js.map +1 -0
  57. package/package.json +16 -7
  58. package/lib/WC.d.ts +0 -41
  59. package/lib/WC.js +0 -117
  60. package/lib/WC.js.map +0 -1
  61. package/lib/WD.d.ts +0 -8
  62. package/lib/WD.js +0 -17
  63. package/lib/WD.js.map +0 -1
  64. package/lib/WDF.d.ts +0 -9
  65. package/lib/WDF.js +0 -20
  66. package/lib/WDF.js.map +0 -1
  67. package/lib/WE.d.ts +0 -43
  68. package/lib/WE.js +0 -131
  69. package/lib/WE.js.map +0 -1
  70. package/lib/WHE.d.ts +0 -21
  71. package/lib/WHE.js +0 -75
  72. package/lib/WHE.js.map +0 -1
  73. package/lib/WN-mixin.d.ts +0 -9
  74. package/lib/WN-mixin.js +0 -59
  75. package/lib/WN-mixin.js.map +0 -1
  76. package/lib/WN.d.ts +0 -47
  77. package/lib/WN.js +0 -194
  78. package/lib/WN.js.map +0 -1
  79. package/lib/WSE.d.ts +0 -25
  80. package/lib/WSE.js +0 -84
  81. package/lib/WSE.js.map +0 -1
  82. package/lib/WSH.d.ts +0 -11
  83. package/lib/WSH.js +0 -29
  84. package/lib/WSH.js.map +0 -1
  85. package/lib/WT.d.ts +0 -12
  86. package/lib/WT.js +0 -39
  87. package/lib/WT.js.map +0 -1
  88. package/lib/fetch.d.ts +0 -31
  89. package/lib/fetch.js +0 -69
  90. package/lib/fetch.js.map +0 -1
  91. package/lib/h.d.ts +0 -3
  92. package/lib/h.js +0 -9
  93. package/lib/h.js.map +0 -1
package/lib/util.js CHANGED
@@ -1,15 +1,119 @@
1
- /** Used to Give the UI a moment to update */
1
+ import { isStr } from 'jty';
2
+ /**
3
+ * Returns the file extension
4
+ *
5
+ * @remarks
6
+ * This convenience function is primarily used to guess the 'as' attribute of
7
+ * a link preload/prefetch behind the scene.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * fileExt('file.txt') // => 'txt'
12
+ * fileExt('https://www.alexewerlof.com/path/to/file.js') // => 'js'
13
+ * ```
14
+ *
15
+ * @param path - absolute, relative, or URL path to a file
16
+ * @returns the extension name in lowercase and without any dot prefix
17
+ * @throws {TypeError} If path is not a string.
18
+ */
19
+ export function fileExt(path) {
20
+ if (!isStr(path)) {
21
+ throw new TypeError(`Expected a string file path. Got ${path} (${typeof path})`);
22
+ }
23
+ const lastDotIndex = path.lastIndexOf('.');
24
+ if (lastDotIndex === -1) {
25
+ return '';
26
+ }
27
+ const ext = path.slice(lastDotIndex + 1);
28
+ if (ext.indexOf('/') !== -1) {
29
+ return '';
30
+ }
31
+ return ext.toLowerCase().trim();
32
+ }
33
+ /**
34
+ * Returns a promise that resolves before the next repaint.
35
+ *
36
+ * @remarks
37
+ * Used to give the UI a moment to update.
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * await nextAnimationFrame()
42
+ * ```
43
+ *
44
+ * @returns A promise that resolves with the timestamp.
45
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame | requestAnimationFrame}
46
+ */
2
47
  export function nextAnimationFrame() {
3
48
  return new Promise((resolve) => requestAnimationFrame(resolve));
4
49
  }
50
+ /**
51
+ * Returns a promise that resolves after the specified delay.
52
+ *
53
+ * @remarks
54
+ * Uses `setTimeout` to delay execution. When used with 0ms, it defers
55
+ * execution to the next macro-task, allowing the event loop to cycle.
56
+ *
57
+ * @example
58
+ * ```ts
59
+ * await sleep(100)
60
+ * await sleep() // equivalent to setTimeout(..., 0)
61
+ * ```
62
+ *
63
+ * @param ms - The delay in milliseconds. Defaults to 0.
64
+ * @returns A promise that resolves after the delay.
65
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/setTimeout | setTimeout}
66
+ */
67
+ export function sleep(ms = 0) {
68
+ return new Promise((resolve) => setTimeout(resolve, ms));
69
+ }
70
+ /**
71
+ * Adds an event listener to a target.
72
+ *
73
+ * @example
74
+ * ```ts
75
+ * on(window, 'resize', () => console.log('resized'))
76
+ * ```
77
+ *
78
+ * @param target - The event target.
79
+ * @param eventName - The name of the event.
80
+ * @param handler - The event handler.
81
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener | EventTarget.addEventListener}
82
+ */
5
83
  export function on(target, eventName, handler) {
6
84
  target.addEventListener(eventName, handler);
7
85
  }
86
+ /**
87
+ * Removes an event listener from a target.
88
+ *
89
+ * @example
90
+ * ```ts
91
+ * off(window, 'resize', handler)
92
+ * ```
93
+ *
94
+ * @param target - The event target.
95
+ * @param eventName - The name of the event.
96
+ * @param handler - The event handler.
97
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener | EventTarget.removeEventListener}
98
+ */
8
99
  export function off(target, eventName, handler) {
9
100
  target.removeEventListener(eventName, handler);
10
101
  }
11
102
  /**
12
- * Converts a CSS string to a CSSStyleSheet (suitable for attaching to ShadowRoot for example)
103
+ * Converts a CSS string to a CSSStyleSheet.
104
+ *
105
+ * @remarks
106
+ * Suitable for attaching to ShadowRoot via `adoptedStyleSheets`.
107
+ *
108
+ * @example
109
+ * ```ts
110
+ * const sheet = await cssToStyle('p { color: red; }')
111
+ * shadowRoot.adoptedStyleSheets = [sheet]
112
+ * ```
113
+ *
114
+ * @param css - The CSS string.
115
+ * @returns A promise resolving to the created CSSStyleSheet.
116
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet/replace | CSSStyleSheet.replace}
13
117
  */
14
118
  export async function cssToStyle(css) {
15
119
  const sheet = new CSSStyleSheet();
package/lib/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,MAAM,UAAU,kBAAkB;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAA;AACnE,CAAC;AAED,MAAM,UAAU,EAAE,CAAC,MAAmB,EAAE,SAAiB,EAAE,OAA2C;IAClG,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AAC/C,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,MAAmB,EAAE,SAAiB,EAAE,OAA2C;IACnG,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAW;IACxC,MAAM,KAAK,GAAG,IAAI,aAAa,EAAE,CAAA;IACjC,OAAO,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;AACnC,CAAC"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,CAAA;AAE3B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,OAAO,CAAC,IAAY;IAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,SAAS,CAAC,oCAAoC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,CAAA;IACpF,CAAC;IACD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IAC1C,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,CAAA;IACb,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAA;IACxC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAA;IACb,CAAC;IACD,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAA;AACnC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,kBAAkB;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAA;AACnE,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,KAAK,CAAC,KAAa,CAAC;IAChC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AAC5D,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,EAAE,CAAC,MAAmB,EAAE,SAAiB,EAAE,OAA2C;IAClG,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AAC/C,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,GAAG,CAAC,MAAmB,EAAE,SAAiB,EAAE,OAA2C;IACnG,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AAClD,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAW;IACxC,MAAM,KAAK,GAAG,IAAI,aAAa,EAAE,CAAA;IACjC,OAAO,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;AACnC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,46 @@
1
+ import { describe, it } from 'node:test';
2
+ import assert from 'node:assert';
3
+ import { fileExt } from './util.js';
4
+ describe('fileExt()', () => {
5
+ it('throws for input that is not a string or URL', () => {
6
+ assert.throws(() => fileExt(123), TypeError, 'Should throw for a number');
7
+ assert.throws(() => fileExt(true), TypeError, 'Should throw for a boolean');
8
+ assert.throws(() => fileExt(null), TypeError, 'Should throw for null');
9
+ assert.throws(() => fileExt(undefined), TypeError, 'Should throw for undefined');
10
+ assert.throws(() => fileExt(new URL('file.txt')), TypeError, 'Should throw for an object');
11
+ });
12
+ it('returns the extension of a file path', () => {
13
+ assert.strictEqual(fileExt('file.txt'), 'txt');
14
+ assert.strictEqual(fileExt('./file.txt'), 'txt');
15
+ assert.strictEqual(fileExt('./path/to/file.txt'), 'txt');
16
+ assert.strictEqual(fileExt('/path/to/file.txt'), 'txt');
17
+ });
18
+ it('always returns lowercase', () => {
19
+ assert.strictEqual(fileExt('FILE.TXT'), 'txt');
20
+ assert.strictEqual(fileExt('./FILE.TxT'), 'txt');
21
+ assert.strictEqual(fileExt('./path/to/FILE.Txt'), 'txt');
22
+ assert.strictEqual(fileExt('/path/to/FILE.tXT'), 'txt');
23
+ });
24
+ it('returns an empty string for non-file paths', () => {
25
+ assert.strictEqual(fileExt('/path/to/directory'), '');
26
+ assert.strictEqual(fileExt('https://www.alexewerlof.com/path/to/directory'), '');
27
+ });
28
+ it('returns empty strings if there is no extension', () => {
29
+ assert.strictEqual(fileExt(''), '');
30
+ assert.strictEqual(fileExt('.'), '');
31
+ assert.strictEqual(fileExt('..'), '');
32
+ assert.strictEqual(fileExt('file'), '');
33
+ assert.strictEqual(fileExt('./dir'), '');
34
+ assert.strictEqual(fileExt('/path/to/file.'), '');
35
+ });
36
+ it('handles edge cases for dotfiles and paths', () => {
37
+ // Note: This implementation differs from Node.js path.extname for dotfiles (which returns '')
38
+ assert.strictEqual(fileExt('.env'), 'env');
39
+ assert.strictEqual(fileExt('.gitignore'), 'gitignore');
40
+ // Directories with dots should not be confused for extensions
41
+ assert.strictEqual(fileExt('folder.v1/file'), '');
42
+ // Current behavior includes query parameters
43
+ assert.strictEqual(fileExt('script.js?v=1'), 'js?v=1');
44
+ });
45
+ });
46
+ //# sourceMappingURL=util.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.test.js","sourceRoot":"","sources":["../src/util.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jj",
3
- "version": "2.2.0",
3
+ "version": "2.3.0",
4
4
  "description": "A minimal DOM manipulation library with web components",
5
5
  "keywords": [
6
6
  "javascript",
@@ -13,8 +13,18 @@
13
13
  "main": "./lib/index.js",
14
14
  "unpkg": "./lib/bundle.js",
15
15
  "exports": {
16
- "types": "./lib/index.d.ts",
17
- "import": "./lib/index.js"
16
+ ".": {
17
+ "types": "./lib/index.d.ts",
18
+ "import": "./lib/index.js"
19
+ },
20
+ "./lib/bundle.js": {
21
+ "types": "./lib/index.d.ts",
22
+ "import": "./lib/bundle.js"
23
+ },
24
+ "./lib/bundle.min.js": {
25
+ "types": "./lib/index.d.ts",
26
+ "import": "./lib/bundle.min.js"
27
+ }
18
28
  },
19
29
  "directories": {
20
30
  "lib": "lib",
@@ -26,16 +36,15 @@
26
36
  ],
27
37
  "scripts": {
28
38
  "doc": "typedoc src/index.ts",
29
- "build": "tsc",
30
- "bundle": "esbuild src/index.ts --bundle --outfile=lib/bundle.js --format=esm --sourcemap",
31
- "bundle:min": "esbuild src/index.ts --bundle --outfile=lib/bundle.min.js --format=esm --minify",
39
+ "prebuild": "rm -rf lib docs",
40
+ "build": "tsc && node bundle.js && npm run doc",
32
41
  "typecheck": "tsc --noEmit",
33
42
  "fmt": "prettier --write .",
34
43
  "test": "npm run typecheck && node --import tsx --test",
35
44
  "test:watch": "npm run typecheck && node --import tsx --test --watch",
36
45
  "test:coverage": "npm run typecheck && node --import tsx --test --experimental-test-coverage",
37
46
  "preversion": "npm run fmt && npm t",
38
- "prepublishOnly": "rm -rf lib && npm run build && npm run bundle && npm run bundle:min",
47
+ "prepublishOnly": "npm run build",
39
48
  "postversion": "git push && git push --tags"
40
49
  },
41
50
  "repository": {
package/lib/WC.d.ts DELETED
@@ -1,41 +0,0 @@
1
- import { WHE } from './WHE.js';
2
- export type JJResource<T> = T | Promise<T> | (() => T | Promise<T>);
3
- export type JJTemplateConfig = JJResource<string | WHE | HTMLElement>;
4
- export type JJStyleConfig = JJResource<string | CSSStyleSheet> | JJResource<string | CSSStyleSheet>;
5
- export type JJStylesConfig = JJStyleConfig | JJStyleConfig[];
6
- export interface JJConfig {
7
- name: string;
8
- template?: JJTemplateConfig;
9
- styles?: JJStylesConfig;
10
- templateMode?: 'open' | 'closed';
11
- }
12
- interface JJProcessedConfig {
13
- template?: string;
14
- styles: CSSStyleSheet[];
15
- }
16
- /**
17
- * Parent class for custom components.
18
- * It adds a few pragmatic functionalities
19
- * - `setTemplate` sets the template for the custom component body
20
- * - `addStyle` adds a stylesheet to be used by the shadowRoot
21
- * - `connectedCallback` assigns the templates to shadowRoot and attaches any styles
22
- * - `attributeChangedCallback` sets any props that corresponds to attributes defined in `static observedAttributes`
23
- */
24
- export declare class WC extends HTMLElement {
25
- static _jjCache?: Promise<JJProcessedConfig>;
26
- jjRoot?: WHE;
27
- static jj: JJConfig;
28
- static observedAttributes?: string[];
29
- static register(): Promise<void>;
30
- connectedCallback(): Promise<void>;
31
- /**
32
- * The class that extends this one should define
33
- * `static observedAttributes[]` containing kebab-based attribute names (all lower case)
34
- * @param name kebab-case and in lower case exactly as it appears in `observedAttributes`
35
- * @param oldValue
36
- * @param newValue
37
- * @returns true if it tried to set the attribute; otherwise false
38
- */
39
- attributeChangedCallback(name: string, oldValue: any, newValue: any): boolean;
40
- }
41
- export {};
package/lib/WC.js DELETED
@@ -1,117 +0,0 @@
1
- import { keb2cam } from './case.js';
2
- import { cssToStyle } from './util.js';
3
- import { WHE } from './WHE.js';
4
- import { hasProp, isArr, isStr, isObj, isFn, isA, isDef } from 'jty';
5
- async function processTemplateConfig(template) {
6
- if (isFn(template)) {
7
- template = await template();
8
- }
9
- template = await template;
10
- if (!isDef(template) || isStr(template)) {
11
- return template;
12
- }
13
- if (isA(template, WHE)) {
14
- return template.getHtml();
15
- }
16
- if (isA(template, HTMLElement)) {
17
- return template.outerHTML;
18
- }
19
- throw new TypeError(`Expected a string, WHE or HTMLElement. Got ${template} (${typeof template})`);
20
- }
21
- function normalizeStyles(styles) {
22
- if (isDef(styles)) {
23
- return isArr(styles) ? styles : [styles];
24
- }
25
- return [];
26
- }
27
- async function processStyleConfig(styleConfig) {
28
- if (isFn(styleConfig)) {
29
- styleConfig = await styleConfig();
30
- }
31
- styleConfig = await styleConfig;
32
- if (isA(styleConfig, CSSStyleSheet)) {
33
- return styleConfig;
34
- }
35
- if (isStr(styleConfig)) {
36
- return await cssToStyle(styleConfig);
37
- }
38
- throw new TypeError(`Expected a css string or CSSStyleSheet. Got ${styleConfig} (${typeof styleConfig})`);
39
- }
40
- /*
41
- Type '[string | undefined, ...(string | CSSStyleSheet | (() => string | CSSStyleSheet | Promise<string | CSSStyleSheet>) | JJStyleConfig[])[]]' is not assignable to
42
- type '[string | undefined, ...CSSStyleSheet[]]'.
43
-
44
- Type at position 1 in source is not compatible with type at position 1 in target.
45
- Type 'string | CSSStyleSheet | (() => string | CSSStyleSheet | Promise<string | CSSStyleSheet>) | JJStyleConfig[]' is not assignable to type 'CSSStyleSheet'.
46
- Type 'string' is not assignable to type 'CSSStyleSheet'.ts(2322)
47
- */
48
- async function processConfig(jjConfig) {
49
- if (!isObj(jjConfig)) {
50
- throw new TypeError(`Expected an static jj config object. Got ${jjConfig} (${typeof jjConfig})`);
51
- }
52
- const { template: templateConfig, styles: stylesConfig } = jjConfig;
53
- const [template, ...styles] = await Promise.all([
54
- processTemplateConfig(templateConfig),
55
- ...normalizeStyles(stylesConfig).map(processStyleConfig),
56
- ]);
57
- return { template, styles };
58
- }
59
- /**
60
- * Parent class for custom components.
61
- * It adds a few pragmatic functionalities
62
- * - `setTemplate` sets the template for the custom component body
63
- * - `addStyle` adds a stylesheet to be used by the shadowRoot
64
- * - `connectedCallback` assigns the templates to shadowRoot and attaches any styles
65
- * - `attributeChangedCallback` sets any props that corresponds to attributes defined in `static observedAttributes`
66
- */
67
- export class WC extends HTMLElement {
68
- static async register() {
69
- if (!isObj(this.jj)) {
70
- throw new Error(`static jj object is missing from the extending class. Got ${this.jj} (${typeof this.jj})`);
71
- }
72
- const { name } = this.jj;
73
- if (!isStr(name)) {
74
- throw new TypeError(`Expected a string name. Got ${name} (${typeof name})`);
75
- }
76
- if (!customElements.get(name)) {
77
- customElements.define(name, this);
78
- await customElements.whenDefined(name);
79
- }
80
- }
81
- async connectedCallback() {
82
- const classRef = this.constructor;
83
- const jj = classRef.jj;
84
- if (!isObj(jj)) {
85
- throw new TypeError(`static jj object is missing from the extending class. Got ${jj} (${typeof jj})`);
86
- }
87
- if (!classRef._jjCache) {
88
- classRef._jjCache = processConfig(classRef.jj);
89
- }
90
- const { template, styles } = await classRef._jjCache;
91
- const { templateMode } = jj;
92
- this.jjRoot = WHE.from(this).initShadow(templateMode, template, ...styles);
93
- }
94
- /**
95
- * The class that extends this one should define
96
- * `static observedAttributes[]` containing kebab-based attribute names (all lower case)
97
- * @param name kebab-case and in lower case exactly as it appears in `observedAttributes`
98
- * @param oldValue
99
- * @param newValue
100
- * @returns true if it tried to set the attribute; otherwise false
101
- */
102
- attributeChangedCallback(name, oldValue, newValue) {
103
- // Called when observed attributes change.
104
- if (oldValue !== newValue) {
105
- const observedAttributes = this.constructor.observedAttributes;
106
- if (isArr(observedAttributes) && observedAttributes.includes(name)) {
107
- const kebabName = keb2cam(name);
108
- if (hasProp(this, kebabName)) {
109
- this[kebabName] = newValue;
110
- return true;
111
- }
112
- }
113
- }
114
- return false;
115
- }
116
- }
117
- //# sourceMappingURL=WC.js.map
package/lib/WC.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"WC.js","sourceRoot":"","sources":["../src/WC.ts"],"names":[],"mappings":"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"}
package/lib/WD.d.ts DELETED
@@ -1,8 +0,0 @@
1
- import { WN } from './WN.js';
2
- /**
3
- * Wraps a Document (which is a descendant of Node)
4
- */
5
- export declare class WD<T extends Document = Document> extends WN<T> {
6
- static from(ref: Document): WD;
7
- constructor(ref: T);
8
- }
package/lib/WD.js DELETED
@@ -1,17 +0,0 @@
1
- import { isA } from 'jty';
2
- import { WN } from './WN.js';
3
- /**
4
- * Wraps a Document (which is a descendant of Node)
5
- */
6
- export class WD extends WN {
7
- static from(ref) {
8
- return new WD(ref);
9
- }
10
- constructor(ref) {
11
- if (!isA(ref, Document)) {
12
- throw new TypeError(`Expected a Document. Got ${ref} (${typeof ref})`);
13
- }
14
- super(ref);
15
- }
16
- }
17
- //# sourceMappingURL=WD.js.map
package/lib/WD.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"WD.js","sourceRoot":"","sources":["../src/WD.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AACzB,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAG5B;;GAEG;AACH,MAAM,OAAO,EAAkC,SAAQ,EAAK;IACxD,MAAM,CAAC,IAAI,CAAC,GAAa;QACrB,OAAO,IAAI,EAAE,CAAC,GAAG,CAAC,CAAA;IACtB,CAAC;IAED,YAAY,GAAM;QACd,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,SAAS,CAAC,4BAA4B,GAAG,KAAK,OAAO,GAAG,GAAG,CAAC,CAAA;QAC1E,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,CAAA;IACd,CAAC;CACJ"}
package/lib/WDF.d.ts DELETED
@@ -1,9 +0,0 @@
1
- import { WN } from './WN.js';
2
- /**
3
- * Wraps a DocumentFragment (which is a descendant of Node)
4
- */
5
- export declare class WDF<T extends DocumentFragment = DocumentFragment> extends WN<T> {
6
- static from(ref: DocumentFragment): WDF;
7
- static create(): WDF<DocumentFragment>;
8
- constructor(ref: T);
9
- }
package/lib/WDF.js DELETED
@@ -1,20 +0,0 @@
1
- import { isA } from 'jty';
2
- import { WN } from './WN.js';
3
- /**
4
- * Wraps a DocumentFragment (which is a descendant of Node)
5
- */
6
- export class WDF extends WN {
7
- static from(ref) {
8
- return new WDF(ref);
9
- }
10
- static create() {
11
- return new WDF(document.createDocumentFragment());
12
- }
13
- constructor(ref) {
14
- if (!isA(ref, DocumentFragment)) {
15
- throw new TypeError(`Expected a DocumentFragment. Got ${ref} (${typeof ref})`);
16
- }
17
- super(ref);
18
- }
19
- }
20
- //# sourceMappingURL=WDF.js.map
package/lib/WDF.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"WDF.js","sourceRoot":"","sources":["../src/WDF.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AACzB,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAG5B;;GAEG;AACH,MAAM,OAAO,GAAmD,SAAQ,EAAK;IACzE,MAAM,CAAC,IAAI,CAAC,GAAqB;QAC7B,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IAED,MAAM,CAAC,MAAM;QACT,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CAAA;IACrD,CAAC;IAED,YAAY,GAAM;QACd,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,SAAS,CAAC,oCAAoC,GAAG,KAAK,OAAO,GAAG,GAAG,CAAC,CAAA;QAClF,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,CAAA;IACd,CAAC;CACJ"}
package/lib/WE.d.ts DELETED
@@ -1,43 +0,0 @@
1
- import { WN } from './WN.js';
2
- import { WSH } from './WSH.js';
3
- /**
4
- * Wraps a DOM Element (which is a descendant of Node)
5
- */
6
- export declare class WE<T extends Element = Element> extends WN<T> {
7
- static from(ref: Element): WE;
8
- constructor(ref: T);
9
- getAttr(name: string): string | null;
10
- hasAttr(name: string): boolean;
11
- setAttr(name: string, value: string): this;
12
- setAttrs(obj: Record<string, string>): this;
13
- rmAttr(name: string): this;
14
- rmAttrs(...names: string[]): this;
15
- getAria(name: string): string | null;
16
- hasAria(name: string): boolean;
17
- setAria(name: string, value: string): this;
18
- rmAria(name: string): this;
19
- addClass(...classNames: string[]): this;
20
- rmClasses(...classNames: string[]): this;
21
- rmClass(className: string): this;
22
- hasClass(className: string): boolean;
23
- toggleClass(className: string): this;
24
- onClick(handler: EventListenerOrEventListenerObject): this;
25
- hide(): this;
26
- show(): this;
27
- disable(): this;
28
- enable(): this;
29
- getTitle(): string | null;
30
- setTitle(title: string): this;
31
- setId(id: string): this;
32
- getId(): string | null;
33
- getHtml(): string;
34
- setHtml(html: string): this;
35
- /**
36
- * We prevent FOUC by assigning the template and CSS in one go
37
- * @remarks
38
- * **Note:** You can't attach a shadow root to every type of element. There are some that can't have a
39
- * shadow DOM for security reasons (for example `<a>`).
40
- */
41
- initShadow(mode?: ShadowRootMode, html?: string, ...styleSheets: CSSStyleSheet[]): this;
42
- get shadow(): WSH<ShadowRoot> | null;
43
- }
package/lib/WE.js DELETED
@@ -1,131 +0,0 @@
1
- import { isA, isObj } from 'jty';
2
- import { WN } from './WN.js';
3
- import { WSH } from './WSH.js';
4
- /**
5
- * Wraps a DOM Element (which is a descendant of Node)
6
- */
7
- export class WE extends WN {
8
- static from(ref) {
9
- return new WE(ref);
10
- }
11
- constructor(ref) {
12
- if (!isA(ref, Element)) {
13
- throw new TypeError(`Expected a Element. Got: ${ref} (${typeof ref})`);
14
- }
15
- super(ref);
16
- }
17
- getAttr(name) {
18
- return this.ref.getAttribute(name);
19
- }
20
- hasAttr(name) {
21
- return this.ref.hasAttribute(name);
22
- }
23
- setAttr(name, value) {
24
- this.ref.setAttribute(name, value);
25
- return this;
26
- }
27
- setAttrs(obj) {
28
- if (!isObj(obj)) {
29
- throw new TypeError(`Expected an object. Got: ${obj} (${typeof obj})`);
30
- }
31
- for (const [name, value] of Object.entries(obj)) {
32
- this.setAttr(name, value);
33
- }
34
- return this;
35
- }
36
- rmAttr(name) {
37
- return this.rmAttrs(name);
38
- }
39
- rmAttrs(...names) {
40
- for (const name of names) {
41
- this.ref.removeAttribute(name);
42
- }
43
- return this;
44
- }
45
- getAria(name) {
46
- return this.ref.getAttribute(`aria-${name}`);
47
- }
48
- hasAria(name) {
49
- return this.ref.hasAttribute(`aria-${name}`);
50
- }
51
- setAria(name, value) {
52
- this.ref.setAttribute(`aria-${name}`, value);
53
- return this;
54
- }
55
- rmAria(name) {
56
- this.ref.removeAttribute(`aria-${name}`);
57
- return this;
58
- }
59
- addClass(...classNames) {
60
- this.ref.classList.add(...classNames);
61
- return this;
62
- }
63
- rmClasses(...classNames) {
64
- this.ref.classList.remove(...classNames);
65
- return this;
66
- }
67
- rmClass(className) {
68
- return this.rmClasses(className);
69
- }
70
- hasClass(className) {
71
- return this.ref.classList.contains(className);
72
- }
73
- toggleClass(className) {
74
- this.ref.classList.toggle(className);
75
- return this;
76
- }
77
- onClick(handler) {
78
- return this.on('click', handler);
79
- }
80
- hide() {
81
- return this.setAttr('hidden', '').setAttr('aria-hidden', 'true');
82
- }
83
- show() {
84
- return this.rmAttrs('hidden', 'aria-hidden');
85
- }
86
- disable() {
87
- return this.setAttr('disabled', '').setAttr('aria-disabled', 'true');
88
- }
89
- enable() {
90
- return this.rmAttrs('disabled', 'aria-disabled');
91
- }
92
- getTitle() {
93
- return this.getAttr('title');
94
- }
95
- setTitle(title) {
96
- return this.setAttr('title', title);
97
- }
98
- setId(id) {
99
- return this.setAttr('id', id);
100
- }
101
- getId() {
102
- return this.getAttr('id');
103
- }
104
- getHtml() {
105
- return this.ref.innerHTML;
106
- }
107
- setHtml(html) {
108
- this.ref.innerHTML = html;
109
- return this;
110
- }
111
- /**
112
- * We prevent FOUC by assigning the template and CSS in one go
113
- * @remarks
114
- * **Note:** You can't attach a shadow root to every type of element. There are some that can't have a
115
- * shadow DOM for security reasons (for example `<a>`).
116
- */
117
- initShadow(mode = 'open', html, ...styleSheets) {
118
- const shadowRoot = this.ref.shadowRoot ?? this.ref.attachShadow({ mode });
119
- if (html) {
120
- shadowRoot.innerHTML = html;
121
- }
122
- if (styleSheets.length) {
123
- shadowRoot.adoptedStyleSheets.push(...styleSheets);
124
- }
125
- return this;
126
- }
127
- get shadow() {
128
- return this.ref.shadowRoot ? new WSH(this.ref.shadowRoot) : null;
129
- }
130
- }
131
- //# sourceMappingURL=WE.js.map
package/lib/WE.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"WE.js","sourceRoot":"","sources":["../src/WE.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,KAAK,CAAA;AAChC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAE9B;;GAEG;AACH,MAAM,OAAO,EAAgC,SAAQ,EAAK;IACtD,MAAM,CAAC,IAAI,CAAC,GAAY;QACpB,OAAO,IAAI,EAAE,CAAC,GAAG,CAAC,CAAA;IACtB,CAAC;IAED,YAAY,GAAM;QACd,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,SAAS,CAAC,4BAA4B,GAAG,KAAK,OAAO,GAAG,GAAG,CAAC,CAAA;QAC1E,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,CAAA;IACd,CAAC;IAED,OAAO,CAAC,IAAY;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IACtC,CAAC;IAED,OAAO,CAAC,IAAY;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IACtC,CAAC;IAED,OAAO,CAAC,IAAY,EAAE,KAAa;QAC/B,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAClC,OAAO,IAAI,CAAA;IACf,CAAC;IAED,QAAQ,CAAC,GAA2B;QAChC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACd,MAAM,IAAI,SAAS,CAAC,4BAA4B,GAAG,KAAK,OAAO,GAAG,GAAG,CAAC,CAAA;QAC1E,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAC7B,CAAC;QACD,OAAO,IAAI,CAAA;IACf,CAAC;IAED,MAAM,CAAC,IAAY;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC;IAED,OAAO,CAAC,GAAG,KAAe;QACtB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;QAClC,CAAC;QACD,OAAO,IAAI,CAAA;IACf,CAAC;IAED,OAAO,CAAC,IAAY;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAA;IAChD,CAAC;IAED,OAAO,CAAC,IAAY;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAA;IAChD,CAAC;IAED,OAAO,CAAC,IAAY,EAAE,KAAa;QAC/B,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,IAAI,EAAE,EAAE,KAAK,CAAC,CAAA;QAC5C,OAAO,IAAI,CAAA;IACf,CAAC;IAED,MAAM,CAAC,IAAY;QACf,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAA;QACxC,OAAO,IAAI,CAAA;IACf,CAAC;IAED,QAAQ,CAAC,GAAG,UAAoB;QAC5B,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAA;QACrC,OAAO,IAAI,CAAA;IACf,CAAC;IAED,SAAS,CAAC,GAAG,UAAoB;QAC7B,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,CAAA;QACxC,OAAO,IAAI,CAAA;IACf,CAAC;IAED,OAAO,CAAC,SAAiB;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;IACpC,CAAC;IAED,QAAQ,CAAC,SAAiB;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IACjD,CAAC;IAED,WAAW,CAAC,SAAiB;QACzB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QACpC,OAAO,IAAI,CAAA;IACf,CAAC;IAED,OAAO,CAAC,OAA2C;QAC/C,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACpC,CAAC;IAED,IAAI;QACA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;IACpE,CAAC;IAED,IAAI;QACA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;IAChD,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,CAAA;IACxE,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,eAAe,CAAC,CAAA;IACpD,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAChC,CAAC;IAED,QAAQ,CAAC,KAAa;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IACvC,CAAC;IAED,KAAK,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IACjC,CAAC;IAED,KAAK;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAA;IAC7B,CAAC;IAED,OAAO,CAAC,IAAY;QAChB,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAA;QACzB,OAAO,IAAI,CAAA;IACf,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,OAAuB,MAAM,EAAE,IAAa,EAAE,GAAG,WAA4B;QACpF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;QACzE,IAAI,IAAI,EAAE,CAAC;YACP,UAAU,CAAC,SAAS,GAAG,IAAI,CAAA;QAC/B,CAAC;QACD,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACrB,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAA;QACtD,CAAC;QACD,OAAO,IAAI,CAAA;IACf,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACpE,CAAC;CACJ"}