@davidsouther/jiffies 1.1.0 → 2.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.
- package/{build → lib/cjs}/assert.d.ts +23 -23
- package/lib/cjs/assert.js +40 -0
- package/{build → lib/cjs}/case.d.ts +1 -1
- package/lib/cjs/case.js +9 -0
- package/{build → lib/cjs}/components/button_bar.d.ts +8 -8
- package/lib/cjs/components/button_bar.js +29 -0
- package/{build → lib/cjs}/components/inline_edit.d.ts +12 -12
- package/lib/cjs/components/inline_edit.js +51 -0
- package/{build → lib/cjs}/components/logger.d.ts +6 -6
- package/lib/cjs/components/logger.js +27 -0
- package/lib/cjs/components/select.d.ts +10 -0
- package/lib/cjs/components/select.js +6 -0
- package/lib/cjs/components/test.d.ts +1 -0
- package/lib/cjs/components/test.js +7 -0
- package/{build → lib/cjs}/components/virtual_scroll.d.ts +40 -40
- package/lib/cjs/components/virtual_scroll.js +102 -0
- package/{build → lib/cjs}/components/virtual_scroll.test.d.ts +1 -1
- package/lib/cjs/components/virtual_scroll.test.js +22 -0
- package/{build → lib/cjs}/context.d.ts +15 -15
- package/lib/cjs/context.js +48 -0
- package/{build → lib/cjs}/context.test.d.ts +1 -1
- package/lib/cjs/context.test.js +48 -0
- package/{build → lib/cjs}/debounce.d.ts +1 -1
- package/lib/cjs/debounce.js +11 -0
- package/lib/cjs/diff.d.ts +15 -0
- package/lib/cjs/diff.js +58 -0
- package/{build/components/test.d.ts → lib/cjs/diff.test.d.ts} +1 -1
- package/lib/cjs/diff.test.js +41 -0
- package/{build → lib/cjs}/display.d.ts +5 -5
- package/lib/cjs/display.js +16 -0
- package/{build → lib/cjs}/dom/css/border.d.ts +11 -11
- package/lib/cjs/dom/css/border.js +33 -0
- package/{build → lib/cjs}/dom/css/constants.d.ts +31 -31
- package/lib/cjs/dom/css/constants.js +31 -0
- package/{build → lib/cjs}/dom/css/core.d.ts +5 -5
- package/lib/cjs/dom/css/core.js +31 -0
- package/{build → lib/cjs}/dom/css/fstyle.d.ts +5 -5
- package/lib/cjs/dom/css/fstyle.js +36 -0
- package/{build → lib/cjs}/dom/css/sizing.d.ts +5 -5
- package/lib/cjs/dom/css/sizing.js +14 -0
- package/{build → lib/cjs}/dom/dom.d.ts +27 -26
- package/lib/cjs/dom/dom.js +110 -0
- package/{build → lib/cjs}/dom/fc.d.ts +14 -14
- package/lib/cjs/dom/fc.js +39 -0
- package/{build → lib/cjs}/dom/fc.test.d.ts +1 -1
- package/lib/cjs/dom/fc.test.js +23 -0
- package/{build → lib/cjs}/dom/form/form.app.d.ts +1 -1
- package/lib/cjs/dom/form/form.app.js +27 -0
- package/{build → lib/cjs}/dom/form/form.d.ts +26 -26
- package/lib/cjs/dom/form/form.js +49 -0
- package/{build → lib/cjs}/dom/form/form.test.d.ts +0 -0
- package/{build → lib/cjs}/dom/form/form.test.js +1 -1
- package/{build → lib/cjs}/dom/html.d.ts +113 -113
- package/lib/cjs/dom/html.js +119 -0
- package/{build → lib/cjs}/dom/html.test.d.ts +1 -1
- package/lib/cjs/dom/html.test.js +60 -0
- package/lib/cjs/dom/observable.d.ts +2 -0
- package/lib/cjs/dom/observable.js +10 -0
- package/{build/observable → lib/cjs/dom}/observable.test.d.ts +1 -1
- package/lib/cjs/dom/observable.test.js +35 -0
- package/{build → lib/cjs}/dom/provide.d.ts +3 -3
- package/lib/cjs/dom/provide.js +12 -0
- package/{build → lib/cjs}/dom/router/link.d.ts +6 -6
- package/lib/cjs/dom/router/link.js +7 -0
- package/{build → lib/cjs}/dom/router/router.d.ts +12 -12
- package/lib/cjs/dom/router/router.js +52 -0
- package/{build → lib/cjs}/dom/svg.d.ts +64 -64
- package/lib/cjs/dom/svg.js +69 -0
- package/lib/cjs/dom/test.d.ts +1 -0
- package/lib/cjs/dom/test.js +13 -0
- package/{build → lib/cjs}/dom/types/css.d.ts +6612 -6612
- package/lib/cjs/dom/types/css.js +24 -0
- package/{build → lib/cjs}/dom/types/dom.d.ts +0 -0
- package/{build → lib/cjs}/dom/types/dom.js +1 -1
- package/{build → lib/cjs}/dom/types/html.d.ts +616 -616
- package/lib/cjs/dom/types/html.js +2 -0
- package/{build → lib/cjs}/dom/xml.d.ts +1 -1
- package/lib/cjs/dom/xml.js +8 -0
- package/{build → lib/cjs}/equal.d.ts +5 -5
- package/lib/cjs/equal.js +43 -0
- package/{build → lib/cjs}/equal.test.d.ts +1 -1
- package/lib/cjs/equal.test.js +22 -0
- package/{build → lib/cjs}/flags.d.ts +7 -7
- package/lib/cjs/flags.js +52 -0
- package/{build → lib/cjs}/flags.test.d.ts +1 -1
- package/lib/cjs/flags.test.js +37 -0
- package/{build → lib/cjs}/fs.d.ts +48 -48
- package/lib/cjs/fs.js +151 -0
- package/{build → lib/cjs}/fs.test.d.ts +1 -1
- package/lib/cjs/fs.test.js +45 -0
- package/{build → lib/cjs}/generator.d.ts +1 -1
- package/lib/cjs/generator.js +14 -0
- package/{build → lib/cjs}/generator.test.d.ts +1 -1
- package/lib/cjs/generator.test.js +26 -0
- package/{build → lib/cjs}/is_browser.d.ts +1 -1
- package/lib/cjs/is_browser.js +4 -0
- package/{build → lib/cjs}/loader.d.mts +22 -22
- package/lib/cjs/loader.mjs +40 -0
- package/{build → lib/cjs}/lock.d.ts +1 -1
- package/lib/cjs/lock.js +27 -0
- package/{build → lib/cjs}/lock.test.d.ts +1 -1
- package/lib/cjs/lock.test.js +18 -0
- package/{build → lib/cjs}/log.d.ts +26 -26
- package/lib/cjs/log.js +54 -0
- package/lib/cjs/observable/event.d.ts +35 -0
- package/lib/cjs/observable/event.js +61 -0
- package/lib/cjs/observable/observable.d.ts +132 -0
- package/lib/cjs/observable/observable.js +363 -0
- package/lib/cjs/observable/observable.test.d.ts +1 -0
- package/lib/cjs/observable/observable.test.js +65 -0
- package/{build → lib/cjs}/range.d.ts +1 -1
- package/lib/cjs/range.js +11 -0
- package/{build → lib/cjs}/result.d.ts +31 -31
- package/lib/cjs/result.js +80 -0
- package/{build → lib/cjs}/result.test.d.ts +1 -1
- package/lib/cjs/result.test.js +73 -0
- package/{build → lib/cjs}/safe.d.ts +1 -1
- package/lib/cjs/safe.js +14 -0
- package/{build → lib/cjs}/scope/describe.d.ts +18 -18
- package/lib/cjs/scope/describe.js +73 -0
- package/{build → lib/cjs}/scope/display/console.d.ts +2 -2
- package/lib/cjs/scope/display/console.js +25 -0
- package/{build → lib/cjs}/scope/display/dom.d.ts +3 -3
- package/lib/cjs/scope/display/dom.js +30 -0
- package/{build → lib/cjs}/scope/display/junit.d.ts +2 -2
- package/lib/cjs/scope/display/junit.js +21 -0
- package/{build → lib/cjs}/scope/execute.d.ts +12 -12
- package/lib/cjs/scope/execute.js +91 -0
- package/{build → lib/cjs}/scope/expect.d.ts +23 -23
- package/lib/cjs/scope/expect.js +114 -0
- package/{build → lib/cjs}/scope/fix.d.ts +4 -4
- package/lib/cjs/scope/fix.js +26 -0
- package/{build → lib/cjs}/scope/index.d.ts +3 -3
- package/lib/cjs/scope/index.js +15 -0
- package/{build → lib/cjs}/scope/scope.d.ts +17 -17
- package/lib/cjs/scope/scope.js +2 -0
- package/lib/cjs/scope/state.d.ts +1 -0
- package/lib/cjs/scope/state.js +11 -0
- package/{build → lib/cjs}/server/http/apps.d.ts +5 -5
- package/lib/cjs/server/http/apps.js +27 -0
- package/{build → lib/cjs}/server/http/css.d.ts +5 -5
- package/lib/cjs/server/http/css.js +54 -0
- package/{build → lib/cjs}/server/http/index.d.ts +21 -21
- package/lib/cjs/server/http/index.js +77 -0
- package/{build → lib/cjs}/server/http/response.d.ts +4 -4
- package/lib/cjs/server/http/response.js +45 -0
- package/{build → lib/cjs}/server/http/sitemap.d.ts +2 -2
- package/lib/cjs/server/http/sitemap.js +46 -0
- package/{build → lib/cjs}/server/http/static.d.ts +2 -2
- package/lib/cjs/server/http/static.js +25 -0
- package/{build → lib/cjs}/server/http/typescript.d.ts +5 -5
- package/lib/cjs/server/http/typescript.js +44 -0
- package/{build → lib/cjs}/server/main.d.ts +2 -2
- package/lib/cjs/server/main.js +14 -0
- package/{build → lib/cjs}/test.d.mts +2 -2
- package/lib/cjs/test.mjs +28 -0
- package/{build → lib/cjs}/test_all.d.ts +9 -7
- package/lib/cjs/test_all.js +30 -0
- package/{build → lib/cjs}/transpile.d.mts +3 -3
- package/lib/cjs/transpile.mjs +22 -0
- package/lib/cjs/tsconfig.tsbuildinfo +1 -0
- package/lib/esm/assert.d.ts +23 -0
- package/{build → lib/esm}/assert.js +33 -33
- package/lib/esm/case.d.ts +1 -0
- package/{build → lib/esm}/case.js +5 -5
- package/lib/esm/components/button_bar.d.ts +8 -0
- package/{build → lib/esm}/components/button_bar.js +27 -27
- package/lib/esm/components/inline_edit.d.ts +12 -0
- package/{build → lib/esm}/components/inline_edit.js +48 -48
- package/lib/esm/components/logger.d.ts +6 -0
- package/{build → lib/esm}/components/logger.js +22 -22
- package/lib/esm/components/select.d.ts +10 -0
- package/{build → lib/esm}/components/select.js +3 -3
- package/lib/esm/components/test.d.ts +1 -0
- package/lib/esm/components/test.js +3 -0
- package/lib/esm/components/virtual_scroll.d.ts +40 -0
- package/{build → lib/esm}/components/virtual_scroll.js +94 -94
- package/lib/esm/components/virtual_scroll.test.d.ts +1 -0
- package/{build → lib/esm}/components/virtual_scroll.test.js +20 -21
- package/lib/esm/context.d.ts +15 -0
- package/{build → lib/esm}/context.js +43 -43
- package/lib/esm/context.test.d.ts +1 -0
- package/{build → lib/esm}/context.test.js +46 -46
- package/lib/esm/debounce.d.ts +1 -0
- package/{build → lib/esm}/debounce.js +7 -7
- package/lib/esm/diff.d.ts +15 -0
- package/lib/esm/diff.js +54 -0
- package/lib/esm/diff.test.d.ts +1 -0
- package/lib/esm/diff.test.js +39 -0
- package/lib/esm/display.d.ts +5 -0
- package/{build → lib/esm}/display.js +11 -11
- package/lib/esm/dom/css/border.d.ts +11 -0
- package/{build → lib/esm}/dom/css/border.js +27 -27
- package/lib/esm/dom/css/constants.d.ts +31 -0
- package/{build → lib/esm}/dom/css/constants.js +28 -28
- package/lib/esm/dom/css/core.d.ts +5 -0
- package/{build → lib/esm}/dom/css/core.js +24 -24
- package/lib/esm/dom/css/fstyle.d.ts +5 -0
- package/{build → lib/esm}/dom/css/fstyle.js +32 -32
- package/lib/esm/dom/css/sizing.d.ts +5 -0
- package/{build → lib/esm}/dom/css/sizing.js +10 -10
- package/lib/esm/dom/dom.d.ts +27 -0
- package/{build → lib/esm}/dom/dom.js +104 -95
- package/lib/esm/dom/fc.d.ts +14 -0
- package/{build → lib/esm}/dom/fc.js +35 -36
- package/lib/esm/dom/fc.test.d.ts +1 -0
- package/{build → lib/esm}/dom/fc.test.js +21 -21
- package/lib/esm/dom/form/form.app.d.ts +1 -0
- package/{build → lib/esm}/dom/form/form.app.js +23 -23
- package/lib/esm/dom/form/form.d.ts +26 -0
- package/{build → lib/esm}/dom/form/form.js +34 -34
- package/lib/esm/dom/form/form.test.d.ts +0 -0
- package/lib/esm/dom/form/form.test.js +1 -0
- package/lib/esm/dom/html.d.ts +113 -0
- package/{build → lib/esm}/dom/html.js +114 -114
- package/lib/esm/dom/html.test.d.ts +1 -0
- package/{build → lib/esm}/dom/html.test.js +58 -58
- package/lib/esm/dom/observable.d.ts +2 -0
- package/lib/esm/dom/observable.js +6 -0
- package/lib/esm/dom/observable.test.d.ts +1 -0
- package/lib/esm/dom/observable.test.js +33 -0
- package/lib/esm/dom/provide.d.ts +3 -0
- package/{build → lib/esm}/dom/provide.js +7 -7
- package/lib/esm/dom/router/link.d.ts +6 -0
- package/{build → lib/esm}/dom/router/link.js +3 -3
- package/lib/esm/dom/router/router.d.ts +12 -0
- package/{build → lib/esm}/dom/router/router.js +49 -49
- package/lib/esm/dom/svg.d.ts +64 -0
- package/{build → lib/esm}/dom/svg.js +65 -65
- package/lib/esm/dom/test.d.ts +1 -0
- package/lib/esm/dom/test.js +9 -0
- package/lib/esm/dom/types/css.d.ts +6612 -0
- package/{build → lib/esm}/dom/types/css.js +23 -23
- package/lib/esm/dom/types/dom.d.ts +0 -0
- package/lib/esm/dom/types/dom.js +1 -0
- package/lib/esm/dom/types/html.d.ts +616 -0
- package/{build → lib/esm}/dom/types/html.js +1 -1
- package/lib/esm/dom/xml.d.ts +1 -0
- package/{build → lib/esm}/dom/xml.js +4 -4
- package/lib/esm/equal.d.ts +5 -0
- package/{build → lib/esm}/equal.js +37 -37
- package/lib/esm/equal.test.d.ts +1 -0
- package/{build → lib/esm}/equal.test.js +20 -20
- package/lib/esm/flags.d.ts +7 -0
- package/{build → lib/esm}/flags.js +48 -48
- package/lib/esm/flags.test.d.ts +1 -0
- package/{build → lib/esm}/flags.test.js +35 -35
- package/lib/esm/fs.d.ts +48 -0
- package/{build → lib/esm}/fs.js +144 -144
- package/lib/esm/fs.test.d.ts +1 -0
- package/{build → lib/esm}/fs.test.js +43 -43
- package/lib/esm/generator.d.ts +1 -0
- package/{build → lib/esm}/generator.js +10 -10
- package/lib/esm/generator.test.d.ts +1 -0
- package/{build → lib/esm}/generator.test.js +24 -24
- package/lib/esm/is_browser.d.ts +1 -0
- package/{build → lib/esm}/is_browser.js +1 -1
- package/lib/esm/loader.d.mts +22 -0
- package/{build → lib/esm}/loader.mjs +35 -35
- package/lib/esm/lock.d.ts +1 -0
- package/{build → lib/esm}/lock.js +23 -23
- package/lib/esm/lock.test.d.ts +1 -0
- package/{build → lib/esm}/lock.test.js +16 -16
- package/lib/esm/log.d.ts +26 -0
- package/{build → lib/esm}/log.js +46 -46
- package/lib/esm/observable/event.d.ts +35 -0
- package/lib/esm/observable/event.js +46 -0
- package/lib/esm/observable/observable.d.ts +132 -0
- package/lib/esm/observable/observable.js +343 -0
- package/lib/esm/observable/observable.test.d.ts +1 -0
- package/lib/esm/observable/observable.test.js +63 -0
- package/lib/esm/range.d.ts +1 -0
- package/{build → lib/esm}/range.js +7 -7
- package/lib/esm/result.d.ts +31 -0
- package/{build → lib/esm}/result.js +65 -65
- package/lib/esm/result.test.d.ts +1 -0
- package/{build → lib/esm}/result.test.js +71 -71
- package/lib/esm/safe.d.ts +1 -0
- package/{build → lib/esm}/safe.js +10 -10
- package/lib/esm/scope/describe.d.ts +18 -0
- package/{build → lib/esm}/scope/describe.js +60 -61
- package/lib/esm/scope/display/console.d.ts +2 -0
- package/{build → lib/esm}/scope/display/console.js +21 -21
- package/lib/esm/scope/display/dom.d.ts +3 -0
- package/{build → lib/esm}/scope/display/dom.js +26 -26
- package/lib/esm/scope/display/junit.d.ts +2 -0
- package/{build → lib/esm}/scope/display/junit.js +17 -17
- package/lib/esm/scope/execute.d.ts +12 -0
- package/{build → lib/esm}/scope/execute.js +85 -85
- package/lib/esm/scope/expect.d.ts +23 -0
- package/{build → lib/esm}/scope/expect.js +108 -108
- package/lib/esm/scope/fix.d.ts +4 -0
- package/{build → lib/esm}/scope/fix.js +22 -22
- package/lib/esm/scope/index.d.ts +3 -0
- package/{build → lib/esm}/scope/index.js +3 -3
- package/lib/esm/scope/scope.d.ts +17 -0
- package/{build → lib/esm}/scope/scope.js +1 -1
- package/lib/esm/scope/state.d.ts +1 -0
- package/lib/esm/scope/state.js +7 -0
- package/lib/esm/server/http/apps.d.ts +5 -0
- package/{build → lib/esm}/server/http/apps.js +23 -23
- package/lib/esm/server/http/css.d.ts +5 -0
- package/{build → lib/esm}/server/http/css.js +50 -50
- package/lib/esm/server/http/index.d.ts +21 -0
- package/{build → lib/esm}/server/http/index.js +73 -73
- package/lib/esm/server/http/response.d.ts +4 -0
- package/{build → lib/esm}/server/http/response.js +40 -40
- package/lib/esm/server/http/sitemap.d.ts +2 -0
- package/{build → lib/esm}/server/http/sitemap.js +42 -42
- package/lib/esm/server/http/static.d.ts +2 -0
- package/{build → lib/esm}/server/http/static.js +21 -21
- package/lib/esm/server/http/typescript.d.ts +5 -0
- package/{build → lib/esm}/server/http/typescript.js +40 -40
- package/lib/esm/server/main.d.ts +2 -0
- package/{build → lib/esm}/server/main.js +12 -9
- package/lib/esm/test.d.mts +2 -0
- package/lib/esm/test.mjs +26 -0
- package/lib/esm/test_all.d.ts +9 -0
- package/{build → lib/esm}/test_all.js +28 -18
- package/lib/esm/transpile.d.mts +3 -0
- package/{build → lib/esm}/transpile.mjs +18 -18
- package/lib/esm/tsconfig.tsbuildinfo +1 -0
- package/package.json +13 -14
- package/src/assert.ts +1 -1
- package/src/components/button_bar.ts +3 -3
- package/src/components/inline_edit.ts +3 -3
- package/src/components/logger.ts +3 -3
- package/src/components/select.ts +3 -3
- package/src/components/test.js +3 -2
- package/src/context.ts +3 -3
- package/src/diff.ts +2 -2
- package/src/dom/css/border.ts +3 -3
- package/src/dom/css/core.ts +1 -1
- package/src/dom/css/fstyle.ts +2 -2
- package/src/dom/css/sizing.ts +1 -1
- package/src/dom/dom.ts +1 -1
- package/src/dom/fc.test.ts +3 -3
- package/src/dom/fc.ts +1 -1
- package/src/dom/form/form.app.ts +2 -2
- package/src/dom/form/form.ts +3 -3
- package/src/dom/html.test.ts +3 -3
- package/src/dom/html.ts +1 -1
- package/src/dom/observable.test.ts +6 -6
- package/src/dom/observable.ts +1 -1
- package/src/dom/provide.ts +1 -1
- package/src/dom/router/link.ts +2 -2
- package/src/dom/router/router.ts +2 -2
- package/src/dom/svg.ts +1 -1
- package/src/dom/test.ts +8 -6
- package/src/dom/types/html.ts +1 -1
- package/src/equal.ts +1 -1
- package/src/flags.ts +1 -1
- package/src/fs.ts +4 -4
- package/src/index.html +6 -6
- package/src/observable/event.ts +2 -2
- package/src/observable/observable.test.ts +2 -2
- package/src/observable/observable.ts +72 -12
- package/src/pico/_variables.scss +1 -1
- package/src/pico/layout/_sectioning.scss +2 -0
- package/src/result.ts +1 -1
- package/src/scope/describe.ts +2 -5
- package/src/scope/display/console.ts +4 -4
- package/src/scope/display/dom.ts +6 -6
- package/src/scope/display/junit.ts +3 -3
- package/src/scope/execute.ts +2 -2
- package/src/scope/expect.ts +3 -3
- package/src/scope/state.ts +10 -0
- package/src/server/http/sitemap.ts +1 -1
- package/src/server/main.ts +9 -2
- package/src/test.mjs +22 -18
- package/src/test_all.ts +10 -0
- package/build/components/select.d.ts +0 -13
- package/build/components/test.js +0 -2
- package/build/dom/test.d.ts +0 -1
- package/build/dom/test.js +0 -2
- package/build/observable/observable.d.ts +0 -83
- package/build/observable/observable.js +0 -148
- package/build/observable/observable.test.js +0 -21
- package/build/test.mjs +0 -23
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.debounce = void 0;
|
|
4
|
+
function debounce(fn, ms = 32) {
|
|
5
|
+
let timer;
|
|
6
|
+
return (...args) => {
|
|
7
|
+
clearTimeout(timer);
|
|
8
|
+
timer = setTimeout(() => (clearTimeout(timer), fn(...args)), ms);
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
exports.debounce = debounce;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const DiffA: unique symbol;
|
|
2
|
+
export declare const DiffB: unique symbol;
|
|
3
|
+
export declare type DiffIndex = string | number;
|
|
4
|
+
export declare type DiffPrimitive = string | number | boolean | null | undefined;
|
|
5
|
+
interface DiffEntry {
|
|
6
|
+
key: DiffIndex;
|
|
7
|
+
left: DiffPrimitive;
|
|
8
|
+
right: DiffPrimitive;
|
|
9
|
+
}
|
|
10
|
+
interface DiffList {
|
|
11
|
+
key: DiffIndex;
|
|
12
|
+
children: (DiffEntry | DiffList)[];
|
|
13
|
+
}
|
|
14
|
+
export declare function diff<T>(a: Partial<T>, b: Partial<T>): (DiffEntry | DiffList)[];
|
|
15
|
+
export {};
|
package/lib/cjs/diff.js
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.diff = exports.DiffB = exports.DiffA = void 0;
|
|
4
|
+
const range_js_1 = require("./range.js");
|
|
5
|
+
const result_js_1 = require("./result.js");
|
|
6
|
+
exports.DiffA = Symbol("A");
|
|
7
|
+
exports.DiffB = Symbol("B");
|
|
8
|
+
function doDiff(va, vb, k) {
|
|
9
|
+
if (Array.isArray(va)) {
|
|
10
|
+
// @ts-ignore
|
|
11
|
+
return diffArray(va, vb, k);
|
|
12
|
+
}
|
|
13
|
+
if (typeof va === "object") {
|
|
14
|
+
const d = diffObject(va, vb, k);
|
|
15
|
+
if (d.children.length === 0) {
|
|
16
|
+
return (0, result_js_1.None)();
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
return (0, result_js_1.Some)(d);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
if (Object.is(va, vb)) {
|
|
23
|
+
return (0, result_js_1.None)();
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
// @ts-ignore
|
|
27
|
+
return { key: k, left: va, right: vb };
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function diffArray(a, b, key) {
|
|
31
|
+
const indexes = Math.max(a.length, b.length);
|
|
32
|
+
const children = (0, range_js_1.range)(0, indexes)
|
|
33
|
+
.map((i) => doDiff(a[i], b[i], i))
|
|
34
|
+
.filter(result_js_1.isSome);
|
|
35
|
+
return children.length > 0 ? { key, children } : (0, result_js_1.None)();
|
|
36
|
+
}
|
|
37
|
+
function diffObject(a, b, key = "") {
|
|
38
|
+
const keys = new Set([...Object.keys(a), ...Object.keys(b)]);
|
|
39
|
+
const children = [...keys]
|
|
40
|
+
// @ts-ignore
|
|
41
|
+
.map((k) => doDiff(a[k], b[k], k))
|
|
42
|
+
.filter(result_js_1.isSome);
|
|
43
|
+
return {
|
|
44
|
+
key,
|
|
45
|
+
children,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function diff(a, b) {
|
|
49
|
+
if (typeof a != "object" && !Object.is(a, b)) {
|
|
50
|
+
// @ts-ignore
|
|
51
|
+
return [{ key: "", left: a, right: b }];
|
|
52
|
+
}
|
|
53
|
+
return (Array.isArray(a)
|
|
54
|
+
? // @ts-ignore
|
|
55
|
+
diffArray(a, b, "") ?? { children: [] }
|
|
56
|
+
: diffObject(a, b, "")).children;
|
|
57
|
+
}
|
|
58
|
+
exports.diff = diff;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const diff_js_1 = require("./diff.js");
|
|
4
|
+
const describe_js_1 = require("./scope/describe.js");
|
|
5
|
+
const expect_js_1 = require("./scope/expect.js");
|
|
6
|
+
(0, describe_js_1.describe)("diff", () => {
|
|
7
|
+
(0, describe_js_1.it)("diffs primitives", () => {
|
|
8
|
+
const diffed = (0, diff_js_1.diff)(1, 2);
|
|
9
|
+
(0, expect_js_1.expect)(diffed).toEqual([{ key: "", left: 1, right: 2 }]);
|
|
10
|
+
});
|
|
11
|
+
(0, describe_js_1.it)("diffs objects", () => {
|
|
12
|
+
const diffed = (0, diff_js_1.diff)({ a: 1, b: 2 }, { a: 2, b: 2 });
|
|
13
|
+
(0, expect_js_1.expect)(diffed).toEqual([{ key: "a", left: 1, right: 2 }]);
|
|
14
|
+
});
|
|
15
|
+
(0, describe_js_1.it)("diffs nested objects", () => {
|
|
16
|
+
const diffed = (0, diff_js_1.diff)({ a: { c: 1 }, b: 2 }, { a: { c: 2 }, b: 2 });
|
|
17
|
+
(0, expect_js_1.expect)(diffed).toEqual([
|
|
18
|
+
{ key: "a", children: [{ key: "c", left: 1, right: 2 }] },
|
|
19
|
+
]);
|
|
20
|
+
});
|
|
21
|
+
(0, describe_js_1.it)("diffs missing sides", () => {
|
|
22
|
+
const diffed = (0, diff_js_1.diff)({ a: 1 }, { b: 2 });
|
|
23
|
+
(0, expect_js_1.expect)(diffed).toEqual([
|
|
24
|
+
{ key: "a", left: 1, right: undefined },
|
|
25
|
+
{ key: "b", left: undefined, right: 2 },
|
|
26
|
+
]);
|
|
27
|
+
});
|
|
28
|
+
(0, describe_js_1.it)("diffs arrays", () => {
|
|
29
|
+
const diffed = (0, diff_js_1.diff)([1, 2, 3], [1, 4, 3]);
|
|
30
|
+
(0, expect_js_1.expect)(diffed).toEqual([{ key: 1, left: 2, right: 4 }]);
|
|
31
|
+
});
|
|
32
|
+
(0, describe_js_1.it)("diffs objects in an array", () => {
|
|
33
|
+
const diffed = (0, diff_js_1.diff)([{ a: { b: 1 } }, { a: { b: 2 } }, { a: { b: 3 } }], [{ a: { b: 1 } }, { a: { b: 4 } }, { a: { b: 3 } }]);
|
|
34
|
+
(0, expect_js_1.expect)(diffed).toEqual([
|
|
35
|
+
{
|
|
36
|
+
key: 1,
|
|
37
|
+
children: [{ key: "a", children: [{ key: "b", left: 2, right: 4 }] }],
|
|
38
|
+
},
|
|
39
|
+
]);
|
|
40
|
+
});
|
|
41
|
+
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export declare type Display = string | {
|
|
2
|
-
toString(): string;
|
|
3
|
-
};
|
|
4
|
-
export declare const isDisplay: (a: unknown) => a is Display;
|
|
5
|
-
export declare const display: (a: unknown | Display) => string;
|
|
1
|
+
export declare type Display = string | {
|
|
2
|
+
toString(): string;
|
|
3
|
+
};
|
|
4
|
+
export declare const isDisplay: (a: unknown) => a is Display;
|
|
5
|
+
export declare const display: (a: unknown | Display) => string;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.display = exports.isDisplay = void 0;
|
|
4
|
+
const isDisplay = (/** @type unknown */ a) => typeof a.toString === "function" ||
|
|
5
|
+
typeof a === "string";
|
|
6
|
+
exports.isDisplay = isDisplay;
|
|
7
|
+
const display = (a) => {
|
|
8
|
+
if ((0, exports.isDisplay)(a)) {
|
|
9
|
+
const str = a.toString();
|
|
10
|
+
if (str === "[object Object]")
|
|
11
|
+
return JSON.stringify(a);
|
|
12
|
+
return str;
|
|
13
|
+
}
|
|
14
|
+
return JSON.stringify(a);
|
|
15
|
+
};
|
|
16
|
+
exports.display = display;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { Properties } from "../types/css.js";
|
|
2
|
-
import { Side, Size } from "./constants.js";
|
|
3
|
-
export declare function rounded(size?: Size, side?: Side): Properties<0 | (string & {}), string & {}>;
|
|
4
|
-
export declare function border({ side, style, radius, width, color, }: {
|
|
5
|
-
side?: Side;
|
|
6
|
-
style?: "solid" | "dotted" | "dashed" | "double" | "none";
|
|
7
|
-
radius?: Size;
|
|
8
|
-
width?: 0 | 1 | 2 | 4 | 8;
|
|
9
|
-
color?: string;
|
|
10
|
-
}): {};
|
|
11
|
-
export declare function inset(width: 0 | 1 | 2 | 4 | 8, color1?: string, color2?: string): {};
|
|
1
|
+
import { Properties } from "../types/css.js";
|
|
2
|
+
import { Side, Size } from "./constants.js";
|
|
3
|
+
export declare function rounded(size?: Size, side?: Side): Properties<0 | (string & {}), string & {}>;
|
|
4
|
+
export declare function border({ side, style, radius, width, color, }: {
|
|
5
|
+
side?: Side;
|
|
6
|
+
style?: "solid" | "dotted" | "dashed" | "double" | "none";
|
|
7
|
+
radius?: Size;
|
|
8
|
+
width?: 0 | 1 | 2 | 4 | 8;
|
|
9
|
+
color?: string;
|
|
10
|
+
}): {};
|
|
11
|
+
export declare function inset(width: 0 | 1 | 2 | 4 | 8, color1?: string, color2?: string): {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.inset = exports.border = exports.rounded = void 0;
|
|
4
|
+
const core_js_1 = require("./core.js");
|
|
5
|
+
function rounded(size = "", side = "") {
|
|
6
|
+
if ((0, core_js_1.isSide)(size)) {
|
|
7
|
+
side = size;
|
|
8
|
+
size = "";
|
|
9
|
+
}
|
|
10
|
+
const sized = (0, core_js_1.getSize)(size);
|
|
11
|
+
return (0, core_js_1.getSide)(side).reduce((prev, curr) => {
|
|
12
|
+
if (curr === "") {
|
|
13
|
+
prev.borderRadius = sized;
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
// @ts-ignore
|
|
17
|
+
prev[`border${curr}Radius`] = sized;
|
|
18
|
+
}
|
|
19
|
+
return prev;
|
|
20
|
+
}, {});
|
|
21
|
+
}
|
|
22
|
+
exports.rounded = rounded;
|
|
23
|
+
function border({ side = "", style = "solid", radius = "", width = 1, color = "black", }) {
|
|
24
|
+
return {};
|
|
25
|
+
}
|
|
26
|
+
exports.border = border;
|
|
27
|
+
function inset(width, color1 = "gray", color2 = "lightgray") {
|
|
28
|
+
return {
|
|
29
|
+
...border({ side: "tl", width, color: color1, radius: "none" }),
|
|
30
|
+
...border({ side: "br", width, color: color2, radius: "none" }),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
exports.inset = inset;
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
export declare const Sizes: {
|
|
2
|
-
none: string;
|
|
3
|
-
sm: string;
|
|
4
|
-
"": string;
|
|
5
|
-
md: string;
|
|
6
|
-
lg: string;
|
|
7
|
-
xl: string;
|
|
8
|
-
"2xl": string;
|
|
9
|
-
"3xl": string;
|
|
10
|
-
full: string;
|
|
11
|
-
};
|
|
12
|
-
export declare const Sides: {
|
|
13
|
-
"": string;
|
|
14
|
-
t: string;
|
|
15
|
-
r: string;
|
|
16
|
-
l: string;
|
|
17
|
-
b: string;
|
|
18
|
-
tl: string;
|
|
19
|
-
tr: string;
|
|
20
|
-
bl: string;
|
|
21
|
-
br: string;
|
|
22
|
-
};
|
|
23
|
-
export declare const Widths: {
|
|
24
|
-
"1/4": string;
|
|
25
|
-
"1/2": string;
|
|
26
|
-
"3/4": string;
|
|
27
|
-
full: string;
|
|
28
|
-
};
|
|
29
|
-
export declare type Size = keyof typeof Sizes;
|
|
30
|
-
export declare type Side = keyof typeof Sides;
|
|
31
|
-
export declare type Width = keyof typeof Widths;
|
|
1
|
+
export declare const Sizes: {
|
|
2
|
+
none: string;
|
|
3
|
+
sm: string;
|
|
4
|
+
"": string;
|
|
5
|
+
md: string;
|
|
6
|
+
lg: string;
|
|
7
|
+
xl: string;
|
|
8
|
+
"2xl": string;
|
|
9
|
+
"3xl": string;
|
|
10
|
+
full: string;
|
|
11
|
+
};
|
|
12
|
+
export declare const Sides: {
|
|
13
|
+
"": string;
|
|
14
|
+
t: string;
|
|
15
|
+
r: string;
|
|
16
|
+
l: string;
|
|
17
|
+
b: string;
|
|
18
|
+
tl: string;
|
|
19
|
+
tr: string;
|
|
20
|
+
bl: string;
|
|
21
|
+
br: string;
|
|
22
|
+
};
|
|
23
|
+
export declare const Widths: {
|
|
24
|
+
"1/4": string;
|
|
25
|
+
"1/2": string;
|
|
26
|
+
"3/4": string;
|
|
27
|
+
full: string;
|
|
28
|
+
};
|
|
29
|
+
export declare type Size = keyof typeof Sizes;
|
|
30
|
+
export declare type Side = keyof typeof Sides;
|
|
31
|
+
export declare type Width = keyof typeof Widths;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Widths = exports.Sides = exports.Sizes = void 0;
|
|
4
|
+
exports.Sizes = {
|
|
5
|
+
none: "0px",
|
|
6
|
+
sm: "0.125rem",
|
|
7
|
+
"": "0.25rem",
|
|
8
|
+
md: "0.375rem",
|
|
9
|
+
lg: "0.5rem",
|
|
10
|
+
xl: "0.75rem",
|
|
11
|
+
"2xl": "1rem",
|
|
12
|
+
"3xl": "1.5rem",
|
|
13
|
+
full: "9999px",
|
|
14
|
+
};
|
|
15
|
+
exports.Sides = {
|
|
16
|
+
"": "",
|
|
17
|
+
t: "Top",
|
|
18
|
+
r: "Right",
|
|
19
|
+
l: "Left",
|
|
20
|
+
b: "Bottom",
|
|
21
|
+
tl: "TopLeft",
|
|
22
|
+
tr: "TopRight",
|
|
23
|
+
bl: "BottomLeft",
|
|
24
|
+
br: "BottomRight",
|
|
25
|
+
};
|
|
26
|
+
exports.Widths = {
|
|
27
|
+
"1/4": "25%",
|
|
28
|
+
"1/2": "50%",
|
|
29
|
+
"3/4": "75%",
|
|
30
|
+
full: "100%",
|
|
31
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Side, Size, Sizes } from "./constants.js";
|
|
2
|
-
export declare function isSide(v: string): v is Side;
|
|
3
|
-
export declare function isSize(v: string): v is Size;
|
|
4
|
-
export declare function getSize(size: keyof typeof Sizes): string;
|
|
5
|
-
export declare function getSide(side: Side): string[];
|
|
1
|
+
import { Side, Size, Sizes } from "./constants.js";
|
|
2
|
+
export declare function isSide(v: string): v is Side;
|
|
3
|
+
export declare function isSize(v: string): v is Size;
|
|
4
|
+
export declare function getSize(size: keyof typeof Sizes): string;
|
|
5
|
+
export declare function getSide(side: Side): string[];
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSide = exports.getSize = exports.isSize = exports.isSide = void 0;
|
|
4
|
+
const constants_js_1 = require("./constants.js");
|
|
5
|
+
function isSide(v) {
|
|
6
|
+
return constants_js_1.Sides[v] !== undefined;
|
|
7
|
+
}
|
|
8
|
+
exports.isSide = isSide;
|
|
9
|
+
function isSize(v) {
|
|
10
|
+
return constants_js_1.Sizes[v] !== undefined;
|
|
11
|
+
}
|
|
12
|
+
exports.isSize = isSize;
|
|
13
|
+
function getSize(size) {
|
|
14
|
+
return constants_js_1.Sizes[size];
|
|
15
|
+
}
|
|
16
|
+
exports.getSize = getSize;
|
|
17
|
+
function getSide(side) {
|
|
18
|
+
switch (side) {
|
|
19
|
+
case "t":
|
|
20
|
+
return [...getSide("tl"), ...getSide("tr")];
|
|
21
|
+
case "r":
|
|
22
|
+
return [...getSide("tr"), ...getSide("br")];
|
|
23
|
+
case "b":
|
|
24
|
+
return [...getSide("br"), ...getSide("bl")];
|
|
25
|
+
case "l":
|
|
26
|
+
return [...getSide("tl"), ...getSide("bl")];
|
|
27
|
+
default:
|
|
28
|
+
return [constants_js_1.Sides[side]];
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.getSide = getSide;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Properties } from "../types/css.js";
|
|
2
|
-
export declare type FStyle = Properties | {
|
|
3
|
-
[k: string]: FStyle;
|
|
4
|
-
};
|
|
5
|
-
export declare function compileFStyle(fstyle: FStyle, prefix?: string): string;
|
|
1
|
+
import { Properties } from "../types/css.js";
|
|
2
|
+
export declare type FStyle = Properties | {
|
|
3
|
+
[k: string]: FStyle;
|
|
4
|
+
};
|
|
5
|
+
export declare function compileFStyle(fstyle: FStyle, prefix?: string): string;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.compileFStyle = void 0;
|
|
4
|
+
const case_js_1 = require("../../case.js");
|
|
5
|
+
function compileFStyle(fstyle, prefix = "") {
|
|
6
|
+
const properties = [];
|
|
7
|
+
const rules = [];
|
|
8
|
+
for (const [key, value] of Object.entries(fstyle)) {
|
|
9
|
+
if (typeof value == "string") {
|
|
10
|
+
properties.push({ key, value });
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
rules.push({ key, value });
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
let rule = "";
|
|
17
|
+
if (properties.length > 0) {
|
|
18
|
+
rule += `${prefix} {\n`;
|
|
19
|
+
for (const { key, value } of properties) {
|
|
20
|
+
rule += ` ${(0, case_js_1.dashCase)(key)}: ${value};\n`;
|
|
21
|
+
}
|
|
22
|
+
rule += "}\n\n";
|
|
23
|
+
}
|
|
24
|
+
for (const { key, value } of rules) {
|
|
25
|
+
if (key.startsWith("@media")) {
|
|
26
|
+
rule += `${key} {\n`;
|
|
27
|
+
rule += compileFStyle(value, " ");
|
|
28
|
+
rule += `}\n\n`;
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
rule += compileFStyle(value, `${prefix} ${key}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return rule;
|
|
35
|
+
}
|
|
36
|
+
exports.compileFStyle = compileFStyle;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Width } from "./constants.js";
|
|
2
|
-
export declare function width(amount: Width, block?: "inline"): {
|
|
3
|
-
width: string;
|
|
4
|
-
display?: string | undefined;
|
|
5
|
-
};
|
|
1
|
+
import { Width } from "./constants.js";
|
|
2
|
+
export declare function width(amount: Width, block?: "inline"): {
|
|
3
|
+
width: string;
|
|
4
|
+
display?: string | undefined;
|
|
5
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.width = void 0;
|
|
4
|
+
const constants_js_1 = require("./constants.js");
|
|
5
|
+
function width(amount, block) {
|
|
6
|
+
if (amount === undefined && constants_js_1.Widths[block] !== undefined) {
|
|
7
|
+
amount = block;
|
|
8
|
+
}
|
|
9
|
+
return {
|
|
10
|
+
...(block === "inline" ? { display: "inline-block" } : {}),
|
|
11
|
+
width: constants_js_1.Widths[amount] ?? "0",
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
exports.width = width;
|
|
@@ -1,26 +1,27 @@
|
|
|
1
|
-
import { Properties } from "./types/css.js";
|
|
2
|
-
declare const Events: unique symbol;
|
|
3
|
-
export declare const CLEAR: unique symbol;
|
|
4
|
-
export declare type EventHandler = EventListenerOrEventListenerObject;
|
|
5
|
-
export declare type DenormChildren = Node | string | typeof CLEAR;
|
|
6
|
-
export declare type DOMElement = Element & DocumentAndElementEventHandlers & ElementCSSInlineStyle;
|
|
7
|
-
export declare type DomAttrs = {
|
|
8
|
-
class: string;
|
|
9
|
-
style: Partial<Properties> | string;
|
|
10
|
-
role: "button" | "list";
|
|
11
|
-
events: Partial<{
|
|
12
|
-
[K in keyof HTMLElementEventMap]: EventHandler;
|
|
13
|
-
}>;
|
|
14
|
-
};
|
|
15
|
-
export declare type Attrs<E extends Omit<Element, "update">, S = {}> = Partial<Omit<E, "style"> & S & DomAttrs>;
|
|
16
|
-
export declare type DenormAttrs<E extends Omit<Element, "update">, S = {}> = Attrs<E, S> | DenormChildren;
|
|
17
|
-
declare global {
|
|
18
|
-
interface Element {
|
|
19
|
-
[Events]: Map<string, EventHandler>;
|
|
20
|
-
update(attrs?: DenormAttrs<Element>, ...children: DenormChildren[]): this;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
export declare
|
|
24
|
-
export declare function
|
|
25
|
-
export declare function
|
|
26
|
-
export
|
|
1
|
+
import { Properties } from "./types/css.js";
|
|
2
|
+
declare const Events: unique symbol;
|
|
3
|
+
export declare const CLEAR: unique symbol;
|
|
4
|
+
export declare type EventHandler = EventListenerOrEventListenerObject;
|
|
5
|
+
export declare type DenormChildren = Node | string | typeof CLEAR;
|
|
6
|
+
export declare type DOMElement = Element & DocumentAndElementEventHandlers & ElementCSSInlineStyle;
|
|
7
|
+
export declare type DomAttrs = {
|
|
8
|
+
class: string | string[];
|
|
9
|
+
style: Partial<Properties> | string;
|
|
10
|
+
role: "button" | "list" | "listbox";
|
|
11
|
+
events: Partial<{
|
|
12
|
+
[K in keyof HTMLElementEventMap]: EventHandler | null;
|
|
13
|
+
}>;
|
|
14
|
+
};
|
|
15
|
+
export declare type Attrs<E extends Omit<Element, "update">, S = {}> = Partial<Omit<E, "style"> & S & DomAttrs>;
|
|
16
|
+
export declare type DenormAttrs<E extends Omit<Element, "update">, S = {}> = Attrs<E, S> | DenormChildren;
|
|
17
|
+
declare global {
|
|
18
|
+
interface Element {
|
|
19
|
+
[Events]: Map<string, EventHandler>;
|
|
20
|
+
update(attrs?: DenormAttrs<Element>, ...children: DenormChildren[]): this;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export declare type DOMUpdates<E extends Element = Element> = [DenormAttrs<E>, ...DenormChildren[]] | DenormChildren[];
|
|
24
|
+
export declare function normalizeArguments<E extends Element>(attrs?: DenormAttrs<E>, children?: DenormChildren[], defaultAttrs?: Attrs<E>): [Attrs<E>, DenormChildren[]];
|
|
25
|
+
export declare function up<E extends Element>(element: Omit<E, "update">, attrs?: DenormAttrs<E>, ...children: DenormChildren[]): E;
|
|
26
|
+
export declare function update(element: Omit<Element, "update">, attrs: Attrs<Element>, children: DenormChildren[]): Element;
|
|
27
|
+
export {};
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.update = exports.up = exports.normalizeArguments = exports.CLEAR = void 0;
|
|
4
|
+
const Events = Symbol("events");
|
|
5
|
+
exports.CLEAR = Symbol("Clear children");
|
|
6
|
+
function isAttrs(attrs) {
|
|
7
|
+
if (!attrs) {
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
if (typeof attrs === "object") {
|
|
11
|
+
return !attrs.nodeType;
|
|
12
|
+
}
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
function normalizeArguments(attrs, children = [], defaultAttrs = {}) {
|
|
16
|
+
let attributes;
|
|
17
|
+
if (isAttrs(attrs)) {
|
|
18
|
+
attributes = attrs;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
if (attrs !== undefined) {
|
|
22
|
+
children.unshift(attrs);
|
|
23
|
+
}
|
|
24
|
+
attributes = defaultAttrs;
|
|
25
|
+
}
|
|
26
|
+
return [attributes, children.flat()];
|
|
27
|
+
}
|
|
28
|
+
exports.normalizeArguments = normalizeArguments;
|
|
29
|
+
function up(element, attrs, ...children) {
|
|
30
|
+
return update(element, ...normalizeArguments(attrs, children));
|
|
31
|
+
}
|
|
32
|
+
exports.up = up;
|
|
33
|
+
function update(element, attrs, children) {
|
|
34
|
+
// Track events, to remove later
|
|
35
|
+
const $events = (element[Events] ??= new Map());
|
|
36
|
+
const { style = {}, events = {}, ...rest } = attrs;
|
|
37
|
+
Object.entries(events).forEach(([k, v]) => {
|
|
38
|
+
if (v === null) {
|
|
39
|
+
if ($events.has(k)) {
|
|
40
|
+
const listener = $events.get(k);
|
|
41
|
+
element.removeEventListener(k, listener);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else if (v !== undefined) {
|
|
45
|
+
element.addEventListener(k, v);
|
|
46
|
+
$events.set(k, v);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
const _style = element.style;
|
|
50
|
+
if (_style) {
|
|
51
|
+
if (typeof style === "string") {
|
|
52
|
+
_style.cssText = style;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
Object.entries(style).forEach(([k, v]) => {
|
|
56
|
+
// @ts-ignore Object.entries is unable to statically look into args
|
|
57
|
+
_style[k] = v;
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
Object.entries(rest).forEach(([k, v]) => {
|
|
62
|
+
if (k === "class") {
|
|
63
|
+
v = Array.isArray(v)
|
|
64
|
+
? v
|
|
65
|
+
: (typeof v === "string" ? v : `${v}`).split(/\s+/m);
|
|
66
|
+
v
|
|
67
|
+
.filter((s) => s !== "")
|
|
68
|
+
.forEach((c) => {
|
|
69
|
+
if (c.startsWith("!")) {
|
|
70
|
+
element.classList.remove(c.substring(1));
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
element.classList.add(c);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const useNamespace = element.namespaceURI &&
|
|
79
|
+
element.namespaceURI != "http://www.w3.org/1999/xhtml";
|
|
80
|
+
const remove = !v;
|
|
81
|
+
if (useNamespace) {
|
|
82
|
+
if (remove) {
|
|
83
|
+
element.removeAttributeNS(element.namespaceURI, k);
|
|
84
|
+
}
|
|
85
|
+
else if (v === true) {
|
|
86
|
+
element.setAttributeNS(element.namespaceURI, k, k);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
element.setAttributeNS(element.namespaceURI, k, v);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
if (remove) {
|
|
94
|
+
element.removeAttribute(k);
|
|
95
|
+
}
|
|
96
|
+
else if (v === true) {
|
|
97
|
+
element.setAttribute(k, k);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
element.setAttribute(k, v);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
if (children?.length > 0) {
|
|
105
|
+
element.replaceChildren(...(children[0] === exports.CLEAR ? [] : children));
|
|
106
|
+
}
|
|
107
|
+
element.update ??= (attrs, ...children) => update(element, ...normalizeArguments(attrs, children));
|
|
108
|
+
return element;
|
|
109
|
+
}
|
|
110
|
+
exports.update = update;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { DenormChildren, DomAttrs } from "./dom.js";
|
|
2
|
-
export declare type Attrs<S> = S & Partial<DomAttrs>;
|
|
3
|
-
export declare const State: unique symbol;
|
|
4
|
-
export interface FCComponent<P extends object, S extends object> extends Element {
|
|
5
|
-
[State]?: Partial<S>;
|
|
6
|
-
update(attrs?: Partial<Attrs<P> & DomAttrs> | DenormChildren, ...children: DenormChildren[]): this;
|
|
7
|
-
}
|
|
8
|
-
export interface RenderFn<P extends object, S extends object> {
|
|
9
|
-
(el: FCComponent<P, S>, attrs: Attrs<P>, children: DenormChildren[]): Element | Element[];
|
|
10
|
-
}
|
|
11
|
-
export interface FCComponentCtor<P extends object, S extends object> {
|
|
12
|
-
(attrs?: Attrs<P> | DenormChildren, ...children: DenormChildren[]): FCComponent<P, S>;
|
|
13
|
-
}
|
|
14
|
-
export declare function FC<P extends object, S extends object = {}>(name: string, component: RenderFn<P, S>): FCComponentCtor<P, S>;
|
|
1
|
+
import { DenormChildren, DomAttrs } from "./dom.js";
|
|
2
|
+
export declare type Attrs<S> = S & Partial<DomAttrs>;
|
|
3
|
+
export declare const State: unique symbol;
|
|
4
|
+
export interface FCComponent<P extends object, S extends object> extends Element {
|
|
5
|
+
[State]?: Partial<S>;
|
|
6
|
+
update(attrs?: Partial<Attrs<P> & DomAttrs> | DenormChildren, ...children: DenormChildren[]): this;
|
|
7
|
+
}
|
|
8
|
+
export interface RenderFn<P extends object, S extends object> {
|
|
9
|
+
(el: FCComponent<P, S>, attrs: Attrs<P>, children: DenormChildren[]): Element | Element[];
|
|
10
|
+
}
|
|
11
|
+
export interface FCComponentCtor<P extends object, S extends object> {
|
|
12
|
+
(attrs?: Attrs<P> | DenormChildren, ...children: DenormChildren[]): FCComponent<P, S>;
|
|
13
|
+
}
|
|
14
|
+
export declare function FC<P extends object, S extends object = {}>(name: string, component: RenderFn<P, S>): FCComponentCtor<P, S>;
|