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.
- package/lib/JJD.d.ts +76 -0
- package/lib/JJD.js +91 -0
- package/lib/JJD.js.map +1 -0
- package/lib/JJDF.d.ts +60 -0
- package/lib/JJDF.js +68 -0
- package/lib/JJDF.js.map +1 -0
- package/lib/JJE.d.ts +313 -0
- package/lib/JJE.js +412 -0
- package/lib/JJE.js.map +1 -0
- package/lib/JJHE.d.ts +120 -0
- package/lib/JJHE.js +164 -0
- package/lib/JJHE.js.map +1 -0
- package/lib/JJN.d.ts +211 -0
- package/lib/JJN.js +286 -0
- package/lib/JJN.js.map +1 -0
- package/lib/JJSE.d.ts +148 -0
- package/lib/JJSE.js +190 -0
- package/lib/JJSE.js.map +1 -0
- package/lib/JJSR.d.ts +67 -0
- package/lib/JJSR.js +85 -0
- package/lib/JJSR.js.map +1 -0
- package/lib/JJT.d.ts +79 -0
- package/lib/JJT.js +108 -0
- package/lib/JJT.js.map +1 -0
- package/lib/bundle.d.ts +1 -0
- package/lib/bundle.js +1505 -445
- package/lib/bundle.js.map +3 -3
- package/lib/bundle.min.d.ts +1 -0
- package/lib/bundle.min.js +2 -2
- package/lib/case.d.ts +57 -0
- package/lib/case.js +61 -3
- package/lib/case.js.map +1 -1
- package/lib/components.d.ts +147 -0
- package/lib/components.js +286 -0
- package/lib/components.js.map +1 -0
- package/lib/helpers.d.ts +158 -0
- package/lib/helpers.js +231 -0
- package/lib/helpers.js.map +1 -0
- package/lib/index.d.ts +13 -12
- package/lib/index.js +13 -12
- package/lib/index.js.map +1 -1
- package/lib/mixin-types.d.ts +143 -0
- package/lib/mixin-types.js +2 -0
- package/lib/mixin-types.js.map +1 -0
- package/lib/mixins.d.ts +94 -0
- package/lib/mixins.js +359 -0
- package/lib/mixins.js.map +1 -0
- package/lib/types.d.ts +77 -0
- package/lib/types.js +2 -0
- package/lib/types.js.map +1 -0
- package/lib/util.d.ts +90 -2
- package/lib/util.js +106 -2
- package/lib/util.js.map +1 -1
- package/lib/util.test.d.ts +1 -0
- package/lib/util.test.js +46 -0
- package/lib/util.test.js.map +1 -0
- package/package.json +16 -7
- package/lib/WC.d.ts +0 -41
- package/lib/WC.js +0 -117
- package/lib/WC.js.map +0 -1
- package/lib/WD.d.ts +0 -8
- package/lib/WD.js +0 -17
- package/lib/WD.js.map +0 -1
- package/lib/WDF.d.ts +0 -9
- package/lib/WDF.js +0 -20
- package/lib/WDF.js.map +0 -1
- package/lib/WE.d.ts +0 -43
- package/lib/WE.js +0 -131
- package/lib/WE.js.map +0 -1
- package/lib/WHE.d.ts +0 -21
- package/lib/WHE.js +0 -75
- package/lib/WHE.js.map +0 -1
- package/lib/WN-mixin.d.ts +0 -9
- package/lib/WN-mixin.js +0 -59
- package/lib/WN-mixin.js.map +0 -1
- package/lib/WN.d.ts +0 -47
- package/lib/WN.js +0 -194
- package/lib/WN.js.map +0 -1
- package/lib/WSE.d.ts +0 -25
- package/lib/WSE.js +0 -84
- package/lib/WSE.js.map +0 -1
- package/lib/WSH.d.ts +0 -11
- package/lib/WSH.js +0 -29
- package/lib/WSH.js.map +0 -1
- package/lib/WT.d.ts +0 -12
- package/lib/WT.js +0 -39
- package/lib/WT.js.map +0 -1
- package/lib/fetch.d.ts +0 -31
- package/lib/fetch.js +0 -69
- package/lib/fetch.js.map +0 -1
- package/lib/h.d.ts +0 -3
- package/lib/h.js +0 -9
- package/lib/h.js.map +0 -1
package/lib/util.js
CHANGED
|
@@ -1,15 +1,119 @@
|
|
|
1
|
-
|
|
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
|
|
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,
|
|
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 {};
|
package/lib/util.test.js
ADDED
|
@@ -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.
|
|
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
|
-
"
|
|
17
|
-
|
|
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
|
-
"
|
|
30
|
-
"
|
|
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": "
|
|
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
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":"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"}
|