@robertlinde/react-tour-kit 0.8.9 → 1.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 +40 -0
- package/MIGRATION.md +205 -0
- package/README.md +401 -850
- package/dist/react-native-platform/hooks/use-tour-scroll-view.hook.d.ts +14 -0
- package/dist/react-native-platform/hooks/use-tour-scroll-view.hook.d.ts.map +1 -0
- package/dist/react-native-platform/hooks/use-tour-scroll-view.hook.js +21 -0
- package/dist/react-native-platform/hooks/use-tour-scroll-view.hook.js.map +1 -0
- package/dist/react-native-platform/hooks/use-tour-target.hook.d.ts +15 -0
- package/dist/react-native-platform/hooks/use-tour-target.hook.d.ts.map +1 -0
- package/dist/react-native-platform/hooks/use-tour-target.hook.js +28 -0
- package/dist/react-native-platform/hooks/use-tour-target.hook.js.map +1 -0
- package/dist/react-native-platform/host-store.d.ts +24 -0
- package/dist/react-native-platform/host-store.d.ts.map +1 -0
- package/dist/react-native-platform/host-store.js +63 -0
- package/dist/react-native-platform/host-store.js.map +1 -0
- package/dist/react-native-platform/insets.util.d.ts +11 -0
- package/dist/react-native-platform/insets.util.d.ts.map +1 -0
- package/dist/react-native-platform/insets.util.js +31 -0
- package/dist/react-native-platform/insets.util.js.map +1 -0
- package/dist/react-native-platform/layer/native-renderer.d.ts +7 -0
- package/dist/react-native-platform/layer/native-renderer.d.ts.map +1 -0
- package/dist/react-native-platform/layer/native-renderer.js +496 -0
- package/dist/react-native-platform/layer/native-renderer.js.map +1 -0
- package/dist/react-native-platform/layer/tour-host.d.ts +13 -0
- package/dist/react-native-platform/layer/tour-host.d.ts.map +1 -0
- package/dist/react-native-platform/layer/tour-host.js +70 -0
- package/dist/react-native-platform/layer/tour-host.js.map +1 -0
- package/dist/react-native-platform/measure.util.d.ts +20 -0
- package/dist/react-native-platform/measure.util.d.ts.map +1 -0
- package/dist/react-native-platform/measure.util.js +100 -0
- package/dist/react-native-platform/measure.util.js.map +1 -0
- package/dist/react-native-platform/native-context.d.ts +12 -0
- package/dist/react-native-platform/native-context.d.ts.map +1 -0
- package/dist/react-native-platform/native-context.js +4 -0
- package/dist/react-native-platform/native-context.js.map +1 -0
- package/dist/react-native-platform/native-environment.d.ts +14 -0
- package/dist/react-native-platform/native-environment.d.ts.map +1 -0
- package/dist/react-native-platform/native-environment.js +20 -0
- package/dist/react-native-platform/native-environment.js.map +1 -0
- package/dist/react-native-platform/native-platform.d.ts +19 -0
- package/dist/react-native-platform/native-platform.d.ts.map +1 -0
- package/dist/react-native-platform/native-platform.js +265 -0
- package/dist/react-native-platform/native-platform.js.map +1 -0
- package/dist/react-native-platform/reduced-motion.d.ts +4 -0
- package/dist/react-native-platform/reduced-motion.d.ts.map +1 -0
- package/dist/react-native-platform/reduced-motion.js +44 -0
- package/dist/react-native-platform/reduced-motion.js.map +1 -0
- package/dist/react-native-platform/registry.d.ts +18 -0
- package/dist/react-native-platform/registry.d.ts.map +1 -0
- package/dist/react-native-platform/registry.js +51 -0
- package/dist/react-native-platform/registry.js.map +1 -0
- package/dist/react-native-platform/tour-provider.d.ts +16 -3
- package/dist/react-native-platform/tour-provider.d.ts.map +1 -0
- package/dist/react-native-platform/tour-provider.js +92 -211
- package/dist/react-native-platform/tour-provider.js.map +1 -1
- package/dist/react-native.d.ts +14 -10
- package/dist/react-native.d.ts.map +1 -0
- package/dist/react-native.js +7 -7
- package/dist/react-native.js.map +1 -1
- package/dist/react-platform/dom/elements.util.d.ts +35 -0
- package/dist/react-platform/dom/elements.util.d.ts.map +1 -0
- package/dist/react-platform/dom/elements.util.js +155 -0
- package/dist/react-platform/dom/elements.util.js.map +1 -0
- package/dist/react-platform/dom/occluders.util.d.ts +13 -0
- package/dist/react-platform/dom/occluders.util.d.ts.map +1 -0
- package/dist/react-platform/dom/occluders.util.js +75 -0
- package/dist/react-platform/dom/occluders.util.js.map +1 -0
- package/dist/react-platform/dom/scroll-lock.util.d.ts +13 -0
- package/dist/react-platform/dom/scroll-lock.util.d.ts.map +1 -0
- package/dist/react-platform/dom/scroll-lock.util.js +219 -0
- package/dist/react-platform/dom/scroll-lock.util.js.map +1 -0
- package/dist/react-platform/dom/scroll.util.d.ts +44 -0
- package/dist/react-platform/dom/scroll.util.d.ts.map +1 -0
- package/dist/react-platform/dom/scroll.util.js +250 -0
- package/dist/react-platform/dom/scroll.util.js.map +1 -0
- package/dist/react-platform/dom/viewport.util.d.ts +16 -0
- package/dist/react-platform/dom/viewport.util.d.ts.map +1 -0
- package/dist/react-platform/dom/viewport.util.js +65 -0
- package/dist/react-platform/dom/viewport.util.js.map +1 -0
- package/dist/react-platform/dom/web-platform.d.ts +15 -0
- package/dist/react-platform/dom/web-platform.d.ts.map +1 -0
- package/dist/react-platform/dom/web-platform.js +169 -0
- package/dist/react-platform/dom/web-platform.js.map +1 -0
- package/dist/react-platform/layer/styles.d.ts +12 -0
- package/dist/react-platform/layer/styles.d.ts.map +1 -0
- package/dist/react-platform/layer/styles.js +285 -0
- package/dist/react-platform/layer/styles.js.map +1 -0
- package/dist/react-platform/layer/web-renderer.d.ts +4 -0
- package/dist/react-platform/layer/web-renderer.d.ts.map +1 -0
- package/dist/react-platform/layer/web-renderer.js +390 -0
- package/dist/react-platform/layer/web-renderer.js.map +1 -0
- package/dist/react-platform/tour-provider.d.ts +9 -3
- package/dist/react-platform/tour-provider.d.ts.map +1 -0
- package/dist/react-platform/tour-provider.js +28 -218
- package/dist/react-platform/tour-provider.js.map +1 -1
- package/dist/react.d.ts +10 -10
- package/dist/react.d.ts.map +1 -0
- package/dist/react.js +5 -7
- package/dist/react.js.map +1 -1
- package/dist/shared/engine/abort.util.d.ts +17 -0
- package/dist/shared/engine/abort.util.d.ts.map +1 -0
- package/dist/shared/engine/abort.util.js +72 -0
- package/dist/shared/engine/abort.util.js.map +1 -0
- package/dist/shared/engine/report.util.d.ts +12 -0
- package/dist/shared/engine/report.util.d.ts.map +1 -0
- package/dist/shared/engine/report.util.js +51 -0
- package/dist/shared/engine/report.util.js.map +1 -0
- package/dist/shared/engine/tour-adapter.type.d.ts +60 -0
- package/dist/shared/engine/tour-adapter.type.d.ts.map +1 -0
- package/dist/shared/engine/tour-adapter.type.js +2 -0
- package/dist/shared/engine/tour-adapter.type.js.map +1 -0
- package/dist/shared/engine/tour-engine.d.ts +92 -0
- package/dist/shared/engine/tour-engine.d.ts.map +1 -0
- package/dist/shared/engine/tour-engine.js +787 -0
- package/dist/shared/engine/tour-engine.js.map +1 -0
- package/dist/shared/geometry/box.util.d.ts +39 -0
- package/dist/shared/geometry/box.util.d.ts.map +1 -0
- package/dist/shared/geometry/box.util.js +146 -0
- package/dist/shared/geometry/box.util.js.map +1 -0
- package/dist/shared/geometry/compute-tooltip-layout.util.d.ts +60 -0
- package/dist/shared/geometry/compute-tooltip-layout.util.d.ts.map +1 -0
- package/dist/shared/geometry/compute-tooltip-layout.util.js +148 -0
- package/dist/shared/geometry/compute-tooltip-layout.util.js.map +1 -0
- package/dist/shared/geometry/geometry.type.d.ts +34 -0
- package/dist/shared/geometry/geometry.type.d.ts.map +1 -0
- package/dist/shared/geometry/geometry.type.js +2 -0
- package/dist/shared/geometry/geometry.type.js.map +1 -0
- package/dist/shared/geometry/reveal.util.d.ts +38 -0
- package/dist/shared/geometry/reveal.util.d.ts.map +1 -0
- package/dist/shared/geometry/reveal.util.js +135 -0
- package/dist/shared/geometry/reveal.util.js.map +1 -0
- package/dist/shared/geometry/target-visibility.util.d.ts +10 -0
- package/dist/shared/geometry/target-visibility.util.d.ts.map +1 -0
- package/dist/shared/geometry/target-visibility.util.js +29 -0
- package/dist/shared/geometry/target-visibility.util.js.map +1 -0
- package/dist/shared/platform/create-tour-adapter.d.ts +9 -0
- package/dist/shared/platform/create-tour-adapter.d.ts.map +1 -0
- package/dist/shared/platform/create-tour-adapter.js +130 -0
- package/dist/shared/platform/create-tour-adapter.js.map +1 -0
- package/dist/shared/platform/platform.type.d.ts +77 -0
- package/dist/shared/platform/platform.type.d.ts.map +1 -0
- package/dist/shared/platform/platform.type.js +2 -0
- package/dist/shared/platform/platform.type.js.map +1 -0
- package/dist/shared/platform/reveal-in-scroll-containers.d.ts +27 -0
- package/dist/shared/platform/reveal-in-scroll-containers.d.ts.map +1 -0
- package/dist/shared/platform/reveal-in-scroll-containers.js +49 -0
- package/dist/shared/platform/reveal-in-scroll-containers.js.map +1 -0
- package/dist/shared/react/tour-context.d.ts +7 -0
- package/dist/shared/react/tour-context.d.ts.map +1 -0
- package/dist/shared/react/tour-context.js +23 -0
- package/dist/shared/react/tour-context.js.map +1 -0
- package/dist/shared/react/tour-provider-core.d.ts +41 -0
- package/dist/shared/react/tour-provider-core.d.ts.map +1 -0
- package/dist/shared/react/tour-provider-core.js +24 -0
- package/dist/shared/react/tour-provider-core.js.map +1 -0
- package/dist/shared/react/tour-root.d.ts +14 -0
- package/dist/shared/react/tour-root.d.ts.map +1 -0
- package/dist/shared/react/tour-root.js +22 -0
- package/dist/shared/react/tour-root.js.map +1 -0
- package/dist/shared/react/use-isomorphic-layout-effect.hook.d.ts +4 -0
- package/dist/shared/react/use-isomorphic-layout-effect.hook.d.ts.map +1 -0
- package/dist/shared/react/use-isomorphic-layout-effect.hook.js +5 -0
- package/dist/shared/react/use-isomorphic-layout-effect.hook.js.map +1 -0
- package/dist/shared/react/use-tour-view.hook.d.ts +5 -0
- package/dist/shared/react/use-tour-view.hook.d.ts.map +1 -0
- package/dist/shared/react/use-tour-view.hook.js +14 -0
- package/dist/shared/react/use-tour-view.hook.js.map +1 -0
- package/dist/shared/react/use-tour.hook.d.ts +7 -0
- package/dist/shared/react/use-tour.hook.d.ts.map +1 -0
- package/dist/shared/react/use-tour.hook.js +10 -0
- package/dist/shared/react/use-tour.hook.js.map +1 -0
- package/dist/shared/renderer/default-tooltip.d.ts +5 -0
- package/dist/shared/renderer/default-tooltip.d.ts.map +1 -0
- package/dist/shared/renderer/default-tooltip.js +13 -0
- package/dist/shared/renderer/default-tooltip.js.map +1 -0
- package/dist/shared/renderer/motion.d.ts +29 -0
- package/dist/shared/renderer/motion.d.ts.map +1 -0
- package/dist/shared/renderer/motion.js +49 -0
- package/dist/shared/renderer/motion.js.map +1 -0
- package/dist/shared/renderer/renderer-context.d.ts +17 -0
- package/dist/shared/renderer/renderer-context.d.ts.map +1 -0
- package/dist/shared/renderer/renderer-context.js +16 -0
- package/dist/shared/renderer/renderer-context.js.map +1 -0
- package/dist/shared/renderer/renderer.type.d.ts +164 -0
- package/dist/shared/renderer/renderer.type.d.ts.map +1 -0
- package/dist/shared/renderer/renderer.type.js +2 -0
- package/dist/shared/renderer/renderer.type.js.map +1 -0
- package/dist/shared/renderer/tooltip-model.d.ts +32 -0
- package/dist/shared/renderer/tooltip-model.d.ts.map +1 -0
- package/dist/shared/renderer/tooltip-model.js +24 -0
- package/dist/shared/renderer/tooltip-model.js.map +1 -0
- package/dist/shared/renderer/tour-overlay.d.ts +24 -0
- package/dist/shared/renderer/tour-overlay.d.ts.map +1 -0
- package/dist/shared/renderer/tour-overlay.js +228 -0
- package/dist/shared/renderer/tour-overlay.js.map +1 -0
- package/dist/shared/types/tour-context.type.d.ts +21 -11
- package/dist/shared/types/tour-context.type.d.ts.map +1 -0
- package/dist/shared/types/tour-end-info.type.d.ts +19 -2
- package/dist/shared/types/tour-end-info.type.d.ts.map +1 -0
- package/dist/shared/types/tour-i18n.type.d.ts +8 -0
- package/dist/shared/types/tour-i18n.type.d.ts.map +1 -0
- package/dist/shared/types/tour-step.type.d.ts +35 -6
- package/dist/shared/types/tour-step.type.d.ts.map +1 -0
- package/dist/shared/types/tour-theme.type.d.ts +22 -2
- package/dist/shared/types/tour-theme.type.d.ts.map +1 -0
- package/dist/shared/types/tour-theme.type.js +1 -16
- package/dist/shared/types/tour-theme.type.js.map +1 -1
- package/dist/shared/types/tour-tooltip-props.type.d.ts +21 -17
- package/dist/shared/types/tour-tooltip-props.type.d.ts.map +1 -0
- package/dist/shared/utils/frame.util.d.ts +6 -0
- package/dist/shared/utils/frame.util.d.ts.map +1 -0
- package/dist/shared/utils/frame.util.js +20 -0
- package/dist/shared/utils/frame.util.js.map +1 -0
- package/dist/shared/utils/get-truncated-dots.util.d.ts +13 -7
- package/dist/shared/utils/get-truncated-dots.util.d.ts.map +1 -0
- package/dist/shared/utils/get-truncated-dots.util.js +30 -30
- package/dist/shared/utils/get-truncated-dots.util.js.map +1 -1
- package/dist/shared/utils/i18n.util.d.ts +7 -0
- package/dist/shared/utils/i18n.util.d.ts.map +1 -0
- package/dist/shared/utils/i18n.util.js +34 -0
- package/dist/shared/utils/i18n.util.js.map +1 -0
- package/dist/shared/utils/theme.util.d.ts +6 -0
- package/dist/shared/utils/theme.util.d.ts.map +1 -0
- package/dist/shared/utils/theme.util.js +31 -0
- package/dist/shared/utils/theme.util.js.map +1 -0
- package/package.json +72 -55
- package/src/react-native-platform/hooks/use-tour-scroll-view.hook.ts +24 -0
- package/src/react-native-platform/hooks/use-tour-target.hook.ts +30 -0
- package/src/react-native-platform/host-store.ts +92 -0
- package/src/react-native-platform/insets.util.ts +39 -0
- package/src/react-native-platform/layer/native-renderer.tsx +776 -0
- package/src/react-native-platform/layer/tour-host.tsx +105 -0
- package/src/react-native-platform/measure.util.ts +140 -0
- package/src/react-native-platform/native-context.ts +15 -0
- package/src/react-native-platform/native-environment.ts +33 -0
- package/src/react-native-platform/native-platform.ts +368 -0
- package/src/react-native-platform/reduced-motion.ts +47 -0
- package/src/react-native-platform/registry.ts +70 -0
- package/src/react-native-platform/tour-provider.tsx +148 -0
- package/src/react-native.ts +15 -0
- package/src/react-platform/dom/elements.util.ts +191 -0
- package/src/react-platform/dom/occluders.util.ts +88 -0
- package/src/react-platform/dom/scroll-lock.util.ts +261 -0
- package/src/react-platform/dom/scroll.util.ts +310 -0
- package/src/react-platform/dom/viewport.util.ts +74 -0
- package/src/react-platform/dom/web-platform.ts +208 -0
- package/src/react-platform/layer/styles.ts +286 -0
- package/src/react-platform/layer/web-renderer.tsx +594 -0
- package/src/react-platform/tour-provider.tsx +44 -0
- package/src/react.ts +13 -0
- package/src/shared/engine/abort.util.ts +84 -0
- package/src/shared/engine/report.util.ts +58 -0
- package/src/shared/engine/tour-adapter.type.ts +62 -0
- package/src/shared/engine/tour-engine.ts +1068 -0
- package/src/shared/geometry/box.util.ts +185 -0
- package/src/shared/geometry/compute-tooltip-layout.util.ts +238 -0
- package/src/shared/geometry/geometry.type.ts +38 -0
- package/src/shared/geometry/reveal.util.ts +190 -0
- package/src/shared/geometry/target-visibility.util.ts +44 -0
- package/src/shared/platform/create-tour-adapter.ts +151 -0
- package/src/shared/platform/platform.type.ts +81 -0
- package/src/shared/platform/reveal-in-scroll-containers.ts +78 -0
- package/src/shared/react/tour-context.ts +28 -0
- package/src/shared/react/tour-provider-core.ts +67 -0
- package/src/shared/react/tour-root.tsx +34 -0
- package/src/shared/react/use-isomorphic-layout-effect.hook.ts +7 -0
- package/src/shared/react/use-tour-view.hook.ts +17 -0
- package/src/shared/react/use-tour.hook.ts +11 -0
- package/src/shared/renderer/default-tooltip.tsx +52 -0
- package/src/shared/renderer/motion.ts +59 -0
- package/src/shared/renderer/renderer-context.ts +33 -0
- package/src/shared/renderer/renderer.type.ts +183 -0
- package/src/shared/renderer/tooltip-model.ts +44 -0
- package/src/shared/renderer/tour-overlay.tsx +453 -0
- package/src/shared/types/tour-context.type.ts +23 -0
- package/src/shared/types/tour-end-info.type.ts +32 -0
- package/src/shared/types/tour-i18n.type.ts +15 -0
- package/src/shared/types/tour-step.type.ts +40 -0
- package/src/shared/types/tour-theme.type.ts +28 -0
- package/src/shared/types/tour-tooltip-props.type.ts +27 -0
- package/src/shared/utils/frame.util.ts +21 -0
- package/src/shared/utils/get-truncated-dots.util.ts +46 -0
- package/src/shared/utils/i18n.util.ts +44 -0
- package/src/shared/utils/theme.util.ts +38 -0
- package/dist/react-native-platform/components/index.d.ts +0 -2
- package/dist/react-native-platform/components/index.js +0 -3
- package/dist/react-native-platform/components/index.js.map +0 -1
- package/dist/react-native-platform/components/tour-overlay.d.ts +0 -3
- package/dist/react-native-platform/components/tour-overlay.js +0 -26
- package/dist/react-native-platform/components/tour-overlay.js.map +0 -1
- package/dist/react-native-platform/components/tour-tooltip.d.ts +0 -3
- package/dist/react-native-platform/components/tour-tooltip.js +0 -167
- package/dist/react-native-platform/components/tour-tooltip.js.map +0 -1
- package/dist/react-native-platform/hooks/index.d.ts +0 -1
- package/dist/react-native-platform/hooks/index.js +0 -2
- package/dist/react-native-platform/hooks/index.js.map +0 -1
- package/dist/react-native-platform/hooks/use-tour-target.d.ts +0 -2
- package/dist/react-native-platform/hooks/use-tour-target.js +0 -13
- package/dist/react-native-platform/hooks/use-tour-target.js.map +0 -1
- package/dist/react-native-platform/index.d.ts +0 -7
- package/dist/react-native-platform/index.js +0 -7
- package/dist/react-native-platform/index.js.map +0 -1
- package/dist/react-native-platform/platform-adapter.d.ts +0 -2
- package/dist/react-native-platform/platform-adapter.js +0 -84
- package/dist/react-native-platform/platform-adapter.js.map +0 -1
- package/dist/react-native-platform/target-registry.d.ts +0 -10
- package/dist/react-native-platform/target-registry.js +0 -17
- package/dist/react-native-platform/target-registry.js.map +0 -1
- package/dist/react-native-platform/types/tour-provider.props.type.d.ts +0 -12
- package/dist/react-native-platform/types/tour-provider.props.type.js +0 -2
- package/dist/react-native-platform/types/tour-provider.props.type.js.map +0 -1
- package/dist/react-platform/components/index.d.ts +0 -2
- package/dist/react-platform/components/index.js +0 -3
- package/dist/react-platform/components/index.js.map +0 -1
- package/dist/react-platform/components/tour-overlay.d.ts +0 -3
- package/dist/react-platform/components/tour-overlay.js +0 -29
- package/dist/react-platform/components/tour-overlay.js.map +0 -1
- package/dist/react-platform/components/tour-tooltip.d.ts +0 -2
- package/dist/react-platform/components/tour-tooltip.js +0 -155
- package/dist/react-platform/components/tour-tooltip.js.map +0 -1
- package/dist/react-platform/index.d.ts +0 -6
- package/dist/react-platform/index.js +0 -6
- package/dist/react-platform/index.js.map +0 -1
- package/dist/react-platform/platform-adapter.d.ts +0 -2
- package/dist/react-platform/platform-adapter.js +0 -101
- package/dist/react-platform/platform-adapter.js.map +0 -1
- package/dist/react-platform/types/tour-provider.props.type.d.ts +0 -12
- package/dist/react-platform/types/tour-provider.props.type.js +0 -2
- package/dist/react-platform/types/tour-provider.props.type.js.map +0 -1
- package/dist/react-platform/utils/find-visible-element.util.d.ts +0 -1
- package/dist/react-platform/utils/find-visible-element.util.js +0 -11
- package/dist/react-platform/utils/find-visible-element.util.js.map +0 -1
- package/dist/react-platform/utils/index.d.ts +0 -1
- package/dist/react-platform/utils/index.js +0 -2
- package/dist/react-platform/utils/index.js.map +0 -1
- package/dist/shared/context/index.d.ts +0 -1
- package/dist/shared/context/index.js +0 -2
- package/dist/shared/context/index.js.map +0 -1
- package/dist/shared/context/tour-context.d.ts +0 -3
- package/dist/shared/context/tour-context.js +0 -14
- package/dist/shared/context/tour-context.js.map +0 -1
- package/dist/shared/hooks/index.d.ts +0 -1
- package/dist/shared/hooks/index.js +0 -2
- package/dist/shared/hooks/index.js.map +0 -1
- package/dist/shared/hooks/use-tour.hook.d.ts +0 -2
- package/dist/shared/hooks/use-tour.hook.js +0 -7
- package/dist/shared/hooks/use-tour.hook.js.map +0 -1
- package/dist/shared/index.d.ts +0 -7
- package/dist/shared/index.js +0 -6
- package/dist/shared/index.js.map +0 -1
- package/dist/shared/types/index.d.ts +0 -10
- package/dist/shared/types/index.js +0 -2
- package/dist/shared/types/index.js.map +0 -1
- package/dist/shared/types/platform-adapter.type.d.ts +0 -24
- package/dist/shared/types/platform-adapter.type.js +0 -2
- package/dist/shared/types/platform-adapter.type.js.map +0 -1
- package/dist/shared/types/rect.type.d.ts +0 -11
- package/dist/shared/types/rect.type.js +0 -2
- package/dist/shared/types/rect.type.js.map +0 -1
- package/dist/shared/types/tour-overlay-props.type.d.ts +0 -8
- package/dist/shared/types/tour-overlay-props.type.js +0 -2
- package/dist/shared/types/tour-overlay-props.type.js.map +0 -1
- package/dist/shared/utils/calculate-tooltip-position.util.d.ts +0 -14
- package/dist/shared/utils/calculate-tooltip-position.util.js +0 -49
- package/dist/shared/utils/calculate-tooltip-position.util.js.map +0 -1
- package/dist/shared/utils/index.d.ts +0 -3
- package/dist/shared/utils/index.js +0 -3
- package/dist/shared/utils/index.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tour-engine.js","sourceRoot":"","sources":["../../../src/shared/engine/tour-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { Box, Insets, Point, Size } from './geometry.type.js';
|
|
2
|
+
export declare const zeroInsets: Insets;
|
|
3
|
+
/** Returns `value` if it is a finite number, otherwise `fallback`. */
|
|
4
|
+
export declare function finiteOr(value: number, fallback: number): number;
|
|
5
|
+
/** Finite and non-negative, otherwise 0. */
|
|
6
|
+
export declare function nonNegative(value: number): number;
|
|
7
|
+
export declare function clamp(value: number, min: number, max: number): number;
|
|
8
|
+
export declare function right(box: Box): number;
|
|
9
|
+
export declare function bottom(box: Box): number;
|
|
10
|
+
export declare function centerX(box: Box): number;
|
|
11
|
+
export declare function centerY(box: Box): number;
|
|
12
|
+
export declare function sanitizeLength(value: number): number;
|
|
13
|
+
/** Replaces non-finite coordinates with 0, negative sizes with 0 and clamps absurd magnitudes. */
|
|
14
|
+
export declare function sanitizeBox(box: Box): Box;
|
|
15
|
+
export declare function sanitizeSize(size: Size): Size;
|
|
16
|
+
export declare function sanitizeInsets(insets: Insets): Insets;
|
|
17
|
+
export declare function isFiniteBox(box: Box): boolean;
|
|
18
|
+
export declare function inflate(box: Box, amount: number): Box;
|
|
19
|
+
export declare function deflate(box: Box, insets: Insets): Box;
|
|
20
|
+
/**
|
|
21
|
+
* Intersection of two boxes, or `undefined` when they do not overlap. Touching edges count as an
|
|
22
|
+
* empty (zero-area) intersection and also return `undefined`, except when one of the boxes is
|
|
23
|
+
* itself degenerate (a zero-size target is "visible" when it lies inside the other box).
|
|
24
|
+
*/
|
|
25
|
+
export declare function intersect(a: Box, b: Box): Box | undefined;
|
|
26
|
+
/** Collapses `box` onto the nearest edge of `area` when the two do not overlap (a zero-size box on that edge). */
|
|
27
|
+
export declare function projectOnto(box: Box, area: Box): Box;
|
|
28
|
+
/**
|
|
29
|
+
* Narrows a clip area by another clipping box. When the two do not overlap, the result is an empty
|
|
30
|
+
* box on the edge of `box` nearest to `clip`, so it still tells in which direction the content is.
|
|
31
|
+
*/
|
|
32
|
+
export declare function narrowClip(clip: Box | undefined, box: Box): Box;
|
|
33
|
+
export declare function containsPoint(box: Box, point: Point): boolean;
|
|
34
|
+
export declare function containsBox(outer: Box, inner: Box, epsilon?: number): boolean;
|
|
35
|
+
export declare function boxesEqual(a: Box | undefined, b: Box | undefined, epsilon?: number): boolean;
|
|
36
|
+
export declare function sizesEqual(a: Size | undefined, b: Size | undefined, epsilon?: number): boolean;
|
|
37
|
+
export declare function insetsEqual(a: Insets, b: Insets, epsilon?: number): boolean;
|
|
38
|
+
export declare function pointsEqual(a: Point, b: Point, epsilon?: number): boolean;
|
|
39
|
+
//# sourceMappingURL=box.util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"box.util.d.ts","sourceRoot":"","sources":["../../../src/shared/geometry/box.util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAC,MAAM,oBAAoB,CAAC;AAEjE,eAAO,MAAM,UAAU,EAAE,MAA+C,CAAC;AAEzE,sEAAsE;AACtE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,4CAA4C;AAC5C,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAEtC;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAEvC;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAExC;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAExC;AAYD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,kGAAkG;AAClG,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAOzC;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAE7C;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAOrD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAE7C;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG,CAErD;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG,CAOrD;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,SAAS,CAezD;AAED,kHAAkH;AAClH,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,CAMpD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,SAAS,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,CAM/D;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAE7D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,SAAI,GAAG,OAAO,CAOxE;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,GAAG,SAAS,EAAE,CAAC,EAAE,GAAG,GAAG,SAAS,EAAE,OAAO,SAAO,GAAG,OAAO,CAe1F;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,GAAG,SAAS,EAAE,CAAC,EAAE,IAAI,GAAG,SAAS,EAAE,OAAO,SAAO,GAAG,OAAO,CAU5F;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,SAAO,GAAG,OAAO,CAOzE;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,SAAO,GAAG,OAAO,CAEvE"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
export const zeroInsets = { top: 0, right: 0, bottom: 0, left: 0 };
|
|
2
|
+
/** Returns `value` if it is a finite number, otherwise `fallback`. */
|
|
3
|
+
export function finiteOr(value, fallback) {
|
|
4
|
+
return Number.isFinite(value) ? value : fallback;
|
|
5
|
+
}
|
|
6
|
+
/** Finite and non-negative, otherwise 0. */
|
|
7
|
+
export function nonNegative(value) {
|
|
8
|
+
return Math.max(0, finiteOr(value, 0));
|
|
9
|
+
}
|
|
10
|
+
export function clamp(value, min, max) {
|
|
11
|
+
return Math.min(Math.max(value, min), max);
|
|
12
|
+
}
|
|
13
|
+
export function right(box) {
|
|
14
|
+
return box.x + box.width;
|
|
15
|
+
}
|
|
16
|
+
export function bottom(box) {
|
|
17
|
+
return box.y + box.height;
|
|
18
|
+
}
|
|
19
|
+
export function centerX(box) {
|
|
20
|
+
return box.x + box.width / 2;
|
|
21
|
+
}
|
|
22
|
+
export function centerY(box) {
|
|
23
|
+
return box.y + box.height / 2;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Coordinates beyond this magnitude are clamped so that sums of coordinates and sizes can never
|
|
27
|
+
* overflow to `Infinity`. No real screen comes anywhere near it.
|
|
28
|
+
*/
|
|
29
|
+
const coordinateLimit = 1e9;
|
|
30
|
+
function coordinate(value) {
|
|
31
|
+
return clamp(finiteOr(value, 0), -coordinateLimit, coordinateLimit);
|
|
32
|
+
}
|
|
33
|
+
export function sanitizeLength(value) {
|
|
34
|
+
return Math.min(nonNegative(value), coordinateLimit);
|
|
35
|
+
}
|
|
36
|
+
/** Replaces non-finite coordinates with 0, negative sizes with 0 and clamps absurd magnitudes. */
|
|
37
|
+
export function sanitizeBox(box) {
|
|
38
|
+
return {
|
|
39
|
+
x: coordinate(box.x),
|
|
40
|
+
y: coordinate(box.y),
|
|
41
|
+
width: sanitizeLength(box.width),
|
|
42
|
+
height: sanitizeLength(box.height),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export function sanitizeSize(size) {
|
|
46
|
+
return { width: sanitizeLength(size.width), height: sanitizeLength(size.height) };
|
|
47
|
+
}
|
|
48
|
+
export function sanitizeInsets(insets) {
|
|
49
|
+
return {
|
|
50
|
+
top: sanitizeLength(insets.top),
|
|
51
|
+
right: sanitizeLength(insets.right),
|
|
52
|
+
bottom: sanitizeLength(insets.bottom),
|
|
53
|
+
left: sanitizeLength(insets.left),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export function isFiniteBox(box) {
|
|
57
|
+
return Number.isFinite(box.x) && Number.isFinite(box.y) && Number.isFinite(box.width) && Number.isFinite(box.height);
|
|
58
|
+
}
|
|
59
|
+
export function inflate(box, amount) {
|
|
60
|
+
return { x: box.x - amount, y: box.y - amount, width: box.width + amount * 2, height: box.height + amount * 2 };
|
|
61
|
+
}
|
|
62
|
+
export function deflate(box, insets) {
|
|
63
|
+
return {
|
|
64
|
+
x: box.x + insets.left,
|
|
65
|
+
y: box.y + insets.top,
|
|
66
|
+
width: Math.max(0, box.width - insets.left - insets.right),
|
|
67
|
+
height: Math.max(0, box.height - insets.top - insets.bottom),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Intersection of two boxes, or `undefined` when they do not overlap. Touching edges count as an
|
|
72
|
+
* empty (zero-area) intersection and also return `undefined`, except when one of the boxes is
|
|
73
|
+
* itself degenerate (a zero-size target is "visible" when it lies inside the other box).
|
|
74
|
+
*/
|
|
75
|
+
export function intersect(a, b) {
|
|
76
|
+
const x1 = Math.max(a.x, b.x);
|
|
77
|
+
const y1 = Math.max(a.y, b.y);
|
|
78
|
+
const x2 = Math.min(right(a), right(b));
|
|
79
|
+
const y2 = Math.min(bottom(a), bottom(b));
|
|
80
|
+
if (x2 < x1 || y2 < y1) {
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
const degenerate = a.width === 0 || a.height === 0 || b.width === 0 || b.height === 0;
|
|
84
|
+
if (!degenerate && (x2 === x1 || y2 === y1)) {
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
return { x: x1, y: y1, width: x2 - x1, height: y2 - y1 };
|
|
88
|
+
}
|
|
89
|
+
/** Collapses `box` onto the nearest edge of `area` when the two do not overlap (a zero-size box on that edge). */
|
|
90
|
+
export function projectOnto(box, area) {
|
|
91
|
+
const x1 = clamp(box.x, area.x, right(area));
|
|
92
|
+
const x2 = clamp(right(box), area.x, right(area));
|
|
93
|
+
const y1 = clamp(box.y, area.y, bottom(area));
|
|
94
|
+
const y2 = clamp(bottom(box), area.y, bottom(area));
|
|
95
|
+
return { x: x1, y: y1, width: x2 - x1, height: y2 - y1 };
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Narrows a clip area by another clipping box. When the two do not overlap, the result is an empty
|
|
99
|
+
* box on the edge of `box` nearest to `clip`, so it still tells in which direction the content is.
|
|
100
|
+
*/
|
|
101
|
+
export function narrowClip(clip, box) {
|
|
102
|
+
if (!clip) {
|
|
103
|
+
return box;
|
|
104
|
+
}
|
|
105
|
+
return intersect(clip, box) ?? projectOnto(clip, box);
|
|
106
|
+
}
|
|
107
|
+
export function containsPoint(box, point) {
|
|
108
|
+
return point.x >= box.x && point.x <= right(box) && point.y >= box.y && point.y <= bottom(box);
|
|
109
|
+
}
|
|
110
|
+
export function containsBox(outer, inner, epsilon = 0) {
|
|
111
|
+
return (inner.x >= outer.x - epsilon &&
|
|
112
|
+
inner.y >= outer.y - epsilon &&
|
|
113
|
+
right(inner) <= right(outer) + epsilon &&
|
|
114
|
+
bottom(inner) <= bottom(outer) + epsilon);
|
|
115
|
+
}
|
|
116
|
+
export function boxesEqual(a, b, epsilon = 0.01) {
|
|
117
|
+
if (a === b) {
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
if (!a || !b) {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
return (Math.abs(a.x - b.x) <= epsilon &&
|
|
124
|
+
Math.abs(a.y - b.y) <= epsilon &&
|
|
125
|
+
Math.abs(a.width - b.width) <= epsilon &&
|
|
126
|
+
Math.abs(a.height - b.height) <= epsilon);
|
|
127
|
+
}
|
|
128
|
+
export function sizesEqual(a, b, epsilon = 0.01) {
|
|
129
|
+
if (a === b) {
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
if (!a || !b) {
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
return Math.abs(a.width - b.width) <= epsilon && Math.abs(a.height - b.height) <= epsilon;
|
|
136
|
+
}
|
|
137
|
+
export function insetsEqual(a, b, epsilon = 0.01) {
|
|
138
|
+
return (Math.abs(a.top - b.top) <= epsilon &&
|
|
139
|
+
Math.abs(a.right - b.right) <= epsilon &&
|
|
140
|
+
Math.abs(a.bottom - b.bottom) <= epsilon &&
|
|
141
|
+
Math.abs(a.left - b.left) <= epsilon);
|
|
142
|
+
}
|
|
143
|
+
export function pointsEqual(a, b, epsilon = 0.01) {
|
|
144
|
+
return Math.abs(a.x - b.x) <= epsilon && Math.abs(a.y - b.y) <= epsilon;
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=box.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"box.util.js","sourceRoot":"","sources":["../../../src/shared/geometry/box.util.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { Box, Side, Size, Viewport } from './geometry.type.js';
|
|
2
|
+
export type LayoutPlacement = Side | 'center';
|
|
3
|
+
export type TooltipLayoutInput = {
|
|
4
|
+
/** The target in layer coordinates, or `undefined` for a centred step. */
|
|
5
|
+
readonly target: Box | undefined;
|
|
6
|
+
/** The tooltip's measured size (already rendered with `maxWidth`/`maxHeight` applied). */
|
|
7
|
+
readonly tooltip: Size;
|
|
8
|
+
readonly viewport: Viewport;
|
|
9
|
+
/** Preferred side. */
|
|
10
|
+
readonly placement: Side;
|
|
11
|
+
/** Side used for the same step before; kept while it still fits so the tooltip does not flip-flop. */
|
|
12
|
+
readonly previousPlacement?: LayoutPlacement | undefined;
|
|
13
|
+
/** Distance between the highlighted area and the tooltip. Arrows must not be longer than this. */
|
|
14
|
+
readonly gap: number;
|
|
15
|
+
/** Space between the target and the edge of the highlighted area. */
|
|
16
|
+
readonly highlightPadding: number;
|
|
17
|
+
/** Minimum distance between the tooltip and the edge of the safe area. */
|
|
18
|
+
readonly viewportPadding: number;
|
|
19
|
+
/** Minimum distance between the arrow and the tooltip's corners. */
|
|
20
|
+
readonly arrowPadding: number;
|
|
21
|
+
/** When set, the position is snapped to device pixels without leaving the safe area. */
|
|
22
|
+
readonly pixelRatio?: number;
|
|
23
|
+
};
|
|
24
|
+
export type TooltipLayout = {
|
|
25
|
+
readonly x: number;
|
|
26
|
+
readonly y: number;
|
|
27
|
+
/** The size the tooltip occupies; the box `x, y, width, height` always lies inside the safe area. */
|
|
28
|
+
readonly width: number;
|
|
29
|
+
readonly height: number;
|
|
30
|
+
/** Side the tooltip was placed on, or `'center'` for steps without a target. */
|
|
31
|
+
readonly placement: LayoutPlacement;
|
|
32
|
+
/** Size limits the tooltip must be rendered with. Independent of the tooltip's size, so measuring again with them is stable. */
|
|
33
|
+
readonly maxWidth: number;
|
|
34
|
+
readonly maxHeight: number;
|
|
35
|
+
/** Offset of the arrow along the tooltip edge facing the target, or `undefined` when no arrow should be drawn. */
|
|
36
|
+
readonly arrowOffset: number | undefined;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Sub-pixel slack when deciding whether a side has room. Without it, floating-point noise (for
|
|
40
|
+
* example from scrolling) could flip the tooltip between sides for differences of 1e-15 px.
|
|
41
|
+
*/
|
|
42
|
+
export declare const fitTolerance = 1e-7;
|
|
43
|
+
/**
|
|
44
|
+
* The area the tooltip may occupy: the viewport minus obstructed insets minus padding. On an axis
|
|
45
|
+
* where that would leave less than one pixel, the padding is dropped first and then the insets, so
|
|
46
|
+
* the result is never empty while the viewport itself has room. The result is always inside the
|
|
47
|
+
* viewport rect.
|
|
48
|
+
*/
|
|
49
|
+
export declare function getSafeArea(viewport: Viewport, viewportPadding: number): Box;
|
|
50
|
+
/**
|
|
51
|
+
* Where to put the tooltip so it never leaves the visible, unobstructed part of the screen.
|
|
52
|
+
*
|
|
53
|
+
* Guarantees, for any input (including non-finite numbers):
|
|
54
|
+
* - the returned box lies inside the safe area (see {@link getSafeArea}), and therefore inside the viewport;
|
|
55
|
+
* - `maxWidth`/`maxHeight` depend only on the viewport, so re-measuring with them reaches a fixed point;
|
|
56
|
+
* - when any side has room, the tooltip does not overlap the highlighted area;
|
|
57
|
+
* - the preferred side wins whenever it fits, then the opposite side, then the roomier perpendicular side.
|
|
58
|
+
*/
|
|
59
|
+
export declare function computeTooltipLayout(input: TooltipLayoutInput): TooltipLayout;
|
|
60
|
+
//# sourceMappingURL=compute-tooltip-layout.util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compute-tooltip-layout.util.d.ts","sourceRoot":"","sources":["../../../src/shared/geometry/compute-tooltip-layout.util.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAC,MAAM,oBAAoB,CAAC;AAElE,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,QAAQ,CAAC;AAE9C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,SAAS,CAAC;IACjC,0FAA0F;IAC1F,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,sBAAsB;IACtB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,sGAAsG;IACtG,QAAQ,CAAC,iBAAiB,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACzD,kGAAkG;IAClG,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,0EAA0E;IAC1E,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,oEAAoE;IACpE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,wFAAwF;IACxF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,qGAAqG;IACrG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,gFAAgF;IAChF,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,gIAAgI;IAChI,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,kHAAkH;IAClH,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1C,CAAC;AAKF;;;GAGG;AACH,eAAO,MAAM,YAAY,OAAO,CAAC;AAejC;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,GAAG,GAAG,CAsB5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,CA8D7E"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { bottom, centerX, centerY, clamp, deflate, finiteOr, inflate, intersect, projectOnto, right, sanitizeBox, sanitizeInsets, sanitizeLength, sanitizeSize, } from './box.util.js';
|
|
2
|
+
const sides = ['top', 'right', 'bottom', 'left'];
|
|
3
|
+
const knownSides = new Set(sides);
|
|
4
|
+
/**
|
|
5
|
+
* Sub-pixel slack when deciding whether a side has room. Without it, floating-point noise (for
|
|
6
|
+
* example from scrolling) could flip the tooltip between sides for differences of 1e-15 px.
|
|
7
|
+
*/
|
|
8
|
+
export const fitTolerance = 1e-7;
|
|
9
|
+
const opposite = { top: 'bottom', bottom: 'top', left: 'right', right: 'left' };
|
|
10
|
+
const perpendicular = {
|
|
11
|
+
top: ['right', 'left'],
|
|
12
|
+
bottom: ['right', 'left'],
|
|
13
|
+
left: ['top', 'bottom'],
|
|
14
|
+
right: ['top', 'bottom'],
|
|
15
|
+
};
|
|
16
|
+
function isVertical(side) {
|
|
17
|
+
return side === 'top' || side === 'bottom';
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The area the tooltip may occupy: the viewport minus obstructed insets minus padding. On an axis
|
|
21
|
+
* where that would leave less than one pixel, the padding is dropped first and then the insets, so
|
|
22
|
+
* the result is never empty while the viewport itself has room. The result is always inside the
|
|
23
|
+
* viewport rect.
|
|
24
|
+
*/
|
|
25
|
+
export function getSafeArea(viewport, viewportPadding) {
|
|
26
|
+
const rect = sanitizeBox(viewport.rect);
|
|
27
|
+
const insets = sanitizeInsets(viewport.insets);
|
|
28
|
+
const padding = sanitizeLength(viewportPadding);
|
|
29
|
+
const axis = (start, size, insetStart, insetEnd) => {
|
|
30
|
+
const candidates = [
|
|
31
|
+
[start + insetStart + padding, start + size - insetEnd - padding],
|
|
32
|
+
[start + insetStart, start + size - insetEnd],
|
|
33
|
+
];
|
|
34
|
+
for (const [from, to] of candidates) {
|
|
35
|
+
if (to - from >= 1) {
|
|
36
|
+
return [from, to];
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return [start, start + size];
|
|
40
|
+
};
|
|
41
|
+
const [x1, x2] = axis(rect.x, rect.width, insets.left, insets.right);
|
|
42
|
+
const [y1, y2] = axis(rect.y, rect.height, insets.top, insets.bottom);
|
|
43
|
+
return { x: x1, y: y1, width: x2 - x1, height: y2 - y1 };
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Where to put the tooltip so it never leaves the visible, unobstructed part of the screen.
|
|
47
|
+
*
|
|
48
|
+
* Guarantees, for any input (including non-finite numbers):
|
|
49
|
+
* - the returned box lies inside the safe area (see {@link getSafeArea}), and therefore inside the viewport;
|
|
50
|
+
* - `maxWidth`/`maxHeight` depend only on the viewport, so re-measuring with them reaches a fixed point;
|
|
51
|
+
* - when any side has room, the tooltip does not overlap the highlighted area;
|
|
52
|
+
* - the preferred side wins whenever it fits, then the opposite side, then the roomier perpendicular side.
|
|
53
|
+
*/
|
|
54
|
+
export function computeTooltipLayout(input) {
|
|
55
|
+
const safe = getSafeArea(input.viewport, input.viewportPadding);
|
|
56
|
+
const gap = sanitizeLength(input.gap);
|
|
57
|
+
const tooltip = sanitizeSize(input.tooltip);
|
|
58
|
+
const width = Math.min(tooltip.width, safe.width);
|
|
59
|
+
const height = Math.min(tooltip.height, safe.height);
|
|
60
|
+
const base = { width, height, maxWidth: safe.width, maxHeight: safe.height };
|
|
61
|
+
const finish = (x, y, placement, arrowOffset) => {
|
|
62
|
+
const snapped = snap(x, y, input.pixelRatio);
|
|
63
|
+
return {
|
|
64
|
+
...base,
|
|
65
|
+
x: clamp(snapped.x, safe.x, right(safe) - width),
|
|
66
|
+
y: clamp(snapped.y, safe.y, bottom(safe) - height),
|
|
67
|
+
placement,
|
|
68
|
+
arrowOffset,
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
const rawTarget = input.target ? sanitizeBox(input.target) : undefined;
|
|
72
|
+
if (!rawTarget) {
|
|
73
|
+
return finish(safe.x + (safe.width - width) / 2, safe.y + (safe.height - height) / 2, 'center', undefined);
|
|
74
|
+
}
|
|
75
|
+
const anchor = inflate(rawTarget, sanitizeLength(input.highlightPadding));
|
|
76
|
+
const visible = intersect(anchor, safe);
|
|
77
|
+
const effective = visible ?? projectOnto(anchor, safe);
|
|
78
|
+
const space = {
|
|
79
|
+
top: effective.y - safe.y - gap,
|
|
80
|
+
bottom: bottom(safe) - bottom(effective) - gap,
|
|
81
|
+
left: effective.x - safe.x - gap,
|
|
82
|
+
right: right(safe) - right(effective) - gap,
|
|
83
|
+
};
|
|
84
|
+
const room = (side) => space[side] - (isVertical(side) ? height : width);
|
|
85
|
+
const fits = (side) => room(side) >= -fitTolerance;
|
|
86
|
+
const preferred = knownSides.has(input.placement) ? input.placement : 'bottom';
|
|
87
|
+
const order = [preferred, opposite[preferred], ...roomiestFirst(perpendicular[preferred], room)];
|
|
88
|
+
const previous = input.previousPlacement;
|
|
89
|
+
if (previous && previous !== 'center' && previous !== preferred) {
|
|
90
|
+
order.unshift(previous);
|
|
91
|
+
}
|
|
92
|
+
const chosen = order.find((side) => fits(side));
|
|
93
|
+
const side = chosen ?? roomiestFirst(order, room)[0] ?? preferred;
|
|
94
|
+
const position = placeOnSide({ side, anchor: effective, size: { width, height }, gap, safe });
|
|
95
|
+
// The arrow points at the centre of the part of the actual target the user can see.
|
|
96
|
+
const visibleTarget = intersect(rawTarget, deflate(sanitizeBox(input.viewport.rect), sanitizeInsets(input.viewport.insets)));
|
|
97
|
+
let arrowOffset;
|
|
98
|
+
if (chosen && visibleTarget) {
|
|
99
|
+
const edge = isVertical(side) ? width : height;
|
|
100
|
+
const inset = Math.min(sanitizeLength(input.arrowPadding), edge / 2);
|
|
101
|
+
const target = isVertical(side) ? centerX(visibleTarget) - position.x : centerY(visibleTarget) - position.y;
|
|
102
|
+
arrowOffset = clamp(target, inset, edge - inset);
|
|
103
|
+
}
|
|
104
|
+
return finish(position.x, position.y, side, arrowOffset);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Sorts sides by available room, largest first. Sides whose room differs by less than
|
|
108
|
+
* {@link fitTolerance} keep their given order, so the result does not depend on rounding noise.
|
|
109
|
+
*/
|
|
110
|
+
function roomiestFirst(candidates, room) {
|
|
111
|
+
const result = [];
|
|
112
|
+
for (const side of candidates) {
|
|
113
|
+
const index = result.findIndex((other) => room(side) > room(other) + fitTolerance);
|
|
114
|
+
if (index === -1) {
|
|
115
|
+
result.push(side);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
result.splice(index, 0, side);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return result;
|
|
122
|
+
}
|
|
123
|
+
function placeOnSide({ side, anchor, size, gap, safe }) {
|
|
124
|
+
const crossX = clamp(centerX(anchor) - size.width / 2, safe.x, right(safe) - size.width);
|
|
125
|
+
const crossY = clamp(centerY(anchor) - size.height / 2, safe.y, bottom(safe) - size.height);
|
|
126
|
+
switch (side) {
|
|
127
|
+
case 'top': {
|
|
128
|
+
return { x: crossX, y: anchor.y - gap - size.height };
|
|
129
|
+
}
|
|
130
|
+
case 'bottom': {
|
|
131
|
+
return { x: crossX, y: bottom(anchor) + gap };
|
|
132
|
+
}
|
|
133
|
+
case 'left': {
|
|
134
|
+
return { x: anchor.x - gap - size.width, y: crossY };
|
|
135
|
+
}
|
|
136
|
+
case 'right': {
|
|
137
|
+
return { x: right(anchor) + gap, y: crossY };
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
function snap(x, y, pixelRatio) {
|
|
142
|
+
const ratio = finiteOr(pixelRatio ?? 0, 0);
|
|
143
|
+
if (ratio <= 0) {
|
|
144
|
+
return { x, y };
|
|
145
|
+
}
|
|
146
|
+
return { x: Math.round(x * ratio) / ratio, y: Math.round(y * ratio) / ratio };
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=compute-tooltip-layout.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compute-tooltip-layout.util.js","sourceRoot":"","sources":["../../../src/shared/geometry/compute-tooltip-layout.util.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Axis-aligned box in the tour layer's coordinate space (CSS pixels on web, density-independent
|
|
3
|
+
* pixels on React Native). `x`/`y` are the top-left corner.
|
|
4
|
+
*/
|
|
5
|
+
export type Box = {
|
|
6
|
+
readonly x: number;
|
|
7
|
+
readonly y: number;
|
|
8
|
+
readonly width: number;
|
|
9
|
+
readonly height: number;
|
|
10
|
+
};
|
|
11
|
+
export type Size = {
|
|
12
|
+
readonly width: number;
|
|
13
|
+
readonly height: number;
|
|
14
|
+
};
|
|
15
|
+
export type Point = {
|
|
16
|
+
readonly x: number;
|
|
17
|
+
readonly y: number;
|
|
18
|
+
};
|
|
19
|
+
export type Insets = {
|
|
20
|
+
readonly top: number;
|
|
21
|
+
readonly right: number;
|
|
22
|
+
readonly bottom: number;
|
|
23
|
+
readonly left: number;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* The region the user can actually see, plus the parts of it that are obstructed
|
|
27
|
+
* (notch, home indicator, on-screen keyboard, system bars).
|
|
28
|
+
*/
|
|
29
|
+
export type Viewport = {
|
|
30
|
+
readonly rect: Box;
|
|
31
|
+
readonly insets: Insets;
|
|
32
|
+
};
|
|
33
|
+
export type Side = 'top' | 'bottom' | 'left' | 'right';
|
|
34
|
+
//# sourceMappingURL=geometry.type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometry.type.d.ts","sourceRoot":"","sources":["../../../src/shared/geometry/geometry.type.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,GAAG,GAAG;IAChB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG;IACjB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometry.type.js","sourceRoot":"","sources":["../../../src/shared/geometry/geometry.type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { Box, Insets, Point, Side, Size } from './geometry.type.js';
|
|
2
|
+
/**
|
|
3
|
+
* How far a container has to scroll (positive: further down/right) so that the target plus a
|
|
4
|
+
* margin is inside `area` and clear of `obstacles` (elements that stay put while the content
|
|
5
|
+
* scrolls: sticky headers, floating buttons, cookie banners, any number of them).
|
|
6
|
+
*
|
|
7
|
+
* Per axis, the obstacles in the target's column (row) cut the area into free gaps. The target is
|
|
8
|
+
* moved into the gap that needs the least scrolling, so scrolling up and down behave the same. The
|
|
9
|
+
* first margin that fits is used (preferring one that fits on both axes). A target that only fits
|
|
10
|
+
* without margin is centred in the nearest gap that can hold it; a target that fits in no gap is
|
|
11
|
+
* aligned to the start of the largest one, keeping the smallest margin.
|
|
12
|
+
*/
|
|
13
|
+
export declare function computeRevealDelta(target: Box, area: Box, margins: readonly Insets[], obstacles?: readonly Box[]): Point;
|
|
14
|
+
type Segment = {
|
|
15
|
+
readonly from: number;
|
|
16
|
+
readonly to: number;
|
|
17
|
+
};
|
|
18
|
+
/** The parts of `[from, to]` not covered by `blocked`. Fully blocked: the whole range (nothing can be avoided). */
|
|
19
|
+
export declare function freeSegments(from: number, to: number, blocked: ReadonlyArray<readonly [number, number]>): Segment[];
|
|
20
|
+
export type RevealMarginInput = {
|
|
21
|
+
readonly target: Box;
|
|
22
|
+
readonly tooltip: Size;
|
|
23
|
+
/** The visible, unobstructed part of the screen. */
|
|
24
|
+
readonly area: Box;
|
|
25
|
+
/** Sides in the order the tooltip would try them. */
|
|
26
|
+
readonly sides: readonly Side[];
|
|
27
|
+
readonly gap: number;
|
|
28
|
+
readonly highlightPadding: number;
|
|
29
|
+
readonly viewportPadding: number;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Margins to keep around the target while scrolling it into view. The first entry also leaves
|
|
33
|
+
* room for the tooltip on the first side (in the given order) where target and tooltip fit on
|
|
34
|
+
* screen together. The last entry only keeps the highlight padding and viewport padding.
|
|
35
|
+
*/
|
|
36
|
+
export declare function buildRevealMargins(input: RevealMarginInput): Insets[];
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=reveal.util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reveal.util.d.ts","sourceRoot":"","sources":["../../../src/shared/geometry/reveal.util.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,oBAAoB,CAAC;AAIvE;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,GAAG,EACX,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,SAAS,GAAE,SAAS,GAAG,EAAO,GAC7B,KAAK,CAuCP;AAaD,KAAK,OAAO,GAAG;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAC,CAAC;AAE5D,mHAAmH;AACnH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,CAqBnH;AAyDD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,oDAAoD;IACpD,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;IACnB,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAkBrE"}
|