sygnal 5.3.7 → 6.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/CHANGELOG.md +646 -0
- package/README.md +77 -47
- package/dist/astro/client.cjs.js +33 -8114
- package/dist/astro/client.cjs.js.map +1 -0
- package/dist/astro/client.mjs +33 -8114
- package/dist/astro/client.mjs.map +1 -0
- package/dist/astro/index.cjs.js +1039 -9
- package/dist/astro/index.cjs.js.map +1 -0
- package/dist/astro/index.mjs +1038 -9
- package/dist/astro/index.mjs.map +1 -0
- package/dist/astro/server.cjs.js +3400 -166
- package/dist/astro/server.cjs.js.map +1 -0
- package/dist/astro/server.mjs +3400 -166
- package/dist/astro/server.mjs.map +1 -0
- package/dist/devtools.cjs.js +1431 -0
- package/dist/devtools.cjs.js.map +1 -0
- package/dist/devtools.esm.js +1419 -0
- package/dist/devtools.esm.js.map +1 -0
- package/dist/diagnostics.cjs.js +4033 -0
- package/dist/diagnostics.cjs.js.map +1 -0
- package/dist/diagnostics.esm.js +4003 -0
- package/dist/diagnostics.esm.js.map +1 -0
- package/dist/element.cjs.js +230 -0
- package/dist/element.cjs.js.map +1 -0
- package/dist/element.esm.js +228 -0
- package/dist/element.esm.js.map +1 -0
- package/dist/guide/accessibility.md +257 -0
- package/dist/guide/adapters.md +221 -0
- package/dist/guide/behaviors.md +312 -0
- package/dist/guide/browser-sources.md +203 -0
- package/dist/guide/drag-and-drop.md +342 -0
- package/dist/guide/element-commands.md +306 -0
- package/dist/guide/error-boundaries.md +169 -0
- package/dist/guide/forms-reference.md +381 -0
- package/dist/guide/forms.md +250 -0
- package/dist/guide/http.md +299 -0
- package/dist/guide/inputs.md +173 -0
- package/dist/guide/persistence.md +245 -0
- package/dist/guide/recipes/carousel.md +155 -0
- package/dist/guide/recipes/charts.md +177 -0
- package/dist/guide/recipes/code-editor.md +135 -0
- package/dist/guide/recipes/data-grid.md +155 -0
- package/dist/guide/recipes/data-table.md +196 -0
- package/dist/guide/recipes/i18n.md +222 -0
- package/dist/guide/recipes/icons.md +115 -0
- package/dist/guide/recipes/overview.md +33 -0
- package/dist/guide/recipes/rich-text.md +154 -0
- package/dist/guide/resources.md +471 -0
- package/dist/guide/ssr.md +255 -0
- package/dist/guide/timers.md +178 -0
- package/dist/guide/ui/accordion.md +93 -0
- package/dist/guide/ui/combobox.md +144 -0
- package/dist/guide/ui/dialog.md +124 -0
- package/dist/guide/ui/disclosure.md +60 -0
- package/dist/guide/ui/menu.md +125 -0
- package/dist/guide/ui/overview.md +166 -0
- package/dist/guide/ui/popover.md +101 -0
- package/dist/guide/ui/select.md +114 -0
- package/dist/guide/ui/tabs.md +161 -0
- package/dist/guide/ui/toaster.md +152 -0
- package/dist/guide/ui/tooltip.md +103 -0
- package/dist/guide/undo.md +178 -0
- package/dist/guide/virtual-collections.md +183 -0
- package/dist/guide/web-components.md +179 -0
- package/dist/guide/widgets.md +217 -0
- package/dist/index.cjs.js +15283 -6279
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +3739 -370
- package/dist/index.esm.js +15230 -6274
- package/dist/index.esm.js.map +1 -0
- package/dist/jsx-dev-runtime.cjs.js +27 -329
- package/dist/jsx-dev-runtime.cjs.js.map +1 -0
- package/dist/jsx-dev-runtime.esm.js +20 -322
- package/dist/jsx-dev-runtime.esm.js.map +1 -0
- package/dist/jsx-runtime.cjs.js +27 -329
- package/dist/jsx-runtime.cjs.js.map +1 -0
- package/dist/jsx-runtime.esm.js +20 -322
- package/dist/jsx-runtime.esm.js.map +1 -0
- package/dist/jsx.cjs.js +11 -309
- package/dist/jsx.cjs.js.map +1 -0
- package/dist/jsx.esm.js +9 -310
- package/dist/jsx.esm.js.map +1 -0
- package/dist/react.cjs.js +117 -0
- package/dist/react.cjs.js.map +1 -0
- package/dist/react.esm.js +115 -0
- package/dist/react.esm.js.map +1 -0
- package/dist/shims/globalthis.cjs +20 -0
- package/dist/sygnal.min.js +2 -1
- package/dist/sygnal.min.js.map +1 -0
- package/dist/ui-combobox.cjs.js +169 -0
- package/dist/ui-combobox.cjs.js.map +1 -0
- package/dist/ui-combobox.esm.js +148 -0
- package/dist/ui-combobox.esm.js.map +1 -0
- package/dist/ui-menu.cjs.js +87 -0
- package/dist/ui-menu.cjs.js.map +1 -0
- package/dist/ui-menu.esm.js +66 -0
- package/dist/ui-menu.esm.js.map +1 -0
- package/dist/ui-select.cjs.js +104 -0
- package/dist/ui-select.cjs.js.map +1 -0
- package/dist/ui-select.esm.js +83 -0
- package/dist/ui-select.esm.js.map +1 -0
- package/dist/ui.cjs.js +738 -0
- package/dist/ui.cjs.js.map +1 -0
- package/dist/ui.esm.js +727 -0
- package/dist/ui.esm.js.map +1 -0
- package/dist/vike/ClientOnly.cjs.js +5 -14
- package/dist/vike/ClientOnly.cjs.js.map +1 -0
- package/dist/vike/ClientOnly.mjs +5 -14
- package/dist/vike/ClientOnly.mjs.map +1 -0
- package/dist/vike/{+config.js → config/+config.js} +10 -1
- package/dist/vike/config/+config.js.map +1 -0
- package/dist/vike/config/package.json +6 -0
- package/dist/vike/onRenderClient.cjs.js +166 -95
- package/dist/vike/onRenderClient.cjs.js.map +1 -0
- package/dist/vike/onRenderClient.mjs +166 -95
- package/dist/vike/onRenderClient.mjs.map +1 -0
- package/dist/vike/onRenderHtml.cjs.js +60 -24
- package/dist/vike/onRenderHtml.cjs.js.map +1 -0
- package/dist/vike/onRenderHtml.mjs +61 -25
- package/dist/vike/onRenderHtml.mjs.map +1 -0
- package/dist/vite/plugin.cjs.js +926 -65
- package/dist/vite/plugin.cjs.js.map +1 -0
- package/dist/vite/plugin.mjs +925 -65
- package/dist/vite/plugin.mjs.map +1 -0
- package/dist/zag.cjs.js +408 -0
- package/dist/zag.cjs.js.map +1 -0
- package/dist/zag.esm.js +405 -0
- package/dist/zag.esm.js.map +1 -0
- package/llms.txt +313 -0
- package/package.json +109 -16
- package/src/astro/client.ts +40 -18
- package/src/astro/index.d.ts +48 -1
- package/src/astro/index.ts +106 -9
- package/src/astro/server.ts +11 -3
- package/src/collection.ts +6 -90
- package/src/core/actions.ts +134 -0
- package/src/core/cell.ts +202 -0
- package/src/core/debug.ts +23 -0
- package/src/core/define.ts +242 -0
- package/src/core/hooks.ts +314 -0
- package/src/core/hosts/collection.ts +325 -0
- package/src/core/hosts/switchable.ts +146 -0
- package/src/core/instance.ts +592 -0
- package/src/core/markers/clientonly.ts +13 -0
- package/src/core/markers/lazy.ts +40 -0
- package/src/core/markers/portal.ts +96 -0
- package/src/core/markers/suspense.ts +41 -0
- package/src/core/markers/transition.ts +70 -0
- package/src/core/registry.ts +25 -0
- package/src/core/runtime.ts +573 -0
- package/src/core/statics.ts +104 -0
- package/src/core/teardown.ts +60 -0
- package/src/core/view.ts +37 -0
- package/src/cycle/dom/DocumentDOMSource.ts +13 -8
- package/src/cycle/dom/ElementFinder.ts +7 -9
- package/src/cycle/dom/EventDelegator.ts +174 -223
- package/src/cycle/dom/IsolateModule.ts +65 -35
- package/src/cycle/dom/MainDOMSource.ts +13 -2
- package/src/cycle/dom/PriorityQueue.ts +4 -2
- package/src/cycle/dom/SymbolTree.ts +18 -47
- package/src/cycle/dom/classNameModule.ts +76 -0
- package/src/cycle/dom/controlledInputModule.ts +50 -0
- package/src/cycle/dom/enrichEventStream.ts +29 -45
- package/src/cycle/dom/fragment.ts +7 -0
- package/src/cycle/dom/isolate.ts +30 -27
- package/src/cycle/dom/makeDOMDriver.ts +115 -57
- package/src/cycle/dom/mockDOMSource.ts +83 -9
- package/src/cycle/dom/modules.ts +21 -4
- package/src/cycle/dom/propsModule.ts +65 -0
- package/src/cycle/dom/selectModule.ts +22 -17
- package/src/cycle/dom/snabbdom.ts +1 -6
- package/src/cycle/dom/thunk.ts +3 -0
- package/src/cycle/dom/utils.ts +98 -0
- package/src/cycle/dom/viewTransition.ts +43 -0
- package/src/cycle/state/StateSource.ts +20 -4
- package/src/cycle/state/objIsEqual.ts +50 -0
- package/src/cycle/state/types.ts +0 -10
- package/src/defineComponent.ts +34 -0
- package/src/devtools.d.ts +151 -0
- package/src/devtools.ts +34 -0
- package/src/element.d.ts +59 -0
- package/src/element.ts +235 -0
- package/src/extra/backoff.ts +9 -0
- package/src/extra/behaviors.ts +169 -0
- package/src/extra/browserSignals.ts +23 -0
- package/src/extra/browserSources.ts +326 -0
- package/src/extra/command.ts +3 -3
- package/src/extra/controls.ts +47 -0
- package/src/extra/copyAsTest.ts +286 -0
- package/src/extra/devtools.ts +109 -31
- package/src/extra/devtoolsActions.ts +379 -0
- package/src/extra/devtoolsHook.ts +9 -0
- package/src/extra/devtoolsNext.ts +83 -0
- package/src/extra/diagnostics/checks/actionLog.ts +108 -0
- package/src/extra/diagnostics/checks/behaviors.ts +49 -0
- package/src/extra/diagnostics/checks/browserSources.ts +96 -0
- package/src/extra/diagnostics/checks/collections.ts +67 -0
- package/src/extra/diagnostics/checks/controls.ts +148 -0
- package/src/extra/diagnostics/checks/dataset.ts +57 -0
- package/src/extra/diagnostics/checks/dom.ts +250 -0
- package/src/extra/diagnostics/checks/elementCommands.ts +175 -0
- package/src/extra/diagnostics/checks/events.ts +83 -0
- package/src/extra/diagnostics/checks/fetch.ts +135 -0
- package/src/extra/diagnostics/checks/forms.ts +163 -0
- package/src/extra/diagnostics/checks/index.ts +202 -0
- package/src/extra/diagnostics/checks/inspect.ts +427 -0
- package/src/extra/diagnostics/checks/next.ts +417 -0
- package/src/extra/diagnostics/checks/persist.ts +54 -0
- package/src/extra/diagnostics/checks/props.ts +56 -0
- package/src/extra/diagnostics/checks/public.d.ts +302 -0
- package/src/extra/diagnostics/checks/replies.ts +128 -0
- package/src/extra/diagnostics/checks/router.ts +100 -0
- package/src/extra/diagnostics/checks/rxjsHints.ts +88 -0
- package/src/extra/diagnostics/checks/shared.ts +203 -0
- package/src/extra/diagnostics/checks/shorthand.ts +115 -0
- package/src/extra/diagnostics/checks/sortable.ts +129 -0
- package/src/extra/diagnostics/checks/state.ts +148 -0
- package/src/extra/diagnostics/checks/statics.ts +48 -0
- package/src/extra/diagnostics/checks/strict.ts +55 -0
- package/src/extra/diagnostics/checks/timers.ts +80 -0
- package/src/extra/diagnostics/checks/viewTransitions.ts +47 -0
- package/src/extra/diagnostics/checks/virtual.ts +73 -0
- package/src/extra/diagnostics/checks/widgets.ts +109 -0
- package/src/extra/diagnostics/checks/wiring.ts +121 -0
- package/src/extra/diagnostics/codes.ts +477 -0
- package/src/extra/diagnostics/index.ts +353 -0
- package/src/extra/diagnostics/legacy.ts +76 -0
- package/src/extra/driverFactories.ts +172 -60
- package/src/extra/elementCommands.ts +53 -0
- package/src/extra/eventDriver.ts +4 -0
- package/src/extra/fetchDriver.ts +519 -0
- package/src/extra/flatten.ts +75 -0
- package/src/extra/focusWithin.ts +27 -0
- package/src/extra/form.ts +268 -0
- package/src/extra/formHelpers.ts +139 -0
- package/src/extra/head.ts +106 -0
- package/src/extra/hmr.ts +2 -3
- package/src/extra/owned.ts +24 -0
- package/src/extra/pager.ts +50 -0
- package/src/extra/persist.ts +133 -0
- package/src/extra/pwa.ts +1 -1
- package/src/extra/queryCache.ts +107 -0
- package/src/extra/reducers.ts +13 -6
- package/src/extra/reduxDevtools.ts +92 -0
- package/src/extra/replies.ts +54 -0
- package/src/extra/router.ts +323 -0
- package/src/extra/run.ts +94 -210
- package/src/extra/selection.ts +76 -0
- package/src/extra/socketDriver.ts +265 -0
- package/src/extra/sortable.ts +377 -0
- package/src/extra/ssr.ts +427 -160
- package/src/extra/standardSchema.ts +27 -0
- package/src/extra/testing.ts +3158 -190
- package/src/extra/timers.ts +95 -0
- package/src/extra/undo.ts +261 -0
- package/src/extra/viewTransitions.ts +38 -0
- package/src/extra/virtual.ts +513 -0
- package/src/extra/widget.ts +201 -0
- package/src/extra/xstreamExtras.ts +269 -0
- package/src/index.d.ts +3012 -87
- package/src/index.ts +32 -10
- package/src/jsx-runtime.ts +15 -1
- package/src/jsx.ts +2 -1
- package/src/lazy.ts +50 -7
- package/src/portal.ts +3 -1
- package/src/pragma/index.ts +262 -134
- package/src/react-peers.d.ts +5 -0
- package/src/react.d.ts +43 -0
- package/src/react.ts +110 -0
- package/src/shared.ts +48 -0
- package/src/slot.ts +1 -1
- package/src/suspense.ts +3 -1
- package/src/switchable.ts +6 -119
- package/src/transition.ts +3 -1
- package/src/ui/accordion.ts +64 -0
- package/src/ui/dialog.ts +129 -0
- package/src/ui/disclosure.ts +35 -0
- package/src/ui/popover.ts +45 -0
- package/src/ui/shared.ts +94 -0
- package/src/ui/tabs.ts +82 -0
- package/src/ui/toaster.ts +198 -0
- package/src/ui/tooltip.ts +70 -0
- package/src/ui/zag/combobox.ts +115 -0
- package/src/ui/zag/menu.ts +40 -0
- package/src/ui/zag/select.ts +54 -0
- package/src/ui/zag/shared.ts +43 -0
- package/src/ui-combobox.d.ts +20 -0
- package/src/ui-combobox.ts +6 -0
- package/src/ui-menu.d.ts +30 -0
- package/src/ui-menu.ts +6 -0
- package/src/ui-select.d.ts +17 -0
- package/src/ui-select.ts +6 -0
- package/src/ui-zag-types.d.ts +42 -0
- package/src/ui.d.ts +208 -0
- package/src/ui.ts +15 -0
- package/src/vike/+config.ts +9 -1
- package/src/vike/ClientOnly.ts +1 -1
- package/src/vike/onRenderClient.ts +144 -96
- package/src/vike/onRenderHtml.ts +69 -26
- package/src/vike/types.ts +27 -4
- package/src/vite/globalthis-shim.ts +18 -0
- package/src/vite/globalthis.ts +56 -0
- package/src/vite/plugin.d.ts +114 -2
- package/src/vite/plugin.ts +920 -56
- package/src/zag.d.ts +64 -0
- package/src/zag.ts +238 -0
- package/dist/astro/astro/client.d.ts +0 -5
- package/dist/astro/astro/index.d.ts +0 -16
- package/dist/astro/astro/server.d.ts +0 -12
- package/dist/astro/client.d.ts +0 -5
- package/dist/astro/client.esm.js +0 -4665
- package/dist/astro/collection.d.ts +0 -12
- package/dist/astro/component.d.ts +0 -22
- package/dist/astro/cycle/dom/BodyDOMSource.d.ts +0 -10
- package/dist/astro/cycle/dom/DOMSource.d.ts +0 -11
- package/dist/astro/cycle/dom/DocumentDOMSource.d.ts +0 -12
- package/dist/astro/cycle/dom/ElementFinder.d.ts +0 -8
- package/dist/astro/cycle/dom/EventDelegator.d.ts +0 -34
- package/dist/astro/cycle/dom/IsolateModule.d.ts +0 -23
- package/dist/astro/cycle/dom/MainDOMSource.d.ts +0 -32
- package/dist/astro/cycle/dom/PriorityQueue.d.ts +0 -7
- package/dist/astro/cycle/dom/ScopeChecker.d.ts +0 -9
- package/dist/astro/cycle/dom/SymbolTree.d.ts +0 -9
- package/dist/astro/cycle/dom/VNodeWrapper.d.ts +0 -8
- package/dist/astro/cycle/dom/enrichEventStream.d.ts +0 -24
- package/dist/astro/cycle/dom/fromEvent.d.ts +0 -6
- package/dist/astro/cycle/dom/index.d.ts +0 -8
- package/dist/astro/cycle/dom/isolate.d.ts +0 -9
- package/dist/astro/cycle/dom/makeDOMDriver.d.ts +0 -11
- package/dist/astro/cycle/dom/mockDOMSource.d.ts +0 -17
- package/dist/astro/cycle/dom/modules.d.ts +0 -5
- package/dist/astro/cycle/dom/snabbdom.d.ts +0 -22
- package/dist/astro/cycle/dom/styleModule.d.ts +0 -13
- package/dist/astro/cycle/dom/thunk.d.ts +0 -11
- package/dist/astro/cycle/dom/utils.d.ts +0 -8
- package/dist/astro/cycle/isolate/index.d.ts +0 -42
- package/dist/astro/cycle/run/adapt.d.ts +0 -6
- package/dist/astro/cycle/run/index.d.ts +0 -36
- package/dist/astro/cycle/run/internals.d.ts +0 -8
- package/dist/astro/cycle/run/types.d.ts +0 -49
- package/dist/astro/cycle/state/Collection.d.ts +0 -29
- package/dist/astro/cycle/state/StateSource.d.ts +0 -20
- package/dist/astro/cycle/state/index.d.ts +0 -5
- package/dist/astro/cycle/state/pickCombine.d.ts +0 -3
- package/dist/astro/cycle/state/pickMerge.d.ts +0 -3
- package/dist/astro/cycle/state/types.d.ts +0 -18
- package/dist/astro/cycle/state/withState.d.ts +0 -17
- package/dist/astro/extra/classes.d.ts +0 -7
- package/dist/astro/extra/devtools.d.ts +0 -78
- package/dist/astro/extra/dragDriver.d.ts +0 -20
- package/dist/astro/extra/driverFactories.d.ts +0 -12
- package/dist/astro/extra/eventDriver.d.ts +0 -9
- package/dist/astro/extra/exactState.d.ts +0 -1
- package/dist/astro/extra/hmr.d.ts +0 -17
- package/dist/astro/extra/logDriver.d.ts +0 -2
- package/dist/astro/extra/processDrag.d.ts +0 -19
- package/dist/astro/extra/processForm.d.ts +0 -15
- package/dist/astro/extra/run.d.ts +0 -13
- package/dist/astro/extra/xstreamCompat.d.ts +0 -5
- package/dist/astro/index.d.ts +0 -19
- package/dist/astro/index.esm.js +0 -27
- package/dist/astro/jsx-dev-runtime.d.ts +0 -1
- package/dist/astro/jsx-runtime.d.ts +0 -4
- package/dist/astro/jsx.d.ts +0 -2
- package/dist/astro/pragma/fn.d.ts +0 -7
- package/dist/astro/pragma/index.d.ts +0 -7
- package/dist/astro/pragma/is.d.ts +0 -10
- package/dist/astro/server.d.ts +0 -12
- package/dist/astro/server.esm.js +0 -25
- package/dist/astro/switchable.d.ts +0 -7
- package/dist/collection.d.ts +0 -12
- package/dist/component.d.ts +0 -22
- package/dist/cycle/dom/BodyDOMSource.d.ts +0 -10
- package/dist/cycle/dom/DOMSource.d.ts +0 -11
- package/dist/cycle/dom/DocumentDOMSource.d.ts +0 -12
- package/dist/cycle/dom/ElementFinder.d.ts +0 -8
- package/dist/cycle/dom/EventDelegator.d.ts +0 -34
- package/dist/cycle/dom/IsolateModule.d.ts +0 -23
- package/dist/cycle/dom/MainDOMSource.d.ts +0 -32
- package/dist/cycle/dom/PriorityQueue.d.ts +0 -7
- package/dist/cycle/dom/ScopeChecker.d.ts +0 -9
- package/dist/cycle/dom/SymbolTree.d.ts +0 -9
- package/dist/cycle/dom/VNodeWrapper.d.ts +0 -8
- package/dist/cycle/dom/enrichEventStream.d.ts +0 -24
- package/dist/cycle/dom/fromEvent.d.ts +0 -6
- package/dist/cycle/dom/index.d.ts +0 -8
- package/dist/cycle/dom/isolate.d.ts +0 -9
- package/dist/cycle/dom/makeDOMDriver.d.ts +0 -11
- package/dist/cycle/dom/mockDOMSource.d.ts +0 -17
- package/dist/cycle/dom/modules.d.ts +0 -5
- package/dist/cycle/dom/snabbdom.d.ts +0 -22
- package/dist/cycle/dom/styleModule.d.ts +0 -13
- package/dist/cycle/dom/thunk.d.ts +0 -11
- package/dist/cycle/dom/utils.d.ts +0 -8
- package/dist/cycle/isolate/index.d.ts +0 -42
- package/dist/cycle/run/adapt.d.ts +0 -6
- package/dist/cycle/run/index.d.ts +0 -36
- package/dist/cycle/run/internals.d.ts +0 -8
- package/dist/cycle/run/types.d.ts +0 -49
- package/dist/cycle/state/Collection.d.ts +0 -29
- package/dist/cycle/state/StateSource.d.ts +0 -20
- package/dist/cycle/state/index.d.ts +0 -5
- package/dist/cycle/state/pickCombine.d.ts +0 -3
- package/dist/cycle/state/pickMerge.d.ts +0 -3
- package/dist/cycle/state/types.d.ts +0 -18
- package/dist/cycle/state/withState.d.ts +0 -17
- package/dist/extra/classes.d.ts +0 -7
- package/dist/extra/devtools.d.ts +0 -78
- package/dist/extra/dragDriver.d.ts +0 -20
- package/dist/extra/driverFactories.d.ts +0 -12
- package/dist/extra/eventDriver.d.ts +0 -9
- package/dist/extra/exactState.d.ts +0 -1
- package/dist/extra/hmr.d.ts +0 -17
- package/dist/extra/logDriver.d.ts +0 -2
- package/dist/extra/processDrag.d.ts +0 -19
- package/dist/extra/processForm.d.ts +0 -15
- package/dist/extra/run.d.ts +0 -13
- package/dist/extra/xstreamCompat.d.ts +0 -5
- package/dist/jsx-dev-runtime.d.ts +0 -1
- package/dist/jsx-dev-runtime.js +0 -224
- package/dist/jsx-runtime.d.ts +0 -4
- package/dist/jsx-runtime.js +0 -224
- package/dist/jsx.d.ts +0 -2
- package/dist/pragma/fn.d.ts +0 -7
- package/dist/pragma/index.d.ts +0 -7
- package/dist/pragma/is.d.ts +0 -10
- package/dist/switchable.d.ts +0 -7
- package/dist/vike/+config.cjs.js +0 -65
- package/src/component.ts +0 -2256
- package/src/cycle/isolate/index.ts +0 -196
- package/src/cycle/run/index.ts +0 -151
- package/src/cycle/run/internals.ts +0 -143
- package/src/cycle/state/Collection.ts +0 -174
- package/src/cycle/state/index.ts +0 -5
- package/src/cycle/state/pickCombine.ts +0 -167
- package/src/cycle/state/pickMerge.ts +0 -122
- package/src/cycle/state/withState.ts +0 -47
- package/src/pragma/fn.ts +0 -55
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import xs, {Stream, Subscription} from 'xstream';
|
|
2
2
|
import {ScopeChecker} from './ScopeChecker';
|
|
3
|
-
import {IsolateModule} from './IsolateModule';
|
|
3
|
+
import {IsolateModule, upOf} from './IsolateModule';
|
|
4
4
|
import {getSelectors, isEqualNamespace} from './utils';
|
|
5
5
|
import {ElementFinder} from './ElementFinder';
|
|
6
6
|
import {EventsFnOptions} from './DOMSource';
|
|
@@ -41,7 +41,11 @@ export const eventTypesThatDontBubble = [
|
|
|
41
41
|
`pointerleave`,
|
|
42
42
|
`gotpointercapture`,
|
|
43
43
|
`lostpointercapture`,
|
|
44
|
-
// Media
|
|
44
|
+
// Media (and img/script/link error, abort)
|
|
45
|
+
`abort`,
|
|
46
|
+
`error`,
|
|
47
|
+
`loadstart`,
|
|
48
|
+
`progress`,
|
|
45
49
|
`canplay`,
|
|
46
50
|
`canplaythrough`,
|
|
47
51
|
`durationchange`,
|
|
@@ -68,7 +72,11 @@ export const eventTypesThatDontBubble = [
|
|
|
68
72
|
`reset`,
|
|
69
73
|
`submit`,
|
|
70
74
|
`formdata`,
|
|
75
|
+
// details, popover, dialog
|
|
71
76
|
`toggle`,
|
|
77
|
+
`beforetoggle`,
|
|
78
|
+
`cancel`,
|
|
79
|
+
`close`,
|
|
72
80
|
// Animation / Transition
|
|
73
81
|
`animationstart`,
|
|
74
82
|
`animationend`,
|
|
@@ -91,7 +99,8 @@ interface NonBubblingListener {
|
|
|
91
99
|
destination: Destination;
|
|
92
100
|
}
|
|
93
101
|
|
|
94
|
-
|
|
102
|
+
// [subject, type, finder, destination, number of started streams]
|
|
103
|
+
type NonBubblingMeta = [Stream<Event>, string, ElementFinder, Destination, number]
|
|
95
104
|
|
|
96
105
|
export class EventDelegator {
|
|
97
106
|
private virtualListeners = new SymbolTree<
|
|
@@ -142,9 +151,6 @@ export class EventDelegator {
|
|
|
142
151
|
options: EventsFnOptions,
|
|
143
152
|
bubbles?: boolean
|
|
144
153
|
): Stream<Event> {
|
|
145
|
-
const subject = xs.never();
|
|
146
|
-
let dest;
|
|
147
|
-
|
|
148
154
|
const scopeChecker = new ScopeChecker(namespace, this.isolateModule);
|
|
149
155
|
|
|
150
156
|
const shouldBubble =
|
|
@@ -157,94 +163,87 @@ export class EventDelegator {
|
|
|
157
163
|
this.setupDOMListener(eventType, !!options.passive);
|
|
158
164
|
}
|
|
159
165
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
const tester = (x: NonBubblingMeta) => {
|
|
168
|
-
const [_sub, et, ef, _] = x;
|
|
169
|
-
return eventType === et && isEqualNamespace(ef.namespace, namespace);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
while (!found && index < length) {
|
|
173
|
-
const item = setArray[index]
|
|
174
|
-
found = tester(item) ? item : found;
|
|
175
|
-
index++;
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
let input: NonBubblingMeta = found as NonBubblingMeta;
|
|
179
|
-
|
|
180
|
-
let nonBubbleSubject: Stream<Event>;
|
|
181
|
-
if (!input) {
|
|
182
|
-
const finder = new ElementFinder(namespace, this.isolateModule);
|
|
183
|
-
dest = this.insertListener(subject, scopeChecker, eventType, options);
|
|
184
|
-
input = [subject, eventType, finder, dest];
|
|
185
|
-
nonBubbleSubject = subject;
|
|
186
|
-
this.nonBubblingListenersToAdd.add(input);
|
|
187
|
-
this.setupNonBubblingListener(input);
|
|
188
|
-
} else {
|
|
189
|
-
const [sub] = input;
|
|
190
|
-
nonBubbleSubject = sub;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
const self = this;
|
|
194
|
-
|
|
195
|
-
let subscription: any = null;
|
|
196
|
-
return xs.create({
|
|
197
|
-
start: listener => {
|
|
198
|
-
subscription = nonBubbleSubject.subscribe(listener);
|
|
166
|
+
// P45-A: the destination is in the delegator only while the stream has listeners, so
|
|
167
|
+
// a disposed component leaves nothing behind (audit rec 3). Each stream has its own
|
|
168
|
+
// destination; xstream counts the stream's own listeners
|
|
169
|
+
let dest: Destination;
|
|
170
|
+
const out: Stream<Event> = xs.create({
|
|
171
|
+
start: () => {
|
|
172
|
+
dest = this.insertListener(out, scopeChecker, eventType, options);
|
|
199
173
|
},
|
|
200
|
-
stop: () =>
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
174
|
+
stop: () => this.removeListener(dest, eventType),
|
|
175
|
+
});
|
|
176
|
+
return out;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// one record, and one listener per element, per type and scope: the streams on it share
|
|
180
|
+
// it, and the last one to stop removes it. G-263: a stream finds (or makes) the live record
|
|
181
|
+
// each time it starts, so a stream never started leaves none, and one restarted after its
|
|
182
|
+
// record was removed shares the record made meanwhile
|
|
183
|
+
let rec: NonBubblingMeta | undefined, subscription: any;
|
|
184
|
+
return xs.create({
|
|
185
|
+
start: listener => {
|
|
186
|
+
rec = undefined;
|
|
187
|
+
this.nonBubblingListenersToAdd.forEach(x => {
|
|
188
|
+
if (!rec && x[1] === eventType && isEqualNamespace(x[2].namespace, namespace)) rec = x;
|
|
189
|
+
});
|
|
190
|
+
if (!rec) {
|
|
191
|
+
const s = xs.never();
|
|
192
|
+
rec = [s, eventType, new ElementFinder(namespace, this.isolateModule), this.insertListener(s, scopeChecker, eventType, options), 0];
|
|
193
|
+
this.nonBubblingListenersToAdd.add(rec);
|
|
194
|
+
}
|
|
195
|
+
if (!rec[4]++) this.setupNonBubblingListener(rec);
|
|
196
|
+
subscription = rec[0].subscribe(listener);
|
|
197
|
+
},
|
|
198
|
+
stop: () => {
|
|
199
|
+
const r = rec!;
|
|
200
|
+
subscription.unsubscribe();
|
|
201
|
+
if (!--r[4]) {
|
|
202
|
+
const map = this.nonBubblingListeners.get(eventType);
|
|
203
|
+
if (map) map.forEach((l, element: any) => {
|
|
204
|
+
if (l.destination === r[3]) {
|
|
205
|
+
l.sub!.unsubscribe();
|
|
206
|
+
delete element.subs[eventType];
|
|
207
|
+
map.delete(element);
|
|
209
208
|
}
|
|
210
209
|
});
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
subscription.unsubscribe();
|
|
210
|
+
this.nonBubblingListenersToAdd.delete(r);
|
|
211
|
+
this.removeListener(r[3], eventType);
|
|
215
212
|
}
|
|
216
|
-
}
|
|
217
|
-
}
|
|
213
|
+
},
|
|
214
|
+
});
|
|
218
215
|
}
|
|
219
216
|
|
|
220
|
-
public removeElement(element: Element
|
|
221
|
-
|
|
222
|
-
this.virtualListeners.delete(namespace);
|
|
223
|
-
}
|
|
224
|
-
const toRemove: Array<[string, Element]> = [];
|
|
217
|
+
public removeElement(element: Element): void {
|
|
218
|
+
const types: Array<string> = [];
|
|
225
219
|
this.nonBubblingListeners.forEach((map, type) => {
|
|
226
220
|
if (map.has(element)) {
|
|
227
|
-
|
|
221
|
+
types.push(type);
|
|
228
222
|
const subs = (element as any).subs;
|
|
229
|
-
if (subs)
|
|
230
|
-
Object.keys(subs).forEach((key: any) => {
|
|
231
|
-
subs[key].unsubscribe();
|
|
232
|
-
});
|
|
233
|
-
}
|
|
223
|
+
if (subs) Object.keys(subs).forEach(key => subs[key].unsubscribe());
|
|
234
224
|
}
|
|
235
225
|
});
|
|
236
|
-
|
|
237
|
-
const map = this.nonBubblingListeners.get(
|
|
238
|
-
if (!map)
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
226
|
+
types.forEach(type => {
|
|
227
|
+
const map = this.nonBubblingListeners.get(type);
|
|
228
|
+
if (!map) return;
|
|
229
|
+
map.delete(element);
|
|
230
|
+
if (!map.size) this.nonBubblingListeners.delete(type);
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// the queues a destination goes in: its scope's and its ancestors' up to the nearest total scope
|
|
235
|
+
private eachSet(
|
|
236
|
+
n: Array<Scope>,
|
|
237
|
+
eventType: string,
|
|
238
|
+
f: (map: Map<string, PriorityQueue<Destination>>, max: number) => void,
|
|
239
|
+
create?: boolean
|
|
240
|
+
): void {
|
|
241
|
+
let max = n.length;
|
|
242
|
+
do {
|
|
243
|
+
const map = this.virtualListeners.get(n, create ? () => new Map() : undefined, max);
|
|
244
|
+
if (map) f(map, max);
|
|
245
|
+
max--;
|
|
246
|
+
} while (max >= 0 && n[max].type !== 'total');
|
|
248
247
|
}
|
|
249
248
|
|
|
250
249
|
private insertListener(
|
|
@@ -253,15 +252,7 @@ export class EventDelegator {
|
|
|
253
252
|
eventType: string,
|
|
254
253
|
options: EventsFnOptions
|
|
255
254
|
): Destination {
|
|
256
|
-
const relevantSets: Array<PriorityQueue<Destination>> = [];
|
|
257
255
|
const n = scopeChecker._namespace;
|
|
258
|
-
let max = n.length;
|
|
259
|
-
|
|
260
|
-
do {
|
|
261
|
-
relevantSets.push(this.getVirtualListeners(eventType, n, true, max));
|
|
262
|
-
max--;
|
|
263
|
-
} while (max >= 0 && n[max].type !== 'total');
|
|
264
|
-
|
|
265
256
|
const destination = {
|
|
266
257
|
...options,
|
|
267
258
|
scopeChecker,
|
|
@@ -271,40 +262,37 @@ export class EventDelegator {
|
|
|
271
262
|
passive: !!options.passive,
|
|
272
263
|
};
|
|
273
264
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
265
|
+
this.eachSet(n, eventType, map => {
|
|
266
|
+
if (!map.has(eventType)) map.set(eventType, new PriorityQueue<Destination>());
|
|
267
|
+
map.get(eventType)!.add(destination, n.length);
|
|
268
|
+
}, true);
|
|
277
269
|
|
|
278
270
|
return destination;
|
|
279
271
|
}
|
|
280
272
|
|
|
273
|
+
// P45-A: take a stopped stream's destination out, and drop the queues and scopes left empty
|
|
274
|
+
private removeListener(dest: Destination, eventType: string): void {
|
|
275
|
+
const n = dest.scopeChecker._namespace;
|
|
276
|
+
this.eachSet(n, eventType, (map, max) => {
|
|
277
|
+
const q = map.get(eventType);
|
|
278
|
+
if (q && !q.delete(dest)) {
|
|
279
|
+
map.delete(eventType);
|
|
280
|
+
if (!map.size) this.virtualListeners.delete(n, max);
|
|
281
|
+
}
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
|
|
281
285
|
private getVirtualListeners(
|
|
282
286
|
eventType: string,
|
|
283
|
-
namespace: Array<Scope
|
|
284
|
-
exact = false,
|
|
285
|
-
max?: number
|
|
287
|
+
namespace: Array<Scope>
|
|
286
288
|
): PriorityQueue<Destination> {
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
if (namespace[i].type === 'total') {
|
|
291
|
-
_max = i + 1;
|
|
292
|
-
break;
|
|
293
|
-
}
|
|
294
|
-
_max = i;
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
const map = this.virtualListeners.getDefault(
|
|
299
|
-
namespace,
|
|
300
|
-
() => new Map<string, PriorityQueue<Destination>>(),
|
|
301
|
-
_max
|
|
302
|
-
);
|
|
289
|
+
// up to the innermost total scope (none: the root's)
|
|
290
|
+
let _max = namespace.length;
|
|
291
|
+
while (_max && namespace[_max - 1].type !== 'total') _max--;
|
|
303
292
|
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
return map.get(eventType) as PriorityQueue<Destination>;
|
|
293
|
+
// a lookup never adds a scope (P45-A)
|
|
294
|
+
const map = this.virtualListeners.get(namespace, undefined, _max);
|
|
295
|
+
return (map && map.get(eventType)) || ([] as any);
|
|
308
296
|
}
|
|
309
297
|
|
|
310
298
|
private setupDOMListener(eventType: string, passive: boolean): void {
|
|
@@ -329,59 +317,43 @@ export class EventDelegator {
|
|
|
329
317
|
private setupNonBubblingListener(
|
|
330
318
|
input: NonBubblingMeta
|
|
331
319
|
): void {
|
|
332
|
-
const [_, eventType, elementFinder, destination] = input;
|
|
333
|
-
if (!this.origin) {
|
|
320
|
+
const [_, eventType, elementFinder, destination, started] = input;
|
|
321
|
+
if (!this.origin || !started) {
|
|
334
322
|
return;
|
|
335
323
|
}
|
|
336
324
|
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
destination.passive
|
|
349
|
-
)
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
if (!map) {
|
|
363
|
-
return;
|
|
364
|
-
}
|
|
365
|
-
map.set(element, {sub, destination});
|
|
366
|
-
|
|
367
|
-
(element as any).subs = {
|
|
368
|
-
...subs,
|
|
369
|
-
[eventType]: sub,
|
|
370
|
-
};
|
|
371
|
-
}
|
|
372
|
-
});
|
|
373
|
-
}
|
|
325
|
+
elementFinder.call().forEach((element: Element) => {
|
|
326
|
+
const subs = (element as any).subs;
|
|
327
|
+
if (!subs || !subs[eventType]) {
|
|
328
|
+
const sub = fromEvent(
|
|
329
|
+
element,
|
|
330
|
+
eventType,
|
|
331
|
+
false,
|
|
332
|
+
false,
|
|
333
|
+
destination.passive
|
|
334
|
+
).subscribe({
|
|
335
|
+
next: (ev: Event) =>
|
|
336
|
+
this.onEvent(eventType, ev, !!destination.passive, false),
|
|
337
|
+
error: () => {},
|
|
338
|
+
complete: () => {},
|
|
339
|
+
});
|
|
340
|
+
let map = this.nonBubblingListeners.get(eventType);
|
|
341
|
+
if (!map) this.nonBubblingListeners.set(eventType, map = new Map());
|
|
342
|
+
map.set(element, {sub, destination});
|
|
343
|
+
|
|
344
|
+
(element as any).subs = {
|
|
345
|
+
...subs,
|
|
346
|
+
[eventType]: sub,
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
});
|
|
374
350
|
}
|
|
375
351
|
|
|
376
352
|
private resetEventListeners(): void {
|
|
377
|
-
|
|
378
|
-
let curr = iter.next();
|
|
379
|
-
while (!curr.done) {
|
|
380
|
-
const [type, {sub, passive}] = curr.value;
|
|
353
|
+
this.domListeners.forEach(({sub, passive}, type) => {
|
|
381
354
|
sub.unsubscribe();
|
|
382
355
|
this.setupDOMListener(type, passive);
|
|
383
|
-
|
|
384
|
-
}
|
|
356
|
+
});
|
|
385
357
|
}
|
|
386
358
|
|
|
387
359
|
private putNonBubblingListener(
|
|
@@ -411,73 +383,43 @@ export class EventDelegator {
|
|
|
411
383
|
bubbles = true
|
|
412
384
|
): void {
|
|
413
385
|
const cycleEvent = this.patchEvent(event);
|
|
414
|
-
const
|
|
415
|
-
|
|
416
|
-
);
|
|
386
|
+
const target = event.target as Element;
|
|
387
|
+
const rootElement = this.isolateModule.getRootElement(target);
|
|
417
388
|
|
|
418
389
|
if (bubbles) {
|
|
419
|
-
const namespace = this.isolateModule.getNamespace(
|
|
420
|
-
event.target as Element
|
|
421
|
-
);
|
|
390
|
+
const namespace = this.isolateModule.getNamespace(target);
|
|
422
391
|
if (!namespace) {
|
|
423
392
|
return;
|
|
424
393
|
}
|
|
425
394
|
const listeners = this.getVirtualListeners(eventType, namespace);
|
|
426
|
-
this.bubble(
|
|
427
|
-
eventType,
|
|
428
|
-
event.target as Element,
|
|
429
|
-
rootElement,
|
|
430
|
-
cycleEvent,
|
|
431
|
-
listeners,
|
|
432
|
-
namespace,
|
|
433
|
-
namespace.length - 1,
|
|
434
|
-
true,
|
|
435
|
-
passive
|
|
436
|
-
);
|
|
437
|
-
|
|
438
|
-
this.bubble(
|
|
395
|
+
const phase = (useCapture: boolean) => this.bubble(
|
|
439
396
|
eventType,
|
|
440
|
-
|
|
397
|
+
target,
|
|
441
398
|
rootElement,
|
|
442
399
|
cycleEvent,
|
|
443
400
|
listeners,
|
|
444
401
|
namespace,
|
|
445
402
|
namespace.length - 1,
|
|
446
|
-
|
|
403
|
+
useCapture,
|
|
447
404
|
passive
|
|
448
405
|
);
|
|
406
|
+
phase(true);
|
|
407
|
+
phase(false);
|
|
449
408
|
} else {
|
|
450
|
-
|
|
451
|
-
eventType,
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
);
|
|
465
|
-
|
|
466
|
-
this.putNonBubblingListener(
|
|
467
|
-
eventType,
|
|
468
|
-
event.target as Element,
|
|
469
|
-
false,
|
|
470
|
-
passive
|
|
471
|
-
);
|
|
472
|
-
this.doBubbleStep(
|
|
473
|
-
eventType,
|
|
474
|
-
event.target as Element,
|
|
475
|
-
rootElement,
|
|
476
|
-
cycleEvent,
|
|
477
|
-
this.virtualNonBubblingListener,
|
|
478
|
-
false,
|
|
479
|
-
passive
|
|
480
|
-
);
|
|
409
|
+
const phase = (useCapture: boolean) => {
|
|
410
|
+
this.putNonBubblingListener(eventType, target, useCapture, passive);
|
|
411
|
+
this.doBubbleStep(
|
|
412
|
+
eventType,
|
|
413
|
+
target,
|
|
414
|
+
rootElement,
|
|
415
|
+
cycleEvent,
|
|
416
|
+
this.virtualNonBubblingListener,
|
|
417
|
+
useCapture,
|
|
418
|
+
passive
|
|
419
|
+
);
|
|
420
|
+
};
|
|
421
|
+
phase(true);
|
|
422
|
+
phase(false);
|
|
481
423
|
event.stopPropagation();
|
|
482
424
|
}
|
|
483
425
|
}
|
|
@@ -505,24 +447,34 @@ export class EventDelegator {
|
|
|
505
447
|
);
|
|
506
448
|
}
|
|
507
449
|
|
|
450
|
+
// G-356: a moved element bubbles to its home (an element of its component), not to the
|
|
451
|
+
// element it was moved into (G-381: upOf counts the homes on the event)
|
|
452
|
+
const up = upOf(elm, event) as Element;
|
|
508
453
|
let newRoot: Element | undefined = rootElement;
|
|
509
454
|
let newIndex = index;
|
|
455
|
+
let newListeners = listeners;
|
|
510
456
|
if (elm === rootElement) {
|
|
511
|
-
if (index
|
|
512
|
-
newRoot = this.isolateModule.getElement(namespace, index);
|
|
513
|
-
newIndex--;
|
|
514
|
-
} else {
|
|
457
|
+
if (index < 0 || !up) {
|
|
515
458
|
return;
|
|
516
459
|
}
|
|
460
|
+
// the parent scope's root that contains elm (G-144: it may have several)
|
|
461
|
+
newRoot = this.isolateModule.getRootElement(up);
|
|
462
|
+
newIndex--;
|
|
463
|
+
// G-145: like the browser, the event bubbles out of a total scope (a child
|
|
464
|
+
// component) to the parent's own elements; their listeners live in the parent's
|
|
465
|
+
// scope, and isDirectlyInScope keeps them from matching the child's elements
|
|
466
|
+
if (namespace[index].type === 'total') {
|
|
467
|
+
newListeners = this.getVirtualListeners(eventType, namespace.slice(0, index));
|
|
468
|
+
}
|
|
517
469
|
}
|
|
518
470
|
|
|
519
|
-
if (
|
|
471
|
+
if (up && newRoot) {
|
|
520
472
|
this.bubble(
|
|
521
473
|
eventType,
|
|
522
|
-
|
|
474
|
+
up,
|
|
523
475
|
newRoot,
|
|
524
476
|
event,
|
|
525
|
-
|
|
477
|
+
newListeners,
|
|
526
478
|
namespace,
|
|
527
479
|
newIndex,
|
|
528
480
|
useCapture,
|
|
@@ -562,8 +514,7 @@ export class EventDelegator {
|
|
|
562
514
|
if (
|
|
563
515
|
!event.propagationHasBeenStopped &&
|
|
564
516
|
dest.scopeChecker.isDirectlyInScope(elm) &&
|
|
565
|
-
(
|
|
566
|
-
(sel === '' && elm === rootElement))
|
|
517
|
+
(sel ? elm.matches(sel) : elm === rootElement)
|
|
567
518
|
) {
|
|
568
519
|
preventDefaultConditional(
|
|
569
520
|
event,
|