@davidsouther/jiffies 1.0.0-beta.1 → 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 +0 -0
- package/lib/cjs/assert.js +40 -0
- package/{build → lib/cjs}/case.d.ts +0 -0
- package/lib/cjs/case.js +9 -0
- package/{build → lib/cjs}/components/button_bar.d.ts +1 -1
- package/lib/cjs/components/button_bar.js +29 -0
- package/{build → lib/cjs}/components/inline_edit.d.ts +1 -1
- package/lib/cjs/components/inline_edit.js +51 -0
- package/{build → lib/cjs}/components/logger.d.ts +2 -3
- 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 +3 -4
- package/lib/cjs/components/virtual_scroll.js +102 -0
- package/{build → lib/cjs}/components/virtual_scroll.test.d.ts +0 -0
- package/lib/cjs/components/virtual_scroll.test.js +22 -0
- package/{build → lib/cjs}/context.d.ts +0 -0
- package/lib/cjs/context.js +48 -0
- package/{build → lib/cjs}/context.test.d.ts +0 -0
- package/lib/cjs/context.test.js +48 -0
- package/{build → lib/cjs}/debounce.d.ts +0 -0
- 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/index.d.ts → lib/cjs/diff.test.d.ts} +0 -0
- package/lib/cjs/diff.test.js +41 -0
- package/{build → lib/cjs}/display.d.ts +0 -0
- package/lib/cjs/display.js +16 -0
- package/{build → lib/cjs}/dom/css/border.d.ts +0 -0
- package/lib/cjs/dom/css/border.js +33 -0
- package/{build → lib/cjs}/dom/css/constants.d.ts +0 -0
- package/lib/cjs/dom/css/constants.js +31 -0
- package/{build → lib/cjs}/dom/css/core.d.ts +0 -0
- package/lib/cjs/dom/css/core.js +31 -0
- package/{build → lib/cjs}/dom/css/fstyle.d.ts +0 -0
- package/lib/cjs/dom/css/fstyle.js +36 -0
- package/{build → lib/cjs}/dom/css/sizing.d.ts +0 -0
- package/lib/cjs/dom/css/sizing.js +14 -0
- package/lib/cjs/dom/dom.d.ts +27 -0
- package/lib/cjs/dom/dom.js +110 -0
- package/{build → lib/cjs}/dom/fc.d.ts +5 -5
- package/lib/cjs/dom/fc.js +39 -0
- package/{build → lib/cjs}/dom/fc.test.d.ts +0 -0
- package/lib/cjs/dom/fc.test.js +23 -0
- package/lib/cjs/dom/form/form.app.d.ts +1 -0
- package/lib/cjs/dom/form/form.app.js +27 -0
- package/lib/cjs/dom/form/form.d.ts +26 -0
- 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 +0 -0
- package/lib/cjs/dom/html.d.ts +113 -0
- package/lib/cjs/dom/html.js +119 -0
- package/{build → lib/cjs}/dom/html.test.d.ts +0 -0
- 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/components/index.js → lib/cjs/dom/observable.test.d.ts} +0 -0
- package/lib/cjs/dom/observable.test.js +35 -0
- package/lib/cjs/dom/provide.d.ts +3 -0
- package/lib/cjs/dom/provide.js +12 -0
- package/lib/cjs/dom/router/link.d.ts +6 -0
- package/lib/cjs/dom/router/link.js +7 -0
- package/{build → lib/cjs}/dom/router/router.d.ts +3 -3
- package/lib/cjs/dom/router/router.js +52 -0
- package/lib/cjs/dom/svg.d.ts +64 -0
- 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 +0 -0
- 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 +0 -0
- package/{build → lib/cjs}/dom/types/html.d.ts +1 -1
- package/lib/cjs/dom/types/html.js +2 -0
- package/{build → lib/cjs}/dom/xml.d.ts +0 -0
- package/lib/cjs/dom/xml.js +8 -0
- package/lib/cjs/equal.d.ts +5 -0
- package/lib/cjs/equal.js +43 -0
- package/{build → lib/cjs}/equal.test.d.ts +0 -0
- package/lib/cjs/equal.test.js +22 -0
- package/{build → lib/cjs}/flags.d.ts +0 -0
- package/lib/cjs/flags.js +52 -0
- package/{build → lib/cjs}/flags.test.d.ts +0 -0
- package/lib/cjs/flags.test.js +37 -0
- package/lib/cjs/fs.d.ts +48 -0
- package/lib/cjs/fs.js +151 -0
- package/{build/components/test.d.ts → lib/cjs/fs.test.d.ts} +0 -0
- package/lib/cjs/fs.test.js +45 -0
- package/{build → lib/cjs}/generator.d.ts +0 -0
- package/lib/cjs/generator.js +14 -0
- package/{build → lib/cjs}/generator.test.d.ts +0 -0
- package/lib/cjs/generator.test.js +26 -0
- package/{build → lib/cjs}/is_browser.d.ts +0 -0
- package/lib/cjs/is_browser.js +4 -0
- package/{build → lib/cjs}/loader.d.mts +0 -0
- package/lib/cjs/loader.mjs +40 -0
- package/{build → lib/cjs}/lock.d.ts +0 -0
- package/lib/cjs/lock.js +27 -0
- package/{build → lib/cjs}/lock.test.d.ts +0 -0
- package/lib/cjs/lock.test.js +18 -0
- package/{build → lib/cjs}/log.d.ts +0 -0
- 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/{build/dom/test.d.ts → lib/cjs/observable/observable.test.d.ts} +0 -0
- package/lib/cjs/observable/observable.test.js +65 -0
- package/{build → lib/cjs}/range.d.ts +0 -0
- package/lib/cjs/range.js +11 -0
- package/{build → lib/cjs}/result.d.ts +11 -11
- package/lib/cjs/result.js +80 -0
- package/{build → lib/cjs}/result.test.d.ts +0 -0
- package/lib/cjs/result.test.js +73 -0
- package/{build → lib/cjs}/safe.d.ts +0 -0
- package/lib/cjs/safe.js +14 -0
- package/{build → lib/cjs}/scope/describe.d.ts +4 -0
- package/lib/cjs/scope/describe.js +73 -0
- package/{build → lib/cjs}/scope/display/console.d.ts +0 -0
- package/lib/cjs/scope/display/console.js +25 -0
- package/{build → lib/cjs}/scope/display/dom.d.ts +2 -2
- package/lib/cjs/scope/display/dom.js +30 -0
- package/{build → lib/cjs}/scope/display/junit.d.ts +0 -0
- package/lib/cjs/scope/display/junit.js +21 -0
- package/{build → lib/cjs}/scope/execute.d.ts +1 -1
- package/lib/cjs/scope/execute.js +91 -0
- package/{build → lib/cjs}/scope/expect.d.ts +1 -1
- package/lib/cjs/scope/expect.js +114 -0
- package/{build → lib/cjs}/scope/fix.d.ts +0 -0
- package/lib/cjs/scope/fix.js +26 -0
- package/{build → lib/cjs}/scope/index.d.ts +0 -0
- package/lib/cjs/scope/index.js +15 -0
- package/{build → lib/cjs}/scope/scope.d.ts +0 -0
- 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 +0 -0
- package/lib/cjs/server/http/apps.js +27 -0
- package/lib/cjs/server/http/css.d.ts +5 -0
- package/lib/cjs/server/http/css.js +54 -0
- package/{build → lib/cjs}/server/http/index.d.ts +0 -0
- package/lib/cjs/server/http/index.js +77 -0
- package/{build → lib/cjs}/server/http/response.d.ts +0 -0
- package/lib/cjs/server/http/response.js +45 -0
- package/{build → lib/cjs}/server/http/sitemap.d.ts +0 -0
- package/lib/cjs/server/http/sitemap.js +46 -0
- package/{build → lib/cjs}/server/http/static.d.ts +0 -0
- package/lib/cjs/server/http/static.js +25 -0
- package/{build → lib/cjs}/server/http/typescript.d.ts +0 -0
- package/lib/cjs/server/http/typescript.js +44 -0
- package/{build → lib/cjs}/server/main.d.ts +0 -0
- package/lib/cjs/server/main.js +14 -0
- package/{build → lib/cjs}/test.d.mts +0 -0
- package/lib/cjs/test.mjs +28 -0
- package/lib/cjs/test_all.d.ts +9 -0
- package/lib/cjs/test_all.js +30 -0
- package/{build → lib/cjs}/transpile.d.mts +0 -0
- 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 +1 -1
- package/lib/esm/case.d.ts +1 -0
- package/{build → lib/esm}/case.js +0 -0
- package/lib/esm/components/button_bar.d.ts +8 -0
- package/lib/esm/components/button_bar.js +27 -0
- package/lib/esm/components/inline_edit.d.ts +12 -0
- package/{build → lib/esm}/components/inline_edit.js +3 -3
- package/lib/esm/components/logger.d.ts +6 -0
- package/{build → lib/esm}/components/logger.js +3 -3
- package/lib/esm/components/select.d.ts +10 -0
- package/{build → lib/esm}/components/select.js +2 -2
- 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 +3 -3
- package/{build/dom/types/html.js → lib/esm/components/virtual_scroll.test.d.ts} +0 -0
- package/{build → lib/esm}/components/virtual_scroll.test.js +3 -4
- package/lib/esm/context.d.ts +15 -0
- package/{build → lib/esm}/context.js +3 -3
- package/{build/scope/scope.js → lib/esm/context.test.d.ts} +0 -0
- package/{build → lib/esm}/context.test.js +0 -0
- package/lib/esm/debounce.d.ts +1 -0
- package/{build → lib/esm}/debounce.js +0 -0
- package/lib/esm/diff.d.ts +15 -0
- package/lib/esm/diff.js +54 -0
- package/{build/test_all.d.ts → lib/esm/diff.test.d.ts} +0 -0
- package/lib/esm/diff.test.js +39 -0
- package/lib/esm/display.d.ts +5 -0
- package/lib/esm/display.js +11 -0
- package/lib/esm/dom/css/border.d.ts +11 -0
- package/{build → lib/esm}/dom/css/border.js +0 -0
- package/lib/esm/dom/css/constants.d.ts +31 -0
- package/{build → lib/esm}/dom/css/constants.js +0 -0
- package/lib/esm/dom/css/core.d.ts +5 -0
- package/{build → lib/esm}/dom/css/core.js +0 -0
- package/lib/esm/dom/css/fstyle.d.ts +5 -0
- package/{build → lib/esm}/dom/css/fstyle.js +0 -0
- package/lib/esm/dom/css/sizing.d.ts +5 -0
- package/{build → lib/esm}/dom/css/sizing.js +0 -0
- package/lib/esm/dom/dom.d.ts +27 -0
- package/{build → lib/esm}/dom/dom.js +44 -34
- package/lib/esm/dom/fc.d.ts +14 -0
- package/{build → lib/esm}/dom/fc.js +1 -1
- package/lib/esm/dom/fc.test.d.ts +1 -0
- package/{build → lib/esm}/dom/fc.test.js +0 -0
- package/lib/esm/dom/form/form.app.d.ts +1 -0
- package/{build → lib/esm}/dom/form/form.app.js +0 -0
- package/lib/esm/dom/form/form.d.ts +26 -0
- package/{build → lib/esm}/dom/form/form.js +14 -5
- 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 +0 -0
- package/lib/esm/dom/html.test.d.ts +1 -0
- package/{build → lib/esm}/dom/html.test.js +4 -4
- 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/lib/esm/dom/provide.js +7 -0
- package/lib/esm/dom/router/link.d.ts +6 -0
- package/{build → lib/esm}/dom/router/link.js +0 -0
- package/lib/esm/dom/router/router.d.ts +12 -0
- package/{build → lib/esm}/dom/router/router.js +0 -0
- package/lib/esm/dom/svg.d.ts +64 -0
- package/{build → lib/esm}/dom/svg.js +0 -0
- 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 +0 -0
- 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/lib/esm/dom/types/html.js +1 -0
- package/lib/esm/dom/xml.d.ts +1 -0
- package/{build → lib/esm}/dom/xml.js +1 -2
- package/lib/esm/equal.d.ts +5 -0
- package/lib/esm/equal.js +37 -0
- package/lib/esm/equal.test.d.ts +1 -0
- package/{build → lib/esm}/equal.test.js +0 -0
- package/lib/esm/flags.d.ts +7 -0
- package/{build → lib/esm}/flags.js +1 -1
- package/lib/esm/flags.test.d.ts +1 -0
- package/{build → lib/esm}/flags.test.js +0 -0
- package/lib/esm/fs.d.ts +48 -0
- package/lib/esm/fs.js +144 -0
- package/lib/esm/fs.test.d.ts +1 -0
- package/lib/esm/fs.test.js +43 -0
- package/lib/esm/generator.d.ts +1 -0
- package/{build → lib/esm}/generator.js +0 -0
- package/lib/esm/generator.test.d.ts +1 -0
- package/{build → lib/esm}/generator.test.js +0 -0
- package/lib/esm/is_browser.d.ts +1 -0
- package/{build → lib/esm}/is_browser.js +0 -0
- package/lib/esm/loader.d.mts +22 -0
- package/{build → lib/esm}/loader.mjs +0 -0
- package/lib/esm/lock.d.ts +1 -0
- package/{build → lib/esm}/lock.js +0 -0
- package/lib/esm/lock.test.d.ts +1 -0
- package/{build → lib/esm}/lock.test.js +0 -0
- package/lib/esm/log.d.ts +26 -0
- package/{build → lib/esm}/log.js +16 -4
- 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 +0 -0
- package/lib/esm/result.d.ts +31 -0
- package/{build → lib/esm}/result.js +3 -3
- package/lib/esm/result.test.d.ts +1 -0
- package/{build → lib/esm}/result.test.js +0 -0
- package/lib/esm/safe.d.ts +1 -0
- package/{build → lib/esm}/safe.js +0 -0
- package/lib/esm/scope/describe.d.ts +18 -0
- package/{build → lib/esm}/scope/describe.js +14 -6
- package/lib/esm/scope/display/console.d.ts +2 -0
- package/{build → lib/esm}/scope/display/console.js +0 -0
- package/lib/esm/scope/display/dom.d.ts +3 -0
- package/{build → lib/esm}/scope/display/dom.js +0 -0
- package/lib/esm/scope/display/junit.d.ts +2 -0
- package/{build → lib/esm}/scope/display/junit.js +0 -0
- package/lib/esm/scope/execute.d.ts +12 -0
- package/{build → lib/esm}/scope/execute.js +3 -3
- package/lib/esm/scope/expect.d.ts +23 -0
- package/{build → lib/esm}/scope/expect.js +4 -3
- package/lib/esm/scope/fix.d.ts +4 -0
- package/{build → lib/esm}/scope/fix.js +0 -0
- package/{build/scope/index.js → lib/esm/scope/index.d.ts} +0 -0
- package/lib/esm/scope/index.js +3 -0
- package/lib/esm/scope/scope.d.ts +17 -0
- package/lib/esm/scope/scope.js +1 -0
- 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 +0 -0
- package/lib/esm/server/http/css.d.ts +5 -0
- package/lib/esm/server/http/css.js +50 -0
- package/lib/esm/server/http/index.d.ts +21 -0
- package/{build → lib/esm}/server/http/index.js +4 -2
- package/lib/esm/server/http/response.d.ts +4 -0
- package/{build → lib/esm}/server/http/response.js +6 -3
- package/lib/esm/server/http/sitemap.d.ts +2 -0
- package/{build → lib/esm}/server/http/sitemap.js +0 -0
- package/lib/esm/server/http/static.d.ts +2 -0
- package/{build → lib/esm}/server/http/static.js +0 -0
- package/lib/esm/server/http/typescript.d.ts +5 -0
- package/{build → lib/esm}/server/http/typescript.js +0 -0
- package/lib/esm/server/main.d.ts +2 -0
- package/{build → lib/esm}/server/main.js +5 -2
- 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/lib/esm/test_all.js +28 -0
- package/lib/esm/transpile.d.mts +3 -0
- package/{build → lib/esm}/transpile.mjs +0 -0
- package/lib/esm/tsconfig.tsbuildinfo +1 -0
- package/package.json +18 -16
- package/src/assert.ts +1 -1
- package/src/components/button_bar.ts +33 -27
- package/src/components/inline_edit.ts +3 -3
- package/src/components/logger.ts +5 -6
- package/src/components/select.ts +3 -3
- package/src/components/test.js +3 -2
- package/src/components/virtual_scroll.test.ts +4 -4
- package/src/components/virtual_scroll.ts +8 -8
- package/src/context.ts +3 -3
- package/src/diff.test.ts +48 -0
- package/src/diff.ts +84 -0
- package/src/display.ts +8 -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 +73 -60
- package/src/dom/fc.test.ts +3 -3
- package/src/dom/fc.ts +11 -10
- package/src/dom/form/form.app.ts +2 -2
- package/src/dom/form/form.ts +33 -10
- package/src/dom/html.test.ts +8 -8
- package/src/dom/html.ts +7 -10
- package/src/dom/observable.test.ts +43 -0
- package/src/dom/observable.ts +11 -0
- package/src/dom/provide.ts +11 -0
- package/src/dom/router/link.ts +2 -2
- package/src/dom/router/router.ts +5 -5
- package/src/dom/svg.ts +1 -1
- package/src/dom/test.ts +8 -2
- package/src/dom/types/html.ts +1 -1
- package/src/dom/xml.ts +1 -2
- package/src/equal.ts +22 -11
- package/src/flags.ts +1 -1
- package/src/fs.test.ts +53 -0
- package/src/fs.ts +180 -0
- package/src/index.html +16 -13
- package/src/log.ts +8 -4
- package/src/observable/_notes +21 -8
- package/src/observable/event.ts +93 -0
- package/src/observable/observable.test.ts +73 -0
- package/src/observable/observable.ts +463 -0
- package/src/pico/_variables.scss +66 -0
- package/src/pico/components/_accordion.scss +112 -0
- package/src/pico/components/_button-group.scss +51 -0
- package/src/pico/components/_card.scss +47 -0
- package/src/pico/components/_dropdown.scss +203 -0
- package/src/pico/components/_modal.scss +181 -0
- package/src/pico/components/_nav.scss +79 -0
- package/src/pico/components/_progress.scss +70 -0
- package/src/pico/components/_property.scss +34 -0
- package/src/pico/content/_button.scss +152 -0
- package/src/pico/content/_code.scss +63 -0
- package/src/pico/content/_embedded.scss +0 -0
- package/src/pico/content/_form-alt.scss +276 -0
- package/src/pico/content/_form.scss +259 -0
- package/src/pico/content/_misc.scss +0 -0
- package/src/pico/content/_table.scss +28 -0
- package/src/pico/content/_toggle.scss +132 -0
- package/src/pico/content/_typography.scss +232 -0
- package/src/pico/layout/_container.scss +40 -0
- package/src/pico/layout/_document.scss +0 -0
- package/src/pico/layout/_flex.scss +46 -0
- package/src/pico/layout/_grid.scss +24 -0
- package/src/pico/layout/_scroller.scss +16 -0
- package/src/pico/layout/_section.scss +8 -0
- package/src/pico/layout/_sectioning.scss +55 -0
- package/src/pico/pico.scss +60 -0
- package/src/pico/reset/_accessibility.scss +34 -0
- package/src/pico/reset/_button.scss +17 -0
- package/src/pico/reset/_code.scss +15 -0
- package/src/pico/reset/_document.scss +48 -0
- package/src/pico/reset/_embedded.scss +39 -0
- package/src/pico/reset/_form.scss +97 -0
- package/src/pico/reset/_misc.scss +23 -0
- package/src/pico/reset/_nav.scss +5 -0
- package/src/pico/reset/_progress.scss +4 -0
- package/src/pico/reset/_table.scss +8 -0
- package/src/pico/reset/_typography.scss +25 -0
- package/src/pico/themes/default/_colors.scss +65 -0
- package/src/pico/themes/default/_dark.scss +148 -0
- package/src/pico/themes/default/_light.scss +149 -0
- package/src/pico/themes/default/_styles.scss +272 -0
- package/src/pico/themes/default.scss +34 -0
- package/src/pico/utilities/_accessibility.scss +3 -0
- package/src/pico/utilities/_loading.scss +52 -0
- package/src/pico/utilities/_reduce-motion.scss +27 -0
- package/src/pico/utilities/_tooltip.scss +101 -0
- package/src/result.ts +17 -21
- package/src/scope/describe.ts +16 -6
- package/src/scope/display/console.ts +4 -4
- package/src/scope/display/dom.ts +7 -7
- package/src/scope/display/junit.ts +3 -3
- package/src/scope/execute.ts +5 -8
- package/src/scope/expect.ts +12 -11
- package/src/scope/state.ts +10 -0
- package/src/server/http/css.ts +65 -0
- package/src/server/http/index.ts +4 -2
- package/src/server/http/response.ts +7 -4
- 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 +20 -9
- package/src/zip/spec.txt +3260 -0
- package/build/components/button_bar.js +0 -16
- package/build/components/select.d.ts +0 -13
- package/build/components/test.js +0 -2
- package/build/display.js +0 -3
- package/build/dom/dom.d.ts +0 -27
- package/build/dom/form/form.app.d.ts +0 -1
- package/build/dom/form/form.d.ts +0 -25
- package/build/dom/html.d.ts +0 -117
- package/build/dom/router/link.d.ts +0 -6
- package/build/dom/svg.d.ts +0 -64
- package/build/dom/test.js +0 -2
- package/build/equal.d.ts +0 -4
- package/build/equal.js +0 -22
- package/build/index.d.ts +0 -13
- package/build/index.js +0 -13
- package/build/parcel_resolver.d.ts +0 -3
- package/build/parcel_resolver.js +0 -19
- package/build/test.mjs +0 -23
- package/build/test_all.js +0 -19
- package/src/observable/observable._js +0 -175
|
@@ -0,0 +1,40 @@
|
|
|
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;
|
|
@@ -5,7 +5,7 @@ export function arrayAdapter(data) {
|
|
|
5
5
|
return (offset, limit) => data.slice(offset, offset + limit);
|
|
6
6
|
}
|
|
7
7
|
export function fillVirtualScrollSettings(settings) {
|
|
8
|
-
const { minIndex = 0, maxIndex =
|
|
8
|
+
const { minIndex = 0, maxIndex = Number.MAX_SAFE_INTEGER, startIndex = 0, itemHeight = 20, count = maxIndex - minIndex + 1, tolerance = count, } = settings;
|
|
9
9
|
return { minIndex, maxIndex, startIndex, itemHeight, count, tolerance };
|
|
10
10
|
}
|
|
11
11
|
export function initialState(settings) {
|
|
@@ -76,11 +76,11 @@ export const VirtualScroll = FC("virtual-scroll", (element, props) => {
|
|
|
76
76
|
state.topPaddingHeight = newState.topPaddingHeight;
|
|
77
77
|
state.bottomPaddingHeight = newState.bottomPaddingHeight;
|
|
78
78
|
state.data = newState.data;
|
|
79
|
-
|
|
79
|
+
state.rows = state.data.map(props.row);
|
|
80
80
|
viewportElement.update(div({
|
|
81
81
|
class: "VirtualScroll__topPadding",
|
|
82
82
|
style: { height: `${state.topPaddingHeight}px` },
|
|
83
|
-
}), ...(
|
|
83
|
+
}), ...(state.rows ?? []).map((row, i) => div({
|
|
84
84
|
class: `VirtualScroll__item_${i}`,
|
|
85
85
|
style: { height: `${settings.itemHeight}px` },
|
|
86
86
|
}, row)), div({
|
|
File without changes
|
|
@@ -10,12 +10,11 @@ describe("VirtualScroll", () => {
|
|
|
10
10
|
get: arrayAdapter(data),
|
|
11
11
|
row: (i) => div(`${i}`),
|
|
12
12
|
};
|
|
13
|
-
// @ts-ignore TODO(TFC)
|
|
14
13
|
const scroll = VirtualScroll(props);
|
|
15
|
-
expect(scroll[State]
|
|
16
|
-
expect(scroll[State]
|
|
14
|
+
expect(scroll[State]?.bufferedItems).toBe(9);
|
|
15
|
+
expect(scroll[State]?.data).toEqual([0, 1, 2, 3, 4]);
|
|
17
16
|
//expect(scroll.state.topPaddingHeight).toBe(0);
|
|
18
|
-
expect(scroll[State]
|
|
17
|
+
expect(scroll[State]?.viewportHeight).toBe(60);
|
|
19
18
|
//expect(scroll.state.totalHeight).toBe(200);
|
|
20
19
|
});
|
|
21
20
|
});
|
|
@@ -0,0 +1,15 @@
|
|
|
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>>;
|
|
@@ -2,8 +2,8 @@ import { Ok, Err, isResult } from "./result.js";
|
|
|
2
2
|
export const Enter = Symbol("Context Enter");
|
|
3
3
|
export const Exit = Symbol("Context Exit");
|
|
4
4
|
export function using(context, operation, normalizeError = (e) => Err(e)) {
|
|
5
|
-
if (typeof context
|
|
6
|
-
if (context.length
|
|
5
|
+
if (typeof context === "function") {
|
|
6
|
+
if (context.length === 1) {
|
|
7
7
|
operation = context;
|
|
8
8
|
context = {};
|
|
9
9
|
}
|
|
@@ -26,7 +26,7 @@ export function using(context, operation, normalizeError = (e) => Err(e)) {
|
|
|
26
26
|
return result;
|
|
27
27
|
}
|
|
28
28
|
export async function asyncUsing(context, operation, normalizeError = (e) => Err(e)) {
|
|
29
|
-
context = typeof context
|
|
29
|
+
context = typeof context === "function" ? await context() : context;
|
|
30
30
|
let result;
|
|
31
31
|
try {
|
|
32
32
|
context[Enter]();
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function debounce(fn: (...args: any[]) => any, ms?: number): (...args: Parameters<typeof fn>) => ReturnType<typeof fn>;
|
|
File without changes
|
|
@@ -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/esm/diff.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
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
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,39 @@
|
|
|
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
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const isDisplay = (/** @type unknown */ 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
|
+
};
|
|
@@ -0,0 +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): {};
|
|
File without changes
|
|
@@ -0,0 +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;
|
|
File without changes
|
|
@@ -0,0 +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[];
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +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 | 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 {};
|
|
@@ -4,10 +4,10 @@ function isAttrs(attrs) {
|
|
|
4
4
|
if (!attrs) {
|
|
5
5
|
return false;
|
|
6
6
|
}
|
|
7
|
-
if (typeof attrs === "
|
|
8
|
-
return
|
|
7
|
+
if (typeof attrs === "object") {
|
|
8
|
+
return !attrs.nodeType;
|
|
9
9
|
}
|
|
10
|
-
return
|
|
10
|
+
return false;
|
|
11
11
|
}
|
|
12
12
|
export function normalizeArguments(attrs, children = [], defaultAttrs = {}) {
|
|
13
13
|
let attributes;
|
|
@@ -30,11 +30,13 @@ export function update(element, attrs, children) {
|
|
|
30
30
|
const $events = (element[Events] ??= new Map());
|
|
31
31
|
const { style = {}, events = {}, ...rest } = attrs;
|
|
32
32
|
Object.entries(events).forEach(([k, v]) => {
|
|
33
|
-
if (v === null
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
if (v === null) {
|
|
34
|
+
if ($events.has(k)) {
|
|
35
|
+
const listener = $events.get(k);
|
|
36
|
+
element.removeEventListener(k, listener);
|
|
37
|
+
}
|
|
36
38
|
}
|
|
37
|
-
else if (
|
|
39
|
+
else if (v !== undefined) {
|
|
38
40
|
element.addEventListener(k, v);
|
|
39
41
|
$events.set(k, v);
|
|
40
42
|
}
|
|
@@ -52,42 +54,50 @@ export function update(element, attrs, children) {
|
|
|
52
54
|
}
|
|
53
55
|
}
|
|
54
56
|
Object.entries(rest).forEach(([k, v]) => {
|
|
55
|
-
if (k === "class"
|
|
56
|
-
v.
|
|
57
|
+
if (k === "class") {
|
|
58
|
+
v = Array.isArray(v)
|
|
59
|
+
? v
|
|
60
|
+
: (typeof v === "string" ? v : `${v}`).split(/\s+/m);
|
|
61
|
+
v
|
|
57
62
|
.filter((s) => s !== "")
|
|
58
|
-
.forEach((c) =>
|
|
63
|
+
.forEach((c) => {
|
|
64
|
+
if (c.startsWith("!")) {
|
|
65
|
+
element.classList.remove(c.substring(1));
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
element.classList.add(c);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
return;
|
|
59
72
|
}
|
|
60
|
-
|
|
73
|
+
const useNamespace = element.namespaceURI &&
|
|
61
74
|
element.namespaceURI != "http://www.w3.org/1999/xhtml";
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
element.removeAttributeNS(element.namespaceURI, k);
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
element.setAttributeNS(element.namespaceURI, k, v);
|
|
76
|
-
}
|
|
75
|
+
const remove = !v;
|
|
76
|
+
if (useNamespace) {
|
|
77
|
+
if (remove) {
|
|
78
|
+
element.removeAttributeNS(element.namespaceURI, k);
|
|
79
|
+
}
|
|
80
|
+
else if (v === true) {
|
|
81
|
+
element.setAttributeNS(element.namespaceURI, k, k);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
element.setAttributeNS(element.namespaceURI, k, v);
|
|
77
85
|
}
|
|
78
86
|
}
|
|
79
87
|
else {
|
|
80
|
-
|
|
81
|
-
|
|
88
|
+
if (remove) {
|
|
89
|
+
element.removeAttribute(k);
|
|
90
|
+
}
|
|
91
|
+
else if (v === true) {
|
|
92
|
+
element.setAttribute(k, k);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
element.setAttribute(k, v);
|
|
96
|
+
}
|
|
82
97
|
}
|
|
83
98
|
});
|
|
84
99
|
if (children?.length > 0) {
|
|
85
|
-
|
|
86
|
-
element.replaceChildren();
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
element.replaceChildren(...children);
|
|
90
|
-
}
|
|
100
|
+
element.replaceChildren(...(children[0] === CLEAR ? [] : children));
|
|
91
101
|
}
|
|
92
102
|
element.update ??= (attrs, ...children) => update(element, ...normalizeArguments(attrs, children));
|
|
93
103
|
return element;
|
|
@@ -0,0 +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>;
|
|
@@ -18,11 +18,11 @@ export function FC(name, component) {
|
|
|
18
18
|
}
|
|
19
19
|
this.#attrs = { ...this.#attrs, ...attrs };
|
|
20
20
|
// Apply updates from the attrs to the dom node itself
|
|
21
|
-
// @ts-ignore
|
|
22
21
|
update(this, this.#attrs, []);
|
|
23
22
|
// Re-run the component function using new element, attrs, and children.
|
|
24
23
|
const replace = [component(this, this.#attrs, this.#children)];
|
|
25
24
|
this.replaceChildren(...replace.flat());
|
|
25
|
+
return this;
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
customElements.define(name, FCImpl);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const App: () => HTMLElement;
|
|
File without changes
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { DenormChildren } from "../dom.js";
|
|
2
|
+
import { label } from "../html.js";
|
|
3
|
+
import { FormAttributes, InputAttributes, LabelAttributes, OptionAttributes, SelectAttributes } from "../types/html";
|
|
4
|
+
export declare const Form: (attrs: FormAttributes, ...children: DenormChildren[]) => HTMLFormElement;
|
|
5
|
+
export declare const Input: (attrs: InputAttributes, ...children: DenormChildren[]) => HTMLLabelElement;
|
|
6
|
+
export declare const Select: (attrs: {
|
|
7
|
+
options: string[] | {};
|
|
8
|
+
selected?: string;
|
|
9
|
+
} & SelectAttributes & LabelAttributes) => HTMLLabelElement;
|
|
10
|
+
export declare const Button: () => void;
|
|
11
|
+
declare const prepareOptions: (attrs: string[] | Record<string, string | {
|
|
12
|
+
label: string;
|
|
13
|
+
disabled?: boolean | undefined;
|
|
14
|
+
selected?: boolean | undefined;
|
|
15
|
+
}>, selected?: string) => Parameters<typeof Option>[0][];
|
|
16
|
+
export declare const Option: (attrs: OptionAttributes) => HTMLOptionElement;
|
|
17
|
+
export declare const Dropdown: (attrs: SelectAttributes | {
|
|
18
|
+
selected?: string;
|
|
19
|
+
}, ...options: Parameters<typeof prepareOptions>[0][]) => HTMLLabelElement;
|
|
20
|
+
export declare const Radios: () => void;
|
|
21
|
+
export declare const Checks: () => void;
|
|
22
|
+
export declare const Switches: () => void;
|
|
23
|
+
export declare const Radio: (attrs: Omit<InputAttributes, "type">) => HTMLLabelElement;
|
|
24
|
+
export declare const Checkbox: (attrs: Omit<InputAttributes, "type">) => HTMLLabelElement;
|
|
25
|
+
export declare const Switch: () => HTMLLabelElement;
|
|
26
|
+
export {};
|
|
@@ -10,13 +10,22 @@ export const Form = (attrs, ...children) => {
|
|
|
10
10
|
return form(attrs, ...children);
|
|
11
11
|
};
|
|
12
12
|
export const Input = (attrs, ...children) => label(input(attrs), ...children);
|
|
13
|
-
export const Select = ({
|
|
13
|
+
export const Select = (attrs) => label({ style: attrs.style ?? {} }, select({ events: attrs.events ?? {} }, ...prepareOptions(attrs.options, attrs.selected).map(Option)));
|
|
14
14
|
export const Button = () => { };
|
|
15
|
-
const prepareOptions = (attrs) => Array.isArray(attrs)
|
|
16
|
-
? attrs.map((value) => ({
|
|
17
|
-
|
|
15
|
+
const prepareOptions = (attrs, selected) => Array.isArray(attrs)
|
|
16
|
+
? attrs.map((value) => ({
|
|
17
|
+
value,
|
|
18
|
+
label: value,
|
|
19
|
+
selected: selected == value,
|
|
20
|
+
}))
|
|
21
|
+
: Object.entries(attrs).map(([value, label]) => typeof label === "string"
|
|
22
|
+
? { value, label, selected: selected === value }
|
|
23
|
+
: { value, ...label });
|
|
18
24
|
export const Option = (attrs) => option(attrs);
|
|
19
|
-
export const Dropdown = (attrs) => {
|
|
25
|
+
export const Dropdown = (attrs, ...options) => Select({
|
|
26
|
+
...attrs,
|
|
27
|
+
options: typeof options[0] == "string" ? options : options[0],
|
|
28
|
+
});
|
|
20
29
|
export const Radios = () => { };
|
|
21
30
|
export const Checks = () => { };
|
|
22
31
|
export const Switches = () => { };
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|