@flyingrobots/bijou-tui 7.0.0 → 7.2.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/README.md +27 -4
- package/dist/accordion.d.ts +3 -108
- package/dist/accordion.d.ts.map +1 -1
- package/dist/accordion.js +2 -161
- package/dist/accordion.js.map +1 -1
- package/dist/accordion.part01.d.ts +25 -0
- package/dist/accordion.part01.d.ts.map +1 -0
- package/dist/accordion.part01.js +61 -0
- package/dist/accordion.part01.js.map +1 -0
- package/dist/accordion.part02.d.ts +8 -0
- package/dist/accordion.part02.d.ts.map +1 -0
- package/dist/accordion.part02.js +15 -0
- package/dist/accordion.part02.js.map +1 -0
- package/dist/animate.d.ts.map +1 -1
- package/dist/animate.js +5 -6
- package/dist/animate.js.map +1 -1
- package/dist/app-frame-actions.d.ts +1 -18
- package/dist/app-frame-actions.d.ts.map +1 -1
- package/dist/app-frame-actions.js +47 -43
- package/dist/app-frame-actions.js.map +1 -1
- package/dist/app-frame-i18n.d.ts.map +1 -1
- package/dist/app-frame-i18n.js +20 -3
- package/dist/app-frame-i18n.js.map +1 -1
- package/dist/app-frame-overlays.d.ts +9 -1
- package/dist/app-frame-overlays.d.ts.map +1 -1
- package/dist/app-frame-overlays.js +117 -25
- package/dist/app-frame-overlays.js.map +1 -1
- package/dist/app-frame-palette.d.ts +1 -11
- package/dist/app-frame-palette.d.ts.map +1 -1
- package/dist/app-frame-palette.js +19 -18
- package/dist/app-frame-palette.js.map +1 -1
- package/dist/app-frame-render.d.ts +0 -7
- package/dist/app-frame-render.d.ts.map +1 -1
- package/dist/app-frame-render.js +17 -26
- package/dist/app-frame-render.js.map +1 -1
- package/dist/app-frame-types.d.ts +8 -4
- package/dist/app-frame-types.d.ts.map +1 -1
- package/dist/app-frame-types.js +5 -5
- package/dist/app-frame-types.js.map +1 -1
- package/dist/app-frame-utils.d.ts +2 -1
- package/dist/app-frame-utils.d.ts.map +1 -1
- package/dist/app-frame-utils.js +8 -1
- package/dist/app-frame-utils.js.map +1 -1
- package/dist/app-frame.d.ts +75 -4
- package/dist/app-frame.d.ts.map +1 -1
- package/dist/app-frame.js +346 -272
- package/dist/app-frame.js.map +1 -1
- package/dist/app-frame.test-support.part01.d.ts +149 -0
- package/dist/app-frame.test-support.part01.d.ts.map +1 -0
- package/dist/app-frame.test-support.part01.js +106 -0
- package/dist/app-frame.test-support.part01.js.map +1 -0
- package/dist/app-frame.test-support.part02.d.ts +15 -0
- package/dist/app-frame.test-support.part02.d.ts.map +1 -0
- package/dist/app-frame.test-support.part02.js +89 -0
- package/dist/app-frame.test-support.part02.js.map +1 -0
- package/dist/browsable-list.d.ts +5 -5
- package/dist/browsable-list.d.ts.map +1 -1
- package/dist/browsable-list.js.map +1 -1
- package/dist/canvas.d.ts +2 -34
- package/dist/canvas.d.ts.map +1 -1
- package/dist/canvas.js +43 -47
- package/dist/canvas.js.map +1 -1
- package/dist/cell-glyph-fit.js +1 -1
- package/dist/cell-glyph-fit.js.map +1 -1
- package/dist/collection-surface-types.d.ts +12 -0
- package/dist/collection-surface-types.d.ts.map +1 -0
- package/dist/collection-surface-types.js +2 -0
- package/dist/collection-surface-types.js.map +1 -0
- package/dist/collection-surface.d.ts +2 -7
- package/dist/collection-surface.d.ts.map +1 -1
- package/dist/collection-surface.js +8 -18
- package/dist/collection-surface.js.map +1 -1
- package/dist/command-palette.d.ts.map +1 -1
- package/dist/command-palette.js +2 -1
- package/dist/command-palette.js.map +1 -1
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +1 -1
- package/dist/commands.js.map +1 -1
- package/dist/css/install.js.map +1 -1
- package/dist/css/parser.js +9 -3
- package/dist/css/parser.js.map +1 -1
- package/dist/css/resolver-types.d.ts +13 -0
- package/dist/css/resolver-types.d.ts.map +1 -0
- package/dist/css/resolver-types.js +2 -0
- package/dist/css/resolver-types.js.map +1 -0
- package/dist/css/resolver.d.ts +2 -12
- package/dist/css/resolver.d.ts.map +1 -1
- package/dist/css/resolver.js +13 -20
- package/dist/css/resolver.js.map +1 -1
- package/dist/css/text-style.d.ts +4 -8
- package/dist/css/text-style.d.ts.map +1 -1
- package/dist/css/text-style.js +13 -18
- package/dist/css/text-style.js.map +1 -1
- package/dist/dag-pane.d.ts +4 -224
- package/dist/dag-pane.d.ts.map +1 -1
- package/dist/dag-pane.js +3 -516
- package/dist/dag-pane.js.map +1 -1
- package/dist/dag-pane.part01.d.ts +58 -0
- package/dist/dag-pane.part01.d.ts.map +1 -0
- package/dist/dag-pane.part01.js +2 -0
- package/dist/dag-pane.part01.js.map +1 -0
- package/dist/dag-pane.part02.d.ts +4 -0
- package/dist/dag-pane.part02.d.ts.map +1 -0
- package/dist/dag-pane.part02.js +56 -0
- package/dist/dag-pane.part02.js.map +1 -0
- package/dist/dag-pane.part03.d.ts +6 -0
- package/dist/dag-pane.part03.d.ts.map +1 -0
- package/dist/dag-pane.part03.js +76 -0
- package/dist/dag-pane.part03.js.map +1 -0
- package/dist/dag-pane.part04.d.ts +7 -0
- package/dist/dag-pane.part04.d.ts.map +1 -0
- package/dist/dag-pane.part04.js +66 -0
- package/dist/dag-pane.part04.js.map +1 -0
- package/dist/dag-pane.part05.d.ts +7 -0
- package/dist/dag-pane.part05.d.ts.map +1 -0
- package/dist/dag-pane.part05.js +78 -0
- package/dist/dag-pane.part05.js.map +1 -0
- package/dist/dag-pane.part06.d.ts +14 -0
- package/dist/dag-pane.part06.d.ts.map +1 -0
- package/dist/dag-pane.part06.js +65 -0
- package/dist/dag-pane.part06.js.map +1 -0
- package/dist/dag-pane.part07.d.ts +18 -0
- package/dist/dag-pane.part07.d.ts.map +1 -0
- package/dist/dag-pane.part07.js +22 -0
- package/dist/dag-pane.part07.js.map +1 -0
- package/dist/driver.d.ts +35 -21
- package/dist/driver.d.ts.map +1 -1
- package/dist/driver.js +69 -39
- package/dist/driver.js.map +1 -1
- package/dist/eventbus.d.ts.map +1 -1
- package/dist/eventbus.js +13 -23
- package/dist/eventbus.js.map +1 -1
- package/dist/file-picker.d.ts +4 -160
- package/dist/file-picker.d.ts.map +1 -1
- package/dist/file-picker.js +3 -284
- package/dist/file-picker.js.map +1 -1
- package/dist/file-picker.part01.d.ts +54 -0
- package/dist/file-picker.part01.d.ts.map +1 -0
- package/dist/file-picker.part01.js +47 -0
- package/dist/file-picker.part01.js.map +1 -0
- package/dist/file-picker.part02.d.ts +9 -0
- package/dist/file-picker.part02.d.ts.map +1 -0
- package/dist/file-picker.part02.js +77 -0
- package/dist/file-picker.part02.js.map +1 -0
- package/dist/file-picker.part03.d.ts +12 -0
- package/dist/file-picker.part03.d.ts.map +1 -0
- package/dist/file-picker.part03.js +35 -0
- package/dist/file-picker.part03.js.map +1 -0
- package/dist/flex.d.ts +0 -61
- package/dist/flex.d.ts.map +1 -1
- package/dist/flex.js +11 -161
- package/dist/flex.js.map +1 -1
- package/dist/focus-area.d.ts +6 -210
- package/dist/focus-area.d.ts.map +1 -1
- package/dist/focus-area.js +5 -425
- package/dist/focus-area.js.map +1 -1
- package/dist/focus-area.part01.d.ts +57 -0
- package/dist/focus-area.part01.d.ts.map +1 -0
- package/dist/focus-area.part01.js +23 -0
- package/dist/focus-area.part01.js.map +1 -0
- package/dist/focus-area.part02.d.ts +13 -0
- package/dist/focus-area.part02.d.ts.map +1 -0
- package/dist/focus-area.part02.js +65 -0
- package/dist/focus-area.part02.js.map +1 -0
- package/dist/focus-area.part03.d.ts +5 -0
- package/dist/focus-area.part03.d.ts.map +1 -0
- package/dist/focus-area.part03.js +42 -0
- package/dist/focus-area.part03.js.map +1 -0
- package/dist/focus-area.part04.d.ts +5 -0
- package/dist/focus-area.part04.d.ts.map +1 -0
- package/dist/focus-area.part04.js +49 -0
- package/dist/focus-area.part04.js.map +1 -0
- package/dist/focus-area.part05.d.ts +10 -0
- package/dist/focus-area.part05.d.ts.map +1 -0
- package/dist/focus-area.part05.js +66 -0
- package/dist/focus-area.part05.js.map +1 -0
- package/dist/focus-area.part06.d.ts +17 -0
- package/dist/focus-area.part06.d.ts.map +1 -0
- package/dist/focus-area.part06.js +48 -0
- package/dist/focus-area.part06.js.map +1 -0
- package/dist/focus-map.d.ts.map +1 -1
- package/dist/focus-map.js +8 -10
- package/dist/focus-map.js.map +1 -1
- package/dist/index.d.ts +8 -79
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -105
- package/dist/index.js.map +1 -1
- package/dist/index.part01.d.ts +15 -0
- package/dist/index.part01.d.ts.map +1 -0
- package/dist/index.part01.js +11 -0
- package/dist/index.part01.js.map +1 -0
- package/dist/index.part02.d.ts +26 -0
- package/dist/index.part02.d.ts.map +1 -0
- package/dist/index.part02.js +24 -0
- package/dist/index.part02.js.map +1 -0
- package/dist/index.part03.d.ts +17 -0
- package/dist/index.part03.d.ts.map +1 -0
- package/dist/index.part03.js +11 -0
- package/dist/index.part03.js.map +1 -0
- package/dist/index.part04.d.ts +6 -0
- package/dist/index.part04.d.ts.map +1 -0
- package/dist/index.part04.js +11 -0
- package/dist/index.part04.js.map +1 -0
- package/dist/index.part05.d.ts +10 -0
- package/dist/index.part05.d.ts.map +1 -0
- package/dist/index.part05.js +26 -0
- package/dist/index.part05.js.map +1 -0
- package/dist/index.part06.d.ts +9 -0
- package/dist/index.part06.d.ts.map +1 -0
- package/dist/index.part06.js +16 -0
- package/dist/index.part06.js.map +1 -0
- package/dist/index.part07.d.ts +8 -0
- package/dist/index.part07.d.ts.map +1 -0
- package/dist/index.part07.js +15 -0
- package/dist/index.part07.js.map +1 -0
- package/dist/index.part08.d.ts +5 -0
- package/dist/index.part08.d.ts.map +1 -0
- package/dist/index.part08.js +9 -0
- package/dist/index.part08.js.map +1 -0
- package/dist/input-map.d.ts.map +1 -1
- package/dist/input-map.js +1 -2
- package/dist/input-map.js.map +1 -1
- package/dist/input-parser.d.ts +3 -0
- package/dist/input-parser.d.ts.map +1 -0
- package/dist/input-parser.js +95 -0
- package/dist/input-parser.js.map +1 -0
- package/dist/input-routing-inspector.js +3 -3
- package/dist/input-routing-inspector.js.map +1 -1
- package/dist/inputstack.d.ts.map +1 -1
- package/dist/inputstack.js +2 -0
- package/dist/inputstack.js.map +1 -1
- package/dist/keybindings.d.ts.map +1 -1
- package/dist/keybindings.js +5 -2
- package/dist/keybindings.js.map +1 -1
- package/dist/keys.d.ts +0 -36
- package/dist/keys.d.ts.map +1 -1
- package/dist/keys.js +11 -66
- package/dist/keys.js.map +1 -1
- package/dist/layout-inspector.d.ts +2 -30
- package/dist/layout-inspector.d.ts.map +1 -1
- package/dist/layout-inspector.js +1 -132
- package/dist/layout-inspector.js.map +1 -1
- package/dist/layout-inspector.part01.d.ts +52 -0
- package/dist/layout-inspector.part01.d.ts.map +1 -0
- package/dist/layout-inspector.part01.js +48 -0
- package/dist/layout-inspector.part01.js.map +1 -0
- package/dist/layout-inspector.part02.d.ts +11 -0
- package/dist/layout-inspector.part02.d.ts.map +1 -0
- package/dist/layout-inspector.part02.js +80 -0
- package/dist/layout-inspector.part02.js.map +1 -0
- package/dist/layout-inspector.part03.d.ts +5 -0
- package/dist/layout-inspector.part03.d.ts.map +1 -0
- package/dist/layout-inspector.part03.js +11 -0
- package/dist/layout-inspector.part03.js.map +1 -0
- package/dist/layout-preset.js +4 -4
- package/dist/layout-preset.js.map +1 -1
- package/dist/layout.d.ts.map +1 -1
- package/dist/layout.js +5 -3
- package/dist/layout.js.map +1 -1
- package/dist/motion/motion.js +8 -4
- package/dist/motion/motion.js.map +1 -1
- package/dist/motion/reconciler.d.ts.map +1 -1
- package/dist/motion/reconciler.js +9 -7
- package/dist/motion/reconciler.js.map +1 -1
- package/dist/mouse-mode.d.ts +5 -0
- package/dist/mouse-mode.d.ts.map +1 -0
- package/dist/mouse-mode.js +17 -0
- package/dist/mouse-mode.js.map +1 -0
- package/dist/navigable-table.d.ts +3 -136
- package/dist/navigable-table.d.ts.map +1 -1
- package/dist/navigable-table.js +2 -234
- package/dist/navigable-table.js.map +1 -1
- package/dist/navigable-table.part01.d.ts +42 -0
- package/dist/navigable-table.part01.d.ts.map +1 -0
- package/dist/navigable-table.part01.js +42 -0
- package/dist/navigable-table.part01.js.map +1 -0
- package/dist/navigable-table.part02.d.ts +16 -0
- package/dist/navigable-table.part02.d.ts.map +1 -0
- package/dist/navigable-table.part02.js +83 -0
- package/dist/navigable-table.part02.js.map +1 -0
- package/dist/notification-card.d.ts +11 -0
- package/dist/notification-card.d.ts.map +1 -0
- package/dist/notification-card.js +157 -0
- package/dist/notification-card.js.map +1 -0
- package/dist/notification-stack.d.ts +6 -0
- package/dist/notification-stack.d.ts.map +1 -0
- package/dist/notification-stack.js +257 -0
- package/dist/notification-stack.js.map +1 -0
- package/dist/notification.d.ts +14 -112
- package/dist/notification.d.ts.map +1 -1
- package/dist/notification.js +12 -1087
- package/dist/notification.js.map +1 -1
- package/dist/notification.part01.d.ts +77 -0
- package/dist/notification.part01.d.ts.map +1 -0
- package/dist/notification.part01.js +19 -0
- package/dist/notification.part01.js.map +1 -0
- package/dist/notification.part02.d.ts +42 -0
- package/dist/notification.part02.d.ts.map +1 -0
- package/dist/notification.part02.js +44 -0
- package/dist/notification.part02.js.map +1 -0
- package/dist/notification.part03.d.ts +6 -0
- package/dist/notification.part03.d.ts.map +1 -0
- package/dist/notification.part03.js +81 -0
- package/dist/notification.part03.js.map +1 -0
- package/dist/notification.part04.d.ts +4 -0
- package/dist/notification.part04.d.ts.map +1 -0
- package/dist/notification.part04.js +32 -0
- package/dist/notification.part04.js.map +1 -0
- package/dist/notification.part05.d.ts +6 -0
- package/dist/notification.part05.d.ts.map +1 -0
- package/dist/notification.part05.js +95 -0
- package/dist/notification.part05.js.map +1 -0
- package/dist/notification.part06.d.ts +9 -0
- package/dist/notification.part06.d.ts.map +1 -0
- package/dist/notification.part06.js +65 -0
- package/dist/notification.part06.js.map +1 -0
- package/dist/notification.part07.d.ts +10 -0
- package/dist/notification.part07.d.ts.map +1 -0
- package/dist/notification.part07.js +70 -0
- package/dist/notification.part07.js.map +1 -0
- package/dist/notification.part08.d.ts +5 -0
- package/dist/notification.part08.d.ts.map +1 -0
- package/dist/notification.part08.js +79 -0
- package/dist/notification.part08.js.map +1 -0
- package/dist/notification.part09.d.ts +14 -0
- package/dist/notification.part09.d.ts.map +1 -0
- package/dist/notification.part09.js +96 -0
- package/dist/notification.part09.js.map +1 -0
- package/dist/notification.part10.d.ts +13 -0
- package/dist/notification.part10.d.ts.map +1 -0
- package/dist/notification.part10.js +94 -0
- package/dist/notification.part10.js.map +1 -0
- package/dist/notification.part11.d.ts +6 -0
- package/dist/notification.part11.d.ts.map +1 -0
- package/dist/notification.part11.js +42 -0
- package/dist/notification.part11.js.map +1 -0
- package/dist/overlay.d.ts +8 -232
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +5 -629
- package/dist/overlay.js.map +1 -1
- package/dist/overlay.part01.d.ts +71 -0
- package/dist/overlay.part01.d.ts.map +1 -0
- package/dist/overlay.part01.js +34 -0
- package/dist/overlay.part01.js.map +1 -0
- package/dist/overlay.part02.d.ts +8 -0
- package/dist/overlay.part02.d.ts.map +1 -0
- package/dist/overlay.part02.js +81 -0
- package/dist/overlay.part02.js.map +1 -0
- package/dist/overlay.part03.d.ts +27 -0
- package/dist/overlay.part03.d.ts.map +1 -0
- package/dist/overlay.part03.js +83 -0
- package/dist/overlay.part03.js.map +1 -0
- package/dist/overlay.part04.d.ts +8 -0
- package/dist/overlay.part04.d.ts.map +1 -0
- package/dist/overlay.part04.js +103 -0
- package/dist/overlay.part04.js.map +1 -0
- package/dist/overlay.part05.d.ts +8 -0
- package/dist/overlay.part05.d.ts.map +1 -0
- package/dist/overlay.part05.js +66 -0
- package/dist/overlay.part05.js.map +1 -0
- package/dist/overlay.part06.d.ts +46 -0
- package/dist/overlay.part06.d.ts.map +1 -0
- package/dist/overlay.part06.js +35 -0
- package/dist/overlay.part06.js.map +1 -0
- package/dist/overlay.part07.d.ts +4 -0
- package/dist/overlay.part07.d.ts.map +1 -0
- package/dist/overlay.part07.js +64 -0
- package/dist/overlay.part07.js.map +1 -0
- package/dist/overlay.part08.d.ts +34 -0
- package/dist/overlay.part08.d.ts.map +1 -0
- package/dist/overlay.part08.js +54 -0
- package/dist/overlay.part08.js.map +1 -0
- package/dist/overlay.part09.d.ts +6 -0
- package/dist/overlay.part09.d.ts.map +1 -0
- package/dist/overlay.part09.js +42 -0
- package/dist/overlay.part09.js.map +1 -0
- package/dist/pager.d.ts.map +1 -1
- package/dist/pager.js +2 -4
- package/dist/pager.js.map +1 -1
- package/dist/panel-dock.d.ts.map +1 -1
- package/dist/panel-dock.js +9 -11
- package/dist/panel-dock.js.map +1 -1
- package/dist/panels.d.ts.map +1 -1
- package/dist/panels.js +2 -0
- package/dist/panels.js.map +1 -1
- package/dist/pipeline/middleware/css.d.ts +3 -5
- package/dist/pipeline/middleware/css.d.ts.map +1 -1
- package/dist/pipeline/middleware/css.js +12 -6
- package/dist/pipeline/middleware/css.js.map +1 -1
- package/dist/pipeline/middleware/grayscale.js +15 -10
- package/dist/pipeline/middleware/grayscale.js.map +1 -1
- package/dist/pipeline/middleware/motion.js +9 -1
- package/dist/pipeline/middleware/motion.js.map +1 -1
- package/dist/pipeline/middleware/paint.js +9 -1
- package/dist/pipeline/middleware/paint.js.map +1 -1
- package/dist/pipeline/middleware/surface-shaders.js +13 -11
- package/dist/pipeline/middleware/surface-shaders.js.map +1 -1
- package/dist/pipeline/pipeline.d.ts +7 -52
- package/dist/pipeline/pipeline.d.ts.map +1 -1
- package/dist/pipeline/pipeline.js +37 -27
- package/dist/pipeline/pipeline.js.map +1 -1
- package/dist/raster-glyph.d.ts +3 -0
- package/dist/raster-glyph.d.ts.map +1 -0
- package/dist/raster-glyph.js +2 -0
- package/dist/raster-glyph.js.map +1 -0
- package/dist/raster-glyph.part01.d.ts +75 -0
- package/dist/raster-glyph.part01.d.ts.map +1 -0
- package/dist/raster-glyph.part01.js +25 -0
- package/dist/raster-glyph.part01.js.map +1 -0
- package/dist/raster-glyph.part02.d.ts +12 -0
- package/dist/raster-glyph.part02.d.ts.map +1 -0
- package/dist/raster-glyph.part02.js +81 -0
- package/dist/raster-glyph.part02.js.map +1 -0
- package/dist/raster-glyph.part03.d.ts +6 -0
- package/dist/raster-glyph.part03.d.ts.map +1 -0
- package/dist/raster-glyph.part03.js +60 -0
- package/dist/raster-glyph.part03.js.map +1 -0
- package/dist/raster-glyph.part04.d.ts +7 -0
- package/dist/raster-glyph.part04.d.ts.map +1 -0
- package/dist/raster-glyph.part04.js +59 -0
- package/dist/raster-glyph.part04.js.map +1 -0
- package/dist/raster-glyph.part05.d.ts +6 -0
- package/dist/raster-glyph.part05.d.ts.map +1 -0
- package/dist/raster-glyph.part05.js +71 -0
- package/dist/raster-glyph.part05.js.map +1 -0
- package/dist/raster-glyph.part06.d.ts +18 -0
- package/dist/raster-glyph.part06.d.ts.map +1 -0
- package/dist/raster-glyph.part06.js +78 -0
- package/dist/raster-glyph.part06.js.map +1 -0
- package/dist/raster-glyph.part07.d.ts +11 -0
- package/dist/raster-glyph.part07.d.ts.map +1 -0
- package/dist/raster-glyph.part07.js +55 -0
- package/dist/raster-glyph.part07.js.map +1 -0
- package/dist/raytrace.d.ts +3 -58
- package/dist/raytrace.d.ts.map +1 -1
- package/dist/raytrace.js +2 -120
- package/dist/raytrace.js.map +1 -1
- package/dist/raytrace.part01.d.ts +47 -0
- package/dist/raytrace.part01.d.ts.map +1 -0
- package/dist/raytrace.part01.js +45 -0
- package/dist/raytrace.part01.js.map +1 -0
- package/dist/raytrace.part02.d.ts +12 -0
- package/dist/raytrace.part02.d.ts.map +1 -0
- package/dist/raytrace.part02.js +73 -0
- package/dist/raytrace.part02.js.map +1 -0
- package/dist/runtime-binding.d.ts +2 -3
- package/dist/runtime-binding.d.ts.map +1 -1
- package/dist/runtime-binding.js +49 -38
- package/dist/runtime-binding.js.map +1 -1
- package/dist/runtime-engine.d.ts +2 -2
- package/dist/runtime-engine.d.ts.map +1 -1
- package/dist/runtime-engine.js +15 -4
- package/dist/runtime-engine.js.map +1 -1
- package/dist/runtime.d.ts +2 -18
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +43 -62
- package/dist/runtime.js.map +1 -1
- package/dist/screen.js +1 -1
- package/dist/screen.js.map +1 -1
- package/dist/shell-quit.d.ts.map +1 -1
- package/dist/shell-quit.js +49 -6
- package/dist/shell-quit.js.map +1 -1
- package/dist/split-pane.d.ts +3 -104
- package/dist/split-pane.d.ts.map +1 -1
- package/dist/split-pane.js +2 -190
- package/dist/split-pane.js.map +1 -1
- package/dist/split-pane.part01.d.ts +60 -0
- package/dist/split-pane.part01.d.ts.map +1 -0
- package/dist/split-pane.part01.js +45 -0
- package/dist/split-pane.part01.js.map +1 -0
- package/dist/split-pane.part02.d.ts +8 -0
- package/dist/split-pane.part02.d.ts.map +1 -0
- package/dist/split-pane.part02.js +73 -0
- package/dist/split-pane.part02.js.map +1 -0
- package/dist/split-pane.part03.d.ts +4 -0
- package/dist/split-pane.part03.d.ts.map +1 -0
- package/dist/split-pane.part03.js +40 -0
- package/dist/split-pane.part03.js.map +1 -0
- package/dist/spring.d.ts +4 -187
- package/dist/spring.d.ts.map +1 -1
- package/dist/spring.js +2 -142
- package/dist/spring.js.map +1 -1
- package/dist/spring.part01.d.ts +90 -0
- package/dist/spring.part01.d.ts.map +1 -0
- package/dist/spring.part01.js +58 -0
- package/dist/spring.part01.js.map +1 -0
- package/dist/spring.part02.d.ts +25 -0
- package/dist/spring.part02.d.ts.map +1 -0
- package/dist/spring.part02.js +21 -0
- package/dist/spring.part02.js.map +1 -0
- package/dist/status-bar.js +1 -1
- package/dist/status-bar.js.map +1 -1
- package/dist/subapp/mount.d.ts +6 -6
- package/dist/subapp/mount.d.ts.map +1 -1
- package/dist/subapp/mount.js +19 -14
- package/dist/subapp/mount.js.map +1 -1
- package/dist/surface-budget-types.d.ts +26 -0
- package/dist/surface-budget-types.d.ts.map +1 -0
- package/dist/surface-budget-types.js +2 -0
- package/dist/surface-budget-types.js.map +1 -0
- package/dist/surface-budget.d.ts +2 -25
- package/dist/surface-budget.d.ts.map +1 -1
- package/dist/surface-budget.js.map +1 -1
- package/dist/surface-diff.js +26 -28
- package/dist/surface-diff.js.map +1 -1
- package/dist/surface-layout.d.ts.map +1 -1
- package/dist/surface-layout.js +1 -2
- package/dist/surface-layout.js.map +1 -1
- package/dist/timeline.d.ts +1 -1
- package/dist/timeline.d.ts.map +1 -1
- package/dist/timeline.js +17 -15
- package/dist/timeline.js.map +1 -1
- package/dist/transition-shaders.d.ts +5 -142
- package/dist/transition-shaders.d.ts.map +1 -1
- package/dist/transition-shaders.js +4 -391
- package/dist/transition-shaders.js.map +1 -1
- package/dist/transition-shaders.part01.d.ts +41 -0
- package/dist/transition-shaders.part01.d.ts.map +1 -0
- package/dist/transition-shaders.part01.js +38 -0
- package/dist/transition-shaders.part01.js.map +1 -0
- package/dist/transition-shaders.part02.d.ts +12 -0
- package/dist/transition-shaders.part02.d.ts.map +1 -0
- package/dist/transition-shaders.part02.js +88 -0
- package/dist/transition-shaders.part02.js.map +1 -0
- package/dist/transition-shaders.part03.d.ts +6 -0
- package/dist/transition-shaders.part03.d.ts.map +1 -0
- package/dist/transition-shaders.part03.js +82 -0
- package/dist/transition-shaders.part03.js.map +1 -0
- package/dist/transition-shaders.part04.d.ts +16 -0
- package/dist/transition-shaders.part04.d.ts.map +1 -0
- package/dist/transition-shaders.part04.js +98 -0
- package/dist/transition-shaders.part04.js.map +1 -0
- package/dist/types.d.ts +10 -42
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +9 -36
- package/dist/types.js.map +1 -1
- package/dist/view-output.d.ts +1 -1
- package/dist/view-output.d.ts.map +1 -1
- package/dist/view-output.js +3 -2
- package/dist/view-output.js.map +1 -1
- package/dist/viewport.d.ts +7 -213
- package/dist/viewport.d.ts.map +1 -1
- package/dist/viewport.js +6 -470
- package/dist/viewport.js.map +1 -1
- package/dist/viewport.part01.d.ts +51 -0
- package/dist/viewport.part01.d.ts.map +1 -0
- package/dist/viewport.part01.js +10 -0
- package/dist/viewport.part01.js.map +1 -0
- package/dist/viewport.part02.d.ts +2 -0
- package/dist/viewport.part02.d.ts.map +1 -0
- package/dist/viewport.part02.js +69 -0
- package/dist/viewport.part02.js.map +1 -0
- package/dist/viewport.part03.d.ts +10 -0
- package/dist/viewport.part03.d.ts.map +1 -0
- package/dist/viewport.part03.js +78 -0
- package/dist/viewport.part03.js.map +1 -0
- package/dist/viewport.part04.d.ts +4 -0
- package/dist/viewport.part04.d.ts.map +1 -0
- package/dist/viewport.part04.js +50 -0
- package/dist/viewport.part04.js.map +1 -0
- package/dist/viewport.part05.d.ts +5 -0
- package/dist/viewport.part05.d.ts.map +1 -0
- package/dist/viewport.part05.js +59 -0
- package/dist/viewport.part05.js.map +1 -0
- package/dist/viewport.part06.d.ts +14 -0
- package/dist/viewport.part06.d.ts.map +1 -0
- package/dist/viewport.part06.js +58 -0
- package/dist/viewport.part06.js.map +1 -0
- package/package.json +3 -3
package/dist/raytrace.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raytrace.d.ts","sourceRoot":"","sources":["../src/raytrace.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"raytrace.d.ts","sourceRoot":"","sources":["../src/raytrace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACrG,YAAY,EAAE,WAAW,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,aAAa,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAClN,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/raytrace.js
CHANGED
|
@@ -1,121 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* This module owns camera rays, vector math, and primitive intersections.
|
|
5
|
-
* Apps keep material, lighting, palette, and sampling policy.
|
|
6
|
-
*/
|
|
7
|
-
const DEFAULT_FOCAL_LENGTH = 1;
|
|
8
|
-
const MIN_HIT_DISTANCE = 0.000001;
|
|
9
|
-
const WORLD_UP = [0, 1, 0];
|
|
10
|
-
const FALLBACK_RIGHT = [1, 0, 0];
|
|
11
|
-
export function raytraceLookAtRay(options) {
|
|
12
|
-
const focalLength = options.focalLength ?? DEFAULT_FOCAL_LENGTH;
|
|
13
|
-
const up = options.up ?? WORLD_UP;
|
|
14
|
-
const forward = raytraceNormalize(raytraceSub(options.target, options.origin));
|
|
15
|
-
const rightCandidate = raytraceNormalize(raytraceCross(forward, up));
|
|
16
|
-
const right = raytraceLength(rightCandidate) === 0 ? FALLBACK_RIGHT : rightCandidate;
|
|
17
|
-
const cameraUp = raytraceNormalize(raytraceCross(right, forward));
|
|
18
|
-
const direction = raytraceNormalize(raytraceAdd(raytraceAdd(raytraceScale(right, options.screen[0]), raytraceScale(cameraUp, options.screen[1])), raytraceScale(forward, focalLength)));
|
|
19
|
-
return {
|
|
20
|
-
origin: options.origin,
|
|
21
|
-
direction,
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
export function raytraceOrbitCameraRay(options) {
|
|
25
|
-
const origin = [
|
|
26
|
-
options.target[0] + (Math.sin(options.angleRadians) * options.radius),
|
|
27
|
-
options.target[1] + options.height,
|
|
28
|
-
options.target[2] + (Math.cos(options.angleRadians) * options.radius),
|
|
29
|
-
];
|
|
30
|
-
return raytraceLookAtRay({
|
|
31
|
-
origin,
|
|
32
|
-
target: options.target,
|
|
33
|
-
screen: options.screen,
|
|
34
|
-
focalLength: options.focalLength,
|
|
35
|
-
up: options.up,
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
export function raytraceNearestHit(ray, shapes) {
|
|
39
|
-
let nearest;
|
|
40
|
-
for (const shape of shapes) {
|
|
41
|
-
const hit = shape.kind === 'sphere'
|
|
42
|
-
? raytraceSphereHit(ray, shape)
|
|
43
|
-
: raytracePlaneHit(ray, shape);
|
|
44
|
-
if (hit !== undefined && (nearest === undefined || hit.distance < nearest.distance)) {
|
|
45
|
-
nearest = hit;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
return nearest;
|
|
49
|
-
}
|
|
50
|
-
export function raytraceSphereHit(ray, sphere) {
|
|
51
|
-
const offset = raytraceSub(ray.origin, sphere.center);
|
|
52
|
-
const halfB = raytraceDot(offset, ray.direction);
|
|
53
|
-
const c = raytraceDot(offset, offset) - (sphere.radius * sphere.radius);
|
|
54
|
-
const discriminant = (halfB * halfB) - c;
|
|
55
|
-
if (discriminant < 0)
|
|
56
|
-
return undefined;
|
|
57
|
-
const root = Math.sqrt(discriminant);
|
|
58
|
-
const near = -halfB - root;
|
|
59
|
-
const far = -halfB + root;
|
|
60
|
-
const distance = near > MIN_HIT_DISTANCE
|
|
61
|
-
? near
|
|
62
|
-
: far > MIN_HIT_DISTANCE
|
|
63
|
-
? far
|
|
64
|
-
: undefined;
|
|
65
|
-
if (distance === undefined)
|
|
66
|
-
return undefined;
|
|
67
|
-
const point = raytraceAdd(ray.origin, raytraceScale(ray.direction, distance));
|
|
68
|
-
return {
|
|
69
|
-
shape: sphere,
|
|
70
|
-
distance,
|
|
71
|
-
point,
|
|
72
|
-
normal: raytraceNormalize(raytraceSub(point, sphere.center)),
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
export function raytracePlaneHit(ray, plane) {
|
|
76
|
-
const normal = raytraceNormalize(plane.normal);
|
|
77
|
-
const denominator = raytraceDot(normal, ray.direction);
|
|
78
|
-
if (Math.abs(denominator) <= MIN_HIT_DISTANCE)
|
|
79
|
-
return undefined;
|
|
80
|
-
const distance = raytraceDot(raytraceSub(plane.point, ray.origin), normal) / denominator;
|
|
81
|
-
if (distance <= MIN_HIT_DISTANCE)
|
|
82
|
-
return undefined;
|
|
83
|
-
return {
|
|
84
|
-
shape: plane,
|
|
85
|
-
distance,
|
|
86
|
-
point: raytraceAdd(ray.origin, raytraceScale(ray.direction, distance)),
|
|
87
|
-
normal,
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
export function raytraceReflect(ray, normal) {
|
|
91
|
-
return raytraceSub(ray, raytraceScale(normal, 2 * raytraceDot(ray, normal)));
|
|
92
|
-
}
|
|
93
|
-
export function raytraceNormalize(vector) {
|
|
94
|
-
const length = raytraceLength(vector);
|
|
95
|
-
return length === 0
|
|
96
|
-
? [0, 0, 0]
|
|
97
|
-
: [vector[0] / length, vector[1] / length, vector[2] / length];
|
|
98
|
-
}
|
|
99
|
-
export function raytraceLength(vector) {
|
|
100
|
-
return Math.hypot(vector[0], vector[1], vector[2]);
|
|
101
|
-
}
|
|
102
|
-
export function raytraceDot(a, b) {
|
|
103
|
-
return (a[0] * b[0]) + (a[1] * b[1]) + (a[2] * b[2]);
|
|
104
|
-
}
|
|
105
|
-
export function raytraceCross(a, b) {
|
|
106
|
-
return [
|
|
107
|
-
(a[1] * b[2]) - (a[2] * b[1]),
|
|
108
|
-
(a[2] * b[0]) - (a[0] * b[2]),
|
|
109
|
-
(a[0] * b[1]) - (a[1] * b[0]),
|
|
110
|
-
];
|
|
111
|
-
}
|
|
112
|
-
export function raytraceAdd(a, b) {
|
|
113
|
-
return [a[0] + b[0], a[1] + b[1], a[2] + b[2]];
|
|
114
|
-
}
|
|
115
|
-
export function raytraceSub(a, b) {
|
|
116
|
-
return [a[0] - b[0], a[1] - b[1], a[2] - b[2]];
|
|
117
|
-
}
|
|
118
|
-
export function raytraceScale(vector, scalar) {
|
|
119
|
-
return [vector[0] * scalar, vector[1] * scalar, vector[2] * scalar];
|
|
120
|
-
}
|
|
1
|
+
export { raytraceLookAtRay, raytraceNearestHit, raytraceOrbitCameraRay } from './raytrace.part01.js';
|
|
2
|
+
export { raytraceAdd, raytraceCross, raytraceDot, raytraceLength, raytraceNormalize, raytracePlaneHit, raytraceReflect, raytraceScale, raytraceSphereHit, raytraceSub } from './raytrace.part02.js';
|
|
121
3
|
//# sourceMappingURL=raytrace.js.map
|
package/dist/raytrace.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raytrace.js","sourceRoot":"","sources":["../src/raytrace.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"raytrace.js","sourceRoot":"","sources":["../src/raytrace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAErG,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export type RaytraceVector3 = readonly [number, number, number];
|
|
2
|
+
export type RaytraceScreenPoint = readonly [number, number];
|
|
3
|
+
export interface RaytraceRay {
|
|
4
|
+
readonly origin: RaytraceVector3;
|
|
5
|
+
readonly direction: RaytraceVector3;
|
|
6
|
+
}
|
|
7
|
+
export interface RaytraceSphere {
|
|
8
|
+
readonly kind: 'sphere';
|
|
9
|
+
readonly center: RaytraceVector3;
|
|
10
|
+
readonly radius: number;
|
|
11
|
+
}
|
|
12
|
+
export interface RaytracePlane {
|
|
13
|
+
readonly kind: 'plane';
|
|
14
|
+
readonly point: RaytraceVector3;
|
|
15
|
+
readonly normal: RaytraceVector3;
|
|
16
|
+
}
|
|
17
|
+
export type RaytraceShape = RaytraceSphere | RaytracePlane;
|
|
18
|
+
export interface RaytraceHit<Shape extends RaytraceShape = RaytraceShape> {
|
|
19
|
+
readonly shape: Shape;
|
|
20
|
+
readonly distance: number;
|
|
21
|
+
readonly point: RaytraceVector3;
|
|
22
|
+
readonly normal: RaytraceVector3;
|
|
23
|
+
}
|
|
24
|
+
export interface RaytraceLookAtRayOptions {
|
|
25
|
+
readonly origin: RaytraceVector3;
|
|
26
|
+
readonly target: RaytraceVector3;
|
|
27
|
+
readonly screen: RaytraceScreenPoint;
|
|
28
|
+
readonly focalLength?: number;
|
|
29
|
+
readonly up?: RaytraceVector3;
|
|
30
|
+
}
|
|
31
|
+
export interface RaytraceOrbitCameraRayOptions {
|
|
32
|
+
readonly angleRadians: number;
|
|
33
|
+
readonly radius: number;
|
|
34
|
+
readonly height: number;
|
|
35
|
+
readonly target: RaytraceVector3;
|
|
36
|
+
readonly screen: RaytraceScreenPoint;
|
|
37
|
+
readonly focalLength?: number;
|
|
38
|
+
readonly up?: RaytraceVector3;
|
|
39
|
+
}
|
|
40
|
+
export declare const DEFAULT_FOCAL_LENGTH = 1;
|
|
41
|
+
export declare const MIN_HIT_DISTANCE = 0.000001;
|
|
42
|
+
export declare const WORLD_UP: RaytraceVector3;
|
|
43
|
+
export declare const FALLBACK_RIGHT: RaytraceVector3;
|
|
44
|
+
export declare function raytraceLookAtRay(options: RaytraceLookAtRayOptions): RaytraceRay;
|
|
45
|
+
export declare function raytraceOrbitCameraRay(options: RaytraceOrbitCameraRayOptions): RaytraceRay;
|
|
46
|
+
export declare function raytraceNearestHit(ray: RaytraceRay, shapes: readonly RaytraceShape[]): RaytraceHit | undefined;
|
|
47
|
+
//# sourceMappingURL=raytrace.part01.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raytrace.part01.d.ts","sourceRoot":"","sources":["../src/raytrace.part01.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAChE,MAAM,MAAM,mBAAmB,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;CACrC;AACD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AACD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;CAClC;AACD,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,aAAa,CAAC;AAC3D,MAAM,WAAW,WAAW,CAAC,KAAK,SAAS,aAAa,GAAG,aAAa;IACtE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;CAClC;AACD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC;CAC/B;AACD,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC;CAC/B;AACD,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,gBAAgB,WAAW,CAAC;AACzC,eAAO,MAAM,QAAQ,EAAE,eAA2B,CAAC;AACnD,eAAO,MAAM,cAAc,EAAE,eAA2B,CAAC;AACzD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,WAAW,CAmBhF;AACD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,6BAA6B,GAAG,WAAW,CAc1F;AACD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,aAAa,EAAE,GAAG,WAAW,GAAG,SAAS,CAa9G"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { raytraceAdd, raytraceCross, raytraceLength, raytraceNormalize, raytracePlaneHit, raytraceScale, raytraceSphereHit, raytraceSub } from './raytrace.part02.js';
|
|
2
|
+
export const DEFAULT_FOCAL_LENGTH = 1;
|
|
3
|
+
export const MIN_HIT_DISTANCE = 0.000001;
|
|
4
|
+
export const WORLD_UP = [0, 1, 0];
|
|
5
|
+
export const FALLBACK_RIGHT = [1, 0, 0];
|
|
6
|
+
export function raytraceLookAtRay(options) {
|
|
7
|
+
const focalLength = options.focalLength ?? DEFAULT_FOCAL_LENGTH;
|
|
8
|
+
const up = options.up ?? WORLD_UP;
|
|
9
|
+
const forward = raytraceNormalize(raytraceSub(options.target, options.origin));
|
|
10
|
+
const rightCandidate = raytraceNormalize(raytraceCross(forward, up));
|
|
11
|
+
const right = raytraceLength(rightCandidate) === 0 ? FALLBACK_RIGHT : rightCandidate;
|
|
12
|
+
const cameraUp = raytraceNormalize(raytraceCross(right, forward));
|
|
13
|
+
const direction = raytraceNormalize(raytraceAdd(raytraceAdd(raytraceScale(right, options.screen[0]), raytraceScale(cameraUp, options.screen[1])), raytraceScale(forward, focalLength)));
|
|
14
|
+
return {
|
|
15
|
+
origin: options.origin,
|
|
16
|
+
direction,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export function raytraceOrbitCameraRay(options) {
|
|
20
|
+
const origin = [
|
|
21
|
+
options.target[0] + (Math.sin(options.angleRadians) * options.radius),
|
|
22
|
+
options.target[1] + options.height,
|
|
23
|
+
options.target[2] + (Math.cos(options.angleRadians) * options.radius),
|
|
24
|
+
];
|
|
25
|
+
return raytraceLookAtRay({
|
|
26
|
+
origin,
|
|
27
|
+
target: options.target,
|
|
28
|
+
screen: options.screen,
|
|
29
|
+
focalLength: options.focalLength,
|
|
30
|
+
up: options.up,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
export function raytraceNearestHit(ray, shapes) {
|
|
34
|
+
let nearest;
|
|
35
|
+
for (const shape of shapes) {
|
|
36
|
+
const hit = shape.kind === 'sphere'
|
|
37
|
+
? raytraceSphereHit(ray, shape)
|
|
38
|
+
: raytracePlaneHit(ray, shape);
|
|
39
|
+
if (hit !== undefined && (nearest === undefined || hit.distance < nearest.distance)) {
|
|
40
|
+
nearest = hit;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return nearest;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=raytrace.part01.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raytrace.part01.js","sourceRoot":"","sources":["../src/raytrace.part01.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { RaytraceHit, RaytracePlane, RaytraceRay, RaytraceSphere, RaytraceVector3 } from './raytrace.part01.js';
|
|
2
|
+
export declare function raytraceSphereHit(ray: RaytraceRay, sphere: RaytraceSphere): RaytraceHit<RaytraceSphere> | undefined;
|
|
3
|
+
export declare function raytracePlaneHit(ray: RaytraceRay, plane: RaytracePlane): RaytraceHit<RaytracePlane> | undefined;
|
|
4
|
+
export declare function raytraceReflect(ray: RaytraceVector3, normal: RaytraceVector3): RaytraceVector3;
|
|
5
|
+
export declare function raytraceNormalize(vector: RaytraceVector3): RaytraceVector3;
|
|
6
|
+
export declare function raytraceLength(vector: RaytraceVector3): number;
|
|
7
|
+
export declare function raytraceDot(a: RaytraceVector3, b: RaytraceVector3): number;
|
|
8
|
+
export declare function raytraceCross(a: RaytraceVector3, b: RaytraceVector3): RaytraceVector3;
|
|
9
|
+
export declare function raytraceAdd(a: RaytraceVector3, b: RaytraceVector3): RaytraceVector3;
|
|
10
|
+
export declare function raytraceSub(a: RaytraceVector3, b: RaytraceVector3): RaytraceVector3;
|
|
11
|
+
export declare function raytraceScale(vector: RaytraceVector3, scalar: number): RaytraceVector3;
|
|
12
|
+
//# sourceMappingURL=raytrace.part02.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raytrace.part02.d.ts","sourceRoot":"","sources":["../src/raytrace.part02.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACrH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC,GAAG,SAAS,CAwBnH;AACD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC,GAAG,SAAS,CAc/G;AACD,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe,CAE9F;AACD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,CAK1E;AACD,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAE9D;AACD,wBAAgB,WAAW,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,eAAe,GAAG,MAAM,CAE1E;AACD,wBAAgB,aAAa,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,eAAe,GAAG,eAAe,CAMrF;AACD,wBAAgB,WAAW,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,eAAe,GAAG,eAAe,CAEnF;AACD,wBAAgB,WAAW,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,eAAe,GAAG,eAAe,CAEnF;AACD,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAEtF"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { MIN_HIT_DISTANCE } from './raytrace.part01.js';
|
|
2
|
+
export function raytraceSphereHit(ray, sphere) {
|
|
3
|
+
const offset = raytraceSub(ray.origin, sphere.center);
|
|
4
|
+
const halfB = raytraceDot(offset, ray.direction);
|
|
5
|
+
const c = raytraceDot(offset, offset) - (sphere.radius * sphere.radius);
|
|
6
|
+
const discriminant = (halfB * halfB) - c;
|
|
7
|
+
if (discriminant < 0)
|
|
8
|
+
return undefined;
|
|
9
|
+
const root = Math.sqrt(discriminant);
|
|
10
|
+
const near = -halfB - root;
|
|
11
|
+
const far = -halfB + root;
|
|
12
|
+
const distance = near > MIN_HIT_DISTANCE
|
|
13
|
+
? near
|
|
14
|
+
: far > MIN_HIT_DISTANCE
|
|
15
|
+
? far
|
|
16
|
+
: undefined;
|
|
17
|
+
if (distance === undefined)
|
|
18
|
+
return undefined;
|
|
19
|
+
const point = raytraceAdd(ray.origin, raytraceScale(ray.direction, distance));
|
|
20
|
+
return {
|
|
21
|
+
shape: sphere,
|
|
22
|
+
distance,
|
|
23
|
+
point,
|
|
24
|
+
normal: raytraceNormalize(raytraceSub(point, sphere.center)),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export function raytracePlaneHit(ray, plane) {
|
|
28
|
+
const normal = raytraceNormalize(plane.normal);
|
|
29
|
+
const denominator = raytraceDot(normal, ray.direction);
|
|
30
|
+
if (Math.abs(denominator) <= MIN_HIT_DISTANCE)
|
|
31
|
+
return undefined;
|
|
32
|
+
const distance = raytraceDot(raytraceSub(plane.point, ray.origin), normal) / denominator;
|
|
33
|
+
if (distance <= MIN_HIT_DISTANCE)
|
|
34
|
+
return undefined;
|
|
35
|
+
return {
|
|
36
|
+
shape: plane,
|
|
37
|
+
distance,
|
|
38
|
+
point: raytraceAdd(ray.origin, raytraceScale(ray.direction, distance)),
|
|
39
|
+
normal,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export function raytraceReflect(ray, normal) {
|
|
43
|
+
return raytraceSub(ray, raytraceScale(normal, 2 * raytraceDot(ray, normal)));
|
|
44
|
+
}
|
|
45
|
+
export function raytraceNormalize(vector) {
|
|
46
|
+
const length = raytraceLength(vector);
|
|
47
|
+
return length === 0
|
|
48
|
+
? [0, 0, 0]
|
|
49
|
+
: [vector[0] / length, vector[1] / length, vector[2] / length];
|
|
50
|
+
}
|
|
51
|
+
export function raytraceLength(vector) {
|
|
52
|
+
return Math.hypot(vector[0], vector[1], vector[2]);
|
|
53
|
+
}
|
|
54
|
+
export function raytraceDot(a, b) {
|
|
55
|
+
return (a[0] * b[0]) + (a[1] * b[1]) + (a[2] * b[2]);
|
|
56
|
+
}
|
|
57
|
+
export function raytraceCross(a, b) {
|
|
58
|
+
return [
|
|
59
|
+
(a[1] * b[2]) - (a[2] * b[1]),
|
|
60
|
+
(a[2] * b[0]) - (a[0] * b[2]),
|
|
61
|
+
(a[0] * b[1]) - (a[1] * b[0]),
|
|
62
|
+
];
|
|
63
|
+
}
|
|
64
|
+
export function raytraceAdd(a, b) {
|
|
65
|
+
return [a[0] + b[0], a[1] + b[1], a[2] + b[2]];
|
|
66
|
+
}
|
|
67
|
+
export function raytraceSub(a, b) {
|
|
68
|
+
return [a[0] - b[0], a[1] - b[1], a[2] - b[2]];
|
|
69
|
+
}
|
|
70
|
+
export function raytraceScale(vector, scalar) {
|
|
71
|
+
return [vector[0] * scalar, vector[1] * scalar, vector[2] * scalar];
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=raytrace.part02.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raytrace.part02.js","sourceRoot":"","sources":["../src/raytrace.part02.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { type ActiveBindingCollection, type ActiveBindingProviderAssignment, type BindingLifecycleOwner, type CommandIntent, type DeepReadonly, type ViewDataContract } from '@flyingrobots/bijou';
|
|
2
|
-
import { type RuntimeCommandBuffer } from './runtime-engine.js';
|
|
3
|
-
import type { RuntimeStackLayer, RuntimeViewStack } from './runtime-engine.js';
|
|
2
|
+
import { type RuntimeCommandBuffer, RuntimeStackLayer, RuntimeViewStack } from './runtime-engine.js';
|
|
4
3
|
declare const RUNTIME_VIEW_BINDING_SOURCE_BRAND: unique symbol;
|
|
5
4
|
declare const RUNTIME_COMMAND_INTENT_EMISSION_BRAND: unique symbol;
|
|
6
5
|
declare const RUNTIME_COMMAND_INTENT_ROUTE_BRAND: unique symbol;
|
|
@@ -46,7 +45,7 @@ export interface DispatchRuntimeCommandIntentResult<Command> {
|
|
|
46
45
|
readonly buffer: RuntimeCommandBuffer<Command>;
|
|
47
46
|
}
|
|
48
47
|
export declare function runtimeViewBindingSource(input: RuntimeViewBindingSourceInput): RuntimeViewBindingSource;
|
|
49
|
-
export declare function runtimeCommandIntentEmission(intent: CommandIntent): RuntimeCommandIntentEmission
|
|
48
|
+
export declare function runtimeCommandIntentEmission(intent: CommandIntent): RuntimeCommandIntentEmission;
|
|
50
49
|
export declare function runtimeCommandIntentEmission<Payload>(intent: CommandIntent<Payload>, payload: Payload, options?: RuntimeCommandIntentEmissionOptions): RuntimeCommandIntentEmission<Payload>;
|
|
51
50
|
export declare function isRuntimeCommandIntentEmission(value: unknown): value is RuntimeCommandIntentEmission;
|
|
52
51
|
export declare function runtimeCommandIntentRoute<Payload, Command>(input: RuntimeCommandIntentRouteInput<Payload, Command>): RuntimeCommandIntentRoute<Payload, Command>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-binding.d.ts","sourceRoot":"","sources":["../src/runtime-binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,uBAAuB,EAC5B,KAAK,+BAA+B,EACpC,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,KAAK,oBAAoB,
|
|
1
|
+
{"version":3,"file":"runtime-binding.d.ts","sourceRoot":"","sources":["../src/runtime-binding.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime-binding.js
CHANGED
|
@@ -11,12 +11,13 @@ export function runtimeViewBindingSource(input) {
|
|
|
11
11
|
if (!isViewDataContract(input.contract)) {
|
|
12
12
|
throw new Error('runtime binding source: contract was not created by defineViewData()');
|
|
13
13
|
}
|
|
14
|
+
const providerIds = freezeProviderAssignments(input.providerIds);
|
|
14
15
|
const source = {
|
|
15
16
|
owner: input.owner,
|
|
16
17
|
contract: input.contract,
|
|
17
|
-
providerIds:
|
|
18
|
+
...(providerIds === undefined ? {} : { providerIds }),
|
|
18
19
|
};
|
|
19
|
-
|
|
20
|
+
brand(source, RUNTIME_VIEW_BINDING_SOURCE_BRAND);
|
|
20
21
|
return Object.freeze(source);
|
|
21
22
|
}
|
|
22
23
|
export function runtimeCommandIntentEmission(intent, payload, options = {}) {
|
|
@@ -24,22 +25,20 @@ export function runtimeCommandIntentEmission(intent, payload, options = {}) {
|
|
|
24
25
|
if (!isCommandIntent(intent)) {
|
|
25
26
|
throw new Error('runtime command intent emission: intent was not created by commandIntent()');
|
|
26
27
|
}
|
|
27
|
-
|
|
28
|
+
const owner = options['owner'];
|
|
29
|
+
if (owner !== undefined && !isBindingLifecycleOwner(owner)) {
|
|
28
30
|
throw new Error('runtime command intent emission: owner was not created by defineBindingLifecycleOwner()');
|
|
29
31
|
}
|
|
30
32
|
const emission = {
|
|
31
33
|
intent,
|
|
32
34
|
payload: freezeRuntimePayload(payload),
|
|
33
|
-
owner
|
|
35
|
+
owner,
|
|
34
36
|
};
|
|
35
|
-
|
|
37
|
+
brand(emission, RUNTIME_COMMAND_INTENT_EMISSION_BRAND);
|
|
36
38
|
return Object.freeze(emission);
|
|
37
39
|
}
|
|
38
40
|
export function isRuntimeCommandIntentEmission(value) {
|
|
39
|
-
return
|
|
40
|
-
&& typeof value === 'object'
|
|
41
|
-
&& Object.prototype.hasOwnProperty.call(value, RUNTIME_COMMAND_INTENT_EMISSION_BRAND)
|
|
42
|
-
&& value[RUNTIME_COMMAND_INTENT_EMISSION_BRAND] === true);
|
|
41
|
+
return hasOwnBrand(value, RUNTIME_COMMAND_INTENT_EMISSION_BRAND);
|
|
43
42
|
}
|
|
44
43
|
export function runtimeCommandIntentRoute(input) {
|
|
45
44
|
assertObjectRecord(input, 'runtime command intent route');
|
|
@@ -53,31 +52,31 @@ export function runtimeCommandIntentRoute(input) {
|
|
|
53
52
|
intent: input.intent,
|
|
54
53
|
toCommand: input.toCommand,
|
|
55
54
|
};
|
|
56
|
-
|
|
55
|
+
brand(route, RUNTIME_COMMAND_INTENT_ROUTE_BRAND);
|
|
57
56
|
return Object.freeze(route);
|
|
58
57
|
}
|
|
59
58
|
export function isRuntimeCommandIntentRoute(value) {
|
|
60
|
-
return
|
|
61
|
-
&& typeof value === 'object'
|
|
62
|
-
&& Object.prototype.hasOwnProperty.call(value, RUNTIME_COMMAND_INTENT_ROUTE_BRAND)
|
|
63
|
-
&& value[RUNTIME_COMMAND_INTENT_ROUTE_BRAND] === true);
|
|
59
|
+
return hasOwnBrand(value, RUNTIME_COMMAND_INTENT_ROUTE_BRAND);
|
|
64
60
|
}
|
|
65
61
|
export function dispatchRuntimeCommandIntent(input) {
|
|
66
62
|
assertObjectRecord(input, 'runtime command intent dispatch');
|
|
67
63
|
if (!isRuntimeCommandIntentEmission(input.emission)) {
|
|
68
64
|
throw new Error('runtime command intent dispatch: emission was not created by runtimeCommandIntentEmission()');
|
|
69
65
|
}
|
|
70
|
-
if (!
|
|
66
|
+
if (!isRuntimeCommandIntentRouteList(input.routes)) {
|
|
71
67
|
throw new Error('runtime command intent dispatch: routes must be an array');
|
|
72
68
|
}
|
|
73
69
|
if (!isRuntimeCommandBuffer(input.buffer)) {
|
|
74
70
|
throw new Error('runtime command intent dispatch: buffer must be a RuntimeCommandBuffer');
|
|
75
71
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
72
|
+
let route;
|
|
73
|
+
input.routes.forEach((candidate, index) => {
|
|
74
|
+
if (!hasOwnBrand(candidate, RUNTIME_COMMAND_INTENT_ROUTE_BRAND)) {
|
|
75
|
+
throw new Error(`runtime command intent dispatch: route at index ${String(index)} was not created by runtimeCommandIntentRoute()`);
|
|
76
|
+
}
|
|
77
|
+
if (route === undefined && candidate.intent.id === input.emission.intent.id) {
|
|
78
|
+
route = candidate;
|
|
79
79
|
}
|
|
80
|
-
return candidate.intent.id === input.emission.intent.id;
|
|
81
80
|
});
|
|
82
81
|
if (route === undefined) {
|
|
83
82
|
throw new Error(`runtime command intent dispatch: no route for intent ${input.emission.intent.id}`);
|
|
@@ -89,10 +88,7 @@ export function dispatchRuntimeCommandIntent(input) {
|
|
|
89
88
|
});
|
|
90
89
|
}
|
|
91
90
|
export function isRuntimeViewBindingSource(value) {
|
|
92
|
-
return
|
|
93
|
-
&& typeof value === 'object'
|
|
94
|
-
&& Object.prototype.hasOwnProperty.call(value, RUNTIME_VIEW_BINDING_SOURCE_BRAND)
|
|
95
|
-
&& value[RUNTIME_VIEW_BINDING_SOURCE_BRAND] === true);
|
|
91
|
+
return hasOwnBrand(value, RUNTIME_VIEW_BINDING_SOURCE_BRAND);
|
|
96
92
|
}
|
|
97
93
|
export function runtimeActiveBindingLayers(stack) {
|
|
98
94
|
if (!isRuntimeViewStack(stack)) {
|
|
@@ -119,7 +115,7 @@ export function collectRuntimeViewBindings(stack) {
|
|
|
119
115
|
}
|
|
120
116
|
return bindingSources.map((source, index) => {
|
|
121
117
|
if (!isRuntimeViewBindingSource(source)) {
|
|
122
|
-
throw new Error(`runtime binding collection: source at layer ${layer.id} index ${index} `
|
|
118
|
+
throw new Error(`runtime binding collection: source at layer ${layer.id} index ${String(index)} `
|
|
123
119
|
+ 'was not created by runtimeViewBindingSource()');
|
|
124
120
|
}
|
|
125
121
|
return {
|
|
@@ -134,13 +130,23 @@ export function collectRuntimeViewBindings(stack) {
|
|
|
134
130
|
function isRuntimeViewStack(value) {
|
|
135
131
|
return Boolean(value
|
|
136
132
|
&& typeof value === 'object'
|
|
137
|
-
&& Array.isArray(value
|
|
133
|
+
&& Array.isArray(Reflect.get(value, 'layers')));
|
|
138
134
|
}
|
|
139
135
|
function isRuntimeCommandBuffer(value) {
|
|
140
136
|
return Boolean(value
|
|
141
137
|
&& typeof value === 'object'
|
|
142
|
-
&& Array.isArray(value
|
|
138
|
+
&& Array.isArray(Reflect.get(value, 'items')));
|
|
139
|
+
}
|
|
140
|
+
function brand(value, brandSymbol) {
|
|
141
|
+
Object.defineProperty(value, brandSymbol, { value: true });
|
|
143
142
|
}
|
|
143
|
+
function hasOwnBrand(value, brandSymbol) {
|
|
144
|
+
return (value !== null
|
|
145
|
+
&& typeof value === 'object'
|
|
146
|
+
&& Object.prototype.hasOwnProperty.call(value, brandSymbol)
|
|
147
|
+
&& Reflect.get(value, brandSymbol) === true);
|
|
148
|
+
}
|
|
149
|
+
function isRuntimeCommandIntentRouteList(value) { return Array.isArray(value); }
|
|
144
150
|
function freezeProviderAssignments(assignments) {
|
|
145
151
|
if (assignments === undefined) {
|
|
146
152
|
return undefined;
|
|
@@ -150,10 +156,10 @@ function freezeProviderAssignments(assignments) {
|
|
|
150
156
|
}
|
|
151
157
|
const seenRequirementIds = new Set();
|
|
152
158
|
return Object.freeze(assignments.map((assignment, index) => {
|
|
153
|
-
assertObjectRecord(assignment, 'runtime binding source', `provider assignment ${index}`);
|
|
159
|
+
assertObjectRecord(assignment, 'runtime binding source', `provider assignment ${String(index)}`);
|
|
154
160
|
const requirementId = normalizeRequiredText({
|
|
155
161
|
scope: 'runtime binding source',
|
|
156
|
-
field: `provider assignment ${index} requirementId`,
|
|
162
|
+
field: `provider assignment ${String(index)} requirementId`,
|
|
157
163
|
value: assignment['requirementId'],
|
|
158
164
|
});
|
|
159
165
|
if (seenRequirementIds.has(requirementId)) {
|
|
@@ -164,7 +170,7 @@ function freezeProviderAssignments(assignments) {
|
|
|
164
170
|
requirementId,
|
|
165
171
|
providerId: normalizeRequiredText({
|
|
166
172
|
scope: 'runtime binding source',
|
|
167
|
-
field: `provider assignment ${index} providerId`,
|
|
173
|
+
field: `provider assignment ${String(index)} providerId`,
|
|
168
174
|
value: assignment['providerId'],
|
|
169
175
|
}),
|
|
170
176
|
});
|
|
@@ -198,13 +204,16 @@ function cloneRuntimePayload(value, path, seen = new WeakSet()) {
|
|
|
198
204
|
}
|
|
199
205
|
seen.add(objectValue);
|
|
200
206
|
try {
|
|
201
|
-
if (
|
|
202
|
-
return value.map((item, index) => cloneRuntimePayload(item, `${path}[${index}]`, seen));
|
|
207
|
+
if (isRuntimePayloadArray(value)) {
|
|
208
|
+
return value.map((item, index) => cloneRuntimePayload(item, `${path}[${String(index)}]`, seen));
|
|
203
209
|
}
|
|
204
210
|
if (!isPlainObject(value)) {
|
|
205
211
|
throw new Error(`runtime command intent payload: unsupported ${objectKind(value)} at ${path}`);
|
|
206
212
|
}
|
|
207
|
-
const clone =
|
|
213
|
+
const clone = {};
|
|
214
|
+
if (Reflect.getPrototypeOf(value) === null) {
|
|
215
|
+
Object.setPrototypeOf(clone, null);
|
|
216
|
+
}
|
|
208
217
|
const descriptors = Object.getOwnPropertyDescriptors(value);
|
|
209
218
|
for (const key of Reflect.ownKeys(descriptors)) {
|
|
210
219
|
if (typeof key === 'symbol') {
|
|
@@ -233,13 +242,12 @@ function deepFreeze(value, seen = new WeakSet()) {
|
|
|
233
242
|
if (value === null || typeof value !== 'object') {
|
|
234
243
|
return value;
|
|
235
244
|
}
|
|
236
|
-
|
|
237
|
-
if (seen.has(objectValue)) {
|
|
245
|
+
if (seen.has(value)) {
|
|
238
246
|
return value;
|
|
239
247
|
}
|
|
240
|
-
seen.add(
|
|
241
|
-
for (const key of Reflect.ownKeys(
|
|
242
|
-
const descriptor = Object.getOwnPropertyDescriptor(
|
|
248
|
+
seen.add(value);
|
|
249
|
+
for (const key of Reflect.ownKeys(value)) {
|
|
250
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
243
251
|
if (descriptor !== undefined && 'value' in descriptor) {
|
|
244
252
|
deepFreeze(descriptor.value, seen);
|
|
245
253
|
}
|
|
@@ -262,9 +270,12 @@ function normalizeRequiredText(options) {
|
|
|
262
270
|
return normalized;
|
|
263
271
|
}
|
|
264
272
|
function isPlainObject(value) {
|
|
265
|
-
const prototype =
|
|
273
|
+
const prototype = Reflect.getPrototypeOf(value);
|
|
266
274
|
return prototype === Object.prototype || prototype === null;
|
|
267
275
|
}
|
|
276
|
+
function isRuntimePayloadArray(value) {
|
|
277
|
+
return Array.isArray(value);
|
|
278
|
+
}
|
|
268
279
|
function objectKind(value) {
|
|
269
280
|
return Object.prototype.toString.call(value).slice(8, -1);
|
|
270
281
|
}
|