@davidsouther/jiffies 2.2.5 → 2026.4.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/LICENSE +1 -1
- package/package.json +22 -25
- package/src/assert.ts +5 -5
- package/src/components/button_bar.ts +28 -30
- package/src/components/inline_edit.ts +8 -7
- package/src/components/logger.ts +6 -6
- package/src/components/select.ts +7 -7
- package/src/components/test.ts +5 -0
- package/src/components/virtual_scroll.test.ts +9 -6
- package/src/components/virtual_scroll.ts +29 -24
- package/src/context.test.ts +4 -4
- package/src/context.ts +16 -11
- package/src/debounce.ts +9 -3
- package/src/diff.test.ts +4 -4
- package/src/diff.ts +14 -16
- package/src/dom/css/border.ts +11 -11
- package/src/dom/css/core.ts +1 -1
- package/src/dom/css/fstyle.ts +4 -4
- package/src/dom/css/sizing.ts +1 -1
- package/src/dom/dom.ts +59 -47
- package/src/dom/fc.test.ts +8 -8
- package/src/dom/fc.ts +32 -35
- package/src/dom/form/form.app.ts +9 -9
- package/src/dom/form/form.ts +21 -15
- package/src/dom/form/index.html +3 -2
- package/src/dom/html.test.ts +12 -10
- package/src/dom/html.ts +2 -3
- package/src/dom/index.ts +2 -0
- package/src/dom/observable.test.ts +6 -6
- package/src/dom/observable.ts +2 -2
- package/src/dom/provide.ts +1 -1
- package/src/dom/router/link.ts +3 -3
- package/src/dom/router/router.ts +5 -5
- package/src/dom/svg.ts +7 -6
- package/src/dom/test.ts +3 -0
- package/src/dom/types/css.ts +43 -61
- package/src/dom/types/html.ts +2 -4
- package/src/dom/xml.ts +2 -2
- package/src/equal.test.ts +3 -3
- package/src/equal.ts +27 -14
- package/src/flags.test.ts +2 -2
- package/src/flags.ts +2 -2
- package/src/fs.test.ts +5 -5
- package/src/fs.ts +26 -20
- package/src/fs_node.ts +4 -4
- package/src/fs_win.test.ts +1 -1
- package/src/generator.test.ts +4 -3
- package/src/generator.ts +1 -1
- package/src/hooks/_notes +4 -1
- package/src/index.html +7 -7
- package/src/lock.test.ts +4 -4
- package/src/lock.ts +8 -7
- package/src/log.ts +17 -18
- package/src/observable/event.ts +7 -7
- package/src/observable/observable.test.ts +3 -3
- package/src/observable/observable.ts +73 -52
- package/src/result.test.ts +7 -10
- package/src/result.ts +51 -47
- package/src/safe.ts +1 -1
- package/src/scope/describe.ts +12 -11
- package/src/scope/display/console.ts +4 -4
- package/src/scope/display/dom.ts +9 -9
- package/src/scope/display/junit.ts +21 -24
- package/src/scope/execute.ts +17 -12
- package/src/scope/expect.ts +22 -22
- package/src/scope/fix.ts +8 -7
- package/src/scope/index.ts +3 -3
- package/src/scope/scope.ts +2 -2
- package/src/scope/state.ts +2 -2
- package/src/server/http/apps.ts +5 -5
- package/src/server/http/css.ts +10 -26
- package/src/server/http/index.ts +30 -24
- package/src/server/http/response.ts +12 -5
- package/src/server/http/sitemap.ts +8 -8
- package/src/server/http/static.ts +9 -6
- package/src/server/http/typescript.ts +25 -25
- package/src/server/main.ts +7 -4
- package/src/test.mjs +8 -8
- package/src/test_all.ts +16 -13
- package/src/transpile.mjs +5 -18
- package/tsconfig.json +34 -0
- package/build/pico.css +0 -2466
- package/build/pico.css.map +0 -1
- package/lib/cjs/assert.d.ts +0 -26
- package/lib/cjs/assert.js +0 -46
- package/lib/cjs/awaitable.d.ts +0 -1
- package/lib/cjs/awaitable.js +0 -2
- package/lib/cjs/case.d.ts +0 -1
- package/lib/cjs/case.js +0 -9
- package/lib/cjs/components/button_bar.d.ts +0 -8
- package/lib/cjs/components/button_bar.js +0 -29
- package/lib/cjs/components/inline_edit.d.ts +0 -12
- package/lib/cjs/components/inline_edit.js +0 -51
- package/lib/cjs/components/logger.d.ts +0 -6
- package/lib/cjs/components/logger.js +0 -27
- package/lib/cjs/components/select.d.ts +0 -13
- package/lib/cjs/components/select.js +0 -6
- package/lib/cjs/components/test.d.ts +0 -1
- package/lib/cjs/components/test.js +0 -7
- package/lib/cjs/components/virtual_scroll.d.ts +0 -40
- package/lib/cjs/components/virtual_scroll.js +0 -102
- package/lib/cjs/components/virtual_scroll.test.d.ts +0 -1
- package/lib/cjs/components/virtual_scroll.test.js +0 -22
- package/lib/cjs/context.d.ts +0 -15
- package/lib/cjs/context.js +0 -48
- package/lib/cjs/context.test.d.ts +0 -1
- package/lib/cjs/context.test.js +0 -48
- package/lib/cjs/debounce.d.ts +0 -1
- package/lib/cjs/debounce.js +0 -12
- package/lib/cjs/diff.d.ts +0 -15
- package/lib/cjs/diff.js +0 -58
- package/lib/cjs/diff.test.d.ts +0 -1
- package/lib/cjs/diff.test.js +0 -41
- package/lib/cjs/display.d.ts +0 -5
- package/lib/cjs/display.js +0 -16
- package/lib/cjs/dom/css/border.d.ts +0 -11
- package/lib/cjs/dom/css/border.js +0 -33
- package/lib/cjs/dom/css/constants.d.ts +0 -31
- package/lib/cjs/dom/css/constants.js +0 -31
- package/lib/cjs/dom/css/core.d.ts +0 -5
- package/lib/cjs/dom/css/core.js +0 -31
- package/lib/cjs/dom/css/fstyle.d.ts +0 -5
- package/lib/cjs/dom/css/fstyle.js +0 -36
- package/lib/cjs/dom/css/sizing.d.ts +0 -5
- package/lib/cjs/dom/css/sizing.js +0 -14
- package/lib/cjs/dom/dom.d.ts +0 -27
- package/lib/cjs/dom/dom.js +0 -110
- package/lib/cjs/dom/fc.d.ts +0 -14
- package/lib/cjs/dom/fc.js +0 -39
- package/lib/cjs/dom/fc.test.d.ts +0 -1
- package/lib/cjs/dom/fc.test.js +0 -23
- package/lib/cjs/dom/form/form.app.d.ts +0 -1
- package/lib/cjs/dom/form/form.app.js +0 -27
- package/lib/cjs/dom/form/form.d.ts +0 -26
- package/lib/cjs/dom/form/form.js +0 -49
- package/lib/cjs/dom/form/form.test.d.ts +0 -0
- package/lib/cjs/dom/form/form.test.js +0 -1
- package/lib/cjs/dom/html.d.ts +0 -113
- package/lib/cjs/dom/html.js +0 -119
- package/lib/cjs/dom/html.test.d.ts +0 -1
- package/lib/cjs/dom/html.test.js +0 -60
- package/lib/cjs/dom/observable.d.ts +0 -2
- package/lib/cjs/dom/observable.js +0 -10
- package/lib/cjs/dom/observable.test.d.ts +0 -1
- package/lib/cjs/dom/observable.test.js +0 -35
- package/lib/cjs/dom/provide.d.ts +0 -3
- package/lib/cjs/dom/provide.js +0 -12
- package/lib/cjs/dom/router/link.d.ts +0 -6
- package/lib/cjs/dom/router/link.js +0 -7
- package/lib/cjs/dom/router/router.d.ts +0 -13
- package/lib/cjs/dom/router/router.js +0 -55
- package/lib/cjs/dom/svg.d.ts +0 -64
- package/lib/cjs/dom/svg.js +0 -69
- package/lib/cjs/dom/test.d.ts +0 -1
- package/lib/cjs/dom/test.js +0 -13
- package/lib/cjs/dom/types/css.d.ts +0 -6612
- package/lib/cjs/dom/types/css.js +0 -24
- package/lib/cjs/dom/types/dom.d.ts +0 -0
- package/lib/cjs/dom/types/dom.js +0 -1
- package/lib/cjs/dom/types/html.d.ts +0 -616
- package/lib/cjs/dom/types/html.js +0 -2
- package/lib/cjs/dom/xml.d.ts +0 -1
- package/lib/cjs/dom/xml.js +0 -8
- package/lib/cjs/equal.d.ts +0 -8
- package/lib/cjs/equal.js +0 -48
- package/lib/cjs/equal.test.d.ts +0 -1
- package/lib/cjs/equal.test.js +0 -22
- package/lib/cjs/flags.d.ts +0 -7
- package/lib/cjs/flags.js +0 -52
- package/lib/cjs/flags.test.d.ts +0 -1
- package/lib/cjs/flags.test.js +0 -37
- package/lib/cjs/fs.d.ts +0 -72
- package/lib/cjs/fs.js +0 -235
- package/lib/cjs/fs.test.d.ts +0 -1
- package/lib/cjs/fs.test.js +0 -86
- package/lib/cjs/fs_node.d.ts +0 -15
- package/lib/cjs/fs_node.js +0 -50
- package/lib/cjs/fs_win.test.d.ts +0 -1
- package/lib/cjs/fs_win.test.js +0 -10
- package/lib/cjs/generator.d.ts +0 -1
- package/lib/cjs/generator.js +0 -14
- package/lib/cjs/generator.test.d.ts +0 -1
- package/lib/cjs/generator.test.js +0 -26
- package/lib/cjs/is_browser.d.ts +0 -1
- package/lib/cjs/is_browser.js +0 -4
- package/lib/cjs/loader-register.d.mts +0 -1
- package/lib/cjs/loader-register.d.ts +0 -1
- package/lib/cjs/loader-register.js +0 -4
- package/lib/cjs/loader-register.mjs +0 -4
- package/lib/cjs/loader.d.mts +0 -23
- package/lib/cjs/loader.mjs +0 -41
- package/lib/cjs/lock.d.ts +0 -1
- package/lib/cjs/lock.js +0 -27
- package/lib/cjs/lock.test.d.ts +0 -1
- package/lib/cjs/lock.test.js +0 -18
- package/lib/cjs/log.d.ts +0 -56
- package/lib/cjs/log.js +0 -103
- package/lib/cjs/observable/event.d.ts +0 -35
- package/lib/cjs/observable/event.js +0 -61
- package/lib/cjs/observable/observable.d.ts +0 -132
- package/lib/cjs/observable/observable.js +0 -363
- package/lib/cjs/observable/observable.test.d.ts +0 -1
- package/lib/cjs/observable/observable.test.js +0 -65
- package/lib/cjs/package.json +0 -1
- package/lib/cjs/range.d.ts +0 -1
- package/lib/cjs/range.js +0 -11
- package/lib/cjs/result.d.ts +0 -31
- package/lib/cjs/result.js +0 -80
- package/lib/cjs/result.test.d.ts +0 -1
- package/lib/cjs/result.test.js +0 -78
- package/lib/cjs/safe.d.ts +0 -1
- package/lib/cjs/safe.js +0 -14
- package/lib/cjs/scope/describe.d.ts +0 -18
- package/lib/cjs/scope/describe.js +0 -73
- package/lib/cjs/scope/display/console.d.ts +0 -2
- package/lib/cjs/scope/display/console.js +0 -25
- package/lib/cjs/scope/display/dom.d.ts +0 -3
- package/lib/cjs/scope/display/dom.js +0 -30
- package/lib/cjs/scope/display/junit.d.ts +0 -2
- package/lib/cjs/scope/display/junit.js +0 -21
- package/lib/cjs/scope/execute.d.ts +0 -12
- package/lib/cjs/scope/execute.js +0 -91
- package/lib/cjs/scope/expect.d.ts +0 -23
- package/lib/cjs/scope/expect.js +0 -110
- package/lib/cjs/scope/fix.d.ts +0 -4
- package/lib/cjs/scope/fix.js +0 -26
- package/lib/cjs/scope/index.d.ts +0 -3
- package/lib/cjs/scope/index.js +0 -15
- package/lib/cjs/scope/scope.d.ts +0 -17
- package/lib/cjs/scope/scope.js +0 -2
- package/lib/cjs/scope/state.d.ts +0 -2
- package/lib/cjs/scope/state.js +0 -12
- package/lib/cjs/server/http/apps.d.ts +0 -5
- package/lib/cjs/server/http/apps.js +0 -27
- package/lib/cjs/server/http/css.d.ts +0 -5
- package/lib/cjs/server/http/css.js +0 -54
- package/lib/cjs/server/http/index.d.ts +0 -21
- package/lib/cjs/server/http/index.js +0 -77
- package/lib/cjs/server/http/response.d.ts +0 -4
- package/lib/cjs/server/http/response.js +0 -45
- package/lib/cjs/server/http/sitemap.d.ts +0 -2
- package/lib/cjs/server/http/sitemap.js +0 -46
- package/lib/cjs/server/http/static.d.ts +0 -2
- package/lib/cjs/server/http/static.js +0 -25
- package/lib/cjs/server/http/typescript.d.ts +0 -5
- package/lib/cjs/server/http/typescript.js +0 -44
- package/lib/cjs/server/main.d.ts +0 -2
- package/lib/cjs/server/main.js +0 -14
- package/lib/cjs/test.d.mts +0 -2
- package/lib/cjs/test.mjs +0 -28
- package/lib/cjs/test_all.d.ts +0 -9
- package/lib/cjs/test_all.js +0 -30
- package/lib/cjs/transpile.d.mts +0 -3
- package/lib/cjs/transpile.mjs +0 -22
- package/lib/cjs/tsconfig.tsbuildinfo +0 -1
- package/lib/esm/assert.d.ts +0 -26
- package/lib/esm/assert.js +0 -38
- package/lib/esm/awaitable.d.ts +0 -1
- package/lib/esm/awaitable.js +0 -1
- package/lib/esm/case.d.ts +0 -1
- package/lib/esm/case.js +0 -5
- package/lib/esm/components/button_bar.d.ts +0 -8
- package/lib/esm/components/button_bar.js +0 -27
- package/lib/esm/components/inline_edit.d.ts +0 -12
- package/lib/esm/components/inline_edit.js +0 -48
- package/lib/esm/components/logger.d.ts +0 -6
- package/lib/esm/components/logger.js +0 -22
- package/lib/esm/components/select.d.ts +0 -10
- package/lib/esm/components/select.js +0 -3
- package/lib/esm/components/test.d.ts +0 -1
- package/lib/esm/components/test.js +0 -3
- package/lib/esm/components/virtual_scroll.d.ts +0 -40
- package/lib/esm/components/virtual_scroll.js +0 -94
- package/lib/esm/components/virtual_scroll.test.d.ts +0 -1
- package/lib/esm/components/virtual_scroll.test.js +0 -20
- package/lib/esm/context.d.ts +0 -15
- package/lib/esm/context.js +0 -43
- package/lib/esm/context.test.d.ts +0 -1
- package/lib/esm/context.test.js +0 -46
- package/lib/esm/debounce.d.ts +0 -2
- package/lib/esm/debounce.js +0 -8
- package/lib/esm/diff.d.ts +0 -15
- package/lib/esm/diff.js +0 -54
- package/lib/esm/diff.test.d.ts +0 -1
- package/lib/esm/diff.test.js +0 -39
- package/lib/esm/display.d.ts +0 -5
- package/lib/esm/display.js +0 -11
- package/lib/esm/dom/css/border.d.ts +0 -11
- package/lib/esm/dom/css/border.js +0 -27
- package/lib/esm/dom/css/constants.d.ts +0 -31
- package/lib/esm/dom/css/constants.js +0 -28
- package/lib/esm/dom/css/core.d.ts +0 -5
- package/lib/esm/dom/css/core.js +0 -24
- package/lib/esm/dom/css/fstyle.d.ts +0 -5
- package/lib/esm/dom/css/fstyle.js +0 -32
- package/lib/esm/dom/css/sizing.d.ts +0 -5
- package/lib/esm/dom/css/sizing.js +0 -10
- package/lib/esm/dom/dom.d.ts +0 -27
- package/lib/esm/dom/dom.js +0 -104
- package/lib/esm/dom/fc.d.ts +0 -14
- package/lib/esm/dom/fc.js +0 -35
- package/lib/esm/dom/fc.test.d.ts +0 -1
- package/lib/esm/dom/fc.test.js +0 -21
- package/lib/esm/dom/form/form.app.d.ts +0 -1
- package/lib/esm/dom/form/form.app.js +0 -23
- package/lib/esm/dom/form/form.d.ts +0 -26
- package/lib/esm/dom/form/form.js +0 -34
- package/lib/esm/dom/form/form.test.d.ts +0 -0
- package/lib/esm/dom/form/form.test.js +0 -1
- package/lib/esm/dom/html.d.ts +0 -113
- package/lib/esm/dom/html.js +0 -114
- package/lib/esm/dom/html.test.d.ts +0 -1
- package/lib/esm/dom/html.test.js +0 -58
- package/lib/esm/dom/observable.d.ts +0 -2
- package/lib/esm/dom/observable.js +0 -6
- package/lib/esm/dom/observable.test.d.ts +0 -1
- package/lib/esm/dom/observable.test.js +0 -33
- package/lib/esm/dom/provide.d.ts +0 -3
- package/lib/esm/dom/provide.js +0 -7
- package/lib/esm/dom/router/link.d.ts +0 -6
- package/lib/esm/dom/router/link.js +0 -3
- package/lib/esm/dom/router/router.d.ts +0 -13
- package/lib/esm/dom/router/router.js +0 -52
- package/lib/esm/dom/svg.d.ts +0 -64
- package/lib/esm/dom/svg.js +0 -65
- package/lib/esm/dom/test.d.ts +0 -1
- package/lib/esm/dom/test.js +0 -9
- package/lib/esm/dom/types/css.d.ts +0 -6612
- package/lib/esm/dom/types/css.js +0 -23
- package/lib/esm/dom/types/dom.d.ts +0 -0
- package/lib/esm/dom/types/dom.js +0 -1
- package/lib/esm/dom/types/html.d.ts +0 -616
- package/lib/esm/dom/types/html.js +0 -1
- package/lib/esm/dom/xml.d.ts +0 -1
- package/lib/esm/dom/xml.js +0 -4
- package/lib/esm/equal.d.ts +0 -8
- package/lib/esm/equal.js +0 -41
- package/lib/esm/equal.test.d.ts +0 -1
- package/lib/esm/equal.test.js +0 -20
- package/lib/esm/flags.d.ts +0 -7
- package/lib/esm/flags.js +0 -48
- package/lib/esm/flags.test.d.ts +0 -1
- package/lib/esm/flags.test.js +0 -35
- package/lib/esm/fs.d.ts +0 -72
- package/lib/esm/fs.js +0 -226
- package/lib/esm/fs.test.d.ts +0 -1
- package/lib/esm/fs.test.js +0 -84
- package/lib/esm/fs_node.d.ts +0 -15
- package/lib/esm/fs_node.js +0 -45
- package/lib/esm/fs_win.test.d.ts +0 -1
- package/lib/esm/fs_win.test.js +0 -8
- package/lib/esm/generator.d.ts +0 -1
- package/lib/esm/generator.js +0 -10
- package/lib/esm/generator.test.d.ts +0 -1
- package/lib/esm/generator.test.js +0 -24
- package/lib/esm/is_browser.d.ts +0 -1
- package/lib/esm/is_browser.js +0 -1
- package/lib/esm/loader-register.d.mts +0 -1
- package/lib/esm/loader-register.mjs +0 -2
- package/lib/esm/loader.d.mts +0 -23
- package/lib/esm/loader.mjs +0 -36
- package/lib/esm/lock.d.ts +0 -1
- package/lib/esm/lock.js +0 -23
- package/lib/esm/lock.test.d.ts +0 -1
- package/lib/esm/lock.test.js +0 -16
- package/lib/esm/log.d.ts +0 -56
- package/lib/esm/log.js +0 -93
- package/lib/esm/observable/event.d.ts +0 -35
- package/lib/esm/observable/event.js +0 -46
- package/lib/esm/observable/observable.d.ts +0 -132
- package/lib/esm/observable/observable.js +0 -343
- package/lib/esm/observable/observable.test.d.ts +0 -1
- package/lib/esm/observable/observable.test.js +0 -63
- package/lib/esm/range.d.ts +0 -1
- package/lib/esm/range.js +0 -7
- package/lib/esm/result.d.ts +0 -31
- package/lib/esm/result.js +0 -65
- package/lib/esm/result.test.d.ts +0 -1
- package/lib/esm/result.test.js +0 -76
- package/lib/esm/safe.d.ts +0 -1
- package/lib/esm/safe.js +0 -10
- package/lib/esm/scope/describe.d.ts +0 -18
- package/lib/esm/scope/describe.js +0 -60
- package/lib/esm/scope/display/console.d.ts +0 -2
- package/lib/esm/scope/display/console.js +0 -21
- package/lib/esm/scope/display/dom.d.ts +0 -3
- package/lib/esm/scope/display/dom.js +0 -26
- package/lib/esm/scope/display/junit.d.ts +0 -2
- package/lib/esm/scope/display/junit.js +0 -17
- package/lib/esm/scope/execute.d.ts +0 -12
- package/lib/esm/scope/execute.js +0 -85
- package/lib/esm/scope/expect.d.ts +0 -23
- package/lib/esm/scope/expect.js +0 -104
- package/lib/esm/scope/fix.d.ts +0 -4
- package/lib/esm/scope/fix.js +0 -22
- package/lib/esm/scope/index.d.ts +0 -3
- package/lib/esm/scope/index.js +0 -3
- package/lib/esm/scope/scope.d.ts +0 -17
- package/lib/esm/scope/scope.js +0 -1
- package/lib/esm/scope/state.d.ts +0 -2
- package/lib/esm/scope/state.js +0 -8
- package/lib/esm/server/http/apps.d.ts +0 -5
- package/lib/esm/server/http/apps.js +0 -23
- package/lib/esm/server/http/css.d.ts +0 -5
- package/lib/esm/server/http/css.js +0 -50
- package/lib/esm/server/http/index.d.ts +0 -21
- package/lib/esm/server/http/index.js +0 -73
- package/lib/esm/server/http/response.d.ts +0 -4
- package/lib/esm/server/http/response.js +0 -40
- package/lib/esm/server/http/sitemap.d.ts +0 -2
- package/lib/esm/server/http/sitemap.js +0 -42
- package/lib/esm/server/http/static.d.ts +0 -2
- package/lib/esm/server/http/static.js +0 -21
- package/lib/esm/server/http/typescript.d.ts +0 -5
- package/lib/esm/server/http/typescript.js +0 -40
- package/lib/esm/server/main.d.ts +0 -2
- package/lib/esm/server/main.js +0 -12
- package/lib/esm/test.d.mts +0 -2
- package/lib/esm/test.mjs +0 -26
- package/lib/esm/test_all.d.ts +0 -9
- package/lib/esm/test_all.js +0 -28
- package/lib/esm/transpile.d.mts +0 -3
- package/lib/esm/transpile.mjs +0 -18
- package/lib/esm/tsconfig.tsbuildinfo +0 -1
- package/src/components/test.js +0 -3
- package/src/loader-register.mjs +0 -3
- package/src/loader.mjs +0 -46
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export interface InlineEditState {
|
|
2
|
-
mode: number;
|
|
3
|
-
value: string;
|
|
4
|
-
}
|
|
5
|
-
export declare const InlineEdit: import("../dom/fc.js").FCComponentCtor<{
|
|
6
|
-
mode?: number | undefined;
|
|
7
|
-
value: string;
|
|
8
|
-
events: {
|
|
9
|
-
change: (value: string) => void;
|
|
10
|
-
};
|
|
11
|
-
}, InlineEditState>;
|
|
12
|
-
export default InlineEdit;
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { width } from "../dom/css/sizing.js";
|
|
2
|
-
import { FC, State } from "../dom/fc.js";
|
|
3
|
-
import { input, span } from "../dom/html.js";
|
|
4
|
-
const Mode = { VIEW: 0, EDIT: 1 };
|
|
5
|
-
export const InlineEdit = FC("inline-edit", (el, { mode = Mode.VIEW, value, events }) => {
|
|
6
|
-
const state = (el[State] ??= { mode, value });
|
|
7
|
-
const render = () => {
|
|
8
|
-
switch (state.mode) {
|
|
9
|
-
case Mode.EDIT:
|
|
10
|
-
return edit();
|
|
11
|
-
case Mode.VIEW:
|
|
12
|
-
return view();
|
|
13
|
-
default:
|
|
14
|
-
return span();
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
const view = () => span({
|
|
18
|
-
style: { cursor: "text", ...width("full", "inline") },
|
|
19
|
-
events: {
|
|
20
|
-
click: () => {
|
|
21
|
-
state.mode = Mode.EDIT;
|
|
22
|
-
el.update(render());
|
|
23
|
-
},
|
|
24
|
-
},
|
|
25
|
-
}, state.value ?? "");
|
|
26
|
-
const edit = () => {
|
|
27
|
-
const edit = span({ style: { display: "block", position: "relative" } }, input({
|
|
28
|
-
style: {
|
|
29
|
-
zIndex: "10",
|
|
30
|
-
position: "absolute",
|
|
31
|
-
left: "0",
|
|
32
|
-
marginTop: "-0.375rem",
|
|
33
|
-
},
|
|
34
|
-
events: {
|
|
35
|
-
blur: ({ target }) => events.change(target?.value ?? ""),
|
|
36
|
-
},
|
|
37
|
-
type: "text",
|
|
38
|
-
value: state.value,
|
|
39
|
-
}), "\u00a0" // Hack to get the span to take up space
|
|
40
|
-
);
|
|
41
|
-
setTimeout(() => {
|
|
42
|
-
edit.dispatchEvent(new Event("focus"));
|
|
43
|
-
});
|
|
44
|
-
return edit;
|
|
45
|
-
};
|
|
46
|
-
return render();
|
|
47
|
-
});
|
|
48
|
-
export default InlineEdit;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { display } from "../display.js";
|
|
2
|
-
import { div, span, ul, li, pre, code } from "../dom/html.js";
|
|
3
|
-
import { LEVEL } from "../log.js";
|
|
4
|
-
export function isHTMLLogger(logger) {
|
|
5
|
-
return logger.root != undefined;
|
|
6
|
-
}
|
|
7
|
-
export function makeHTMLLogger(name) {
|
|
8
|
-
let log;
|
|
9
|
-
const root = div(div(span(name)), (log = ul()));
|
|
10
|
-
const logger = { level: LEVEL.INFO, root };
|
|
11
|
-
function append(message) {
|
|
12
|
-
log.appendChild(li(pre(code(message))));
|
|
13
|
-
}
|
|
14
|
-
const logAt = (level) => (message) => level >= (logger.level ?? LEVEL.ERROR)
|
|
15
|
-
? append(display(message))
|
|
16
|
-
: undefined;
|
|
17
|
-
logger.debug = logAt(LEVEL.VERBOSE);
|
|
18
|
-
logger.info = logAt(LEVEL.INFO);
|
|
19
|
-
logger.warn = logAt(LEVEL.WARN);
|
|
20
|
-
logger.error = logAt(LEVEL.ERROR);
|
|
21
|
-
return logger;
|
|
22
|
-
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { FC } from "../dom/fc.js";
|
|
2
|
-
import { option, select } from "../dom/html.js";
|
|
3
|
-
export const Select = FC("jiffies-select", (el, { name, events: { change }, disabled, value, options }) => select({ name, events: { change }, disabled }, ...options.map(([v, name]) => option({ value: v, selected: value === v }, `${name}`))));
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export function loadTests(): Promise<void>;
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
export interface VirtualScrollSettings {
|
|
2
|
-
minIndex: number;
|
|
3
|
-
maxIndex: number;
|
|
4
|
-
startIndex: number;
|
|
5
|
-
itemHeight: number;
|
|
6
|
-
count: number;
|
|
7
|
-
tolerance: number;
|
|
8
|
-
}
|
|
9
|
-
export interface VirtualScrollDataAdapter<T> {
|
|
10
|
-
(offset: number, limit: number): Iterable<T>;
|
|
11
|
-
}
|
|
12
|
-
export declare function arrayAdapter<T>(data: T[]): VirtualScrollDataAdapter<T>;
|
|
13
|
-
export interface VirtualScrollProps<T, U extends HTMLElement> {
|
|
14
|
-
settings: Partial<VirtualScrollSettings>;
|
|
15
|
-
get: VirtualScrollDataAdapter<T>;
|
|
16
|
-
row: (t: T) => U;
|
|
17
|
-
}
|
|
18
|
-
export declare function fillVirtualScrollSettings(settings: Partial<VirtualScrollSettings>): VirtualScrollSettings;
|
|
19
|
-
export declare function initialState<T>(settings: VirtualScrollSettings): VirtualScrollState<T>;
|
|
20
|
-
export declare function getData<T>(minIndex: number, maxIndex: number, offset: number, limit: number, get: VirtualScrollDataAdapter<T>): T[];
|
|
21
|
-
export declare function doScroll<T>(scrollTop: number, state: VirtualScrollState<T>, get: VirtualScrollDataAdapter<T>): {
|
|
22
|
-
scrollTop: number;
|
|
23
|
-
topPaddingHeight: number;
|
|
24
|
-
bottomPaddingHeight: number;
|
|
25
|
-
data: T[];
|
|
26
|
-
};
|
|
27
|
-
interface VirtualScrollState<T, U extends HTMLElement = HTMLElement> {
|
|
28
|
-
settings: VirtualScrollSettings;
|
|
29
|
-
scrollTop: number;
|
|
30
|
-
bufferedItems: number;
|
|
31
|
-
totalHeight: number;
|
|
32
|
-
viewportHeight: number;
|
|
33
|
-
topPaddingHeight: number;
|
|
34
|
-
bottomPaddingHeight: number;
|
|
35
|
-
toleranceHeight: number;
|
|
36
|
-
data: T[];
|
|
37
|
-
rows: U[];
|
|
38
|
-
}
|
|
39
|
-
export declare const VirtualScroll: import("../dom/fc.js").FCComponentCtor<VirtualScrollProps<any, HTMLElement>, VirtualScrollState<any, HTMLElement>>;
|
|
40
|
-
export default VirtualScroll;
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import { debounce } from "../debounce.js";
|
|
2
|
-
import { FC, State } from "../dom/fc.js";
|
|
3
|
-
import { div } from "../dom/html.js";
|
|
4
|
-
export function arrayAdapter(data) {
|
|
5
|
-
return (offset, limit) => data.slice(offset, offset + limit);
|
|
6
|
-
}
|
|
7
|
-
export function fillVirtualScrollSettings(settings) {
|
|
8
|
-
const { minIndex = 0, maxIndex = Number.MAX_SAFE_INTEGER, startIndex = 0, itemHeight = 20, count = maxIndex - minIndex + 1, tolerance = count, } = settings;
|
|
9
|
-
return { minIndex, maxIndex, startIndex, itemHeight, count, tolerance };
|
|
10
|
-
}
|
|
11
|
-
export function initialState(settings) {
|
|
12
|
-
// From Denis Hilt, https://blog.logrocket.com/virtual-scrolling-core-principles-and-basic-implementation-in-react/
|
|
13
|
-
const { minIndex, maxIndex, startIndex, itemHeight, count, tolerance } = settings;
|
|
14
|
-
const bufferedItems = count + 2 * tolerance;
|
|
15
|
-
const itemsAbove = Math.max(0, startIndex - tolerance - minIndex);
|
|
16
|
-
const viewportHeight = count * itemHeight;
|
|
17
|
-
const totalHeight = (maxIndex - minIndex + 1) * itemHeight;
|
|
18
|
-
const toleranceHeight = tolerance * itemHeight;
|
|
19
|
-
const bufferHeight = viewportHeight + 2 * toleranceHeight;
|
|
20
|
-
const topPaddingHeight = itemsAbove * itemHeight;
|
|
21
|
-
const bottomPaddingHeight = totalHeight - (topPaddingHeight + bufferHeight);
|
|
22
|
-
return {
|
|
23
|
-
scrollTop: 0,
|
|
24
|
-
settings,
|
|
25
|
-
viewportHeight,
|
|
26
|
-
totalHeight,
|
|
27
|
-
toleranceHeight,
|
|
28
|
-
bufferedItems,
|
|
29
|
-
topPaddingHeight,
|
|
30
|
-
bottomPaddingHeight,
|
|
31
|
-
data: [],
|
|
32
|
-
rows: [],
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
export function getData(minIndex, maxIndex, offset, limit, get) {
|
|
36
|
-
const start = Math.max(0, minIndex, offset);
|
|
37
|
-
const end = Math.min(maxIndex, offset + limit - 1);
|
|
38
|
-
const data = get(start, end - start);
|
|
39
|
-
return [...data];
|
|
40
|
-
}
|
|
41
|
-
export function doScroll(scrollTop, state, get) {
|
|
42
|
-
const { totalHeight, toleranceHeight, bufferedItems, settings: { itemHeight, minIndex, maxIndex }, } = state;
|
|
43
|
-
const index = minIndex + Math.floor((scrollTop - toleranceHeight) / itemHeight);
|
|
44
|
-
const data = getData(minIndex, maxIndex, index, bufferedItems, get);
|
|
45
|
-
const topPaddingHeight = Math.max((index - minIndex) * itemHeight, 0);
|
|
46
|
-
const bottomPaddingHeight = Math.max(totalHeight - (topPaddingHeight + data.length * itemHeight), 0);
|
|
47
|
-
return { scrollTop, topPaddingHeight, bottomPaddingHeight, data };
|
|
48
|
-
}
|
|
49
|
-
// export interface VirtualScroll<T, U extends HTMLElement> {
|
|
50
|
-
// state: VirtualScrollState<T>;
|
|
51
|
-
// rows: UHTMLElement<U>[];
|
|
52
|
-
// }
|
|
53
|
-
export const VirtualScroll = FC("virtual-scroll", (element, props) => {
|
|
54
|
-
const settings = fillVirtualScrollSettings(props.settings);
|
|
55
|
-
const state = (element[State] = {
|
|
56
|
-
...initialState(settings),
|
|
57
|
-
...element[State],
|
|
58
|
-
});
|
|
59
|
-
const scrollTo = ({ target } = { target: state }) => {
|
|
60
|
-
const scrollTop = target?.scrollTop ?? state.topPaddingHeight;
|
|
61
|
-
const updatedSate = {
|
|
62
|
-
...state,
|
|
63
|
-
...doScroll(scrollTop, state, props.get),
|
|
64
|
-
};
|
|
65
|
-
setState(updatedSate);
|
|
66
|
-
};
|
|
67
|
-
const viewportElement = div({
|
|
68
|
-
style: { height: `${state.viewportHeight}px`, overflowY: "scroll" },
|
|
69
|
-
events: { scroll: debounce(scrollTo, 0) },
|
|
70
|
-
});
|
|
71
|
-
setTimeout(() => {
|
|
72
|
-
viewportElement.scroll({ top: state.scrollTop });
|
|
73
|
-
});
|
|
74
|
-
const setState = (newState) => {
|
|
75
|
-
state.scrollTop = newState.scrollTop;
|
|
76
|
-
state.topPaddingHeight = newState.topPaddingHeight;
|
|
77
|
-
state.bottomPaddingHeight = newState.bottomPaddingHeight;
|
|
78
|
-
state.data = newState.data;
|
|
79
|
-
state.rows = state.data.map(props.row);
|
|
80
|
-
viewportElement.update(div({
|
|
81
|
-
class: "VirtualScroll__topPadding",
|
|
82
|
-
style: { height: `${state.topPaddingHeight}px` },
|
|
83
|
-
}), ...(state.rows ?? []).map((row, i) => div({
|
|
84
|
-
class: `VirtualScroll__item_${i}`,
|
|
85
|
-
style: { height: `${settings.itemHeight}px` },
|
|
86
|
-
}, row)), div({
|
|
87
|
-
class: "VirtualScroll__bottomPadding",
|
|
88
|
-
style: { height: `${state.bottomPaddingHeight}px` },
|
|
89
|
-
}));
|
|
90
|
-
};
|
|
91
|
-
scrollTo();
|
|
92
|
-
return viewportElement;
|
|
93
|
-
});
|
|
94
|
-
export default VirtualScroll;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { State } from "../dom/fc.js";
|
|
2
|
-
import { div } from "../dom/html.js";
|
|
3
|
-
import { describe, it, expect } from "../scope/index.js";
|
|
4
|
-
import VirtualScroll, { arrayAdapter, } from "./virtual_scroll.js";
|
|
5
|
-
describe("VirtualScroll", () => {
|
|
6
|
-
it("tracks scroll position", () => {
|
|
7
|
-
const data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
|
|
8
|
-
const props = {
|
|
9
|
-
settings: { count: 3, startIndex: 2 },
|
|
10
|
-
get: arrayAdapter(data),
|
|
11
|
-
row: (i) => div(`${i}`),
|
|
12
|
-
};
|
|
13
|
-
const scroll = VirtualScroll(props);
|
|
14
|
-
expect(scroll[State]?.bufferedItems).toBe(9);
|
|
15
|
-
expect(scroll[State]?.data).toEqual([0, 1, 2, 3, 4]);
|
|
16
|
-
//expect(scroll.state.topPaddingHeight).toBe(0);
|
|
17
|
-
expect(scroll[State]?.viewportHeight).toBe(60);
|
|
18
|
-
//expect(scroll.state.totalHeight).toBe(200);
|
|
19
|
-
});
|
|
20
|
-
});
|
package/lib/esm/context.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { Err, Result } from "./result.js";
|
|
2
|
-
export declare const Enter: unique symbol;
|
|
3
|
-
export declare const Exit: unique symbol;
|
|
4
|
-
export interface Context {
|
|
5
|
-
[Enter]: () => void;
|
|
6
|
-
[Exit]: () => void;
|
|
7
|
-
}
|
|
8
|
-
export interface Operation<T, E extends Error, C extends Context> {
|
|
9
|
-
(c: C): T | Result<T, E>;
|
|
10
|
-
}
|
|
11
|
-
export interface AsyncOperation<T, E extends Error, C extends Context> {
|
|
12
|
-
(c: C): Promise<T | Result<T, E>>;
|
|
13
|
-
}
|
|
14
|
-
export declare function using<T, E extends Error, C extends Context>(context: C | (() => C) | Operation<T, E, C>, operation?: Operation<T, E, C>, normalizeError?: (e: Error | unknown | any) => Err<E>): Result<T, E>;
|
|
15
|
-
export declare function asyncUsing<T, E extends Error, C extends Context>(context: C | (() => Promise<C>), operation: AsyncOperation<T, E, C>, normalizeError?: (e: Error | unknown | any) => Err<E>): Promise<Result<T, E>>;
|
package/lib/esm/context.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { Ok, Err, isResult } from "./result.js";
|
|
2
|
-
export const Enter = Symbol("Context Enter");
|
|
3
|
-
export const Exit = Symbol("Context Exit");
|
|
4
|
-
export function using(context, operation, normalizeError = (e) => Err(e)) {
|
|
5
|
-
if (typeof context === "function") {
|
|
6
|
-
if (context.length === 1) {
|
|
7
|
-
operation = context;
|
|
8
|
-
context = {};
|
|
9
|
-
}
|
|
10
|
-
else {
|
|
11
|
-
context = context();
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
let result;
|
|
15
|
-
try {
|
|
16
|
-
context[Enter]();
|
|
17
|
-
const op = operation(context);
|
|
18
|
-
result = isResult(op) ? op : Ok(op);
|
|
19
|
-
}
|
|
20
|
-
catch (e) {
|
|
21
|
-
result = normalizeError(e);
|
|
22
|
-
}
|
|
23
|
-
finally {
|
|
24
|
-
context[Exit]();
|
|
25
|
-
}
|
|
26
|
-
return result;
|
|
27
|
-
}
|
|
28
|
-
export async function asyncUsing(context, operation, normalizeError = (e) => Err(e)) {
|
|
29
|
-
context = typeof context === "function" ? await context() : context;
|
|
30
|
-
let result;
|
|
31
|
-
try {
|
|
32
|
-
context[Enter]();
|
|
33
|
-
const op = await operation(context);
|
|
34
|
-
result = isResult(op) ? op : Ok(op);
|
|
35
|
-
}
|
|
36
|
-
catch (e) {
|
|
37
|
-
result = normalizeError(e);
|
|
38
|
-
}
|
|
39
|
-
finally {
|
|
40
|
-
context[Exit]();
|
|
41
|
-
}
|
|
42
|
-
return result;
|
|
43
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/lib/esm/context.test.js
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { Enter, Exit, using } from "./context.js";
|
|
2
|
-
import { Err, isErr, isOk, Ok, unwrap } from "./result.js";
|
|
3
|
-
import { describe, it } from "./scope/describe.js";
|
|
4
|
-
import { expect } from "./scope/expect.js";
|
|
5
|
-
describe("Context", () => {
|
|
6
|
-
it("performs an operation using a context", () => {
|
|
7
|
-
const context = TestContext();
|
|
8
|
-
const result = using(context, () => Ok(5));
|
|
9
|
-
expect(unwrap(result)).toBe(5);
|
|
10
|
-
expect(context.initialized).toBe(true);
|
|
11
|
-
expect(context.completed).toBe(true);
|
|
12
|
-
});
|
|
13
|
-
it("reports the result of a thrown error", () => {
|
|
14
|
-
const context = TestContext();
|
|
15
|
-
const result = using(context, () => {
|
|
16
|
-
throw new Error("Failed");
|
|
17
|
-
});
|
|
18
|
-
expect(isErr(result)).toBe(true);
|
|
19
|
-
expect(Err(result)).toMatchObject({
|
|
20
|
-
message: "Failed",
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
it("passes the context to the operation", () => {
|
|
24
|
-
const op = using(TestContext, ({ initialized, completed }) => ({
|
|
25
|
-
initialized,
|
|
26
|
-
completed,
|
|
27
|
-
}));
|
|
28
|
-
expect(isOk(op)).toBe(true);
|
|
29
|
-
const { completed, initialized } = unwrap(op);
|
|
30
|
-
expect(initialized).toBe(true);
|
|
31
|
-
expect(completed).toBe(false);
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
function TestContext() {
|
|
35
|
-
const context = {
|
|
36
|
-
[Enter]: () => {
|
|
37
|
-
context.initialized = true;
|
|
38
|
-
},
|
|
39
|
-
[Exit]: () => {
|
|
40
|
-
context.completed = true;
|
|
41
|
-
},
|
|
42
|
-
initialized: false,
|
|
43
|
-
completed: false,
|
|
44
|
-
};
|
|
45
|
-
return context;
|
|
46
|
-
}
|
package/lib/esm/debounce.d.ts
DELETED
package/lib/esm/debounce.js
DELETED
package/lib/esm/diff.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
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/esm/diff.js
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { range } from "./range.js";
|
|
2
|
-
import { isSome, None, Some } from "./result.js";
|
|
3
|
-
export const DiffA = Symbol("A");
|
|
4
|
-
export const DiffB = Symbol("B");
|
|
5
|
-
function doDiff(va, vb, k) {
|
|
6
|
-
if (Array.isArray(va)) {
|
|
7
|
-
// @ts-ignore
|
|
8
|
-
return diffArray(va, vb, k);
|
|
9
|
-
}
|
|
10
|
-
if (typeof va === "object") {
|
|
11
|
-
const d = diffObject(va, vb, k);
|
|
12
|
-
if (d.children.length === 0) {
|
|
13
|
-
return None();
|
|
14
|
-
}
|
|
15
|
-
else {
|
|
16
|
-
return Some(d);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
if (Object.is(va, vb)) {
|
|
20
|
-
return None();
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
// @ts-ignore
|
|
24
|
-
return { key: k, left: va, right: vb };
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
function diffArray(a, b, key) {
|
|
28
|
-
const indexes = Math.max(a.length, b.length);
|
|
29
|
-
const children = range(0, indexes)
|
|
30
|
-
.map((i) => doDiff(a[i], b[i], i))
|
|
31
|
-
.filter(isSome);
|
|
32
|
-
return children.length > 0 ? { key, children } : None();
|
|
33
|
-
}
|
|
34
|
-
function diffObject(a, b, key = "") {
|
|
35
|
-
const keys = new Set([...Object.keys(a), ...Object.keys(b)]);
|
|
36
|
-
const children = [...keys]
|
|
37
|
-
// @ts-ignore
|
|
38
|
-
.map((k) => doDiff(a[k], b[k], k))
|
|
39
|
-
.filter(isSome);
|
|
40
|
-
return {
|
|
41
|
-
key,
|
|
42
|
-
children,
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
export function diff(a, b) {
|
|
46
|
-
if (typeof a != "object" && !Object.is(a, b)) {
|
|
47
|
-
// @ts-ignore
|
|
48
|
-
return [{ key: "", left: a, right: b }];
|
|
49
|
-
}
|
|
50
|
-
return (Array.isArray(a)
|
|
51
|
-
? // @ts-ignore
|
|
52
|
-
diffArray(a, b, "") ?? { children: [] }
|
|
53
|
-
: diffObject(a, b, "")).children;
|
|
54
|
-
}
|
package/lib/esm/diff.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/lib/esm/diff.test.js
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { diff } from "./diff.js";
|
|
2
|
-
import { describe, it } from "./scope/describe.js";
|
|
3
|
-
import { expect } from "./scope/expect.js";
|
|
4
|
-
describe("diff", () => {
|
|
5
|
-
it("diffs primitives", () => {
|
|
6
|
-
const diffed = diff(1, 2);
|
|
7
|
-
expect(diffed).toEqual([{ key: "", left: 1, right: 2 }]);
|
|
8
|
-
});
|
|
9
|
-
it("diffs objects", () => {
|
|
10
|
-
const diffed = diff({ a: 1, b: 2 }, { a: 2, b: 2 });
|
|
11
|
-
expect(diffed).toEqual([{ key: "a", left: 1, right: 2 }]);
|
|
12
|
-
});
|
|
13
|
-
it("diffs nested objects", () => {
|
|
14
|
-
const diffed = diff({ a: { c: 1 }, b: 2 }, { a: { c: 2 }, b: 2 });
|
|
15
|
-
expect(diffed).toEqual([
|
|
16
|
-
{ key: "a", children: [{ key: "c", left: 1, right: 2 }] },
|
|
17
|
-
]);
|
|
18
|
-
});
|
|
19
|
-
it("diffs missing sides", () => {
|
|
20
|
-
const diffed = diff({ a: 1 }, { b: 2 });
|
|
21
|
-
expect(diffed).toEqual([
|
|
22
|
-
{ key: "a", left: 1, right: undefined },
|
|
23
|
-
{ key: "b", left: undefined, right: 2 },
|
|
24
|
-
]);
|
|
25
|
-
});
|
|
26
|
-
it("diffs arrays", () => {
|
|
27
|
-
const diffed = diff([1, 2, 3], [1, 4, 3]);
|
|
28
|
-
expect(diffed).toEqual([{ key: 1, left: 2, right: 4 }]);
|
|
29
|
-
});
|
|
30
|
-
it("diffs objects in an array", () => {
|
|
31
|
-
const diffed = diff([{ a: { b: 1 } }, { a: { b: 2 } }, { a: { b: 3 } }], [{ a: { b: 1 } }, { a: { b: 4 } }, { a: { b: 3 } }]);
|
|
32
|
-
expect(diffed).toEqual([
|
|
33
|
-
{
|
|
34
|
-
key: 1,
|
|
35
|
-
children: [{ key: "a", children: [{ key: "b", left: 2, right: 4 }] }],
|
|
36
|
-
},
|
|
37
|
-
]);
|
|
38
|
-
});
|
|
39
|
-
});
|
package/lib/esm/display.d.ts
DELETED
package/lib/esm/display.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export const isDisplay = (a) => typeof a?.toString === "function" ||
|
|
2
|
-
typeof a === "string";
|
|
3
|
-
export const display = (a) => {
|
|
4
|
-
if (isDisplay(a)) {
|
|
5
|
-
const str = a.toString();
|
|
6
|
-
if (str === "[object Object]")
|
|
7
|
-
return JSON.stringify(a);
|
|
8
|
-
return str;
|
|
9
|
-
}
|
|
10
|
-
return JSON.stringify(a);
|
|
11
|
-
};
|
|
@@ -1,11 +0,0 @@
|
|
|
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,27 +0,0 @@
|
|
|
1
|
-
import { isSide, getSize, getSide } from "./core.js";
|
|
2
|
-
export function rounded(size = "", side = "") {
|
|
3
|
-
if (isSide(size)) {
|
|
4
|
-
side = size;
|
|
5
|
-
size = "";
|
|
6
|
-
}
|
|
7
|
-
const sized = getSize(size);
|
|
8
|
-
return getSide(side).reduce((prev, curr) => {
|
|
9
|
-
if (curr === "") {
|
|
10
|
-
prev.borderRadius = sized;
|
|
11
|
-
}
|
|
12
|
-
else {
|
|
13
|
-
// @ts-ignore
|
|
14
|
-
prev[`border${curr}Radius`] = sized;
|
|
15
|
-
}
|
|
16
|
-
return prev;
|
|
17
|
-
}, {});
|
|
18
|
-
}
|
|
19
|
-
export function border({ side = "", style = "solid", radius = "", width = 1, color = "black", }) {
|
|
20
|
-
return {};
|
|
21
|
-
}
|
|
22
|
-
export function inset(width, color1 = "gray", color2 = "lightgray") {
|
|
23
|
-
return {
|
|
24
|
-
...border({ side: "tl", width, color: color1, radius: "none" }),
|
|
25
|
-
...border({ side: "br", width, color: color2, radius: "none" }),
|
|
26
|
-
};
|
|
27
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
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,28 +0,0 @@
|
|
|
1
|
-
export const Sizes = {
|
|
2
|
-
none: "0px",
|
|
3
|
-
sm: "0.125rem",
|
|
4
|
-
"": "0.25rem",
|
|
5
|
-
md: "0.375rem",
|
|
6
|
-
lg: "0.5rem",
|
|
7
|
-
xl: "0.75rem",
|
|
8
|
-
"2xl": "1rem",
|
|
9
|
-
"3xl": "1.5rem",
|
|
10
|
-
full: "9999px",
|
|
11
|
-
};
|
|
12
|
-
export const Sides = {
|
|
13
|
-
"": "",
|
|
14
|
-
t: "Top",
|
|
15
|
-
r: "Right",
|
|
16
|
-
l: "Left",
|
|
17
|
-
b: "Bottom",
|
|
18
|
-
tl: "TopLeft",
|
|
19
|
-
tr: "TopRight",
|
|
20
|
-
bl: "BottomLeft",
|
|
21
|
-
br: "BottomRight",
|
|
22
|
-
};
|
|
23
|
-
export const Widths = {
|
|
24
|
-
"1/4": "25%",
|
|
25
|
-
"1/2": "50%",
|
|
26
|
-
"3/4": "75%",
|
|
27
|
-
full: "100%",
|
|
28
|
-
};
|
|
@@ -1,5 +0,0 @@
|
|
|
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[];
|