@plurid/plurid-react 0.0.0-21 → 0.0.0-24
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/distribution/components/links/Link/components/Preview/index.d.ts +4 -1
- package/distribution/components/links/Link/index.d.ts +9 -7
- package/distribution/components/links/RouterLink/index.d.ts +3 -0
- package/distribution/components/links/RouterLink/styled.d.ts +6 -2
- package/distribution/components/structural/Plane/components/PlaneBridge/index.d.ts +1 -0
- package/distribution/components/structural/Plane/components/PlaneBridge/styled.d.ts +2 -0
- package/distribution/components/structural/Plane/components/PlaneContent/index.d.ts +1 -1
- package/distribution/components/structural/Plane/components/PlaneControls/components/ControlIsolate/index.d.ts +9 -0
- package/distribution/components/structural/Plane/components/PlaneControls/components/ControlRefresh/index.d.ts +9 -0
- package/distribution/components/structural/Plane/components/PlaneControls/index.d.ts +14 -4
- package/distribution/components/structural/Plane/components/PlaneControls/styled.d.ts +1 -0
- package/distribution/components/structural/Plane/index.d.ts +8 -4
- package/distribution/components/structural/Plane/styled.d.ts +1 -0
- package/distribution/components/structural/Root/index.d.ts +2 -1
- package/distribution/components/structural/Roots/index.d.ts +1 -1
- package/distribution/components/utilities/ApplicationConfigurator/index.d.ts +2 -1
- package/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Global/index.d.ts +6 -5
- package/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Space/index.d.ts +6 -5
- package/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Technical/index.d.ts +2 -1
- package/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Toolbar/index.d.ts +6 -5
- package/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Transform/index.d.ts +4 -3
- package/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Viewcube/index.d.ts +5 -4
- package/distribution/components/utilities/Toolbar/General/components/MenuMore/index.d.ts +3 -2
- package/distribution/components/utilities/Toolbar/General/components/MenuUniverses/index.d.ts +2 -1
- package/distribution/components/utilities/Toolbar/General/components/ToolbarRotate/index.d.ts +6 -5
- package/distribution/components/utilities/Toolbar/General/components/ToolbarScale/index.d.ts +4 -3
- package/distribution/components/utilities/Toolbar/General/components/ToolbarTranslate/index.d.ts +8 -5
- package/distribution/components/utilities/Toolbar/General/components/TransformArrow/data.d.ts +7 -0
- package/distribution/components/utilities/Toolbar/General/components/TransformArrow/index.d.ts +3 -1
- package/distribution/components/utilities/Toolbar/General/index.d.ts +4 -4
- package/distribution/components/utilities/UniverseExplorer/index.d.ts +1 -1
- package/distribution/components/utilities/Viewcube/components/ViewcubeFace/data.d.ts +391 -0
- package/distribution/components/utilities/Viewcube/components/ViewcubeFace/index.d.ts +5 -4
- package/distribution/components/utilities/Viewcube/components/ViewcubeTransformAreas/TransformArea/data.d.ts +5 -0
- package/distribution/components/utilities/Viewcube/components/ViewcubeTransformAreas/TransformArea/index.d.ts +11 -0
- package/distribution/components/utilities/Viewcube/components/ViewcubeTransformAreas/TransformArea/styled.d.ts +17 -0
- package/distribution/components/utilities/Viewcube/components/ViewcubeTransformAreas/index.d.ts +13 -0
- package/distribution/components/utilities/Viewcube/components/ViewcubeTransformAreas/styled.d.ts +13 -0
- package/distribution/components/utilities/Viewcube/index.d.ts +6 -5
- package/distribution/components/virtuals/List/index.d.ts +1 -1
- package/distribution/containers/Application/View/Container/index.d.ts +5 -0
- package/distribution/containers/Application/View/index.d.ts +33 -29
- package/distribution/containers/Application/View/styled.d.ts +6 -1
- package/distribution/containers/RouterBrowser/index.d.ts +3 -1
- package/distribution/containers/RouterStatic/index.d.ts +1 -1
- package/distribution/data/interfaces/index.d.ts +1 -0
- package/distribution/data/interfaces/utility.d.ts +3 -0
- package/distribution/index.d.ts +42 -6
- package/distribution/index.es.js +1769 -2432
- package/distribution/index.es.js.map +1 -1
- package/distribution/index.js +1816 -2481
- package/distribution/index.js.map +1 -1
- package/distribution/index.min.js +558 -526
- package/distribution/index.min.js.map +1 -1
- package/distribution/services/engine/index.d.ts +22 -0
- package/distribution/services/logic/animation/index.d.ts +16 -0
- package/distribution/services/logic/computing/index.d.ts +14 -7
- package/distribution/services/logic/router/index.d.ts +6 -17
- package/distribution/services/logic/shortcuts/index.d.ts +14 -9
- package/distribution/services/logic/shortcuts/logic.d.ts +6 -0
- package/distribution/services/logic/state/index.d.ts +3 -0
- package/distribution/services/logic/transform/index.d.ts +2 -1
- package/distribution/services/state/actions/index.d.ts +223 -6
- package/distribution/services/state/hooks/index.d.ts +4 -0
- package/distribution/services/state/modules/configuration/index.d.ts +66 -7
- package/distribution/services/state/modules/general/index.d.ts +10 -7
- package/distribution/services/state/modules/index.d.ts +1 -0
- package/distribution/services/state/modules/shortcuts/index.d.ts +16 -7
- package/distribution/services/state/modules/space/index.d.ts +126 -7
- package/distribution/services/state/modules/space/selectors.d.ts +29 -0
- package/distribution/services/state/modules/space/types.d.ts +42 -0
- package/distribution/services/state/modules/themes/index.d.ts +22 -7
- package/distribution/services/state/modules/ui/index.d.ts +16 -7
- package/distribution/services/state/selectors/index.d.ts +47 -182
- package/distribution/services/state/store/development/index.d.ts +3 -3
- package/distribution/services/state/store/index.d.ts +22 -18
- package/distribution/services/state/store/production/index.d.ts +3 -3
- package/distribution/services/state/store/reducer/index.d.ts +10 -0
- package/package.json +32 -33
- package/distribution/containers/Application/View/ErrorView/index.d.ts +0 -6
- package/distribution/containers/Application/View/ErrorView/styled.d.ts +0 -1
- package/distribution/containers/Application/View/PlanesView/index.d.ts +0 -10
- package/distribution/containers/Application/View/index-old.d.ts +0 -1
- package/distribution/containers/Application/View/logic.d.ts +0 -4
- package/distribution/distribution/components/links/Link/components/Preview/index.d.ts +0 -16
- package/distribution/distribution/components/links/Link/components/Preview/styled.d.ts +0 -7
- package/distribution/distribution/components/links/Link/index.d.ts +0 -22
- package/distribution/distribution/components/links/Link/styled.d.ts +0 -7
- package/distribution/distribution/components/links/RouterLink/index.d.ts +0 -17
- package/distribution/distribution/components/links/RouterLink/styled.d.ts +0 -2
- package/distribution/distribution/components/planes/ExternalPlane/index.d.ts +0 -14
- package/distribution/distribution/components/planes/ExternalPlane/styled.d.ts +0 -5
- package/distribution/distribution/components/planes/IframePlane/index.d.ts +0 -14
- package/distribution/distribution/components/planes/IframePlane/styled.d.ts +0 -5
- package/distribution/distribution/components/structural/Plane/components/PlaneBridge/index.d.ts +0 -16
- package/distribution/distribution/components/structural/Plane/components/PlaneBridge/styled.d.ts +0 -7
- package/distribution/distribution/components/structural/Plane/components/PlaneContent/index.d.ts +0 -6
- package/distribution/distribution/components/structural/Plane/components/PlaneContent/styled.d.ts +0 -1
- package/distribution/distribution/components/structural/Plane/components/PlaneControls/components/SearchItem/index.d.ts +0 -19
- package/distribution/distribution/components/structural/Plane/components/PlaneControls/components/SearchItem/styled.d.ts +0 -1
- package/distribution/distribution/components/structural/Plane/components/PlaneControls/components/SearchList/index.d.ts +0 -18
- package/distribution/distribution/components/structural/Plane/components/PlaneControls/components/SearchList/styled.d.ts +0 -2
- package/distribution/distribution/components/structural/Plane/components/PlaneControls/index.d.ts +0 -19
- package/distribution/distribution/components/structural/Plane/components/PlaneControls/styled.d.ts +0 -10
- package/distribution/distribution/components/structural/Plane/components/PlaneDebugger/index.d.ts +0 -13
- package/distribution/distribution/components/structural/Plane/components/PlaneDebugger/styled.d.ts +0 -1
- package/distribution/distribution/components/structural/Plane/index.d.ts +0 -23
- package/distribution/distribution/components/structural/Plane/styled.d.ts +0 -10
- package/distribution/distribution/components/structural/Root/index.d.ts +0 -14
- package/distribution/distribution/components/structural/Root/styled.d.ts +0 -1
- package/distribution/distribution/components/structural/Roots/index.d.ts +0 -18
- package/distribution/distribution/components/structural/Roots/styled.d.ts +0 -3
- package/distribution/distribution/components/structural/Space/components/SpaceDebugger/index.d.ts +0 -13
- package/distribution/distribution/components/structural/Space/components/SpaceDebugger/styled.d.ts +0 -1
- package/distribution/distribution/components/structural/Space/index.d.ts +0 -14
- package/distribution/distribution/components/structural/Space/styled.d.ts +0 -8
- package/distribution/distribution/components/utilities/ApplicationConfigurator/index.d.ts +0 -17
- package/distribution/distribution/components/utilities/ApplicationConfigurator/styled.d.ts +0 -1
- package/distribution/distribution/components/utilities/ErrorBoundary/index.d.ts +0 -18
- package/distribution/distribution/components/utilities/NotFound/index.d.ts +0 -13
- package/distribution/distribution/components/utilities/NotFound/styled.d.ts +0 -1
- package/distribution/distribution/components/utilities/Origin/index.d.ts +0 -15
- package/distribution/distribution/components/utilities/Origin/styled.d.ts +0 -7
- package/distribution/distribution/components/utilities/PlaneConfigurator/index.d.ts +0 -13
- package/distribution/distribution/components/utilities/PlaneConfigurator/styled.d.ts +0 -1
- package/distribution/distribution/components/utilities/Portal/index.d.ts +0 -15
- package/distribution/distribution/components/utilities/Toolbar/Button/index.d.ts +0 -15
- package/distribution/distribution/components/utilities/Toolbar/Button/styled.d.ts +0 -13
- package/distribution/distribution/components/utilities/Toolbar/General/components/Drawer/index.d.ts +0 -18
- package/distribution/distribution/components/utilities/Toolbar/General/components/Drawer/styled.d.ts +0 -3
- package/distribution/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Global/index.d.ts +0 -21
- package/distribution/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Shortcuts/index.d.ts +0 -14
- package/distribution/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Space/index.d.ts +0 -20
- package/distribution/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Technical/index.d.ts +0 -17
- package/distribution/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Toolbar/index.d.ts +0 -22
- package/distribution/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Transform/index.d.ts +0 -19
- package/distribution/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Viewcube/index.d.ts +0 -20
- package/distribution/distribution/components/utilities/Toolbar/General/components/MenuMore/data.d.ts +0 -9
- package/distribution/distribution/components/utilities/Toolbar/General/components/MenuMore/index.d.ts +0 -21
- package/distribution/distribution/components/utilities/Toolbar/General/components/MenuMore/styled.d.ts +0 -3
- package/distribution/distribution/components/utilities/Toolbar/General/components/MenuUniverses/index.d.ts +0 -15
- package/distribution/distribution/components/utilities/Toolbar/General/components/MenuUniverses/styled.d.ts +0 -4
- package/distribution/distribution/components/utilities/Toolbar/General/components/ToolbarRotate/index.d.ts +0 -23
- package/distribution/distribution/components/utilities/Toolbar/General/components/ToolbarRotate/styled.d.ts +0 -1
- package/distribution/distribution/components/utilities/Toolbar/General/components/ToolbarScale/index.d.ts +0 -21
- package/distribution/distribution/components/utilities/Toolbar/General/components/ToolbarScale/styled.d.ts +0 -1
- package/distribution/distribution/components/utilities/Toolbar/General/components/ToolbarTranslate/index.d.ts +0 -23
- package/distribution/distribution/components/utilities/Toolbar/General/components/ToolbarTranslate/styled.d.ts +0 -1
- package/distribution/distribution/components/utilities/Toolbar/General/components/TransformArrow/index.d.ts +0 -14
- package/distribution/distribution/components/utilities/Toolbar/General/components/TransformArrow/styled.d.ts +0 -6
- package/distribution/distribution/components/utilities/Toolbar/General/data.d.ts +0 -6
- package/distribution/distribution/components/utilities/Toolbar/General/index.d.ts +0 -21
- package/distribution/distribution/components/utilities/Toolbar/General/styled.d.ts +0 -29
- package/distribution/distribution/components/utilities/UniverseExplorer/index.d.ts +0 -16
- package/distribution/distribution/components/utilities/UniverseExplorer/styled.d.ts +0 -2
- package/distribution/distribution/components/utilities/Viewcube/components/ViewcubeFace/index.d.ts +0 -26
- package/distribution/distribution/components/utilities/Viewcube/components/ViewcubeFace/styled.d.ts +0 -16
- package/distribution/distribution/components/utilities/Viewcube/components/ViewcubeModel/index.d.ts +0 -17
- package/distribution/distribution/components/utilities/Viewcube/components/ViewcubeModel/styled.d.ts +0 -3
- package/distribution/distribution/components/utilities/Viewcube/index.d.ts +0 -22
- package/distribution/distribution/components/utilities/Viewcube/styled.d.ts +0 -19
- package/distribution/distribution/components/virtuals/List/components/ListItem/index.d.ts +0 -9
- package/distribution/distribution/components/virtuals/List/index.d.ts +0 -15
- package/distribution/distribution/components/virtuals/List/styled.d.ts +0 -1
- package/distribution/distribution/containers/Application/View/ErrorView/index.d.ts +0 -6
- package/distribution/distribution/containers/Application/View/ErrorView/styled.d.ts +0 -1
- package/distribution/distribution/containers/Application/View/PlanesView/index.d.ts +0 -10
- package/distribution/distribution/containers/Application/View/index-old.d.ts +0 -1
- package/distribution/distribution/containers/Application/View/index.d.ts +0 -44
- package/distribution/distribution/containers/Application/View/logic.d.ts +0 -4
- package/distribution/distribution/containers/Application/View/styled.d.ts +0 -3
- package/distribution/distribution/containers/Application/index.d.ts +0 -18
- package/distribution/distribution/containers/Provider/context.d.ts +0 -4
- package/distribution/distribution/containers/Provider/index.d.ts +0 -12
- package/distribution/distribution/containers/RouterBrowser/index.d.ts +0 -5
- package/distribution/distribution/containers/RouterStatic/index.d.ts +0 -18
- package/distribution/distribution/data/constants/index.d.ts +0 -3
- package/distribution/distribution/data/interfaces/index.d.ts +0 -19
- package/distribution/distribution/index.d.ts +0 -81
- package/distribution/distribution/services/context/index.d.ts +0 -5
- package/distribution/distribution/services/hooks/event/index.d.ts +0 -4
- package/distribution/distribution/services/hooks/index.d.ts +0 -2
- package/distribution/distribution/services/hooks/router/index.d.ts +0 -1
- package/distribution/distribution/services/logic/computing/index.d.ts +0 -10
- package/distribution/distribution/services/logic/router/index.d.ts +0 -51
- package/distribution/distribution/services/logic/router/styled.d.ts +0 -5
- package/distribution/distribution/services/logic/server/index.d.ts +0 -3
- package/distribution/distribution/services/logic/shortcuts/index.d.ts +0 -10
- package/distribution/distribution/services/logic/transform/index.d.ts +0 -2
- package/distribution/distribution/services/state/actions/index.d.ts +0 -9
- package/distribution/distribution/services/state/context/index.d.ts +0 -3
- package/distribution/distribution/services/state/global/index.d.ts +0 -6
- package/distribution/distribution/services/state/modules/configuration/actions/index.d.ts +0 -28
- package/distribution/distribution/services/state/modules/configuration/index.d.ts +0 -7
- package/distribution/distribution/services/state/modules/configuration/initial/index.d.ts +0 -3
- package/distribution/distribution/services/state/modules/configuration/reducer/index.d.ts +0 -3
- package/distribution/distribution/services/state/modules/configuration/resolvers/index.d.ts +0 -27
- package/distribution/distribution/services/state/modules/configuration/selectors/index.d.ts +0 -11
- package/distribution/distribution/services/state/modules/configuration/types/index.d.ts +0 -136
- package/distribution/distribution/services/state/modules/general/actions/index.d.ts +0 -2
- package/distribution/distribution/services/state/modules/general/index.d.ts +0 -7
- package/distribution/distribution/services/state/modules/general/initial/index.d.ts +0 -3
- package/distribution/distribution/services/state/modules/general/reducer/index.d.ts +0 -3
- package/distribution/distribution/services/state/modules/general/resolvers/index.d.ts +0 -1
- package/distribution/distribution/services/state/modules/general/selectors/index.d.ts +0 -2
- package/distribution/distribution/services/state/modules/general/types/index.d.ts +0 -3
- package/distribution/distribution/services/state/modules/index.d.ts +0 -15
- package/distribution/distribution/services/state/modules/shortcuts/actions/index.d.ts +0 -3
- package/distribution/distribution/services/state/modules/shortcuts/index.d.ts +0 -7
- package/distribution/distribution/services/state/modules/shortcuts/initial/index.d.ts +0 -3
- package/distribution/distribution/services/state/modules/shortcuts/reducer/index.d.ts +0 -3
- package/distribution/distribution/services/state/modules/shortcuts/resolvers/index.d.ts +0 -3
- package/distribution/distribution/services/state/modules/shortcuts/selectors/index.d.ts +0 -11
- package/distribution/distribution/services/state/modules/shortcuts/types/index.d.ts +0 -13
- package/distribution/distribution/services/state/modules/space/actions/index.d.ts +0 -48
- package/distribution/distribution/services/state/modules/space/index.d.ts +0 -7
- package/distribution/distribution/services/state/modules/space/initial/index.d.ts +0 -3
- package/distribution/distribution/services/state/modules/space/reducer/index.d.ts +0 -3
- package/distribution/distribution/services/state/modules/space/resolvers/index.d.ts +0 -47
- package/distribution/distribution/services/state/modules/space/selectors/index.d.ts +0 -147
- package/distribution/distribution/services/state/modules/space/types/index.d.ts +0 -257
- package/distribution/distribution/services/state/modules/themes/actions/index.d.ts +0 -4
- package/distribution/distribution/services/state/modules/themes/index.d.ts +0 -7
- package/distribution/distribution/services/state/modules/themes/initial/index.d.ts +0 -3
- package/distribution/distribution/services/state/modules/themes/reducer/index.d.ts +0 -3
- package/distribution/distribution/services/state/modules/themes/resolvers/index.d.ts +0 -3
- package/distribution/distribution/services/state/modules/themes/selectors/index.d.ts +0 -19
- package/distribution/distribution/services/state/modules/themes/types/index.d.ts +0 -17
- package/distribution/distribution/services/state/modules/ui/actions/index.d.ts +0 -2
- package/distribution/distribution/services/state/modules/ui/index.d.ts +0 -7
- package/distribution/distribution/services/state/modules/ui/initial/index.d.ts +0 -3
- package/distribution/distribution/services/state/modules/ui/reducer/index.d.ts +0 -3
- package/distribution/distribution/services/state/modules/ui/resolvers/index.d.ts +0 -2
- package/distribution/distribution/services/state/modules/ui/selectors/index.d.ts +0 -11
- package/distribution/distribution/services/state/modules/ui/types/index.d.ts +0 -10
- package/distribution/distribution/services/state/selectors/index.d.ts +0 -197
- package/distribution/distribution/services/state/store/development/index.d.ts +0 -5
- package/distribution/distribution/services/state/store/index.d.ts +0 -19
- package/distribution/distribution/services/state/store/production/index.d.ts +0 -5
- package/distribution/distribution/services/state/store/reducers/index.d.ts +0 -9
- package/distribution/distribution/services/state/types/space.d.ts +0 -3
- package/distribution/distribution/services/styled/index.d.ts +0 -2
- package/distribution/distribution/services/utilities/environment/index.d.ts +0 -7
- package/distribution/distribution/services/utilities/imports/index.d.ts +0 -49
- package/distribution/distribution/services/utilities/react/index.d.ts +0 -3
- package/distribution/services/state/global/index.d.ts +0 -6
- package/distribution/services/state/modules/configuration/actions/index.d.ts +0 -28
- package/distribution/services/state/modules/configuration/initial/index.d.ts +0 -3
- package/distribution/services/state/modules/configuration/reducer/index.d.ts +0 -3
- package/distribution/services/state/modules/configuration/resolvers/index.d.ts +0 -27
- package/distribution/services/state/modules/configuration/selectors/index.d.ts +0 -11
- package/distribution/services/state/modules/configuration/types/index.d.ts +0 -136
- package/distribution/services/state/modules/general/actions/index.d.ts +0 -2
- package/distribution/services/state/modules/general/initial/index.d.ts +0 -3
- package/distribution/services/state/modules/general/reducer/index.d.ts +0 -3
- package/distribution/services/state/modules/general/resolvers/index.d.ts +0 -1
- package/distribution/services/state/modules/general/selectors/index.d.ts +0 -2
- package/distribution/services/state/modules/general/types/index.d.ts +0 -3
- package/distribution/services/state/modules/shortcuts/actions/index.d.ts +0 -3
- package/distribution/services/state/modules/shortcuts/initial/index.d.ts +0 -3
- package/distribution/services/state/modules/shortcuts/reducer/index.d.ts +0 -3
- package/distribution/services/state/modules/shortcuts/resolvers/index.d.ts +0 -3
- package/distribution/services/state/modules/shortcuts/selectors/index.d.ts +0 -11
- package/distribution/services/state/modules/shortcuts/types/index.d.ts +0 -13
- package/distribution/services/state/modules/space/actions/index.d.ts +0 -48
- package/distribution/services/state/modules/space/initial/index.d.ts +0 -3
- package/distribution/services/state/modules/space/reducer/index.d.ts +0 -3
- package/distribution/services/state/modules/space/resolvers/index.d.ts +0 -47
- package/distribution/services/state/modules/space/selectors/index.d.ts +0 -147
- package/distribution/services/state/modules/space/types/index.d.ts +0 -257
- package/distribution/services/state/modules/themes/actions/index.d.ts +0 -4
- package/distribution/services/state/modules/themes/initial/index.d.ts +0 -3
- package/distribution/services/state/modules/themes/reducer/index.d.ts +0 -3
- package/distribution/services/state/modules/themes/resolvers/index.d.ts +0 -3
- package/distribution/services/state/modules/themes/selectors/index.d.ts +0 -19
- package/distribution/services/state/modules/themes/types/index.d.ts +0 -17
- package/distribution/services/state/modules/ui/actions/index.d.ts +0 -2
- package/distribution/services/state/modules/ui/initial/index.d.ts +0 -3
- package/distribution/services/state/modules/ui/reducer/index.d.ts +0 -3
- package/distribution/services/state/modules/ui/resolvers/index.d.ts +0 -2
- package/distribution/services/state/modules/ui/selectors/index.d.ts +0 -11
- package/distribution/services/state/modules/ui/types/index.d.ts +0 -10
- package/distribution/services/state/store/reducers/index.d.ts +0 -9
- package/distribution/services/state/types/space.d.ts +0 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.min.js","sources":["index.js"],"sourcesContent":["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar pluridData = require(\"@plurid/plurid-data\");\n\nvar pluridEngine = require(\"@plurid/plurid-engine\");\n\nvar PluridPubSub = require(\"@plurid/plurid-pubsub\");\n\nvar React = require(\"react\");\n\nvar reactRedux = require(\"react-redux\");\n\nvar redux = require(\"redux\");\n\nvar thunk = require(\"redux-thunk\");\n\nvar pluridFunctions = require(\"@plurid/plurid-functions\");\n\nvar themes$1 = require(\"@plurid/plurid-themes\");\n\nvar styled = require(\"styled-components\");\n\nvar pluridUiComponentsReact = require(\"@plurid/plurid-ui-components-react\");\n\nvar pluridIconsReact = require(\"@plurid/plurid-icons-react\");\n\nvar pluridFunctionsReact = require(\"@plurid/plurid-functions-react\");\n\nvar reactDom = require(\"react-dom\");\n\nvar fetch = require(\"cross-fetch\");\n\nvar elementqlClientReact = require(\"@plurid/elementql-client-react\");\n\nfunction _interopDefaultLegacy(e) {\n return e && typeof e === \"object\" && \"default\" in e ? e : {\n default: e\n };\n}\n\nfunction _interopNamespace(e) {\n if (e && e.__esModule) return e;\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach((function(k) {\n if (k !== \"default\") {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return e[k];\n }\n });\n }\n }));\n }\n n[\"default\"] = e;\n return Object.freeze(n);\n}\n\nvar PluridPubSub__default = _interopDefaultLegacy(PluridPubSub);\n\nvar React__default = _interopDefaultLegacy(React);\n\nvar thunk__default = _interopDefaultLegacy(thunk);\n\nvar themes__default = _interopDefaultLegacy(themes$1);\n\nvar styled__default = _interopDefaultLegacy(styled);\n\nvar fetch__default = _interopDefaultLegacy(fetch);\n\nconst PluridContext = React__default[\"default\"].createContext(undefined);\n\nconst SET_CONFIGURATION = \"SET_CONFIGURATION\";\n\nconst SET_CONFIGURATION_MICRO = \"SET_CONFIGURATION_MICRO\";\n\nconst SET_CONFIGURATION_PLANE_CONTROLS = \"SET_CONFIGURATION_PLANE_CONTROLS\";\n\nconst SET_CONFIGURATION_PLANE_OPACITY = \"SET_CONFIGURATION_PLANE_OPACITY\";\n\nconst SET_CONFIGURATION_THEME_GENERAL = \"SET_CONFIGURATION_THEME_GENERAL\";\n\nconst SET_CONFIGURATION_THEME_INTERACTION = \"SET_CONFIGURATION_THEME_INTERACTION\";\n\nconst SET_CONFIGURATION_LANGUAGE = \"SET_CONFIGURATION_LANGUAGE\";\n\nconst TOGGLE_CONFIGURATION_VIEWCUBE_HIDE = \"TOGGLE_CONFIGURATION_VIEWCUBE_HIDE\";\n\nconst TOGGLE_CONFIGURATION_VIEWCUBE_BUTTONS = \"TOGGLE_CONFIGURATION_VIEWCUBE_BUTTONS\";\n\nconst TOGGLE_CONFIGURATION_VIEWCUBE_OPAQUE = \"TOGGLE_CONFIGURATION_VIEWCUBE_OPAQUE\";\n\nconst TOGGLE_CONFIGURATION_VIEWCUBE_CONCEAL = \"TOGGLE_CONFIGURATION_VIEWCUBE_CONCEAL\";\n\nconst TOGGLE_CONFIGURATION_TOOLBAR_CONCEAL = \"TOGGLE_CONFIGURATION_TOOLBAR_CONCEAL\";\n\nconst TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_ICONS = \"TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_ICONS\";\n\nconst TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_BUTTONS = \"TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_BUTTONS\";\n\nconst TOGGLE_CONFIGURATION_TOOLBAR_OPAQUE = \"TOGGLE_CONFIGURATION_TOOLBAR_OPAQUE\";\n\nconst TOGGLE_CONFIGURATION_TOOLBAR_TOGGLE_DRAWER = \"TOGGLE_CONFIGURATION_TOOLBAR_TOGGLE_DRAWER\";\n\nconst TOGGLE_CONFIGURATION_SPACE_TRANSPARENT_UI = \"TOGGLE_CONFIGURATION_SPACE_TRANSPARENT_UI\";\n\nconst TOGGLE_CONFIGURATION_SPACE_SHOW_TRANSFORM_ORIGIN = \"TOGGLE_CONFIGURATION_SPACE_SHOW_TRANSFORM_ORIGIN\";\n\nconst SET_CONFIGURATION_SPACE_TRANSFORM_ORIGIN_SIZE = \"SET_CONFIGURATION_SPACE_TRANSFORM_ORIGIN_SIZE\";\n\nconst SET_CONFIGURATION_SPACE_TRANSFORM_MODE = \"SET_CONFIGURATION_SPACE_TRANSFORM_MODE\";\n\nconst TOGGLE_CONFIGURATION_SPACE_TRANSFORM_MULTIMODE = \"TOGGLE_CONFIGURATION_SPACE_TRANSFORM_MULTIMODE\";\n\nconst SET_CONFIGURATION_SPACE_TRANSFORM_TOUCH = \"SET_CONFIGURATION_SPACE_TRANSFORM_TOUCH\";\n\nconst TOGGLE_CONFIGURATION_SPACE_FIRST_PERSON = \"TOGGLE_CONFIGURATION_SPACE_FIRST_PERSON\";\n\nconst SET_CONFIGURATION_SPACE_TRANSFORM_LOCKS = \"SET_CONFIGURATION_SPACE_TRANSFORM_LOCKS\";\n\nconst SET_CONFIGURATION_SPACE_LAYOUT_TYPE = \"SET_CONFIGURATION_SPACE_LAYOUT_TYPE\";\n\nconst SET_CONFIGURATION_SPACE_CULLING_DISTANCE = \"SET_CONFIGURATION_SPACE_CULLING_DISTANCE\";\n\nvar index$o = Object.freeze({\n __proto__: null,\n SET_CONFIGURATION: SET_CONFIGURATION,\n SET_CONFIGURATION_MICRO: SET_CONFIGURATION_MICRO,\n SET_CONFIGURATION_PLANE_CONTROLS: SET_CONFIGURATION_PLANE_CONTROLS,\n SET_CONFIGURATION_PLANE_OPACITY: SET_CONFIGURATION_PLANE_OPACITY,\n SET_CONFIGURATION_THEME_GENERAL: SET_CONFIGURATION_THEME_GENERAL,\n SET_CONFIGURATION_THEME_INTERACTION: SET_CONFIGURATION_THEME_INTERACTION,\n SET_CONFIGURATION_LANGUAGE: SET_CONFIGURATION_LANGUAGE,\n TOGGLE_CONFIGURATION_VIEWCUBE_HIDE: TOGGLE_CONFIGURATION_VIEWCUBE_HIDE,\n TOGGLE_CONFIGURATION_VIEWCUBE_BUTTONS: TOGGLE_CONFIGURATION_VIEWCUBE_BUTTONS,\n TOGGLE_CONFIGURATION_VIEWCUBE_OPAQUE: TOGGLE_CONFIGURATION_VIEWCUBE_OPAQUE,\n TOGGLE_CONFIGURATION_VIEWCUBE_CONCEAL: TOGGLE_CONFIGURATION_VIEWCUBE_CONCEAL,\n TOGGLE_CONFIGURATION_TOOLBAR_CONCEAL: TOGGLE_CONFIGURATION_TOOLBAR_CONCEAL,\n TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_ICONS: TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_ICONS,\n TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_BUTTONS: TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_BUTTONS,\n TOGGLE_CONFIGURATION_TOOLBAR_OPAQUE: TOGGLE_CONFIGURATION_TOOLBAR_OPAQUE,\n TOGGLE_CONFIGURATION_TOOLBAR_TOGGLE_DRAWER: TOGGLE_CONFIGURATION_TOOLBAR_TOGGLE_DRAWER,\n TOGGLE_CONFIGURATION_SPACE_TRANSPARENT_UI: TOGGLE_CONFIGURATION_SPACE_TRANSPARENT_UI,\n TOGGLE_CONFIGURATION_SPACE_SHOW_TRANSFORM_ORIGIN: TOGGLE_CONFIGURATION_SPACE_SHOW_TRANSFORM_ORIGIN,\n SET_CONFIGURATION_SPACE_TRANSFORM_ORIGIN_SIZE: SET_CONFIGURATION_SPACE_TRANSFORM_ORIGIN_SIZE,\n SET_CONFIGURATION_SPACE_TRANSFORM_MODE: SET_CONFIGURATION_SPACE_TRANSFORM_MODE,\n TOGGLE_CONFIGURATION_SPACE_TRANSFORM_MULTIMODE: TOGGLE_CONFIGURATION_SPACE_TRANSFORM_MULTIMODE,\n SET_CONFIGURATION_SPACE_TRANSFORM_TOUCH: SET_CONFIGURATION_SPACE_TRANSFORM_TOUCH,\n TOGGLE_CONFIGURATION_SPACE_FIRST_PERSON: TOGGLE_CONFIGURATION_SPACE_FIRST_PERSON,\n SET_CONFIGURATION_SPACE_TRANSFORM_LOCKS: SET_CONFIGURATION_SPACE_TRANSFORM_LOCKS,\n SET_CONFIGURATION_SPACE_LAYOUT_TYPE: SET_CONFIGURATION_SPACE_LAYOUT_TYPE,\n SET_CONFIGURATION_SPACE_CULLING_DISTANCE: SET_CONFIGURATION_SPACE_CULLING_DISTANCE\n});\n\nconst setConfiguration$1 = payload => ({\n type: SET_CONFIGURATION,\n payload: payload\n});\n\nconst setConfigurationMicro$1 = () => ({\n type: SET_CONFIGURATION_MICRO\n});\n\nconst setConfigurationPlaneControls$1 = planeControls => ({\n type: SET_CONFIGURATION_PLANE_CONTROLS,\n payload: planeControls\n});\n\nconst setConfigurationPlaneOpacity$1 = value => ({\n type: SET_CONFIGURATION_PLANE_OPACITY,\n payload: value\n});\n\nconst setConfigurationThemeGeneralAction = payload => ({\n type: SET_CONFIGURATION_THEME_GENERAL,\n payload: payload\n});\n\nconst setConfigurationThemeInteractionAction = payload => ({\n type: SET_CONFIGURATION_THEME_INTERACTION,\n payload: payload\n});\n\nconst setConfigurationLanguageAction = payload => ({\n type: SET_CONFIGURATION_LANGUAGE,\n payload: payload\n});\n\nconst toggleConfigurationViewcubeHide$1 = toggle => ({\n type: TOGGLE_CONFIGURATION_VIEWCUBE_HIDE,\n payload: toggle\n});\n\nconst toggleConfigurationViewcubeButtons$1 = toggle => ({\n type: TOGGLE_CONFIGURATION_VIEWCUBE_BUTTONS,\n payload: toggle\n});\n\nconst toggleConfigurationViewcubeOpaque$1 = toggle => ({\n type: TOGGLE_CONFIGURATION_VIEWCUBE_OPAQUE,\n payload: toggle\n});\n\nconst toggleConfigurationViewcubeConceal$1 = () => ({\n type: TOGGLE_CONFIGURATION_VIEWCUBE_CONCEAL\n});\n\nconst toggleConfigurationToolbarConceal$1 = () => ({\n type: TOGGLE_CONFIGURATION_TOOLBAR_CONCEAL\n});\n\nconst toggleConfigurationToolbarTransformIcons$1 = () => ({\n type: TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_ICONS\n});\n\nconst toggleConfigurationToolbarTransformButtons$1 = () => ({\n type: TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_BUTTONS\n});\n\nconst toggleConfigurationSpaceTransparentUI$1 = () => ({\n type: TOGGLE_CONFIGURATION_SPACE_TRANSPARENT_UI\n});\n\nconst toggleConfigurationSpaceShowTransformOrigin = () => ({\n type: TOGGLE_CONFIGURATION_SPACE_SHOW_TRANSFORM_ORIGIN\n});\n\nconst toggleConfigurationToolbarOpaque$1 = () => ({\n type: TOGGLE_CONFIGURATION_TOOLBAR_OPAQUE\n});\n\nconst toggleConfigurationToolbarToggleDrawer$1 = drawer => ({\n type: TOGGLE_CONFIGURATION_TOOLBAR_TOGGLE_DRAWER,\n payload: drawer\n});\n\nconst setConfigurationSpaceTransformOriginSize$1 = size => ({\n type: SET_CONFIGURATION_SPACE_TRANSFORM_ORIGIN_SIZE,\n payload: size\n});\n\nconst setConfigurationSpaceTransformMode$1 = mode => ({\n type: SET_CONFIGURATION_SPACE_TRANSFORM_MODE,\n payload: mode\n});\n\nconst toggleConfigurationSpaceTransformMultimode$1 = toggle => ({\n type: TOGGLE_CONFIGURATION_SPACE_TRANSFORM_MULTIMODE,\n payload: toggle\n});\n\nconst setConfigurationSpaceTransformTouch$1 = touch => ({\n type: SET_CONFIGURATION_SPACE_TRANSFORM_TOUCH,\n payload: touch\n});\n\nconst toggleConfigurationSpaceFirstPerson$1 = () => ({\n type: TOGGLE_CONFIGURATION_SPACE_FIRST_PERSON\n});\n\nconst setConfigurationSpaceTransformLocks$1 = transformLock => ({\n type: SET_CONFIGURATION_SPACE_TRANSFORM_LOCKS,\n payload: transformLock\n});\n\nconst setConfigurationSpaceLayoutType = layoutType => ({\n type: SET_CONFIGURATION_SPACE_LAYOUT_TYPE,\n payload: layoutType\n});\n\nconst setConfigurationSpaceCullingDistance$1 = value => ({\n type: SET_CONFIGURATION_SPACE_CULLING_DISTANCE,\n payload: value\n});\n\nvar index$n = Object.freeze({\n __proto__: null,\n setConfiguration: setConfiguration$1,\n setConfigurationMicro: setConfigurationMicro$1,\n setConfigurationPlaneControls: setConfigurationPlaneControls$1,\n setConfigurationPlaneOpacity: setConfigurationPlaneOpacity$1,\n setConfigurationThemeGeneralAction: setConfigurationThemeGeneralAction,\n setConfigurationThemeInteractionAction: setConfigurationThemeInteractionAction,\n setConfigurationLanguageAction: setConfigurationLanguageAction,\n toggleConfigurationViewcubeHide: toggleConfigurationViewcubeHide$1,\n toggleConfigurationViewcubeButtons: toggleConfigurationViewcubeButtons$1,\n toggleConfigurationViewcubeOpaque: toggleConfigurationViewcubeOpaque$1,\n toggleConfigurationViewcubeConceal: toggleConfigurationViewcubeConceal$1,\n toggleConfigurationToolbarConceal: toggleConfigurationToolbarConceal$1,\n toggleConfigurationToolbarTransformIcons: toggleConfigurationToolbarTransformIcons$1,\n toggleConfigurationToolbarTransformButtons: toggleConfigurationToolbarTransformButtons$1,\n toggleConfigurationSpaceTransparentUI: toggleConfigurationSpaceTransparentUI$1,\n toggleConfigurationSpaceShowTransformOrigin: toggleConfigurationSpaceShowTransformOrigin,\n toggleConfigurationToolbarOpaque: toggleConfigurationToolbarOpaque$1,\n toggleConfigurationToolbarToggleDrawer: toggleConfigurationToolbarToggleDrawer$1,\n setConfigurationSpaceTransformOriginSize: setConfigurationSpaceTransformOriginSize$1,\n setConfigurationSpaceTransformMode: setConfigurationSpaceTransformMode$1,\n toggleConfigurationSpaceTransformMultimode: toggleConfigurationSpaceTransformMultimode$1,\n setConfigurationSpaceTransformTouch: setConfigurationSpaceTransformTouch$1,\n toggleConfigurationSpaceFirstPerson: toggleConfigurationSpaceFirstPerson$1,\n setConfigurationSpaceTransformLocks: setConfigurationSpaceTransformLocks$1,\n setConfigurationSpaceLayoutType: setConfigurationSpaceLayoutType,\n setConfigurationSpaceCullingDistance: setConfigurationSpaceCullingDistance$1\n});\n\nconst initialState$5 = Object.assign({}, pluridData.defaultConfiguration);\n\nconst setConfiguration = (state, action) => Object.assign(Object.assign({}, state), action.payload);\n\nconst setConfigurationMicro = state => {\n const newState = Object.assign({}, state);\n newState.elements.toolbar.show = false;\n newState.elements.plane.controls.show = false;\n newState.elements.viewcube.show = false;\n return Object.assign({}, newState);\n};\n\nconst setConfigurationPlaneControls = (state, action) => {\n const newState = Object.assign({}, state);\n newState.elements.plane.controls.show = action.payload;\n return Object.assign({}, newState);\n};\n\nconst setConfigurationPlaneOpacity = (state, action) => {\n const newState = Object.assign({}, state);\n newState.elements.plane.opacity = action.payload;\n return Object.assign({}, newState);\n};\n\nconst setConfigurationThemeGeneral = (state, action) => {\n const newState = Object.assign({}, state);\n const updatedTheme = {\n general: action.payload,\n interaction: typeof newState.global.theme === \"object\" ? newState.global.theme.interaction : \"plurid\"\n };\n return Object.assign(Object.assign({}, newState), {\n global: Object.assign(Object.assign({}, newState.global), {\n theme: updatedTheme\n })\n });\n};\n\nconst setConfigurationThemeInteraction = (state, action) => {\n const newState = Object.assign({}, state);\n const updatedTheme = {\n general: typeof newState.global.theme === \"object\" ? newState.global.theme.general : \"plurid\",\n interaction: action.payload\n };\n return Object.assign(Object.assign({}, newState), {\n global: Object.assign(Object.assign({}, newState.global), {\n theme: updatedTheme\n })\n });\n};\n\nconst setConfigurationLanguage = (state, action) => Object.assign(Object.assign({}, state), {\n global: Object.assign(Object.assign({}, state.global), {\n language: action.payload\n })\n});\n\nconst toggleConfigurationViewcubeHide = (state, action) => {\n const newState = Object.assign({}, state);\n newState.elements.viewcube.show = action.payload;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationViewcubeButtons = (state, action) => {\n const newState = Object.assign({}, state);\n newState.elements.viewcube.buttons = action.payload;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationViewcubeOpaque = (state, action) => {\n const newState = Object.assign({}, state);\n newState.elements.viewcube.opaque = action.payload;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationViewcubeConceal = state => {\n const {conceal: conceal} = state.elements.viewcube;\n const newState = Object.assign({}, state);\n newState.elements.viewcube.conceal = !conceal;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationToolbarConceal = state => {\n const {conceal: conceal} = state.elements.toolbar;\n const newState = Object.assign({}, state);\n newState.elements.toolbar.conceal = !conceal;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationToolbarTransformIcons = state => {\n const {transformIcons: transformIcons} = state.elements.toolbar;\n const newState = Object.assign({}, state);\n newState.elements.toolbar.transformIcons = !transformIcons;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationToolbarTransformButtons = state => {\n const {transformButtons: transformButtons} = state.elements.toolbar;\n const newState = Object.assign({}, state);\n newState.elements.toolbar.transformButtons = !transformButtons;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationShowTransformOrigin = state => {\n const {show: show} = state.space.transformOrigin;\n const newState = Object.assign({}, state);\n newState.space.transformOrigin.show = !show;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationToolbarOpaque = state => {\n const {opaque: opaque} = state.elements.toolbar;\n const newState = Object.assign({}, state);\n newState.elements.toolbar.opaque = !opaque;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationSpaceTransparentUI = state => {\n const newState = Object.assign({}, state);\n newState.global.transparentUI = !state.global.transparentUI;\n return Object.assign({}, newState);\n};\n\nconst setConfigurationSpaceTransformOriginSize = (state, action) => {\n const newState = Object.assign({}, state);\n newState.space.transformOrigin.size = action.payload;\n return Object.assign({}, newState);\n};\n\nconst setConfigurationSpaceTransformMode = (state, action) => {\n const newState = Object.assign({}, state);\n if (newState.space.transformMode !== action.payload) {\n newState.space.transformMode = action.payload;\n } else {\n newState.space.transformMode = pluridData.TRANSFORM_MODES.ALL;\n }\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationSpaceTransformMultimode = (state, action) => {\n const newState = Object.assign({}, state);\n newState.space.transformMultimode = action.payload;\n return Object.assign({}, newState);\n};\n\nconst setConfigurationSpaceTransformTouch = (state, action) => {\n const newState = Object.assign({}, state);\n newState.space.transformTouch = action.payload;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationSpaceFirstPerson = state => {\n const {firstPerson: firstPerson} = state.space;\n const newState = Object.assign({}, state);\n newState.space.firstPerson = !firstPerson;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationToolbarToggleDrawer = (state, action) => {\n const {toggledDrawers: toggledDrawers} = state.elements.toolbar;\n const newState = Object.assign({}, state);\n if (toggledDrawers.includes(action.payload)) {\n const updatedDrawers = toggledDrawers.filter((el => el !== action.payload));\n newState.elements.toolbar.toggledDrawers = [ ...updatedDrawers ];\n } else {\n newState.elements.toolbar.toggledDrawers = [ ...toggledDrawers, action.payload ];\n }\n return Object.assign({}, newState);\n};\n\nconst setConfigurationSpaceTransformLocks = (state, action) => {\n const {transformLocks: transformLocks} = state.space;\n const newState = Object.assign({}, state);\n const updatedTransformLocks = Object.assign({}, transformLocks);\n updatedTransformLocks[action.payload] = !transformLocks[action.payload];\n newState.space.transformLocks = Object.assign({}, updatedTransformLocks);\n return Object.assign({}, newState);\n};\n\nconst setConfigurationSpaceLayout = (state, action) => {\n const newState = Object.assign({}, state);\n const layout = {\n type: pluridData.LAYOUT_TYPES[action.payload]\n };\n newState.space.layout = Object.assign({}, layout);\n return Object.assign({}, newState);\n};\n\nconst setConfigurationSpaceCullingDistance = (state, action) => {\n const newState = Object.assign({}, state);\n newState.space.cullingDistance = action.payload;\n return Object.assign({}, newState);\n};\n\nvar index$m = Object.freeze({\n __proto__: null,\n setConfiguration: setConfiguration,\n setConfigurationMicro: setConfigurationMicro,\n setConfigurationPlaneControls: setConfigurationPlaneControls,\n setConfigurationPlaneOpacity: setConfigurationPlaneOpacity,\n setConfigurationThemeGeneral: setConfigurationThemeGeneral,\n setConfigurationThemeInteraction: setConfigurationThemeInteraction,\n setConfigurationLanguage: setConfigurationLanguage,\n toggleConfigurationViewcubeHide: toggleConfigurationViewcubeHide,\n toggleConfigurationViewcubeButtons: toggleConfigurationViewcubeButtons,\n toggleConfigurationViewcubeOpaque: toggleConfigurationViewcubeOpaque,\n toggleConfigurationViewcubeConceal: toggleConfigurationViewcubeConceal,\n toggleConfigurationToolbarConceal: toggleConfigurationToolbarConceal,\n toggleConfigurationToolbarTransformIcons: toggleConfigurationToolbarTransformIcons,\n toggleConfigurationToolbarTransformButtons: toggleConfigurationToolbarTransformButtons,\n toggleConfigurationShowTransformOrigin: toggleConfigurationShowTransformOrigin,\n toggleConfigurationToolbarOpaque: toggleConfigurationToolbarOpaque,\n toggleConfigurationSpaceTransparentUI: toggleConfigurationSpaceTransparentUI,\n setConfigurationSpaceTransformOriginSize: setConfigurationSpaceTransformOriginSize,\n setConfigurationSpaceTransformMode: setConfigurationSpaceTransformMode,\n toggleConfigurationSpaceTransformMultimode: toggleConfigurationSpaceTransformMultimode,\n setConfigurationSpaceTransformTouch: setConfigurationSpaceTransformTouch,\n toggleConfigurationSpaceFirstPerson: toggleConfigurationSpaceFirstPerson,\n toggleConfigurationToolbarToggleDrawer: toggleConfigurationToolbarToggleDrawer,\n setConfigurationSpaceTransformLocks: setConfigurationSpaceTransformLocks,\n setConfigurationSpaceLayout: setConfigurationSpaceLayout,\n setConfigurationSpaceCullingDistance: setConfigurationSpaceCullingDistance\n});\n\nconst SET_STATE = \"SET_STATE\";\n\nconst reducer$5 = (state = initialState$5, action) => {\n switch (action.type) {\n case SET_STATE:\n return Object.assign(Object.assign({}, state), action.payload.configuration);\n\n case SET_CONFIGURATION:\n return setConfiguration(state, action);\n\n case SET_CONFIGURATION_MICRO:\n return setConfigurationMicro(state);\n\n case SET_CONFIGURATION_PLANE_CONTROLS:\n return setConfigurationPlaneControls(state, action);\n\n case SET_CONFIGURATION_PLANE_OPACITY:\n return setConfigurationPlaneOpacity(state, action);\n\n case SET_CONFIGURATION_THEME_GENERAL:\n return setConfigurationThemeGeneral(state, action);\n\n case SET_CONFIGURATION_THEME_INTERACTION:\n return setConfigurationThemeInteraction(state, action);\n\n case SET_CONFIGURATION_LANGUAGE:\n return setConfigurationLanguage(state, action);\n\n case TOGGLE_CONFIGURATION_VIEWCUBE_HIDE:\n return toggleConfigurationViewcubeHide(state, action);\n\n case TOGGLE_CONFIGURATION_VIEWCUBE_BUTTONS:\n return toggleConfigurationViewcubeButtons(state, action);\n\n case TOGGLE_CONFIGURATION_VIEWCUBE_OPAQUE:\n return toggleConfigurationViewcubeOpaque(state, action);\n\n case TOGGLE_CONFIGURATION_VIEWCUBE_CONCEAL:\n return toggleConfigurationViewcubeConceal(state);\n\n case TOGGLE_CONFIGURATION_TOOLBAR_CONCEAL:\n return toggleConfigurationToolbarConceal(state);\n\n case TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_ICONS:\n return toggleConfigurationToolbarTransformIcons(state);\n\n case TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_BUTTONS:\n return toggleConfigurationToolbarTransformButtons(state);\n\n case TOGGLE_CONFIGURATION_TOOLBAR_TOGGLE_DRAWER:\n return toggleConfigurationToolbarToggleDrawer(state, action);\n\n case TOGGLE_CONFIGURATION_TOOLBAR_OPAQUE:\n return toggleConfigurationToolbarOpaque(state);\n\n case TOGGLE_CONFIGURATION_SPACE_TRANSPARENT_UI:\n return toggleConfigurationSpaceTransparentUI(state);\n\n case TOGGLE_CONFIGURATION_SPACE_SHOW_TRANSFORM_ORIGIN:\n return toggleConfigurationShowTransformOrigin(state);\n\n case SET_CONFIGURATION_SPACE_TRANSFORM_ORIGIN_SIZE:\n return setConfigurationSpaceTransformOriginSize(state, action);\n\n case SET_CONFIGURATION_SPACE_TRANSFORM_MODE:\n return setConfigurationSpaceTransformMode(state, action);\n\n case TOGGLE_CONFIGURATION_SPACE_TRANSFORM_MULTIMODE:\n return toggleConfigurationSpaceTransformMultimode(state, action);\n\n case SET_CONFIGURATION_SPACE_TRANSFORM_TOUCH:\n return setConfigurationSpaceTransformTouch(state, action);\n\n case TOGGLE_CONFIGURATION_SPACE_FIRST_PERSON:\n return toggleConfigurationSpaceFirstPerson(state);\n\n case SET_CONFIGURATION_SPACE_TRANSFORM_LOCKS:\n return setConfigurationSpaceTransformLocks(state, action);\n\n case SET_CONFIGURATION_SPACE_LAYOUT_TYPE:\n return setConfigurationSpaceLayout(state, action);\n\n case SET_CONFIGURATION_SPACE_CULLING_DISTANCE:\n return setConfigurationSpaceCullingDistance(state, action);\n\n default:\n return Object.assign({}, state);\n }\n};\n\nconst getConfiguration = state => state.configuration;\n\nvar index$l = {\n getConfiguration: getConfiguration\n};\n\nvar configuration = Object.freeze({\n __proto__: null,\n actions: index$n,\n initialState: initialState$5,\n reducer: reducer$5,\n resolvers: index$m,\n selectors: index$l,\n Types: index$o\n});\n\nvar index$j = {};\n\nvar index$k = Object.freeze({\n __proto__: null,\n default: index$j\n});\n\nconst initialState$4 = {};\n\nconst reducer$4 = (state = initialState$4, action) => Object.assign({}, state);\n\nvar index$i = Object.freeze({\n __proto__: null\n});\n\nvar index$h = {};\n\nvar index$g = Object.freeze({\n __proto__: null\n});\n\nvar general = Object.freeze({\n __proto__: null,\n actions: index$k,\n initialState: initialState$4,\n reducer: reducer$4,\n resolvers: index$i,\n selectors: index$h,\n Types: index$g\n});\n\nconst SHORTCUTS_SET_GLOBAL_SHORTCUTS = \"SHORTCUTS_SET_GLOBAL_SHORTCUTS\";\n\nconst SHORTCUTS_UNSET_GLOBAL_SHORTCUTS = \"SHORTCUTS_UNSET_GLOBAL_SHORTCUTS\";\n\nvar index$f = Object.freeze({\n __proto__: null,\n SHORTCUTS_SET_GLOBAL_SHORTCUTS: SHORTCUTS_SET_GLOBAL_SHORTCUTS,\n SHORTCUTS_UNSET_GLOBAL_SHORTCUTS: SHORTCUTS_UNSET_GLOBAL_SHORTCUTS\n});\n\nconst setGlobalShortcuts$1 = () => ({\n type: SHORTCUTS_SET_GLOBAL_SHORTCUTS\n});\n\nconst unsetGlobalShortcuts$1 = () => ({\n type: SHORTCUTS_UNSET_GLOBAL_SHORTCUTS\n});\n\nvar index$e = Object.freeze({\n __proto__: null,\n setGlobalShortcuts: setGlobalShortcuts$1,\n unsetGlobalShortcuts: unsetGlobalShortcuts$1\n});\n\nconst initialState$3 = {\n global: true\n};\n\nconst setGlobalShortcuts = state => Object.assign(Object.assign({}, state), {\n global: true\n});\n\nconst unsetGlobalShortcuts = state => Object.assign(Object.assign({}, state), {\n global: false\n});\n\nvar index$d = Object.freeze({\n __proto__: null,\n setGlobalShortcuts: setGlobalShortcuts,\n unsetGlobalShortcuts: unsetGlobalShortcuts\n});\n\nconst reducer$3 = (state = initialState$3, action) => {\n switch (action.type) {\n case SET_STATE:\n return Object.assign(Object.assign({}, state), action.payload.shortcuts);\n\n case SHORTCUTS_SET_GLOBAL_SHORTCUTS:\n return setGlobalShortcuts(state);\n\n case SHORTCUTS_UNSET_GLOBAL_SHORTCUTS:\n return unsetGlobalShortcuts(state);\n\n default:\n return Object.assign({}, state);\n }\n};\n\nconst getGlobal = state => state.shortcuts.global;\n\nvar index$c = {\n getGlobal: getGlobal\n};\n\nvar shortcuts = Object.freeze({\n __proto__: null,\n actions: index$e,\n initialState: initialState$3,\n reducer: reducer$3,\n resolvers: index$d,\n selectors: index$c,\n Types: index$f\n});\n\nconst SET_SPACE_FIELD = \"SET_SPACE_FIELD\";\n\nconst SET_SPACE_LOADING = \"SET_SPACE_LOADING\";\n\nconst SET_TRANSFORM = \"SET_TRANSFORM\";\n\nconst SET_ANIMATED_TRANSFORM = \"SET_ANIMATED_TRANSFORM\";\n\nconst SET_TRANSFORM_TIME = \"SET_TRANSFORM_TIME\";\n\nconst SET_SPACE_LOCATION = \"SET_SPACE_LOCATION\";\n\nconst VIEW_CAMERA_MOVE_FORWARD = \"VIEW_CAMERA_MOVE_FORWARD\";\n\nconst VIEW_CAMERA_MOVE_BACKWARD = \"VIEW_CAMERA_MOVE_BACKWARD\";\n\nconst VIEW_CAMERA_MOVE_LEFT = \"VIEW_CAMERA_MOVE_LEFT\";\n\nconst VIEW_CAMERA_MOVE_RIGHT = \"VIEW_CAMERA_MOVE_RIGHT\";\n\nconst VIEW_CAMERA_MOVE_UP = \"VIEW_CAMERA_MOVE_UP\";\n\nconst VIEW_CAMERA_MOVE_DOWN = \"VIEW_CAMERA_MOVE_DOWN\";\n\nconst VIEW_CAMERA_TURN_UP = \"VIEW_CAMERA_TURN_UP\";\n\nconst VIEW_CAMERA_TURN_DOWN = \"VIEW_CAMERA_TURN_DOWN\";\n\nconst VIEW_CAMERA_TURN_LEFT = \"VIEW_CAMERA_TURN_LEFT\";\n\nconst VIEW_CAMERA_TURN_RIGHT = \"VIEW_CAMERA_TURN_RIGHT\";\n\nconst ROTATE_UP = \"ROTATE_UP\";\n\nconst ROTATE_DOWN = \"ROTATE_DOWN\";\n\nconst ROTATE_LEFT = \"ROTATE_LEFT\";\n\nconst ROTATE_X = \"ROTATE_X\";\n\nconst ROTATE_X_WITH = \"ROTATE_X_WITH\";\n\nconst ROTATE_RIGHT = \"ROTATE_RIGHT\";\n\nconst ROTATE_Y = \"ROTATE_Y\";\n\nconst ROTATE_Y_WITH = \"ROTATE_Y_WITH\";\n\nconst TRANSLATE_UP = \"TRANSLATE_UP\";\n\nconst TRANSLATE_DOWN = \"TRANSLATE_DOWN\";\n\nconst TRANSLATE_LEFT = \"TRANSLATE_LEFT\";\n\nconst TRANSLATE_RIGHT = \"TRANSLATE_RIGHT\";\n\nconst TRANSLATE_IN = \"TRANSLATE_IN\";\n\nconst TRANSLATE_OUT = \"TRANSLATE_OUT\";\n\nconst TRANSLATE_X_WITH = \"TRANSLATE_X_WITH\";\n\nconst TRANSLATE_Y_WITH = \"TRANSLATE_Y_WITH\";\n\nconst SCALE_UP = \"SCALE_UP\";\n\nconst SCALE_DOWN = \"SCALE_DOWN\";\n\nconst SCALE_UP_WITH = \"SCALE_UP_WITH\";\n\nconst SCALE_DOWN_WITH = \"SCALE_DOWN_WITH\";\n\nconst SET_INITIAL_TREE = \"SET_INITIAL_TREE\";\n\nconst SET_TREE = \"SET_TREE\";\n\nconst SET_ACTIVE_UNIVERSE = \"SET_ACTIVE_UNIVERSE\";\n\nconst SPACE_RESET_TRANSFORM = \"SPACE_RESET_TRANSFORM\";\n\nconst SET_VIEW_SIZE = \"SET_VIEW_SIZE\";\n\nconst SET_SPACE_SIZE = \"SET_SPACE_SIZE\";\n\nconst UPDATE_SPACE_TREE_PLANE = \"UPDATE_SPACE_TREE_PLANE\";\n\nconst UPDATE_SPACE_LINK_COORDINATES = \"UPDATE_SPACE_LINK_COORDINATES\";\n\nconst SPACE_SET_VIEW = \"SPACE_SET_VIEW\";\n\nconst SPACE_SET_CULLED_VIEW = \"SPACE_SET_CULLED_VIEW\";\n\nvar index$b = Object.freeze({\n __proto__: null,\n SET_SPACE_FIELD: SET_SPACE_FIELD,\n SET_SPACE_LOADING: SET_SPACE_LOADING,\n SET_TRANSFORM: SET_TRANSFORM,\n SET_ANIMATED_TRANSFORM: SET_ANIMATED_TRANSFORM,\n SET_TRANSFORM_TIME: SET_TRANSFORM_TIME,\n SET_SPACE_LOCATION: SET_SPACE_LOCATION,\n VIEW_CAMERA_MOVE_FORWARD: VIEW_CAMERA_MOVE_FORWARD,\n VIEW_CAMERA_MOVE_BACKWARD: VIEW_CAMERA_MOVE_BACKWARD,\n VIEW_CAMERA_MOVE_LEFT: VIEW_CAMERA_MOVE_LEFT,\n VIEW_CAMERA_MOVE_RIGHT: VIEW_CAMERA_MOVE_RIGHT,\n VIEW_CAMERA_MOVE_UP: VIEW_CAMERA_MOVE_UP,\n VIEW_CAMERA_MOVE_DOWN: VIEW_CAMERA_MOVE_DOWN,\n VIEW_CAMERA_TURN_UP: VIEW_CAMERA_TURN_UP,\n VIEW_CAMERA_TURN_DOWN: VIEW_CAMERA_TURN_DOWN,\n VIEW_CAMERA_TURN_LEFT: VIEW_CAMERA_TURN_LEFT,\n VIEW_CAMERA_TURN_RIGHT: VIEW_CAMERA_TURN_RIGHT,\n ROTATE_UP: ROTATE_UP,\n ROTATE_DOWN: ROTATE_DOWN,\n ROTATE_LEFT: ROTATE_LEFT,\n ROTATE_X: ROTATE_X,\n ROTATE_X_WITH: ROTATE_X_WITH,\n ROTATE_RIGHT: ROTATE_RIGHT,\n ROTATE_Y: ROTATE_Y,\n ROTATE_Y_WITH: ROTATE_Y_WITH,\n TRANSLATE_UP: TRANSLATE_UP,\n TRANSLATE_DOWN: TRANSLATE_DOWN,\n TRANSLATE_LEFT: TRANSLATE_LEFT,\n TRANSLATE_RIGHT: TRANSLATE_RIGHT,\n TRANSLATE_IN: TRANSLATE_IN,\n TRANSLATE_OUT: TRANSLATE_OUT,\n TRANSLATE_X_WITH: TRANSLATE_X_WITH,\n TRANSLATE_Y_WITH: TRANSLATE_Y_WITH,\n SCALE_UP: SCALE_UP,\n SCALE_DOWN: SCALE_DOWN,\n SCALE_UP_WITH: SCALE_UP_WITH,\n SCALE_DOWN_WITH: SCALE_DOWN_WITH,\n SET_INITIAL_TREE: SET_INITIAL_TREE,\n SET_TREE: SET_TREE,\n SET_ACTIVE_UNIVERSE: SET_ACTIVE_UNIVERSE,\n SPACE_RESET_TRANSFORM: SPACE_RESET_TRANSFORM,\n SET_VIEW_SIZE: SET_VIEW_SIZE,\n SET_SPACE_SIZE: SET_SPACE_SIZE,\n UPDATE_SPACE_TREE_PLANE: UPDATE_SPACE_TREE_PLANE,\n UPDATE_SPACE_LINK_COORDINATES: UPDATE_SPACE_LINK_COORDINATES,\n SPACE_SET_VIEW: SPACE_SET_VIEW,\n SPACE_SET_CULLED_VIEW: SPACE_SET_CULLED_VIEW\n});\n\nconst setSpaceField$1 = payload => ({\n type: SET_SPACE_FIELD,\n payload: payload\n});\n\nconst setSpaceLoading$1 = payload => ({\n type: SET_SPACE_LOADING,\n payload: payload\n});\n\nconst setTransform$1 = payload => ({\n type: SET_TRANSFORM,\n payload: payload\n});\n\nconst setAnimatedTransform$1 = payload => ({\n type: SET_ANIMATED_TRANSFORM,\n payload: payload\n});\n\nconst setTransformTime$1 = payload => ({\n type: SET_TRANSFORM_TIME,\n payload: payload\n});\n\nconst setSpaceLocation$1 = payload => ({\n type: SET_SPACE_LOCATION,\n payload: payload\n});\n\nconst viewCameraMoveForward$1 = () => ({\n type: VIEW_CAMERA_MOVE_FORWARD\n});\n\nconst viewCameraMoveBackward$1 = () => ({\n type: VIEW_CAMERA_MOVE_BACKWARD\n});\n\nconst viewCameraMoveLeft$1 = () => ({\n type: VIEW_CAMERA_MOVE_LEFT\n});\n\nconst viewCameraMoveRight$1 = () => ({\n type: VIEW_CAMERA_MOVE_RIGHT\n});\n\nconst viewCameraMoveUp$1 = () => ({\n type: VIEW_CAMERA_MOVE_UP\n});\n\nconst viewCameraMoveDown$1 = () => ({\n type: VIEW_CAMERA_MOVE_DOWN\n});\n\nconst viewCameraTurnUp$1 = () => ({\n type: VIEW_CAMERA_TURN_UP\n});\n\nconst viewCameraTurnDown$1 = () => ({\n type: VIEW_CAMERA_TURN_DOWN\n});\n\nconst viewCameraTurnLeft$1 = () => ({\n type: VIEW_CAMERA_TURN_LEFT\n});\n\nconst viewCameraTurnRight$1 = () => ({\n type: VIEW_CAMERA_TURN_RIGHT\n});\n\nconst rotateUp$1 = () => ({\n type: ROTATE_UP\n});\n\nconst rotateDown$1 = () => ({\n type: ROTATE_DOWN\n});\n\nconst rotateX$1 = payload => ({\n type: ROTATE_X,\n payload: payload\n});\n\nconst rotateXWith$1 = payload => ({\n type: ROTATE_X_WITH,\n payload: payload\n});\n\nconst rotateLeft$1 = () => ({\n type: ROTATE_LEFT\n});\n\nconst rotateRight$1 = () => ({\n type: ROTATE_RIGHT\n});\n\nconst rotateY$1 = payload => ({\n type: ROTATE_Y,\n payload: payload\n});\n\nconst rotateYWith$1 = payload => ({\n type: ROTATE_Y_WITH,\n payload: payload\n});\n\nconst translateUp$1 = () => ({\n type: TRANSLATE_UP\n});\n\nconst translateDown$1 = () => ({\n type: TRANSLATE_DOWN\n});\n\nconst translateLeft$1 = () => ({\n type: TRANSLATE_LEFT\n});\n\nconst translateRight$1 = () => ({\n type: TRANSLATE_RIGHT\n});\n\nconst translateIn$1 = () => ({\n type: TRANSLATE_IN\n});\n\nconst translateOut$1 = () => ({\n type: TRANSLATE_OUT\n});\n\nconst translateXWith$1 = payload => ({\n type: TRANSLATE_X_WITH,\n payload: payload\n});\n\nconst translateYWith$1 = payload => ({\n type: TRANSLATE_Y_WITH,\n payload: payload\n});\n\nconst scaleUp$1 = () => ({\n type: SCALE_UP\n});\n\nconst scaleDown$1 = () => ({\n type: SCALE_DOWN\n});\n\nconst scaleUpWith$1 = value => ({\n type: SCALE_UP_WITH,\n payload: value\n});\n\nconst scaleDownWith$1 = value => ({\n type: SCALE_DOWN_WITH,\n payload: value\n});\n\nconst setInitialTree$1 = payload => ({\n type: SET_INITIAL_TREE,\n payload: payload\n});\n\nconst setTree$1 = payload => ({\n type: SET_TREE,\n payload: payload\n});\n\nconst setActiveUniverse$1 = universeID => ({\n type: SET_ACTIVE_UNIVERSE,\n payload: universeID\n});\n\nconst spaceResetTransform$1 = () => ({\n type: SPACE_RESET_TRANSFORM\n});\n\nconst setViewSize$1 = payload => ({\n type: SET_VIEW_SIZE,\n payload: payload\n});\n\nconst setSpaceSize$1 = payload => ({\n type: SET_SPACE_SIZE,\n payload: payload\n});\n\nconst updateSpaceTreePlane$1 = payload => ({\n type: UPDATE_SPACE_TREE_PLANE,\n payload: payload\n});\n\nconst updateSpaceLinkCoordinates$1 = payload => ({\n type: UPDATE_SPACE_LINK_COORDINATES,\n payload: payload\n});\n\nconst spaceSetView$1 = payload => ({\n type: SPACE_SET_VIEW,\n payload: payload\n});\n\nconst spaceSetCulledView$1 = payload => ({\n type: SPACE_SET_CULLED_VIEW,\n payload: payload\n});\n\nvar index$a = Object.freeze({\n __proto__: null,\n setSpaceField: setSpaceField$1,\n setSpaceLoading: setSpaceLoading$1,\n setTransform: setTransform$1,\n setAnimatedTransform: setAnimatedTransform$1,\n setTransformTime: setTransformTime$1,\n setSpaceLocation: setSpaceLocation$1,\n viewCameraMoveForward: viewCameraMoveForward$1,\n viewCameraMoveBackward: viewCameraMoveBackward$1,\n viewCameraMoveLeft: viewCameraMoveLeft$1,\n viewCameraMoveRight: viewCameraMoveRight$1,\n viewCameraMoveUp: viewCameraMoveUp$1,\n viewCameraMoveDown: viewCameraMoveDown$1,\n viewCameraTurnUp: viewCameraTurnUp$1,\n viewCameraTurnDown: viewCameraTurnDown$1,\n viewCameraTurnLeft: viewCameraTurnLeft$1,\n viewCameraTurnRight: viewCameraTurnRight$1,\n rotateUp: rotateUp$1,\n rotateDown: rotateDown$1,\n rotateX: rotateX$1,\n rotateXWith: rotateXWith$1,\n rotateLeft: rotateLeft$1,\n rotateRight: rotateRight$1,\n rotateY: rotateY$1,\n rotateYWith: rotateYWith$1,\n translateUp: translateUp$1,\n translateDown: translateDown$1,\n translateLeft: translateLeft$1,\n translateRight: translateRight$1,\n translateIn: translateIn$1,\n translateOut: translateOut$1,\n translateXWith: translateXWith$1,\n translateYWith: translateYWith$1,\n scaleUp: scaleUp$1,\n scaleDown: scaleDown$1,\n scaleUpWith: scaleUpWith$1,\n scaleDownWith: scaleDownWith$1,\n setInitialTree: setInitialTree$1,\n setTree: setTree$1,\n setActiveUniverse: setActiveUniverse$1,\n spaceResetTransform: spaceResetTransform$1,\n setViewSize: setViewSize$1,\n setSpaceSize: setSpaceSize$1,\n updateSpaceTreePlane: updateSpaceTreePlane$1,\n updateSpaceLinkCoordinates: updateSpaceLinkCoordinates$1,\n spaceSetView: spaceSetView$1,\n spaceSetCulledView: spaceSetCulledView$1\n});\n\nconst initialState$2 = {\n loading: true,\n transform: \"matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)\",\n animatedTransform: false,\n transformTime: 450,\n scale: 1,\n rotationX: 0,\n rotationY: 0,\n translationX: 0,\n translationY: 0,\n translationZ: 0,\n initialTree: [],\n tree: [],\n activeUniverseID: \"\",\n camera: {\n x: 0,\n y: 0,\n z: 0\n },\n viewSize: {\n width: typeof window === \"undefined\" ? 1440 : window.innerWidth,\n height: typeof window === \"undefined\" ? 821 : window.innerHeight\n },\n spaceSize: {\n width: typeof window === \"undefined\" ? 1440 : window.innerWidth,\n height: typeof window === \"undefined\" ? 821 : window.innerHeight,\n depth: 0,\n topCorner: {\n x: 0,\n y: 0,\n z: 0\n }\n },\n view: [],\n culledView: []\n};\n\nconst {quaternion: quaternion, matrix: matrix} = pluridEngine.interaction;\n\nconst {matrixArrayToCSSMatrix: matrixArrayToCSSMatrix$1, rotateMatrix: rotateMatrix$1, multiplyArrayOfMatrices: multiplyArrayOfMatrices$1, scaleMatrix: scaleMatrix$1, translateMatrix: translateMatrix$2} = matrix;\n\nconst {degToRad: degToRad$2} = quaternion;\n\nconst computeMatrix = spaceState => {\n const {translationX: translationX, translationY: translationY, translationZ: translationZ, rotationX: rotationX, rotationY: rotationY, scale: scale} = spaceState;\n const innerWidth = typeof window === \"undefined\" ? 720 : window.innerWidth / 2;\n const innerHeight = typeof window === \"undefined\" ? 400 : window.innerHeight / 2;\n const transformOriginX = translationX * -1 + innerWidth;\n const transformOriginY = translationY * -1 + innerHeight;\n const transformOriginZ = translationZ * -1;\n const rotationMatrix = rotateMatrix$1(degToRad$2(-rotationX), degToRad$2(-rotationY));\n const translationMatrix = translateMatrix$2(translationX, translationY, translationZ);\n const scalationMatrix = scaleMatrix$1(scale);\n const transformMatrix = multiplyArrayOfMatrices$1([ translationMatrix, multiplyArrayOfMatrices$1([ translateMatrix$2(transformOriginX, transformOriginY, transformOriginZ), rotationMatrix, translateMatrix$2(-transformOriginX, -transformOriginY, -transformOriginZ) ]), scalationMatrix ]);\n const transform = matrixArrayToCSSMatrix$1(transformMatrix);\n return transform;\n};\n\nconst {toRadians: toRadians} = pluridFunctions.mathematics.geometry;\n\nconst getNewState = state => pluridFunctions.objects.clone(state, \"any\");\n\nconst setSpaceField = (state, action) => {\n const {field: field, value: value} = action.payload;\n const newState = getNewState(state);\n newState[field] = value;\n return Object.assign({}, newState);\n};\n\nconst setSpaceLoading = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n loading: action.payload\n });\n};\n\nconst setTransform = (state, action) => {\n const {translationX: translationX, translationY: translationY, translationZ: translationZ, rotationX: rotationX, rotationY: rotationY, scale: scale} = action.payload;\n const resolvedTranslationX = translationX !== null && translationX !== void 0 ? translationX : state.translationX;\n const resolvedTranslationY = translationY !== null && translationY !== void 0 ? translationY : state.translationY;\n const resolvedTranslationZ = translationZ !== null && translationZ !== void 0 ? translationZ : state.translationZ;\n const resolvedRotationX = rotationX !== null && rotationX !== void 0 ? rotationX : state.rotationX;\n const resolvedRotationY = rotationY !== null && rotationY !== void 0 ? rotationY : state.rotationY;\n const resolvedScale = scale !== null && scale !== void 0 ? scale : state.scale;\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n translationX: resolvedTranslationX,\n translationY: resolvedTranslationY,\n translationZ: resolvedTranslationZ,\n rotationX: resolvedRotationX,\n rotationY: resolvedRotationY,\n scale: resolvedScale\n });\n};\n\nconst setAnimatedTransform = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n animatedTransform: action.payload\n });\n};\n\nconst setTransformTime = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n transformTime: action.payload\n });\n};\n\nconst setSpaceLocation = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), action.payload);\n};\n\nconst viewCameraMoveForward = state => {\n const newState = getNewState(state);\n newState.translationZ = state.translationZ + pluridData.TRANSLATION_STEP * 6 * Math.cos(toRadians(-state.rotationY));\n newState.translationX = state.translationX + pluridData.TRANSLATION_STEP * 6 * Math.sin(toRadians(-state.rotationY));\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst viewCameraMoveBackward = state => {\n const newState = getNewState(state);\n newState.translationZ = state.translationZ - pluridData.TRANSLATION_STEP * 6 * Math.cos(toRadians(-state.rotationY));\n newState.translationX = state.translationX - pluridData.TRANSLATION_STEP * 6 * Math.sin(toRadians(-state.rotationY));\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst viewCameraMoveLeft = state => {\n const newState = getNewState(state);\n newState.translationX = state.translationX + pluridData.TRANSLATION_STEP * 3 * Math.cos(toRadians(state.rotationY));\n newState.translationZ = state.translationZ + pluridData.TRANSLATION_STEP * 3 * Math.sin(toRadians(state.rotationY));\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst viewCameraMoveRight = state => {\n const newState = getNewState(state);\n newState.translationX = state.translationX - pluridData.TRANSLATION_STEP * 3 * Math.cos(toRadians(state.rotationY));\n newState.translationZ = state.translationZ - pluridData.TRANSLATION_STEP * 3 * Math.sin(toRadians(state.rotationY));\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst viewCameraMoveUp = state => {\n const newState = getNewState(state);\n newState.translationY = state.translationY + pluridData.TRANSLATION_STEP * 3;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst viewCameraMoveDown = state => {\n const newState = getNewState(state);\n newState.translationY = state.translationY - pluridData.TRANSLATION_STEP * 3;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst viewCameraTurnUp = state => {\n const newState = getNewState(state);\n newState.rotationX = (state.rotationX + pluridData.ROTATION_STEP) % 360;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst viewCameraTurnDown = state => {\n const newState = getNewState(state);\n newState.rotationX = (state.rotationX - pluridData.ROTATION_STEP) % 360;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst viewCameraTurnLeft = state => {\n const newState = getNewState(state);\n newState.rotationY = (state.rotationY - pluridData.ROTATION_STEP) % 360;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst viewCameraTurnRight = state => {\n const newState = getNewState(state);\n newState.rotationY = (state.rotationY + pluridData.ROTATION_STEP) % 360;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst rotateUp = state => {\n const newState = getNewState(state);\n newState.rotationX = (state.rotationX + pluridData.ROTATION_STEP) % 360;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst rotateDown = state => {\n const newState = getNewState(state);\n newState.rotationX = (state.rotationX - pluridData.ROTATION_STEP) % 360;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst rotateX = (state, action) => {\n const newState = getNewState(state);\n newState.rotationX = action.payload;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst rotateXWith = (state, action) => {\n const newState = getNewState(state);\n newState.rotationX = state.rotationX + action.payload;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst rotateLeft = state => {\n const newState = getNewState(state);\n newState.rotationY = (state.rotationY + pluridData.ROTATION_STEP) % 360;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst rotateRight = state => {\n const newState = getNewState(state);\n newState.rotationY = (state.rotationY - pluridData.ROTATION_STEP) % 360;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst rotateY = (state, action) => {\n const newState = getNewState(state);\n newState.rotationY = action.payload;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst rotateYWith = (state, action) => {\n const newState = getNewState(state);\n newState.rotationY = state.rotationY + action.payload;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst translateUp = state => {\n const newState = getNewState(state);\n newState.translationY = state.translationY - pluridData.TRANSLATION_STEP;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst translateDown = state => {\n const newState = getNewState(state);\n newState.translationY = state.translationY + pluridData.TRANSLATION_STEP;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst translateLeft = state => {\n const newState = getNewState(state);\n newState.translationX = state.translationX - pluridData.TRANSLATION_STEP * Math.cos(toRadians(state.rotationY));\n newState.translationZ = state.translationZ - pluridData.TRANSLATION_STEP * Math.sin(toRadians(state.rotationY));\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst translateRight = state => {\n const newState = getNewState(state);\n newState.translationX = state.translationX + pluridData.TRANSLATION_STEP * Math.cos(toRadians(state.rotationY));\n newState.translationZ = state.translationZ + pluridData.TRANSLATION_STEP * Math.sin(toRadians(state.rotationY));\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst translateIn = state => {\n const newState = getNewState(state);\n newState.translationZ = state.translationZ - pluridData.TRANSLATION_STEP * 3 * Math.cos(toRadians(-state.rotationY));\n newState.translationX = state.translationX - pluridData.TRANSLATION_STEP * 3 * Math.sin(toRadians(-state.rotationY));\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst translateOut = state => {\n const newState = getNewState(state);\n newState.translationZ = state.translationZ + pluridData.TRANSLATION_STEP * 3 * Math.cos(toRadians(-state.rotationY));\n newState.translationX = state.translationX + pluridData.TRANSLATION_STEP * 3 * Math.sin(toRadians(-state.rotationY));\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst translateXWith = (state, action) => {\n const newState = getNewState(state);\n newState.translationX = state.translationX + action.payload * Math.cos(toRadians(state.rotationY));\n newState.translationZ = state.translationZ + action.payload * Math.sin(toRadians(state.rotationY));\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst translateYWith = (state, action) => {\n const newState = getNewState(state);\n newState.translationY = state.translationY + action.payload;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst scaleUp = state => {\n const computedScale = state.scale + pluridData.SCALE_STEP;\n const scale = computedScale < pluridData.SCALE_UPPER_LIMIT ? computedScale : pluridData.SCALE_UPPER_LIMIT;\n const newState = getNewState(state);\n newState.scale = scale;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst scaleDown = state => {\n const computedScale = state.scale - pluridData.SCALE_STEP;\n const scale = computedScale > pluridData.SCALE_LOWER_LIMIT ? computedScale : pluridData.SCALE_LOWER_LIMIT;\n const newState = getNewState(state);\n newState.scale = scale;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst scaleUpWith = (state, action) => {\n const computedScale = state.scale + Math.abs(action.payload);\n const scale = computedScale < pluridData.SCALE_UPPER_LIMIT ? computedScale : pluridData.SCALE_UPPER_LIMIT;\n const newState = getNewState(state);\n newState.scale = scale;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst scaleDownWith = (state, action) => {\n const computedScale = state.scale - Math.abs(action.payload);\n const scale = computedScale > pluridData.SCALE_LOWER_LIMIT ? computedScale : pluridData.SCALE_LOWER_LIMIT;\n const newState = getNewState(state);\n newState.scale = scale;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst setInitialTree = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n initialTree: [ ...action.payload ]\n });\n};\n\nconst setTree = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n tree: [ ...action.payload ]\n });\n};\n\nconst setActiveUniverse = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n activeUniverseID: action.payload\n });\n};\n\nconst spaceResetTransform = state => {\n const newState = getNewState(state);\n newState.scale = 1;\n newState.rotationX = 0;\n newState.rotationY = 0;\n newState.translationX = 0;\n newState.translationY = 0;\n newState.translationZ = 0;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst setViewSize = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n viewSize: Object.assign({}, action.payload)\n });\n};\n\nconst setSpaceSize = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n spaceSize: Object.assign({}, action.payload)\n });\n};\n\nconst updateSpaceTreePlane = (state, action) => {\n const newState = getNewState(state);\n const updatedTree = pluridEngine.general.tree.updateTreePlane(newState.tree, action.payload);\n return Object.assign(Object.assign({}, newState), {\n tree: updatedTree\n });\n};\n\nconst updateSpaceLinkCoordinates = (state, action) => {\n const {planeID: planeID, linkCoordinates: linkCoordinates} = action.payload;\n const newState = getNewState(state);\n const updatedTree = pluridEngine.general.tree.updateTreeByPlaneIDWithLinkCoordinates(newState.tree, planeID, linkCoordinates);\n return Object.assign(Object.assign({}, newState), {\n tree: updatedTree\n });\n};\n\nconst spaceSetView = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n view: action.payload\n });\n};\n\nconst spaceSetCulledView = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n culledView: action.payload\n });\n};\n\nvar index$9 = Object.freeze({\n __proto__: null,\n setSpaceField: setSpaceField,\n setSpaceLoading: setSpaceLoading,\n setTransform: setTransform,\n setAnimatedTransform: setAnimatedTransform,\n setTransformTime: setTransformTime,\n setSpaceLocation: setSpaceLocation,\n viewCameraMoveForward: viewCameraMoveForward,\n viewCameraMoveBackward: viewCameraMoveBackward,\n viewCameraMoveLeft: viewCameraMoveLeft,\n viewCameraMoveRight: viewCameraMoveRight,\n viewCameraMoveUp: viewCameraMoveUp,\n viewCameraMoveDown: viewCameraMoveDown,\n viewCameraTurnUp: viewCameraTurnUp,\n viewCameraTurnDown: viewCameraTurnDown,\n viewCameraTurnLeft: viewCameraTurnLeft,\n viewCameraTurnRight: viewCameraTurnRight,\n rotateUp: rotateUp,\n rotateDown: rotateDown,\n rotateX: rotateX,\n rotateXWith: rotateXWith,\n rotateLeft: rotateLeft,\n rotateRight: rotateRight,\n rotateY: rotateY,\n rotateYWith: rotateYWith,\n translateUp: translateUp,\n translateDown: translateDown,\n translateLeft: translateLeft,\n translateRight: translateRight,\n translateIn: translateIn,\n translateOut: translateOut,\n translateXWith: translateXWith,\n translateYWith: translateYWith,\n scaleUp: scaleUp,\n scaleDown: scaleDown,\n scaleUpWith: scaleUpWith,\n scaleDownWith: scaleDownWith,\n setInitialTree: setInitialTree,\n setTree: setTree,\n setActiveUniverse: setActiveUniverse,\n spaceResetTransform: spaceResetTransform,\n setViewSize: setViewSize,\n setSpaceSize: setSpaceSize,\n updateSpaceTreePlane: updateSpaceTreePlane,\n updateSpaceLinkCoordinates: updateSpaceLinkCoordinates,\n spaceSetView: spaceSetView,\n spaceSetCulledView: spaceSetCulledView\n});\n\nconst reducer$2 = (state = initialState$2, action) => {\n switch (action.type) {\n case SET_STATE:\n return Object.assign(Object.assign({}, state), action.payload.space);\n\n case SET_SPACE_FIELD:\n return setSpaceField(state, action);\n\n case SET_SPACE_LOADING:\n return setSpaceLoading(state, action);\n\n case SET_TRANSFORM:\n return setTransform(state, action);\n\n case SET_ANIMATED_TRANSFORM:\n return setAnimatedTransform(state, action);\n\n case SET_TRANSFORM_TIME:\n return setTransformTime(state, action);\n\n case SET_SPACE_LOCATION:\n return setSpaceLocation(state, action);\n\n case VIEW_CAMERA_MOVE_FORWARD:\n return viewCameraMoveForward(state);\n\n case VIEW_CAMERA_MOVE_BACKWARD:\n return viewCameraMoveBackward(state);\n\n case VIEW_CAMERA_MOVE_LEFT:\n return viewCameraMoveLeft(state);\n\n case VIEW_CAMERA_MOVE_RIGHT:\n return viewCameraMoveRight(state);\n\n case VIEW_CAMERA_MOVE_UP:\n return viewCameraMoveUp(state);\n\n case VIEW_CAMERA_MOVE_DOWN:\n return viewCameraMoveDown(state);\n\n case VIEW_CAMERA_TURN_UP:\n return viewCameraTurnUp(state);\n\n case VIEW_CAMERA_TURN_DOWN:\n return viewCameraTurnDown(state);\n\n case VIEW_CAMERA_TURN_LEFT:\n return viewCameraTurnLeft(state);\n\n case VIEW_CAMERA_TURN_RIGHT:\n return viewCameraTurnRight(state);\n\n case ROTATE_UP:\n return rotateUp(state);\n\n case ROTATE_DOWN:\n return rotateDown(state);\n\n case ROTATE_X:\n return rotateX(state, action);\n\n case ROTATE_X_WITH:\n return rotateXWith(state, action);\n\n case ROTATE_LEFT:\n return rotateLeft(state);\n\n case ROTATE_RIGHT:\n return rotateRight(state);\n\n case ROTATE_Y:\n return rotateY(state, action);\n\n case ROTATE_Y_WITH:\n return rotateYWith(state, action);\n\n case TRANSLATE_UP:\n return translateUp(state);\n\n case TRANSLATE_DOWN:\n return translateDown(state);\n\n case TRANSLATE_LEFT:\n return translateLeft(state);\n\n case TRANSLATE_RIGHT:\n return translateRight(state);\n\n case TRANSLATE_IN:\n return translateIn(state);\n\n case TRANSLATE_OUT:\n return translateOut(state);\n\n case TRANSLATE_X_WITH:\n return translateXWith(state, action);\n\n case TRANSLATE_Y_WITH:\n return translateYWith(state, action);\n\n case SCALE_UP:\n return scaleUp(state);\n\n case SCALE_DOWN:\n return scaleDown(state);\n\n case SCALE_UP_WITH:\n return scaleUpWith(state, action);\n\n case SCALE_DOWN_WITH:\n return scaleDownWith(state, action);\n\n case SET_INITIAL_TREE:\n return setInitialTree(state, action);\n\n case SET_TREE:\n return setTree(state, action);\n\n case SET_ACTIVE_UNIVERSE:\n return setActiveUniverse(state, action);\n\n case SPACE_RESET_TRANSFORM:\n return spaceResetTransform(state);\n\n case SET_VIEW_SIZE:\n return setViewSize(state, action);\n\n case SET_SPACE_SIZE:\n return setSpaceSize(state, action);\n\n case UPDATE_SPACE_TREE_PLANE:\n return updateSpaceTreePlane(state, action);\n\n case UPDATE_SPACE_LINK_COORDINATES:\n return updateSpaceLinkCoordinates(state, action);\n\n case SPACE_SET_VIEW:\n return spaceSetView(state, action);\n\n case SPACE_SET_CULLED_VIEW:\n return spaceSetCulledView(state, action);\n\n default:\n return Object.assign({}, state);\n }\n};\n\nconst getLoading = state => state.space.loading;\n\nconst getTransformMatrix = state => state.space.transform;\n\nconst getAnimatedTransform = state => state.space.animatedTransform;\n\nconst getTransformTime = state => state.space.transformTime;\n\nconst getRotationX = state => state.space.rotationX;\n\nconst getRotationY = state => state.space.rotationY;\n\nconst getTranslationX = state => state.space.translationX;\n\nconst getTranslationY = state => state.space.translationY;\n\nconst getTranslationZ = state => state.space.translationZ;\n\nconst getScale = state => state.space.scale;\n\nconst getInitialTree = state => state.space.initialTree;\n\nconst getTree = state => state.space.tree;\n\nconst getTransform = state => ({\n rotationX: state.space.rotationX,\n rotationY: state.space.rotationY,\n translationX: state.space.translationX,\n translationY: state.space.translationY,\n translationZ: state.space.translationZ,\n scale: state.space.scale\n});\n\nconst getActiveUniverseID = state => state.space.activeUniverseID;\n\nconst getView = state => state.space.view;\n\nconst getViewSize = state => state.space.viewSize;\n\nconst getCulledView = state => state.space.culledView;\n\nvar index$8 = {\n getLoading: getLoading,\n getTransformMatrix: getTransformMatrix,\n getAnimatedTransform: getAnimatedTransform,\n getTransformTime: getTransformTime,\n getRotationX: getRotationX,\n getRotationY: getRotationY,\n getTranslationX: getTranslationX,\n getTranslationY: getTranslationY,\n getTranslationZ: getTranslationZ,\n getScale: getScale,\n getTransform: getTransform,\n getInitialTree: getInitialTree,\n getTree: getTree,\n getActiveUniverseID: getActiveUniverseID,\n getView: getView,\n getViewSize: getViewSize,\n getCulledView: getCulledView\n};\n\nvar space = Object.freeze({\n __proto__: null,\n actions: index$a,\n initialState: initialState$2,\n reducer: reducer$2,\n resolvers: index$9,\n selectors: index$8,\n Types: index$b\n});\n\nconst THEMES_SET_GENERAL_THEME = \"THEMES_SET_GENERAL_THEME\";\n\nconst THEMES_SET_INTERACTION_THEME = \"THEMES_SET_INTERACTION_THEME\";\n\nvar index$7 = Object.freeze({\n __proto__: null,\n THEMES_SET_GENERAL_THEME: THEMES_SET_GENERAL_THEME,\n THEMES_SET_INTERACTION_THEME: THEMES_SET_INTERACTION_THEME\n});\n\nconst setGeneralTheme$1 = theme => ({\n type: THEMES_SET_GENERAL_THEME,\n payload: theme\n});\n\nconst setInteractionTheme$1 = theme => ({\n type: THEMES_SET_INTERACTION_THEME,\n payload: theme\n});\n\nvar index$6 = Object.freeze({\n __proto__: null,\n setGeneralTheme: setGeneralTheme$1,\n setInteractionTheme: setInteractionTheme$1\n});\n\nconst initialState$1 = {\n general: themes$1.plurid,\n interaction: themes$1.plurid\n};\n\nconst setGeneralTheme = (state, action) => Object.assign(Object.assign({}, state), {\n general: Object.assign({}, action.payload)\n});\n\nconst setInteractionTheme = (state, action) => Object.assign(Object.assign({}, state), {\n interaction: Object.assign({}, action.payload)\n});\n\nvar index$5 = Object.freeze({\n __proto__: null,\n setGeneralTheme: setGeneralTheme,\n setInteractionTheme: setInteractionTheme\n});\n\nconst reducer$1 = (state = initialState$1, action) => {\n switch (action.type) {\n case SET_STATE:\n return Object.assign(Object.assign({}, state), action.payload.themes);\n\n case THEMES_SET_GENERAL_THEME:\n return setGeneralTheme(state, action);\n\n case THEMES_SET_INTERACTION_THEME:\n return setInteractionTheme(state, action);\n\n default:\n return Object.assign({}, state);\n }\n};\n\nconst getGeneralTheme = state => state.themes.general;\n\nconst getInteractionTheme = state => state.themes.interaction;\n\nvar index$4 = {\n getGeneralTheme: getGeneralTheme,\n getInteractionTheme: getInteractionTheme\n};\n\nvar themes = Object.freeze({\n __proto__: null,\n actions: index$6,\n initialState: initialState$1,\n reducer: reducer$1,\n resolvers: index$5,\n selectors: index$4,\n Types: index$7\n});\n\nconst SET_UI_TOOLBAR_SCROLL_POSITION = \"SET_UI_TOOLBAR_SCROLL_POSITION\";\n\nvar index$3 = Object.freeze({\n __proto__: null,\n SET_UI_TOOLBAR_SCROLL_POSITION: SET_UI_TOOLBAR_SCROLL_POSITION\n});\n\nconst setUIToolbarScrollPosition$1 = value => ({\n type: SET_UI_TOOLBAR_SCROLL_POSITION,\n payload: value\n});\n\nvar index$2 = Object.freeze({\n __proto__: null,\n setUIToolbarScrollPosition: setUIToolbarScrollPosition$1\n});\n\nconst initialState = {\n toolbarScrollPosition: 0\n};\n\nconst setUIToolbarScrollPosition = (state, action) => Object.assign(Object.assign({}, state), {\n toolbarScrollPosition: action.payload\n});\n\nvar index$1 = Object.freeze({\n __proto__: null,\n setUIToolbarScrollPosition: setUIToolbarScrollPosition\n});\n\nconst reducer = (state = initialState, action) => {\n switch (action.type) {\n case SET_STATE:\n return Object.assign(Object.assign({}, state), action.payload.ui);\n\n case SET_UI_TOOLBAR_SCROLL_POSITION:\n return setUIToolbarScrollPosition(state, action);\n\n default:\n return Object.assign({}, state);\n }\n};\n\nconst getToolbarScrollPosition = state => state.ui.toolbarScrollPosition;\n\nvar index = {\n getToolbarScrollPosition: getToolbarScrollPosition\n};\n\nvar ui = Object.freeze({\n __proto__: null,\n actions: index$2,\n initialState: initialState,\n reducer: reducer,\n resolvers: index$1,\n selectors: index,\n Types: index$3\n});\n\nvar modules = {\n configuration: configuration,\n general: general,\n shortcuts: shortcuts,\n space: space,\n themes: themes,\n ui: ui\n};\n\nconst rootReducer = redux.combineReducers({\n configuration: modules.configuration.reducer,\n general: modules.general.reducer,\n shortcuts: modules.shortcuts.reducer,\n space: modules.space.reducer,\n themes: modules.themes.reducer,\n ui: modules.ui.reducer\n});\n\nconst store$1 = preloadedState => redux.createStore(rootReducer, preloadedState, redux.applyMiddleware(thunk__default[\"default\"]));\n\nconst store = store$1;\n\nconst StateContext = React__default[\"default\"].createContext({});\n\nfunction __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P((function(resolve) {\n resolve(value);\n }));\n }\n return new (P || (P = Promise))((function(resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n }));\n}\n\nconst Context = React__default[\"default\"].createContext(null);\n\nvar actions = {\n configuration: modules.configuration.actions,\n general: modules.general.actions,\n shortcuts: modules.shortcuts.actions,\n space: modules.space.actions,\n themes: modules.themes.actions,\n ui: modules.ui.actions\n};\n\nconst {direction: directionLogic} = pluridEngine.interaction;\n\nconst handleGlobalShortcuts = (dispatch, event, firstPerson, locks) => {\n if (event.defaultPrevented) {\n return;\n }\n const inputOnPath = pluridFunctions.dom.verifyPathInputElement(event.path);\n if (inputOnPath) {\n return;\n }\n const noModifiers = !event.shiftKey && !event.altKey && !event.ctrlKey && !event.metaKey;\n if (event.code === \"KeyF\" && noModifiers) {\n return dispatch(actions.configuration.toggleConfigurationSpaceFirstPerson());\n }\n if (firstPerson) {\n if (event.code === \"KeyW\" && noModifiers && locks.translationZ) {\n return dispatch(actions.space.viewCameraMoveForward());\n }\n if (event.code === \"KeyS\" && noModifiers && locks.translationZ) {\n return dispatch(actions.space.viewCameraMoveBackward());\n }\n if (event.code === \"KeyA\" && noModifiers && locks.translationX) {\n return dispatch(actions.space.viewCameraMoveLeft());\n }\n if (event.code === \"KeyA\" && event.shiftKey && locks.rotationY) {\n return dispatch(actions.space.viewCameraTurnLeft());\n }\n if (event.code === \"KeyD\" && noModifiers && locks.translationX) {\n return dispatch(actions.space.viewCameraMoveRight());\n }\n if (event.code === \"KeyD\" && event.shiftKey && locks.rotationY) {\n return dispatch(actions.space.viewCameraTurnRight());\n }\n if (event.code === \"KeyQ\" && noModifiers && locks.rotationX) {\n return dispatch(actions.space.viewCameraTurnUp());\n }\n if (event.code === \"KeyZ\" && noModifiers && locks.rotationX) {\n return dispatch(actions.space.viewCameraTurnDown());\n }\n if (event.code === \"KeyE\" && noModifiers && locks.translationY) {\n return dispatch(actions.space.viewCameraMoveUp());\n }\n if (event.code === \"KeyC\" && noModifiers && locks.translationY) {\n return dispatch(actions.space.viewCameraMoveDown());\n }\n }\n if (event.code === \"KeyR\" && noModifiers) {\n return dispatch(actions.configuration.setConfigurationSpaceTransformMode(pluridData.TRANSFORM_MODES.ROTATION));\n }\n if (event.code === \"KeyT\" && noModifiers) {\n return dispatch(actions.configuration.setConfigurationSpaceTransformMode(pluridData.TRANSFORM_MODES.TRANSLATION));\n }\n if (event.code === \"KeyS\" && noModifiers && !firstPerson) {\n return dispatch(actions.configuration.setConfigurationSpaceTransformMode(pluridData.TRANSFORM_MODES.SCALE));\n }\n if (event.key === \"ArrowRight\") {\n if (event.shiftKey && locks.rotationY) {\n return dispatch(actions.space.rotateLeft());\n }\n if (event.altKey && locks.translationX) {\n return dispatch(actions.space.translateRight());\n }\n }\n if (event.key === \"ArrowLeft\") {\n if (event.shiftKey && locks.rotationY) {\n return dispatch(actions.space.rotateRight());\n }\n if (event.altKey && locks.translationX) {\n return dispatch(actions.space.translateLeft());\n }\n }\n if (event.key === \"ArrowUp\") {\n if (event.shiftKey && event.altKey && locks.translationZ) {\n return dispatch(actions.space.translateIn());\n }\n if (event.shiftKey && !event.altKey && locks.rotationX) {\n return dispatch(actions.space.rotateUp());\n }\n if (event.altKey && !event.shiftKey && locks.translationY) {\n return dispatch(actions.space.translateUp());\n }\n if (event.metaKey || event.ctrlKey && locks.scale) {\n return dispatch(actions.space.scaleUp());\n }\n }\n if (event.key === \"ArrowDown\") {\n if (event.shiftKey && event.altKey && locks.translationZ) {\n return dispatch(actions.space.translateOut());\n }\n if (event.shiftKey && !event.altKey && locks.rotationX) {\n return dispatch(actions.space.rotateDown());\n }\n if (event.altKey && !event.shiftKey && locks.translationY) {\n return dispatch(actions.space.translateDown());\n }\n if (event.metaKey || event.ctrlKey && locks.scale) {\n return dispatch(actions.space.scaleDown());\n }\n }\n return;\n};\n\nconst handleGlobalWheel = (dispatch, event, modes, locks) => {\n if (event.shiftKey || event.metaKey || event.altKey || event.ctrlKey || modes.rotation || modes.translation || modes.scale) {\n event.preventDefault();\n }\n const deltas = {\n deltaX: event.deltaX,\n deltaY: event.deltaY\n };\n const direction = directionLogic.getWheelDirection(deltas);\n if (modes.rotation) {\n if (direction === \"left\" && locks.rotationY) {\n dispatch(actions.space.rotateLeft());\n }\n if (direction === \"right\" && locks.rotationY) {\n dispatch(actions.space.rotateRight());\n }\n if (direction === \"up\" && locks.rotationX) {\n dispatch(actions.space.rotateUp());\n }\n if (direction === \"down\" && locks.rotationX) {\n dispatch(actions.space.rotateDown());\n }\n }\n if (event.shiftKey && !event.altKey) {\n if (direction === \"up\" && locks.rotationX) {\n dispatch(actions.space.rotateUp());\n }\n if (direction === \"down\" && locks.rotationX) {\n dispatch(actions.space.rotateDown());\n }\n if (direction === \"left\" && locks.rotationY) {\n dispatch(actions.space.rotateLeft());\n }\n if (direction === \"right\" && locks.rotationY) {\n dispatch(actions.space.rotateRight());\n }\n }\n if (modes.translation) {\n if (direction === \"up\" && locks.translationY) {\n dispatch(actions.space.translateDown());\n }\n if (direction === \"down\" && locks.translationY) {\n dispatch(actions.space.translateUp());\n }\n if (direction === \"left\" && locks.translationX) {\n dispatch(actions.space.translateRight());\n }\n if (direction === \"right\" && locks.translationX) {\n dispatch(actions.space.translateLeft());\n }\n }\n if (event.altKey && event.shiftKey) {\n if (direction === \"up\" && locks.translationZ) {\n dispatch(actions.space.translateIn());\n }\n if (direction === \"down\" && locks.translationZ) {\n dispatch(actions.space.translateOut());\n }\n }\n if (event.altKey && !event.shiftKey) {\n if (direction === \"up\" && locks.translationY) {\n dispatch(actions.space.translateDown());\n }\n if (direction === \"down\" && locks.translationY) {\n dispatch(actions.space.translateUp());\n }\n if (direction === \"left\" && locks.translationX) {\n dispatch(actions.space.translateRight());\n }\n if (direction === \"right\" && locks.translationX) {\n dispatch(actions.space.translateLeft());\n }\n }\n if (modes.scale) {\n if (direction === \"down\" && locks.scale) {\n dispatch(actions.space.scaleUp());\n }\n if (direction === \"up\" && locks.scale) {\n dispatch(actions.space.scaleDown());\n }\n }\n if (event.metaKey || event.ctrlKey) {\n if (direction === \"down\" && locks.scale) {\n dispatch(actions.space.scaleUp());\n }\n if (direction === \"up\" && locks.scale) {\n dispatch(actions.space.scaleDown());\n }\n }\n};\n\nconst loadHammer = () => __awaiter(void 0, void 0, void 0, (function*() {\n const hammer = yield Promise.resolve().then((function() {\n return _interopNamespace(require(\"hammerjs\"));\n }));\n return hammer;\n}));\n\nvar selectors = {\n configuration: modules.configuration.selectors,\n general: modules.general.selectors,\n shortcuts: modules.shortcuts.selectors,\n space: modules.space.selectors,\n themes: modules.themes.selectors,\n ui: modules.ui.selectors\n};\n\nfunction styleInject(css, ref) {\n if (ref === void 0) ref = {};\n var insertAt = ref.insertAt;\n if (!css || typeof document === \"undefined\") {\n return;\n }\n var head = document.head || document.getElementsByTagName(\"head\")[0];\n var style = document.createElement(\"style\");\n style.type = \"text/css\";\n if (insertAt === \"top\") {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css_248z = \"@import url('https://fonts.googleapis.com/css?family=Ubuntu&display=swap');\\n\";\n\nstyleInject(css_248z);\n\nconst GlobalStyle = styled.createGlobalStyle`\n *,\n *:after,\n *:before {\n box-sizing: border-box;\n font-kerning: auto;\n text-rendering: optimizeLegibility;\n }\n\n html, body {\n margin: 0;\n height: 100%;\n width: 100%;\n }\n\n html {\n overflow: hidden;\n background: black;\n color: white;\n font-family: Ubuntu, -apple-system, BlinkMacSystemFont, Roboto,\n 'Open Sans', 'Helvetica Neue', 'Lucida Sans', sans-serif;\n\n /*\n * HACK\n * Prevents Chrome from going backward/forward in page history on wheel event.\n *\n * TODO\n * Apply it dinamically.\n */\n overscroll-behavior-x: contain;\n }\n`;\n\nconst StyledView = styled__default[\"default\"].div`\n height: 100%;\n min-height: ${props => {\n if (props.fullHeight) {\n return \"100vh\";\n }\n return \"100%\";\n}};\n min-height: ${props => {\n if (props.fullHeight) {\n return \"-webkit-fill-available\";\n }\n return \"100%\";\n}};\n\n width: 100%;\n position: relative;\n scroll-snap-align: start;\n outline: none;\n overflow: hidden;\n\n cursor: ${props => {\n if (props.transformMode === pluridData.TRANSFORM_MODES.TRANSLATION || props.transformMode === pluridData.TRANSFORM_MODES.ROTATION) {\n return \"all-scroll\";\n }\n if (props.transformMode === pluridData.TRANSFORM_MODES.SCALE) {\n return \"ns-resize\";\n }\n return \"initial\";\n}};\n user-select: ${props => {\n if (props.transformMode !== \"ALL\") {\n return \"none\";\n }\n return \"initial !important\";\n}};\n touch-action: ${props => {\n if (props.transformMode !== \"ALL\") {\n return \"none !important\";\n }\n return \"initial !important\";\n}};\n -webkit-user-drag: ${props => {\n if (props.transformMode !== \"ALL\") {\n return \"none\";\n }\n return \"initial !important\";\n}};\n -webkit-tap-highlight-color: ${props => {\n if (props.transformMode !== \"ALL\") {\n return \"rgba(0, 0, 0, 0)\";\n }\n return \"initial !important\";\n}};\n`;\n\nstyled__default[\"default\"].div`\n outline: none;\n background: ${props => {\n if (props.opaque) {\n const foregroundGradient = props.theme.type === \"dark\" ? props.theme.backgroundColorTertiary : props.theme.backgroundColorPrimary;\n const backgroundGradient = props.theme.type === \"dark\" ? props.theme.backgroundColorPrimary : props.theme.backgroundColorTertiary;\n return `radial-gradient(\\n ellipse at center,\\n ${foregroundGradient} 0%,\\n ${backgroundGradient} 100%)\\n `;\n }\n return \"transparent\";\n}};\n`;\n\nclass ErrorBoundary extends React__default[\"default\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n hasError: false\n };\n }\n static getDerivedStateFromError(error) {\n return {\n hasError: true\n };\n }\n componentDidCatch(error, errorInfo) {}\n render() {\n if (this.state.hasError) {\n if (this.props.renderError) {\n return this.props.renderError;\n }\n return React__default[\"default\"].createElement(\"h1\", null, \"Something went wrong.\");\n }\n return this.props.children;\n }\n}\n\nconst StyledPluridPlane = styled__default[\"default\"].div`\n background-color: ${({transparentUI: transparentUI, mouseOver: mouseOver, theme: theme, planeOpacity: planeOpacity}) => {\n if (transparentUI && !mouseOver) {\n return theme.backgroundColorPrimaryAlpha;\n }\n if (planeOpacity !== 1) {\n const decomposedColor = themes$1.decomposeColor(theme.backgroundColorPrimary);\n if (decomposedColor) {\n const color = `hsla(${decomposedColor.hue}, ${decomposedColor.saturation}%, ${decomposedColor.lightness}%, ${planeOpacity})`;\n return color;\n }\n return \"transparent\";\n }\n return theme.backgroundColorPrimary;\n}};\n box-shadow: ${({planeOpacity: planeOpacity, theme: theme}) => {\n if (planeOpacity === 0) {\n return \"none\";\n }\n return theme.boxShadowUmbra;\n}};\n color: ${({theme: theme}) => theme.colorPrimary};\n opacity: ${({show: show}) => {\n if (!show) {\n return \"0\";\n }\n return \"1\";\n}};\n user-select: ${({show: show}) => {\n if (!show) {\n return \"none\";\n }\n return \"auto\";\n}};\n\n position: absolute;\n height: auto;\n width: 100%;\n font-size: 0.9rem;\n font-family: ${({theme: theme}) => theme.fontFamilySansSerif};\n transition: background-color 300ms linear;\n\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: ${({planeControls: planeControls}) => {\n if (planeControls) {\n return \"56px auto\";\n }\n return \"auto\";\n}};\n\n transform-origin: 0 0 0;\n`;\n\nconst StyledPluridPlaneBridge = styled__default[\"default\"].div`\n background-color: ${({planeOpacity: planeOpacity, planeControls: planeControls, theme: theme}) => {\n if (planeOpacity === 0) {\n return \"transparent\";\n }\n if (!planeControls) {\n return theme.backgroundColorPrimary;\n }\n return theme.backgroundColorDark;\n}};\n\n position: absolute;\n top: 0;\n left: -100px;\n height: 30px;\n width: 100px;\n opacity: 0.5;\n`;\n\nconst PluridPlaneBridge = properties => {\n const {stateGeneralTheme: stateGeneralTheme, stateConfiguration: stateConfiguration} = properties;\n const {controls: controls, opacity: opacity} = stateConfiguration.elements.plane;\n return React__default[\"default\"].createElement(StyledPluridPlaneBridge, {\n theme: stateGeneralTheme,\n planeControls: controls.show,\n planeOpacity: opacity,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE_BRIDGE\n });\n};\n\nconst mapStateToProperties$i = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProperties$i = dispatch => ({});\n\nconst ConnectedPluridPlaneBridge = reactRedux.connect(mapStateToProperties$i, mapDispatchToProperties$i, null, {\n context: StateContext\n})(PluridPlaneBridge);\n\nconst StyledPluridPlaneControls = styled__default[\"default\"].div`\n background-color: ${({transparentUI: transparentUI, mouseOver: mouseOver, theme: theme}) => {\n if (transparentUI && !mouseOver) {\n return \"transparent\";\n }\n return theme.backgroundColorDark;\n}};\n box-shadow: ${({theme: theme}) => theme.boxShadowUmbraInset};\n\n width: 100%;\n display: grid;\n align-items: center;\n justify-content: center;\n grid-template-rows: 1fr;\n grid-template-columns: 1fr 2fr 1fr;\n transition: background-color 300ms linear;\n\n @media (max-width: 800px) {\n grid-template-columns: 1fr 3fr 1fr;\n }\n`;\n\nconst StyledPluridPlaneControlsLeft = styled__default[\"default\"].div`\n`;\n\nconst StyledPluridPlaneControlsCenter = styled__default[\"default\"].div`\n width: 100%;\n height: 38px;\n position: relative;\n`;\n\nconst StyledPluridPlaneControlsRight = styled__default[\"default\"].div`\n display: grid;\n grid-template-columns: repeat(4, 30px);\n padding: 0 1rem;\n`;\n\nconst {inputs: {Textline: PluridTextline}} = pluridUiComponentsReact.universal;\n\nconst PluridPlaneControls = properties => {\n const {plane: plane, treePlane: treePlane, mouseOver: mouseOver, configuration: configuration, generalTheme: generalTheme, interactionTheme: interactionTheme} = properties;\n const {global: global, elements: elements} = configuration;\n const {transparentUI: transparentUI} = global;\n const {pathbar: pathbar} = elements.plane.controls;\n const {route: route, routeDivisions: routeDivisions} = treePlane;\n const {protocol: protocol, host: host} = routeDivisions;\n const gateway = \"gateway\";\n `${protocol}://${host.value}/${gateway}?plurid=` + encodeURIComponent(route);\n const [path, setPath] = React.useState(treePlane.route);\n React.useState(false);\n const [showSearch, setShowSearch] = React.useState(false);\n const onPathInput = event => {\n setPath(event.target.value);\n if (pathbar.onChange) {\n const id = plane.route.absolute;\n pathbar.onChange(event, id);\n }\n };\n const handleOnKeyDown = event => {\n if (!showSearch) {\n setShowSearch(true);\n }\n if (event.key === \"Escape\") {\n setShowSearch(false);\n }\n if (pathbar.onKeyDown) {\n const id = plane.route.absolute;\n pathbar.onKeyDown(event, id);\n }\n };\n return React__default[\"default\"].createElement(StyledPluridPlaneControls, {\n theme: generalTheme,\n mouseOver: mouseOver,\n transparentUI: transparentUI,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE_CONTROLS\n }, React__default[\"default\"].createElement(StyledPluridPlaneControlsLeft, null), React__default[\"default\"].createElement(StyledPluridPlaneControlsCenter, null, React__default[\"default\"].createElement(PluridTextline, {\n theme: interactionTheme,\n text: path,\n atChange: onPathInput,\n atKeyDown: handleOnKeyDown,\n ariaLabel: \"Plurid Pathbar\"\n })), React__default[\"default\"].createElement(StyledPluridPlaneControlsRight, null));\n};\n\nconst mapStateToProps$g = state => ({\n configuration: selectors.configuration.getConfiguration(state),\n generalTheme: selectors.themes.getGeneralTheme(state),\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$g = dispatch => ({});\n\nconst ConnectedPluridPlaneControls = reactRedux.connect(mapStateToProps$g, mapDispatchToProps$g, null, {\n context: StateContext\n})(PluridPlaneControls);\n\nconst StyledPluridPlaneContent = styled__default[\"default\"].div`\n position: relative;\n`;\n\nconst PluridPlaneContent = properties => {\n const {children: children} = properties;\n const planeContentElement = React.useRef(null);\n return React__default[\"default\"].createElement(StyledPluridPlaneContent, {\n ref: planeContentElement,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE_CONTENT\n }, children);\n};\n\nconst PluridPlane = properties => {\n const {planeID: planeID, plane: plane, treePlane: treePlane, children: children, stateViewSize: stateViewSize, stateGeneralTheme: stateGeneralTheme, stateConfiguration: stateConfiguration, dispatchUpdateSpaceTreePlane: dispatchUpdateSpaceTreePlane} = properties;\n const {global: global, elements: elements} = stateConfiguration;\n const {transparentUI: transparentUI} = global;\n const {controls: controls, width: planeWidth, opacity: planeOpacity} = elements.plane;\n const showPlaneControls = controls.show;\n pluridFunctions.mathematics.numbers.checkIntegerNonUnit(planeWidth) ? planeWidth : planeWidth * stateViewSize.width;\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {planeRenderError: planeRenderError} = context;\n const [mouseOver, setMouseOver] = React.useState(false);\n const planeContentProperties = {};\n return React__default[\"default\"].createElement(StyledPluridPlane, {\n suppressHydrationWarning: true,\n theme: stateGeneralTheme,\n planeControls: showPlaneControls,\n planeOpacity: planeOpacity,\n show: treePlane.show,\n id: planeID,\n style: {\n width: \"100%\",\n transform: pluridEngine.cleanTemplate(`\\n translateX(${treePlane.location.translateX}px)\\n translateY(${treePlane.location.translateY}px)\\n translateZ(${treePlane.location.translateZ}px)\\n rotateX(${treePlane.location.rotateX}deg)\\n rotateY(${treePlane.location.rotateY}deg)\\n `)\n },\n onMouseEnter: () => setMouseOver(true),\n onMouseLeave: () => setMouseOver(false),\n transparentUI: transparentUI,\n mouseOver: mouseOver,\n \"data-plurid-plane\": planeID,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE\n }, treePlane.show && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, treePlane.parentPlaneID && React__default[\"default\"].createElement(ConnectedPluridPlaneBridge, null), showPlaneControls && React__default[\"default\"].createElement(ConnectedPluridPlaneControls, {\n plane: plane,\n treePlane: treePlane,\n mouseOver: mouseOver\n }), planeRenderError ? React__default[\"default\"].createElement(ErrorBoundary, {\n renderError: typeof planeRenderError !== \"boolean\" ? planeRenderError : undefined\n }, React__default[\"default\"].createElement(PluridPlaneContent, Object.assign({}, planeContentProperties), children)) : React__default[\"default\"].createElement(PluridPlaneContent, Object.assign({}, planeContentProperties), children)));\n};\n\nconst mapStateToProps$f = state => ({\n stateViewSize: selectors.space.getViewSize(state),\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$f = dispatch => ({\n dispatchUpdateSpaceTreePlane: treePlane => dispatch(actions.space.updateSpaceTreePlane(treePlane))\n});\n\nconst ConnectedPluridPlane = reactRedux.connect(mapStateToProps$f, mapDispatchToProps$f, null, {\n context: StateContext\n})(PluridPlane);\n\nconst isReactRenderable = component => {\n if (!component) {\n return false;\n }\n if (typeof component === \"string\" || component.url) {\n return false;\n }\n return true;\n};\n\nconst StyledPluridRoot = styled__default[\"default\"].div`\n transform-style: preserve-3d;\n`;\n\nconst {getPlanesRegistrar: getPlanesRegistrar$2, getRegisteredPlane: getRegisteredPlane} = pluridEngine.planes;\n\nconst PluridRoot = properties => {\n const {plane: plane} = properties;\n const {location: location} = plane;\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {planesRegistrar: planesRegistrar, planeContext: PlaneContext, planeContextValue: planeContextValue, customPlane: customPlane, matchedRoute: matchedRoute} = context;\n const CustomPluridPlane = customPlane;\n const [childrenPlanes, setChildrenPlanes] = React.useState([]);\n const computeChildrenPlanes = plane => {\n if (!plane.children) {\n return;\n }\n const planesRegistry = getPlanesRegistrar$2(planesRegistrar);\n plane.children.map((child => {\n if (!planesRegistry) {\n return;\n }\n const planeID = child.sourceID;\n const activePlane = planesRegistry.get(planeID);\n let plane = React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n if (activePlane) {\n const Plane = activePlane.component;\n const pluridProperty = {\n plane: {\n value: activePlane.route.absolute,\n planeID: child.planeID,\n parentPlaneID: child.parentPlaneID,\n fragments: activePlane.route.fragments,\n parameters: activePlane.route.parameters,\n query: activePlane.route.query\n },\n route: {\n value: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.value) || \"\",\n parameters: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.parameters) || {},\n query: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.query) || {}\n }\n };\n const properties = {\n plurid: Object.assign({}, pluridProperty)\n };\n const renderablePlane = isReactRenderable(Plane);\n const renderableCustomPlane = isReactRenderable(CustomPluridPlane);\n plane = !CustomPluridPlane ? renderablePlane ? React__default[\"default\"].createElement(ConnectedPluridPlane, {\n key: child.planeID,\n plane: activePlane,\n treePlane: child,\n planeID: child.planeID,\n location: child.location\n }, !PlaneContext ? React__default[\"default\"].createElement(Plane, Object.assign({}, properties)) : React__default[\"default\"].createElement(PlaneContext.Provider, {\n value: planeContextValue\n }, React__default[\"default\"].createElement(Plane, Object.assign({}, properties)))) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null) : renderableCustomPlane ? React__default[\"default\"].createElement(CustomPluridPlane, {\n key: child.planeID,\n plane: activePlane,\n treePlane: child,\n planeID: child.planeID,\n location: child.location\n }) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n setChildrenPlanes((planes => [ ...planes, plane ]));\n }\n if (child.children) {\n computeChildrenPlanes(child);\n }\n }));\n };\n React.useEffect((() => {\n setChildrenPlanes([]);\n computeChildrenPlanes(plane);\n }), [ JSON.stringify(plane) ]);\n const pluridPlaneID = plane.sourceID;\n if (!pluridPlaneID) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const pluridPlane = getRegisteredPlane(pluridPlaneID, planesRegistrar);\n if (!pluridPlane) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const Plane = pluridPlane.component;\n const pluridProperty = {\n plane: {\n value: pluridPlane.route.absolute,\n planeID: plane.planeID,\n parentPlaneID: plane.parentPlaneID,\n fragments: pluridPlane.route.fragments,\n parameters: pluridPlane.route.parameters,\n query: pluridPlane.route.query\n },\n route: {\n value: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.value) || \"\",\n parameters: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.parameters) || {},\n query: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.query) || {}\n }\n };\n const planeProperties = {\n plurid: Object.assign({}, pluridProperty)\n };\n if (CustomPluridPlane) {\n if (typeof CustomPluridPlane !== \"function\") {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledPluridRoot, {\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_ROOT\n }, React__default[\"default\"].createElement(CustomPluridPlane, {\n plane: pluridPlane,\n treePlane: plane,\n planeID: plane.planeID,\n location: location\n }), childrenPlanes);\n }\n return React__default[\"default\"].createElement(StyledPluridRoot, {\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_ROOT\n }, React__default[\"default\"].createElement(ConnectedPluridPlane, {\n plane: pluridPlane,\n treePlane: plane,\n planeID: plane.planeID,\n location: location\n }, !PlaneContext ? React__default[\"default\"].createElement(Plane, Object.assign({}, planeProperties)) : React__default[\"default\"].createElement(PlaneContext.Provider, {\n value: planeContextValue\n }, React__default[\"default\"].createElement(Plane, Object.assign({}, planeProperties)))), childrenPlanes);\n};\n\nconst mapStateToProperties$h = state => ({});\n\nconst mapDispatchToProperties$h = dispatch => ({});\n\nconst ConnectedPluridRoot = reactRedux.connect(mapStateToProperties$h, mapDispatchToProperties$h, null, {\n context: StateContext\n})(PluridRoot);\n\nconst StyledPluridRoots = styled__default[\"default\"].div`\n transform-style: preserve-3d;\n transform-origin: 0 0 0;\n`;\n\nconst PluridRoots = properties => {\n const {spaceTransformMatrix: spaceTransformMatrix, spaceAnimatedTransform: spaceAnimatedTransform, spaceTransformTime: spaceTransformTime, stateTree: stateTree} = properties;\n return React__default[\"default\"].createElement(StyledPluridRoots, {\n suppressHydrationWarning: true,\n style: {\n width: \"100%\",\n height: typeof window !== \"undefined\" ? window.innerHeight + \"px\" : \"821px\",\n transform: spaceTransformMatrix,\n transition: spaceAnimatedTransform ? `transform ${spaceTransformTime}ms ease-in-out` : \"initial\"\n },\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_ROOTS\n }, stateTree.map((plane => React__default[\"default\"].createElement(ConnectedPluridRoot, {\n key: plane.planeID,\n plane: plane\n }))));\n};\n\nconst mapStateToProperties$g = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state),\n spaceTransformMatrix: selectors.space.getTransformMatrix(state),\n spaceAnimatedTransform: selectors.space.getAnimatedTransform(state),\n spaceTransformTime: selectors.space.getTransformTime(state),\n stateTree: selectors.space.getTree(state)\n});\n\nconst mapDispatchToProperties$g = dispatch => ({});\n\nconst ConnectedPluridRoots = reactRedux.connect(mapStateToProperties$g, mapDispatchToProperties$g, null, {\n context: StateContext\n})(PluridRoots);\n\nconst fadeIn = styled.keyframes`\n from {\n opacity: 0%;\n }\n\n to {\n opacity: 100%;\n }\n`;\n\nconst fadeInAnimation = fadeInTime => styled.css`${fadeIn} ${fadeInTime}ms linear 100ms forwards`;\n\nconst StyledPluridSpace = styled__default[\"default\"].div`\n position: relative;\n height: 100%;\n overflow: hidden;\n perspective: 2000px;\n outline: none;\n\n background: ${({opaque: opaque, theme: theme}) => {\n if (opaque) {\n const foregroundGradient = theme.type === \"dark\" ? theme.backgroundColorTertiary : theme.backgroundColorPrimary;\n const backgroundGradient = theme.type === \"dark\" ? theme.backgroundColorPrimary : theme.backgroundColorTertiary;\n return `radial-gradient(\\n ellipse at center,\\n ${foregroundGradient} 0%,\\n ${backgroundGradient} 100%)\\n `;\n }\n return \"transparent\";\n}};\n\n /* TOFIX */\n /* opacity: ${({fadeInTime: fadeInTime}) => {\n if (fadeInTime) {\n return \"0\";\n }\n return \"1\";\n}};\n animation: ${({isMounted: isMounted, fadeInTime: fadeInTime}) => {\n if (isMounted && fadeInTime) {\n return fadeInAnimation(fadeInTime);\n }\n return \"\";\n}}; */\n`;\n\nconst PluridSpace = properties => {\n const {stateConfiguration: stateConfiguration, stateGeneralTheme: stateGeneralTheme} = properties;\n const {space: space} = stateConfiguration;\n const {opaque: opaque, fadeInTime: fadeInTime} = space;\n const [isMounted, setIsMounted] = React.useState(false);\n React.useEffect((() => {\n setIsMounted(true);\n }), []);\n return React__default[\"default\"].createElement(StyledPluridSpace, {\n theme: stateGeneralTheme,\n opaque: opaque,\n isMounted: isMounted,\n fadeInTime: fadeInTime,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_SPACE\n }, React__default[\"default\"].createElement(ConnectedPluridRoots, null));\n};\n\nconst mapStateToProperties$f = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateGeneralTheme: selectors.themes.getGeneralTheme(state)\n});\n\nconst mapDispatchToProperties$f = dispatch => ({});\n\nconst ConnectedPluridSpace = reactRedux.connect(mapStateToProperties$f, mapDispatchToProperties$f, null, {\n context: StateContext\n})(PluridSpace);\n\nconst resolveSize = ({size: size}) => {\n switch (size) {\n case pluridData.SIZES.SMALL:\n return \"5px\";\n\n case pluridData.SIZES.NORMAL:\n return \"10px\";\n\n case pluridData.SIZES.LARGE:\n return \"15px\";\n\n default:\n return \"10px\";\n }\n};\n\nconst StyledOrigin = styled__default[\"default\"].div`\n background-color: ${({theme: theme}) => theme.backgroundColorTertiaryAlpha};\n height: ${resolveSize};\n width: ${resolveSize};\n\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n z-index: 99999;\n border-radius: 100px;\n user-select: none;\n pointer-events: none;\n touch-action: none;\n`;\n\nconst Origin = properties => {\n const {stateGeneralTheme: stateGeneralTheme, stateConfiguration: stateConfiguration} = properties;\n const {space: space} = stateConfiguration;\n const {transformOrigin: transformOrigin} = space;\n const {show: showTransformOrigin, size: transformOriginSize} = transformOrigin;\n if (!showTransformOrigin) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledOrigin, {\n theme: stateGeneralTheme,\n size: transformOriginSize,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_TRANSFORM_ORIGIN\n });\n};\n\nconst mapStateToProperties$e = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProperties$e = dispatch => ({});\n\nconst ConnectedOrigin = reactRedux.connect(mapStateToProperties$e, mapDispatchToProperties$e, null, {\n context: StateContext\n})(Origin);\n\nvar MENUS;\n\n(function(MENUS) {\n MENUS[\"NONE\"] = \"NONE\";\n MENUS[\"UNIVERSES\"] = \"UNIVERSES\";\n MENUS[\"MORE\"] = \"MORE\";\n})(MENUS || (MENUS = {}));\n\nconst VIEW_SIZE_WIDTH_LIMIT = 800;\n\nconst StyledToolbar = styled__default[\"default\"].div`\n bottom: ${({conceal: conceal, mouseIn: mouseIn}) => {\n if (!conceal) {\n return \"-5px\";\n }\n if (mouseIn) {\n return \"-5px\";\n }\n return \"-55px\";\n}};\n pointer-events: ${({showMenu: showMenu}) => {\n if (showMenu !== MENUS.NONE) {\n return \"all\";\n }\n return \"none\";\n}};\n opacity: ${({fadeInTime: fadeInTime}) => {\n if (fadeInTime) {\n return \"0\";\n }\n return \"1\";\n}};\n animation: ${({fadeInTime: fadeInTime, isMounted: isMounted}) => {\n if (isMounted && fadeInTime) {\n return fadeInAnimation(fadeInTime);\n }\n return \"\";\n}};\n\n display: grid;\n position: absolute;\n left: 0;\n right: 0;\n height: 75px;\n z-index: 9999;\n transition: bottom 300ms ease-in-out;\n`;\n\nconst StyledToolbarButtons = styled__default[\"default\"].div`\n color: ${({theme: theme}) => theme.colorPrimary};\n background-color: ${({theme: theme, transparentUI: transparentUI}) => {\n if (transparentUI) {\n return theme.backgroundColorPrimaryAlpha;\n }\n return theme.backgroundColorSecondary;\n}};\n box-shadow: ${({theme: theme}) => theme.boxShadowUmbra};\n grid-template-columns: ${({showIcons: showIcons, showTransformButtons: showTransformButtons, documentsBased: documentsBased}) => {\n if (showIcons && !showTransformButtons) {\n if (documentsBased) {\n return \"repeat(6, minmax(min-content, 40px))\";\n } else {\n return \"repeat(5, minmax(min-content, 40px))\";\n }\n }\n if (!showTransformButtons) {\n if (documentsBased) {\n return \"repeat(6, minmax(min-content, 40px))\";\n } else {\n return \"repeat(5, minmax(min-content, 40px))\";\n }\n }\n if (documentsBased) {\n return \"40px 200px 200px 200px 40px 40px\";\n }\n return \"40px 200px 200px 200px 40px\";\n}};\n opacity: ${({opaque: opaque, mouseIn: mouseIn}) => {\n if (!opaque && !mouseIn) {\n return \"0.4\";\n }\n return \"1\";\n}};\n\n z-index: 9999;\n user-select: none;\n /* height: 75px; */\n display: grid;\n pointer-events: all;\n display: grid;\n align-items: center;\n justify-content: center;\n justify-items: center;\n border-radius: 22.5px;\n margin: 0 auto;\n margin-top: 10px;\n margin-bottom: 20px;\n padding: 0 22.5px;\n font-size: 12px;\n height: 45px;\n transition: opacity 300ms ease-in-out;\n\n :after {\n content: '';\n position: absolute;\n top: 55px;\n left: 0;\n right: 0;\n height: 20px;\n }\n`;\n\nconst StyledToolbarButton = styled__default[\"default\"].div`\n padding: ${({button: button, showIcons: showIcons, showTransformButtons: showTransformButtons}) => {\n if (button) {\n return \"0\";\n }\n if (showIcons && !showTransformButtons) {\n return \"0\";\n }\n return \"0 7px\";\n}};\n background-color: ${({active: active, theme: theme}) => {\n if (active) {\n return theme.backgroundColorTertiary;\n }\n return \"transparent\";\n}};\n min-width: ${({button: button}) => {\n if (button) {\n return \"40px\";\n }\n return \"70px\";\n}};\n\n height: 45px;\n display: grid;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n user-select: none;\n\n :hover {\n background: ${({theme: theme}) => theme.backgroundColorTertiary};\n }\n`;\n\nconst StyledIcon = styled__default[\"default\"].div`\n width: 40px;\n display: grid;\n place-content: center;\n\n /* svg {\n height: 15px;\n width: 15px;\n fill: white;\n } */\n`;\n\nconst StyledPluridMenuUniverses = styled__default[\"default\"].div`\n position: absolute;\n bottom: 75px;\n max-height: 250px;\n width: 380px;\n left: 50%;\n transform: translateX(-50%);\n border-radius: 22.5px;\n padding: 22px;\n font-size: 0.8rem;\n overflow: hidden;\n\n background-color: ${props => props.theme.backgroundColorSecondary};\n box-shadow: ${props => props.theme.boxShadowUmbra};\n\n ul {\n padding: 0;\n list-style: none;\n }\n`;\n\nstyled__default[\"default\"].div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n position: relative;\n\n margin-bottom: ${props => {\n if (props.afterline) {\n return \"30px\";\n }\n return \"10px\";\n}};\n\n ${props => {\n if (props.afterline) {\n return `\\n ::after {\\n position: absolute;\\n content: '';\\n left: 0;\\n right: 0;\\n bottom: -15px;\\n height: 1px;\\n background-color: white;\\n }\\n `;\n }\n return \"\";\n}};\n`;\n\nconst StyledPluridMenuUniversesScroll = styled__default[\"default\"].div`\n max-height: 210px;\n overflow: scroll;\n padding: 0 5px;\n\n /* Hide Scrollbar */\n scrollbar-width: none; /* Firefox 64 */\n -ms-overflow-style: none; /* Internet Explorer 11 */\n ::-webkit-scrollbar { /** WebKit */\n display: none;\n }\n\n h5::first-child {\n margin-top: 0;\n }\n`;\n\nstyled__default[\"default\"].li`\n margin: 10px 0;\n padding: 10px 20px;\n border-radius: 100px;\n\n cursor: ${props => {\n if (props.active) {\n return \"initial\";\n }\n return \"pointer\";\n}};\n background-color: ${props => {\n if (props.active) {\n return props.theme.backgroundColorTertiary;\n }\n return \"\";\n}};\n box-shadow: ${props => {\n if (props.active) {\n return \"inset 0px -1px 6px 0px \" + props.theme.boxShadowUmbraColor;\n }\n return \"\";\n}};\n\n :hover {\n background-color: ${props => props.theme.backgroundColorTertiary};\n box-shadow: ${props => {\n if (props.active) {\n return \"inset 0px -1px 6px 0px \" + props.theme.boxShadowUmbraColor;\n }\n return props.theme.boxShadowUmbra;\n}};\n }\n`;\n\nconst PluridMenuUniverses = properties => {\n const {interactionTheme: interactionTheme, activeUniverseID: activeUniverseID, dispatchSetActiveUniverse: dispatchSetActiveUniverse} = properties;\n return React__default[\"default\"].createElement(StyledPluridMenuUniverses, {\n theme: interactionTheme\n }, React__default[\"default\"].createElement(StyledPluridMenuUniversesScroll, null));\n};\n\nconst mapStateToProps$e = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state),\n activeUniverseID: selectors.space.getActiveUniverseID(state)\n});\n\nconst mapDispatchToProps$e = dispatch => ({\n dispatchSetActiveUniverse: documentID => dispatch(actions.space.setActiveUniverse(documentID))\n});\n\nconst ConnectedPluridMenuUniverses = reactRedux.connect(mapStateToProps$e, mapDispatchToProps$e, null, {\n context: StateContext\n})(PluridMenuUniverses);\n\nconst StyledPluridDrawer = styled__default[\"default\"].div`\n h5 {\n font-size: 1rem;\n margin: 0;\n }\n\n margin-bottom: 2rem;\n border-top-left-radius: 15px;\n border-top-right-radius: 15px;\n\n padding-bottom: ${props => {\n if (props.transparentUI && props.toggled) {\n return \"0.5rem\";\n }\n return \"0\";\n}};\n background-color: ${props => {\n if (props.transparentUI && props.mouseOver) {\n return props.theme.backgroundColorSecondary;\n }\n return \"transparent\";\n}};\n box-shadow: ${props => {\n if (props.transparentUI && props.mouseOver) {\n return props.theme.boxShadowUmbra;\n }\n return \"none\";\n}};\n color: ${props => props.theme.colorPrimary};\n`;\n\nconst StyledPluridDrawerHeading = styled__default[\"default\"].div`\n user-select: none;\n cursor: pointer;\n padding: 0.5rem;\n margin-bottom: 0.5rem;\n border-bottom: 1px solid transparent;\n text-align: left;\n\n :hover {\n border-bottom: 1px solid ${props => props.theme.colorPrimary};\n }\n`;\n\nconst StyledPluridDrawerItems = styled__default[\"default\"].div`\n`;\n\nconst {typography: {Heading: PluridHeading}} = pluridUiComponentsReact.universal;\n\nconst PluridDrawer = properties => {\n const {heading: heading, items: items, toggled: toggled, toggle: toggle, interactionTheme: interactionTheme, configuration: configuration} = properties;\n const {global: global} = configuration;\n const {transparentUI: transparentUI} = global;\n const [mouseOver, setMouseOver] = React.useState(false);\n return React__default[\"default\"].createElement(StyledPluridDrawer, {\n theme: interactionTheme,\n onMouseEnter: () => setMouseOver(true),\n onMouseLeave: () => setMouseOver(false),\n transparentUI: transparentUI,\n mouseOver: mouseOver,\n toggled: toggled\n }, React__default[\"default\"].createElement(StyledPluridDrawerHeading, {\n theme: interactionTheme,\n onClick: () => toggle()\n }, React__default[\"default\"].createElement(PluridHeading, {\n theme: interactionTheme,\n type: \"h5\"\n }, heading)), toggled && React__default[\"default\"].createElement(StyledPluridDrawerItems, null, items));\n};\n\nconst mapStateToProps$d = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$d = dispatch => ({});\n\nconst ConnectedPluridDrawer = reactRedux.connect(mapStateToProps$d, mapDispatchToProps$d, null, {\n context: StateContext\n})(PluridDrawer);\n\nconst StyledPluridMoreMenu = styled__default[\"default\"].div`\n position: absolute;\n bottom: 75px;\n height: 280px;\n width: 380px;\n left: 50%;\n transform: translateX(-50%);\n border-radius: 22.5px;\n padding: 22px;\n font-size: 0.8rem;\n overflow: hidden;\n\n background-color: ${props => {\n if (props.transparentUI) {\n return props.theme.backgroundColorPrimaryAlpha;\n }\n return props.theme.backgroundColorSecondary;\n}};\n box-shadow: ${props => props.theme.boxShadowUmbra};\n`;\n\nconst StyledPluridMoreMenuItem = styled__default[\"default\"].div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n position: relative;\n min-height: 30px;\n padding: 0 0.5rem;\n\n margin-bottom: ${props => {\n if (props.last) {\n return \"0\";\n }\n if (props.afterline) {\n return \"30px\";\n }\n return \"10px\";\n}};\n\n ${props => {\n if (props.afterline) {\n return `\\n ::after {\\n position: absolute;\\n content: '';\\n left: 0;\\n right: 0;\\n bottom: -15px;\\n height: 1px;\\n background-color: ${props.theme ? props.theme.colorPrimary : \"white\"};\\n }\\n `;\n }\n return \"\";\n}};\n`;\n\nconst StyledPluridMoreMenuScroll = styled__default[\"default\"].div`\n height: 240px;\n overflow: scroll;\n padding: 0 5px;\n\n /* Hide Scrollbar */\n scrollbar-width: none; /* Firefox 64 */\n -ms-overflow-style: none; /* Internet Explorer 11 */\n ::-webkit-scrollbar { /** WebKit */\n display: none;\n }\n\n h5::first-child {\n margin-top: 0;\n }\n`;\n\nconst {inputs: {Dropdown: PluridDropdown$1}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreGlobal = properties => {\n const {stateLanguage: stateLanguage, interactionTheme: interactionTheme, configuration: configuration, dispatchSetGeneralTheme: dispatchSetGeneralTheme, dispatchSetInteractionTheme: dispatchSetInteractionTheme, dispatchSetConfigurationThemeGeneralAction: dispatchSetConfigurationThemeGeneralAction, dispatchSetConfigurationThemeInteractionAction: dispatchSetConfigurationThemeInteractionAction, dispatchSetConfigurationLanguage: dispatchSetConfigurationLanguage} = properties;\n const selectedTheme = configuration.global.theme;\n const [generalThemeName, setGeneralThemeName] = React.useState(typeof selectedTheme === \"object\" ? selectedTheme.general : selectedTheme);\n const [interactionThemeName, setInteractionThemeName] = React.useState(typeof selectedTheme === \"object\" ? selectedTheme.interaction : selectedTheme);\n const setGeneralTheme = selectedTheme => {\n dispatchSetGeneralTheme(themes__default[\"default\"][selectedTheme]);\n dispatchSetConfigurationThemeGeneralAction(selectedTheme);\n };\n const setInteractionTheme = selectedTheme => {\n dispatchSetInteractionTheme(themes__default[\"default\"][selectedTheme]);\n dispatchSetConfigurationThemeInteractionAction(selectedTheme);\n };\n const setLanguage = selectedLanguage => {\n dispatchSetConfigurationLanguage(selectedLanguage);\n };\n React.useEffect((() => {\n if (typeof selectedTheme === \"object\") {\n setGeneralThemeName(selectedTheme.general);\n setInteractionThemeName(selectedTheme.interaction);\n } else {\n setGeneralThemeName(selectedTheme);\n setInteractionThemeName(selectedTheme);\n }\n }), [ selectedTheme ]);\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerGlobalGeneralTheme), React__default[\"default\"].createElement(PluridDropdown$1, {\n selectables: Object.keys(themes__default[\"default\"]),\n selected: typeof generalThemeName === \"string\" ? generalThemeName : \"\",\n atSelect: selection => setGeneralTheme(selection),\n theme: interactionTheme,\n filterable: true,\n heightItems: 3,\n width: 90,\n style: {\n fontSize: \"0.8rem\"\n }\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerGlobalInteractionTheme), React__default[\"default\"].createElement(PluridDropdown$1, {\n selectables: Object.keys(themes__default[\"default\"]),\n selected: typeof interactionThemeName === \"string\" ? interactionThemeName : \"\",\n atSelect: selection => setInteractionTheme(selection),\n theme: interactionTheme,\n heightItems: 3,\n filterable: true,\n width: 90,\n style: {\n fontSize: \"0.8rem\"\n }\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerGlobalLanguage), React__default[\"default\"].createElement(PluridDropdown$1, {\n selectables: pluridData.internationalization.languages,\n selected: stateLanguage,\n atSelect: selection => setLanguage(selection),\n theme: interactionTheme,\n heightItems: 3,\n width: 90,\n style: {\n fontSize: \"0.8rem\"\n }\n })));\n};\n\nconst mapStateToProps$c = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$c = dispatch => ({\n dispatchSetConfigurationThemeGeneralAction: theme => dispatch(actions.configuration.setConfigurationThemeGeneralAction(theme)),\n dispatchSetConfigurationThemeInteractionAction: theme => dispatch(actions.configuration.setConfigurationThemeInteractionAction(theme)),\n dispatchSetConfigurationLanguage: language => dispatch(actions.configuration.setConfigurationLanguageAction(language)),\n dispatchSetGeneralTheme: theme => dispatch(actions.themes.setGeneralTheme(theme)),\n dispatchSetInteractionTheme: theme => dispatch(actions.themes.setInteractionTheme(theme))\n});\n\nconst ConnectedPluridMenuMoreGlobal = reactRedux.connect(mapStateToProps$c, mapDispatchToProps$c, null, {\n context: StateContext\n})(PluridMenuMoreGlobal);\n\nconst {inputs: {Switch: PluridSwitch$3}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreTransform = properties => {\n const {stateLanguage: stateLanguage, interactionTheme: interactionTheme, configuration: configuration, dispatchToggleConfigurationSpaceTransformMultimode: dispatchToggleConfigurationSpaceTransformMultimode, dispatchSetConfigurationSpaceTransformTouch: dispatchSetConfigurationSpaceTransformTouch, dispatchSetConfigurationSpaceTransformLocks: dispatchSetConfigurationSpaceTransformLocks} = properties;\n const {transformMultimode: transformMultimode, transformLocks: transformLocks, transformTouch: transformTouch} = configuration.space;\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformMultiModeTransform)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformMultimode,\n atChange: () => dispatchToggleConfigurationSpaceTransformMultimode(!transformMultimode),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowRotationX)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.rotationX,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"rotationX\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowRotationY)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.rotationY,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"rotationY\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowTranslationX)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.translationX,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"translationX\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowTranslationY)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.translationY,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"translationY\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowTranslationZ)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.translationZ,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"translationZ\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowScale)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.scale,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"scale\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformTouchTransform), \": \", transformTouch === pluridData.TRANSFORM_TOUCHES.PAN ? \"pan\" : \"swipe\"), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformTouch === pluridData.TRANSFORM_TOUCHES.PAN,\n atChange: () => transformTouch === pluridData.TRANSFORM_TOUCHES.PAN ? dispatchSetConfigurationSpaceTransformTouch(pluridData.TRANSFORM_TOUCHES.SWIPE) : dispatchSetConfigurationSpaceTransformTouch(pluridData.TRANSFORM_TOUCHES.PAN),\n level: 2\n })));\n};\n\nconst mapStateToProps$b = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$b = dispatch => ({\n dispatchToggleConfigurationSpaceTransformMultimode: multimode => dispatch(actions.configuration.toggleConfigurationSpaceTransformMultimode(multimode)),\n dispatchSetConfigurationSpaceTransformTouch: touch => dispatch(actions.configuration.setConfigurationSpaceTransformTouch(touch)),\n dispatchSetConfigurationSpaceTransformLocks: lock => dispatch(actions.configuration.setConfigurationSpaceTransformLocks(lock))\n});\n\nconst ConnectedPluridMenuMoreTransform = reactRedux.connect(mapStateToProps$b, mapDispatchToProps$b, null, {\n context: StateContext\n})(PluridMenuMoreTransform);\n\nconst {inputs: {Dropdown: PluridDropdown, Switch: PluridSwitch$2, Slider: PluridSlider$1}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreSpace = properties => {\n const {interactionTheme: interactionTheme, configuration: configuration, dispatchSetConfigurationPlaneOpacity: dispatchSetConfigurationPlaneOpacity, dispatchToggleConfigurationSpaceTransparentUI: dispatchToggleConfigurationSpaceTransparentUI, dispatchToggleConfigurationSpaceShowTransformOrigin: dispatchToggleConfigurationSpaceShowTransformOrigin, dispatchSetConfigurationSpaceTransformOriginSize: dispatchSetConfigurationSpaceTransformOriginSize, dispatchSetConfigurationSpaceLayoutType: dispatchSetConfigurationSpaceLayoutType} = properties;\n const {global: global, space: space, elements: elements} = configuration;\n const {transparentUI: transparentUI, language: language} = global;\n const {layout: layout, transformOrigin: transformOrigin} = space;\n const layoutType = pluridData.layoutNames[layout.type];\n const {show: showTransformOrigin, size: transformOriginSize} = transformOrigin;\n const planeOpacity = elements.plane.opacity;\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpaceTransparentUserInterface), React__default[\"default\"].createElement(PluridSwitch$2, {\n checked: transparentUI,\n atChange: () => dispatchToggleConfigurationSpaceTransparentUI(),\n exclusive: true,\n level: 2,\n theme: interactionTheme\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpaceShowTransformOrigin), React__default[\"default\"].createElement(PluridSwitch$2, {\n checked: showTransformOrigin,\n atChange: () => dispatchToggleConfigurationSpaceShowTransformOrigin(),\n exclusive: true,\n level: 2,\n theme: interactionTheme\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpaceTransformOriginSize), React__default[\"default\"].createElement(PluridDropdown, {\n selectables: [ \"small\", \"normal\", \"large\" ],\n selected: transformOriginSize.toLowerCase(),\n atSelect: selection => {\n const selected = selection.toUpperCase();\n if (selected === pluridData.SIZES.SMALL || selected === pluridData.SIZES.NORMAL || selected === pluridData.SIZES.LARGE) {\n dispatchSetConfigurationSpaceTransformOriginSize(selected);\n }\n },\n heightItems: 3,\n theme: interactionTheme\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpacePlaneOpacity), React__default[\"default\"].createElement(PluridSlider$1, {\n value: planeOpacity,\n max: 1,\n min: 0,\n step: .1,\n defaultValue: 100,\n atChange: value => dispatchSetConfigurationPlaneOpacity(value),\n thumbSize: \"large\",\n level: 2,\n theme: interactionTheme\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpaceLayoutType), React__default[\"default\"].createElement(PluridDropdown, {\n selectables: [ ...Object.values(pluridData.layoutNames) ],\n selected: layoutType,\n atSelect: selection => {\n const selected = selection.toUpperCase().replace(/\\s/g, \"_\");\n dispatchSetConfigurationSpaceLayoutType(selected);\n },\n heightItems: 3,\n theme: interactionTheme,\n width: 100\n })));\n};\n\nconst mapStateToProps$a = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$a = dispatch => ({\n dispatchSetConfigurationPlaneOpacity: value => dispatch(actions.configuration.setConfigurationPlaneOpacity(value)),\n dispatchToggleConfigurationSpaceTransparentUI: () => dispatch(actions.configuration.toggleConfigurationSpaceTransparentUI()),\n dispatchToggleConfigurationSpaceShowTransformOrigin: () => dispatch(actions.configuration.toggleConfigurationSpaceShowTransformOrigin()),\n dispatchSetConfigurationSpaceTransformOriginSize: size => dispatch(actions.configuration.setConfigurationSpaceTransformOriginSize(size)),\n dispatchSetConfigurationSpaceLayoutType: layoutType => dispatch(actions.configuration.setConfigurationSpaceLayoutType(layoutType))\n});\n\nconst ConnectedPluridMenuMoreSpace = reactRedux.connect(mapStateToProps$a, mapDispatchToProps$a, null, {\n context: StateContext\n})(PluridMenuMoreSpace);\n\nconst {inputs: {Switch: PluridSwitch$1}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreToolbar = properties => {\n const {stateLanguage: stateLanguage, interactionTheme: interactionTheme, configuration: configuration, viewSize: viewSize, dispatchToggleConfigurationToolbarConceal: dispatchToggleConfigurationToolbarConceal, dispatchToggleConfigurationToolbarTransformIcons: dispatchToggleConfigurationToolbarTransformIcons, dispatchToggleConfigurationToolbarTransformButtons: dispatchToggleConfigurationToolbarTransformButtons, dispatchToggleConfigurationToolbarOpaque: dispatchToggleConfigurationToolbarOpaque} = properties;\n const {toolbar: toolbar} = configuration.elements;\n const {conceal: conceal, opaque: opaque, transformIcons: transformIcons, transformButtons: transformButtons} = toolbar;\n const [viewSizeSmall, setViewSizeSmall] = React.useState(false);\n React.useEffect((() => {\n if (viewSize.width < 800) {\n setViewSizeSmall(true);\n } else {\n setViewSizeSmall(false);\n }\n }), [ viewSize.width ]);\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerToolbarAlwaysOpaque)), React__default[\"default\"].createElement(PluridSwitch$1, {\n theme: interactionTheme,\n checked: opaque,\n atChange: () => dispatchToggleConfigurationToolbarOpaque(),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerToolbarShowTransformIcons)), React__default[\"default\"].createElement(PluridSwitch$1, {\n theme: interactionTheme,\n checked: transformIcons,\n atChange: () => dispatchToggleConfigurationToolbarTransformIcons(),\n exclusive: true,\n level: 2\n })), !viewSizeSmall && React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerToolbarShowTransformArrows)), React__default[\"default\"].createElement(PluridSwitch$1, {\n theme: interactionTheme,\n checked: transformButtons,\n atChange: () => dispatchToggleConfigurationToolbarTransformButtons(),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerToolbarConcealToolbar)), React__default[\"default\"].createElement(PluridSwitch$1, {\n theme: interactionTheme,\n checked: conceal,\n atChange: () => dispatchToggleConfigurationToolbarConceal(),\n exclusive: true,\n level: 2\n })));\n};\n\nconst mapStateToProps$9 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state),\n viewSize: selectors.space.getViewSize(state)\n});\n\nconst mapDispatchToProps$9 = dispatch => ({\n dispatchToggleConfigurationToolbarConceal: () => dispatch(actions.configuration.toggleConfigurationToolbarConceal()),\n dispatchToggleConfigurationToolbarTransformIcons: () => dispatch(actions.configuration.toggleConfigurationToolbarTransformIcons()),\n dispatchToggleConfigurationToolbarTransformButtons: () => dispatch(actions.configuration.toggleConfigurationToolbarTransformButtons()),\n dispatchToggleConfigurationToolbarOpaque: () => dispatch(actions.configuration.toggleConfigurationToolbarOpaque())\n});\n\nconst ConnectedPluridMenuMoreToolbar = reactRedux.connect(mapStateToProps$9, mapDispatchToProps$9, null, {\n context: StateContext\n})(PluridMenuMoreToolbar);\n\nconst {inputs: {Switch: PluridSwitch}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreViewcube = properties => {\n const {stateLanguage: stateLanguage, interactionTheme: interactionTheme, configuration: configuration, dispatchToggleConfigurationViewcubeHide: dispatchToggleConfigurationViewcubeHide, dispatchToggleConfigurationViewcubeButtons: dispatchToggleConfigurationViewcubeButtons, dispatchToggleConfigurationViewcubeOpaque: dispatchToggleConfigurationViewcubeOpaque, dispatchToggleConfigurationViewcubeConceal: dispatchToggleConfigurationViewcubeConceal} = properties;\n const {viewcube: viewcube} = configuration.elements;\n const {show: show, buttons: buttons, opaque: opaque, conceal: conceal} = viewcube;\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: !show ? true : false\n }, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerViewcubeShowViewcube)), React__default[\"default\"].createElement(PluridSwitch, {\n theme: interactionTheme,\n checked: show,\n atChange: () => dispatchToggleConfigurationViewcubeHide(!show),\n exclusive: true,\n level: 2\n })), show && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerViewcubeShowTransformButtons)), React__default[\"default\"].createElement(PluridSwitch, {\n theme: interactionTheme,\n checked: buttons,\n atChange: () => dispatchToggleConfigurationViewcubeButtons(!buttons),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerViewcubeAlwaysOpaque)), React__default[\"default\"].createElement(PluridSwitch, {\n theme: interactionTheme,\n checked: opaque,\n atChange: () => dispatchToggleConfigurationViewcubeOpaque(!opaque),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerViewcubeConcealViewcube)), React__default[\"default\"].createElement(PluridSwitch, {\n theme: interactionTheme,\n checked: conceal,\n atChange: () => dispatchToggleConfigurationViewcubeConceal(),\n exclusive: true,\n level: 2\n }))));\n};\n\nconst mapStateToProps$8 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$8 = dispatch => ({\n dispatchToggleConfigurationViewcubeHide: toggle => dispatch(actions.configuration.toggleConfigurationViewcubeHide(toggle)),\n dispatchToggleConfigurationViewcubeButtons: toggle => dispatch(actions.configuration.toggleConfigurationViewcubeButtons(toggle)),\n dispatchToggleConfigurationViewcubeOpaque: toggle => dispatch(actions.configuration.toggleConfigurationViewcubeOpaque(toggle)),\n dispatchToggleConfigurationViewcubeConceal: () => dispatch(actions.configuration.toggleConfigurationViewcubeConceal())\n});\n\nconst ConnectedPluridMenuMoreViewcube = reactRedux.connect(mapStateToProps$8, mapDispatchToProps$8, null, {\n context: StateContext\n})(PluridMenuMoreViewcube);\n\nconst {inputs: {Slider: PluridSlider}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreTechnical = properties => {\n const {stateLanguage: stateLanguage, stateConfiguration: stateConfiguration, stateInteractionTheme: stateInteractionTheme, dispatchSetConfigurationSpaceCullingDistance: dispatchSetConfigurationSpaceCullingDistance} = properties;\n const {cullingDistance: cullingDistance} = stateConfiguration.space;\n const [localCullingDistance, setLocalCullingDistance] = React.useState(cullingDistance);\n const dispatchCullingDistanceUpdateFunction = value => {\n dispatchSetConfigurationSpaceCullingDistance(value);\n };\n const dispatchCullingDistanceUpdate = pluridFunctionsReact.useDebouncedCallback(dispatchCullingDistanceUpdateFunction, 300);\n const handleCullingDistance = value => {\n setLocalCullingDistance(value);\n dispatchCullingDistanceUpdate(value);\n };\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTechnicalCullingDistance)), React__default[\"default\"].createElement(PluridSlider, {\n theme: stateInteractionTheme,\n value: localCullingDistance,\n atChange: handleCullingDistance,\n min: 1e3,\n max: 5e3,\n defaultValue: 1500\n })));\n};\n\nconst mapStateToProps$7 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$7 = dispatch => ({\n dispatchSetConfigurationSpaceCullingDistance: value => dispatch(actions.configuration.setConfigurationSpaceCullingDistance(value))\n});\n\nconst ConnectedPluridMenuMoreTechnical = reactRedux.connect(mapStateToProps$7, mapDispatchToProps$7, null, {\n context: StateContext\n})(PluridMenuMoreTechnical);\n\nconst PluridMenuMoreShortcuts = properties => {\n const {interactionTheme: interactionTheme, configuration: configuration} = properties;\n const {global: global} = configuration;\n const {language: language} = global;\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridData.defaultShortcuts.map(((shortcut, index) => {\n const {type: type} = shortcut;\n const shortcutData = pluridData.shortcutsNames[type];\n const {name: name, internationalizedKey: internationalizedKey, key: key, modifier: modifier} = shortcutData;\n const modifierString = Array.isArray(modifier) ? modifier.reduce(((total, element) => total + \" + \" + element)) + \" +\" : typeof modifier === \"string\" ? modifier + \" +\" : \"\";\n const internationalizedName = pluridEngine.internatiolate(language, name);\n const keyAsAny = key;\n const keyName = internationalizedKey ? pluridEngine.internatiolate(language, keyAsAny) : key;\n return React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n key: name,\n theme: interactionTheme,\n afterline: type === \"TURN_DOWN\" || type === \"TOGGLE_ROTATE\" || type === \"TOGGLE_TRANSLATE\",\n last: index === pluridData.defaultShortcuts.length - 1 ? true : false\n }, React__default[\"default\"].createElement(\"div\", null, internationalizedName), React__default[\"default\"].createElement(\"div\", null, modifierString, \" \", keyName));\n })));\n};\n\nconst mapStateToProps$6 = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$6 = dispatch => ({});\n\nconst ConnectedPluridMenuMoreShortcuts = reactRedux.connect(mapStateToProps$6, mapDispatchToProps$6, null, {\n context: StateContext\n})(PluridMenuMoreShortcuts);\n\nconst moreMenusRecord = {\n GLOBAL: {\n name: pluridData.internationalization.fields.toolbarDrawerGlobalTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.GLOBAL,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreGlobal, null)\n },\n TRANSFORM: {\n name: pluridData.internationalization.fields.toolbarDrawerTransformTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.TRANSFORM,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreTransform, null)\n },\n SPACE: {\n name: pluridData.internationalization.fields.toolbarDrawerSpaceTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.SPACE,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreSpace, null)\n },\n TOOLBAR: {\n name: pluridData.internationalization.fields.toolbarDrawerToolbarTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.TOOLBAR,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreToolbar, null)\n },\n VIEWCUBE: {\n name: pluridData.internationalization.fields.toolbarDrawerViewcubeTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.VIEWCUBE,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreViewcube, null)\n },\n TECHNICAL: {\n name: pluridData.internationalization.fields.toolbarDrawerTechnicalTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.TECHNICAL,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreTechnical, null)\n },\n SHORTCUTS: {\n name: pluridData.internationalization.fields.toolbarDrawerShortcutsTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.SHORTCUTS,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreShortcuts, null)\n }\n};\n\nconst moreMenus = Object.values(moreMenusRecord);\n\nconst resolveMenus = drawers => {\n if (drawers.length === 0 || drawers.includes(\"ALL\")) {\n return moreMenus;\n }\n const resolvedMenus = [];\n for (const drawer of drawers) {\n const menu = moreMenusRecord[drawer];\n resolvedMenus.push(menu);\n }\n return resolvedMenus;\n};\n\nconst PluridMoreMenu = properties => {\n const {stateLanguage: stateLanguage, stateInteractionTheme: stateInteractionTheme, stateConfiguration: stateConfiguration, stateToolbarMenuScrollPosition: stateToolbarMenuScrollPosition, dispatchToggleConfigurationToolbarToggleDrawer: dispatchToggleConfigurationToolbarToggleDrawer, dispatchSetUIToolbarScrollPosition: dispatchSetUIToolbarScrollPosition} = properties;\n const {global: global, elements: elements} = stateConfiguration;\n const {transparentUI: transparentUI} = global;\n const {toolbar: toolbar} = elements;\n const {drawers: drawers, toggledDrawers: toggledDrawers} = toolbar;\n const menus = resolveMenus(drawers);\n const moreMenuScrollElement = React.useRef(null);\n const handleWheel = pluridFunctionsReact.useDebouncedCallback((_event => {\n if (moreMenuScrollElement.current) {\n const scrollPosition = moreMenuScrollElement.current.scrollTop;\n dispatchSetUIToolbarScrollPosition(scrollPosition);\n }\n }), 100);\n React.useEffect((() => {\n if (moreMenuScrollElement.current) {\n moreMenuScrollElement.current.addEventListener(\"wheel\", handleWheel);\n }\n return () => {\n if (moreMenuScrollElement.current) {\n moreMenuScrollElement.current.removeEventListener(\"wheel\", handleWheel);\n }\n };\n }), [ moreMenuScrollElement.current ]);\n React.useEffect((() => {\n if (moreMenuScrollElement.current) {\n moreMenuScrollElement.current.scrollTop = stateToolbarMenuScrollPosition;\n }\n }), [ stateToolbarMenuScrollPosition, moreMenuScrollElement.current ]);\n return React__default[\"default\"].createElement(StyledPluridMoreMenu, {\n theme: stateInteractionTheme,\n transparentUI: transparentUI\n }, React__default[\"default\"].createElement(StyledPluridMoreMenuScroll, {\n ref: moreMenuScrollElement\n }, menus.map((moreMenu => {\n const {name: name, drawer: drawer, component: component} = moreMenu;\n const internationalizedName = pluridEngine.internatiolate(stateLanguage, name);\n return React__default[\"default\"].createElement(ConnectedPluridDrawer, {\n key: name,\n heading: internationalizedName,\n items: React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, component),\n toggled: toggledDrawers.includes(\"ALL\") || toggledDrawers.includes(drawer),\n toggle: () => dispatchToggleConfigurationToolbarToggleDrawer(drawer)\n });\n }))));\n};\n\nconst mapStateToProperties$d = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n stateInteractionTheme: selectors.themes.getInteractionTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateToolbarMenuScrollPosition: selectors.ui.getToolbarScrollPosition(state)\n});\n\nconst mapDispatchToProperties$d = dispatch => ({\n dispatchToggleConfigurationToolbarToggleDrawer: drawer => dispatch(actions.configuration.toggleConfigurationToolbarToggleDrawer(drawer)),\n dispatchSetUIToolbarScrollPosition: value => dispatch(actions.ui.setUIToolbarScrollPosition(value))\n});\n\nconst ConnectedPluridMoreMenu = reactRedux.connect(mapStateToProperties$d, mapDispatchToProperties$d, null, {\n context: StateContext\n})(PluridMoreMenu);\n\nconst StyledPluridToolbarRotate = styled__default[\"default\"].div`\n display: grid;\n align-items: center;\n justify-items: center;\n grid-template-columns: ${props => {\n if (!props.showTransformButtons) {\n return \"1fr\";\n }\n return \"30px 30px 60px 30px 30px\";\n}};\n`;\n\nconst StyledPluridTransformArrow = styled__default[\"default\"].div`\n user-select: none;\n cursor: pointer;\n border-radius: 50px;\n width: 25px;\n height: 25px;\n display: grid;\n place-content: center;\n padding: 2px;\n\n background-color: ${({pressed: pressed, theme: theme}) => {\n if (pressed) {\n return theme.backgroundColorTertiary;\n }\n return \"initial\";\n}};\n\n :hover {\n background-color: ${({theme: theme}) => theme.backgroundColorTertiary};\n }\n`;\n\nconst arrowSigns = {\n left: \"◀\",\n right: \"▶\",\n up: \"▲\",\n down: \"▼\"\n};\n\nconst PluridTransformArrow = properties => {\n const {direction: direction, transform: transform, interactionTheme: interactionTheme} = properties;\n const arrowSign = arrowSigns[direction];\n const pressingInterval = React.useRef(null);\n const arrowElement = React.useRef(null);\n const [pressed, setPressed] = React.useState(false);\n const handleTouch = event => {\n switch (event.type) {\n case \"tap\":\n transform();\n if (pressingInterval.current) {\n setPressed(false);\n clearInterval(pressingInterval.current);\n }\n break;\n\n case \"press\":\n setPressed(true);\n pressingInterval.current = setInterval((() => {\n transform();\n }), 30);\n break;\n\n case \"pressup\":\n setPressed(false);\n if (pressingInterval.current) {\n clearInterval(pressingInterval.current);\n }\n break;\n }\n };\n const handleMouseLeave = () => {\n if (pressingInterval.current) {\n setPressed(false);\n clearInterval(pressingInterval.current);\n }\n };\n React.useEffect((() => {\n if (typeof window === \"undefined\") {\n return;\n }\n let touch;\n const loadTouch = () => __awaiter(void 0, void 0, void 0, (function*() {\n const HammerImport = yield loadHammer();\n const Hammer = HammerImport.default;\n touch = new Hammer(arrowElement.current);\n touch.on(\"tap press pressup\", handleTouch);\n }));\n loadTouch();\n return () => {\n if (touch) {\n touch.off(\"tap press pressup\", handleTouch);\n }\n };\n }), [ arrowElement.current ]);\n return React__default[\"default\"].createElement(StyledPluridTransformArrow, {\n ref: arrowElement,\n theme: interactionTheme,\n pressed: pressed,\n onMouseLeave: () => handleMouseLeave()\n }, arrowSign);\n};\n\nconst mapStateToProps$5 = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$5 = dispatch => ({});\n\nconst ConnectedPluridTransformArrow = reactRedux.connect(mapStateToProps$5, mapDispatchToProps$5, null, {\n context: StateContext\n})(PluridTransformArrow);\n\nconst PluridToolbarRotate = properties => {\n const {showTransformButtons: showTransformButtons, showIcons: showIcons, transformMode: transformMode, toggleTransform: toggleTransform, stateLanguage: stateLanguage, interactionTheme: interactionTheme, rotateUp: rotateUp, rotateDown: rotateDown, rotateLeft: rotateLeft, rotateRight: rotateRight} = properties;\n return React__default[\"default\"].createElement(StyledPluridToolbarRotate, {\n showTransformButtons: showTransformButtons\n }, showTransformButtons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"left\",\n transform: () => rotateRight()\n }), React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"up\",\n transform: () => rotateUp()\n })), React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: interactionTheme,\n onClick: () => toggleTransform(pluridData.TRANSFORM_MODES.ROTATION),\n active: transformMode === pluridData.TRANSFORM_MODES.ROTATION,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons,\n button: showIcons\n }, showIcons ? React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconRotate, null)) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarTransformRotate))), showTransformButtons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"down\",\n transform: () => rotateDown()\n }), React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"right\",\n transform: () => rotateLeft()\n })));\n};\n\nconst mapStateToProps$4 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$4 = dispatch => ({\n rotateUp: () => dispatch(actions.space.rotateUp()),\n rotateDown: () => dispatch(actions.space.rotateDown()),\n rotateLeft: () => dispatch(actions.space.rotateLeft()),\n rotateRight: () => dispatch(actions.space.rotateRight())\n});\n\nconst ConnectedPluridToolbarRotate = reactRedux.connect(mapStateToProps$4, mapDispatchToProps$4, null, {\n context: StateContext\n})(PluridToolbarRotate);\n\nconst StyledPluridToolbarScale = styled__default[\"default\"].div`\n display: grid;\n align-items: center;\n justify-items: center;\n grid-template-columns: ${props => {\n if (!props.showTransformButtons) {\n return \"1fr\";\n }\n return \"30px 60px 30px\";\n}};\n`;\n\nconst PluridToolbarScale = properties => {\n const {showTransformButtons: showTransformButtons, showIcons: showIcons, transformMode: transformMode, toggleTransform: toggleTransform, stateLanguage: stateLanguage, interactionTheme: interactionTheme, scaleUp: scaleUp, scaleDown: scaleDown} = properties;\n return React__default[\"default\"].createElement(StyledPluridToolbarScale, {\n showTransformButtons: showTransformButtons\n }, showTransformButtons && React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"up\",\n transform: () => scaleUp()\n }), React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: interactionTheme,\n onClick: () => toggleTransform(pluridData.TRANSFORM_MODES.SCALE),\n active: transformMode === pluridData.TRANSFORM_MODES.SCALE,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons,\n button: showIcons\n }, showIcons ? React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconScale, null)) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarTransformScale))), showTransformButtons && React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"down\",\n transform: () => scaleDown()\n }));\n};\n\nconst mapStateToProps$3 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$3 = dispatch => ({\n scaleUp: () => dispatch(actions.space.scaleUp()),\n scaleDown: () => dispatch(actions.space.scaleDown())\n});\n\nconst ConnectedPluridToolbarScale = reactRedux.connect(mapStateToProps$3, mapDispatchToProps$3, null, {\n context: StateContext\n})(PluridToolbarScale);\n\nconst StyledPluridToolbarTranslate = styled__default[\"default\"].div`\n display: grid;\n align-items: center;\n justify-items: center;\n grid-template-columns: ${props => {\n if (!props.showTransformButtons) {\n return \"1fr\";\n }\n return \"30px 30px 60px 30px 30px\";\n}};\n`;\n\nconst PluridToolbarTranslate = properties => {\n const {showTransformButtons: showTransformButtons, showIcons: showIcons, transformMode: transformMode, toggleTransform: toggleTransform, stateLanguage: stateLanguage, interactionTheme: interactionTheme, translateUp: translateUp, translateDown: translateDown, translateLeft: translateLeft, translateRight: translateRight} = properties;\n return React__default[\"default\"].createElement(StyledPluridToolbarTranslate, {\n showTransformButtons: showTransformButtons\n }, showTransformButtons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"left\",\n transform: () => translateLeft()\n }), React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"up\",\n transform: () => translateUp()\n })), React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: interactionTheme,\n onClick: () => toggleTransform(pluridData.TRANSFORM_MODES.TRANSLATION),\n active: transformMode === pluridData.TRANSFORM_MODES.TRANSLATION,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons,\n button: showIcons\n }, showIcons ? React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconTranslate, null)) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarTransformTranslate))), showTransformButtons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"down\",\n transform: () => translateDown()\n }), React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"right\",\n transform: () => translateRight()\n })));\n};\n\nconst mapStateToProperties$c = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$c = dispatch => ({\n translateUp: () => dispatch(actions.space.translateUp()),\n translateDown: () => dispatch(actions.space.translateDown()),\n translateLeft: () => dispatch(actions.space.translateLeft()),\n translateRight: () => dispatch(actions.space.translateRight())\n});\n\nconst ConnectedPluridToolbarTranslate = reactRedux.connect(mapStateToProperties$c, mapDispatchToProperties$c, null, {\n context: StateContext\n})(PluridToolbarTranslate);\n\nconst PluridToolbar = properties => {\n const {theme: theme, configuration: configuration, viewSize: viewSize, dispatchToggleConfigurationSpaceFirstPerson: dispatchToggleConfigurationSpaceFirstPerson, dispatchSetConfigurationSpaceTransformMode: dispatchSetConfigurationSpaceTransformMode} = properties;\n const {global: global, elements: elements, space: space} = configuration;\n const {transparentUI: transparentUI} = global;\n const {firstPerson: firstPerson, transformMode: transformMode, fadeInTime: fadeInTime} = space;\n const {toolbar: toolbar} = elements;\n const {conceal: conceal, opaque: opaque, transformIcons: transformIcons, transformButtons: transformButtons} = toolbar;\n const showToolbar = toolbar.show;\n const menuTimeout = React.useRef(null);\n const [mouseIn, setMouseIn] = React.useState(false);\n const [showMenu, setShowMenu] = React.useState(MENUS.NONE);\n const [showIcons, setShowIcons] = React.useState(transformIcons);\n const [showTransformButtons, setShowTransformButtons] = React.useState(transformButtons);\n const [isMounted, setIsMounted] = React.useState(false);\n const toggleTransform = TYPE => {\n if (showMenu !== MENUS.NONE) {\n setShowMenu(MENUS.NONE);\n }\n dispatchSetConfigurationSpaceTransformMode(TYPE);\n };\n const handleShowMenu = menu => {\n if (showMenu === menu) {\n setShowMenu(MENUS.NONE);\n } else {\n dispatchSetConfigurationSpaceTransformMode(pluridData.TRANSFORM_MODES.ALL);\n setShowMenu(menu);\n }\n };\n React.useEffect((() => {\n setIsMounted(true);\n }), []);\n React.useEffect((() => {\n if (viewSize.width < VIEW_SIZE_WIDTH_LIMIT) {\n if (transformButtons) {\n setShowTransformButtons(false);\n }\n }\n if (viewSize.width > VIEW_SIZE_WIDTH_LIMIT) {\n setShowTransformButtons(transformButtons);\n }\n }), [ viewSize.width ]);\n React.useEffect((() => {\n setShowIcons(transformIcons);\n setShowTransformButtons(transformButtons);\n }), [ transformIcons, transformButtons ]);\n React.useEffect((() => {\n if (mouseIn && menuTimeout.current) {\n clearTimeout(menuTimeout.current);\n }\n if (!mouseIn) {\n menuTimeout.current = setTimeout((() => {\n setShowMenu(MENUS.NONE);\n }), 400);\n }\n return () => {\n if (menuTimeout.current) {\n clearTimeout(menuTimeout.current);\n }\n };\n }), [ mouseIn ]);\n if (!showToolbar) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledToolbar, {\n onMouseEnter: () => setMouseIn(true),\n onMouseLeave: () => setMouseIn(false),\n mouseIn: mouseIn,\n conceal: conceal,\n showMenu: showMenu,\n isMounted: isMounted,\n fadeInTime: fadeInTime,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_TOOLBAR\n }, React__default[\"default\"].createElement(StyledToolbarButtons, {\n theme: theme,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons,\n documentsBased: false,\n mouseIn: mouseIn,\n opaque: opaque,\n transparentUI: transparentUI\n }, React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: theme,\n onClick: () => dispatchToggleConfigurationSpaceFirstPerson(),\n active: firstPerson,\n button: true,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons\n }, React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconFirstPerson, null))), React__default[\"default\"].createElement(ConnectedPluridToolbarRotate, {\n showTransformButtons: showTransformButtons,\n showIcons: showIcons,\n transformMode: transformMode,\n toggleTransform: toggleTransform\n }), React__default[\"default\"].createElement(ConnectedPluridToolbarScale, {\n showTransformButtons: showTransformButtons,\n showIcons: showIcons,\n transformMode: transformMode,\n toggleTransform: toggleTransform\n }), React__default[\"default\"].createElement(ConnectedPluridToolbarTranslate, {\n showTransformButtons: showTransformButtons,\n showIcons: showIcons,\n transformMode: transformMode,\n toggleTransform: toggleTransform\n }), React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: theme,\n onClick: () => handleShowMenu(MENUS.MORE),\n active: showMenu === MENUS.MORE,\n button: true,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons\n }, React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconMore, null)))), showMenu === MENUS.UNIVERSES && React__default[\"default\"].createElement(ConnectedPluridMenuUniverses, null), showMenu === MENUS.MORE && React__default[\"default\"].createElement(ConnectedPluridMoreMenu, null));\n};\n\nconst mapStateToProperties$b = state => ({\n configuration: selectors.configuration.getConfiguration(state),\n theme: selectors.themes.getInteractionTheme(state),\n viewSize: selectors.space.getViewSize(state)\n});\n\nconst mapDispatchToProperties$b = dispatch => ({\n dispatchToggleConfigurationSpaceFirstPerson: () => dispatch(actions.configuration.toggleConfigurationSpaceFirstPerson()),\n dispatchSetConfigurationSpaceTransformMode: mode => dispatch(actions.configuration.setConfigurationSpaceTransformMode(mode))\n});\n\nconst ConnectedPluridToolbar = reactRedux.connect(mapStateToProperties$b, mapDispatchToProperties$b, null, {\n context: StateContext\n})(PluridToolbar);\n\nconst StyledPluridViewcube = styled__default[\"default\"].div`\n position: absolute;\n @media (max-width: 800px) {\n top: ${({conceal: conceal, mouseOver: mouseOver}) => {\n if (conceal && !mouseOver) {\n return \"-90px\";\n }\n return \"0\";\n}};\n }\n bottom: ${({conceal: conceal, mouseOver: mouseOver}) => {\n if (conceal && !mouseOver) {\n return \"-90px\";\n }\n return \"0\";\n}};\n right: ${({conceal: conceal, mouseOver: mouseOver}) => {\n if (conceal && !mouseOver) {\n return \"-100px\";\n }\n return \"0\";\n}};\n position: absolute;\n user-select: none;\n transition: all 300ms ease-in-out;\n z-index: 9998;\n height: 165px;\n display: grid;\n grid-template-areas: \"PVScale PVScale PVScale PVScale\"\n \"PVEmptyOne PVRotateUp PVEmptyTwo PVTranslateY\"\n \"PVRotateLeft PVModel PVRotateRight PVTranslateY\"\n \"PVEmptyThree PVRotateDown PVFitview PVTranslateY\"\n \"PVTranslateX PVTranslateX PVTranslateX PVTranslateX\";\n grid-template-rows: 20px 15px 95px 15px 20px;\n grid-template-columns: 15px 115px 15px 20px;\n\n opacity: ${({fadeInTime: fadeInTime}) => {\n if (fadeInTime) {\n return \"0\";\n }\n return \"1\";\n}};\n animation: ${({fadeInTime: fadeInTime, isMounted: isMounted}) => {\n if (isMounted && fadeInTime) {\n return fadeInAnimation(fadeInTime);\n }\n return \"\";\n}};\n\n :hover {\n opacity: 1;\n }\n`;\n\nconst StyledPluridViewcubeArrow = styled__default[\"default\"].div`\n display: grid;\n place-content: center;\n\n /* TODO\n * Themed color\n */\n color: white;\n`;\n\nconst StyledPluridViewcubeArrowIcon = styled__default[\"default\"].div`\n user-select: none;\n font-size: 0.6rem;\n width: 1.2rem;\n height: 1.2rem;\n border-radius: 0.6rem;\n display: grid;\n place-content: center;\n cursor: pointer;\n\n :hover {\n background-color: ${({theme: theme}) => theme.backgroundColorTertiary};\n }\n`;\n\nconst StyledFitView = styled__default[\"default\"].div`\n grid-area: PVFitview;\n display: grid;\n place-content: center;\n cursor: pointer;\n user-select: none;\n\n svg {\n height: 0.8rem;\n width: 0.8rem;\n fill: white;\n }\n`;\n\nconst StyledPluridViewcubeFace = styled__default[\"default\"].div`\n font-size: 0.6rem;\n position: absolute;\n height: 50px;\n width: 50px;\n pointer-events: none;\n display: grid;\n transform-style: preserve-3d;\n grid-template-areas: \"PVFTopLeft PVFTopCenter PVFTopRight\"\n \"PVFMiddleLeft PVFMiddleCenter PVFMiddleRight\"\n \"PVFBottomLeft PVFBottomCenter PVFBottomRight\";\n grid-template-rows: 10px 30px 10px;\n grid-template-columns: 10px 30px 10px;\n box-sizing: content-box;\n transition: all 300ms linear;\n\n border: 1px solid ${({mouseOver: mouseOver, theme: theme}) => {\n if (mouseOver) {\n return theme.colorTertiary;\n }\n return theme.backgroundColorSecondary;\n}};\n box-shadow: ${({face: face, theme: theme}) => {\n if (face === \"base\") {\n return \"0px 0px 12px 2px \" + theme.boxShadowPenumbraColor;\n }\n return \"\";\n}};\n opacity: ${({opaque: opaque, mouseOver: mouseOver}) => {\n if (!opaque) {\n if (mouseOver) {\n return \"0.8\";\n }\n if (!mouseOver) {\n return \"0.4\";\n }\n }\n return \"1\";\n}};\n transform: ${({face: face}) => {\n switch (face) {\n case \"front\":\n return \"translateZ(25px) rotateY(0deg)\";\n\n case \"back\":\n return \"translateZ(-25px) rotateY(-180deg)\";\n\n case \"left\":\n return \"translateX(-25px) rotateY(-90deg)\";\n\n case \"right\":\n return \"translateX(25px) rotateY(90deg)\";\n\n case \"top\":\n return \"translateY(-25px) rotateX(90deg)\";\n\n case \"base\":\n return \"translateY(25px) rotateX(-90deg)\";\n }\n return \"\";\n}};\n`;\n\nconst StyledPluridViewcubeFaceZone = styled__default[\"default\"].div`\n display: grid;\n place-content: center;\n cursor: pointer;\n pointer-events: all;\n\n grid-area: ${({type: type}) => `PVF${type}`};\n color: ${({theme: theme, hovered: hovered}) => {\n if (hovered) {\n return theme.colorPrimary;\n }\n return theme.colorSecondary;\n}};\n background-color: ${({theme: theme, transparentUI: transparentUI, hovered: hovered, active: active}) => {\n if (transparentUI && !hovered) {\n return theme.backgroundColorPrimaryAlpha;\n }\n if (active) {\n return theme.backgroundColorTertiary;\n }\n if (hovered) {\n return theme.backgroundColorTertiary;\n }\n return theme.backgroundColorSecondary;\n}};\n border: 1px solid ${({theme: theme, transparentUI: transparentUI, hovered: hovered}) => {\n if (transparentUI && !hovered) {\n return \"transparent\";\n }\n if (hovered) {\n return theme.colorTertiary;\n }\n return theme.backgroundColorSecondary;\n}};\n\n :hover {\n background-color: ${({theme: theme}) => theme.backgroundColorTertiary};\n }\n`;\n\nconst faceTypes = {\n topLeft: \"TopLeft\",\n topCenter: \"TopCenter\",\n topRight: \"TopRight\",\n middleLeft: \"MiddleLeft\",\n middleCenter: \"MiddleCenter\",\n middleRight: \"MiddleRight\",\n bottomLeft: \"BottomLeft\",\n bottomCenter: \"BottomCenter\",\n bottomRight: \"BottomRight\"\n};\n\nconst zoneCodes = {\n frontTopLeft: \"A1\",\n frontTopCenter: \"A2\",\n frontTopRight: \"A3\",\n frontMiddleLeft: \"B1\",\n frontMiddleCenter: \"B2\",\n frontMiddleRight: \"B3\",\n frontBottomLeft: \"C1\",\n frontBottomCenter: \"C2\",\n frontBottomRight: \"C3\",\n rightTopLeft: \"A3\",\n rightTopCenter: \"A4\",\n rightTopRight: \"A5\",\n rightMiddleLeft: \"B3\",\n rightMiddleCenter: \"B4\",\n rightMiddleRight: \"B5\",\n rightBottomLeft: \"C3\",\n rightBottomCenter: \"C4\",\n rightBottomRight: \"C5\",\n backTopLeft: \"A5\",\n backTopCenter: \"A6\",\n backTopRight: \"A7\",\n backMiddleLeft: \"B5\",\n backMiddleCenter: \"B6\",\n backMiddleRight: \"B7\",\n backBottomLeft: \"C5\",\n backBottomCenter: \"C6\",\n backBottomRight: \"C7\",\n leftTopLeft: \"A7\",\n leftTopCenter: \"A8\",\n leftTopRight: \"A1\",\n leftMiddleLeft: \"B7\",\n leftMiddleCenter: \"B8\",\n leftMiddleRight: \"B1\",\n leftBottomLeft: \"C7\",\n leftBottomCenter: \"C8\",\n leftBottomRight: \"C1\",\n topTopLeft: \"A7\",\n topTopCenter: \"A6\",\n topTopRight: \"A5\",\n topMiddleLeft: \"A8\",\n topMiddleCenter: \"D1\",\n topMiddleRight: \"A4\",\n topBottomLeft: \"A1\",\n topBottomCenter: \"A2\",\n topBottomRight: \"A3\",\n baseTopLeft: \"C1\",\n baseTopCenter: \"C2\",\n baseTopRight: \"C3\",\n baseMiddleLeft: \"C8\",\n baseMiddleCenter: \"E1\",\n baseMiddleRight: \"C4\",\n baseBottomLeft: \"C7\",\n baseBottomCenter: \"C6\",\n baseBottomRight: \"C5\"\n};\n\nconst faceTransform = {\n A1: {\n rotateX: -45,\n rotateY: 45\n },\n A2: {\n rotateX: -45,\n rotateY: 0\n },\n A3: {\n rotateX: -45,\n rotateY: -45\n },\n B1: {\n rotateX: 0,\n rotateY: 45\n },\n B2: {\n rotateX: 0,\n rotateY: 0\n },\n B3: {\n rotateX: 0,\n rotateY: -45\n },\n C1: {\n rotateX: 45,\n rotateY: 45\n },\n C2: {\n rotateX: 45,\n rotateY: 0\n },\n C3: {\n rotateX: 45,\n rotateY: -45\n },\n A4: {\n rotateX: -45,\n rotateY: 270.1\n },\n A5: {\n rotateX: -45,\n rotateY: 225\n },\n B4: {\n rotateX: 0,\n rotateY: 270.1\n },\n B5: {\n rotateX: 0,\n rotateY: 225\n },\n C4: {\n rotateX: 45,\n rotateY: 270.1\n },\n C5: {\n rotateX: 45,\n rotateY: 225\n },\n A6: {\n rotateX: -45,\n rotateY: 180\n },\n A7: {\n rotateX: -45,\n rotateY: 135\n },\n B6: {\n rotateX: 0,\n rotateY: 180.1\n },\n B7: {\n rotateX: 0,\n rotateY: 135\n },\n C6: {\n rotateX: 45,\n rotateY: 180.1\n },\n C7: {\n rotateX: 45,\n rotateY: 135\n },\n A8: {\n rotateX: -45,\n rotateY: 90.1\n },\n B8: {\n rotateX: 0,\n rotateY: 90.1\n },\n C8: {\n rotateX: 45,\n rotateY: 90.1\n },\n D1: {\n rotateX: -90.1,\n rotateY: 0\n },\n E1: {\n rotateX: 90.1,\n rotateY: 0\n }\n};\n\nconst PluridViewcubeFace = properties => {\n const {face: face, faceText: faceText, mouseOver: mouseOver, hoveredZone: hoveredZone, setHoveredZone: setHoveredZone, activeZone: activeZone, setActiveZone: setActiveZone, generalTheme: generalTheme, interactionTheme: interactionTheme, configuration: configuration, dispatchRotateX: dispatchRotateX, dispatchRotateY: dispatchRotateY, dispatchSetAnimatedTransform: dispatchSetAnimatedTransform} = properties;\n const {global: global, elements: elements} = configuration;\n const {transparentUI: transparentUI} = global;\n const opaqueFace = elements.viewcube.opaque;\n const handleClick = type => {\n const faceType = `${face}${type}`;\n const zoneCode = zoneCodes[faceType];\n const transform = faceTransform[zoneCode];\n setActiveZone(zoneCode);\n dispatchSetAnimatedTransform(true);\n dispatchRotateX(transform.rotateX);\n dispatchRotateY(transform.rotateY);\n setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), 450);\n };\n return React__default[\"default\"].createElement(StyledPluridViewcubeFace, {\n theme: generalTheme,\n face: face,\n opaque: opaqueFace,\n mouseOver: mouseOver\n }, React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.topLeft,\n active: activeZone === zoneCodes[`${face}${faceTypes.topLeft}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.topLeft}`],\n onClick: () => handleClick(faceTypes.topLeft),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.topLeft}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.topCenter,\n active: activeZone === zoneCodes[`${face}${faceTypes.topCenter}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.topCenter}`],\n onClick: () => handleClick(faceTypes.topCenter),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.topCenter}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.topRight,\n active: activeZone === zoneCodes[`${face}${faceTypes.topRight}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.topRight}`],\n onClick: () => handleClick(faceTypes.topRight),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.topRight}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.middleLeft,\n active: activeZone === zoneCodes[`${face}${faceTypes.middleLeft}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.middleLeft}`],\n onClick: () => handleClick(faceTypes.middleLeft),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.middleLeft}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.middleCenter,\n active: activeZone === zoneCodes[`${face}${faceTypes.middleCenter}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.middleCenter}`],\n onClick: () => handleClick(faceTypes.middleCenter),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.middleCenter}`]),\n transparentUI: transparentUI\n }, faceText), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.middleRight,\n active: activeZone === zoneCodes[`${face}${faceTypes.middleRight}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.middleRight}`],\n onClick: () => handleClick(faceTypes.middleRight),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.middleRight}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.bottomLeft,\n active: activeZone === zoneCodes[`${face}${faceTypes.bottomLeft}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.bottomLeft}`],\n onClick: () => handleClick(faceTypes.bottomLeft),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.bottomLeft}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.bottomCenter,\n active: activeZone === zoneCodes[`${face}${faceTypes.bottomCenter}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.bottomCenter}`],\n onClick: () => handleClick(faceTypes.bottomCenter),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.bottomCenter}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.bottomRight,\n active: activeZone === zoneCodes[`${face}${faceTypes.bottomRight}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.bottomRight}`],\n onClick: () => handleClick(faceTypes.bottomRight),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.bottomRight}`]),\n transparentUI: transparentUI\n }));\n};\n\nconst mapStateToProperties$a = state => ({\n generalTheme: selectors.themes.getGeneralTheme(state),\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProperties$a = dispatch => ({\n dispatchRotateX: angleX => dispatch(actions.space.rotateX(angleX)),\n dispatchRotateY: angleY => dispatch(actions.space.rotateY(angleY)),\n dispatchSetAnimatedTransform: animated => dispatch(actions.space.setAnimatedTransform(animated))\n});\n\nconst ConnectedPluridViewcubeFace = reactRedux.connect(mapStateToProperties$a, mapDispatchToProperties$a, null, {\n context: StateContext\n})(PluridViewcubeFace);\n\nconst StyledPluridViewcubeModel = styled__default[\"default\"].div`\n grid-area: PVModel;\n`;\n\nconst StyledPluridViewcubeModelContainer = styled__default[\"default\"].div`\n perspective: 2000px;\n perspective-origin: 50% 50%;\n`;\n\nconst StyledPluridViewcubeModelCube = styled__default[\"default\"].div`\n transform-style: preserve-3d;\n width: 50px;\n height: 50px;\n`;\n\nconst {matrixArrayToCSSMatrix: matrixArrayToCSSMatrix, rotateMatrix: rotateMatrix, multiplyArrayOfMatrices: multiplyArrayOfMatrices, scaleMatrix: scaleMatrix, translateMatrix: translateMatrix$1} = pluridEngine.interaction.matrix;\n\nconst {degToRad: degToRad$1} = pluridEngine.interaction.quaternion;\n\nconst PluridViewcubeModel = properties => {\n const {mouseOver: mouseOver, stateLanguage: stateLanguage, spaceRotationX: spaceRotationX, spaceRotationY: spaceRotationY, stateAnimatedTransform: stateAnimatedTransform, stateTransformTime: stateTransformTime} = properties;\n const [hoveredZone, setHoveredZone] = React.useState(\"\");\n const [activeZone, setActiveZone] = React.useState(\"\");\n const handleMouseLeave = () => {\n setHoveredZone(\"\");\n };\n const computeTransform = () => {\n const offsets = {\n x: 32,\n y: 23,\n z: 0\n };\n const transformOrigins = {\n x: 0,\n y: 0,\n z: 0\n };\n const scale = 1;\n const rotationMatrix = rotateMatrix(degToRad$1(-spaceRotationX), degToRad$1(-spaceRotationY));\n const translationMatrix = translateMatrix$1(offsets.x, offsets.y, offsets.z);\n const scalationMatrix = scaleMatrix(scale);\n const transformMatrix = multiplyArrayOfMatrices([ translationMatrix, multiplyArrayOfMatrices([ translateMatrix$1(transformOrigins.x, transformOrigins.y, transformOrigins.z), rotationMatrix, translateMatrix$1(-transformOrigins.x, -transformOrigins.y, -transformOrigins.z) ]), scalationMatrix ]);\n const transform = matrixArrayToCSSMatrix(transformMatrix);\n return transform;\n };\n React.useEffect((() => {\n if (!hoveredZone) {\n setActiveZone(\"\");\n }\n }), [ spaceRotationX, spaceRotationY ]);\n const transform = computeTransform();\n return React__default[\"default\"].createElement(StyledPluridViewcubeModel, null, React__default[\"default\"].createElement(StyledPluridViewcubeModelContainer, null, React__default[\"default\"].createElement(StyledPluridViewcubeModelCube, {\n suppressHydrationWarning: true,\n style: {\n transform: transform,\n transition: mouseOver || stateAnimatedTransform ? `transform ${stateTransformTime}ms ease-in-out` : \"\"\n },\n onMouseLeave: () => handleMouseLeave()\n }, React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"front\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeFront),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"back\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeBack),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"left\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeLeft),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"right\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeRight),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"top\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeTop),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"base\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeBase),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }))));\n};\n\nconst mapStateToProperties$9 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n spaceRotationX: selectors.space.getRotationX(state),\n spaceRotationY: selectors.space.getRotationY(state),\n stateAnimatedTransform: selectors.space.getAnimatedTransform(state),\n stateTransformTime: selectors.space.getTransformTime(state)\n});\n\nconst mapDispatchToProperties$9 = dispatch => ({});\n\nconst ConnectedPluridViewcubeModel = reactRedux.connect(mapStateToProperties$9, mapDispatchToProperties$9, null, {\n context: StateContext\n})(PluridViewcubeModel);\n\nconst PluridViewcube = properties => {\n const {stateConfiguration: stateConfiguration, stateInteractionTheme: stateInteractionTheme, stateTransformTime: stateTransformTime, dispatchRotateXWith: dispatchRotateXWith, dispatchRotateYWith: dispatchRotateYWith, dispatchSetAnimatedTransform: dispatchSetAnimatedTransform, dispatchSpaceResetTransform: dispatchSpaceResetTransform} = properties;\n const {elements: elements, space: space} = stateConfiguration;\n const {viewcube: viewcube} = elements;\n const {buttons: buttons, conceal: conceal} = viewcube;\n const {fadeInTime: fadeInTime} = space;\n const showViewcube = viewcube.show;\n const [mouseOver, setMouseOver] = React.useState(false);\n const [isMounted, setIsMounted] = React.useState(false);\n const animatedRotate = (type, value) => {\n dispatchSetAnimatedTransform(true);\n switch (type) {\n case \"rotateX\":\n dispatchRotateXWith(value);\n break;\n\n case \"rotateY\":\n dispatchRotateYWith(value);\n break;\n }\n setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), stateTransformTime);\n };\n const animatedReset = event => {\n if (event.ctrlKey || event.metaKey) {\n return;\n }\n dispatchSetAnimatedTransform(true);\n dispatchSpaceResetTransform();\n setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), stateTransformTime);\n };\n React.useEffect((() => {\n setIsMounted(true);\n }), []);\n if (!showViewcube) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledPluridViewcube, {\n onMouseEnter: () => setMouseOver(true),\n onMouseLeave: () => setMouseOver(false),\n onMouseMove: () => !mouseOver ? setMouseOver(true) : null,\n conceal: conceal,\n mouseOver: mouseOver,\n isMounted: isMounted,\n fadeInTime: fadeInTime,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_VIEWCUBE\n }, React__default[\"default\"].createElement(ConnectedPluridViewcubeModel, {\n mouseOver: mouseOver\n }), mouseOver && buttons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridViewcubeArrow, {\n style: {\n gridArea: \"PVRotateUp\"\n }\n }, React__default[\"default\"].createElement(StyledPluridViewcubeArrowIcon, {\n theme: stateInteractionTheme,\n onClick: () => animatedRotate(\"rotateX\", -90.1)\n }, \"▲\")), React__default[\"default\"].createElement(StyledPluridViewcubeArrow, {\n theme: stateInteractionTheme,\n style: {\n gridArea: \"PVRotateDown\"\n }\n }, React__default[\"default\"].createElement(StyledPluridViewcubeArrowIcon, {\n theme: stateInteractionTheme,\n onClick: () => animatedRotate(\"rotateX\", 90.1)\n }, \"▼\")), React__default[\"default\"].createElement(StyledPluridViewcubeArrow, {\n theme: stateInteractionTheme,\n style: {\n gridArea: \"PVRotateLeft\"\n }\n }, React__default[\"default\"].createElement(StyledPluridViewcubeArrowIcon, {\n theme: stateInteractionTheme,\n onClick: () => animatedRotate(\"rotateY\", 90.1)\n }, \"◀\")), React__default[\"default\"].createElement(StyledPluridViewcubeArrow, {\n theme: stateInteractionTheme,\n style: {\n gridArea: \"PVRotateRight\"\n }\n }, React__default[\"default\"].createElement(StyledPluridViewcubeArrowIcon, {\n theme: stateInteractionTheme,\n onClick: () => animatedRotate(\"rotateY\", -90.1)\n }, \"▶\")), React__default[\"default\"].createElement(StyledFitView, {\n onClick: animatedReset\n }, React__default[\"default\"].createElement(pluridIconsReact.PluridIconGlobal, null))));\n};\n\nconst mapStateToProperties$8 = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state),\n stateTransformTime: selectors.space.getTransformTime(state)\n});\n\nconst mapDispatchToProperties$8 = dispatch => ({\n dispatchRotateXWith: value => dispatch(actions.space.rotateXWith(value)),\n dispatchRotateYWith: value => dispatch(actions.space.rotateYWith(value)),\n dispatchSetAnimatedTransform: animated => dispatch(actions.space.setAnimatedTransform(animated)),\n dispatchSpaceResetTransform: () => dispatch(actions.space.spaceResetTransform())\n});\n\nconst ConnectedPluridViewcube = reactRedux.connect(mapStateToProperties$8, mapDispatchToProperties$8, null, {\n context: StateContext\n})(PluridViewcube);\n\nconst PluridPlanesView = properties => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridSpace, null), React__default[\"default\"].createElement(ConnectedOrigin, null), React__default[\"default\"].createElement(ConnectedPluridToolbar, null), React__default[\"default\"].createElement(ConnectedPluridViewcube, null));\n\nconst mapStateToProps$2 = state => ({});\n\nconst mapDispatchToProps$2 = dispatch => ({});\n\nconst ConnectedPluridPlanesView = reactRedux.connect(mapStateToProps$2, mapDispatchToProps$2, null, {\n context: StateContext\n})(PluridPlanesView);\n\nconst handleView = view => {\n if (view.length === 0) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(ConnectedPluridPlanesView, null);\n};\n\nconst {getRegisteredPlanes: getRegisteredPlanes} = pluridEngine.planes;\n\nconst PluridView = properties => {\n const {planesRegistrar: planesRegistrar, customPlane: customPlane, planeContext: planeContext, planeContextValue: planeContextValue, pubsub: pubsub, planeNotFound: planeNotFound, planeRenderError: planeRenderError, matchedRoute: matchedRoute, stateConfiguration: stateConfiguration, stateTransform: stateTransform, stateSpaceView: stateSpaceView, stateTree: stateTree, dispatch: dispatch, dispatchSetConfiguration: dispatchSetConfiguration, dispatchSetGeneralTheme: dispatchSetGeneralTheme, dispatchSetInteractionTheme: dispatchSetInteractionTheme, dispatchSetSpaceLocation: dispatchSetSpaceLocation, dispatchSetAnimatedTransform: dispatchSetAnimatedTransform, dispatchSetTransformTime: dispatchSetTransformTime, dispatchSetTree: dispatchSetTree, dispatchRotateXWith: dispatchRotateXWith, dispatchRotateX: dispatchRotateX, dispatchRotateYWith: dispatchRotateYWith, dispatchRotateY: dispatchRotateY, dispatchTranslateXWith: dispatchTranslateXWith, dispatchTranslateYWith: dispatchTranslateYWith, dispatchScaleUpWith: dispatchScaleUpWith, dispatchScaleDownWith: dispatchScaleDownWith, dispatchSpaceSetViewSize: dispatchSpaceSetViewSize, dispatchSpaceSetView: dispatchSpaceSetView} = properties;\n const viewElement = React.useRef(null);\n const [pluridPubSub, setPluridPubSub] = React.useState(pubsub ? [ pubsub ] : []);\n const shortcutsCallback = React.useCallback((event => {\n const {transformLocks: transformLocks} = stateConfiguration.space;\n handleGlobalShortcuts(dispatch, event, stateConfiguration.space.firstPerson, transformLocks);\n }), [ stateConfiguration.space.firstPerson, stateConfiguration.space.transformLocks, dispatch ]);\n const wheelCallback = React.useCallback((event => {\n const {transformMode: transformMode, transformLocks: transformLocks} = stateConfiguration.space;\n const transformModes = {\n rotation: transformMode === pluridData.TRANSFORM_MODES.ROTATION,\n translation: transformMode === pluridData.TRANSFORM_MODES.TRANSLATION,\n scale: transformMode === pluridData.TRANSFORM_MODES.SCALE\n };\n handleGlobalWheel(dispatch, event, transformModes, transformLocks);\n }), [ dispatch, stateConfiguration.space.transformMode, stateConfiguration.space.transformLocks ]);\n const treeUpdate = (view, configuration = stateConfiguration) => {\n const planes = getRegisteredPlanes(planesRegistrar);\n const spaceTree = new pluridEngine.space.tree.Tree({\n planes: planes,\n configuration: configuration,\n view: view\n });\n const computedTree = spaceTree.compute();\n for (const statePlane of stateTree) {\n for (const [index, computedPlane] of computedTree.entries()) {\n if (statePlane.route === computedPlane.route) {\n if (statePlane.children) {\n computedTree[index].children = statePlane.children;\n }\n }\n }\n }\n dispatchSetTree(computedTree);\n };\n const treeUpdateCallback = React.useCallback((() => {\n treeUpdate(stateSpaceView);\n }), [ stateSpaceView, stateConfiguration ]);\n const handlePubSubSubscribe = pubsub => {\n const configurationIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.CONFIGURATION,\n callback: data => {\n if (data.internal) {\n return;\n }\n const computedConfiguration = pluridEngine.general.configuration.merge(data, stateConfiguration);\n if (typeof computedConfiguration.global.theme === \"object\") {\n if (typeof computedConfiguration.global.theme.general === \"string\") {\n dispatchSetGeneralTheme(themes__default[\"default\"][computedConfiguration.global.theme.general]);\n } else {\n dispatchSetGeneralTheme(computedConfiguration.global.theme.general);\n }\n if (typeof computedConfiguration.global.theme.interaction === \"string\") {\n dispatchSetInteractionTheme(themes__default[\"default\"][computedConfiguration.global.theme.interaction]);\n } else {\n dispatchSetInteractionTheme(computedConfiguration.global.theme.interaction);\n }\n } else if (typeof computedConfiguration.global.theme === \"string\") {\n dispatchSetGeneralTheme(themes__default[\"default\"][computedConfiguration.global.theme]);\n dispatchSetInteractionTheme(themes__default[\"default\"][computedConfiguration.global.theme]);\n }\n dispatchSetConfiguration(computedConfiguration);\n }\n });\n const spaceTransformIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSFORM,\n callback: data => {\n const {value: value, internal: internal} = data;\n if (internal) {\n return;\n }\n dispatchSetSpaceLocation(value);\n }\n });\n const spaceAnimatedTransformIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ANIMATED_TRANSFORM,\n callback: data => {\n const {value: value} = data;\n dispatchSetAnimatedTransform(value.active);\n if (value.time) {\n dispatchSetTransformTime(value.time);\n } else {\n dispatchSetTransformTime(450);\n }\n }\n });\n const spaceRotateXWithIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_X_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchRotateXWith(value);\n }\n });\n const spaceRotateXToIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_X_TO,\n callback: data => {\n const {value: value} = data;\n dispatchRotateX(value);\n }\n });\n const spaceRotateYWithIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_Y_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchRotateYWith(value);\n }\n });\n const spaceRotateYToIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_Y_TO,\n callback: data => {\n const {value: value} = data;\n dispatchRotateY(value);\n }\n });\n const spaceTranslateXWithIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_X_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchTranslateXWith(value);\n }\n });\n const spaceTranslateYWithIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_Y_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchTranslateYWith(value);\n }\n });\n const viewAddPlaneIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.VIEW_ADD_PLANE,\n callback: data => {\n const {plane: plane} = data;\n const updatedView = [ ...stateSpaceView, plane ];\n dispatchSpaceSetView(updatedView);\n treeUpdate(updatedView);\n }\n });\n const viewSetPlanesIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.VIEW_SET_PLANES,\n callback: data => {\n const {view: view} = data;\n dispatchSpaceSetView([ ...view ]);\n treeUpdate(view);\n }\n });\n const viewRemovePlaneIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.VIEW_REMOVE_PLANE,\n callback: data => {\n const {plane: plane} = data;\n const updatedView = stateSpaceView.filter((view => {\n if (typeof view === \"string\") {\n return view === plane;\n }\n return true;\n }));\n dispatchSpaceSetView(updatedView);\n treeUpdate(updatedView);\n }\n });\n return () => {\n pubsub.unsubscribe(configurationIndex, pluridData.PLURID_PUBSUB_TOPIC.CONFIGURATION);\n pubsub.unsubscribe(spaceTransformIndex, pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSFORM);\n pubsub.unsubscribe(spaceAnimatedTransformIndex, pluridData.PLURID_PUBSUB_TOPIC.SPACE_ANIMATED_TRANSFORM);\n pubsub.unsubscribe(spaceRotateXWithIndex, pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_X_WITH);\n pubsub.unsubscribe(spaceRotateXToIndex, pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_X_TO);\n pubsub.unsubscribe(spaceRotateYWithIndex, pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_Y_WITH);\n pubsub.unsubscribe(spaceRotateYToIndex, pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_Y_TO);\n pubsub.unsubscribe(spaceTranslateXWithIndex, pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_X_WITH);\n pubsub.unsubscribe(spaceTranslateYWithIndex, pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_Y_WITH);\n pubsub.unsubscribe(viewAddPlaneIndex, pluridData.PLURID_PUBSUB_TOPIC.VIEW_ADD_PLANE);\n pubsub.unsubscribe(viewSetPlanesIndex, pluridData.PLURID_PUBSUB_TOPIC.VIEW_SET_PLANES);\n pubsub.unsubscribe(viewRemovePlaneIndex, pluridData.PLURID_PUBSUB_TOPIC.VIEW_REMOVE_PLANE);\n };\n };\n const handlePubSubPublish = pubsub => {\n const internalTransform = {\n value: Object.assign({}, stateTransform),\n internal: true\n };\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSFORM,\n data: internalTransform\n });\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.CONFIGURATION,\n data: Object.assign(Object.assign({}, stateConfiguration), {\n internal: true\n })\n });\n };\n const registerPubSub = pubsub => {\n const pluridPubSubs = [ ...pluridPubSub, pubsub ];\n setPluridPubSub(pluridPubSubs);\n };\n const handleSwipe = event => {\n const {transformMode: transformMode} = stateConfiguration.space;\n if (transformMode === pluridData.TRANSFORM_MODES.ALL) {\n return;\n }\n const {velocity: velocity, distance: distance, direction: direction} = event;\n const rotationMode = transformMode === pluridData.TRANSFORM_MODES.ROTATION;\n const translationMode = transformMode === pluridData.TRANSFORM_MODES.TRANSLATION;\n const scalationMode = transformMode === pluridData.TRANSFORM_MODES.SCALE;\n dispatchSetAnimatedTransform(true);\n switch (direction) {\n case 2:\n if (rotationMode) {\n dispatchRotateYWith(velocity * 60);\n }\n if (translationMode) {\n dispatchTranslateXWith(-1 * distance);\n }\n break;\n\n case 4:\n if (rotationMode) {\n dispatchRotateYWith(velocity * 60);\n }\n if (translationMode) {\n dispatchTranslateXWith(distance);\n }\n break;\n\n case 8:\n if (rotationMode) {\n dispatchRotateXWith(velocity * 60);\n }\n if (translationMode) {\n dispatchTranslateYWith(-1 * distance);\n }\n if (scalationMode) {\n dispatchScaleUpWith(velocity);\n }\n break;\n\n case 16:\n if (rotationMode) {\n dispatchRotateXWith(velocity * 60);\n }\n if (translationMode) {\n dispatchTranslateYWith(distance);\n }\n if (scalationMode) {\n dispatchScaleDownWith(velocity);\n }\n break;\n }\n setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), 450);\n };\n const handlePan = event => {\n const {transformMode: transformMode} = stateConfiguration.space;\n if (transformMode === pluridData.TRANSFORM_MODES.ALL) {\n return;\n }\n const {velocity: velocity, distance: distance, direction: direction} = event;\n const rotationMode = transformMode === pluridData.TRANSFORM_MODES.ROTATION;\n const translationMode = transformMode === pluridData.TRANSFORM_MODES.TRANSLATION;\n const scalationMode = transformMode === pluridData.TRANSFORM_MODES.SCALE;\n const rotationVelocity = velocity * 20;\n const translationVelocity = distance / 5;\n const scaleVelocity = velocity / 4;\n switch (direction) {\n case 2:\n if (rotationMode) {\n dispatchRotateYWith(rotationVelocity);\n }\n if (translationMode) {\n dispatchTranslateXWith(-1 * translationVelocity);\n }\n break;\n\n case 4:\n if (rotationMode) {\n dispatchRotateYWith(rotationVelocity);\n }\n if (translationMode) {\n dispatchTranslateXWith(translationVelocity);\n }\n break;\n\n case 8:\n if (rotationMode) {\n dispatchRotateXWith(rotationVelocity);\n }\n if (translationMode) {\n dispatchTranslateYWith(-1 * translationVelocity);\n }\n if (scalationMode) {\n dispatchScaleUpWith(scaleVelocity);\n }\n break;\n\n case 16:\n if (rotationMode) {\n dispatchRotateXWith(rotationVelocity);\n }\n if (translationMode) {\n dispatchTranslateYWith(translationVelocity);\n }\n if (scalationMode) {\n dispatchScaleDownWith(scaleVelocity);\n }\n break;\n }\n };\n React.useEffect((() => {\n if (viewElement.current) {\n viewElement.current.addEventListener(\"keydown\", shortcutsCallback, {\n passive: false\n });\n viewElement.current.addEventListener(\"wheel\", wheelCallback, {\n passive: false\n });\n }\n return () => {\n if (viewElement.current) {\n viewElement.current.removeEventListener(\"keydown\", shortcutsCallback);\n viewElement.current.removeEventListener(\"wheel\", wheelCallback);\n }\n };\n }), [ viewElement.current, stateConfiguration.space.transformMode, stateConfiguration.space.firstPerson ]);\n React.useEffect((() => {\n const handleResize = pluridFunctions.meta.debounce((() => {\n if (viewElement && viewElement.current) {\n const width = viewElement.current.offsetWidth;\n const height = viewElement.current.offsetHeight;\n dispatchSpaceSetViewSize({\n width: width,\n height: height\n });\n }\n }), 150);\n handleResize();\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }), []);\n React.useEffect((() => {\n window.addEventListener(\"resize\", treeUpdateCallback);\n return () => {\n window.removeEventListener(\"resize\", treeUpdateCallback);\n };\n }), [ stateSpaceView, stateConfiguration ]);\n React.useEffect((() => {\n if (typeof window === \"undefined\") {\n return;\n }\n let touch;\n const handleTouch = () => __awaiter(void 0, void 0, void 0, (function*() {\n const HammerImport = yield loadHammer();\n const Hammer = HammerImport.default;\n const {transformTouch: transformTouch} = stateConfiguration.space;\n delete Hammer.defaults.cssProps.userSelect;\n delete Hammer.defaults.cssProps.userDrag;\n delete Hammer.defaults.cssProps.tapHighlightColor;\n delete Hammer.defaults.cssProps.touchSelect;\n if (!viewElement.current) {\n return;\n }\n touch = new Hammer(viewElement.current);\n touch.get(\"pan\").set({\n direction: Hammer.DIRECTION_ALL\n });\n touch.get(\"swipe\").set({\n direction: Hammer.DIRECTION_ALL\n });\n if (transformTouch === pluridData.TRANSFORM_TOUCHES.PAN) {\n touch.on(\"pan\", handlePan);\n } else {\n touch.on(\"swipe\", handleSwipe);\n }\n }));\n handleTouch();\n return () => {\n if (!touch) {\n return;\n }\n const {transformTouch: transformTouch} = stateConfiguration.space;\n if (transformTouch === pluridData.TRANSFORM_TOUCHES.PAN) {\n touch.off(\"pan\", handlePan);\n } else {\n touch.off(\"swipe\", handleSwipe);\n }\n };\n }), [ viewElement.current, stateConfiguration.space.transformTouch, stateConfiguration.space.transformMode ]);\n React.useEffect((() => {\n const handleGamepadConnect = event => {\n const gamepad = navigator.getGamepads()[event.gamepad.index];\n if (!gamepad) {\n return;\n }\n };\n const handleGamepadDisconnect = event => {\n const gamepad = navigator.getGamepads()[event.gamepad.index];\n if (!gamepad) {\n return;\n }\n };\n window.addEventListener(\"gamepadconnected\", handleGamepadConnect);\n window.addEventListener(\"gamepaddisconnected\", handleGamepadDisconnect);\n return () => {\n window.removeEventListener(\"gamepadconnected\", handleGamepadConnect);\n window.removeEventListener(\"gamepaddisconnected\", handleGamepadDisconnect);\n };\n }), []);\n React.useEffect((() => {\n const unsubscribers = [];\n for (const pubsub of pluridPubSub) {\n const unsubscriber = handlePubSubSubscribe(pubsub);\n unsubscribers.push(unsubscriber);\n }\n return () => {\n for (const unsubscriber of unsubscribers) {\n unsubscriber();\n }\n };\n }), [ pluridPubSub.length ]);\n React.useEffect((() => {\n for (const pubsub of pluridPubSub) {\n handlePubSubPublish(pubsub);\n }\n }), [ pluridPubSub.length, stateConfiguration, stateTransform ]);\n React.useEffect((() => {\n treeUpdateCallback();\n }), []);\n const pluridContext = {\n planesRegistrar: planesRegistrar,\n planeContext: planeContext,\n planeContextValue: planeContextValue,\n customPlane: customPlane,\n planeNotFound: planeNotFound,\n planeRenderError: planeRenderError,\n matchedRoute: matchedRoute,\n registerPubSub: registerPubSub\n };\n const viewContainer = handleView(stateSpaceView);\n return React__default[\"default\"].createElement(StyledView, {\n ref: viewElement,\n tabIndex: 0,\n transformMode: stateConfiguration.space.transformMode,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_VIEW\n }, React__default[\"default\"].createElement(GlobalStyle, null), React__default[\"default\"].createElement(Context.Provider, {\n value: pluridContext\n }, viewContainer));\n};\n\nconst mapStateToProperties$7 = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateTransform: selectors.space.getTransform(state),\n stateTree: selectors.space.getTree(state),\n stateSpaceLoading: selectors.space.getLoading(state),\n stateSpaceView: selectors.space.getView(state)\n});\n\nconst mapDispatchToProperties$7 = dispatch => ({\n dispatch: dispatch,\n dispatchSetConfiguration: configuration => dispatch(actions.configuration.setConfiguration(configuration)),\n dispatchSetConfigurationMicro: () => dispatch(actions.configuration.setConfigurationMicro()),\n dispatchSpaceSetViewSize: viewSize => dispatch(actions.space.setViewSize(viewSize)),\n dispatchSetSpaceLoading: loading => dispatch(actions.space.setSpaceLoading(loading)),\n dispatchSetAnimatedTransform: animated => dispatch(actions.space.setAnimatedTransform(animated)),\n dispatchSetTransformTime: value => dispatch(actions.space.setTransformTime(value)),\n dispatchSetSpaceLocation: spaceLocation => dispatch(actions.space.setSpaceLocation(spaceLocation)),\n dispatchSetInitialTree: tree => dispatch(actions.space.setInitialTree(tree)),\n dispatchSetTree: tree => dispatch(actions.space.setTree(tree)),\n dispatchSetGeneralTheme: theme => dispatch(actions.themes.setGeneralTheme(theme)),\n dispatchSetInteractionTheme: theme => dispatch(actions.themes.setInteractionTheme(theme)),\n dispatchRotateX: value => dispatch(actions.space.rotateX(value)),\n dispatchRotateXWith: value => dispatch(actions.space.rotateXWith(value)),\n dispatchRotateY: value => dispatch(actions.space.rotateY(value)),\n dispatchRotateYWith: value => dispatch(actions.space.rotateYWith(value)),\n dispatchTranslateXWith: value => dispatch(actions.space.translateXWith(value)),\n dispatchTranslateYWith: value => dispatch(actions.space.translateYWith(value)),\n dispatchScaleUpWith: value => dispatch(actions.space.scaleUpWith(value)),\n dispatchScaleDownWith: value => dispatch(actions.space.scaleDownWith(value)),\n dispatchSpaceSetView: view => dispatch(actions.space.spaceSetView(view))\n});\n\nconst ConnectedView = reactRedux.connect(mapStateToProperties$7, mapDispatchToProperties$7, null, {\n context: StateContext\n})(PluridView);\n\nconst {registerPlanes: registerPlanes} = pluridEngine.planes;\n\nclass PluridApplication extends React.Component {\n constructor(properties, context) {\n super(properties);\n this.storeID = properties.id || \"default\";\n this.context = context;\n const defaultStore = this.computeStore();\n this.store = store(defaultStore);\n this.subscribeStore();\n }\n componentDidUpdate() {\n const updatedStore = this.computeStore();\n this.store.dispatch({\n type: \"SET_STATE\",\n payload: updatedStore\n });\n }\n componentWillUnmount() {\n if (this.storeUnubscriber) {\n this.storeUnubscriber();\n }\n }\n render() {\n return React__default[\"default\"].createElement(reactRedux.Provider, {\n store: this.store,\n context: StateContext\n }, React__default[\"default\"].createElement(ConnectedView, Object.assign({}, this.props)));\n }\n computeStore() {\n const {view: view, planes: planes, configuration: configuration, precomputedState: precomputedState, planesRegistrar: planesRegistrar, id: id, useLocalStorage: useLocalStorage} = this.props;\n registerPlanes(planes, planesRegistrar);\n const currentState = this.store ? this.store.getState() : undefined;\n const localState = pluridEngine.state.local.load(this.storeID, useLocalStorage);\n const contextState = id && this.context && this.context.states[id] ? this.context.states[id] : undefined;\n const store = pluridEngine.state.compute(view, configuration, planesRegistrar, currentState, localState, precomputedState, contextState);\n return store;\n }\n subscribeStore() {\n if (!this.store) {\n return;\n }\n if (typeof localStorage === \"undefined\") {\n return;\n }\n if (!this.props.useLocalStorage) {\n return;\n }\n this.storeUnubscriber = this.store.subscribe((() => {\n const state = this.store.getState();\n const stateData = JSON.stringify(state);\n localStorage.setItem(\"pluridState-\" + this.storeID, stateData);\n }));\n }\n}\n\nPluridApplication.contextType = PluridContext;\n\nconst StyledSpaces = styled__default[\"default\"].div`\n scroll-snap-type: ${properties => {\n const {alignment: alignment, snapType: snapType} = properties;\n if (snapType === \"none\") {\n return \"none\";\n }\n return alignment + \" \" + snapType;\n}};\n\n flex-direction: ${properties => {\n const {alignment: alignment} = properties;\n if (alignment === \"x\") {\n return \"row\";\n }\n return \"column\";\n}};\n\n outline: none;\n overflow: auto;\n /* display: flex; */\n height: 100vh;\n height: -webkit-fill-available;\n width: 100vw;\n`;\n\nconst {resolvePluridRoutePlaneData: resolvePluridRoutePlaneData, Registrar: PluridPlanesRegistrar$1} = pluridEngine.planes;\n\nconst computeIndexedPlanes = (routes, protocol, host) => {\n const indexedPlanes = new Map;\n for (const path of routes) {\n if (path.planes) {\n for (const plane of path.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const pathName = path.value === \"/\" ? \"p\" : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = \"s\";\n const universeName = \"u\";\n const clusterName = \"c\";\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const planeAddressElements = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const planeAddress = planeAddressElements.join(\"://\");\n const indexedPlane = {\n protocol: protocol,\n host: host,\n path: pathName,\n space: spaceName,\n universe: universeName,\n cluster: clusterName,\n plane: planeName,\n component: planeData.component,\n route: planeAddress\n };\n indexedPlanes.set(planeAddress, indexedPlane);\n }\n }\n if (!path.spaces) {\n const pathName = path.value === \"/\" ? \"p\" : pluridEngine.utilities.cleanPathElement(path.value);\n const planeAddressElements = [ protocol, host, pathName ];\n const planeAddress = planeAddressElements.join(\"://\");\n const indexedPlane = {\n protocol: protocol,\n host: host,\n path: pathName,\n space: \"\",\n universe: \"\",\n cluster: \"\",\n plane: \"\",\n component: path.exterior || (() => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null)),\n route: planeAddress\n };\n indexedPlanes.set(planeAddress, indexedPlane);\n continue;\n }\n for (const space of path.spaces) {\n if (!space.universes) {\n continue;\n }\n for (const universe of space.universes) {\n if (!universe.clusters) {\n continue;\n }\n for (const cluster of universe.clusters) {\n for (const plane of cluster.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const pathName = path.value === \"/\" ? \"p\" : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = space.value === \"default\" ? \"s\" : pluridEngine.utilities.cleanPathElement(space.value);\n const universeName = universe.value === \"default\" ? \"u\" : pluridEngine.utilities.cleanPathElement(universe.value);\n const clusterName = cluster.value === \"default\" ? \"c\" : pluridEngine.utilities.cleanPathElement(cluster.value);\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const planeAddressElements = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const planeAddress = planeAddressElements.join(\"://\");\n const indexedPlane = {\n protocol: protocol,\n host: host,\n path: pathName,\n space: spaceName,\n universe: universeName,\n cluster: clusterName,\n plane: planeName,\n component: planeData.component,\n route: planeAddress\n };\n indexedPlanes.set(planeAddress, indexedPlane);\n }\n }\n }\n }\n }\n return indexedPlanes;\n};\n\nconst collectApplicationsFromPath = (isoMatch, protocol, host, globals) => __awaiter(void 0, void 0, void 0, (function*() {\n const path = {\n planes: [],\n spaces: [],\n view: [],\n value: \"\"\n };\n if (isoMatch.kind === \"Route\") {\n let routeData = isoMatch.data;\n if (isoMatch.data.resolver) {\n routeData = yield isoMatch.data.resolver(globals);\n }\n path.planes = routeData.planes || [];\n path.spaces = routeData.spaces || [];\n path.view = routeData.view || [];\n path.value = isoMatch.data.value || \"\";\n }\n const {planes: planes, spaces: spaces, view: view} = path;\n const plurids = [];\n if (spaces) {\n for (const space of spaces) {\n const planes = [];\n const view = [];\n if (space.planes) {\n for (const plane of space.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n pluridEngine.utilities.cleanPathElement(planeData.value);\n }\n }\n if (space.universes) {\n for (const universe of space.universes) {\n if (universe.clusters) {\n for (const cluster of universe.clusters) {\n for (const plane of cluster.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n universe.value === pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE : pluridEngine.utilities.cleanPathElement(universe.value);\n cluster.value === pluridData.PLURID_ROUTE_DEFAULT_CLUSTER_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_CLUSTER : pluridEngine.utilities.cleanPathElement(cluster.value);\n pluridEngine.utilities.cleanPathElement(planeData.value);\n }\n }\n }\n if (universe.planes) {\n for (const plane of universe.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n universe.value === pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE : pluridEngine.utilities.cleanPathElement(universe.value);\n pluridEngine.utilities.cleanPathElement(planeData.value);\n }\n }\n }\n }\n const pluridApplication = {\n planes: planes,\n view: view\n };\n plurids.push(pluridApplication);\n }\n }\n if (planes) {\n const pluridPlanes = [];\n for (const plane of planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n pluridEngine.utilities.cleanPathElement(planeData.value);\n }\n const pluridApplication = {\n planes: pluridPlanes,\n view: view || []\n };\n plurids.push(pluridApplication);\n }\n return plurids;\n}));\n\nconst gatherPluridPlanes = (routes, planes) => {\n const pluridPlanes = [];\n for (const route of routes) {\n if (route.planes) {\n for (const plane of route.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const planeRoute = planeData.link ? planeData.link : planeData.value.startsWith(\"/\") ? planeData.value : route.value + \"/\" + planeData.value;\n const pluridPlane = {\n route: planeRoute,\n component: planeData.component\n };\n pluridPlanes.push(pluridPlane);\n }\n }\n if (route.spaces) ;\n }\n if (planes) {\n for (const plane of planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const pluridPlane = {\n route: planeData.value,\n component: planeData.component\n };\n pluridPlanes.push(pluridPlane);\n }\n }\n return pluridPlanes;\n};\n\nconst renderMultispace = matchedRoute => {\n var _a, _b, _c, _d, _e, _f;\n if (matchedRoute.kind !== \"Route\") {\n return () => () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const protocol = \"http\";\n const host = \"localhost:63000\";\n const {match: match, data: path} = matchedRoute;\n const {parameters: parameters, query: query} = match;\n const pluridRouteProperty = {\n value: match.value,\n parameters: parameters,\n query: query\n };\n const {exterior: exterior, planes: planes, spaces: spaces, slotted: slotted} = matchedRoute.data;\n const multispaceAlignment = ((_a = path.multispace) === null || _a === void 0 ? void 0 : _a.alignment) || \"y\";\n const multispaceSnapType = ((_b = path.multispace) === null || _b === void 0 ? void 0 : _b.snapType) || \"mandatory\";\n let PluridExterior = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n if (isReactRenderable(exterior)) {\n PluridExterior = exterior;\n }\n let PluridSpaces = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n const spacesArray = [];\n if (spaces) {\n for (const space of spaces) {\n const planes = [];\n const view = [];\n if (space.planes) {\n for (const plane of space.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const {component: component} = planeData;\n const pathName = path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n const universeName = pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE;\n const clusterName = pluridData.PLURID_ROUTE_DEFAULT_CLUSTER;\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const pathDivisions = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const fullPath = pathDivisions.join(pluridData.PLURID_ROUTE_SEPARATOR);\n const pluridPlane = {\n component: component,\n route: fullPath\n };\n planes.push(pluridPlane);\n view.push(fullPath);\n }\n }\n if (space.universes) {\n for (const universe of space.universes) {\n if (universe.clusters) {\n for (const cluster of universe.clusters) {\n for (const plane of cluster.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const {component: component} = planeData;\n const pathName = path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n const universeName = universe.value === pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE : pluridEngine.utilities.cleanPathElement(universe.value);\n const clusterName = cluster.value === pluridData.PLURID_ROUTE_DEFAULT_CLUSTER_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_CLUSTER : pluridEngine.utilities.cleanPathElement(cluster.value);\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const pathDivisions = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const fullPath = pathDivisions.join(pluridData.PLURID_ROUTE_SEPARATOR);\n const pluridPlane = {\n component: component,\n route: fullPath\n };\n planes.push(pluridPlane);\n if (!path.view) {\n view.push(fullPath);\n } else {\n if (path.view.includes(planeData.value)) {\n view.push(fullPath);\n }\n }\n }\n }\n }\n if (universe.planes) {\n for (const plane of universe.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const {component: component} = planeData;\n const pathName = path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n const universeName = universe.value === pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE : pluridEngine.utilities.cleanPathElement(universe.value);\n const clusterName = pluridData.PLURID_ROUTE_DEFAULT_CLUSTER;\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const pathDivisions = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const fullPath = pathDivisions.join(pluridData.PLURID_ROUTE_SEPARATOR);\n const pluridPlane = {\n component: component,\n route: fullPath\n };\n planes.push(pluridPlane);\n view.push(fullPath);\n }\n }\n }\n }\n const pluridPlanesRegistrar = new PluridPlanesRegistrar$1;\n const App = React__default[\"default\"].createElement(PluridApplication, {\n key: pluridFunctions.uuid.generate(),\n id: path.value,\n planes: planes,\n view: view,\n configuration: space.configuration,\n planesRegistrar: pluridPlanesRegistrar\n });\n spacesArray.push(App);\n }\n }\n if (planes) {\n const pluridPlanes = [];\n const view = [];\n for (const plane of planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const {component: component} = planeData;\n const pathName = path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = pluridData.PLURID_ROUTE_DEFAULT_SPACE;\n const universeName = pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE;\n const clusterName = pluridData.PLURID_ROUTE_DEFAULT_CLUSTER;\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const pathDivisions = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const fullPath = pathDivisions.join(pluridData.PLURID_ROUTE_SEPARATOR);\n const pluridPlane = {\n component: component,\n route: fullPath\n };\n pluridPlanes.push(pluridPlane);\n if (!path.view) {\n view.push(fullPath);\n } else {\n if (path.view.includes(planeData.value)) {\n view.push(fullPath);\n }\n }\n }\n const App = React__default[\"default\"].createElement(PluridApplication, {\n key: pluridFunctions.uuid.generate(),\n id: path.value,\n planes: pluridPlanes,\n view: view,\n configuration: path.defaultConfiguration\n });\n spacesArray.push(App);\n }\n let MultispaceHeader;\n let MultispaceFooter;\n if (isReactRenderable((_c = path.multispace) === null || _c === void 0 ? void 0 : _c.header)) {\n MultispaceHeader = (_d = path.multispace) === null || _d === void 0 ? void 0 : _d.header;\n }\n if (isReactRenderable((_e = path.multispace) === null || _e === void 0 ? void 0 : _e.footer)) {\n MultispaceFooter = (_f = path.multispace) === null || _f === void 0 ? void 0 : _f.footer;\n }\n PluridSpaces = () => React__default[\"default\"].createElement(StyledSpaces, {\n alignment: multispaceAlignment,\n snapType: multispaceSnapType,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_MULTISPACE\n }, MultispaceHeader && React__default[\"default\"].createElement(MultispaceHeader, {\n plurid: pluridRouteProperty\n }), spacesArray, MultispaceFooter && React__default[\"default\"].createElement(MultispaceFooter, {\n plurid: pluridRouteProperty\n }));\n return () => {\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, exterior && React__default[\"default\"].createElement(PluridExterior, {\n spaces: slotted ? spacesArray : undefined,\n plurid: pluridRouteProperty\n }), (spaces || planes) && !slotted && React__default[\"default\"].createElement(PluridSpaces, null));\n return PluridRoute;\n };\n};\n\nconst computePluridRoute = (matchedRoute, planesRegistrar, isoMatcher, directPlane) => {\n if (directPlane || (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.kind) === \"RoutePlane\") {\n const match = directPlane || matchedRoute;\n if (!match) {\n return () => () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const DirectPlane = renderDirectPlane(match, planesRegistrar);\n return DirectPlane;\n }\n if (!matchedRoute) {\n const notFoundRoute = isoMatcher.match(\"/not-found\", \"route\");\n if (notFoundRoute && notFoundRoute.kind === \"Route\") {\n const notFoundRender = computePluridRoute(notFoundRoute, planesRegistrar, isoMatcher);\n return notFoundRender;\n }\n return () => () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {exterior: exterior, view: view, planes: planes, spaces: spaces, defaultConfiguration: defaultConfiguration, slotted: slotted, resolver: resolver} = matchedRoute.data;\n if (resolver) {\n resolver(undefined);\n }\n const pluridRouteProperty = {\n value: matchedRoute.match.value,\n parameters: matchedRoute.match.parameters,\n query: matchedRoute.match.query\n };\n let PluridRouteExterior;\n if (isReactRenderable(exterior)) {\n PluridRouteExterior = exterior;\n if (PluridRouteExterior) {\n PluridRouteExterior.displayName = \"PluridRouteExterior\";\n }\n }\n if (exterior && PluridRouteExterior && !view && !planes && !spaces) {\n return () => {\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, PluridRouteExterior && React__default[\"default\"].createElement(PluridRouteExterior, {\n plurid: pluridRouteProperty\n }));\n return PluridRoute;\n };\n }\n if (view) {\n return () => {\n const pubsub = new PluridPubSub__default[\"default\"];\n const pluridApplication = React__default[\"default\"].createElement(PluridApplication, {\n view: view,\n planesRegistrar: planesRegistrar,\n configuration: defaultConfiguration,\n pubsub: pubsub,\n matchedRoute: matchedRoute\n });\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, PluridRouteExterior && React__default[\"default\"].createElement(PluridRouteExterior, {\n plurid: pluridRouteProperty,\n pubsub: pubsub,\n spaces: slotted ? [ pluridApplication ] : undefined\n }), !slotted && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridApplication));\n return PluridRoute;\n };\n }\n return renderMultispace(matchedRoute);\n};\n\nconst computeInitialMatchedPath = staticContext => {\n if (staticContext) {\n return staticContext.path;\n }\n if (typeof window !== \"undefined\") {\n return window.location.pathname + window.location.search;\n }\n return \"/\";\n};\n\nconst getDirectPlaneMatch = (matchedPath, routes, planes) => {\n let matchRoute;\n let matchPlane;\n let matchPath;\n for (const route of routes) {\n if (route.planes) {\n for (const plane of route.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const planePath = route.value === \"/\" ? planeData.value : route.value + planeData.value;\n matchPath = planePath;\n if (matchedPath === planePath) {\n matchPlane = plane;\n break;\n }\n }\n }\n if (matchPlane) {\n matchRoute = route;\n break;\n }\n }\n if (planes) {\n for (const plane of planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n if (matchedPath === planeData.value) {\n matchPlane = plane;\n break;\n }\n }\n }\n return {\n matchRoute: matchRoute,\n matchPlane: matchPlane,\n matchPath: matchPath\n };\n};\n\nconst renderDirectPlane = (routePlane, planesRegistrar) => {\n if (routePlane.match.query.flat) {\n const flat = routePlane.match.query.flat.toLowerCase();\n const renderFlat = flat === \"true\" || flat === \"1\";\n if (renderFlat) {\n const pluridRoute = planesRegistrar.get(routePlane.match.value);\n if (pluridRoute) {\n const Flat = pluridRoute.component;\n if (typeof Flat !== \"function\") {\n return () => () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const DirectPlane = () => {\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(Flat, null));\n return PluridRoute;\n };\n return DirectPlane;\n }\n }\n }\n const {defaultConfiguration: defaultConfiguration} = routePlane === null || routePlane === void 0 ? void 0 : routePlane.data;\n const DirectPlane = () => {\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(PluridApplication, {\n view: [ routePlane.match.value ],\n planesRegistrar: planesRegistrar,\n configuration: defaultConfiguration\n }));\n return PluridRoute;\n };\n return DirectPlane;\n};\n\nconst {Registrar: PluridPlanesRegistrar} = pluridEngine.planes;\n\nconst {IsoMatcher: PluridIsoMatcher$1} = pluridEngine.routing;\n\nconst PluridRouterBrowser = properties => {\n const {routes: routes, planes: planes, exterior: exterior, shell: shell, static: staticContext, view: cleanNavigationView, cleanNavigation: cleanNavigation, notFoundPath: notFoundPathProperty} = properties;\n const notFoundPath = notFoundPathProperty || \"/not-found\";\n const pluridPlanes = gatherPluridPlanes(routes, planes);\n const pluridPlanesRegistrar = React.useRef(new PluridPlanesRegistrar(pluridPlanes));\n const pluridIsoMatcher = React.useRef(new PluridIsoMatcher$1({\n routes: routes,\n routePlanes: planes\n }));\n const mounted = pluridFunctionsReact.useMounted();\n const [matchedPath, setMatchedPath] = React.useState(computeInitialMatchedPath(staticContext));\n const [matchedRoute, setMatchedRoute] = React.useState(pluridIsoMatcher.current.match(matchedPath, \"route\"));\n const [PluridRoute, setPluridRoute] = React.useState(computePluridRoute(matchedRoute, pluridPlanesRegistrar.current, pluridIsoMatcher.current, staticContext && staticContext.directPlane ? pluridIsoMatcher.current.match(staticContext.directPlane, \"route\") : undefined));\n const handleLocation = event => {\n let matchedPath;\n if (event && event.detail && event.detail.path && !matchedPath) {\n matchedPath = event.detail.path;\n }\n if (cleanNavigation && cleanNavigationView && !matchedPath) {\n matchedPath = cleanNavigationView;\n }\n const pathname = window.location.pathname;\n if (!matchedPath) {\n matchedPath = pathname + window.location.search;\n }\n setMatchedPath(matchedPath);\n };\n React.useEffect((() => {\n window.addEventListener(\"popstate\", handleLocation);\n window.addEventListener(pluridData.PLURID_ROUTER_LOCATION_CHANGED, handleLocation);\n return () => {\n window.removeEventListener(\"popstate\", handleLocation);\n window.removeEventListener(pluridData.PLURID_ROUTER_LOCATION_CHANGED, handleLocation);\n };\n }), []);\n React.useEffect((() => {\n if (!mounted) {\n return;\n }\n if (!cleanNavigation) {\n if (location.pathname !== matchedPath) {\n history.pushState(null, \"\", matchedPath);\n }\n }\n let matchedRoute = pluridIsoMatcher.current.match(matchedPath, \"route\");\n if (matchedRoute && matchedRoute.kind === \"RoutePlane\") {\n const DirectPlane = renderDirectPlane(matchedRoute, pluridPlanesRegistrar.current);\n setMatchedRoute(matchedRoute);\n setPluridRoute(DirectPlane);\n return;\n }\n if (!matchedRoute) {\n matchedRoute = pluridIsoMatcher.current.match(notFoundPath, \"route\");\n }\n setMatchedRoute(matchedRoute);\n setPluridRoute(computePluridRoute(matchedRoute, pluridPlanesRegistrar.current, pluridIsoMatcher.current));\n }), [ mounted, matchedPath ]);\n React.useEffect((() => {\n if (!matchedRoute) {\n return;\n }\n if (matchedRoute.kind !== \"Route\") {\n return;\n }\n const path = matchedRoute.match.value;\n pluridFunctions.storage.saveState(path, pluridData.PLURID_ROUTER_STORAGE);\n const locationStoredEvent = new CustomEvent(pluridData.PLURID_ROUTER_LOCATION_STORED, {\n detail: {\n path: path\n }\n });\n window.dispatchEvent(locationStoredEvent);\n }), [ cleanNavigation, matchedRoute ]);\n let PluridRouterExterior;\n if (isReactRenderable(exterior)) {\n PluridRouterExterior = exterior;\n if (PluridRouterExterior) {\n PluridRouterExterior.displayName = \"PluridRouterExterior\";\n }\n }\n let PluridRouterShell = ({children: children}) => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, children);\n if (isReactRenderable(shell)) {\n PluridRouterShell = shell;\n if (PluridRouterShell) {\n PluridRouterShell.displayName = \"PluridRouterShell\";\n }\n }\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, PluridRouterExterior && React__default[\"default\"].createElement(PluridRouterExterior, {\n matchedRoute: matchedRoute\n }), React__default[\"default\"].createElement(PluridRouterShell, {\n matchedRoute: matchedRoute\n }, React__default[\"default\"].createElement(PluridRoute, null)));\n};\n\nconst PluridRouterStatic = properties => {\n const {path: path, directPlane: directPlane, routes: routes, planes: planes, exterior: exterior, shell: shell, protocol: protocolProperty, host: hostProperty, gateway: gateway, gatewayQuery: gatewayQueryProperty, gatewayEndpoint: gatewayEndpointProperty} = properties;\n const protocol = protocolProperty || \"http\";\n const host = hostProperty || \"localhost:63000\";\n return React__default[\"default\"].createElement(PluridRouterBrowser, {\n routes: routes,\n planes: planes,\n exterior: exterior,\n shell: shell,\n static: {\n path: path,\n directPlane: directPlane\n },\n protocol: protocol,\n host: host\n });\n};\n\nclass PluridProvider extends React.Component {\n constructor(properties) {\n super(properties);\n this.properties = properties;\n }\n render() {\n const {metastate: metastate, children: children} = this.properties;\n return React__default[\"default\"].createElement(PluridContext.Provider, {\n value: metastate\n }, children);\n }\n}\n\nPluridProvider.displayName = \"PluridProvider\";\n\nconst DEFAULT_ROUTER_LINK_AS_ANCHOR = true;\n\nconst defaultLinkCoordinates = {\n x: 0,\n y: 0\n};\n\nconst PluridPortal = properties => {\n const {elementID: elementID, rootID: rootID, children: children} = properties;\n const target = pluridFunctionsReact.usePortal(elementID, rootID);\n return reactDom.createPortal(children, target);\n};\n\nconst StyledPluridPlanePreview = styled__default[\"default\"].div`\n position: absolute;\n min-width: 600px;\n min-height: 300px;\n z-index: 99999;\n\n top: ${({linkCoordinates: linkCoordinates}) => {\n const location = linkCoordinates.y;\n return location + \"px\";\n}};\n left: ${({linkCoordinates: linkCoordinates}) => {\n const location = linkCoordinates.x + 5;\n return location + \"px\";\n}};\n background-color: ${({theme: theme}) => theme.backgroundColorSecondary};\n box-shadow: ${({theme: theme}) => theme.boxShadowUmbra};\n`;\n\nconst {getPlanesRegistrar: getPlanesRegistrar$1} = pluridEngine.planes;\n\nconst PluridPlanePreview = properties => {\n const {planeID: planeID, linkCoordinates: linkCoordinates, stateGeneralTheme: stateGeneralTheme} = properties;\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {planesRegistrar: planesRegistrar} = context;\n const planesRegistry = getPlanesRegistrar$1(planesRegistrar);\n if (!planesRegistry) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const plane = planesRegistry.get(planeID);\n if (!plane) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const Component = plane.component;\n if (typeof Component !== \"function\") {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledPluridPlanePreview, {\n theme: stateGeneralTheme,\n linkCoordinates: linkCoordinates\n }, React__default[\"default\"].createElement(Component, null));\n};\n\nconst mapStateToProperties$6 = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$6 = dispatch => ({});\n\nconst ConnectedPluridPlanePreview = reactRedux.connect(mapStateToProperties$6, mapDispatchToProperties$6, null, {\n context: StateContext\n})(PluridPlanePreview);\n\nconst StyledPluridLink = styled__default[\"default\"].a`\n /**\n * Forces element to go to the second row if inlined.\n */\n display: inline-block;\n\n cursor: pointer;\n color: ${({theme: theme}) => theme.colorTertiary};\n\n :hover {\n color: ${({theme: theme}) => theme.colorPrimary};\n }\n\n ::after {\n content: \"${({devisible: devisible, suffix: suffix}) => {\n if (!devisible) {\n if (suffix) {\n return suffix;\n }\n return \"'\";\n }\n return \"\";\n}}\";\n }\n`;\n\nconst {resolveRoute: resolveRoute, computePlaneAddress: computePlaneAddress} = pluridEngine.routing;\n\nconst {getPlanesRegistrar: getPlanesRegistrar, getPluridPlaneIDByData: getPluridPlaneIDByData$1} = pluridEngine.planes;\n\nconst {degToRad: degToRad, radToDeg: radToDeg} = pluridEngine.interaction.quaternion;\n\nconst {multiplyMatrices: multiplyMatrices, translateMatrix: translateMatrix, rotateYMatrix: rotateYMatrix} = pluridEngine.interaction.transform.general;\n\nconst {getTransformRotate: getTransformRotate, getTransformTranslate: getTransformTranslate, getTransformScale: getTransformScale} = pluridEngine.interaction.transform.matrix3d;\n\nconst PluridLink = properties => {\n const {children: children, route: planeRoute, devisible: _devisible, suffix: _suffix, atClick: atClick, style: style, className: className, stateTree: stateTree, stateGeneralTheme: stateGeneralTheme, stateConfiguration: stateConfiguration, stateViewSize: stateViewSize, dispatchSetTree: dispatchSetTree, dispatchSetAnimatedTransform: dispatchSetAnimatedTransform, dispatchSetTransform: dispatchSetTransform, dispatchSetSpaceField: dispatchSetSpaceField, dispatchUpdateSpaceLinkCoordinates: dispatchUpdateSpaceLinkCoordinates} = properties;\n const planeControls = stateConfiguration.elements.plane.controls.show;\n const previewAppearTime = pluridData.PLURID_DEFAULT_CONFIGURATION_LINK_PREVIEW_FADE_IN;\n const previewDisappearTime = pluridData.PLURID_DEFAULT_CONFIGURATION_LINK_PREVIEW_FADE_OUT;\n const planeRouteResolved = computePlaneAddress(planeRoute);\n const absolutePlaneRoute = resolveRoute(planeRouteResolved, stateConfiguration.network.protocol, stateConfiguration.network.host);\n const suffix = _suffix !== null && _suffix !== void 0 ? _suffix : pluridData.PLURID_DEFAULT_CONFIGURATION_LINK_SUFFIX;\n const devisible = _devisible !== null && _devisible !== void 0 ? _devisible : false;\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, children);\n }\n const {planesRegistrar: planesRegistrar} = context;\n const planesRegistry = getPlanesRegistrar(planesRegistrar);\n if (!planesRegistry) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, children);\n }\n const linkElement = React.useRef(null);\n const hoverInTimeout = React.useRef(null);\n const hoverOutTimeout = React.useRef(null);\n const [mouseOver, setMouseOver] = React.useState(false);\n const [showPreview, setShowPreview] = React.useState(false);\n const [showLink, setShowLink] = React.useState(false);\n const [planeID, setPlaneID] = React.useState(\"\");\n const [pluridPlaneID, setPluridPlaneID] = React.useState(\"\");\n const [parentPlaneID, setParentPlaneID] = React.useState(getPluridPlaneIDByData$1(linkElement.current));\n const [linkCoordinates, setLinkCoordinates] = React.useState(defaultLinkCoordinates);\n const getPluridLinkCoordinates = () => {\n const link = linkElement.current;\n if (!link) {\n return Object.assign({}, defaultLinkCoordinates);\n }\n let partialTop = 0;\n let partialLeft = 0;\n let staticSet = false;\n let element = link;\n let searching = true;\n let top = 0;\n let left = 0;\n while (searching) {\n if (window.getComputedStyle(element).position === \"static\" && !staticSet) {\n partialTop += element.offsetTop;\n partialLeft += element.offsetLeft;\n staticSet = true;\n }\n if (window.getComputedStyle(element).position === \"relative\") {\n top += partialTop;\n left += partialLeft;\n partialTop = 0;\n partialLeft = 0;\n staticSet = false;\n }\n if (element.scrollLeft) {\n left += -element.scrollLeft;\n }\n if (element.scrollTop) {\n top += -element.scrollTop;\n }\n if (element.parentElement) {\n const pluridEntity = element.parentElement.dataset.pluridEntity;\n if (pluridEntity === \"PluridPlane\") {\n searching = false;\n }\n element = element.parentElement;\n } else {\n searching = false;\n }\n }\n const planeControlsHeight = planeControls ? 56 : 0;\n const x = left + link.offsetWidth;\n const y = top + planeControlsHeight;\n return {\n x: x,\n y: y\n };\n };\n const updateTreeWithLink = event => {\n if (!parentPlaneID || !absolutePlaneRoute) {\n return;\n }\n const {route: route} = absolutePlaneRoute;\n const linkCoordinates = getPluridLinkCoordinates();\n const {pluridPlaneID: pluridPlaneID, updatedTree: updatedTree, updatedTreePlane: updatedTreePlane} = pluridEngine.space.tree.logic.updateTreeWithNewPlane(route, parentPlaneID, linkCoordinates, stateTree, planesRegistry.getAll(), stateConfiguration);\n if (pluridPlaneID) {\n navigateToPluridPlane(event, updatedTreePlane);\n dispatchSetTree(updatedTree);\n setShowLink(true);\n setPluridPlaneID(pluridPlaneID);\n }\n };\n const toggleLinkFromTree = event => {\n const {updatedTree: updatedTree, updatedPlane: updatedPlane} = pluridEngine.space.tree.logic.togglePlaneFromTree(stateTree, pluridPlaneID);\n navigateToPluridPlane(event, updatedPlane);\n dispatchSetTree(updatedTree);\n setShowLink((show => !show));\n setShowPreview(false);\n };\n const navigateToPluridPlane = (event, updatedPlane) => {\n if (!updatedPlane) {\n return;\n }\n if (showLink) {\n return;\n }\n if (event.altKey || event.metaKey) {\n return;\n }\n const {location: location} = updatedPlane;\n const {translateX: translateX, translateY: translateY, translateZ: translateZ, rotateY: rotateY} = location;\n const zSign1 = rotateY < 100 ? 1 : -1;\n const zSign2 = rotateY < 100 ? -1 : 1;\n const xOffset = rotateY < 100 ? 200 : 0;\n const newMatrix = multiplyMatrices(multiplyMatrices(multiplyMatrices(translateMatrix(-translateX, -translateY, zSign1 * translateZ), rotateYMatrix(degToRad(rotateY))), translateMatrix(translateX, translateY, zSign2 * translateZ)), translateMatrix(-(translateX + xOffset), -translateY, zSign1 * translateZ));\n const matrix3d = `matrix3d(${newMatrix.flat().join(\",\")})`;\n const rotate = getTransformRotate(matrix3d);\n const translate = getTransformTranslate(matrix3d);\n const scale = getTransformScale(matrix3d);\n dispatchSetAnimatedTransform(true);\n dispatchSetSpaceField({\n field: \"transform\",\n value: matrix3d\n });\n dispatchSetTransform({\n translationX: translate.translateX,\n translationY: translate.translateY,\n translationZ: translate.translateZ,\n rotationX: radToDeg(rotate.rotateX),\n rotationY: radToDeg(rotate.rotateY) * -1,\n scale: scale.scale\n });\n setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), 500);\n };\n const handleShowPluridPlane = event => {\n if (!showLink && !pluridPlaneID) {\n updateTreeWithLink(event);\n } else {\n toggleLinkFromTree(event);\n }\n };\n const handleClick = React.useCallback((event => {\n event.preventDefault();\n if (atClick !== undefined) {\n atClick(event);\n }\n handleShowPluridPlane(event);\n }), [ linkElement.current, stateTree ]);\n React.useEffect((() => {\n const parentPlaneID = getPluridPlaneIDByData$1(linkElement.current);\n setParentPlaneID(parentPlaneID);\n const linkCoordinates = getPluridLinkCoordinates();\n setLinkCoordinates(linkCoordinates);\n }), []);\n React.useEffect((() => {\n if (mouseOver && hoverOutTimeout.current) {\n hoverInTimeout.current = setTimeout((() => {\n setShowPreview(true);\n }), previewAppearTime);\n clearTimeout(hoverOutTimeout.current);\n }\n if (!mouseOver) {\n hoverOutTimeout.current = setTimeout((() => {\n setShowPreview(false);\n if (hoverInTimeout.current) {\n clearTimeout(hoverInTimeout.current);\n }\n }), previewDisappearTime);\n }\n return () => {\n if (hoverOutTimeout.current) {\n clearTimeout(hoverOutTimeout.current);\n }\n if (hoverInTimeout.current) {\n clearTimeout(hoverInTimeout.current);\n }\n };\n }), [ mouseOver ]);\n React.useEffect((() => {}), []);\n return React__default[\"default\"].createElement(StyledPluridLink, {\n ref: linkElement,\n onClick: event => handleClick(event),\n onMouseEnter: () => setMouseOver(true),\n onMouseLeave: () => setMouseOver(false),\n theme: stateGeneralTheme,\n suffix: suffix,\n devisible: devisible,\n style: Object.assign({}, style),\n className: className,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_LINK\n }, children, showPreview && !showLink && React__default[\"default\"].createElement(PluridPortal, {\n elementID: `preview-${parentPlaneID}`,\n rootID: parentPlaneID\n }, React__default[\"default\"].createElement(ConnectedPluridPlanePreview, {\n planeID: planeID,\n linkCoordinates: linkCoordinates\n })));\n};\n\nconst mapStateToProperties$5 = state => ({\n stateTree: selectors.space.getTree(state),\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateViewSize: selectors.space.getViewSize(state)\n});\n\nconst mapDispatchToProperties$5 = dispatch => ({\n dispatchSetTree: tree => dispatch(actions.space.setTree(tree)),\n dispatchSetAnimatedTransform: payload => dispatch(actions.space.setAnimatedTransform(payload)),\n dispatchSetTransform: payload => dispatch(actions.space.setTransform(payload)),\n dispatchSetSpaceField: payload => dispatch(actions.space.setSpaceField(payload)),\n dispatchUpdateSpaceLinkCoordinates: payload => dispatch(actions.space.updateSpaceLinkCoordinates(payload))\n});\n\nvar PluridLink$1 = reactRedux.connect(mapStateToProperties$5, mapDispatchToProperties$5, null, {\n context: StateContext\n})(PluridLink);\n\nconst StyledPluridRouterLinkAnchor = styled__default[\"default\"].a`\n`;\n\nconst StyledPluridRouterLinkDiv = styled__default[\"default\"].div`\n cursor: pointer;\n`;\n\nconst PluridRouterLink = properties => {\n const {route: route, children: children, asAnchor: asAnchorProperty, style: style, className: className, atClick: atClick} = properties;\n const asAnchor = asAnchorProperty !== null && asAnchorProperty !== void 0 ? asAnchorProperty : DEFAULT_ROUTER_LINK_AS_ANCHOR;\n const handleClick = event => {\n if (atClick) {\n const exit = atClick(event);\n if (exit) {\n return;\n }\n }\n event.preventDefault();\n pluridEngine.pluridRouterNavigate(route);\n };\n const renderProperties = {\n onClick: handleClick,\n style: style,\n className: className\n };\n if (!asAnchor) {\n return React__default[\"default\"].createElement(StyledPluridRouterLinkDiv, Object.assign({}, renderProperties), children);\n }\n return React__default[\"default\"].createElement(StyledPluridRouterLinkAnchor, Object.assign({\n href: route\n }, renderProperties), children);\n};\n\nconst StyledPluridApplicationConfigurator = styled__default[\"default\"].div`\n position: absolute;\n height: 0;\n width: 0;\n user-select: none;\n pointer-events: none;\n`;\n\nconst PluridApplicationConfigurator = properties => {\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {registerPubSub: registerPubSub} = context;\n const {configuration: configuration, pubsub: pubsub, stateConfiguration: stateConfiguration, dispatchSetConfiguration: dispatchSetConfiguration} = properties;\n const configuratorElement = React.useRef(null);\n React.useEffect((() => {\n const computedConfiguration = pluridEngine.general.configuration.merge(configuration, stateConfiguration);\n dispatchSetConfiguration(computedConfiguration);\n }), [ configuration ]);\n React.useEffect((() => {\n if (pubsub) {\n registerPubSub(pubsub);\n }\n }), [ pubsub ]);\n return React__default[\"default\"].createElement(StyledPluridApplicationConfigurator, {\n ref: configuratorElement,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_APPLICATION_CONFIGURATOR\n });\n};\n\nconst mapStateToProps$1 = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$1 = dispatch => ({\n dispatchSetConfiguration: configuration => dispatch(actions.configuration.setConfiguration(configuration))\n});\n\nconst ConnectedPluridApplicationConfigurator = reactRedux.connect(mapStateToProps$1, mapDispatchToProps$1, null, {\n context: StateContext\n})(PluridApplicationConfigurator);\n\nconst StyledPluridPlaneConfigurator = styled__default[\"default\"].div`\n position: absolute;\n height: 0;\n width: 0;\n user-select: none;\n pointer-events: none;\n`;\n\nconst {getPluridPlaneIDByData: getPluridPlaneIDByData} = pluridEngine.planes;\n\nconst PluridPlaneConfigurator = properties => {\n const configuratorElement = React.useRef(null);\n const [planePlaneID, setParentPlaneID] = React.useState(\"\");\n React.useEffect((() => {\n const parentPlaneID = getPluridPlaneIDByData(configuratorElement.current);\n setParentPlaneID(parentPlaneID);\n }), []);\n return React__default[\"default\"].createElement(StyledPluridPlaneConfigurator, {\n ref: configuratorElement,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE_CONFIGURATOR\n });\n};\n\nconst mapStateToProperties$4 = state => ({});\n\nconst mapDispatchToProperties$4 = dispatch => ({});\n\nconst ConnectedPluridPlaneConfigurator = reactRedux.connect(mapStateToProperties$4, mapDispatchToProperties$4, null, {\n context: StateContext\n})(PluridPlaneConfigurator);\n\nconst StyledExternalPlane = styled__default[\"default\"].div`\n`;\n\nconst getPttpUrl = path => {\n const re = /^pttp:\\/\\/(\\w+(\\.|:)\\w+)\\/?/;\n const match = path.match(re);\n if (!match) {\n return {\n domain: \"\",\n url: \"\"\n };\n }\n const domain = match[1];\n const protocol = \"http\";\n const url = `${protocol}://${domain}/pttp`;\n return {\n domain: domain,\n url: url\n };\n};\n\nconst getPttpPath = (domain, path) => {\n if (!domain) {\n return;\n }\n const pttpPath = path.replace(`pttp://${domain}`, \"\");\n return pttpPath;\n};\n\nconst elementRequest = (url, path) => __awaiter(void 0, void 0, void 0, (function*() {\n try {\n const response = yield fetch__default[\"default\"](url, {\n method: \"post\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n path: path\n }),\n credentials: \"include\"\n });\n const data = yield response.json();\n if (!data.element) {\n return;\n }\n const {element: element} = data;\n const elementQLClient = new elementqlClientReact.ElementQLClient({\n url: element.url\n });\n const {status: status, Elements: Elements} = yield elementQLClient.get(element.json, \"json\");\n if (!status) {\n return;\n }\n const Element = Elements[element.name];\n return () => Element;\n } catch (error) {\n return;\n }\n}));\n\nconst ExternalPlane = properties => {\n const {plurid: plurid} = properties;\n const route = plurid.value;\n const mounted = React.useRef(false);\n const [Component, setComponent] = React.useState();\n React.useEffect((() => {\n mounted.current = true;\n return () => {\n mounted.current = false;\n };\n }));\n React.useEffect((() => {\n let loading = false;\n const load = () => __awaiter(void 0, void 0, void 0, (function*() {\n if (loading) {\n return;\n }\n loading = true;\n try {\n const {domain: domain, url: url} = getPttpUrl(route);\n const pttpPath = getPttpPath(domain, route);\n if (!url || !pttpPath) {\n return;\n }\n const Component = yield elementRequest(url, pttpPath);\n if (!mounted.current) {\n return;\n }\n if (Component) {\n setComponent(Component);\n }\n } catch (error) {\n return;\n }\n }));\n load();\n }), []);\n return React__default[\"default\"].createElement(StyledExternalPlane, null, Component && React__default[\"default\"].createElement(Component, null));\n};\n\nconst mapStateToProperties$3 = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$3 = dispatch => ({});\n\nconst ConnectedExternalPlane = reactRedux.connect(mapStateToProperties$3, mapDispatchToProperties$3, null, {\n context: StateContext\n})(ExternalPlane);\n\nconst StyledIframePlane = styled__default[\"default\"].div`\n`;\n\nconst IframePlane = properties => {\n const {plurid: plurid} = properties;\n const route = plurid.value;\n return React__default[\"default\"].createElement(StyledIframePlane, null, React__default[\"default\"].createElement(\"iframe\", {\n src: route\n }));\n};\n\nconst mapStateToProperties$2 = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$2 = dispatch => ({});\n\nconst ConnectedIframePlane = reactRedux.connect(mapStateToProperties$2, mapDispatchToProperties$2, null, {\n context: StateContext\n})(IframePlane);\n\nconst VirtualListItem = properties => {\n const {top: top, index: index, element: element, setHeight: setHeight} = properties;\n const el = React.useRef(null);\n React.useEffect((() => {\n if (el.current) {\n setHeight(el.current.offsetHeight, index);\n }\n }), [ el.current ]);\n return React__default[\"default\"].createElement(\"div\", {\n ref: el,\n style: {\n position: \"absolute\",\n top: top + \"px\"\n }\n }, element);\n};\n\nconst {markers: {Spinner: PluridSpinner}} = pluridUiComponentsReact.universal;\n\nconst PluridVirtualList = properties => {\n const {items: items, generalHeight: generalHeight, translationY: translationY, viewSize: viewSize} = properties;\n const _generalHeight = generalHeight || 100;\n const listElement = React.useRef(null);\n const rows = React.useRef([]);\n const heights = React.useRef(Array(items.length).fill(_generalHeight));\n const [start, setStart] = React.useState(0);\n const [end, setEnd] = React.useState(Math.floor(1e3 / _generalHeight));\n const [elementHeight, setElementHeight] = React.useState(_generalHeight * (end - start));\n const [resizing, setResizing] = React.useState(false);\n const setHeight = (value, index) => {\n heights.current[index] = value;\n };\n const renderRows = () => {\n rows.current = [];\n for (let i = start; i <= end; i++) {\n const item = items[i];\n rows.current.push(React__default[\"default\"].createElement(VirtualListItem, {\n key: i + Math.random(),\n index: i,\n top: pluridFunctions.mathematics.arithmetic.sum(heights.current, i),\n element: item,\n setHeight: setHeight\n }));\n }\n return rows.current;\n };\n React.useEffect((() => {\n if (heights.current) {\n const elementHeight = pluridFunctions.mathematics.arithmetic.sum(heights.current, heights.current.length);\n setElementHeight(elementHeight);\n }\n }), [ start, end, heights.current ]);\n React.useEffect((() => {\n let sum = 0;\n for (const [index, value] of heights.current.entries()) {\n sum += value;\n if (translationY < 0) {\n if (sum < Math.abs(translationY)) {\n setStart(index);\n }\n if (sum > Math.abs(translationY) + viewSize.height && sum < Math.abs(translationY) + viewSize.height + 400) {\n setEnd(index);\n }\n } else {\n setStart(0);\n setEnd(10);\n }\n }\n }), [ viewSize.height, translationY ]);\n React.useEffect((() => {\n setResizing(true);\n setTimeout((() => {\n const elementHeight = pluridFunctions.mathematics.arithmetic.sum(heights.current, heights.current.length);\n setElementHeight(elementHeight);\n setResizing(false);\n }), 400);\n }), [ viewSize ]);\n return React__default[\"default\"].createElement(\"div\", {\n style: {\n height: elementHeight\n },\n ref: listElement\n }, resizing && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(PluridSpinner, null)), !resizing && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, renderRows()));\n};\n\nconst mapStateToProps = state => ({\n translationY: selectors.space.getTranslationY(state),\n viewSize: selectors.space.getViewSize(state)\n});\n\nconst mapDispatchToProps = dispatch => ({});\n\nconst ConnectedPluridVirtualList = reactRedux.connect(mapStateToProps, mapDispatchToProps, null, {\n context: StateContext\n})(PluridVirtualList);\n\nconst StyledPluridPlaneDebugger = styled__default[\"default\"].div`\n`;\n\nconst PluridPlaneDebugger = properties => React__default[\"default\"].createElement(StyledPluridPlaneDebugger, null, \"PluridPlaneDebugger\");\n\nconst mapStateToProperties$1 = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$1 = dispatch => ({});\n\nconst ConnectedPluridPlaneDebugger = reactRedux.connect(mapStateToProperties$1, mapDispatchToProperties$1, null, {\n context: StateContext\n})(PluridPlaneDebugger);\n\nconst StyledPluridSpaceDebugger = styled__default[\"default\"].div`\n`;\n\nconst PluridSpaceDebugger = properties => React__default[\"default\"].createElement(StyledPluridSpaceDebugger, null, \"PluridSpaceDebugger\");\n\nconst mapStateToProperties = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties = dispatch => ({});\n\nconst ConnectedPluridSpaceDebugger = reactRedux.connect(mapStateToProperties, mapDispatchToProperties, null, {\n context: StateContext\n})(PluridSpaceDebugger);\n\nconst {resolvePluridPlaneData: resolvePluridPlaneData} = pluridEngine.planes;\n\nconst computeApplication = (indexedPlanes, planes, configuration, view) => {\n const planesPropertiesReference = new Map;\n const computedIndexedPlanes = new Map(indexedPlanes || new Map);\n const appConfiguration = pluridEngine.general.configuration.merge(configuration);\n if (planes) {\n for (const plane of planes) {\n const planeData = resolvePluridPlaneData(plane);\n const linkPath = pluridEngine.routing.resolveRoute(planeData.route);\n if (!linkPath) {\n continue;\n }\n const {protocol: protocol, host: host, path: path, space: space, universe: universe, cluster: cluster, plane: planePath, route: route} = linkPath;\n const computedIndexedPlane = {\n protocol: protocol,\n host: \"\",\n path: \"\",\n space: \"\",\n universe: \"\",\n cluster: \"\",\n plane: \"\",\n route: route,\n component: planeData.component\n };\n const id = route;\n computedIndexedPlanes.set(id, computedIndexedPlane);\n }\n }\n const indexedPlanesReference = new Map(computedIndexedPlanes);\n const planeSources = {};\n for (const [id, indexedPlane] of computedIndexedPlanes) {\n planeSources[indexedPlane.route] = id;\n }\n for (const [id, computedIndexedPlane] of computedIndexedPlanes) {}\n const currentView = view || [];\n const absoluteView = [];\n for (const viewItem of currentView) {\n if (typeof viewItem === \"string\") {\n const viewPath = pluridEngine.routing.resolveRoute(viewItem);\n if (!viewPath) {\n continue;\n }\n absoluteView.push(viewPath.route);\n }\n }\n const data = {\n computedTree: [],\n indexedPlanesReference: indexedPlanesReference,\n planesPropertiesReference: planesPropertiesReference,\n appConfiguration: appConfiguration\n };\n return data;\n};\n\nconst serverComputeMetastate = (isoMatch, paths, globals) => __awaiter(void 0, void 0, void 0, (function*() {\n const protocol = \"http\";\n const host = \"localhost:63000\";\n const indexedPlanes = computeIndexedPlanes(paths, protocol, host);\n const pluridApplications = yield collectApplicationsFromPath(isoMatch, protocol, host, globals);\n const states = {};\n for (const application of pluridApplications) {\n const {planes: planes, view: view} = application;\n const {computedTree: computedTree, appConfiguration: appConfiguration} = computeApplication(indexedPlanes, planes, undefined, view);\n const state = {\n configuration: Object.assign({}, appConfiguration),\n shortcuts: {\n global: true\n },\n themes: {\n general: themes__default[\"default\"].plurid,\n interaction: themes__default[\"default\"].plurid\n },\n ui: {\n toolbarScrollPosition: 50\n },\n space: {\n loading: false,\n animatedTransform: false,\n scale: 1,\n rotationX: 0,\n rotationY: 0,\n translationX: 0,\n translationY: 0,\n translationZ: 0,\n initialTree: computedTree,\n tree: computedTree,\n activeUniverseID: \"\",\n camera: {\n x: 0,\n y: 0,\n z: 0\n },\n viewSize: {\n width: 1440,\n height: 821\n },\n spaceSize: {\n width: 1440,\n height: 821,\n depth: 0,\n topCorner: {\n x: 0,\n y: 0,\n z: 0\n }\n },\n view: view,\n culledView: []\n }\n };\n const id = isoMatch.data.value;\n states[id] = state;\n }\n return {\n states: states\n };\n}));\n\nconst usePluridRouter = () => {\n const [routerValue, setRouterValue] = React.useState(\"\");\n React.useEffect((() => {\n const fetchState = () => {\n const state = pluridFunctions.storage.loadState(pluridData.PLURID_ROUTER_STORAGE);\n if (state) {\n setRouterValue(state);\n }\n };\n fetchState();\n window.addEventListener(pluridData.PLURID_ROUTER_LOCATION_STORED, fetchState);\n return () => {\n window.removeEventListener(pluridData.PLURID_ROUTER_LOCATION_STORED, fetchState);\n };\n }), []);\n return routerValue;\n};\n\nconst {IsoMatcher: PluridIsoMatcher, RouteParser: PluridRouteParser} = pluridEngine.routing;\n\nconst internals = {\n PluridPlaneBridge: ConnectedPluridPlaneBridge,\n PluridPlaneContent: PluridPlaneContent,\n PluridPlaneControls: ConnectedPluridPlaneControls,\n PluridPlaneDebugger: ConnectedPluridPlaneDebugger,\n PluridSpaceDebugger: ConnectedPluridSpaceDebugger\n};\n\nconst Plurid = {\n Application: PluridApplication,\n RouterStatic: PluridRouterStatic,\n RouterBrowser: PluridRouterBrowser,\n Provider: PluridProvider,\n Link: PluridLink$1,\n RouterLink: PluridRouterLink,\n ApplicationConfigurator: ConnectedPluridApplicationConfigurator,\n PlaneConfigurator: ConnectedPluridPlaneConfigurator,\n ExternalPlane: ConnectedExternalPlane,\n IframePlane: ConnectedIframePlane,\n VirtualList: ConnectedPluridVirtualList,\n SPACE_LAYOUT: pluridData.LAYOUT_TYPES,\n SIZES: pluridData.SIZES,\n TRANSFORM_MODES: pluridData.TRANSFORM_MODES,\n TRANSFORM_TOUCHES: pluridData.TRANSFORM_TOUCHES,\n PubSub: PluridPubSub__default[\"default\"],\n PUBSUB_TOPIC: pluridData.PLURID_PUBSUB_TOPIC,\n serverComputeMetastate: serverComputeMetastate,\n IsoMatcher: PluridIsoMatcher,\n routerNavigate: pluridEngine.pluridRouterNavigate,\n internals: internals\n};\n\nObject.defineProperty(exports, \"PLURID_PUBSUB_TOPIC\", {\n enumerable: true,\n get: function() {\n return pluridData.PLURID_PUBSUB_TOPIC;\n }\n});\n\nObject.defineProperty(exports, \"PLURID_ROUTER_LOCATION_CHANGED\", {\n enumerable: true,\n get: function() {\n return pluridData.PLURID_ROUTER_LOCATION_CHANGED;\n }\n});\n\nObject.defineProperty(exports, \"PLURID_ROUTER_LOCATION_STORED\", {\n enumerable: true,\n get: function() {\n return pluridData.PLURID_ROUTER_LOCATION_STORED;\n }\n});\n\nObject.defineProperty(exports, \"SIZES\", {\n enumerable: true,\n get: function() {\n return pluridData.SIZES;\n }\n});\n\nObject.defineProperty(exports, \"SPACE_LAYOUT\", {\n enumerable: true,\n get: function() {\n return pluridData.LAYOUT_TYPES;\n }\n});\n\nObject.defineProperty(exports, \"TRANSFORM_MODES\", {\n enumerable: true,\n get: function() {\n return pluridData.TRANSFORM_MODES;\n }\n});\n\nObject.defineProperty(exports, \"TRANSFORM_TOUCHES\", {\n enumerable: true,\n get: function() {\n return pluridData.TRANSFORM_TOUCHES;\n }\n});\n\nObject.defineProperty(exports, \"pluridRouterNavigate\", {\n enumerable: true,\n get: function() {\n return pluridEngine.pluridRouterNavigate;\n }\n});\n\nObject.defineProperty(exports, \"PluridPubSub\", {\n enumerable: true,\n get: function() {\n return PluridPubSub__default[\"default\"];\n }\n});\n\nexports.PluridApplication = PluridApplication;\n\nexports.PluridApplicationConfigurator = ConnectedPluridApplicationConfigurator;\n\nexports.PluridExternalPlane = ConnectedExternalPlane;\n\nexports.PluridIframePlane = ConnectedIframePlane;\n\nexports.PluridIsoMatcher = PluridIsoMatcher;\n\nexports.PluridLink = PluridLink$1;\n\nexports.PluridPlaneConfigurator = ConnectedPluridPlaneConfigurator;\n\nexports.PluridProvider = PluridProvider;\n\nexports.PluridRouteParser = PluridRouteParser;\n\nexports.PluridRouterBrowser = PluridRouterBrowser;\n\nexports.PluridRouterLink = PluridRouterLink;\n\nexports.PluridRouterStatic = PluridRouterStatic;\n\nexports.PluridVirtualList = ConnectedPluridVirtualList;\n\nexports[\"default\"] = Plurid;\n\nexports.getDirectPlaneMatch = getDirectPlaneMatch;\n\nexports.internals = internals;\n\nexports.pluridStateModules = modules;\n\nexports.serverComputeMetastate = serverComputeMetastate;\n\nexports.usePluridRouter = usePluridRouter;\n//# sourceMappingURL=index.js.map\n"],"names":["Object","defineProperty","exports","value","pluridData","require$$0","pluridEngine","require$$1","PluridPubSub","require$$2","React","require$$3","reactRedux","require$$4","redux","require$$5","thunk","require$$6","pluridFunctions","require$$7","themes$1","require$$8","styled","require$$9","pluridUiComponentsReact","require$$10","pluridIconsReact","require$$11","pluridFunctionsReact","require$$12","reactDom","require$$13","fetch","require$$14","elementqlClientReact","require$$15","_interopDefaultLegacy","e","default","PluridPubSub__default","React__default","thunk__default","themes__default","styled__default","fetch__default","PluridContext","createContext","undefined","SET_CONFIGURATION","SET_CONFIGURATION_MICRO","SET_CONFIGURATION_PLANE_CONTROLS","SET_CONFIGURATION_PLANE_OPACITY","SET_CONFIGURATION_THEME_GENERAL","SET_CONFIGURATION_THEME_INTERACTION","SET_CONFIGURATION_LANGUAGE","TOGGLE_CONFIGURATION_VIEWCUBE_HIDE","TOGGLE_CONFIGURATION_VIEWCUBE_BUTTONS","TOGGLE_CONFIGURATION_VIEWCUBE_OPAQUE","TOGGLE_CONFIGURATION_VIEWCUBE_CONCEAL","TOGGLE_CONFIGURATION_TOOLBAR_CONCEAL","TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_ICONS","TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_BUTTONS","TOGGLE_CONFIGURATION_TOOLBAR_OPAQUE","TOGGLE_CONFIGURATION_TOOLBAR_TOGGLE_DRAWER","TOGGLE_CONFIGURATION_SPACE_TRANSPARENT_UI","TOGGLE_CONFIGURATION_SPACE_SHOW_TRANSFORM_ORIGIN","SET_CONFIGURATION_SPACE_TRANSFORM_ORIGIN_SIZE","SET_CONFIGURATION_SPACE_TRANSFORM_MODE","TOGGLE_CONFIGURATION_SPACE_TRANSFORM_MULTIMODE","SET_CONFIGURATION_SPACE_TRANSFORM_TOUCH","TOGGLE_CONFIGURATION_SPACE_FIRST_PERSON","SET_CONFIGURATION_SPACE_TRANSFORM_LOCKS","SET_CONFIGURATION_SPACE_LAYOUT_TYPE","SET_CONFIGURATION_SPACE_CULLING_DISTANCE","index$o","freeze","__proto__","index$n","setConfiguration","payload","type","setConfigurationMicro","setConfigurationPlaneControls","planeControls","setConfigurationPlaneOpacity","setConfigurationThemeGeneralAction","setConfigurationThemeInteractionAction","setConfigurationLanguageAction","toggleConfigurationViewcubeHide","toggle","toggleConfigurationViewcubeButtons","toggleConfigurationViewcubeOpaque","toggleConfigurationViewcubeConceal","toggleConfigurationToolbarConceal","toggleConfigurationToolbarTransformIcons","toggleConfigurationToolbarTransformButtons","toggleConfigurationSpaceTransparentUI","toggleConfigurationSpaceShowTransformOrigin","toggleConfigurationToolbarOpaque","toggleConfigurationToolbarToggleDrawer","drawer","setConfigurationSpaceTransformOriginSize","size","setConfigurationSpaceTransformMode","mode","toggleConfigurationSpaceTransformMultimode","setConfigurationSpaceTransformTouch","touch","toggleConfigurationSpaceFirstPerson","setConfigurationSpaceTransformLocks","transformLock","setConfigurationSpaceLayoutType","layoutType","setConfigurationSpaceCullingDistance","initialState$5","assign","defaultConfiguration","state","action","newState","elements","toolbar","show","plane","controls","viewcube","opacity","setConfigurationThemeGeneral","updatedTheme","general","interaction","global","theme","setConfigurationThemeInteraction","setConfigurationLanguage","language","buttons","opaque","conceal","transformIcons","transformButtons","toggleConfigurationShowTransformOrigin","space","transformOrigin","transparentUI","transformMode","TRANSFORM_MODES","ALL","transformMultimode","transformTouch","firstPerson","toggledDrawers","includes","updatedDrawers","filter","el","transformLocks","updatedTransformLocks","setConfigurationSpaceLayout","layout","LAYOUT_TYPES","cullingDistance","index$m","SET_STATE","index$l","getConfiguration","configuration","actions","initialState","reducer","resolvers","selectors","Types","index$k","initialState$4","index$i","index$g","SHORTCUTS_SET_GLOBAL_SHORTCUTS","SHORTCUTS_UNSET_GLOBAL_SHORTCUTS","index$f","index$e","setGlobalShortcuts","unsetGlobalShortcuts","initialState$3","index$d","index$c","getGlobal","shortcuts","SET_SPACE_FIELD","SET_SPACE_LOADING","SET_TRANSFORM","SET_ANIMATED_TRANSFORM","SET_TRANSFORM_TIME","SET_SPACE_LOCATION","VIEW_CAMERA_MOVE_FORWARD","VIEW_CAMERA_MOVE_BACKWARD","VIEW_CAMERA_MOVE_LEFT","VIEW_CAMERA_MOVE_RIGHT","VIEW_CAMERA_MOVE_UP","VIEW_CAMERA_MOVE_DOWN","VIEW_CAMERA_TURN_UP","VIEW_CAMERA_TURN_DOWN","VIEW_CAMERA_TURN_LEFT","VIEW_CAMERA_TURN_RIGHT","ROTATE_UP","ROTATE_DOWN","ROTATE_LEFT","ROTATE_X","ROTATE_X_WITH","ROTATE_RIGHT","ROTATE_Y","ROTATE_Y_WITH","TRANSLATE_UP","TRANSLATE_DOWN","TRANSLATE_LEFT","TRANSLATE_RIGHT","TRANSLATE_IN","TRANSLATE_OUT","TRANSLATE_X_WITH","TRANSLATE_Y_WITH","SCALE_UP","SCALE_DOWN","SCALE_UP_WITH","SCALE_DOWN_WITH","SET_INITIAL_TREE","SET_TREE","SET_ACTIVE_UNIVERSE","SPACE_RESET_TRANSFORM","SET_VIEW_SIZE","SET_SPACE_SIZE","UPDATE_SPACE_TREE_PLANE","UPDATE_SPACE_LINK_COORDINATES","SPACE_SET_VIEW","SPACE_SET_CULLED_VIEW","index$b","index$a","setSpaceField","setSpaceLoading","setTransform","setAnimatedTransform","setTransformTime","setSpaceLocation","viewCameraMoveForward","viewCameraMoveBackward","viewCameraMoveLeft","viewCameraMoveRight","viewCameraMoveUp","viewCameraMoveDown","viewCameraTurnUp","viewCameraTurnDown","viewCameraTurnLeft","viewCameraTurnRight","rotateUp","rotateDown","rotateX","rotateXWith","rotateLeft","rotateRight","rotateY","rotateYWith","translateUp","translateDown","translateLeft","translateRight","translateIn","translateOut","translateXWith","translateYWith","scaleUp","scaleDown","scaleUpWith","scaleDownWith","setInitialTree","setTree","setActiveUniverse","universeID","spaceResetTransform","setViewSize","setSpaceSize","updateSpaceTreePlane","updateSpaceLinkCoordinates","spaceSetView","spaceSetCulledView","initialState$2","loading","transform","animatedTransform","transformTime","scale","rotationX","rotationY","translationX","translationY","translationZ","initialTree","tree","activeUniverseID","camera","x","y","z","viewSize","width","window","innerWidth","height","innerHeight","spaceSize","depth","topCorner","view","culledView","quaternion","matrix","matrixArrayToCSSMatrix","matrixArrayToCSSMatrix$1","rotateMatrix","rotateMatrix$1","multiplyArrayOfMatrices","multiplyArrayOfMatrices$1","scaleMatrix","scaleMatrix$1","translateMatrix","translateMatrix$2","degToRad","degToRad$2","computeMatrix","spaceState","transformOriginX","transformOriginY","transformOriginZ","rotationMatrix","translationMatrix","scalationMatrix","transformMatrix","toRadians","mathematics","geometry","getNewState","objects","clone","field","resolvedTranslationX","resolvedTranslationY","resolvedTranslationZ","resolvedRotationX","resolvedRotationY","resolvedScale","TRANSLATION_STEP","Math","cos","sin","ROTATION_STEP","computedScale","SCALE_STEP","SCALE_UPPER_LIMIT","SCALE_LOWER_LIMIT","abs","updatedTree","updateTreePlane","planeID","linkCoordinates","updateTreeByPlaneIDWithLinkCoordinates","index$9","index$8","getLoading","getTransformMatrix","getAnimatedTransform","getTransformTime","getRotationX","getRotationY","getTranslationX","getTranslationY","getTranslationZ","getScale","getTransform","getInitialTree","getTree","getActiveUniverseID","getView","getViewSize","getCulledView","THEMES_SET_GENERAL_THEME","THEMES_SET_INTERACTION_THEME","index$7","index$6","setGeneralTheme","setInteractionTheme","initialState$1","plurid","index$5","index$4","getGeneralTheme","themes","getInteractionTheme","SET_UI_TOOLBAR_SCROLL_POSITION","index$3","index$2","setUIToolbarScrollPosition","toolbarScrollPosition","index$1","index","getToolbarScrollPosition","ui","modules","rootReducer","combineReducers","store","preloadedState","createStore","applyMiddleware","StateContext","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","result","done","then","apply","Context","direction","directionLogic","loadHammer","__esModule","n","create","keys","forEach","k","d","getOwnPropertyDescriptor","get","enumerable","_interopNamespace","require$$16","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","styleInject","GlobalStyle","createGlobalStyle","StyledView","div","props","fullHeight","TRANSLATION","ROTATION","SCALE","backgroundColorTertiary","backgroundColorPrimary","ErrorBoundary","Component","constructor","super","this","hasError","static","error","componentDidCatch","errorInfo","render","renderError","children","StyledPluridPlane","mouseOver","planeOpacity","backgroundColorPrimaryAlpha","decomposedColor","decomposeColor","hue","saturation","lightness","boxShadowUmbra","colorPrimary","fontFamilySansSerif","StyledPluridPlaneBridge","backgroundColorDark","ConnectedPluridPlaneBridge","connect","stateGeneralTheme","stateConfiguration","dispatch","context","properties","PLURID_ENTITY_PLANE_BRIDGE","StyledPluridPlaneControls","boxShadowUmbraInset","StyledPluridPlaneControlsLeft","StyledPluridPlaneControlsCenter","StyledPluridPlaneControlsRight","inputs","Textline","PluridTextline","universal","ConnectedPluridPlaneControls","generalTheme","interactionTheme","treePlane","pathbar","route","routeDivisions","protocol","host","encodeURIComponent","path","setPath","useState","showSearch","setShowSearch","PLURID_ENTITY_PLANE_CONTROLS","text","atChange","event","target","onChange","id","absolute","atKeyDown","key","onKeyDown","ariaLabel","StyledPluridPlaneContent","PluridPlaneContent","planeContentElement","useRef","PLURID_ENTITY_PLANE_CONTENT","ConnectedPluridPlane","stateViewSize","dispatchUpdateSpaceTreePlane","planeWidth","showPlaneControls","numbers","checkIntegerNonUnit","useContext","Fragment","planeRenderError","setMouseOver","planeContentProperties","suppressHydrationWarning","cleanTemplate","location","translateX","translateY","translateZ","onMouseEnter","onMouseLeave","PLURID_ENTITY_PLANE","parentPlaneID","isReactRenderable","component","url","StyledPluridRoot","getPlanesRegistrar","getPlanesRegistrar$2","getRegisteredPlane","planes","ConnectedPluridRoot","planesRegistrar","planeContext","PlaneContext","planeContextValue","customPlane","matchedRoute","CustomPluridPlane","childrenPlanes","setChildrenPlanes","computeChildrenPlanes","planesRegistry","map","child","sourceID","activePlane","Plane","pluridProperty","fragments","parameters","query","match","renderablePlane","renderableCustomPlane","Provider","useEffect","JSON","stringify","pluridPlaneID","pluridPlane","planeProperties","PLURID_ENTITY_ROOT","StyledPluridRoots","ConnectedPluridRoots","spaceTransformMatrix","spaceAnimatedTransform","spaceTransformTime","stateTree","transition","PLURID_ENTITY_ROOTS","fadeIn","keyframes","fadeInAnimation","fadeInTime","StyledPluridSpace","isMounted","ConnectedPluridSpace","setIsMounted","PLURID_ENTITY_SPACE","resolveSize","SIZES","SMALL","NORMAL","LARGE","StyledOrigin","backgroundColorTertiaryAlpha","ConnectedOrigin","stateInteractionTheme","showTransformOrigin","transformOriginSize","PLURID_ENTITY_TRANSFORM_ORIGIN","MENUS","StyledToolbar","mouseIn","showMenu","NONE","StyledToolbarButtons","backgroundColorSecondary","showIcons","showTransformButtons","documentsBased","StyledToolbarButton","button","active","StyledIcon","StyledPluridMenuUniverses","afterline","StyledPluridMenuUniversesScroll","li","boxShadowUmbraColor","ConnectedPluridMenuUniverses","dispatchSetActiveUniverse","documentID","StyledPluridDrawer","toggled","StyledPluridDrawerHeading","StyledPluridDrawerItems","typography","Heading","PluridHeading","ConnectedPluridDrawer","heading","items","onClick","StyledPluridMoreMenu","StyledPluridMoreMenuItem","last","StyledPluridMoreMenuScroll","Dropdown","PluridDropdown$1","ConnectedPluridMenuMoreGlobal","stateLanguage","dispatchSetConfigurationThemeGeneralAction","dispatchSetConfigurationThemeInteractionAction","dispatchSetConfigurationLanguage","dispatchSetGeneralTheme","dispatchSetInteractionTheme","selectedTheme","generalThemeName","setGeneralThemeName","interactionThemeName","setInteractionThemeName","internatiolate","internationalization","fields","toolbarDrawerGlobalGeneralTheme","selectables","selected","atSelect","selection","filterable","heightItems","fontSize","toolbarDrawerGlobalInteractionTheme","toolbarDrawerGlobalLanguage","languages","Switch","PluridSwitch$3","ConnectedPluridMenuMoreTransform","dispatchToggleConfigurationSpaceTransformMultimode","multimode","dispatchSetConfigurationSpaceTransformTouch","dispatchSetConfigurationSpaceTransformLocks","lock","toolbarDrawerTransformMultiModeTransform","checked","exclusive","level","toolbarDrawerTransformAllowRotationX","toolbarDrawerTransformAllowRotationY","toolbarDrawerTransformAllowTranslationX","toolbarDrawerTransformAllowTranslationY","toolbarDrawerTransformAllowTranslationZ","toolbarDrawerTransformAllowScale","toolbarDrawerTransformTouchTransform","TRANSFORM_TOUCHES","PAN","SWIPE","PluridDropdown","PluridSwitch$2","Slider","PluridSlider$1","ConnectedPluridMenuMoreSpace","dispatchSetConfigurationPlaneOpacity","dispatchToggleConfigurationSpaceTransparentUI","dispatchToggleConfigurationSpaceShowTransformOrigin","dispatchSetConfigurationSpaceTransformOriginSize","dispatchSetConfigurationSpaceLayoutType","layoutNames","toolbarDrawerSpaceTransparentUserInterface","toolbarDrawerSpaceShowTransformOrigin","toolbarDrawerSpaceTransformOriginSize","toLowerCase","toUpperCase","toolbarDrawerSpacePlaneOpacity","max","min","defaultValue","thumbSize","toolbarDrawerSpaceLayoutType","values","replace","PluridSwitch$1","ConnectedPluridMenuMoreToolbar","dispatchToggleConfigurationToolbarConceal","dispatchToggleConfigurationToolbarTransformIcons","dispatchToggleConfigurationToolbarTransformButtons","dispatchToggleConfigurationToolbarOpaque","viewSizeSmall","setViewSizeSmall","toolbarDrawerToolbarAlwaysOpaque","toolbarDrawerToolbarShowTransformIcons","toolbarDrawerToolbarShowTransformArrows","toolbarDrawerToolbarConcealToolbar","PluridSwitch","ConnectedPluridMenuMoreViewcube","dispatchToggleConfigurationViewcubeHide","dispatchToggleConfigurationViewcubeButtons","dispatchToggleConfigurationViewcubeOpaque","dispatchToggleConfigurationViewcubeConceal","toolbarDrawerViewcubeShowViewcube","toolbarDrawerViewcubeShowTransformButtons","toolbarDrawerViewcubeAlwaysOpaque","toolbarDrawerViewcubeConcealViewcube","PluridSlider","ConnectedPluridMenuMoreTechnical","dispatchSetConfigurationSpaceCullingDistance","localCullingDistance","setLocalCullingDistance","dispatchCullingDistanceUpdate","useDebouncedCallback","toolbarDrawerTechnicalCullingDistance","ConnectedPluridMenuMoreShortcuts","defaultShortcuts","shortcut","shortcutData","shortcutsNames","name","internationalizedKey","modifier","modifierString","Array","isArray","reduce","total","element","internationalizedName","keyAsAny","keyName","length","moreMenusRecord","GLOBAL","toolbarDrawerGlobalTitle","TOOLBAR_DRAWERS","TRANSFORM","toolbarDrawerTransformTitle","SPACE","toolbarDrawerSpaceTitle","TOOLBAR","toolbarDrawerToolbarTitle","VIEWCUBE","toolbarDrawerViewcubeTitle","TECHNICAL","toolbarDrawerTechnicalTitle","SHORTCUTS","toolbarDrawerShortcutsTitle","moreMenus","ConnectedPluridMoreMenu","stateToolbarMenuScrollPosition","dispatchToggleConfigurationToolbarToggleDrawer","dispatchSetUIToolbarScrollPosition","drawers","menus","resolvedMenus","menu","push","resolveMenus","moreMenuScrollElement","handleWheel","_event","current","scrollPosition","scrollTop","addEventListener","removeEventListener","moreMenu","StyledPluridToolbarRotate","StyledPluridTransformArrow","pressed","arrowSigns","left","right","up","down","ConnectedPluridTransformArrow","arrowSign","pressingInterval","arrowElement","setPressed","handleTouch","clearInterval","setInterval","Hammer","on","off","ConnectedPluridToolbarRotate","toggleTransform","PluridIconRotate","toolbarTransformRotate","StyledPluridToolbarScale","ConnectedPluridToolbarScale","PluridIconScale","toolbarTransformScale","StyledPluridToolbarTranslate","ConnectedPluridToolbarTranslate","PluridIconTranslate","toolbarTransformTranslate","ConnectedPluridToolbar","dispatchToggleConfigurationSpaceFirstPerson","dispatchSetConfigurationSpaceTransformMode","showToolbar","menuTimeout","setMouseIn","setShowMenu","setShowIcons","setShowTransformButtons","TYPE","clearTimeout","setTimeout","PLURID_ENTITY_TOOLBAR","PluridIconFirstPerson","handleShowMenu","MORE","PluridIconMore","UNIVERSES","StyledPluridViewcube","StyledPluridViewcubeArrow","StyledPluridViewcubeArrowIcon","StyledFitView","StyledPluridViewcubeFace","colorTertiary","face","boxShadowPenumbraColor","StyledPluridViewcubeFaceZone","hovered","colorSecondary","faceTypes","zoneCodes","frontTopLeft","frontTopCenter","frontTopRight","frontMiddleLeft","frontMiddleCenter","frontMiddleRight","frontBottomLeft","frontBottomCenter","frontBottomRight","rightTopLeft","rightTopCenter","rightTopRight","rightMiddleLeft","rightMiddleCenter","rightMiddleRight","rightBottomLeft","rightBottomCenter","rightBottomRight","backTopLeft","backTopCenter","backTopRight","backMiddleLeft","backMiddleCenter","backMiddleRight","backBottomLeft","backBottomCenter","backBottomRight","leftTopLeft","leftTopCenter","leftTopRight","leftMiddleLeft","leftMiddleCenter","leftMiddleRight","leftBottomLeft","leftBottomCenter","leftBottomRight","topTopLeft","topTopCenter","topTopRight","topMiddleLeft","topMiddleCenter","topMiddleRight","topBottomLeft","topBottomCenter","topBottomRight","baseTopLeft","baseTopCenter","baseTopRight","baseMiddleLeft","baseMiddleCenter","baseMiddleRight","baseBottomLeft","baseBottomCenter","baseBottomRight","faceTransform","A1","A2","A3","B1","B2","B3","C1","C2","C3","A4","A5","B4","B5","C4","C5","A6","A7","B6","B7","C6","C7","A8","B8","C8","D1","E1","ConnectedPluridViewcubeFace","dispatchRotateX","angleX","dispatchRotateY","angleY","dispatchSetAnimatedTransform","animated","faceText","hoveredZone","setHoveredZone","activeZone","setActiveZone","opaqueFace","handleClick","zoneCode","StyledPluridViewcubeModel","StyledPluridViewcubeModelContainer","StyledPluridViewcubeModelCube","translateMatrix$1","degToRad$1","ConnectedPluridViewcubeModel","spaceRotationX","spaceRotationY","stateAnimatedTransform","stateTransformTime","offsets","transformOrigins","computeTransform","viewcubeFront","viewcubeBack","viewcubeLeft","viewcubeRight","viewcubeTop","viewcubeBase","ConnectedPluridViewcube","dispatchRotateXWith","dispatchRotateYWith","dispatchSpaceResetTransform","showViewcube","animatedRotate","onMouseMove","PLURID_ENTITY_VIEWCUBE","gridArea","ctrlKey","metaKey","PluridIconGlobal","ConnectedPluridPlanesView","getRegisteredPlanes","ConnectedView","stateTransform","stateSpaceLoading","stateSpaceView","dispatchSetConfiguration","dispatchSetConfigurationMicro","dispatchSpaceSetViewSize","dispatchSetSpaceLoading","dispatchSetTransformTime","dispatchSetSpaceLocation","spaceLocation","dispatchSetInitialTree","dispatchSetTree","dispatchTranslateXWith","dispatchTranslateYWith","dispatchScaleUpWith","dispatchScaleDownWith","dispatchSpaceSetView","pubsub","planeNotFound","viewElement","pluridPubSub","setPluridPubSub","shortcutsCallback","useCallback","locks","defaultPrevented","dom","verifyPathInputElement","noModifiers","shiftKey","altKey","code","handleGlobalShortcuts","wheelCallback","transformModes","rotation","translation","modes","preventDefault","deltas","deltaX","deltaY","getWheelDirection","handleGlobalWheel","treeUpdate","computedTree","Tree","compute","statePlane","computedPlane","entries","treeUpdateCallback","handlePubSubSubscribe","configurationIndex","subscribe","topic","PLURID_PUBSUB_TOPIC","CONFIGURATION","callback","data","internal","computedConfiguration","merge","spaceTransformIndex","SPACE_TRANSFORM","spaceAnimatedTransformIndex","SPACE_ANIMATED_TRANSFORM","time","spaceRotateXWithIndex","SPACE_ROTATE_X_WITH","spaceRotateXToIndex","SPACE_ROTATE_X_TO","spaceRotateYWithIndex","SPACE_ROTATE_Y_WITH","spaceRotateYToIndex","SPACE_ROTATE_Y_TO","spaceTranslateXWithIndex","SPACE_TRANSLATE_X_WITH","spaceTranslateYWithIndex","SPACE_TRANSLATE_Y_WITH","viewAddPlaneIndex","VIEW_ADD_PLANE","updatedView","viewSetPlanesIndex","VIEW_SET_PLANES","viewRemovePlaneIndex","VIEW_REMOVE_PLANE","unsubscribe","handlePubSubPublish","internalTransform","publish","handleSwipe","velocity","distance","rotationMode","translationMode","scalationMode","handlePan","rotationVelocity","translationVelocity","scaleVelocity","passive","handleResize","meta","debounce","offsetWidth","offsetHeight","defaults","cssProps","userSelect","userDrag","tapHighlightColor","touchSelect","set","DIRECTION_ALL","handleGamepadConnect","navigator","getGamepads","gamepad","handleGamepadDisconnect","unsubscribers","unsubscriber","pluridContext","registerPubSub","pluridPubSubs","viewContainer","tabIndex","PLURID_ENTITY_VIEW","registerPlanes","PluridApplication","storeID","defaultStore","computeStore","subscribeStore","componentDidUpdate","updatedStore","componentWillUnmount","storeUnubscriber","precomputedState","useLocalStorage","currentState","getState","localState","local","load","contextState","states","localStorage","stateData","setItem","contextType","StyledSpaces","alignment","snapType","resolvePluridRoutePlaneData","Registrar","PluridPlanesRegistrar$1","computePluridRoute","isoMatcher","directPlane","kind","renderDirectPlane","notFoundRoute","exterior","spaces","slotted","resolver","pluridRouteProperty","PluridRouteExterior","displayName","pluridApplication","_a","_b","_c","_d","_e","_f","multispaceAlignment","multispace","multispaceSnapType","PluridExterior","PluridSpaces","spacesArray","planeData","fullPath","PLURID_ROUTE_DEFAULT_PATH_VALUE","PLURID_ROUTE_DEFAULT_PATH","utilities","cleanPathElement","PLURID_ROUTE_DEFAULT_SPACE_VALUE","PLURID_ROUTE_DEFAULT_SPACE","PLURID_ROUTE_DEFAULT_UNIVERSE","PLURID_ROUTE_DEFAULT_CLUSTER","join","PLURID_ROUTE_SEPARATOR","universes","universe","clusters","cluster","PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE","PLURID_ROUTE_DEFAULT_CLUSTER_VALUE","pluridPlanesRegistrar","App","uuid","generate","pluridPlanes","MultispaceHeader","MultispaceFooter","header","footer","PLURID_ENTITY_MULTISPACE","renderMultispace","routePlane","flat","pluridRoute","Flat","PluridPlanesRegistrar","IsoMatcher","PluridIsoMatcher$1","routing","PluridRouterBrowser","routes","shell","staticContext","cleanNavigationView","cleanNavigation","notFoundPath","notFoundPathProperty","link","startsWith","gatherPluridPlanes","pluridIsoMatcher","routePlanes","mounted","useMounted","matchedPath","setMatchedPath","pathname","search","computeInitialMatchedPath","setMatchedRoute","PluridRoute","setPluridRoute","handleLocation","detail","PluridRouterExterior","PLURID_ROUTER_LOCATION_CHANGED","history","pushState","DirectPlane","storage","saveState","PLURID_ROUTER_STORAGE","locationStoredEvent","CustomEvent","PLURID_ROUTER_LOCATION_STORED","dispatchEvent","PluridRouterShell","PluridRouterStatic","protocolProperty","hostProperty","gateway","gatewayQuery","gatewayQueryProperty","gatewayEndpoint","gatewayEndpointProperty","PluridProvider","metastate","defaultLinkCoordinates","PluridPortal","elementID","rootID","usePortal","createPortal","StyledPluridPlanePreview","getPlanesRegistrar$1","ConnectedPluridPlanePreview","StyledPluridLink","a","devisible","suffix","resolveRoute","computePlaneAddress","getPluridPlaneIDByData","getPluridPlaneIDByData$1","radToDeg","multiplyMatrices","rotateYMatrix","getTransformRotate","getTransformTranslate","getTransformScale","matrix3d","PluridLink$1","dispatchSetTransform","dispatchSetSpaceField","dispatchUpdateSpaceLinkCoordinates","planeRoute","_devisible","_suffix","atClick","className","previewAppearTime","PLURID_DEFAULT_CONFIGURATION_LINK_PREVIEW_FADE_IN","previewDisappearTime","PLURID_DEFAULT_CONFIGURATION_LINK_PREVIEW_FADE_OUT","planeRouteResolved","absolutePlaneRoute","network","PLURID_DEFAULT_CONFIGURATION_LINK_SUFFIX","linkElement","hoverInTimeout","hoverOutTimeout","showPreview","setShowPreview","showLink","setShowLink","setPlaneID","setPluridPlaneID","setParentPlaneID","setLinkCoordinates","getPluridLinkCoordinates","partialTop","partialLeft","staticSet","searching","top","getComputedStyle","position","offsetTop","offsetLeft","scrollLeft","parentElement","dataset","pluridEntity","planeControlsHeight","navigateToPluridPlane","updatedPlane","zSign1","zSign2","xOffset","rotate","translate","handleShowPluridPlane","logic","togglePlaneFromTree","toggleLinkFromTree","updatedTreePlane","updateTreeWithNewPlane","getAll","updateTreeWithLink","PLURID_ENTITY_LINK","StyledPluridRouterLinkAnchor","StyledPluridRouterLinkDiv","PluridRouterLink","asAnchor","asAnchorProperty","renderProperties","pluridRouterNavigate","href","StyledPluridApplicationConfigurator","ConnectedPluridApplicationConfigurator","configuratorElement","PLURID_ENTITY_APPLICATION_CONFIGURATOR","StyledPluridPlaneConfigurator","ConnectedPluridPlaneConfigurator","planePlaneID","PLURID_ENTITY_PLANE_CONFIGURATOR","StyledExternalPlane","ConnectedExternalPlane","setComponent","domain","getPttpUrl","pttpPath","getPttpPath","response","method","headers","Accept","body","credentials","json","elementQLClient","ElementQLClient","status","Elements","Element","elementRequest","StyledIframePlane","ConnectedIframePlane","src","VirtualListItem","setHeight","markers","Spinner","PluridSpinner","ConnectedPluridVirtualList","generalHeight","_generalHeight","listElement","rows","heights","fill","start","setStart","end","setEnd","floor","elementHeight","setElementHeight","resizing","setResizing","arithmetic","sum","i","item","random","renderRows","StyledPluridPlaneDebugger","ConnectedPluridPlaneDebugger","StyledPluridSpaceDebugger","ConnectedPluridSpaceDebugger","resolvePluridPlaneData","computeApplication","indexedPlanes","planesPropertiesReference","Map","computedIndexedPlanes","appConfiguration","linkPath","planePath","computedIndexedPlane","indexedPlanesReference","planeSources","indexedPlane","currentView","absoluteView","viewItem","viewPath","serverComputeMetastate","isoMatch","paths","globals","pathName","spaceName","universeName","clusterName","planeName","planeAddress","computeIndexedPlanes","pluridApplications","routeData","plurids","collectApplicationsFromPath","application","PluridIsoMatcher","RouteParser","PluridRouteParser","internals","PluridPlaneBridge","PluridPlaneControls","PluridPlaneDebugger","PluridSpaceDebugger","Plurid","Application","RouterStatic","RouterBrowser","Link","RouterLink","ApplicationConfigurator","PlaneConfigurator","ExternalPlane","IframePlane","VirtualList","SPACE_LAYOUT","PubSub","PUBSUB_TOPIC","routerNavigate","PluridApplicationConfigurator","PluridExternalPlane","PluridIframePlane","PluridLink","PluridPlaneConfigurator","PluridVirtualList","getDirectPlaneMatch","matchRoute","matchPlane","matchPath","pluridStateModules","usePluridRouter","routerValue","setRouterValue","fetchState","loadState"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.min.js","sources":["index.js"],"sourcesContent":["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar pluridData = require(\"@plurid/plurid-data\");\n\nvar pluridEngine = require(\"@plurid/plurid-engine\");\n\nvar PluridPubSub = require(\"@plurid/plurid-pubsub\");\n\nvar React = require(\"react\");\n\nvar reactRedux = require(\"react-redux\");\n\nvar toolkit = require(\"@reduxjs/toolkit\");\n\nvar pluridFunctions = require(\"@plurid/plurid-functions\");\n\nvar themes$2 = require(\"@plurid/plurid-themes\");\n\nvar styled = require(\"styled-components\");\n\nvar pluridFunctionsReact = require(\"@plurid/plurid-functions-react\");\n\nvar pluridIconsReact = require(\"@plurid/plurid-icons-react\");\n\nvar pluridUiComponentsReact = require(\"@plurid/plurid-ui-components-react\");\n\nvar reactDom = require(\"react-dom\");\n\nvar fetch = require(\"cross-fetch\");\n\nvar elementqlClientReact = require(\"@plurid/elementql-client-react\");\n\nfunction _interopDefaultLegacy(e) {\n return e && typeof e === \"object\" && \"default\" in e ? e : {\n default: e\n };\n}\n\nfunction _interopNamespace(e) {\n if (e && e.__esModule) return e;\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach((function(k) {\n if (k !== \"default\") {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return e[k];\n }\n });\n }\n }));\n }\n n[\"default\"] = e;\n return Object.freeze(n);\n}\n\nvar PluridPubSub__default = _interopDefaultLegacy(PluridPubSub);\n\nvar React__default = _interopDefaultLegacy(React);\n\nvar themes__default = _interopDefaultLegacy(themes$2);\n\nvar styled__default = _interopDefaultLegacy(styled);\n\nvar fetch__default = _interopDefaultLegacy(fetch);\n\nconst PluridContext = React__default[\"default\"].createContext(undefined);\n\nconst initialState$5 = Object.assign({}, pluridData.defaultConfiguration);\n\nconst configuration = toolkit.createSlice({\n name: \"configuration\",\n initialState: initialState$5,\n reducers: {\n setConfiguration: (state, action) => {\n state = Object.assign(Object.assign({}, state), action.payload);\n },\n setConfigurationMicro: state => {\n state.elements.toolbar.show = false;\n state.elements.plane.controls.show = false;\n state.elements.viewcube.show = false;\n },\n setConfigurationPlaneControls: (state, action) => {\n state.elements.plane.controls.show = action.payload;\n },\n setConfigurationPlaneOpacity: (state, action) => {\n state.elements.plane.opacity = action.payload;\n },\n setConfigurationThemeGeneral: (state, action) => {\n const updatedTheme = {\n general: action.payload,\n interaction: typeof state.global.theme === \"object\" ? state.global.theme.interaction : \"plurid\"\n };\n state.global.theme = updatedTheme;\n },\n setConfigurationThemeInteraction: (state, action) => {\n const updatedTheme = {\n general: typeof state.global.theme === \"object\" ? state.global.theme.general : \"plurid\",\n interaction: action.payload\n };\n state.global.theme = updatedTheme;\n },\n setConfigurationLanguage: (state, action) => {\n state.global.language = action.payload;\n },\n toggleConfigurationViewcubeHide: (state, action) => {\n state.elements.viewcube.show = action.payload;\n },\n toggleConfigurationViewcubeButtons: (state, action) => {\n state.elements.viewcube.buttons = action.payload;\n },\n toggleConfigurationViewcubeOpaque: (state, action) => {\n state.elements.viewcube.opaque = action.payload;\n },\n toggleConfigurationViewcubeConceal: state => {\n const {conceal: conceal} = state.elements.viewcube;\n state.elements.viewcube.conceal = !conceal;\n },\n toggleConfigurationToolbarConceal: state => {\n const {conceal: conceal} = state.elements.toolbar;\n state.elements.toolbar.conceal = !conceal;\n },\n toggleConfigurationToolbarTransformIcons: state => {\n const {transformIcons: transformIcons} = state.elements.toolbar;\n state.elements.toolbar.transformIcons = !transformIcons;\n },\n toggleConfigurationToolbarTransformButtons: state => {\n const {transformButtons: transformButtons} = state.elements.toolbar;\n state.elements.toolbar.transformButtons = !transformButtons;\n },\n toggleConfigurationShowTransformOrigin: state => {\n const {show: show} = state.space.transformOrigin;\n state.space.transformOrigin.show = !show;\n },\n toggleConfigurationToolbarOpaque: state => {\n const {opaque: opaque} = state.elements.toolbar;\n state.elements.toolbar.opaque = !opaque;\n },\n toggleConfigurationSpaceTransparentUI: state => {\n state.global.transparentUI = !state.global.transparentUI;\n },\n setConfigurationSpaceTransformOriginSize: (state, action) => {\n state.space.transformOrigin.size = action.payload;\n },\n setConfigurationSpaceTransformMode: (state, action) => {\n if (state.space.transformMode !== action.payload) {\n state.space.transformMode = action.payload;\n } else {\n state.space.transformMode = pluridData.TRANSFORM_MODES.ALL;\n }\n },\n toggleConfigurationSpaceTransformMultimode: (state, action) => {\n state.space.transformMultimode = action.payload;\n },\n setConfigurationSpaceTransformTouch: (state, action) => {\n state.space.transformTouch = action.payload;\n },\n toggleConfigurationSpaceFirstPerson: state => {\n const {firstPerson: firstPerson} = state.space;\n state.space.firstPerson = !firstPerson;\n },\n toggleConfigurationToolbarToggleDrawer: (state, action) => {\n const {toggledDrawers: toggledDrawers} = state.elements.toolbar;\n if (toggledDrawers.includes(action.payload)) {\n const updatedDrawers = toggledDrawers.filter((el => el !== action.payload));\n state.elements.toolbar.toggledDrawers = [ ...updatedDrawers ];\n } else {\n state.elements.toolbar.toggledDrawers = [ ...toggledDrawers, action.payload ];\n }\n },\n setConfigurationSpaceTransformLocks: (state, action) => {\n const {transformLocks: transformLocks} = state.space;\n const updatedTransformLocks = Object.assign({}, transformLocks);\n updatedTransformLocks[action.payload] = !transformLocks[action.payload];\n state.space.transformLocks = Object.assign({}, updatedTransformLocks);\n },\n setConfigurationSpaceLayout: (state, action) => {\n const layout = {\n type: pluridData.LAYOUT_TYPES[action.payload]\n };\n state.space.layout = Object.assign({}, layout);\n },\n setConfigurationSpaceCullingDistance: (state, action) => {\n state.space.cullingDistance = action.payload;\n }\n }\n});\n\nconst actions$6 = configuration.actions;\n\nconst getConfiguration = state => state.configuration;\n\nconst selectors$6 = {\n getConfiguration: getConfiguration\n};\n\nconst reducer$6 = configuration.reducer;\n\nvar configuration$1 = Object.freeze({\n __proto__: null,\n configuration: configuration,\n actions: actions$6,\n getConfiguration: getConfiguration,\n selectors: selectors$6,\n reducer: reducer$6\n});\n\nconst initialState$4 = {};\n\nconst general = toolkit.createSlice({\n name: \"general\",\n initialState: initialState$4,\n reducers: {}\n});\n\nconst actions$5 = general.actions;\n\nconst getGeneral = state => state.general;\n\nconst selectors$5 = {\n getGeneral: getGeneral\n};\n\nconst reducer$5 = general.reducer;\n\nvar general$1 = Object.freeze({\n __proto__: null,\n general: general,\n actions: actions$5,\n getGeneral: getGeneral,\n selectors: selectors$5,\n reducer: reducer$5\n});\n\nconst initialState$3 = {\n global: true\n};\n\nconst shortcuts = toolkit.createSlice({\n name: \"shortcuts\",\n initialState: initialState$3,\n reducers: {\n setGlobalShortcuts: (state, action) => {\n state.global = action.payload;\n }\n }\n});\n\nconst actions$4 = shortcuts.actions;\n\nconst getGlobal = state => state.shortcuts.global;\n\nconst selectors$4 = {\n getGlobal: getGlobal\n};\n\nconst reducer$4 = shortcuts.reducer;\n\nvar shortcuts$1 = Object.freeze({\n __proto__: null,\n shortcuts: shortcuts,\n actions: actions$4,\n getGlobal: getGlobal,\n selectors: selectors$4,\n reducer: reducer$4\n});\n\nconst {registerPlanes: registerPlanes, getRegisteredPlanes: getRegisteredPlanes, getPlanesRegistrar: getPlanesRegistrar, getPluridPlaneIDByData: getPluridPlaneIDByData$1, getRegisteredPlane: getRegisteredPlane, resolvePluridRoutePlaneData: resolvePluridRoutePlaneData, resolvePluridPlaneData: resolvePluridPlaneData, Registrar: PluridPlanesRegistrar} = pluridEngine.planes;\n\nconst {IsoMatcher: PluridIsoMatcher$1, resolveRoute: resolveRoute, computePlaneAddress: computePlaneAddress} = pluridEngine.routing;\n\nconst {quaternion: quaternion$1, matrix: matrix$1} = pluridEngine.interaction;\n\nconst {degToRad: degToRad$2} = quaternion$1;\n\nconst {matrixArrayToCSSMatrix: matrixArrayToCSSMatrix$1, rotateMatrix: rotateMatrix$2, multiplyArrayOfMatrices: multiplyArrayOfMatrices$2, scaleMatrix: scaleMatrix$2, translateMatrix: translateMatrix$2} = matrix$1;\n\nconst computeMatrix = spaceState => {\n const {translationX: translationX, translationY: translationY, translationZ: translationZ, rotationX: rotationX, rotationY: rotationY, scale: scale} = spaceState;\n const innerWidth = typeof window === \"undefined\" ? 720 : window.innerWidth / 2;\n const innerHeight = typeof window === \"undefined\" ? 400 : window.innerHeight / 2;\n const transformOriginX = translationX * -1 + innerWidth;\n const transformOriginY = translationY * -1 + innerHeight;\n const transformOriginZ = translationZ * -1;\n const rotationMatrix = rotateMatrix$2(degToRad$2(-rotationX), degToRad$2(-rotationY));\n const translationMatrix = translateMatrix$2(translationX, translationY, translationZ);\n const scalationMatrix = scaleMatrix$2(scale);\n const transformMatrix = multiplyArrayOfMatrices$2([ translationMatrix, translateMatrix$2(transformOriginX, transformOriginY, transformOriginZ), rotationMatrix, translateMatrix$2(-transformOriginX, -transformOriginY, -transformOriginZ), scalationMatrix ]);\n const transform = matrixArrayToCSSMatrix$1(transformMatrix);\n return transform;\n};\n\nconst focusPluridPlaneAnchor = planeID => {\n const selector = `[id='${planeID + pluridData.FOCUS_ANCHOR_SUFFIX}']`;\n const focusAnchor = document.querySelector(selector);\n if (focusAnchor) {\n focusAnchor.focus();\n }\n};\n\nconst getSpace = state => state.space;\n\nconst getLoading = state => state.space.loading;\n\nconst getTransformMatrix = state => state.space.transform;\n\nconst getAnimatedTransform = state => state.space.animatedTransform;\n\nconst getTransformTime = state => state.space.transformTime;\n\nconst getRotationX = state => state.space.rotationX;\n\nconst getRotationY = state => state.space.rotationY;\n\nconst getTranslationX = state => state.space.translationX;\n\nconst getTranslationY = state => state.space.translationY;\n\nconst getTranslationZ = state => state.space.translationZ;\n\nconst getScale = state => state.space.scale;\n\nconst getTree = state => state.space.tree;\n\nconst getTransform = state => ({\n rotationX: state.space.rotationX,\n rotationY: state.space.rotationY,\n translationX: state.space.translationX,\n translationY: state.space.translationY,\n translationZ: state.space.translationZ,\n scale: state.space.scale\n});\n\nconst getActiveUniverseID = state => state.space.activeUniverseID;\n\nconst getView = state => state.space.view;\n\nconst getViewSize = state => state.space.viewSize;\n\nconst getCulledView = state => state.space.culledView;\n\nconst getActivePlaneID = state => state.space.activePlaneID;\n\nconst getIsolatePlane = state => state.space.isolatePlane;\n\nconst getLastClosedPlane = state => state.space.lastClosedPlane;\n\nvar selectors$3 = Object.freeze({\n __proto__: null,\n getSpace: getSpace,\n getLoading: getLoading,\n getTransformMatrix: getTransformMatrix,\n getAnimatedTransform: getAnimatedTransform,\n getTransformTime: getTransformTime,\n getRotationX: getRotationX,\n getRotationY: getRotationY,\n getTranslationX: getTranslationX,\n getTranslationY: getTranslationY,\n getTranslationZ: getTranslationZ,\n getScale: getScale,\n getTree: getTree,\n getTransform: getTransform,\n getActiveUniverseID: getActiveUniverseID,\n getView: getView,\n getViewSize: getViewSize,\n getCulledView: getCulledView,\n getActivePlaneID: getActivePlaneID,\n getIsolatePlane: getIsolatePlane,\n getLastClosedPlane: getLastClosedPlane\n});\n\nconst {toRadians: toRadians} = pluridFunctions.mathematics.geometry;\n\nconst initialState$2 = {\n loading: true,\n transform: \"matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)\",\n animatedTransform: false,\n transformTime: 450,\n scale: 1,\n rotationX: 0,\n rotationY: 0,\n translationX: 0,\n translationY: 0,\n translationZ: 0,\n tree: [],\n activeUniverseID: \"\",\n camera: {\n x: 0,\n y: 0,\n z: 0\n },\n viewSize: {\n width: typeof window === \"undefined\" ? 1440 : window.innerWidth,\n height: typeof window === \"undefined\" ? 821 : window.innerHeight\n },\n spaceSize: {\n width: typeof window === \"undefined\" ? 1440 : window.innerWidth,\n height: typeof window === \"undefined\" ? 821 : window.innerHeight,\n depth: 0,\n topCorner: {\n x: 0,\n y: 0,\n z: 0\n }\n },\n view: [],\n culledView: [],\n activePlaneID: \"\",\n isolatePlane: \"\",\n lastClosedPlane: \"\"\n};\n\nconst space = toolkit.createSlice({\n name: \"space,\",\n initialState: initialState$2,\n reducers: {\n setSpaceField: (state, action) => {\n const {field: field, value: value} = action.payload;\n state[field] = value;\n },\n setSpaceLoading: (state, action) => {\n state.loading = action.payload;\n },\n changeTransform: (state, action) => {},\n setTransform: (state, action) => {\n const {translationX: translationX, translationY: translationY, translationZ: translationZ, rotationX: rotationX, rotationY: rotationY, scale: scale} = action.payload;\n const resolvedTranslationX = translationX !== null && translationX !== void 0 ? translationX : state.translationX;\n const resolvedTranslationY = translationY !== null && translationY !== void 0 ? translationY : state.translationY;\n const resolvedTranslationZ = translationZ !== null && translationZ !== void 0 ? translationZ : state.translationZ;\n const resolvedRotationX = rotationX !== null && rotationX !== void 0 ? rotationX : state.rotationX;\n const resolvedRotationY = rotationY !== null && rotationY !== void 0 ? rotationY : state.rotationY;\n const resolvedScale = scale !== null && scale !== void 0 ? scale : state.scale;\n state.translationX = resolvedTranslationX;\n state.translationY = resolvedTranslationY;\n state.translationZ = resolvedTranslationZ;\n state.rotationX = resolvedRotationX;\n state.rotationY = resolvedRotationY;\n state.scale = resolvedScale;\n },\n setAnimatedTransform: (state, action) => {\n state.animatedTransform = action.payload;\n },\n setTransformTime: (state, action) => {\n state.transformTime = action.payload;\n },\n setSpaceLocation: (state, action) => {\n state = Object.assign(Object.assign({}, state), action.payload);\n },\n viewCameraMoveForward: state => {\n state.translationZ = state.translationZ + pluridData.TRANSLATION_STEP * 6 * Math.cos(toRadians(-state.rotationY));\n state.translationX = state.translationX + pluridData.TRANSLATION_STEP * 6 * Math.sin(toRadians(-state.rotationY));\n state.transform = computeMatrix(state);\n },\n viewCameraMoveBackward: state => {\n state.translationZ = state.translationZ - pluridData.TRANSLATION_STEP * 6 * Math.cos(toRadians(-state.rotationY));\n state.translationX = state.translationX - pluridData.TRANSLATION_STEP * 6 * Math.sin(toRadians(-state.rotationY));\n state.transform = computeMatrix(state);\n },\n viewCameraMoveLeft: state => {\n state.translationX = state.translationX + pluridData.TRANSLATION_STEP * 3 * Math.cos(toRadians(state.rotationY));\n state.translationZ = state.translationZ + pluridData.TRANSLATION_STEP * 3 * Math.sin(toRadians(state.rotationY));\n state.transform = computeMatrix(state);\n },\n viewCameraMoveRight: state => {\n state.translationX = state.translationX - pluridData.TRANSLATION_STEP * 3 * Math.cos(toRadians(state.rotationY));\n state.translationZ = state.translationZ - pluridData.TRANSLATION_STEP * 3 * Math.sin(toRadians(state.rotationY));\n state.transform = computeMatrix(state);\n },\n viewCameraMoveUp: state => {\n state.translationY = state.translationY + pluridData.TRANSLATION_STEP * 3;\n state.transform = computeMatrix(state);\n },\n viewCameraMoveDown: state => {\n state.translationY = state.translationY - pluridData.TRANSLATION_STEP * 3;\n state.transform = computeMatrix(state);\n },\n viewCameraTurnUp: state => {\n state.rotationX = (state.rotationX + pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n viewCameraTurnDown: state => {\n state.rotationX = (state.rotationX - pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n viewCameraTurnLeft: state => {\n state.rotationY = (state.rotationY - pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n viewCameraTurnRight: state => {\n state.rotationY = (state.rotationY + pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n rotateUp: state => {\n state.rotationX = (state.rotationX + pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n rotateDown: state => {\n state.rotationX = (state.rotationX - pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n rotateX: (state, action) => {\n state.rotationX = action.payload;\n state.transform = computeMatrix(state);\n },\n rotateXWith: (state, action) => {\n state.rotationX = state.rotationX + action.payload;\n state.transform = computeMatrix(state);\n },\n rotateLeft: state => {\n state.rotationY = (state.rotationY + pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n rotateRight: state => {\n state.rotationY = (state.rotationY - pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n rotateY: (state, action) => {\n state.rotationY = action.payload;\n state.transform = computeMatrix(state);\n },\n rotateYWith: (state, action) => {\n state.rotationY = state.rotationY + action.payload;\n state.transform = computeMatrix(state);\n },\n translateUp: state => {\n state.translationY = state.translationY - pluridData.TRANSLATION_STEP;\n state.transform = computeMatrix(state);\n },\n translateDown: state => {\n state.translationY = state.translationY + pluridData.TRANSLATION_STEP;\n state.transform = computeMatrix(state);\n },\n translateLeft: state => {\n state.translationX = state.translationX - pluridData.TRANSLATION_STEP * Math.cos(toRadians(state.rotationY));\n state.translationZ = state.translationZ - pluridData.TRANSLATION_STEP * Math.sin(toRadians(state.rotationY));\n state.transform = computeMatrix(state);\n },\n translateRight: state => {\n state.translationX = state.translationX + pluridData.TRANSLATION_STEP * Math.cos(toRadians(state.rotationY));\n state.translationZ = state.translationZ + pluridData.TRANSLATION_STEP * Math.sin(toRadians(state.rotationY));\n state.transform = computeMatrix(state);\n },\n translateIn: state => {\n state.translationZ = state.translationZ - pluridData.TRANSLATION_STEP * 3 * Math.cos(toRadians(-state.rotationY));\n state.translationX = state.translationX - pluridData.TRANSLATION_STEP * 3 * Math.sin(toRadians(-state.rotationY));\n state.transform = computeMatrix(state);\n },\n translateOut: state => {\n state.translationZ = state.translationZ + pluridData.TRANSLATION_STEP * 3 * Math.cos(toRadians(-state.rotationY));\n state.translationX = state.translationX + pluridData.TRANSLATION_STEP * 3 * Math.sin(toRadians(-state.rotationY));\n state.transform = computeMatrix(state);\n },\n translateXWith: (state, action) => {\n state.translationX = state.translationX + action.payload * Math.cos(toRadians(state.rotationY));\n state.translationZ = state.translationZ + action.payload * Math.sin(toRadians(state.rotationY));\n state.transform = computeMatrix(state);\n },\n translateYWith: (state, action) => {\n state.translationY = state.translationY + action.payload;\n state.transform = computeMatrix(state);\n },\n translateZWith: (state, action) => {\n state.translationZ = state.translationZ + action.payload;\n state.transform = computeMatrix(state);\n },\n scaleUp: state => {\n const computedScale = state.scale + pluridData.SCALE_STEP;\n const scale = computedScale < pluridData.SCALE_UPPER_LIMIT ? computedScale : pluridData.SCALE_UPPER_LIMIT;\n state.scale = scale;\n state.transform = computeMatrix(state);\n },\n scaleDown: state => {\n const computedScale = state.scale - pluridData.SCALE_STEP;\n const scale = computedScale > pluridData.SCALE_LOWER_LIMIT ? computedScale : pluridData.SCALE_LOWER_LIMIT;\n state.scale = scale;\n state.transform = computeMatrix(state);\n },\n scaleUpWith: (state, action) => {\n const computedScale = state.scale + Math.abs(action.payload);\n const scale = computedScale < pluridData.SCALE_UPPER_LIMIT ? computedScale : pluridData.SCALE_UPPER_LIMIT;\n state.scale = scale;\n state.transform = computeMatrix(state);\n },\n scaleDownWith: (state, action) => {\n const computedScale = state.scale - Math.abs(action.payload);\n const scale = computedScale > pluridData.SCALE_LOWER_LIMIT ? computedScale : pluridData.SCALE_LOWER_LIMIT;\n state.scale = scale;\n state.transform = computeMatrix(state);\n },\n setTree: (state, action) => {\n state.tree = [ ...action.payload ];\n },\n setActiveUniverse: (state, action) => {\n state.activeUniverseID = action.payload;\n },\n spaceResetTransform: state => {\n state.scale = 1;\n state.rotationX = 0;\n state.rotationY = 0;\n state.translationX = 0;\n state.translationY = 0;\n state.translationZ = 0;\n state.transform = computeMatrix(state);\n },\n setViewSize: (state, action) => {\n state.viewSize = action.payload;\n },\n setSpaceSize: (state, action) => {\n state.spaceSize = action.payload;\n },\n updateSpaceTreePlane: (state, action) => {\n const updatedTree = pluridEngine.general.tree.updateTreePlane(state.tree, action.payload);\n state.tree = updatedTree;\n },\n updateSpaceLinkCoordinates: (state, action) => {\n const {planeID: planeID, linkCoordinates: linkCoordinates} = action.payload;\n const updatedTree = pluridEngine.general.tree.updateTreeByPlaneIDWithLinkCoordinates(state.tree, planeID, linkCoordinates);\n state.tree = updatedTree;\n },\n spaceSetView: (state, action) => {\n state.view = action.payload;\n },\n spaceSetCulledView: (state, action) => {\n state.culledView = action.payload;\n }\n }\n});\n\nconst actions$3 = space.actions;\n\nconst reducer$3 = space.reducer;\n\nvar space$1 = Object.freeze({\n __proto__: null,\n space: space,\n actions: actions$3,\n selectors: selectors$3,\n reducer: reducer$3\n});\n\nconst initialState$1 = {\n general: themes$2.plurid,\n interaction: themes$2.plurid\n};\n\nconst themes = toolkit.createSlice({\n name: \"themes\",\n initialState: initialState$1,\n reducers: {\n setGeneralTheme: (state, action) => {\n state.general = action.payload;\n },\n setInteractionTheme: (state, action) => {\n state.interaction = action.payload;\n }\n }\n});\n\nconst actions$2 = themes.actions;\n\nconst getGeneralTheme = state => state.themes.general;\n\nconst getInteractionTheme = state => state.themes.general;\n\nconst selectors$2 = {\n getGeneralTheme: getGeneralTheme,\n getInteractionTheme: getInteractionTheme\n};\n\nconst reducer$2 = themes.reducer;\n\nvar themes$1 = Object.freeze({\n __proto__: null,\n themes: themes,\n actions: actions$2,\n getGeneralTheme: getGeneralTheme,\n getInteractionTheme: getInteractionTheme,\n selectors: selectors$2,\n reducer: reducer$2\n});\n\nconst initialState = {\n toolbarScrollPosition: 0\n};\n\nconst ui = toolkit.createSlice({\n name: \"ui\",\n initialState: initialState,\n reducers: {\n setUIToolbarScrollPosition: (state, action) => {\n state.toolbarScrollPosition = action.payload;\n }\n }\n});\n\nconst actions$1 = ui.actions;\n\nconst getToolbarScrollPosition = state => state.ui.toolbarScrollPosition;\n\nconst selectors$1 = {\n getToolbarScrollPosition: getToolbarScrollPosition\n};\n\nconst reducer$1 = ui.reducer;\n\nvar ui$1 = Object.freeze({\n __proto__: null,\n ui: ui,\n actions: actions$1,\n getToolbarScrollPosition: getToolbarScrollPosition,\n selectors: selectors$1,\n reducer: reducer$1\n});\n\nvar modules = {\n configuration: configuration$1,\n general: general$1,\n shortcuts: shortcuts$1,\n space: space$1,\n themes: themes$1,\n ui: ui$1\n};\n\nconst reducer = toolkit.combineReducers({\n configuration: modules.configuration.reducer,\n general: modules.general.reducer,\n shortcuts: modules.shortcuts.reducer,\n space: modules.space.reducer,\n themes: modules.themes.reducer,\n ui: modules.ui.reducer\n});\n\nconst store$1 = preloadedState => toolkit.configureStore({\n preloadedState: preloadedState,\n reducer: reducer,\n devTools: false\n});\n\nconst store = store$1;\n\nconst StateContext = React__default[\"default\"].createContext({});\n\nconst loadStateFromContext = (context, space) => {\n if (!context) {\n return;\n }\n if (!space) {\n if (typeof window === \"undefined\") {\n return;\n }\n const defaultContext = context.states[window.location.pathname];\n return defaultContext;\n }\n return context.states[space];\n};\n\nfunction __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P((function(resolve) {\n resolve(value);\n }));\n }\n return new (P || (P = Promise))((function(resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n }));\n}\n\nconst Context = React__default[\"default\"].createContext(null);\n\nvar actions = {\n configuration: modules.configuration.actions,\n general: modules.general.actions,\n shortcuts: modules.shortcuts.actions,\n space: modules.space.actions,\n themes: modules.themes.actions,\n ui: modules.ui.actions\n};\n\nconst {quaternion: quaternion, transform: transform, matrix: matrix} = pluridEngine.interaction;\n\nconst {degToRad: degToRad$1, radToDeg: radToDeg} = quaternion;\n\nconst {multiplyMatricesArray: multiplyMatricesArray, translateMatrix: translateMatrix$1, rotateYMatrix: rotateYMatrix, matrixToCSSMatrix: matrixToCSSMatrix, arrayToMatrix: arrayToMatrix, inverseMatrix: inverseMatrix} = transform.general;\n\nconst {getTransformRotate: getTransformRotate, getTransformTranslate: getTransformTranslate, getTransformScale: getTransformScale} = transform.matrix3d;\n\nconst {rotateMatrix: rotateMatrix$1, translateMatrix: translateMatrixArray, scaleMatrix: scaleMatrix$1, multiplyArrayOfMatrices: multiplyArrayOfMatrices$1} = matrix;\n\nconst computeApplication = (planes, configuration, view) => {\n const appConfiguration = pluridEngine.general.configuration.merge(configuration);\n if (planes) {\n for (const plane of planes) {\n const planeData = resolvePluridPlaneData(plane);\n const linkPath = pluridEngine.routing.resolveRoute(planeData.route);\n if (!linkPath) {\n continue;\n }\n }\n }\n const currentView = view || [];\n const absoluteView = [];\n for (const viewItem of currentView) {\n if (typeof viewItem === \"string\") {\n const viewPath = pluridEngine.routing.resolveRoute(viewItem);\n if (!viewPath) {\n continue;\n }\n absoluteView.push(viewPath.route);\n }\n }\n const origin = \"localhost:63000\";\n const registrar = new PluridPlanesRegistrar(planes, origin);\n const registrarPlanes = registrar.getAll();\n const spaceTree = new pluridEngine.space.tree.Tree({\n planes: registrarPlanes,\n configuration: appConfiguration,\n view: absoluteView\n }, origin);\n const computedTree = spaceTree.compute();\n const data = {\n computedTree: computedTree,\n appConfiguration: appConfiguration\n };\n return data;\n};\n\nconst computePlaneLocation = plane => {\n const {location: location} = plane;\n const {translateX: translateX, translateY: translateY, translateZ: translateZ, rotateY: rotateY} = location;\n const getTransform = () => {\n const innerWidth = typeof window === \"undefined\" ? 720 : window.innerWidth / 2;\n const innerHeight = typeof window === \"undefined\" ? 400 : window.innerHeight / 2;\n const transformOriginX = translateX * -1 + innerWidth;\n const transformOriginY = translateY * -1 + innerHeight;\n const transformOriginZ = translateZ * -1;\n const rotationMatrix = rotateMatrix$1(0, degToRad$1(rotateY));\n const translationMatrix = translateMatrixArray(translateX, translateY, translateZ);\n const scalationMatrix = scaleMatrix$1(1);\n const transformMatrix = multiplyArrayOfMatrices$1([ translationMatrix, translateMatrixArray(transformOriginX, transformOriginY, transformOriginZ), rotationMatrix, translateMatrixArray(-transformOriginX, -transformOriginY, -transformOriginZ), scalationMatrix ]);\n const inverseTransformMatrix = inverseMatrix(arrayToMatrix(transformMatrix));\n const matrix3dTransformMatrix = matrixToCSSMatrix(inverseTransformMatrix);\n const rotate = getTransformRotate(matrix3dTransformMatrix);\n const translate = getTransformTranslate(matrix3dTransformMatrix);\n const scale = getTransformScale(matrix3dTransformMatrix);\n const transform = {\n translationX: translate.translateX,\n translationY: translate.translateY,\n translationZ: translate.translateZ,\n rotationX: radToDeg(rotate.rotateX),\n rotationY: radToDeg(rotate.rotateY),\n scale: scale.scale\n };\n return transform;\n };\n const transform = getTransform();\n const getMatrix3d = () => {\n const zSign1 = rotateY < 100 ? 1 : -1;\n const zSign2 = rotateY < 100 ? -1 : 1;\n const xOffset = rotateY < 100 ? plane.parentPlaneID ? 200 : 0 : 0;\n const newMatrix = multiplyMatricesArray([ translateMatrix$1(-translateX, -translateY, zSign1 * translateZ), rotateYMatrix(degToRad$1(rotateY)), translateMatrix$1(translateX, translateY, zSign2 * translateZ), translateMatrix$1(-(translateX + xOffset), -translateY, zSign1 * translateZ) ]);\n const matrix3d = matrixToCSSMatrix(newMatrix);\n return matrix3d;\n };\n const matrix3d = getMatrix3d();\n return {\n transform: transform,\n matrix3d: matrix3d\n };\n};\n\nconst factoryUseAnimatedTransform = () => {\n let timeout;\n return dispatch => {\n const dispatchSetAnimatedTransform = payload => dispatch(actions.space.setAnimatedTransform(payload));\n dispatchSetAnimatedTransform(true);\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), pluridData.PLURID_DEFAULT_ANIMATED_TRANSFORM_TIMEOUT);\n };\n};\n\nconst useAnimatedTransform = factoryUseAnimatedTransform();\n\nconst navigateToPluridPlane = (dispatch, plane, event, deisolate = true) => {\n if (event && (event.ctrlKey || event.metaKey)) {\n return;\n }\n if (!plane) {\n return;\n }\n const dispatchSetTransform = payload => dispatch(actions.space.setTransform(payload));\n const dispatchSetSpaceField = payload => dispatch(actions.space.setSpaceField(payload));\n const {matrix3d: matrix3d, transform: transform} = computePlaneLocation(plane);\n useAnimatedTransform(dispatch);\n dispatchSetSpaceField({\n field: \"transform\",\n value: matrix3d\n });\n dispatchSetTransform(Object.assign({}, transform));\n if (deisolate) {\n dispatchSetSpaceField({\n field: \"isolatePlane\",\n value: \"\"\n });\n }\n setTimeout((() => {\n focusPluridPlaneAnchor(plane.planeID);\n dispatchSetSpaceField({\n field: \"activePlaneID\",\n value: plane.planeID\n });\n }), pluridData.PLURID_DEFAULT_ANIMATED_TRANSFORM_TIMEOUT);\n};\n\nconst getActivePlane = state => {\n const {activePlaneID: activePlaneID, tree: tree} = state.space;\n if (!activePlaneID) {\n return;\n }\n const treePlane = pluridEngine.space.tree.logic.getTreePlaneByID(tree, activePlaneID);\n return treePlane;\n};\n\nconst focusActivePlane = (dispatch, state) => {\n const activePlane = getActivePlane(state);\n if (!activePlane) {\n return;\n }\n const event = undefined;\n const deisolate = false;\n navigateToPluridPlane(dispatch, activePlane, event, deisolate);\n};\n\nconst focusParentActivePlane = (dispatch, state) => {\n const activePlane = getActivePlane(state);\n if (!activePlane || !activePlane.parentPlaneID) {\n return;\n }\n const parentPlane = pluridEngine.space.tree.logic.getTreePlaneByID(state.space.tree, activePlane.parentPlaneID);\n if (!parentPlane) {\n return;\n }\n navigateToPluridPlane(dispatch, parentPlane);\n};\n\nconst findRootIndex = (tree, activePlaneID, currentRootIndex) => {\n for (const [index, plane] of tree.entries()) {\n if (plane.planeID === activePlaneID) {\n return currentRootIndex !== null && currentRootIndex !== void 0 ? currentRootIndex : index;\n }\n if (plane.children) {\n const rootIndex = findRootIndex(plane.children, activePlaneID, index);\n if (typeof rootIndex === \"number\") {\n return rootIndex;\n }\n }\n }\n return;\n};\n\nconst navigateToRoot = (dispatch, state, type) => {\n const {activePlaneID: activePlaneID, tree: tree} = state.space;\n const rootIndex = findRootIndex(tree, activePlaneID);\n if (typeof rootIndex !== \"number\") {\n return;\n }\n const treeIndex = type === \"previous\" ? rootIndex - 1 || 0 : rootIndex + 1;\n const root = tree[treeIndex];\n if (!root) {\n return;\n }\n navigateToPluridPlane(dispatch, root, undefined, true);\n};\n\nconst focusPreviousRoot = (dispatch, state) => {\n navigateToRoot(dispatch, state, \"previous\");\n};\n\nconst focusNextRoot = (dispatch, state) => {\n navigateToRoot(dispatch, state, \"next\");\n};\n\nconst focusRootIndex = (dispatch, state, index) => {\n const {tree: tree} = state.space;\n const root = tree[index];\n if (!root) {\n return;\n }\n navigateToPluridPlane(dispatch, root, undefined, true);\n};\n\nconst focusRootID = (dispatch, state, id) => {\n const {tree: tree} = state.space;\n const root = tree.find((plane => plane.planeID === id));\n if (!root) {\n return;\n }\n navigateToPluridPlane(dispatch, root, undefined, true);\n};\n\nconst refreshActivePlane = (state, pubsub) => {\n const {activePlaneID: id} = state.space;\n if (!id) {\n return;\n }\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.REFRESH_PLANE,\n data: {\n id: id\n }\n });\n};\n\nconst isolateActivePlane = (state, pubsub) => {\n const {activePlaneID: id, isolatePlane: isolatePlane} = state.space;\n if (isolatePlane) {\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.ISOLATE_PLANE,\n data: {\n id: \"\"\n }\n });\n return;\n }\n if (!id) {\n return;\n }\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.ISOLATE_PLANE,\n data: {\n id: id\n }\n });\n};\n\nconst openClosedPlane = pubsub => {\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.OPEN_CLOSED_PLANE\n });\n};\n\nconst closeActivePlane = (state, pubsub) => {\n const {activePlaneID: id} = state.space;\n if (!id) {\n return;\n }\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.CLOSE_PLANE,\n data: {\n id: id\n }\n });\n};\n\nconst {direction: directionLogic} = pluridEngine.interaction;\n\nconst handleGlobalShortcuts = (dispatch, state, pubsub, event, firstPerson, locks) => {\n if (event.defaultPrevented) {\n return;\n }\n const inputOnPath = pluridFunctions.dom.verifyPathInputElement(pluridFunctions.dom.getEventPath(event));\n if (inputOnPath) {\n return;\n }\n const noModifiers = !event.shiftKey && !event.altKey && !event.ctrlKey && !event.metaKey;\n if (event.code === \"KeyF\" && noModifiers) {\n return dispatch(actions.configuration.toggleConfigurationSpaceFirstPerson());\n }\n if (firstPerson) {\n if (event.code === \"KeyW\" && noModifiers && locks.translationZ) {\n return dispatch(actions.space.viewCameraMoveForward());\n }\n if (event.code === \"KeyS\" && noModifiers && locks.translationZ) {\n return dispatch(actions.space.viewCameraMoveBackward());\n }\n if (event.code === \"KeyA\" && noModifiers && locks.translationX) {\n return dispatch(actions.space.viewCameraMoveLeft());\n }\n if (event.code === \"KeyA\" && event.shiftKey && locks.rotationY) {\n return dispatch(actions.space.viewCameraTurnLeft());\n }\n if (event.code === \"KeyD\" && noModifiers && locks.translationX) {\n return dispatch(actions.space.viewCameraMoveRight());\n }\n if (event.code === \"KeyD\" && event.shiftKey && locks.rotationY) {\n return dispatch(actions.space.viewCameraTurnRight());\n }\n if (event.code === \"KeyQ\" && noModifiers && locks.rotationX) {\n return dispatch(actions.space.viewCameraTurnUp());\n }\n if (event.code === \"KeyZ\" && noModifiers && locks.rotationX) {\n return dispatch(actions.space.viewCameraTurnDown());\n }\n if (event.code === \"KeyE\" && noModifiers && locks.translationY) {\n return dispatch(actions.space.viewCameraMoveUp());\n }\n if (event.code === \"KeyC\" && noModifiers && locks.translationY) {\n return dispatch(actions.space.viewCameraMoveDown());\n }\n }\n if (event.code === \"KeyR\" && noModifiers) {\n return dispatch(actions.configuration.setConfigurationSpaceTransformMode(pluridData.TRANSFORM_MODES.ROTATION));\n }\n if (event.code === \"KeyT\" && noModifiers) {\n return dispatch(actions.configuration.setConfigurationSpaceTransformMode(pluridData.TRANSFORM_MODES.TRANSLATION));\n }\n if (event.code === \"KeyS\" && noModifiers && !firstPerson) {\n return dispatch(actions.configuration.setConfigurationSpaceTransformMode(pluridData.TRANSFORM_MODES.SCALE));\n }\n if (event.key === \"ArrowRight\") {\n if (event.shiftKey && locks.rotationY) {\n return dispatch(actions.space.rotateLeft());\n }\n if (event.altKey && locks.translationX) {\n return dispatch(actions.space.translateRight());\n }\n }\n if (event.key === \"ArrowLeft\") {\n if (event.shiftKey && locks.rotationY) {\n return dispatch(actions.space.rotateRight());\n }\n if (event.altKey && locks.translationX) {\n return dispatch(actions.space.translateLeft());\n }\n }\n if (event.key === \"ArrowUp\") {\n if (event.shiftKey && event.altKey && locks.translationZ) {\n return dispatch(actions.space.translateIn());\n }\n if (event.shiftKey && !event.altKey && locks.rotationX) {\n return dispatch(actions.space.rotateUp());\n }\n if (event.altKey && !event.shiftKey && locks.translationY) {\n return dispatch(actions.space.translateUp());\n }\n if (event.metaKey || event.ctrlKey && locks.scale) {\n return dispatch(actions.space.scaleUp());\n }\n }\n if (event.key === \"ArrowDown\") {\n if (event.shiftKey && event.altKey && locks.translationZ) {\n return dispatch(actions.space.translateOut());\n }\n if (event.shiftKey && !event.altKey && locks.rotationX) {\n return dispatch(actions.space.rotateDown());\n }\n if (event.altKey && !event.shiftKey && locks.translationY) {\n return dispatch(actions.space.translateDown());\n }\n if (event.metaKey || event.ctrlKey && locks.scale) {\n return dispatch(actions.space.scaleDown());\n }\n }\n if (event.altKey && event.code === \"KeyF\") {\n focusActivePlane(dispatch, state);\n return;\n }\n if (event.altKey && event.code === \"KeyB\") {\n focusParentActivePlane(dispatch, state);\n return;\n }\n if (event.altKey && event.code === \"KeyR\") {\n refreshActivePlane(state, pubsub);\n return;\n }\n if (event.altKey && event.code === \"KeyE\") {\n isolateActivePlane(state, pubsub);\n return;\n }\n if (event.altKey && event.shiftKey && event.code === \"KeyT\") {\n openClosedPlane(pubsub);\n return;\n }\n if (event.altKey && event.code === \"KeyW\") {\n closeActivePlane(state, pubsub);\n return;\n }\n if (event.altKey && event.code === \"KeyA\") {\n focusPreviousRoot(dispatch, state);\n return;\n }\n if (event.altKey && event.code === \"KeyD\") {\n focusNextRoot(dispatch, state);\n return;\n }\n if (event.altKey && event.code.startsWith(\"Digit\")) {\n const index = parseInt(event.code.replace(\"Digit\", \"\")) - 1;\n focusRootIndex(dispatch, state, index);\n return;\n }\n return;\n};\n\nconst handleGlobalWheel = (dispatch, event, modes, locks) => {\n if (event.shiftKey || event.metaKey || event.altKey || event.ctrlKey || modes.rotation || modes.translation || modes.scale) {\n event.preventDefault();\n }\n const deltas = {\n deltaX: event.deltaX,\n deltaY: event.deltaY\n };\n const absoluteThreshold = 100;\n const direction = directionLogic.getWheelDirection(deltas, absoluteThreshold);\n if (modes.rotation) {\n if (direction === pluridData.directions.left && locks.rotationY) {\n return dispatch(actions.space.rotateLeft());\n }\n if (direction === pluridData.directions.right && locks.rotationY) {\n return dispatch(actions.space.rotateRight());\n }\n if (direction === pluridData.directions.up && locks.rotationX) {\n return dispatch(actions.space.rotateUp());\n }\n if (direction === pluridData.directions.down && locks.rotationX) {\n return dispatch(actions.space.rotateDown());\n }\n }\n if (event.shiftKey && !event.altKey) {\n if (direction === pluridData.directions.up && locks.rotationX) {\n return dispatch(actions.space.rotateUp());\n }\n if (direction === pluridData.directions.down && locks.rotationX) {\n return dispatch(actions.space.rotateDown());\n }\n if (direction === pluridData.directions.left && locks.rotationY) {\n return dispatch(actions.space.rotateLeft());\n }\n if (direction === pluridData.directions.right && locks.rotationY) {\n return dispatch(actions.space.rotateRight());\n }\n }\n if (modes.translation) {\n if (event.metaKey || event.ctrlKey) {\n if (direction === pluridData.directions.up) {\n return dispatch(actions.space.translateDown());\n }\n if (direction === pluridData.directions.down) {\n return dispatch(actions.space.translateUp());\n }\n return;\n }\n if (event.altKey) {\n if (direction === pluridData.directions.up && locks.translationZ) {\n return dispatch(actions.space.translateIn());\n }\n if (direction === pluridData.directions.down && locks.translationZ) {\n return dispatch(actions.space.translateOut());\n }\n }\n if (direction === pluridData.directions.up && locks.translationY) {\n return dispatch(actions.space.translateDown());\n }\n if (direction === pluridData.directions.down && locks.translationY) {\n return dispatch(actions.space.translateUp());\n }\n if (direction === pluridData.directions.left && locks.translationX) {\n return dispatch(actions.space.translateRight());\n }\n if (direction === pluridData.directions.right && locks.translationX) {\n return dispatch(actions.space.translateLeft());\n }\n }\n if (event.altKey && event.shiftKey) {\n if (direction === pluridData.directions.up && locks.translationZ) {\n return dispatch(actions.space.translateIn());\n }\n if (direction === pluridData.directions.down && locks.translationZ) {\n return dispatch(actions.space.translateOut());\n }\n }\n if (event.altKey && !event.shiftKey) {\n if (event.metaKey || event.ctrlKey) {\n if (direction === pluridData.directions.up) {\n return dispatch(actions.space.translateDown());\n }\n if (direction === pluridData.directions.down) {\n return dispatch(actions.space.translateUp());\n }\n return;\n }\n if (direction === pluridData.directions.up && locks.translationY) {\n return dispatch(actions.space.translateDown());\n }\n if (direction === pluridData.directions.down && locks.translationY) {\n return dispatch(actions.space.translateUp());\n }\n if (direction === pluridData.directions.left && locks.translationX) {\n return dispatch(actions.space.translateRight());\n }\n if (direction === pluridData.directions.right && locks.translationX) {\n return dispatch(actions.space.translateLeft());\n }\n }\n if (modes.scale) {\n if (direction === pluridData.directions.down && locks.scale) {\n return dispatch(actions.space.scaleUp());\n }\n if (direction === pluridData.directions.up && locks.scale) {\n return dispatch(actions.space.scaleDown());\n }\n }\n if (event.metaKey || event.ctrlKey) {\n if (direction === pluridData.directions.down && locks.scale) {\n return dispatch(actions.space.scaleUp());\n }\n if (direction === pluridData.directions.up && locks.scale) {\n return dispatch(actions.space.scaleDown());\n }\n }\n return;\n};\n\nconst loadHammer = () => __awaiter(void 0, void 0, void 0, (function*() {\n const hammer = yield Promise.resolve().then((function() {\n return _interopNamespace(require(\"hammerjs\"));\n }));\n return hammer;\n}));\n\nvar selectors = {\n configuration: modules.configuration.selectors,\n general: modules.general.selectors,\n shortcuts: modules.shortcuts.selectors,\n space: modules.space.selectors,\n themes: modules.themes.selectors,\n ui: modules.ui.selectors\n};\n\nconst GlobalStyle = styled.createGlobalStyle`\n *,\n *:after,\n *:before {\n box-sizing: border-box;\n font-kerning: auto;\n text-rendering: optimizeLegibility;\n }\n\n html, body {\n margin: 0;\n height: 100%;\n width: 100%;\n overscroll-behavior-x: ${({preventOverscroll: preventOverscroll}) => {\n if (preventOverscroll) {\n return \"none\";\n }\n return \"auto\";\n}};\n }\n\n html {\n overflow: hidden;\n background: black;\n color: white;\n font-family: ${({theme: theme}) => theme.fontFamilySansSerif}\n }\n`;\n\nconst StyledView = styled__default[\"default\"].div`\n height: 100%;\n min-height: ${props => {\n if (props.fullHeight) {\n return \"100vh\";\n }\n return \"100%\";\n}};\n min-height: ${props => {\n if (props.fullHeight) {\n return \"-webkit-fill-available\";\n }\n return \"100%\";\n}};\n\n width: 100%;\n position: relative;\n scroll-snap-align: start;\n outline: none;\n overflow: hidden;\n\n cursor: ${props => {\n if (props.transformMode === pluridData.TRANSFORM_MODES.TRANSLATION || props.transformMode === pluridData.TRANSFORM_MODES.ROTATION) {\n return \"all-scroll\";\n }\n if (props.transformMode === pluridData.TRANSFORM_MODES.SCALE) {\n return \"ns-resize\";\n }\n return \"initial\";\n}};\n user-select: ${props => {\n if (props.transformMode !== \"ALL\") {\n return \"none\";\n }\n return \"initial !important\";\n}};\n touch-action: ${props => {\n if (props.transformMode !== \"ALL\") {\n return \"none !important\";\n }\n return \"initial !important\";\n}};\n -webkit-user-drag: ${props => {\n if (props.transformMode !== \"ALL\") {\n return \"none\";\n }\n return \"initial !important\";\n}};\n -webkit-tap-highlight-color: ${props => {\n if (props.transformMode !== \"ALL\") {\n return \"rgba(0, 0, 0, 0)\";\n }\n return \"initial !important\";\n}};\n`;\n\nstyled__default[\"default\"].div`\n outline: none;\n background: ${props => {\n if (props.opaque) {\n const foregroundGradient = props.theme.type === \"dark\" ? props.theme.backgroundColorTertiary : props.theme.backgroundColorPrimary;\n const backgroundGradient = props.theme.type === \"dark\" ? props.theme.backgroundColorPrimary : props.theme.backgroundColorTertiary;\n return `radial-gradient(\\n ellipse at center,\\n ${foregroundGradient} 0%,\\n ${backgroundGradient} 100%)\\n `;\n }\n return \"transparent\";\n}};\n`;\n\nclass ErrorBoundary extends React__default[\"default\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n hasError: false\n };\n }\n static getDerivedStateFromError(error) {\n return {\n hasError: true\n };\n }\n componentDidCatch(error, errorInfo) {}\n render() {\n if (this.state.hasError) {\n if (this.props.renderError) {\n return this.props.renderError;\n }\n return React__default[\"default\"].createElement(\"h1\", null, \"Something went wrong.\");\n }\n return this.props.children;\n }\n}\n\nconst StyledPluridPlane = styled__default[\"default\"].div`\n background-color: ${({transparentUI: transparentUI, mouseOver: mouseOver, theme: theme, planeOpacity: planeOpacity}) => {\n if (transparentUI && !mouseOver) {\n return theme.backgroundColorPrimaryAlpha;\n }\n if (planeOpacity !== 1) {\n const decomposedColor = themes$2.decomposeColor(theme.backgroundColorPrimary);\n if (decomposedColor) {\n const color = `hsla(${decomposedColor.hue}, ${decomposedColor.saturation}%, ${decomposedColor.lightness}%, ${planeOpacity})`;\n return color;\n }\n return \"transparent\";\n }\n return theme.backgroundColorPrimary;\n}};\n box-shadow: ${({planeOpacity: planeOpacity, theme: theme}) => {\n if (planeOpacity === 0) {\n return \"none\";\n }\n return theme.boxShadowUmbra;\n}};\n color: ${({theme: theme}) => theme.colorPrimary};\n opacity: ${({show: show}) => {\n if (!show) {\n return \"0\";\n }\n return \"1\";\n}};\n user-select: ${({show: show}) => {\n if (!show) {\n return \"none\";\n }\n return \"auto\";\n}};\n\n position: absolute;\n height: auto;\n width: 100%;\n font-size: 0.9rem;\n font-family: ${({theme: theme}) => theme.fontFamilySansSerif};\n transition: background-color 300ms linear;\n\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: ${({planeControls: planeControls}) => {\n if (planeControls) {\n return \"56px auto\";\n }\n return \"auto\";\n}};\n\n transform-origin: 0 0 0;\n`;\n\nconst StyledFocusAnchor = styled__default[\"default\"].a`\n position: absolute;\n top: 0;\n left: 0;\n height: 0;\n width: 0;\n pointer-events: none;\n user-select: none;\n`;\n\nconst StyledPluridPlaneBridge = styled__default[\"default\"].div`\n background-color: ${({theme: theme, planeControls: planeControls, planeOpacity: planeOpacity, transparentUI: transparentUI, mouseOver: mouseOver}) => {\n if (transparentUI && !mouseOver) {\n return theme.backgroundColorPrimaryAlpha;\n }\n if (planeOpacity === 0) {\n return \"transparent\";\n }\n if (!planeControls) {\n return theme.backgroundColorPrimary;\n }\n return theme.backgroundColorDark;\n}};\n\n position: absolute;\n top: 0;\n left: -100px;\n height: 30px;\n width: 100px;\n opacity: 0.5;\n\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst PluridPlaneBridge = properties => {\n const {mouseOver: mouseOver, stateGeneralTheme: stateGeneralTheme, stateConfiguration: stateConfiguration} = properties;\n const {controls: controls, opacity: opacity} = stateConfiguration.elements.plane;\n const {transparentUI: transparentUI} = stateConfiguration.global;\n return React__default[\"default\"].createElement(StyledPluridPlaneBridge, {\n theme: stateGeneralTheme,\n planeControls: controls.show,\n planeOpacity: opacity,\n transparentUI: transparentUI,\n mouseOver: mouseOver,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE_BRIDGE\n });\n};\n\nconst mapStateToProperties$i = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProperties$i = dispatch => ({});\n\nconst ConnectedPluridPlaneBridge = reactRedux.connect(mapStateToProperties$i, mapDispatchToProperties$i, null, {\n context: StateContext\n})(PluridPlaneBridge);\n\nconst ControlRefresh = properties => {\n const {theme: theme, refreshing: refreshing, refreshPlane: refreshPlane} = properties;\n return React__default[\"default\"].createElement(pluridIconsReact.PluridIconReset, {\n atClick: () => {\n refreshPlane();\n },\n theme: theme,\n title: \"refresh\",\n style: {\n opacity: refreshing ? \"0\" : \"1\",\n pointerEvents: refreshing ? \"none\" : undefined\n }\n });\n};\n\nconst ControlIsolate = properties => {\n const {theme: theme, isolated: isolated, isolatePlane: isolatePlane} = properties;\n const title = isolated ? \"isolated\" : \"isolate\";\n const fill = isolated ? true : false;\n return React__default[\"default\"].createElement(pluridIconsReact.PluridIconRectangle, {\n atClick: () => {\n isolatePlane();\n },\n theme: theme,\n title: title,\n fill: fill\n });\n};\n\nconst StyledPluridPlaneControls = styled__default[\"default\"].div`\n background-color: ${({transparentUI: transparentUI, mouseOver: mouseOver, theme: theme}) => {\n if (transparentUI && !mouseOver) {\n return \"transparent\";\n }\n return theme.backgroundColorDark;\n}};\n box-shadow: ${({theme: theme}) => theme.boxShadowUmbraInset};\n\n width: 100%;\n display: grid;\n align-items: center;\n justify-content: center;\n grid-template-rows: 1fr;\n grid-template-columns: 1fr 2fr 1fr;\n transition: background-color 300ms linear;\n\n @media (max-width: 800px) {\n grid-template-columns: 1fr 3fr 1fr;\n }\n`;\n\nconst styleCommonControls = styled.css`\n margin: 0 1rem;\n display: flex;\n align-items: center;\n gap: 1rem;\n`;\n\nconst StyledPluridPlaneControlsLeft = styled__default[\"default\"].div`\n ${styleCommonControls}\n`;\n\nconst StyledPluridPlaneControlsCenter = styled__default[\"default\"].div`\n width: 100%;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n word-break: break-all;\n`;\n\nconst StyledPluridPlaneControlsRight = styled__default[\"default\"].div`\n ${styleCommonControls}\n justify-content: right;\n`;\n\nconst PluridPlaneControls = properties => {\n const {plane: plane, treePlane: treePlane, parentTreePlane: parentTreePlane, mouseOver: mouseOver, refreshing: refreshing, refreshPlane: refreshPlane, isolatePlane: isolatePlane, closePlane: closePlane, configuration: configuration, stateGeneralTheme: stateGeneralTheme, stateIsolatePlane: stateIsolatePlane, dispatch: dispatch} = properties;\n const {global: global, elements: elements} = configuration;\n const {transparentUI: transparentUI} = global;\n const {title: title, pathbar: pathbar} = elements.plane.controls;\n const {planeID: planeID, route: route, routeDivisions: routeDivisions} = treePlane;\n const {protocol: protocol, host: host} = routeDivisions;\n const gateway = \"gateway\";\n `${protocol}://${host.value}/${gateway}?plurid=` + encodeURIComponent(route);\n const isolated = stateIsolatePlane === planeID;\n const [path, setPath] = React.useState(treePlane.route);\n React.useState(false);\n React.useState(false);\n return React__default[\"default\"].createElement(StyledPluridPlaneControls, {\n theme: stateGeneralTheme,\n mouseOver: mouseOver,\n transparentUI: transparentUI,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE_CONTROLS\n }, React__default[\"default\"].createElement(StyledPluridPlaneControlsLeft, null, parentTreePlane && React__default[\"default\"].createElement(pluridIconsReact.PluridIconArrowLeft, {\n atClick: event => {\n navigateToPluridPlane(dispatch, parentTreePlane, event);\n },\n theme: stateGeneralTheme,\n title: \"back\"\n }), React__default[\"default\"].createElement(pluridIconsReact.PluridIconFrame, {\n atClick: event => {\n const deisolate = false;\n navigateToPluridPlane(dispatch, treePlane, event, deisolate);\n },\n theme: stateGeneralTheme,\n title: \"focus\"\n }), React__default[\"default\"].createElement(ControlRefresh, {\n theme: stateGeneralTheme,\n refreshing: refreshing,\n refreshPlane: refreshPlane\n }), React__default[\"default\"].createElement(ControlIsolate, {\n theme: stateGeneralTheme,\n isolated: isolated,\n isolatePlane: isolatePlane\n })), React__default[\"default\"].createElement(StyledPluridPlaneControlsCenter, null, title && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, path)), React__default[\"default\"].createElement(StyledPluridPlaneControlsRight, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconDelete, {\n atClick: () => {\n closePlane();\n },\n theme: stateGeneralTheme,\n title: \"close\"\n })));\n};\n\nconst mapStateToProps$f = state => ({\n configuration: selectors.configuration.getConfiguration(state),\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state),\n stateIsolatePlane: selectors.space.getIsolatePlane(state)\n});\n\nconst mapDispatchToProps$f = dispatch => ({\n dispatch: dispatch\n});\n\nconst ConnectedPluridPlaneControls = reactRedux.connect(mapStateToProps$f, mapDispatchToProps$f, null, {\n context: StateContext\n})(PluridPlaneControls);\n\nconst StyledPluridPlaneContent = styled__default[\"default\"].div`\n position: relative;\n`;\n\nconst PluridPlaneContent = properties => {\n const {children: children} = properties;\n const planeContentElement = React.useRef(null);\n return React__default[\"default\"].createElement(StyledPluridPlaneContent, {\n ref: planeContentElement,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE_CONTENT\n }, children);\n};\n\nconst PluridPlane = properties => {\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {planeRenderError: planeRenderError, defaultPubSub: defaultPubSub} = context;\n const {planeID: planeID, plane: plane, treePlane: treePlane, children: children, stateTree: stateTree, stateViewSize: stateViewSize, stateActivePlaneID: stateActivePlaneID, stateIsolatePlane: stateIsolatePlane, stateGeneralTheme: stateGeneralTheme, stateConfiguration: stateConfiguration, dispatchSetSpaceField: dispatchSetSpaceField, dispatchUpdateSpaceTreePlane: dispatchUpdateSpaceTreePlane} = properties;\n const {global: global, elements: elements} = stateConfiguration;\n const {transparentUI: transparentUI} = global;\n const {controls: controls, width: planeWidth, opacity: planeOpacity} = elements.plane;\n const showPlaneControls = controls.show;\n pluridFunctions.mathematics.numbers.checkIntegerNonUnit(planeWidth) ? planeWidth : planeWidth * stateViewSize.width;\n const parentTreePlane = pluridEngine.space.tree.logic.getTreePlaneByID(stateTree, treePlane.parentPlaneID);\n const planeRef = React.useRef(null);\n const [remountKey, setRemountKey] = React.useState(0);\n const [refreshing, setRefreshing] = React.useState(false);\n const [mouseOver, setMouseOver] = React.useState(false);\n const refreshPlane = () => {\n const REFRESH_TIMEOUT = 250;\n setRefreshing(true);\n setTimeout((() => {\n setRemountKey((value => ++value));\n setRefreshing(false);\n }), REFRESH_TIMEOUT);\n };\n const isolatePlane = () => {\n const id = stateIsolatePlane !== planeID ? planeID : \"\";\n defaultPubSub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.ISOLATE_PLANE,\n data: {\n id: id\n }\n });\n };\n const closePlane = () => {\n defaultPubSub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.CLOSE_PLANE,\n data: {\n id: planeID\n }\n });\n };\n const setActivePlane = () => {\n const payload = {\n field: \"activePlaneID\",\n value: mouseOver ? planeID : \"\"\n };\n dispatchSetSpaceField(payload);\n };\n const debouncedSetActivePlane = pluridFunctionsReact.useDebouncedCallback((() => {\n if (stateActivePlaneID === planeID) {\n return;\n }\n const payload = {\n field: \"activePlaneID\",\n value: planeID\n };\n dispatchSetSpaceField(payload);\n }), 500);\n const computeIsolatePlaneOpacity = () => {\n if (!treePlane.show || !stateIsolatePlane) {\n return;\n }\n if (stateIsolatePlane === planeID) {\n return \"1\";\n }\n return \"0\";\n };\n const computeIsolatePointerEvents = () => {\n if (!treePlane.show || !stateIsolatePlane) {\n return;\n }\n if (stateIsolatePlane === planeID) {\n return;\n }\n return \"none\";\n };\n React.useEffect((() => {\n setActivePlane();\n }), [ planeID, mouseOver ]);\n React.useEffect((() => {\n const refreshPlaneIndex = defaultPubSub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.REFRESH_PLANE,\n callback: data => {\n const {id: id} = data;\n if (id === planeID) {\n refreshPlane();\n }\n }\n });\n return () => {\n defaultPubSub.unsubscribe(refreshPlaneIndex);\n };\n }), [ remountKey, planeID ]);\n const key = planeID + \"-\" + remountKey;\n const focusAnchorID = planeID + pluridData.FOCUS_ANCHOR_SUFFIX;\n const renderWidth = \"100%\";\n const isolatePlaneOpacity = computeIsolatePlaneOpacity();\n const isolatePointerEvents = computeIsolatePointerEvents();\n const transform = pluridEngine.cleanTemplate(`\\n translateX(${treePlane.location.translateX}px)\\n translateY(${treePlane.location.translateY}px)\\n translateZ(${treePlane.location.translateZ}px)\\n rotateX(${treePlane.location.rotateX}deg)\\n rotateY(${treePlane.location.rotateY}deg)\\n `);\n const planeContentProperties = {};\n return React__default[\"default\"].createElement(StyledPluridPlane, {\n key: key,\n ref: planeRef,\n theme: stateGeneralTheme,\n planeControls: showPlaneControls,\n planeOpacity: planeOpacity,\n show: treePlane.show,\n id: planeID,\n style: {\n width: renderWidth,\n transform: transform,\n opacity: isolatePlaneOpacity,\n pointerEvents: isolatePointerEvents\n },\n onMouseEnter: () => setMouseOver(true),\n onMouseLeave: () => setMouseOver(false),\n onMouseOver: () => debouncedSetActivePlane(),\n onMouseMove: () => debouncedSetActivePlane(),\n transparentUI: transparentUI,\n mouseOver: mouseOver,\n \"data-plurid-plane\": planeID,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE\n }, React__default[\"default\"].createElement(StyledFocusAnchor, {\n tabIndex: 0,\n id: focusAnchorID\n }), treePlane.show && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, treePlane.parentPlaneID && React__default[\"default\"].createElement(ConnectedPluridPlaneBridge, {\n mouseOver: mouseOver\n }), showPlaneControls && React__default[\"default\"].createElement(ConnectedPluridPlaneControls, {\n plane: plane,\n treePlane: treePlane,\n parentTreePlane: parentTreePlane,\n mouseOver: mouseOver,\n refreshing: refreshing,\n refreshPlane: refreshPlane,\n isolatePlane: isolatePlane,\n closePlane: closePlane\n }), planeRenderError ? React__default[\"default\"].createElement(ErrorBoundary, {\n renderError: typeof planeRenderError !== \"boolean\" ? planeRenderError : undefined\n }, React__default[\"default\"].createElement(PluridPlaneContent, Object.assign({}, planeContentProperties), children)) : React__default[\"default\"].createElement(PluridPlaneContent, Object.assign({}, planeContentProperties), children)));\n};\n\nconst mapStateToProps$e = state => ({\n stateTree: selectors.space.getTree(state),\n stateViewSize: selectors.space.getViewSize(state),\n stateActivePlaneID: selectors.space.getActivePlaneID(state),\n stateIsolatePlane: selectors.space.getIsolatePlane(state),\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$e = dispatch => ({\n dispatchSetSpaceField: payload => dispatch(actions.space.setSpaceField(payload)),\n dispatchUpdateSpaceTreePlane: payload => dispatch(actions.space.updateSpaceTreePlane(payload))\n});\n\nconst ConnectedPluridPlane = reactRedux.connect(mapStateToProps$e, mapDispatchToProps$e, null, {\n context: StateContext\n})(PluridPlane);\n\nconst isReactRenderable = component => {\n if (!component) {\n return false;\n }\n if (typeof component === \"string\" || component.url) {\n return false;\n }\n return true;\n};\n\nconst StyledPluridRoot = styled__default[\"default\"].div`\n transform-style: preserve-3d;\n`;\n\nconst PluridRoot = properties => {\n const {plane: plane, stateTree: stateTree} = properties;\n const {location: location} = plane;\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {planesRegistrar: planesRegistrar, planeContext: PlaneContext, planeContextValue: planeContextValue, customPlane: customPlane, matchedRoute: matchedRoute, defaultPubSub: defaultPubSub} = context;\n const CustomPluridPlane = customPlane;\n const computeChildrenPlanes = plane => {\n if (!plane.children || plane.children.length === 0) {\n return [];\n }\n const children = [];\n const planesRegistry = getPlanesRegistrar(planesRegistrar);\n plane.children.forEach((child => {\n if (!planesRegistry) {\n return;\n }\n const planeID = child.sourceID;\n const activePlane = planesRegistry.get(planeID);\n if (activePlane) {\n const renderPlane = () => {\n const Plane = activePlane.component;\n const pluridProperty = {\n plane: {\n value: activePlane.route.absolute,\n planeID: child.planeID,\n parentPlaneID: child.parentPlaneID,\n fragments: activePlane.route.fragments,\n parameters: activePlane.route.parameters,\n query: activePlane.route.query\n },\n route: {\n value: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.value) || \"\",\n parameters: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.parameters) || {},\n query: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.query) || {}\n },\n pubSub: defaultPubSub\n };\n const properties = {\n plurid: Object.assign({}, pluridProperty),\n key: \"plurid-plane-\" + child.planeID\n };\n const renderablePlane = isReactRenderable(Plane);\n const renderableCustomPlane = isReactRenderable(CustomPluridPlane);\n const keyBase = \"plurid-plane-child-\";\n const planeProperties = {\n key: keyBase + child.planeID,\n plane: activePlane,\n treePlane: child,\n planeID: child.planeID,\n location: child.location\n };\n if (CustomPluridPlane && renderableCustomPlane) {\n return React__default[\"default\"].createElement(CustomPluridPlane, Object.assign({}, planeProperties));\n }\n if (renderablePlane) {\n return React__default[\"default\"].createElement(ConnectedPluridPlane, Object.assign({}, planeProperties), !PlaneContext ? React__default[\"default\"].createElement(Plane, Object.assign({}, properties)) : React__default[\"default\"].createElement(PlaneContext.Provider, {\n value: planeContextValue\n }, React__default[\"default\"].createElement(Plane, Object.assign({}, properties))));\n }\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n };\n const plane = renderPlane();\n children.push(plane);\n }\n if (child.children) {\n const childrenPlanes = computeChildrenPlanes(child);\n if (childrenPlanes) {\n children.push(...childrenPlanes);\n }\n }\n }));\n return children;\n };\n const childrenPlanes = React.useMemo((() => computeChildrenPlanes(plane)), [ JSON.stringify(plane), JSON.stringify(stateTree) ]);\n const pluridPlaneID = plane.sourceID;\n if (!pluridPlaneID) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const pluridPlane = getRegisteredPlane(pluridPlaneID, planesRegistrar);\n if (!pluridPlane) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const Plane = pluridPlane.component;\n const pluridProperty = {\n plane: {\n value: pluridPlane.route.absolute,\n planeID: plane.planeID,\n parentPlaneID: plane.parentPlaneID,\n fragments: pluridPlane.route.fragments,\n parameters: pluridPlane.route.parameters,\n query: pluridPlane.route.query\n },\n route: {\n value: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.value) || \"\",\n parameters: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.parameters) || {},\n query: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.query) || {}\n },\n pubSub: defaultPubSub\n };\n const planeProperties = {\n plurid: Object.assign({}, pluridProperty),\n key: \"plurid-plane-\" + plane.planeID\n };\n if (CustomPluridPlane) {\n if (typeof CustomPluridPlane !== \"function\") {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledPluridRoot, {\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_ROOT\n }, React__default[\"default\"].createElement(CustomPluridPlane, {\n plane: pluridPlane,\n treePlane: plane,\n planeID: plane.planeID,\n location: location\n }), childrenPlanes);\n }\n return React__default[\"default\"].createElement(StyledPluridRoot, {\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_ROOT\n }, React__default[\"default\"].createElement(ConnectedPluridPlane, {\n plane: pluridPlane,\n treePlane: plane,\n planeID: plane.planeID,\n location: location\n }, !PlaneContext ? React__default[\"default\"].createElement(Plane, Object.assign({}, planeProperties)) : React__default[\"default\"].createElement(PlaneContext.Provider, {\n value: planeContextValue\n }, React__default[\"default\"].createElement(Plane, Object.assign({}, planeProperties)))), childrenPlanes);\n};\n\nconst mapStateToProperties$h = state => ({\n stateTree: selectors.space.getTree(state)\n});\n\nconst mapDispatchToProperties$h = dispatch => ({});\n\nconst ConnectedPluridRoot = reactRedux.connect(mapStateToProperties$h, mapDispatchToProperties$h, null, {\n context: StateContext\n})(PluridRoot);\n\nconst StyledPluridRoots = styled__default[\"default\"].div`\n transform-style: preserve-3d;\n transform-origin: 0 0 0;\n`;\n\nconst PluridRoots = properties => {\n const {spaceTransformMatrix: spaceTransformMatrix, spaceAnimatedTransform: spaceAnimatedTransform, spaceTransformTime: spaceTransformTime, stateTree: stateTree} = properties;\n return React__default[\"default\"].createElement(StyledPluridRoots, {\n style: {\n width: \"100%\",\n height: typeof window !== \"undefined\" ? window.innerHeight + \"px\" : \"821px\",\n transform: spaceTransformMatrix,\n transition: spaceAnimatedTransform ? `transform ${spaceTransformTime}ms ease-in-out` : \"initial\"\n },\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_ROOTS\n }, stateTree.map((plane => React__default[\"default\"].createElement(ConnectedPluridRoot, {\n key: plane.planeID,\n plane: plane\n }))));\n};\n\nconst mapStateToProperties$g = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state),\n spaceTransformMatrix: selectors.space.getTransformMatrix(state),\n spaceAnimatedTransform: selectors.space.getAnimatedTransform(state),\n spaceTransformTime: selectors.space.getTransformTime(state),\n stateTree: selectors.space.getTree(state)\n});\n\nconst mapDispatchToProperties$g = dispatch => ({});\n\nconst ConnectedPluridRoots = reactRedux.connect(mapStateToProperties$g, mapDispatchToProperties$g, null, {\n context: StateContext\n})(PluridRoots);\n\nconst fadeIn = styled.keyframes`\n from {\n opacity: 0%;\n }\n\n to {\n opacity: 100%;\n }\n`;\n\nconst fadeInAnimation = fadeInTime => styled.css`${fadeIn} ${fadeInTime}ms linear 100ms forwards`;\n\nconst StyledPluridSpace = styled__default[\"default\"].div`\n position: relative;\n height: 100%;\n overflow: hidden;\n perspective: 2000px;\n outline: none;\n\n background: ${({opaque: opaque, theme: theme}) => {\n if (opaque) {\n const foregroundGradient = theme.type === \"dark\" ? theme.backgroundColorTertiary : theme.backgroundColorPrimary;\n const backgroundGradient = theme.type === \"dark\" ? theme.backgroundColorPrimary : theme.backgroundColorTertiary;\n return `radial-gradient(\\n ellipse at center,\\n ${foregroundGradient} 0%,\\n ${backgroundGradient} 100%)\\n `;\n }\n return \"transparent\";\n}};\n\n /* TOFIX */\n /* opacity: ${({fadeInTime: fadeInTime}) => {\n if (fadeInTime) {\n return \"0\";\n }\n return \"1\";\n}};\n animation: ${({isMounted: isMounted, fadeInTime: fadeInTime}) => {\n if (isMounted && fadeInTime) {\n return fadeInAnimation(fadeInTime);\n }\n return \"\";\n}}; */\n`;\n\nconst PluridSpace = properties => {\n const {stateConfiguration: stateConfiguration, stateGeneralTheme: stateGeneralTheme} = properties;\n const {space: space} = stateConfiguration;\n const {opaque: opaque, fadeInTime: fadeInTime} = space;\n const [isMounted, setIsMounted] = React.useState(false);\n React.useEffect((() => {\n setIsMounted(true);\n }), []);\n return React__default[\"default\"].createElement(StyledPluridSpace, {\n theme: stateGeneralTheme,\n opaque: opaque,\n isMounted: isMounted,\n fadeInTime: fadeInTime,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_SPACE\n }, React__default[\"default\"].createElement(ConnectedPluridRoots, null));\n};\n\nconst mapStateToProperties$f = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateGeneralTheme: selectors.themes.getGeneralTheme(state)\n});\n\nconst mapDispatchToProperties$f = dispatch => ({});\n\nconst ConnectedPluridSpace = reactRedux.connect(mapStateToProperties$f, mapDispatchToProperties$f, null, {\n context: StateContext\n})(PluridSpace);\n\nconst resolveSize = ({size: size}) => {\n switch (size) {\n case pluridData.SIZES.SMALL:\n return \"5px\";\n\n case pluridData.SIZES.NORMAL:\n return \"10px\";\n\n case pluridData.SIZES.LARGE:\n return \"15px\";\n\n default:\n return \"10px\";\n }\n};\n\nconst StyledOrigin = styled__default[\"default\"].div`\n background-color: ${({theme: theme}) => theme.backgroundColorTertiaryAlpha};\n height: ${resolveSize};\n width: ${resolveSize};\n\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n z-index: 99999;\n border-radius: 100px;\n user-select: none;\n pointer-events: none;\n touch-action: none;\n`;\n\nconst Origin = properties => {\n const {stateGeneralTheme: stateGeneralTheme, stateConfiguration: stateConfiguration} = properties;\n const {space: space} = stateConfiguration;\n const {transformOrigin: transformOrigin} = space;\n const {show: showTransformOrigin, size: transformOriginSize} = transformOrigin;\n if (!showTransformOrigin) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledOrigin, {\n theme: stateGeneralTheme,\n size: transformOriginSize,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_TRANSFORM_ORIGIN\n });\n};\n\nconst mapStateToProperties$e = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProperties$e = dispatch => ({});\n\nconst ConnectedOrigin = reactRedux.connect(mapStateToProperties$e, mapDispatchToProperties$e, null, {\n context: StateContext\n})(Origin);\n\nvar MENUS;\n\n(function(MENUS) {\n MENUS[\"NONE\"] = \"NONE\";\n MENUS[\"UNIVERSES\"] = \"UNIVERSES\";\n MENUS[\"MORE\"] = \"MORE\";\n})(MENUS || (MENUS = {}));\n\nconst VIEW_SIZE_WIDTH_LIMIT = 800;\n\nconst StyledToolbar = styled__default[\"default\"].div`\n bottom: ${({conceal: conceal, mouseIn: mouseIn}) => {\n if (!conceal) {\n return \"-5px\";\n }\n if (mouseIn) {\n return \"-5px\";\n }\n return \"-55px\";\n}};\n pointer-events: ${({showMenu: showMenu}) => {\n if (showMenu !== MENUS.NONE) {\n return \"all\";\n }\n return \"none\";\n}};\n opacity: ${({fadeInTime: fadeInTime}) => {\n if (fadeInTime) {\n return \"0\";\n }\n return \"1\";\n}};\n animation: ${({fadeInTime: fadeInTime, isMounted: isMounted}) => {\n if (isMounted && fadeInTime) {\n return fadeInAnimation(fadeInTime);\n }\n return \"\";\n}};\n\n display: grid;\n position: absolute;\n left: 0;\n right: 0;\n height: 75px;\n z-index: 9999;\n transition: bottom 300ms ease-in-out;\n`;\n\nconst StyledToolbarButtons = styled__default[\"default\"].div`\n color: ${({theme: theme}) => theme.colorPrimary};\n background-color: ${({theme: theme, transparentUI: transparentUI}) => {\n if (transparentUI) {\n return theme.backgroundColorPrimaryAlpha;\n }\n return theme.backgroundColorSecondary;\n}};\n box-shadow: ${({theme: theme}) => theme.boxShadowUmbra};\n grid-template-columns: ${({showIcons: showIcons, showTransformButtons: showTransformButtons, documentsBased: documentsBased}) => {\n if (showIcons && !showTransformButtons) {\n if (documentsBased) {\n return \"repeat(6, minmax(min-content, 40px))\";\n } else {\n return \"repeat(5, minmax(min-content, 40px))\";\n }\n }\n if (!showTransformButtons) {\n if (documentsBased) {\n return \"repeat(6, minmax(min-content, 40px))\";\n } else {\n return \"repeat(5, minmax(min-content, 40px))\";\n }\n }\n if (documentsBased) {\n return \"40px 200px 200px 200px 40px 40px\";\n }\n return \"40px 200px 200px 200px 40px\";\n}};\n opacity: ${({opaque: opaque, mouseIn: mouseIn}) => {\n if (!opaque && !mouseIn) {\n return \"0.4\";\n }\n return \"1\";\n}};\n\n z-index: 9999;\n user-select: none;\n /* height: 75px; */\n display: grid;\n pointer-events: all;\n display: grid;\n align-items: center;\n justify-content: center;\n justify-items: center;\n border-radius: 22.5px;\n margin: 0 auto;\n margin-top: 10px;\n margin-bottom: 20px;\n padding: 0 22.5px;\n font-size: 12px;\n height: 45px;\n transition: opacity 300ms ease-in-out;\n\n :after {\n content: '';\n position: absolute;\n top: 55px;\n height: 20px;\n left: 0;\n right: 20%;\n }\n\n @media (max-width: 900px) {\n :after {\n right: 0;\n }\n }\n`;\n\nconst StyledToolbarButton = styled__default[\"default\"].div`\n padding: ${({button: button, showIcons: showIcons, showTransformButtons: showTransformButtons}) => {\n if (button) {\n return \"0\";\n }\n if (showIcons && !showTransformButtons) {\n return \"0\";\n }\n return \"0 7px\";\n}};\n background-color: ${({active: active, theme: theme}) => {\n if (active) {\n return theme.backgroundColorTertiary;\n }\n return \"transparent\";\n}};\n min-width: ${({button: button}) => {\n if (button) {\n return \"40px\";\n }\n return \"70px\";\n}};\n\n height: 45px;\n display: grid;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n user-select: none;\n\n @media (hover: hover) {\n :hover {\n background: ${({theme: theme}) => theme.backgroundColorTertiary};\n }\n }\n`;\n\nconst StyledIcon = styled__default[\"default\"].div`\n width: 40px;\n display: grid;\n place-content: center;\n\n /* svg {\n height: 15px;\n width: 15px;\n fill: white;\n } */\n`;\n\nconst StyledPluridMenuUniverses = styled__default[\"default\"].div`\n position: absolute;\n bottom: 75px;\n max-height: 250px;\n width: 380px;\n left: 50%;\n transform: translateX(-50%);\n border-radius: 22.5px;\n padding: 22px;\n font-size: 0.8rem;\n overflow: hidden;\n\n background-color: ${props => props.theme.backgroundColorSecondary};\n box-shadow: ${props => props.theme.boxShadowUmbra};\n\n ul {\n padding: 0;\n list-style: none;\n }\n`;\n\nstyled__default[\"default\"].div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n position: relative;\n\n margin-bottom: ${props => {\n if (props.afterline) {\n return \"30px\";\n }\n return \"10px\";\n}};\n\n ${props => {\n if (props.afterline) {\n return `\\n ::after {\\n position: absolute;\\n content: '';\\n left: 0;\\n right: 0;\\n bottom: -15px;\\n height: 1px;\\n background-color: white;\\n }\\n `;\n }\n return \"\";\n}};\n`;\n\nconst StyledPluridMenuUniversesScroll = styled__default[\"default\"].div`\n max-height: 210px;\n overflow: scroll;\n padding: 0 5px;\n\n /* Hide Scrollbar */\n scrollbar-width: none; /* Firefox 64 */\n -ms-overflow-style: none; /* Internet Explorer 11 */\n ::-webkit-scrollbar { /** WebKit */\n display: none;\n }\n\n h5::first-child {\n margin-top: 0;\n }\n`;\n\nstyled__default[\"default\"].li`\n margin: 10px 0;\n padding: 10px 20px;\n border-radius: 100px;\n\n cursor: ${props => {\n if (props.active) {\n return \"initial\";\n }\n return \"pointer\";\n}};\n background-color: ${props => {\n if (props.active) {\n return props.theme.backgroundColorTertiary;\n }\n return \"\";\n}};\n box-shadow: ${props => {\n if (props.active) {\n return \"inset 0px -1px 6px 0px \" + props.theme.boxShadowUmbraColor;\n }\n return \"\";\n}};\n\n :hover {\n background-color: ${props => props.theme.backgroundColorTertiary};\n box-shadow: ${props => {\n if (props.active) {\n return \"inset 0px -1px 6px 0px \" + props.theme.boxShadowUmbraColor;\n }\n return props.theme.boxShadowUmbra;\n}};\n }\n`;\n\nconst PluridMenuUniverses = properties => {\n const {interactionTheme: interactionTheme, activeUniverseID: activeUniverseID, dispatchSetActiveUniverse: dispatchSetActiveUniverse} = properties;\n return React__default[\"default\"].createElement(StyledPluridMenuUniverses, {\n theme: interactionTheme\n }, React__default[\"default\"].createElement(StyledPluridMenuUniversesScroll, null));\n};\n\nconst mapStateToProps$d = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state),\n activeUniverseID: selectors.space.getActiveUniverseID(state)\n});\n\nconst mapDispatchToProps$d = dispatch => ({\n dispatchSetActiveUniverse: documentID => dispatch(actions.space.setActiveUniverse(documentID))\n});\n\nconst ConnectedPluridMenuUniverses = reactRedux.connect(mapStateToProps$d, mapDispatchToProps$d, null, {\n context: StateContext\n})(PluridMenuUniverses);\n\nconst StyledPluridDrawer = styled__default[\"default\"].div`\n h5 {\n font-size: 1rem;\n margin: 0;\n }\n\n margin-bottom: 2rem;\n border-top-left-radius: 15px;\n border-top-right-radius: 15px;\n\n padding-bottom: ${props => {\n if (props.transparentUI && props.toggled) {\n return \"0.5rem\";\n }\n return \"0\";\n}};\n background-color: ${props => {\n if (props.transparentUI && props.mouseOver) {\n return props.theme.backgroundColorSecondary;\n }\n return \"transparent\";\n}};\n box-shadow: ${props => {\n if (props.transparentUI && props.mouseOver) {\n return props.theme.boxShadowUmbra;\n }\n return \"none\";\n}};\n color: ${props => props.theme.colorPrimary};\n`;\n\nconst StyledPluridDrawerHeading = styled__default[\"default\"].div`\n user-select: none;\n cursor: pointer;\n padding: 0.5rem;\n margin-bottom: 0.5rem;\n border-bottom: 1px solid transparent;\n text-align: left;\n\n :hover {\n border-bottom: 1px solid ${props => props.theme.colorPrimary};\n }\n`;\n\nconst StyledPluridDrawerItems = styled__default[\"default\"].div`\n`;\n\nconst {typography: {Heading: PluridHeading}} = pluridUiComponentsReact.universal;\n\nconst PluridDrawer = properties => {\n const {heading: heading, items: items, toggled: toggled, toggle: toggle, interactionTheme: interactionTheme, configuration: configuration} = properties;\n const {global: global} = configuration;\n const {transparentUI: transparentUI} = global;\n const [mouseOver, setMouseOver] = React.useState(false);\n return React__default[\"default\"].createElement(StyledPluridDrawer, {\n theme: interactionTheme,\n onMouseEnter: () => setMouseOver(true),\n onMouseLeave: () => setMouseOver(false),\n transparentUI: transparentUI,\n mouseOver: mouseOver,\n toggled: toggled\n }, React__default[\"default\"].createElement(StyledPluridDrawerHeading, {\n theme: interactionTheme,\n onClick: () => toggle()\n }, React__default[\"default\"].createElement(PluridHeading, {\n theme: interactionTheme,\n type: \"h5\"\n }, heading)), toggled && React__default[\"default\"].createElement(StyledPluridDrawerItems, null, items));\n};\n\nconst mapStateToProps$c = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$c = dispatch => ({});\n\nconst ConnectedPluridDrawer = reactRedux.connect(mapStateToProps$c, mapDispatchToProps$c, null, {\n context: StateContext\n})(PluridDrawer);\n\nconst StyledPluridMoreMenu = styled__default[\"default\"].div`\n position: absolute;\n bottom: 75px;\n height: 280px;\n width: 380px;\n left: 50%;\n transform: translateX(-50%);\n border-radius: 22.5px;\n padding: 22px;\n font-size: 0.8rem;\n overflow: hidden;\n\n background-color: ${props => {\n if (props.transparentUI) {\n return props.theme.backgroundColorPrimaryAlpha;\n }\n return props.theme.backgroundColorSecondary;\n}};\n box-shadow: ${props => props.theme.boxShadowUmbra};\n`;\n\nconst StyledPluridMoreMenuItem = styled__default[\"default\"].div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n position: relative;\n min-height: 30px;\n padding: 0 0.5rem;\n\n margin-bottom: ${props => {\n if (props.last) {\n return \"0\";\n }\n if (props.afterline) {\n return \"30px\";\n }\n return \"10px\";\n}};\n\n ${props => {\n if (props.afterline) {\n return `\\n ::after {\\n position: absolute;\\n content: '';\\n left: 0;\\n right: 0;\\n bottom: -15px;\\n height: 1px;\\n background-color: ${props.theme ? props.theme.colorPrimary : \"white\"};\\n }\\n `;\n }\n return \"\";\n}};\n`;\n\nconst StyledPluridMoreMenuScroll = styled__default[\"default\"].div`\n height: 240px;\n overflow: scroll;\n padding: 0 5px;\n\n /* Hide Scrollbar */\n scrollbar-width: none; /* Firefox 64 */\n -ms-overflow-style: none; /* Internet Explorer 11 */\n ::-webkit-scrollbar { /** WebKit */\n display: none;\n }\n\n h5::first-child {\n margin-top: 0;\n }\n`;\n\nconst {inputs: {Dropdown: PluridDropdown$1}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreGlobal = properties => {\n const {stateLanguage: stateLanguage, interactionTheme: interactionTheme, configuration: configuration, dispatchSetGeneralTheme: dispatchSetGeneralTheme, dispatchSetInteractionTheme: dispatchSetInteractionTheme, dispatchSetConfigurationThemeGeneralAction: dispatchSetConfigurationThemeGeneralAction, dispatchSetConfigurationThemeInteractionAction: dispatchSetConfigurationThemeInteractionAction, dispatchSetConfigurationLanguage: dispatchSetConfigurationLanguage} = properties;\n const selectedTheme = configuration.global.theme;\n const [generalThemeName, setGeneralThemeName] = React.useState(typeof selectedTheme === \"object\" ? selectedTheme.general : selectedTheme);\n const [interactionThemeName, setInteractionThemeName] = React.useState(typeof selectedTheme === \"object\" ? selectedTheme.interaction : selectedTheme);\n const setGeneralTheme = selectedTheme => {\n dispatchSetGeneralTheme(themes__default[\"default\"][selectedTheme]);\n dispatchSetConfigurationThemeGeneralAction(selectedTheme);\n };\n const setInteractionTheme = selectedTheme => {\n dispatchSetInteractionTheme(themes__default[\"default\"][selectedTheme]);\n dispatchSetConfigurationThemeInteractionAction(selectedTheme);\n };\n const setLanguage = selectedLanguage => {\n dispatchSetConfigurationLanguage(selectedLanguage);\n };\n React.useEffect((() => {\n if (typeof selectedTheme === \"object\") {\n setGeneralThemeName(selectedTheme.general);\n setInteractionThemeName(selectedTheme.interaction);\n } else {\n setGeneralThemeName(selectedTheme);\n setInteractionThemeName(selectedTheme);\n }\n }), [ selectedTheme ]);\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerGlobalGeneralTheme), React__default[\"default\"].createElement(PluridDropdown$1, {\n selectables: Object.keys(themes__default[\"default\"]),\n selected: typeof generalThemeName === \"string\" ? generalThemeName : \"\",\n atSelect: selection => setGeneralTheme(selection),\n theme: interactionTheme,\n filterable: true,\n heightItems: 3,\n width: 90,\n style: {\n fontSize: \"0.8rem\"\n }\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerGlobalInteractionTheme), React__default[\"default\"].createElement(PluridDropdown$1, {\n selectables: Object.keys(themes__default[\"default\"]),\n selected: typeof interactionThemeName === \"string\" ? interactionThemeName : \"\",\n atSelect: selection => setInteractionTheme(selection),\n theme: interactionTheme,\n heightItems: 3,\n filterable: true,\n width: 90,\n style: {\n fontSize: \"0.8rem\"\n }\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerGlobalLanguage), React__default[\"default\"].createElement(PluridDropdown$1, {\n selectables: pluridData.internationalization.languages,\n selected: stateLanguage,\n atSelect: selection => setLanguage(selection),\n theme: interactionTheme,\n heightItems: 3,\n width: 90,\n style: {\n fontSize: \"0.8rem\"\n }\n })));\n};\n\nconst mapStateToProps$b = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$b = dispatch => ({\n dispatchSetConfigurationThemeGeneralAction: theme => dispatch(actions.configuration.setConfigurationThemeGeneral(theme)),\n dispatchSetConfigurationThemeInteractionAction: theme => dispatch(actions.configuration.setConfigurationThemeInteraction(theme)),\n dispatchSetConfigurationLanguage: language => dispatch(actions.configuration.setConfigurationLanguage(language)),\n dispatchSetGeneralTheme: theme => dispatch(actions.themes.setGeneralTheme(theme)),\n dispatchSetInteractionTheme: theme => dispatch(actions.themes.setInteractionTheme(theme))\n});\n\nconst ConnectedPluridMenuMoreGlobal = reactRedux.connect(mapStateToProps$b, mapDispatchToProps$b, null, {\n context: StateContext\n})(PluridMenuMoreGlobal);\n\nconst {inputs: {Switch: PluridSwitch$3}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreTransform = properties => {\n const {stateLanguage: stateLanguage, interactionTheme: interactionTheme, configuration: configuration, dispatchToggleConfigurationSpaceTransformMultimode: dispatchToggleConfigurationSpaceTransformMultimode, dispatchSetConfigurationSpaceTransformTouch: dispatchSetConfigurationSpaceTransformTouch, dispatchSetConfigurationSpaceTransformLocks: dispatchSetConfigurationSpaceTransformLocks} = properties;\n const {transformMultimode: transformMultimode, transformLocks: transformLocks, transformTouch: transformTouch} = configuration.space;\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformMultiModeTransform)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformMultimode,\n atChange: () => dispatchToggleConfigurationSpaceTransformMultimode(!transformMultimode),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowRotationX)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.rotationX,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"rotationX\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowRotationY)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.rotationY,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"rotationY\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowTranslationX)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.translationX,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"translationX\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowTranslationY)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.translationY,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"translationY\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowTranslationZ)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.translationZ,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"translationZ\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowScale)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.scale,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"scale\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformTouchTransform), \": \", transformTouch === pluridData.TRANSFORM_TOUCHES.PAN ? \"pan\" : \"swipe\"), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformTouch === pluridData.TRANSFORM_TOUCHES.PAN,\n atChange: () => transformTouch === pluridData.TRANSFORM_TOUCHES.PAN ? dispatchSetConfigurationSpaceTransformTouch(pluridData.TRANSFORM_TOUCHES.SWIPE) : dispatchSetConfigurationSpaceTransformTouch(pluridData.TRANSFORM_TOUCHES.PAN),\n level: 2\n })));\n};\n\nconst mapStateToProps$a = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$a = dispatch => ({\n dispatchToggleConfigurationSpaceTransformMultimode: multimode => dispatch(actions.configuration.toggleConfigurationSpaceTransformMultimode(multimode)),\n dispatchSetConfigurationSpaceTransformTouch: touch => dispatch(actions.configuration.setConfigurationSpaceTransformTouch(touch)),\n dispatchSetConfigurationSpaceTransformLocks: lock => dispatch(actions.configuration.setConfigurationSpaceTransformLocks(lock))\n});\n\nconst ConnectedPluridMenuMoreTransform = reactRedux.connect(mapStateToProps$a, mapDispatchToProps$a, null, {\n context: StateContext\n})(PluridMenuMoreTransform);\n\nconst {inputs: {Dropdown: PluridDropdown, Switch: PluridSwitch$2, Slider: PluridSlider$1}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreSpace = properties => {\n const {interactionTheme: interactionTheme, configuration: configuration, dispatchSetConfigurationPlaneOpacity: dispatchSetConfigurationPlaneOpacity, dispatchToggleConfigurationSpaceTransparentUI: dispatchToggleConfigurationSpaceTransparentUI, dispatchToggleConfigurationSpaceShowTransformOrigin: dispatchToggleConfigurationSpaceShowTransformOrigin, dispatchSetConfigurationSpaceTransformOriginSize: dispatchSetConfigurationSpaceTransformOriginSize, dispatchSetConfigurationSpaceLayoutType: dispatchSetConfigurationSpaceLayoutType} = properties;\n const {global: global, space: space, elements: elements} = configuration;\n const {transparentUI: transparentUI, language: language} = global;\n const {layout: layout, transformOrigin: transformOrigin} = space;\n const layoutType = pluridData.layoutNames[layout.type];\n const {show: showTransformOrigin, size: transformOriginSize} = transformOrigin;\n const planeOpacity = elements.plane.opacity;\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpaceTransparentUserInterface), React__default[\"default\"].createElement(PluridSwitch$2, {\n checked: transparentUI,\n atChange: () => dispatchToggleConfigurationSpaceTransparentUI(),\n exclusive: true,\n level: 2,\n theme: interactionTheme\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpaceShowTransformOrigin), React__default[\"default\"].createElement(PluridSwitch$2, {\n checked: showTransformOrigin,\n atChange: () => dispatchToggleConfigurationSpaceShowTransformOrigin(),\n exclusive: true,\n level: 2,\n theme: interactionTheme\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpaceTransformOriginSize), React__default[\"default\"].createElement(PluridDropdown, {\n selectables: [ \"small\", \"normal\", \"large\" ],\n selected: transformOriginSize.toLowerCase(),\n atSelect: selection => {\n const selected = selection.toUpperCase();\n if (selected === pluridData.SIZES.SMALL || selected === pluridData.SIZES.NORMAL || selected === pluridData.SIZES.LARGE) {\n dispatchSetConfigurationSpaceTransformOriginSize(selected);\n }\n },\n heightItems: 3,\n theme: interactionTheme\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpacePlaneOpacity), React__default[\"default\"].createElement(PluridSlider$1, {\n value: planeOpacity,\n max: 1,\n min: 0,\n step: .1,\n defaultValue: 100,\n atChange: value => dispatchSetConfigurationPlaneOpacity(value),\n thumbSize: \"large\",\n level: 2,\n theme: interactionTheme\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpaceLayoutType), React__default[\"default\"].createElement(PluridDropdown, {\n selectables: [ ...Object.values(pluridData.layoutNames) ],\n selected: layoutType,\n atSelect: selection => {\n const selected = selection.toUpperCase().replace(/\\s/g, \"_\");\n dispatchSetConfigurationSpaceLayoutType(selected);\n },\n heightItems: 3,\n theme: interactionTheme,\n width: 100\n })));\n};\n\nconst mapStateToProps$9 = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$9 = dispatch => ({\n dispatchSetConfigurationPlaneOpacity: value => dispatch(actions.configuration.setConfigurationPlaneOpacity(value)),\n dispatchToggleConfigurationSpaceTransparentUI: () => dispatch(actions.configuration.toggleConfigurationSpaceTransparentUI()),\n dispatchToggleConfigurationSpaceShowTransformOrigin: () => dispatch(actions.configuration.toggleConfigurationShowTransformOrigin()),\n dispatchSetConfigurationSpaceTransformOriginSize: size => dispatch(actions.configuration.setConfigurationSpaceTransformOriginSize(size)),\n dispatchSetConfigurationSpaceLayoutType: layoutType => dispatch(actions.configuration.setConfigurationSpaceLayout(layoutType))\n});\n\nconst ConnectedPluridMenuMoreSpace = reactRedux.connect(mapStateToProps$9, mapDispatchToProps$9, null, {\n context: StateContext\n})(PluridMenuMoreSpace);\n\nconst {inputs: {Switch: PluridSwitch$1}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreToolbar = properties => {\n const {stateLanguage: stateLanguage, interactionTheme: interactionTheme, configuration: configuration, viewSize: viewSize, dispatchToggleConfigurationToolbarConceal: dispatchToggleConfigurationToolbarConceal, dispatchToggleConfigurationToolbarTransformIcons: dispatchToggleConfigurationToolbarTransformIcons, dispatchToggleConfigurationToolbarTransformButtons: dispatchToggleConfigurationToolbarTransformButtons, dispatchToggleConfigurationToolbarOpaque: dispatchToggleConfigurationToolbarOpaque} = properties;\n const {toolbar: toolbar} = configuration.elements;\n const {conceal: conceal, opaque: opaque, transformIcons: transformIcons, transformButtons: transformButtons} = toolbar;\n const [viewSizeSmall, setViewSizeSmall] = React.useState(false);\n React.useEffect((() => {\n if (viewSize.width < 800) {\n setViewSizeSmall(true);\n } else {\n setViewSizeSmall(false);\n }\n }), [ viewSize.width ]);\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerToolbarAlwaysOpaque)), React__default[\"default\"].createElement(PluridSwitch$1, {\n theme: interactionTheme,\n checked: opaque,\n atChange: () => dispatchToggleConfigurationToolbarOpaque(),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerToolbarShowTransformIcons)), React__default[\"default\"].createElement(PluridSwitch$1, {\n theme: interactionTheme,\n checked: transformIcons,\n atChange: () => dispatchToggleConfigurationToolbarTransformIcons(),\n exclusive: true,\n level: 2\n })), !viewSizeSmall && React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerToolbarShowTransformArrows)), React__default[\"default\"].createElement(PluridSwitch$1, {\n theme: interactionTheme,\n checked: transformButtons,\n atChange: () => dispatchToggleConfigurationToolbarTransformButtons(),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerToolbarConcealToolbar)), React__default[\"default\"].createElement(PluridSwitch$1, {\n theme: interactionTheme,\n checked: conceal,\n atChange: () => dispatchToggleConfigurationToolbarConceal(),\n exclusive: true,\n level: 2\n })));\n};\n\nconst mapStateToProps$8 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state),\n viewSize: selectors.space.getViewSize(state)\n});\n\nconst mapDispatchToProps$8 = dispatch => ({\n dispatchToggleConfigurationToolbarConceal: () => dispatch(actions.configuration.toggleConfigurationToolbarConceal()),\n dispatchToggleConfigurationToolbarTransformIcons: () => dispatch(actions.configuration.toggleConfigurationToolbarTransformIcons()),\n dispatchToggleConfigurationToolbarTransformButtons: () => dispatch(actions.configuration.toggleConfigurationToolbarTransformButtons()),\n dispatchToggleConfigurationToolbarOpaque: () => dispatch(actions.configuration.toggleConfigurationToolbarOpaque())\n});\n\nconst ConnectedPluridMenuMoreToolbar = reactRedux.connect(mapStateToProps$8, mapDispatchToProps$8, null, {\n context: StateContext\n})(PluridMenuMoreToolbar);\n\nconst {inputs: {Switch: PluridSwitch}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreViewcube = properties => {\n const {stateLanguage: stateLanguage, interactionTheme: interactionTheme, configuration: configuration, dispatchToggleConfigurationViewcubeHide: dispatchToggleConfigurationViewcubeHide, dispatchToggleConfigurationViewcubeButtons: dispatchToggleConfigurationViewcubeButtons, dispatchToggleConfigurationViewcubeOpaque: dispatchToggleConfigurationViewcubeOpaque, dispatchToggleConfigurationViewcubeConceal: dispatchToggleConfigurationViewcubeConceal} = properties;\n const {viewcube: viewcube} = configuration.elements;\n const {show: show, buttons: buttons, opaque: opaque, conceal: conceal} = viewcube;\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: !show ? true : false\n }, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerViewcubeShowViewcube)), React__default[\"default\"].createElement(PluridSwitch, {\n theme: interactionTheme,\n checked: show,\n atChange: () => dispatchToggleConfigurationViewcubeHide(!show),\n exclusive: true,\n level: 2\n })), show && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerViewcubeShowTransformButtons)), React__default[\"default\"].createElement(PluridSwitch, {\n theme: interactionTheme,\n checked: buttons,\n atChange: () => dispatchToggleConfigurationViewcubeButtons(!buttons),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerViewcubeAlwaysOpaque)), React__default[\"default\"].createElement(PluridSwitch, {\n theme: interactionTheme,\n checked: opaque,\n atChange: () => dispatchToggleConfigurationViewcubeOpaque(!opaque),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerViewcubeConcealViewcube)), React__default[\"default\"].createElement(PluridSwitch, {\n theme: interactionTheme,\n checked: conceal,\n atChange: () => dispatchToggleConfigurationViewcubeConceal(),\n exclusive: true,\n level: 2\n }))));\n};\n\nconst mapStateToProps$7 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$7 = dispatch => ({\n dispatchToggleConfigurationViewcubeHide: toggle => dispatch(actions.configuration.toggleConfigurationViewcubeHide(toggle)),\n dispatchToggleConfigurationViewcubeButtons: toggle => dispatch(actions.configuration.toggleConfigurationViewcubeButtons(toggle)),\n dispatchToggleConfigurationViewcubeOpaque: toggle => dispatch(actions.configuration.toggleConfigurationViewcubeOpaque(toggle)),\n dispatchToggleConfigurationViewcubeConceal: () => dispatch(actions.configuration.toggleConfigurationViewcubeConceal())\n});\n\nconst ConnectedPluridMenuMoreViewcube = reactRedux.connect(mapStateToProps$7, mapDispatchToProps$7, null, {\n context: StateContext\n})(PluridMenuMoreViewcube);\n\nconst {inputs: {Slider: PluridSlider}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreTechnical = properties => {\n const {stateLanguage: stateLanguage, stateConfiguration: stateConfiguration, stateInteractionTheme: stateInteractionTheme, dispatchSetConfigurationSpaceCullingDistance: dispatchSetConfigurationSpaceCullingDistance} = properties;\n const {cullingDistance: cullingDistance} = stateConfiguration.space;\n const [localCullingDistance, setLocalCullingDistance] = React.useState(cullingDistance);\n const dispatchCullingDistanceUpdateFunction = value => {\n dispatchSetConfigurationSpaceCullingDistance(value);\n };\n const dispatchCullingDistanceUpdate = pluridFunctionsReact.useDebouncedCallback(dispatchCullingDistanceUpdateFunction, 300);\n const handleCullingDistance = value => {\n setLocalCullingDistance(value);\n dispatchCullingDistanceUpdate(value);\n };\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTechnicalCullingDistance)), React__default[\"default\"].createElement(PluridSlider, {\n theme: stateInteractionTheme,\n value: localCullingDistance,\n atChange: handleCullingDistance,\n min: 1e3,\n max: 5e3,\n defaultValue: 1500\n })));\n};\n\nconst mapStateToProps$6 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$6 = dispatch => ({\n dispatchSetConfigurationSpaceCullingDistance: value => dispatch(actions.configuration.setConfigurationSpaceCullingDistance(value))\n});\n\nconst ConnectedPluridMenuMoreTechnical = reactRedux.connect(mapStateToProps$6, mapDispatchToProps$6, null, {\n context: StateContext\n})(PluridMenuMoreTechnical);\n\nconst PluridMenuMoreShortcuts = properties => {\n const {interactionTheme: interactionTheme, configuration: configuration} = properties;\n const {global: global} = configuration;\n const {language: language} = global;\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridData.defaultShortcuts.map(((shortcut, index) => {\n const {type: type} = shortcut;\n const shortcutData = pluridData.shortcutsNames[type];\n const {name: name, internationalizedKey: internationalizedKey, key: key, modifier: modifier} = shortcutData;\n const modifierString = Array.isArray(modifier) ? modifier.reduce(((total, element) => total + \" + \" + element)) + \" +\" : typeof modifier === \"string\" ? modifier + \" +\" : \"\";\n const internationalizedName = pluridEngine.internatiolate(language, name);\n const keyAsAny = key;\n const keyName = internationalizedKey ? pluridEngine.internatiolate(language, keyAsAny) : key;\n const afterline = type === \"TURN_DOWN\" || type === \"TOGGLE_ROTATE\" || type === \"TOGGLE_TRANSLATE\" || type === \"TOGGLE_SCALE\";\n return React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n key: name,\n theme: interactionTheme,\n afterline: afterline,\n last: index === pluridData.defaultShortcuts.length - 1 ? true : false\n }, React__default[\"default\"].createElement(\"div\", null, internationalizedName), React__default[\"default\"].createElement(\"div\", null, modifierString, \" \", keyName));\n })));\n};\n\nconst mapStateToProps$5 = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$5 = dispatch => ({});\n\nconst ConnectedPluridMenuMoreShortcuts = reactRedux.connect(mapStateToProps$5, mapDispatchToProps$5, null, {\n context: StateContext\n})(PluridMenuMoreShortcuts);\n\nconst moreMenusRecord = {\n GLOBAL: {\n name: pluridData.internationalization.fields.toolbarDrawerGlobalTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.GLOBAL,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreGlobal, null)\n },\n TRANSFORM: {\n name: pluridData.internationalization.fields.toolbarDrawerTransformTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.TRANSFORM,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreTransform, null)\n },\n SPACE: {\n name: pluridData.internationalization.fields.toolbarDrawerSpaceTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.SPACE,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreSpace, null)\n },\n TOOLBAR: {\n name: pluridData.internationalization.fields.toolbarDrawerToolbarTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.TOOLBAR,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreToolbar, null)\n },\n VIEWCUBE: {\n name: pluridData.internationalization.fields.toolbarDrawerViewcubeTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.VIEWCUBE,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreViewcube, null)\n },\n TECHNICAL: {\n name: pluridData.internationalization.fields.toolbarDrawerTechnicalTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.TECHNICAL,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreTechnical, null)\n },\n SHORTCUTS: {\n name: pluridData.internationalization.fields.toolbarDrawerShortcutsTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.SHORTCUTS,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreShortcuts, null)\n }\n};\n\nconst moreMenus = Object.values(moreMenusRecord);\n\nconst resolveMenus = drawers => {\n if (drawers.length === 0 || drawers.includes(\"ALL\")) {\n return moreMenus;\n }\n const resolvedMenus = [];\n for (const drawer of drawers) {\n const menu = moreMenusRecord[drawer];\n resolvedMenus.push(menu);\n }\n return resolvedMenus;\n};\n\nconst PluridMoreMenu = properties => {\n const {stateLanguage: stateLanguage, stateInteractionTheme: stateInteractionTheme, stateConfiguration: stateConfiguration, stateToolbarMenuScrollPosition: stateToolbarMenuScrollPosition, dispatchToggleConfigurationToolbarToggleDrawer: dispatchToggleConfigurationToolbarToggleDrawer, dispatchSetUIToolbarScrollPosition: dispatchSetUIToolbarScrollPosition} = properties;\n const {global: global, elements: elements} = stateConfiguration;\n const {transparentUI: transparentUI} = global;\n const {toolbar: toolbar} = elements;\n const {drawers: drawers, toggledDrawers: toggledDrawers} = toolbar;\n const menus = resolveMenus(drawers);\n const moreMenuScrollElement = React.useRef(null);\n const handleWheel = pluridFunctionsReact.useDebouncedCallback((_event => {\n if (moreMenuScrollElement.current) {\n const scrollPosition = moreMenuScrollElement.current.scrollTop;\n dispatchSetUIToolbarScrollPosition(scrollPosition);\n }\n }), 100);\n React.useEffect((() => {\n if (moreMenuScrollElement.current) {\n moreMenuScrollElement.current.addEventListener(\"wheel\", handleWheel);\n }\n return () => {\n if (moreMenuScrollElement.current) {\n moreMenuScrollElement.current.removeEventListener(\"wheel\", handleWheel);\n }\n };\n }), [ moreMenuScrollElement.current ]);\n React.useEffect((() => {\n if (moreMenuScrollElement.current) {\n moreMenuScrollElement.current.scrollTop = stateToolbarMenuScrollPosition;\n }\n }), [ stateToolbarMenuScrollPosition, moreMenuScrollElement.current ]);\n return React__default[\"default\"].createElement(StyledPluridMoreMenu, {\n theme: stateInteractionTheme,\n transparentUI: transparentUI\n }, React__default[\"default\"].createElement(StyledPluridMoreMenuScroll, {\n ref: moreMenuScrollElement\n }, menus.map((moreMenu => {\n const {name: name, drawer: drawer, component: component} = moreMenu;\n const internationalizedName = pluridEngine.internatiolate(stateLanguage, name);\n return React__default[\"default\"].createElement(ConnectedPluridDrawer, {\n key: name,\n heading: internationalizedName,\n items: React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, component),\n toggled: toggledDrawers.includes(\"ALL\") || toggledDrawers.includes(drawer),\n toggle: () => dispatchToggleConfigurationToolbarToggleDrawer(drawer)\n });\n }))));\n};\n\nconst mapStateToProperties$d = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n stateInteractionTheme: selectors.themes.getInteractionTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateToolbarMenuScrollPosition: selectors.ui.getToolbarScrollPosition(state)\n});\n\nconst mapDispatchToProperties$d = dispatch => ({\n dispatchToggleConfigurationToolbarToggleDrawer: drawer => dispatch(actions.configuration.toggleConfigurationToolbarToggleDrawer(drawer)),\n dispatchSetUIToolbarScrollPosition: value => dispatch(actions.ui.setUIToolbarScrollPosition(value))\n});\n\nconst ConnectedPluridMoreMenu = reactRedux.connect(mapStateToProperties$d, mapDispatchToProperties$d, null, {\n context: StateContext\n})(PluridMoreMenu);\n\nconst StyledPluridToolbarRotate = styled__default[\"default\"].div`\n display: grid;\n align-items: center;\n justify-items: center;\n grid-template-columns: ${props => {\n if (!props.showTransformButtons) {\n return \"1fr\";\n }\n return \"30px 30px 60px 30px 30px\";\n}};\n`;\n\nconst StyledPluridTransformArrow = styled__default[\"default\"].div`\n user-select: none;\n cursor: pointer;\n border-radius: 50px;\n width: 25px;\n height: 25px;\n display: grid;\n place-content: center;\n padding: 2px;\n\n background-color: ${({pressed: pressed, theme: theme}) => {\n if (pressed) {\n return theme.backgroundColorTertiary;\n }\n return \"initial\";\n}};\n\n :hover {\n background-color: ${({theme: theme}) => theme.backgroundColorTertiary};\n }\n`;\n\nconst arrowSigns = {\n left: \"◀\",\n right: \"▶\",\n up: \"▲\",\n down: \"▼\"\n};\n\nconst events = \"tap press pressup\";\n\nconst PluridTransformArrow = properties => {\n const {direction: direction, transform: transform, interactionTheme: interactionTheme} = properties;\n const arrowSign = arrowSigns[direction] || \"\";\n const pressingInterval = React.useRef(null);\n const arrowElement = React.useRef(null);\n const [pressed, setPressed] = React.useState(false);\n const handleTouch = event => {\n const eventData = {\n altKey: event.srcEvent.altKey\n };\n switch (event.type) {\n case \"tap\":\n transform(eventData);\n if (pressingInterval.current) {\n setPressed(false);\n clearInterval(pressingInterval.current);\n }\n break;\n\n case \"press\":\n setPressed(true);\n pressingInterval.current = setInterval((() => {\n transform(eventData);\n }), 30);\n break;\n\n case \"pressup\":\n setPressed(false);\n if (pressingInterval.current) {\n clearInterval(pressingInterval.current);\n }\n break;\n }\n };\n const handleMouseLeave = () => {\n if (pressingInterval.current) {\n setPressed(false);\n clearInterval(pressingInterval.current);\n }\n };\n React.useEffect((() => {\n if (typeof window === \"undefined\") {\n return;\n }\n let touch;\n const loadTouch = () => __awaiter(void 0, void 0, void 0, (function*() {\n const HammerImport = yield loadHammer();\n const Hammer = HammerImport.default;\n touch = new Hammer(arrowElement.current);\n touch.on(events, handleTouch);\n }));\n loadTouch();\n return () => {\n if (touch) {\n touch.off(events, handleTouch);\n }\n };\n }), [ arrowElement.current ]);\n return React__default[\"default\"].createElement(StyledPluridTransformArrow, {\n ref: arrowElement,\n theme: interactionTheme,\n pressed: pressed,\n onMouseLeave: () => handleMouseLeave()\n }, arrowSign);\n};\n\nconst mapStateToProps$4 = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$4 = dispatch => ({});\n\nconst ConnectedPluridTransformArrow = reactRedux.connect(mapStateToProps$4, mapDispatchToProps$4, null, {\n context: StateContext\n})(PluridTransformArrow);\n\nconst PluridToolbarRotate = properties => {\n const {showTransformButtons: showTransformButtons, showIcons: showIcons, transformMode: transformMode, toggleTransform: toggleTransform, stateLanguage: stateLanguage, interactionTheme: interactionTheme, rotateUp: rotateUp, rotateDown: rotateDown, rotateLeft: rotateLeft, rotateRight: rotateRight} = properties;\n return React__default[\"default\"].createElement(StyledPluridToolbarRotate, {\n showTransformButtons: showTransformButtons\n }, showTransformButtons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"left\",\n transform: () => rotateRight()\n }), React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"up\",\n transform: () => rotateUp()\n })), React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: interactionTheme,\n onClick: () => toggleTransform(pluridData.TRANSFORM_MODES.ROTATION),\n active: transformMode === pluridData.TRANSFORM_MODES.ROTATION,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons,\n button: showIcons\n }, showIcons ? React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconRotate, null)) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarTransformRotate))), showTransformButtons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"down\",\n transform: () => rotateDown()\n }), React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"right\",\n transform: () => rotateLeft()\n })));\n};\n\nconst mapStateToProps$3 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$3 = dispatch => ({\n rotateUp: () => dispatch(actions.space.rotateUp()),\n rotateDown: () => dispatch(actions.space.rotateDown()),\n rotateLeft: () => dispatch(actions.space.rotateLeft()),\n rotateRight: () => dispatch(actions.space.rotateRight())\n});\n\nconst ConnectedPluridToolbarRotate = reactRedux.connect(mapStateToProps$3, mapDispatchToProps$3, null, {\n context: StateContext\n})(PluridToolbarRotate);\n\nconst StyledPluridToolbarScale = styled__default[\"default\"].div`\n display: grid;\n align-items: center;\n justify-items: center;\n grid-template-columns: ${props => {\n if (!props.showTransformButtons) {\n return \"1fr\";\n }\n return \"30px 60px 30px\";\n}};\n`;\n\nconst PluridToolbarScale = properties => {\n const {showTransformButtons: showTransformButtons, showIcons: showIcons, transformMode: transformMode, toggleTransform: toggleTransform, stateLanguage: stateLanguage, interactionTheme: interactionTheme, scaleUp: scaleUp, scaleDown: scaleDown} = properties;\n return React__default[\"default\"].createElement(StyledPluridToolbarScale, {\n showTransformButtons: showTransformButtons\n }, showTransformButtons && React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"up\",\n transform: () => scaleUp()\n }), React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: interactionTheme,\n onClick: () => toggleTransform(pluridData.TRANSFORM_MODES.SCALE),\n active: transformMode === pluridData.TRANSFORM_MODES.SCALE,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons,\n button: showIcons\n }, showIcons ? React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconScale, null)) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarTransformScale))), showTransformButtons && React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"down\",\n transform: () => scaleDown()\n }));\n};\n\nconst mapStateToProps$2 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$2 = dispatch => ({\n scaleUp: () => dispatch(actions.space.scaleUp()),\n scaleDown: () => dispatch(actions.space.scaleDown())\n});\n\nconst ConnectedPluridToolbarScale = reactRedux.connect(mapStateToProps$2, mapDispatchToProps$2, null, {\n context: StateContext\n})(PluridToolbarScale);\n\nconst StyledPluridToolbarTranslate = styled__default[\"default\"].div`\n display: grid;\n align-items: center;\n justify-items: center;\n grid-template-columns: ${props => {\n if (!props.showTransformButtons) {\n return \"1fr\";\n }\n return \"30px 30px 60px 30px 30px\";\n}};\n`;\n\nconst PluridToolbarTranslate = properties => {\n const {showTransformButtons: showTransformButtons, showIcons: showIcons, transformMode: transformMode, toggleTransform: toggleTransform, stateLanguage: stateLanguage, interactionTheme: interactionTheme, translateUp: translateUp, translateDown: translateDown, translateLeft: translateLeft, translateRight: translateRight, translateIn: translateIn, translateOut: translateOut} = properties;\n return React__default[\"default\"].createElement(StyledPluridToolbarTranslate, {\n showTransformButtons: showTransformButtons\n }, showTransformButtons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"left\",\n transform: () => translateLeft()\n }), React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"up\",\n transform: event => {\n if (event.altKey) {\n translateOut();\n } else {\n translateUp();\n }\n }\n })), React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: interactionTheme,\n onClick: () => toggleTransform(pluridData.TRANSFORM_MODES.TRANSLATION),\n active: transformMode === pluridData.TRANSFORM_MODES.TRANSLATION,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons,\n button: showIcons\n }, showIcons ? React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconTranslate, null)) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarTransformTranslate))), showTransformButtons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"down\",\n transform: event => {\n if (event.altKey) {\n translateIn();\n } else {\n translateDown();\n }\n }\n }), React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"right\",\n transform: () => translateRight()\n })));\n};\n\nconst mapStateToProperties$c = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$c = dispatch => ({\n translateUp: () => dispatch(actions.space.translateUp()),\n translateDown: () => dispatch(actions.space.translateDown()),\n translateLeft: () => dispatch(actions.space.translateLeft()),\n translateRight: () => dispatch(actions.space.translateRight()),\n translateIn: () => dispatch(actions.space.translateIn()),\n translateOut: () => dispatch(actions.space.translateOut())\n});\n\nconst ConnectedPluridToolbarTranslate = reactRedux.connect(mapStateToProperties$c, mapDispatchToProperties$c, null, {\n context: StateContext\n})(PluridToolbarTranslate);\n\nconst PluridToolbar = properties => {\n const {theme: theme, configuration: configuration, viewSize: viewSize, dispatchToggleConfigurationSpaceFirstPerson: dispatchToggleConfigurationSpaceFirstPerson, dispatchSetConfigurationSpaceTransformMode: dispatchSetConfigurationSpaceTransformMode} = properties;\n const {global: global, elements: elements, space: space} = configuration;\n const {transparentUI: transparentUI} = global;\n const {firstPerson: firstPerson, transformMode: transformMode, fadeInTime: fadeInTime} = space;\n const {toolbar: toolbar} = elements;\n const {conceal: conceal, opaque: opaque, transformIcons: transformIcons, transformButtons: transformButtons} = toolbar;\n const showToolbar = toolbar.show;\n const menuTimeout = React.useRef(null);\n const [mouseIn, setMouseIn] = React.useState(false);\n const [showMenu, setShowMenu] = React.useState(MENUS.NONE);\n const [showIcons, setShowIcons] = React.useState(transformIcons);\n const [showTransformButtons, setShowTransformButtons] = React.useState(transformButtons);\n const [isMounted, setIsMounted] = React.useState(false);\n const toggleTransform = TYPE => {\n if (showMenu !== MENUS.NONE) {\n setShowMenu(MENUS.NONE);\n }\n dispatchSetConfigurationSpaceTransformMode(TYPE);\n };\n const handleShowMenu = menu => {\n if (showMenu === menu) {\n setShowMenu(MENUS.NONE);\n } else {\n dispatchSetConfigurationSpaceTransformMode(pluridData.TRANSFORM_MODES.ALL);\n setShowMenu(menu);\n }\n };\n React.useEffect((() => {\n setIsMounted(true);\n }), []);\n React.useEffect((() => {\n if (viewSize.width < VIEW_SIZE_WIDTH_LIMIT) {\n if (transformButtons) {\n setShowTransformButtons(false);\n }\n }\n if (viewSize.width > VIEW_SIZE_WIDTH_LIMIT) {\n setShowTransformButtons(transformButtons);\n }\n }), [ viewSize.width ]);\n React.useEffect((() => {\n setShowIcons(transformIcons);\n setShowTransformButtons(transformButtons);\n }), [ transformIcons, transformButtons ]);\n React.useEffect((() => {\n if (mouseIn && menuTimeout.current) {\n clearTimeout(menuTimeout.current);\n }\n if (!mouseIn) {\n menuTimeout.current = setTimeout((() => {\n setShowMenu(MENUS.NONE);\n }), 400);\n }\n return () => {\n if (menuTimeout.current) {\n clearTimeout(menuTimeout.current);\n }\n };\n }), [ mouseIn ]);\n if (!showToolbar) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledToolbar, {\n onMouseEnter: () => setMouseIn(true),\n onMouseLeave: () => setMouseIn(false),\n mouseIn: mouseIn,\n conceal: conceal,\n showMenu: showMenu,\n isMounted: isMounted,\n fadeInTime: fadeInTime,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_TOOLBAR\n }, React__default[\"default\"].createElement(StyledToolbarButtons, {\n theme: theme,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons,\n documentsBased: false,\n mouseIn: mouseIn,\n opaque: opaque,\n transparentUI: transparentUI\n }, React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: theme,\n onClick: () => dispatchToggleConfigurationSpaceFirstPerson(undefined),\n active: firstPerson,\n button: true,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons\n }, React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconFirstPerson, null))), React__default[\"default\"].createElement(ConnectedPluridToolbarRotate, {\n showTransformButtons: showTransformButtons,\n showIcons: showIcons,\n transformMode: transformMode,\n toggleTransform: toggleTransform\n }), React__default[\"default\"].createElement(ConnectedPluridToolbarScale, {\n showTransformButtons: showTransformButtons,\n showIcons: showIcons,\n transformMode: transformMode,\n toggleTransform: toggleTransform\n }), React__default[\"default\"].createElement(ConnectedPluridToolbarTranslate, {\n showTransformButtons: showTransformButtons,\n showIcons: showIcons,\n transformMode: transformMode,\n toggleTransform: toggleTransform\n }), React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: theme,\n onClick: () => handleShowMenu(MENUS.MORE),\n active: showMenu === MENUS.MORE,\n button: true,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons\n }, React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconMore, null)))), showMenu === MENUS.UNIVERSES && React__default[\"default\"].createElement(ConnectedPluridMenuUniverses, null), showMenu === MENUS.MORE && React__default[\"default\"].createElement(ConnectedPluridMoreMenu, null));\n};\n\nconst mapStateToProperties$b = state => ({\n configuration: selectors.configuration.getConfiguration(state),\n theme: selectors.themes.getInteractionTheme(state),\n viewSize: selectors.space.getViewSize(state)\n});\n\nconst mapDispatchToProperties$b = dispatch => ({\n dispatchToggleConfigurationSpaceFirstPerson: () => dispatch(actions.configuration.toggleConfigurationSpaceFirstPerson()),\n dispatchSetConfigurationSpaceTransformMode: mode => dispatch(actions.configuration.setConfigurationSpaceTransformMode(mode))\n});\n\nconst ConnectedPluridToolbar = reactRedux.connect(mapStateToProperties$b, mapDispatchToProperties$b, null, {\n context: StateContext\n})(PluridToolbar);\n\nconst StyledPluridViewcube = styled__default[\"default\"].div`\n position: absolute;\n @media (max-width: 800px) {\n top: ${({conceal: conceal, mouseOver: mouseOver}) => {\n if (conceal && !mouseOver) {\n return \"-90px\";\n }\n return \"0\";\n}};\n }\n bottom: ${({conceal: conceal, mouseOver: mouseOver}) => {\n if (conceal && !mouseOver) {\n return \"-90px\";\n }\n return \"0\";\n}};\n right: ${({conceal: conceal, mouseOver: mouseOver}) => {\n if (conceal && !mouseOver) {\n return \"-100px\";\n }\n return \"0\";\n}};\n position: absolute;\n user-select: none;\n transition: all 300ms ease-in-out;\n z-index: 9998;\n height: 175px;\n display: grid;\n grid-template-areas: \"PVScale PVScale PVScale PVScale\"\n \"PVEmptyOne PVRotateUp PVEmptyTwo PVTranslateY\"\n \"PVRotateLeft PVModel PVRotateRight PVTranslateY\"\n \"PVEmptyThree PVRotateDown PVFitview PVTranslateY\"\n \"PVTranslateX PVTranslateX PVTranslateX PVTranslateX\";\n grid-template-rows: 20px 15px 105px 15px 20px;\n grid-template-columns: 15px 100px 15px 20px;\n\n opacity: ${({fadeInTime: fadeInTime}) => {\n if (fadeInTime) {\n return \"0\";\n }\n return \"1\";\n}};\n animation: ${({fadeInTime: fadeInTime, isMounted: isMounted}) => {\n if (isMounted && fadeInTime) {\n return fadeInAnimation(fadeInTime);\n }\n return \"\";\n}};\n\n :hover {\n opacity: 1;\n }\n`;\n\nconst StyledPluridViewcubeArrow = styled__default[\"default\"].div`\n display: grid;\n place-content: center;\n\n /* TODO\n * Themed color\n */\n color: white;\n`;\n\nconst StyledPluridViewcubeArrowIcon = styled__default[\"default\"].div`\n user-select: none;\n font-size: 0.6rem;\n width: 1.2rem;\n height: 1.2rem;\n border-radius: 0.6rem;\n display: grid;\n place-content: center;\n cursor: pointer;\n\n :hover {\n background-color: ${({theme: theme}) => theme.backgroundColorTertiary};\n }\n`;\n\nconst StyledFitView = styled__default[\"default\"].div`\n grid-area: PVFitview;\n display: grid;\n place-content: center;\n cursor: pointer;\n user-select: none;\n\n svg {\n height: 0.8rem;\n width: 0.8rem;\n fill: white;\n }\n`;\n\nconst StyledPluridViewcubeFace = styled__default[\"default\"].div`\n font-size: 0.6rem;\n position: absolute;\n height: 50px;\n width: 50px;\n pointer-events: none;\n display: grid;\n transform-style: preserve-3d;\n grid-template-areas: \"PVFTopLeft PVFTopCenter PVFTopRight\"\n \"PVFMiddleLeft PVFMiddleCenter PVFMiddleRight\"\n \"PVFBottomLeft PVFBottomCenter PVFBottomRight\";\n grid-template-rows: 10px 30px 10px;\n grid-template-columns: 10px 30px 10px;\n box-sizing: content-box;\n transition: all 300ms linear;\n\n border: 1px solid ${({mouseOver: mouseOver, theme: theme}) => {\n if (mouseOver) {\n return theme.colorTertiary;\n }\n return theme.backgroundColorSecondary;\n}};\n box-shadow: ${({face: face, theme: theme}) => {\n if (face === \"base\") {\n return \"0px 0px 12px 2px \" + theme.boxShadowPenumbraColor;\n }\n return \"\";\n}};\n opacity: ${({opaque: opaque, mouseOver: mouseOver}) => {\n if (!opaque) {\n if (mouseOver) {\n return \"0.8\";\n }\n if (!mouseOver) {\n return \"0.4\";\n }\n }\n return \"1\";\n}};\n transform: ${({face: face}) => {\n switch (face) {\n case \"front\":\n return \"translateZ(25px) rotateY(0deg)\";\n\n case \"back\":\n return \"translateZ(-25px) rotateY(-180deg)\";\n\n case \"left\":\n return \"translateX(-25px) rotateY(-90deg)\";\n\n case \"right\":\n return \"translateX(25px) rotateY(90deg)\";\n\n case \"top\":\n return \"translateY(-25px) rotateX(90deg)\";\n\n case \"base\":\n return \"translateY(25px) rotateX(-90deg)\";\n }\n return \"\";\n}};\n`;\n\nconst StyledPluridViewcubeFaceZone = styled__default[\"default\"].div`\n display: grid;\n place-content: center;\n cursor: pointer;\n pointer-events: all;\n\n grid-area: ${({type: type}) => `PVF${type}`};\n color: ${({theme: theme, hovered: hovered}) => {\n if (hovered) {\n return theme.colorPrimary;\n }\n return theme.colorSecondary;\n}};\n background-color: ${({theme: theme, transparentUI: transparentUI, hovered: hovered, active: active}) => {\n if (transparentUI && !hovered) {\n return theme.backgroundColorPrimaryAlpha;\n }\n if (active) {\n return theme.backgroundColorTertiary;\n }\n if (hovered) {\n return theme.backgroundColorTertiary;\n }\n return theme.backgroundColorSecondary;\n}};\n border: 1px solid ${({theme: theme, transparentUI: transparentUI, hovered: hovered}) => {\n if (transparentUI && !hovered) {\n return \"transparent\";\n }\n if (hovered) {\n return theme.colorTertiary;\n }\n return theme.backgroundColorSecondary;\n}};\n\n :hover {\n background-color: ${({theme: theme}) => theme.backgroundColorTertiary};\n }\n`;\n\nconst faceTypes = {\n topLeft: \"TopLeft\",\n topCenter: \"TopCenter\",\n topRight: \"TopRight\",\n middleLeft: \"MiddleLeft\",\n middleCenter: \"MiddleCenter\",\n middleRight: \"MiddleRight\",\n bottomLeft: \"BottomLeft\",\n bottomCenter: \"BottomCenter\",\n bottomRight: \"BottomRight\"\n};\n\nconst zoneCodes = {\n frontTopLeft: \"A1\",\n frontTopCenter: \"A2\",\n frontTopRight: \"A3\",\n frontMiddleLeft: \"B1\",\n frontMiddleCenter: \"B2\",\n frontMiddleRight: \"B3\",\n frontBottomLeft: \"C1\",\n frontBottomCenter: \"C2\",\n frontBottomRight: \"C3\",\n rightTopLeft: \"A3\",\n rightTopCenter: \"A4\",\n rightTopRight: \"A5\",\n rightMiddleLeft: \"B3\",\n rightMiddleCenter: \"B4\",\n rightMiddleRight: \"B5\",\n rightBottomLeft: \"C3\",\n rightBottomCenter: \"C4\",\n rightBottomRight: \"C5\",\n backTopLeft: \"A5\",\n backTopCenter: \"A6\",\n backTopRight: \"A7\",\n backMiddleLeft: \"B5\",\n backMiddleCenter: \"B6\",\n backMiddleRight: \"B7\",\n backBottomLeft: \"C5\",\n backBottomCenter: \"C6\",\n backBottomRight: \"C7\",\n leftTopLeft: \"A7\",\n leftTopCenter: \"A8\",\n leftTopRight: \"A1\",\n leftMiddleLeft: \"B7\",\n leftMiddleCenter: \"B8\",\n leftMiddleRight: \"B1\",\n leftBottomLeft: \"C7\",\n leftBottomCenter: \"C8\",\n leftBottomRight: \"C1\",\n topTopLeft: \"A7\",\n topTopCenter: \"A6\",\n topTopRight: \"A5\",\n topMiddleLeft: \"A8\",\n topMiddleCenter: \"D1\",\n topMiddleRight: \"A4\",\n topBottomLeft: \"A1\",\n topBottomCenter: \"A2\",\n topBottomRight: \"A3\",\n baseTopLeft: \"C1\",\n baseTopCenter: \"C2\",\n baseTopRight: \"C3\",\n baseMiddleLeft: \"C8\",\n baseMiddleCenter: \"E1\",\n baseMiddleRight: \"C4\",\n baseBottomLeft: \"C7\",\n baseBottomCenter: \"C6\",\n baseBottomRight: \"C5\"\n};\n\nconst faceTransform = {\n A1: {\n rotateX: -45,\n rotateY: 45\n },\n A2: {\n rotateX: -45,\n rotateY: 0\n },\n A3: {\n rotateX: -45,\n rotateY: -45\n },\n B1: {\n rotateX: 0,\n rotateY: 45\n },\n B2: {\n rotateX: 0,\n rotateY: 0\n },\n B3: {\n rotateX: 0,\n rotateY: -45\n },\n C1: {\n rotateX: 45,\n rotateY: 45\n },\n C2: {\n rotateX: 45,\n rotateY: 0\n },\n C3: {\n rotateX: 45,\n rotateY: -45\n },\n A4: {\n rotateX: -45,\n rotateY: 270.1\n },\n A5: {\n rotateX: -45,\n rotateY: 225\n },\n B4: {\n rotateX: 0,\n rotateY: 270.1\n },\n B5: {\n rotateX: 0,\n rotateY: 225\n },\n C4: {\n rotateX: 45,\n rotateY: 270.1\n },\n C5: {\n rotateX: 45,\n rotateY: 225\n },\n A6: {\n rotateX: -45,\n rotateY: 180\n },\n A7: {\n rotateX: -45,\n rotateY: 135\n },\n B6: {\n rotateX: 0,\n rotateY: 180.1\n },\n B7: {\n rotateX: 0,\n rotateY: 135\n },\n C6: {\n rotateX: 45,\n rotateY: 180.1\n },\n C7: {\n rotateX: 45,\n rotateY: 135\n },\n A8: {\n rotateX: -45,\n rotateY: 90.1\n },\n B8: {\n rotateX: 0,\n rotateY: 90.1\n },\n C8: {\n rotateX: 45,\n rotateY: 90.1\n },\n D1: {\n rotateX: -90.1,\n rotateY: 0\n },\n E1: {\n rotateX: 90.1,\n rotateY: 0\n }\n};\n\nconst PluridViewcubeFace = properties => {\n const {face: face, faceText: faceText, mouseOver: mouseOver, hoveredZone: hoveredZone, setHoveredZone: setHoveredZone, activeZone: activeZone, setActiveZone: setActiveZone, generalTheme: generalTheme, interactionTheme: interactionTheme, configuration: configuration, dispatchRotateX: dispatchRotateX, dispatchRotateY: dispatchRotateY, dispatchSetAnimatedTransform: dispatchSetAnimatedTransform} = properties;\n const {global: global, elements: elements} = configuration;\n const {transparentUI: transparentUI} = global;\n const opaqueFace = elements.viewcube.opaque;\n const handleClick = type => {\n const faceType = `${face}${type}`;\n const zoneCode = zoneCodes[faceType];\n const transform = faceTransform[zoneCode];\n setActiveZone(zoneCode);\n dispatchSetAnimatedTransform(true);\n dispatchRotateX(transform.rotateX);\n dispatchRotateY(transform.rotateY);\n setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), 450);\n };\n return React__default[\"default\"].createElement(StyledPluridViewcubeFace, {\n theme: generalTheme,\n face: face,\n opaque: opaqueFace,\n mouseOver: mouseOver\n }, React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.topLeft,\n active: activeZone === zoneCodes[`${face}${faceTypes.topLeft}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.topLeft}`],\n onClick: () => handleClick(faceTypes.topLeft),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.topLeft}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.topCenter,\n active: activeZone === zoneCodes[`${face}${faceTypes.topCenter}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.topCenter}`],\n onClick: () => handleClick(faceTypes.topCenter),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.topCenter}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.topRight,\n active: activeZone === zoneCodes[`${face}${faceTypes.topRight}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.topRight}`],\n onClick: () => handleClick(faceTypes.topRight),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.topRight}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.middleLeft,\n active: activeZone === zoneCodes[`${face}${faceTypes.middleLeft}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.middleLeft}`],\n onClick: () => handleClick(faceTypes.middleLeft),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.middleLeft}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.middleCenter,\n active: activeZone === zoneCodes[`${face}${faceTypes.middleCenter}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.middleCenter}`],\n onClick: () => handleClick(faceTypes.middleCenter),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.middleCenter}`]),\n transparentUI: transparentUI\n }, faceText), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.middleRight,\n active: activeZone === zoneCodes[`${face}${faceTypes.middleRight}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.middleRight}`],\n onClick: () => handleClick(faceTypes.middleRight),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.middleRight}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.bottomLeft,\n active: activeZone === zoneCodes[`${face}${faceTypes.bottomLeft}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.bottomLeft}`],\n onClick: () => handleClick(faceTypes.bottomLeft),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.bottomLeft}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.bottomCenter,\n active: activeZone === zoneCodes[`${face}${faceTypes.bottomCenter}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.bottomCenter}`],\n onClick: () => handleClick(faceTypes.bottomCenter),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.bottomCenter}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.bottomRight,\n active: activeZone === zoneCodes[`${face}${faceTypes.bottomRight}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.bottomRight}`],\n onClick: () => handleClick(faceTypes.bottomRight),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.bottomRight}`]),\n transparentUI: transparentUI\n }));\n};\n\nconst mapStateToProperties$a = state => ({\n generalTheme: selectors.themes.getGeneralTheme(state),\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProperties$a = dispatch => ({\n dispatchRotateX: angleX => dispatch(actions.space.rotateX(angleX)),\n dispatchRotateY: angleY => dispatch(actions.space.rotateY(angleY)),\n dispatchSetAnimatedTransform: animated => dispatch(actions.space.setAnimatedTransform(animated))\n});\n\nconst ConnectedPluridViewcubeFace = reactRedux.connect(mapStateToProperties$a, mapDispatchToProperties$a, null, {\n context: StateContext\n})(PluridViewcubeFace);\n\nconst StyledPluridViewcubeModel = styled__default[\"default\"].div`\n grid-area: PVModel;\n margin-left: -7px;\n margin-top: 5px;\n`;\n\nconst StyledPluridViewcubeModelContainer = styled__default[\"default\"].div`\n perspective: 2000px;\n perspective-origin: 50% 50%;\n`;\n\nconst StyledPluridViewcubeModelCube = styled__default[\"default\"].div`\n transform-style: preserve-3d;\n width: 50px;\n height: 50px;\n`;\n\nconst {matrixArrayToCSSMatrix: matrixArrayToCSSMatrix, rotateMatrix: rotateMatrix, multiplyArrayOfMatrices: multiplyArrayOfMatrices, scaleMatrix: scaleMatrix, translateMatrix: translateMatrix} = pluridEngine.interaction.matrix;\n\nconst {degToRad: degToRad} = pluridEngine.interaction.quaternion;\n\nconst PluridViewcubeModel = properties => {\n const {mouseOver: mouseOver, stateLanguage: stateLanguage, spaceRotationX: spaceRotationX, spaceRotationY: spaceRotationY, stateAnimatedTransform: stateAnimatedTransform, stateTransformTime: stateTransformTime} = properties;\n const [hoveredZone, setHoveredZone] = React.useState(\"\");\n const [activeZone, setActiveZone] = React.useState(\"\");\n const handleMouseLeave = () => {\n setHoveredZone(\"\");\n };\n const computeTransform = () => {\n const offsets = {\n x: 32,\n y: 23,\n z: 0\n };\n const transformOrigins = {\n x: 0,\n y: 0,\n z: 0\n };\n const scale = 1;\n const rotationMatrix = rotateMatrix(degToRad(-spaceRotationX), degToRad(-spaceRotationY));\n const translationMatrix = translateMatrix(offsets.x, offsets.y, offsets.z);\n const scalationMatrix = scaleMatrix(scale);\n const transformMatrix = multiplyArrayOfMatrices([ translationMatrix, multiplyArrayOfMatrices([ translateMatrix(transformOrigins.x, transformOrigins.y, transformOrigins.z), rotationMatrix, translateMatrix(-transformOrigins.x, -transformOrigins.y, -transformOrigins.z) ]), scalationMatrix ]);\n const transform = matrixArrayToCSSMatrix(transformMatrix);\n return transform;\n };\n React.useEffect((() => {\n if (!hoveredZone) {\n setActiveZone(\"\");\n }\n }), [ spaceRotationX, spaceRotationY ]);\n const transform = computeTransform();\n return React__default[\"default\"].createElement(StyledPluridViewcubeModel, null, React__default[\"default\"].createElement(StyledPluridViewcubeModelContainer, null, React__default[\"default\"].createElement(StyledPluridViewcubeModelCube, {\n suppressHydrationWarning: true,\n style: {\n transform: transform,\n transition: mouseOver || stateAnimatedTransform ? `transform ${stateTransformTime}ms ease-in-out` : \"\"\n },\n onMouseLeave: () => handleMouseLeave()\n }, React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"front\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeFront),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"back\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeBack),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"left\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeLeft),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"right\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeRight),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"top\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeTop),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"base\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeBase),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }))));\n};\n\nconst mapStateToProperties$9 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n spaceRotationX: selectors.space.getRotationX(state),\n spaceRotationY: selectors.space.getRotationY(state),\n stateAnimatedTransform: selectors.space.getAnimatedTransform(state),\n stateTransformTime: selectors.space.getTransformTime(state)\n});\n\nconst mapDispatchToProperties$9 = dispatch => ({});\n\nconst ConnectedPluridViewcubeModel = reactRedux.connect(mapStateToProperties$9, mapDispatchToProperties$9, null, {\n context: StateContext\n})(PluridViewcubeModel);\n\nconst PluridViewcube = properties => {\n const {stateConfiguration: stateConfiguration, stateInteractionTheme: stateInteractionTheme, stateTransformTime: stateTransformTime, dispatchRotateXWith: dispatchRotateXWith, dispatchRotateYWith: dispatchRotateYWith, dispatchSetAnimatedTransform: dispatchSetAnimatedTransform, dispatchSpaceResetTransform: dispatchSpaceResetTransform} = properties;\n const {elements: elements, space: space} = stateConfiguration;\n const {viewcube: viewcube} = elements;\n const {buttons: buttons, conceal: conceal} = viewcube;\n const {fadeInTime: fadeInTime} = space;\n const showViewcube = viewcube.show;\n const [mouseOver, setMouseOver] = React.useState(false);\n const [isMounted, setIsMounted] = React.useState(false);\n const animatedRotate = (type, value) => {\n dispatchSetAnimatedTransform(true);\n switch (type) {\n case \"rotateX\":\n dispatchRotateXWith(value);\n break;\n\n case \"rotateY\":\n dispatchRotateYWith(value);\n break;\n }\n setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), stateTransformTime);\n };\n const animatedReset = event => {\n if (event.ctrlKey || event.metaKey) {\n return;\n }\n dispatchSetAnimatedTransform(true);\n dispatchSpaceResetTransform();\n setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), stateTransformTime);\n };\n React.useEffect((() => {\n setIsMounted(true);\n }), []);\n if (!showViewcube) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledPluridViewcube, {\n onMouseEnter: () => setMouseOver(true),\n onMouseLeave: () => setMouseOver(false),\n onMouseMove: () => !mouseOver ? setMouseOver(true) : null,\n conceal: conceal,\n mouseOver: mouseOver,\n isMounted: isMounted,\n fadeInTime: fadeInTime,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_VIEWCUBE\n }, React__default[\"default\"].createElement(ConnectedPluridViewcubeModel, {\n mouseOver: mouseOver\n }), mouseOver && buttons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridViewcubeArrow, {\n style: {\n gridArea: \"PVRotateUp\"\n }\n }, React__default[\"default\"].createElement(StyledPluridViewcubeArrowIcon, {\n theme: stateInteractionTheme,\n onClick: () => animatedRotate(\"rotateX\", -90.1)\n }, \"▲\")), React__default[\"default\"].createElement(StyledPluridViewcubeArrow, {\n theme: stateInteractionTheme,\n style: {\n gridArea: \"PVRotateDown\"\n }\n }, React__default[\"default\"].createElement(StyledPluridViewcubeArrowIcon, {\n theme: stateInteractionTheme,\n onClick: () => animatedRotate(\"rotateX\", 90.1)\n }, \"▼\")), React__default[\"default\"].createElement(StyledPluridViewcubeArrow, {\n theme: stateInteractionTheme,\n style: {\n gridArea: \"PVRotateLeft\"\n }\n }, React__default[\"default\"].createElement(StyledPluridViewcubeArrowIcon, {\n theme: stateInteractionTheme,\n onClick: () => animatedRotate(\"rotateY\", 90.1)\n }, \"◀\")), React__default[\"default\"].createElement(StyledPluridViewcubeArrow, {\n theme: stateInteractionTheme,\n style: {\n gridArea: \"PVRotateRight\"\n }\n }, React__default[\"default\"].createElement(StyledPluridViewcubeArrowIcon, {\n theme: stateInteractionTheme,\n onClick: () => animatedRotate(\"rotateY\", -90.1)\n }, \"▶\")), React__default[\"default\"].createElement(StyledFitView, {\n onClick: animatedReset\n }, React__default[\"default\"].createElement(pluridIconsReact.PluridIconGlobal, null))));\n};\n\nconst mapStateToProperties$8 = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state),\n stateTransformTime: selectors.space.getTransformTime(state)\n});\n\nconst mapDispatchToProperties$8 = dispatch => ({\n dispatchRotateXWith: value => dispatch(actions.space.rotateXWith(value)),\n dispatchRotateYWith: value => dispatch(actions.space.rotateYWith(value)),\n dispatchSetAnimatedTransform: animated => dispatch(actions.space.setAnimatedTransform(animated)),\n dispatchSpaceResetTransform: () => dispatch(actions.space.spaceResetTransform())\n});\n\nconst ConnectedPluridViewcube = reactRedux.connect(mapStateToProperties$8, mapDispatchToProperties$8, null, {\n context: StateContext\n})(PluridViewcube);\n\nconst PluridViewContainer = _properties => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridSpace, null), React__default[\"default\"].createElement(ConnectedOrigin, null), React__default[\"default\"].createElement(ConnectedPluridToolbar, null), React__default[\"default\"].createElement(ConnectedPluridViewcube, null));\n\nconst PluridView = properties => {\n const {planesRegistrar: planesRegistrar, customPlane: customPlane, planeContext: planeContext, planeContextValue: planeContextValue, pubsub: pubsub, planeNotFound: planeNotFound, planeRenderError: planeRenderError, matchedRoute: matchedRoute, hostname: hostname, state: state, stateConfiguration: stateConfiguration, stateTransform: stateTransform, stateSpaceView: stateSpaceView, stateTree: stateTree, stateGeneralTheme: stateGeneralTheme, dispatch: dispatch, dispatchSetConfiguration: dispatchSetConfiguration, dispatchSetGeneralTheme: dispatchSetGeneralTheme, dispatchSetInteractionTheme: dispatchSetInteractionTheme, dispatchSetSpaceField: dispatchSetSpaceField, dispatchSetSpaceLocation: dispatchSetSpaceLocation, dispatchSetAnimatedTransform: dispatchSetAnimatedTransform, dispatchSetTransformTime: dispatchSetTransformTime, dispatchSetTree: dispatchSetTree, dispatchRotateXWith: dispatchRotateXWith, dispatchRotateX: dispatchRotateX, dispatchRotateYWith: dispatchRotateYWith, dispatchRotateY: dispatchRotateY, dispatchTranslateXWith: dispatchTranslateXWith, dispatchTranslateYWith: dispatchTranslateYWith, dispatchTranslateZWith: dispatchTranslateZWith, dispatchScaleUpWith: dispatchScaleUpWith, dispatchScaleDownWith: dispatchScaleDownWith, dispatchSpaceSetViewSize: dispatchSpaceSetViewSize, dispatchSpaceSetView: dispatchSpaceSetView} = properties;\n const viewElement = React.useRef(null);\n const scrollTimeout = React.useRef();\n const [pluridPubSub, setPluridPubSub] = React.useState(pubsub ? [ pubsub ] : [ new PluridPubSub__default[\"default\"] ]);\n const [preventOverscroll, setPreventOverscroll] = React.useState(false);\n const handlePreventOverscroll = event => {\n if (event.shiftKey || event.altKey || event.metaKey || event.ctrlKey) {\n setPreventOverscroll(true);\n }\n clearTimeout(scrollTimeout.current);\n scrollTimeout.current = setTimeout((() => {\n setPreventOverscroll(false);\n }), pluridData.PLURID_DEFAULT_PREVENT_OVERSCROLL_TIMEOUT);\n };\n const shortcutsCallback = React.useCallback((event => {\n const {transformLocks: transformLocks} = stateConfiguration.space;\n handleGlobalShortcuts(dispatch, state, pluridPubSub[0], event, stateConfiguration.space.firstPerson, transformLocks);\n }), [ JSON.stringify(state), stateConfiguration.space.firstPerson, stateConfiguration.space.transformLocks, dispatch ]);\n const wheelCallback = React.useCallback((event => {\n handlePreventOverscroll(event);\n const {transformMode: transformMode, transformLocks: transformLocks} = stateConfiguration.space;\n const transformModes = {\n rotation: transformMode === pluridData.TRANSFORM_MODES.ROTATION,\n translation: transformMode === pluridData.TRANSFORM_MODES.TRANSLATION,\n scale: transformMode === pluridData.TRANSFORM_MODES.SCALE\n };\n handleGlobalWheel(dispatch, event, transformModes, transformLocks);\n }), [ dispatch, stateConfiguration.space.transformMode, stateConfiguration.space.transformLocks ]);\n const treeUpdate = (view, configuration = stateConfiguration) => {\n const planes = getRegisteredPlanes(planesRegistrar);\n const spaceTree = new pluridEngine.space.tree.Tree({\n planes: planes,\n configuration: configuration,\n view: view\n }, hostname);\n const computedTree = spaceTree.compute();\n for (const statePlane of stateTree) {\n for (const [index, computedPlane] of computedTree.entries()) {\n if (statePlane.route === computedPlane.route && pluridFunctions.objects.equals(statePlane.location, computedPlane.location)) {\n computedPlane.planeID = statePlane.planeID;\n if (statePlane.children) {\n computedTree[index].children = statePlane.children;\n }\n }\n }\n }\n dispatchSetTree(computedTree);\n };\n const treeUpdateCallback = React.useCallback((() => {\n treeUpdate(stateSpaceView);\n }), [ hostname, stateSpaceView, stateConfiguration ]);\n const handlePubSubSubscribe = pubsub => {\n const subscriptions = [ {\n topic: pluridData.PLURID_PUBSUB_TOPIC.CONFIGURATION,\n callback: data => {\n if (data.internal) {\n return;\n }\n const computedConfiguration = pluridEngine.general.configuration.merge(data, stateConfiguration);\n if (typeof computedConfiguration.global.theme === \"object\") {\n if (typeof computedConfiguration.global.theme.general === \"string\") {\n dispatchSetGeneralTheme(themes__default[\"default\"][computedConfiguration.global.theme.general]);\n } else {\n dispatchSetGeneralTheme(computedConfiguration.global.theme.general);\n }\n if (typeof computedConfiguration.global.theme.interaction === \"string\") {\n dispatchSetInteractionTheme(themes__default[\"default\"][computedConfiguration.global.theme.interaction]);\n } else {\n dispatchSetInteractionTheme(computedConfiguration.global.theme.interaction);\n }\n } else if (typeof computedConfiguration.global.theme === \"string\") {\n dispatchSetGeneralTheme(themes__default[\"default\"][computedConfiguration.global.theme]);\n dispatchSetInteractionTheme(themes__default[\"default\"][computedConfiguration.global.theme]);\n }\n dispatchSetConfiguration(computedConfiguration);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSFORM,\n callback: data => {\n const {value: value, internal: internal} = data;\n if (internal) {\n return;\n }\n dispatchSetSpaceLocation(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ANIMATED_TRANSFORM,\n callback: data => {\n const {value: value} = data;\n dispatchSetAnimatedTransform(value.active);\n if (value.time) {\n dispatchSetTransformTime(value.time);\n } else {\n dispatchSetTransformTime(450);\n }\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_X_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchRotateXWith(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_X_TO,\n callback: data => {\n const {value: value} = data;\n dispatchRotateX(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_Y_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchRotateYWith(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_Y_TO,\n callback: data => {\n const {value: value} = data;\n dispatchRotateY(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_X_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchTranslateXWith(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_X_TO,\n callback: data => {}\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_Y_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchTranslateYWith(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_Y_TO,\n callback: data => {}\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_Z_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchTranslateZWith(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_Z_TO,\n callback: data => {}\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.VIEW_ADD_PLANE,\n callback: data => {\n const {plane: plane} = data;\n const updatedView = [ ...stateSpaceView, plane ];\n dispatchSpaceSetView(updatedView);\n treeUpdate(updatedView);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.VIEW_SET_PLANES,\n callback: data => {\n const {view: view} = data;\n dispatchSpaceSetView([ ...view ]);\n treeUpdate(view);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.VIEW_REMOVE_PLANE,\n callback: data => {\n const {plane: plane} = data;\n const updatedView = stateSpaceView.filter((view => {\n if (typeof view === \"string\") {\n return view === plane;\n }\n return true;\n }));\n dispatchSpaceSetView(updatedView);\n treeUpdate(updatedView);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.NAVIGATE_TO_PLANE,\n callback: data => {\n const {id: id} = data;\n const plane = pluridEngine.space.tree.logic.getTreePlaneByID(stateTree, id);\n navigateToPluridPlane(dispatch, plane);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.ISOLATE_PLANE,\n callback: data => {\n const {id: id} = data;\n if (typeof id !== \"string\") {\n return;\n }\n dispatchSetSpaceField({\n field: \"isolatePlane\",\n value: id\n });\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.OPEN_CLOSED_PLANE,\n callback: () => {\n const treePlane = stateTree.find((plane => plane.planeID === state.space.lastClosedPlane));\n if (treePlane) {\n const forceShow = true;\n const {updatedTree: updatedTree} = pluridEngine.space.tree.logic.togglePlaneFromTree(stateTree, treePlane.planeID, forceShow);\n dispatchSetTree(updatedTree);\n dispatchSetSpaceField({\n field: \"lastClosedPlane\",\n value: \"\"\n });\n }\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.CLOSE_PLANE,\n callback: data => {\n const {id: id} = data;\n const treePlane = stateTree.find((plane => plane.planeID === id));\n if (treePlane) {\n const forceShow = false;\n const {updatedTree: updatedTree} = pluridEngine.space.tree.logic.togglePlaneFromTree(stateTree, treePlane.planeID, forceShow);\n dispatchSetTree(updatedTree);\n setTimeout((() => {\n dispatchSetTree(updatedTree);\n }), 50);\n dispatchSetSpaceField({\n field: \"lastClosedPlane\",\n value: id\n });\n }\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.PREVIOUS_ROOT,\n callback: () => {\n focusPreviousRoot(dispatch, state);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.NEXT_ROOT,\n callback: () => {\n focusNextRoot(dispatch, state);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.NAVIGATE_TO_ROOT,\n callback: data => {\n const index = data.index;\n if (typeof index !== \"undefined\") {\n focusRootIndex(dispatch, state, index);\n return;\n }\n const id = data.id;\n focusRootID(dispatch, state, id);\n }\n } ];\n const indexes = [];\n for (const subscription of subscriptions) {\n const index = pubsub.subscribe(subscription);\n indexes.push(index);\n }\n return () => {\n for (const index of indexes) {\n pubsub.unsubscribe(index);\n }\n };\n };\n const handlePubSubPublish = pubsub => {\n const internalTransform = {\n value: Object.assign({}, stateTransform),\n internal: true\n };\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSFORM,\n data: internalTransform\n });\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.CONFIGURATION,\n data: Object.assign(Object.assign({}, stateConfiguration), {\n internal: true\n })\n });\n };\n const registerPubSub = pubsub => {\n const pluridPubSubs = [ ...pluridPubSub, pubsub ];\n setPluridPubSub(pluridPubSubs);\n };\n const handleSwipe = event => {\n const {transformMode: transformMode} = stateConfiguration.space;\n if (transformMode === pluridData.TRANSFORM_MODES.ALL) {\n return;\n }\n const {velocity: velocity, distance: distance, direction: direction} = event;\n const {altKey: altKey} = event.srcEvent;\n const rotationMode = transformMode === pluridData.TRANSFORM_MODES.ROTATION;\n const translationMode = transformMode === pluridData.TRANSFORM_MODES.TRANSLATION;\n const scalationMode = transformMode === pluridData.TRANSFORM_MODES.SCALE;\n useAnimatedTransform(dispatch);\n switch (direction) {\n case 2:\n if (rotationMode) {\n dispatchRotateYWith(velocity * 60);\n }\n if (translationMode) {\n dispatchTranslateXWith(-1 * distance);\n }\n break;\n\n case 4:\n if (rotationMode) {\n dispatchRotateYWith(velocity * 60);\n }\n if (translationMode) {\n dispatchTranslateXWith(distance);\n }\n break;\n\n case 8:\n if (rotationMode) {\n dispatchRotateXWith(velocity * 60);\n }\n if (translationMode) {\n if (altKey) {\n dispatchTranslateZWith(-1 * distance);\n } else {\n dispatchTranslateYWith(-1 * distance);\n }\n }\n if (scalationMode) {\n dispatchScaleUpWith(velocity);\n }\n break;\n\n case 16:\n if (rotationMode) {\n dispatchRotateXWith(velocity * 60);\n }\n if (translationMode) {\n if (altKey) {\n dispatchTranslateZWith(distance);\n } else {\n dispatchTranslateYWith(distance);\n }\n }\n if (scalationMode) {\n dispatchScaleDownWith(velocity);\n }\n break;\n }\n };\n const handlePan = event => {\n const {transformMode: transformMode} = stateConfiguration.space;\n if (transformMode === pluridData.TRANSFORM_MODES.ALL) {\n return;\n }\n const {velocity: velocity, distance: distance, direction: direction} = event;\n const {altKey: altKey} = event.srcEvent;\n const rotationMode = transformMode === pluridData.TRANSFORM_MODES.ROTATION;\n const translationMode = transformMode === pluridData.TRANSFORM_MODES.TRANSLATION;\n const scalationMode = transformMode === pluridData.TRANSFORM_MODES.SCALE;\n const rotationVelocity = velocity * 20;\n const translationVelocity = distance / 5;\n const scaleVelocity = velocity / 4;\n switch (direction) {\n case 2:\n if (rotationMode) {\n dispatchRotateYWith(rotationVelocity);\n }\n if (translationMode) {\n dispatchTranslateXWith(-1 * translationVelocity);\n }\n break;\n\n case 4:\n if (rotationMode) {\n dispatchRotateYWith(rotationVelocity);\n }\n if (translationMode) {\n dispatchTranslateXWith(translationVelocity);\n }\n break;\n\n case 8:\n if (rotationMode) {\n dispatchRotateXWith(rotationVelocity);\n }\n if (translationMode) {\n if (altKey) {\n dispatchTranslateZWith(-1 * translationVelocity);\n } else {\n dispatchTranslateYWith(-1 * translationVelocity);\n }\n }\n if (scalationMode) {\n dispatchScaleUpWith(scaleVelocity);\n }\n break;\n\n case 16:\n if (rotationMode) {\n dispatchRotateXWith(rotationVelocity);\n }\n if (translationMode) {\n if (altKey) {\n dispatchTranslateZWith(translationVelocity);\n } else {\n dispatchTranslateYWith(translationVelocity);\n }\n }\n if (scalationMode) {\n dispatchScaleDownWith(scaleVelocity);\n }\n break;\n }\n };\n const handlePinch = (event, type) => {\n const {transformMode: transformMode} = stateConfiguration.space;\n if (transformMode !== \"TRANSLATION\") {\n return;\n }\n const direction = type === \"in\" ? 1 : -1;\n const velocity = direction * 20;\n dispatchTranslateZWith(velocity);\n };\n const handlePinchin = event => {\n handlePinch(event, \"in\");\n };\n const handlePinchout = event => {\n handlePinch(event, \"out\");\n };\n React.useEffect((() => {\n if (viewElement.current) {\n viewElement.current.addEventListener(\"keydown\", shortcutsCallback, {\n passive: false\n });\n viewElement.current.addEventListener(\"wheel\", wheelCallback, {\n passive: false\n });\n }\n return () => {\n if (viewElement.current) {\n viewElement.current.removeEventListener(\"keydown\", shortcutsCallback);\n viewElement.current.removeEventListener(\"wheel\", wheelCallback);\n }\n };\n }), [ JSON.stringify(state), viewElement.current, stateConfiguration.space.transformMode, stateConfiguration.space.firstPerson ]);\n React.useEffect((() => {\n const handleResize = pluridFunctions.meta.debounce((() => {\n if (viewElement && viewElement.current) {\n const width = viewElement.current.offsetWidth;\n const height = viewElement.current.offsetHeight;\n dispatchSpaceSetViewSize({\n width: width,\n height: height\n });\n }\n }), pluridData.PLURID_DEFAULT_RESIZE_DEBOUNCE_TIME);\n handleResize();\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }), []);\n React.useEffect((() => {\n window.addEventListener(\"resize\", treeUpdateCallback);\n return () => {\n window.removeEventListener(\"resize\", treeUpdateCallback);\n };\n }), [ stateSpaceView, stateConfiguration ]);\n React.useEffect((() => {\n if (typeof window === \"undefined\") {\n return;\n }\n let touch;\n const handleTouch = () => __awaiter(void 0, void 0, void 0, (function*() {\n const HammerImport = yield loadHammer();\n const Hammer = HammerImport.default;\n const {transformTouch: transformTouch} = stateConfiguration.space;\n delete Hammer.defaults.cssProps.userSelect;\n delete Hammer.defaults.cssProps.userDrag;\n delete Hammer.defaults.cssProps.tapHighlightColor;\n delete Hammer.defaults.cssProps.touchSelect;\n if (!viewElement.current) {\n return;\n }\n touch = new Hammer(viewElement.current);\n touch.get(\"pan\").set({\n direction: Hammer.DIRECTION_ALL\n });\n touch.get(\"swipe\").set({\n direction: Hammer.DIRECTION_ALL\n });\n touch.get(\"pinch\").set({\n enable: true\n });\n if (transformTouch === pluridData.TRANSFORM_TOUCHES.PAN) {\n touch.on(\"pan\", handlePan);\n } else {\n touch.on(\"swipe\", handleSwipe);\n }\n touch.on(\"pinchin\", handlePinchin);\n touch.on(\"pinchout\", handlePinchout);\n }));\n handleTouch();\n return () => {\n if (!touch) {\n return;\n }\n const {transformTouch: transformTouch} = stateConfiguration.space;\n if (transformTouch === pluridData.TRANSFORM_TOUCHES.PAN) {\n touch.off(\"pan\", handlePan);\n } else {\n touch.off(\"swipe\", handleSwipe);\n }\n touch.off(\"pinchin\", handlePinchin);\n touch.off(\"pinchout\", handlePinchout);\n };\n }), [ viewElement.current, stateConfiguration.space.transformTouch, stateConfiguration.space.transformMode ]);\n React.useEffect((() => {\n const handleGamepadConnect = event => {\n const gamepad = navigator.getGamepads()[event.gamepad.index];\n if (!gamepad) {\n return;\n }\n };\n const handleGamepadDisconnect = event => {\n const gamepad = navigator.getGamepads()[event.gamepad.index];\n if (!gamepad) {\n return;\n }\n };\n window.addEventListener(\"gamepadconnected\", handleGamepadConnect);\n window.addEventListener(\"gamepaddisconnected\", handleGamepadDisconnect);\n return () => {\n window.removeEventListener(\"gamepadconnected\", handleGamepadConnect);\n window.removeEventListener(\"gamepaddisconnected\", handleGamepadDisconnect);\n };\n }), []);\n React.useEffect((() => {\n const unsubscribers = [];\n for (const pubsub of pluridPubSub) {\n const unsubscriber = handlePubSubSubscribe(pubsub);\n unsubscribers.push(unsubscriber);\n }\n return () => {\n for (const unsubscriber of unsubscribers) {\n unsubscriber();\n }\n };\n }), [ state.space.lastClosedPlane, pluridPubSub.length, JSON.stringify(stateTree) ]);\n React.useEffect((() => {\n for (const pubsub of pluridPubSub) {\n handlePubSubPublish(pubsub);\n }\n }), [ pluridPubSub.length, stateConfiguration, stateTransform ]);\n React.useEffect((() => {\n treeUpdateCallback();\n }), []);\n const pluridContext = {\n planesRegistrar: planesRegistrar,\n planeContext: planeContext,\n planeContextValue: planeContextValue,\n customPlane: customPlane,\n planeNotFound: planeNotFound,\n planeRenderError: planeRenderError,\n matchedRoute: matchedRoute,\n hostname: hostname,\n defaultPubSub: pluridPubSub[0],\n registerPubSub: registerPubSub\n };\n return React__default[\"default\"].createElement(StyledView, {\n ref: viewElement,\n tabIndex: 0,\n transformMode: stateConfiguration.space.transformMode,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_VIEW\n }, React__default[\"default\"].createElement(GlobalStyle, {\n theme: stateGeneralTheme,\n preventOverscroll: preventOverscroll\n }), React__default[\"default\"].createElement(Context.Provider, {\n value: pluridContext\n }, stateSpaceView.length !== 0 ? React__default[\"default\"].createElement(PluridViewContainer, null) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null)));\n};\n\nconst mapStateToProperties$7 = state => ({\n state: state,\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateTransform: selectors.space.getTransform(state),\n stateTree: selectors.space.getTree(state),\n stateSpaceLoading: selectors.space.getLoading(state),\n stateSpaceView: selectors.space.getView(state),\n stateGeneralTheme: selectors.themes.getGeneralTheme(state)\n});\n\nconst mapDispatchToProperties$7 = dispatch => ({\n dispatch: dispatch,\n dispatchSetConfiguration: payload => dispatch(actions.configuration.setConfiguration(payload)),\n dispatchSetConfigurationMicro: () => dispatch(actions.configuration.setConfigurationMicro()),\n dispatchSetSpaceField: payload => dispatch(actions.space.setSpaceField(payload)),\n dispatchSpaceSetViewSize: payload => dispatch(actions.space.setViewSize(payload)),\n dispatchSetSpaceLoading: payload => dispatch(actions.space.setSpaceLoading(payload)),\n dispatchSetAnimatedTransform: payload => dispatch(actions.space.setAnimatedTransform(payload)),\n dispatchSetTransformTime: payload => dispatch(actions.space.setTransformTime(payload)),\n dispatchSetSpaceLocation: payload => dispatch(actions.space.setSpaceLocation(payload)),\n dispatchSetTree: payload => dispatch(actions.space.setTree(payload)),\n dispatchSetGeneralTheme: payload => dispatch(actions.themes.setGeneralTheme(payload)),\n dispatchSetInteractionTheme: payload => dispatch(actions.themes.setInteractionTheme(payload)),\n dispatchRotateX: payload => dispatch(actions.space.rotateX(payload)),\n dispatchRotateXWith: payload => dispatch(actions.space.rotateXWith(payload)),\n dispatchRotateY: payload => dispatch(actions.space.rotateY(payload)),\n dispatchRotateYWith: payload => dispatch(actions.space.rotateYWith(payload)),\n dispatchTranslateXWith: payload => dispatch(actions.space.translateXWith(payload)),\n dispatchTranslateYWith: payload => dispatch(actions.space.translateYWith(payload)),\n dispatchTranslateZWith: payload => dispatch(actions.space.translateZWith(payload)),\n dispatchScaleUpWith: payload => dispatch(actions.space.scaleUpWith(payload)),\n dispatchScaleDownWith: payload => dispatch(actions.space.scaleDownWith(payload)),\n dispatchSpaceSetView: payload => dispatch(actions.space.spaceSetView(payload))\n});\n\nconst ConnectedPluridView = reactRedux.connect(mapStateToProperties$7, mapDispatchToProperties$7, null, {\n context: StateContext\n})(PluridView);\n\nclass PluridApplication extends React.Component {\n constructor(properties, context) {\n super(properties);\n this.storeID = properties.id || \"default\";\n this.context = context;\n const defaultStore = this.computeStore();\n this.store = store(defaultStore);\n this.subscribeStore();\n }\n componentDidUpdate() {\n const updatedStore = this.computeStore();\n this.store.dispatch({\n type: \"SET_STATE\",\n payload: updatedStore\n });\n }\n componentWillUnmount() {\n if (this.storeUnubscriber) {\n this.storeUnubscriber();\n }\n }\n render() {\n return React__default[\"default\"].createElement(reactRedux.Provider, {\n store: this.store,\n context: StateContext\n }, React__default[\"default\"].createElement(ConnectedPluridView, Object.assign({}, this.props)));\n }\n computeStore() {\n const {view: view, planes: planes, configuration: configuration, precomputedState: precomputedState, planesRegistrar: planesRegistrar, useLocalStorage: useLocalStorage, hostname: hostname, space: space} = this.props;\n registerPlanes(planes, planesRegistrar, hostname);\n const currentState = this.store ? this.store.getState() : undefined;\n const localState = pluridEngine.state.local.load(this.storeID, useLocalStorage);\n const contextState = loadStateFromContext(this.context, space);\n const store = pluridEngine.state.compute(view, configuration, planesRegistrar, currentState, localState, precomputedState, contextState, hostname);\n return store;\n }\n subscribeStore() {\n if (!this.store) {\n return;\n }\n if (typeof localStorage === \"undefined\") {\n return;\n }\n if (!this.props.useLocalStorage) {\n return;\n }\n this.storeUnubscriber = this.store.subscribe((() => {\n const state = this.store.getState();\n const stateData = JSON.stringify(state);\n localStorage.setItem(\"pluridState-\" + this.storeID, stateData);\n }));\n }\n}\n\nPluridApplication.contextType = PluridContext;\n\nconst StyledSpaces = styled__default[\"default\"].div`\n scroll-snap-type: ${properties => {\n const {alignment: alignment, snapType: snapType} = properties;\n if (snapType === \"none\") {\n return \"none\";\n }\n return alignment + \" \" + snapType;\n}};\n\n flex-direction: ${properties => {\n const {alignment: alignment} = properties;\n if (alignment === \"x\") {\n return \"row\";\n }\n return \"column\";\n}};\n\n outline: none;\n overflow: auto;\n /* display: flex; */\n height: 100vh;\n height: -webkit-fill-available;\n width: 100vw;\n`;\n\nconst collectApplicationsFromPath = (isoMatch, protocol, host, globals) => __awaiter(void 0, void 0, void 0, (function*() {\n const path = {\n planes: [],\n spaces: [],\n view: [],\n value: \"\"\n };\n let defaultConfiguration;\n if (isoMatch.kind === \"Route\") {\n let routeData = isoMatch.data;\n defaultConfiguration = routeData.defaultConfiguration;\n if (isoMatch.data.resolver) {\n routeData = yield isoMatch.data.resolver(globals);\n }\n path.planes = routeData.planes || [];\n path.spaces = routeData.spaces || [];\n path.view = routeData.view || [];\n path.value = isoMatch.data.value || \"\";\n }\n const {planes: planes, spaces: spaces, view: view} = path;\n const plurids = [];\n if (spaces) {\n for (const space of spaces) {\n const planes = [];\n const view = [];\n if (space.planes) {\n for (const plane of space.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n pluridEngine.utilities.cleanPathElement(planeData.value);\n }\n }\n if (space.universes) {\n for (const universe of space.universes) {\n if (universe.clusters) {\n for (const cluster of universe.clusters) {\n for (const plane of cluster.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n universe.value === pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE : pluridEngine.utilities.cleanPathElement(universe.value);\n cluster.value === pluridData.PLURID_ROUTE_DEFAULT_CLUSTER_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_CLUSTER : pluridEngine.utilities.cleanPathElement(cluster.value);\n pluridEngine.utilities.cleanPathElement(planeData.value);\n }\n }\n }\n if (universe.planes) {\n for (const plane of universe.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n universe.value === pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE : pluridEngine.utilities.cleanPathElement(universe.value);\n pluridEngine.utilities.cleanPathElement(planeData.value);\n }\n }\n }\n }\n const pluridApplication = {\n planes: planes,\n view: view,\n configuration: defaultConfiguration\n };\n plurids.push(pluridApplication);\n }\n }\n if (planes) {\n const pluridPlanes = [];\n for (const plane of planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const {value: value, component: component} = planeData;\n path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n pluridEngine.utilities.cleanPathElement(planeData.value);\n const pluridPlane = {\n component: component,\n route: value\n };\n pluridPlanes.push(pluridPlane);\n }\n const pluridApplication = {\n planes: pluridPlanes,\n view: view,\n configuration: defaultConfiguration\n };\n plurids.push(pluridApplication);\n }\n return plurids;\n}));\n\nconst gatherPluridPlanes = (routes, planes) => {\n const pluridPlanes = [];\n for (const route of routes) {\n if (route.planes) {\n for (const plane of route.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const planeRoute = planeData.link ? planeData.link : planeData.value.startsWith(\"/\") ? planeData.value : route.value + \"/\" + planeData.value;\n const pluridPlane = {\n route: planeRoute,\n component: planeData.component\n };\n pluridPlanes.push(pluridPlane);\n }\n }\n if (route.spaces) ;\n }\n if (planes) {\n for (const plane of planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const pluridPlane = {\n route: planeData.value,\n component: planeData.component\n };\n pluridPlanes.push(pluridPlane);\n }\n }\n return pluridPlanes;\n};\n\nconst renderMultispace = (matchedRoute, hostname = \"origin\") => {\n var _a, _b, _c, _d, _e, _f;\n if (matchedRoute.kind !== \"Route\") {\n return () => () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const protocol = \"http\";\n const host = hostname;\n const {match: match, data: path} = matchedRoute;\n const {parameters: parameters, query: query} = match;\n const pluridRouteProperty = {\n value: match.value,\n parameters: parameters,\n query: query\n };\n const {exterior: exterior, planes: planes, spaces: spaces, slotted: slotted} = matchedRoute.data;\n const multispaceAlignment = ((_a = path.multispace) === null || _a === void 0 ? void 0 : _a.alignment) || \"y\";\n const multispaceSnapType = ((_b = path.multispace) === null || _b === void 0 ? void 0 : _b.snapType) || \"mandatory\";\n let PluridExterior = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n if (isReactRenderable(exterior)) {\n PluridExterior = exterior;\n }\n let PluridSpaces = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n const spacesArray = [];\n if (spaces) {\n for (const space of spaces) {\n const planes = [];\n const view = [];\n if (space.planes) {\n for (const plane of space.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const {component: component} = planeData;\n const pathName = path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n const universeName = pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE;\n const clusterName = pluridData.PLURID_ROUTE_DEFAULT_CLUSTER;\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const pathDivisions = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const fullPath = pathDivisions.join(pluridData.PLURID_ROUTE_SEPARATOR);\n const pluridPlane = {\n component: component,\n route: fullPath\n };\n planes.push(pluridPlane);\n view.push(fullPath);\n }\n }\n if (space.universes) {\n for (const universe of space.universes) {\n if (universe.planes) {\n for (const plane of universe.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const {component: component} = planeData;\n const pathName = path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n const universeName = universe.value === pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE : pluridEngine.utilities.cleanPathElement(universe.value);\n const clusterName = pluridData.PLURID_ROUTE_DEFAULT_CLUSTER;\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const pathDivisions = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const fullPath = pathDivisions.join(pluridData.PLURID_ROUTE_SEPARATOR);\n const pluridPlane = {\n component: component,\n route: fullPath\n };\n planes.push(pluridPlane);\n view.push(fullPath);\n }\n }\n }\n }\n const pluridPlanesRegistrar = new PluridPlanesRegistrar([], \"localhost:63000\");\n const App = React__default[\"default\"].createElement(PluridApplication, {\n key: pluridFunctions.uuid.generate(),\n id: path.value,\n planes: planes,\n view: view,\n configuration: space.configuration,\n planesRegistrar: pluridPlanesRegistrar,\n hostname: hostname\n });\n spacesArray.push(App);\n }\n }\n if (planes) {\n const pluridPlanes = [];\n const view = [];\n for (const plane of planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const {component: component} = planeData;\n const pathName = path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = pluridData.PLURID_ROUTE_DEFAULT_SPACE;\n const universeName = pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE;\n const clusterName = pluridData.PLURID_ROUTE_DEFAULT_CLUSTER;\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const pathDivisions = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const fullPath = pathDivisions.join(pluridData.PLURID_ROUTE_SEPARATOR);\n const pluridPlane = {\n component: component,\n route: fullPath\n };\n pluridPlanes.push(pluridPlane);\n if (!path.view) {\n view.push(fullPath);\n } else {\n if (path.view.includes(planeData.value)) {\n view.push(fullPath);\n }\n }\n }\n const App = React__default[\"default\"].createElement(PluridApplication, {\n key: pluridFunctions.uuid.generate(),\n id: path.value,\n planes: pluridPlanes,\n view: view,\n configuration: path.defaultConfiguration,\n hostname: hostname\n });\n spacesArray.push(App);\n }\n let MultispaceHeader;\n let MultispaceFooter;\n if (isReactRenderable((_c = path.multispace) === null || _c === void 0 ? void 0 : _c.header)) {\n MultispaceHeader = (_d = path.multispace) === null || _d === void 0 ? void 0 : _d.header;\n }\n if (isReactRenderable((_e = path.multispace) === null || _e === void 0 ? void 0 : _e.footer)) {\n MultispaceFooter = (_f = path.multispace) === null || _f === void 0 ? void 0 : _f.footer;\n }\n PluridSpaces = () => React__default[\"default\"].createElement(StyledSpaces, {\n alignment: multispaceAlignment,\n snapType: multispaceSnapType,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_MULTISPACE\n }, MultispaceHeader && React__default[\"default\"].createElement(MultispaceHeader, {\n plurid: pluridRouteProperty\n }), spacesArray, MultispaceFooter && React__default[\"default\"].createElement(MultispaceFooter, {\n plurid: pluridRouteProperty\n }));\n return () => {\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, exterior && React__default[\"default\"].createElement(PluridExterior, {\n spaces: slotted ? spacesArray : undefined,\n plurid: pluridRouteProperty\n }), (spaces || planes) && !slotted && React__default[\"default\"].createElement(PluridSpaces, null));\n return PluridRoute;\n };\n};\n\nconst computePluridRoute = (matchedRoute, planesRegistrar, isoMatcher, directPlane, hostname = \"origin\") => {\n if (directPlane || (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.kind) === \"RoutePlane\") {\n const match = directPlane || matchedRoute;\n if (!match) {\n return () => () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const DirectPlane = renderDirectPlane(match, planesRegistrar, hostname);\n return DirectPlane;\n }\n if (!matchedRoute) {\n const notFoundRoute = isoMatcher.match(\"/not-found\", \"route\");\n if (notFoundRoute && notFoundRoute.kind === \"Route\") {\n const notFoundRender = computePluridRoute(notFoundRoute, planesRegistrar, isoMatcher, undefined, hostname);\n return notFoundRender;\n }\n return () => () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {exterior: exterior, view: view, planes: planes, spaces: spaces, defaultConfiguration: defaultConfiguration, slotted: slotted, resolver: resolver} = matchedRoute.data;\n if (resolver) {\n resolver(undefined);\n }\n const pluridRouteProperty = {\n value: matchedRoute.match.value,\n parameters: matchedRoute.match.parameters,\n query: matchedRoute.match.query\n };\n let PluridRouteExterior;\n if (isReactRenderable(exterior)) {\n PluridRouteExterior = exterior;\n if (PluridRouteExterior) {\n PluridRouteExterior.displayName = \"PluridRouteExterior\";\n }\n }\n if (exterior && PluridRouteExterior && !view && !planes && !spaces) {\n return () => {\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, PluridRouteExterior && React__default[\"default\"].createElement(PluridRouteExterior, {\n plurid: pluridRouteProperty\n }));\n return PluridRoute;\n };\n }\n if (view) {\n return () => {\n const pubsub = new PluridPubSub__default[\"default\"];\n const space = matchedRoute.data.value;\n const pluridApplication = React__default[\"default\"].createElement(PluridApplication, {\n view: view,\n planesRegistrar: planesRegistrar,\n configuration: defaultConfiguration,\n pubsub: pubsub,\n matchedRoute: matchedRoute,\n hostname: hostname,\n space: space\n });\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, PluridRouteExterior && React__default[\"default\"].createElement(PluridRouteExterior, {\n plurid: pluridRouteProperty,\n pubsub: pubsub,\n spaces: slotted ? [ pluridApplication ] : undefined\n }), !slotted && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridApplication));\n return PluridRoute;\n };\n }\n return renderMultispace(matchedRoute);\n};\n\nconst computeInitialMatchedPath = staticContext => {\n if (staticContext) {\n return staticContext.path;\n }\n if (typeof window !== \"undefined\") {\n return window.location.pathname + window.location.search;\n }\n return \"/\";\n};\n\nconst getDirectPlaneMatch = (matchedPath, routes, planes) => {\n let matchRoute;\n let matchPlane;\n let matchPath;\n for (const route of routes) {\n if (route.planes) {\n for (const plane of route.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const planePath = route.value === \"/\" ? planeData.value : route.value + planeData.value;\n matchPath = planePath;\n if (matchedPath === planePath) {\n matchPlane = plane;\n break;\n }\n }\n }\n if (matchPlane) {\n matchRoute = route;\n break;\n }\n }\n if (planes) {\n for (const plane of planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n if (matchedPath === planeData.value) {\n matchPlane = plane;\n break;\n }\n }\n }\n return {\n matchRoute: matchRoute,\n matchPlane: matchPlane,\n matchPath: matchPath\n };\n};\n\nconst renderDirectPlane = (routePlane, planesRegistrar, hostname = \"origin\") => {\n if (routePlane.match.query.flat) {\n const flat = routePlane.match.query.flat.toLowerCase();\n const renderFlat = flat === \"true\" || flat === \"1\";\n if (renderFlat) {\n const pluridRoute = planesRegistrar.get(routePlane.match.value);\n if (pluridRoute) {\n const Flat = pluridRoute.component;\n if (typeof Flat !== \"function\") {\n return () => () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const DirectPlane = () => {\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(Flat, null));\n return PluridRoute;\n };\n return DirectPlane;\n }\n }\n }\n const {defaultConfiguration: defaultConfiguration} = routePlane === null || routePlane === void 0 ? void 0 : routePlane.data;\n const DirectPlane = () => {\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(PluridApplication, {\n view: [ routePlane.match.value ],\n planesRegistrar: planesRegistrar,\n configuration: defaultConfiguration,\n hostname: hostname\n }));\n return PluridRoute;\n };\n return DirectPlane;\n};\n\nconst PluridRouterBrowser = properties => {\n const {routes: routes, planes: planes, exterior: exterior, shell: shell, hostname: hostname, static: staticContext, view: cleanNavigationView, cleanNavigation: cleanNavigation, notFoundPath: notFoundPathProperty} = properties;\n const notFoundPath = notFoundPathProperty || \"/not-found\";\n const pluridPlanes = gatherPluridPlanes(routes, planes);\n const pluridPlanesRegistrar = React.useRef(new PluridPlanesRegistrar(pluridPlanes, hostname));\n const pluridIsoMatcher = React.useRef(new PluridIsoMatcher$1({\n routes: routes,\n routePlanes: planes\n }, hostname));\n const mounted = pluridFunctionsReact.useMounted();\n const [matchedPath, setMatchedPath] = React.useState(computeInitialMatchedPath(staticContext));\n const [matchedRoute, setMatchedRoute] = React.useState(pluridIsoMatcher.current.match(matchedPath, \"route\"));\n const [PluridRoute, setPluridRoute] = React.useState(computePluridRoute(matchedRoute, pluridPlanesRegistrar.current, pluridIsoMatcher.current, staticContext && staticContext.directPlane ? pluridIsoMatcher.current.match(staticContext.directPlane, \"route\") : undefined, hostname));\n const handleLocation = event => {\n let matchedPath;\n if (event && event.detail && event.detail.path && !matchedPath) {\n matchedPath = event.detail.path;\n }\n if (cleanNavigation && cleanNavigationView && !matchedPath) {\n matchedPath = cleanNavigationView;\n }\n const pathname = window.location.pathname;\n if (!matchedPath) {\n matchedPath = pathname + window.location.search;\n }\n setMatchedPath(matchedPath);\n };\n React.useEffect((() => {\n window.addEventListener(\"popstate\", handleLocation);\n window.addEventListener(pluridData.PLURID_ROUTER_LOCATION_CHANGED, handleLocation);\n return () => {\n window.removeEventListener(\"popstate\", handleLocation);\n window.removeEventListener(pluridData.PLURID_ROUTER_LOCATION_CHANGED, handleLocation);\n };\n }), []);\n React.useEffect((() => {\n if (!mounted) {\n return;\n }\n if (!cleanNavigation) {\n if (location.pathname !== matchedPath) {\n history.pushState(null, \"\", matchedPath);\n }\n }\n let matchedRoute = pluridIsoMatcher.current.match(matchedPath, \"route\");\n if (matchedRoute && matchedRoute.kind === \"RoutePlane\") {\n const DirectPlane = renderDirectPlane(matchedRoute, pluridPlanesRegistrar.current, hostname);\n setMatchedRoute(matchedRoute);\n setPluridRoute(DirectPlane);\n return;\n }\n if (!matchedRoute) {\n matchedRoute = pluridIsoMatcher.current.match(notFoundPath, \"route\");\n }\n setMatchedRoute(matchedRoute);\n setPluridRoute(computePluridRoute(matchedRoute, pluridPlanesRegistrar.current, pluridIsoMatcher.current, undefined, hostname));\n }), [ mounted, matchedPath ]);\n React.useEffect((() => {\n if (!matchedRoute) {\n return;\n }\n if (matchedRoute.kind !== \"Route\") {\n return;\n }\n const path = matchedRoute.match.value;\n pluridFunctions.storage.saveState(path, pluridData.PLURID_ROUTER_STORAGE);\n const locationStoredEvent = new CustomEvent(pluridData.PLURID_ROUTER_LOCATION_STORED, {\n detail: {\n path: path\n }\n });\n window.dispatchEvent(locationStoredEvent);\n }), [ cleanNavigation, matchedRoute ]);\n let PluridRouterExterior;\n if (isReactRenderable(exterior)) {\n PluridRouterExterior = exterior;\n if (PluridRouterExterior) {\n PluridRouterExterior.displayName = \"PluridRouterExterior\";\n }\n }\n let PluridRouterShell = ({children: children}) => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, children);\n if (isReactRenderable(shell)) {\n PluridRouterShell = shell;\n if (PluridRouterShell) {\n PluridRouterShell.displayName = \"PluridRouterShell\";\n }\n }\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, PluridRouterExterior && React__default[\"default\"].createElement(PluridRouterExterior, {\n matchedRoute: matchedRoute\n }), React__default[\"default\"].createElement(PluridRouterShell, {\n matchedRoute: matchedRoute\n }, React__default[\"default\"].createElement(PluridRoute, null)));\n};\n\nconst PluridRouterStatic = properties => {\n const {path: path, directPlane: directPlane, routes: routes, planes: planes, exterior: exterior, shell: shell, protocol: protocolProperty, hostname: hostnameProperty, gateway: gateway, gatewayQuery: gatewayQueryProperty, gatewayEndpoint: gatewayEndpointProperty} = properties;\n const protocol = protocolProperty || \"http\";\n const hostname = hostnameProperty || \"origin\";\n return React__default[\"default\"].createElement(PluridRouterBrowser, {\n routes: routes,\n planes: planes,\n exterior: exterior,\n shell: shell,\n static: {\n path: path,\n directPlane: directPlane\n },\n protocol: protocol,\n hostname: hostname\n });\n};\n\nclass PluridProvider extends React.Component {\n constructor(properties) {\n super(properties);\n this.properties = properties;\n }\n render() {\n const {metastate: metastate, children: children} = this.properties;\n return React__default[\"default\"].createElement(PluridContext.Provider, {\n value: metastate\n }, children);\n }\n}\n\nPluridProvider.displayName = \"PluridProvider\";\n\nconst DEFAULT_ROUTER_LINK_AS_ANCHOR = true;\n\nconst defaultLinkCoordinates = {\n x: 0,\n y: 0\n};\n\nconst PluridPortal = properties => {\n const {elementID: elementID, rootID: rootID, children: children} = properties;\n const target = pluridFunctionsReact.usePortal(elementID, rootID);\n return reactDom.createPortal(children, target);\n};\n\nconst StyledPluridPlanePreview = styled__default[\"default\"].div`\n position: absolute;\n min-width: 600px;\n min-height: 300px;\n z-index: 99999;\n\n top: ${({linkCoordinates: linkCoordinates}) => {\n const location = linkCoordinates.y;\n return location + \"px\";\n}};\n left: ${({linkCoordinates: linkCoordinates}) => {\n const location = linkCoordinates.x + 5;\n return location + \"px\";\n}};\n background-color: ${({theme: theme}) => theme.backgroundColorSecondary};\n box-shadow: ${({theme: theme}) => theme.boxShadowUmbra};\n`;\n\nconst PluridPlanePreview = properties => {\n const {planeRoute: planeRoute, linkCoordinates: linkCoordinates, previewComponent: previewComponent, previewOffsetX: previewOffsetX, previewOffsetY: previewOffsetY, stateGeneralTheme: stateGeneralTheme} = properties;\n const resolvedLinkCoordinates = {\n x: linkCoordinates.x + (previewOffsetX !== null && previewOffsetX !== void 0 ? previewOffsetX : 0),\n y: linkCoordinates.y + (previewOffsetY !== null && previewOffsetY !== void 0 ? previewOffsetY : 0)\n };\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {planesRegistrar: planesRegistrar} = context;\n const planesRegistry = getPlanesRegistrar(planesRegistrar);\n if (!planesRegistry) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const plane = planesRegistry.get(planeRoute);\n if (!plane) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const Component = previewComponent !== null && previewComponent !== void 0 ? previewComponent : plane.component;\n if (typeof Component !== \"function\") {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledPluridPlanePreview, {\n theme: stateGeneralTheme,\n linkCoordinates: resolvedLinkCoordinates\n }, React__default[\"default\"].createElement(Component, null));\n};\n\nconst mapStateToProperties$6 = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$6 = dispatch => ({});\n\nconst ConnectedPluridPlanePreview = reactRedux.connect(mapStateToProperties$6, mapDispatchToProperties$6, null, {\n context: StateContext\n})(PluridPlanePreview);\n\nconst StyledPluridLink = styled__default[\"default\"].a`\n /**\n * Forces element to go to the second row if inlined.\n */\n display: inline-block;\n\n cursor: pointer;\n color: ${({theme: theme}) => theme.colorTertiary};\n\n :hover {\n color: ${({theme: theme}) => theme.colorPrimary};\n }\n\n ::after {\n content: \"${({devisible: devisible, suffix: suffix}) => {\n if (!devisible) {\n if (suffix) {\n return suffix;\n }\n return \"'\";\n }\n return \"\";\n}}\";\n }\n`;\n\nconst PluridLink = properties => {\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, properties.children);\n }\n const {hostname: hostname, planesRegistrar: planesRegistrar, defaultPubSub: defaultPubSub} = context;\n const planesRegistry = getPlanesRegistrar(planesRegistrar);\n if (!planesRegistry) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, properties.children);\n }\n const {children: children, route: planeRoute, devisible: _devisible, suffix: _suffix, atClick: atClick, style: style, className: className, preview: preview, previewComponent: previewComponent, previewFadeIn: previewFadeIn, previewFadeOut: previewFadeOut, previewOffsetX: previewOffsetX, previewOffsetY: previewOffsetY, stateTree: stateTree, stateLastClosedPlane: stateLastClosedPlane, stateGeneralTheme: stateGeneralTheme, stateConfiguration: stateConfiguration, stateViewSize: stateViewSize, dispatch: dispatch, dispatchSetTree: dispatchSetTree, dispatchSetSpaceField: dispatchSetSpaceField, dispatchUpdateSpaceLinkCoordinates: dispatchUpdateSpaceLinkCoordinates} = properties;\n const planeControls = stateConfiguration.elements.plane.controls.show;\n const previewAppearTime = previewFadeIn || pluridData.PLURID_DEFAULT_CONFIGURATION_LINK_PREVIEW_FADE_IN;\n const previewDisappearTime = previewFadeOut || pluridData.PLURID_DEFAULT_CONFIGURATION_LINK_PREVIEW_FADE_OUT;\n const planeRouteResolved = computePlaneAddress(planeRoute);\n const absolutePlaneRoute = resolveRoute(planeRouteResolved, stateConfiguration.network.protocol, hostname || stateConfiguration.network.host);\n const suffix = _suffix !== null && _suffix !== void 0 ? _suffix : pluridData.PLURID_DEFAULT_CONFIGURATION_LINK_SUFFIX;\n const devisible = _devisible !== null && _devisible !== void 0 ? _devisible : false;\n const linkElement = React.useRef(null);\n const hoverInTimeout = React.useRef(null);\n const hoverOutTimeout = React.useRef(null);\n const [mouseOver, setMouseOver] = React.useState(false);\n const [showPreview, setShowPreview] = React.useState(false);\n const [showLink, setShowLink] = React.useState(false);\n const [pluridPlaneID, setPluridPlaneID] = React.useState(\"\");\n const [parentPlaneID, setParentPlaneID] = React.useState(getPluridPlaneIDByData$1(linkElement.current));\n const [linkCoordinates, setLinkCoordinates] = React.useState(defaultLinkCoordinates);\n const getPluridLinkCoordinates = () => {\n const link = linkElement.current;\n if (!link) {\n return Object.assign({}, defaultLinkCoordinates);\n }\n let partialTop = 0;\n let partialLeft = 0;\n let staticSet = false;\n let element = link;\n let searching = true;\n let top = 0;\n let left = 0;\n while (searching) {\n if (window.getComputedStyle(element).position === \"static\" && !staticSet) {\n partialTop += element.offsetTop;\n partialLeft += element.offsetLeft;\n staticSet = true;\n }\n if (window.getComputedStyle(element).position === \"relative\") {\n top += partialTop;\n left += partialLeft;\n partialTop = 0;\n partialLeft = 0;\n staticSet = false;\n }\n if (element.scrollLeft) {\n left += -element.scrollLeft;\n }\n if (element.scrollTop) {\n top += -element.scrollTop;\n }\n if (element.parentElement) {\n const pluridEntity = element.parentElement.dataset.pluridEntity;\n if (pluridEntity === \"PluridPlane\") {\n searching = false;\n }\n element = element.parentElement;\n } else {\n searching = false;\n }\n }\n const planeControlsHeight = planeControls ? 56 : 0;\n const x = left + link.offsetWidth;\n const y = top + planeControlsHeight;\n return {\n x: x,\n y: y\n };\n };\n const updateLinkCoordinates = () => {\n const newLinkCoordinates = getPluridLinkCoordinates();\n const payload = {\n planeID: pluridPlaneID,\n linkCoordinates: newLinkCoordinates\n };\n dispatchUpdateSpaceLinkCoordinates(payload);\n const updatedTree = pluridEngine.space.tree.logic.updatePlaneLocation(pluridFunctions.objects.clone(stateTree), parentPlaneID, pluridPlaneID, pluridFunctions.objects.clone(newLinkCoordinates));\n dispatchSetTree(updatedTree);\n };\n const debouncedUpdateLinkCoordinates = pluridFunctionsReact.useDebouncedCallback((() => {\n updateLinkCoordinates();\n }), pluridData.PLURID_DEFAULT_RESIZE_DEBOUNCE_TIME);\n const updateTreeWithLink = event => {\n if (!parentPlaneID || !absolutePlaneRoute) {\n return;\n }\n const {route: route} = absolutePlaneRoute;\n const linkCoordinates = getPluridLinkCoordinates();\n const {pluridPlaneID: pluridPlaneID, updatedTree: updatedTree, updatedTreePlane: updatedTreePlane} = pluridEngine.space.tree.logic.updateTreeWithNewPlane(route, parentPlaneID, linkCoordinates, pluridFunctions.objects.clone(stateTree), planesRegistry.getAll(), stateConfiguration, hostname);\n if (pluridPlaneID) {\n handlePlaneNavigation(event, updatedTreePlane);\n dispatchSetTree(updatedTree);\n setShowLink(true);\n setPluridPlaneID(pluridPlaneID);\n }\n };\n const togglePlane = forceShow => {\n const {updatedTree: updatedTree, updatedPlane: updatedPlane} = pluridEngine.space.tree.logic.togglePlaneFromTree(pluridFunctions.objects.clone(stateTree), pluridPlaneID, forceShow);\n dispatchSetTree(updatedTree);\n setShowLink((show => !show));\n setShowPreview(false);\n return {\n updatedPlane: updatedPlane\n };\n };\n const toggleLinkFromTree = event => {\n const {updatedPlane: updatedPlane} = togglePlane();\n handlePlaneNavigation(event, updatedPlane);\n };\n const handlePlaneNavigation = (event, updatedPlane) => {\n if (!updatedPlane) {\n return;\n }\n if (showLink) {\n return;\n }\n dispatchSetSpaceField({\n field: \"isolatePlane\",\n value: \"\"\n });\n navigateToPluridPlane(dispatch, updatedPlane, event);\n };\n const handleShowPluridPlane = event => {\n if (event.altKey) {\n if (showLink && pluridPlaneID) {\n const plane = pluridEngine.space.tree.logic.getTreePlaneByID(stateTree, pluridPlaneID);\n navigateToPluridPlane(dispatch, plane, event);\n return;\n }\n }\n if (!showLink && !pluridPlaneID) {\n updateTreeWithLink(event);\n } else {\n toggleLinkFromTree(event);\n }\n };\n const defocusLink = () => {\n if (linkElement.current) {\n linkElement.current.blur();\n }\n };\n const removePlane = () => {\n const updatedTree = pluridEngine.space.tree.logic.removePlaneFromTree(pluridFunctions.objects.clone(stateTree), pluridPlaneID);\n dispatchSetTree(updatedTree);\n setShowLink((show => !show));\n setShowPreview(false);\n };\n const handleClick = React.useCallback((event => {\n event.preventDefault();\n if (atClick !== undefined) {\n atClick(event);\n }\n handleShowPluridPlane(event);\n defocusLink();\n }), [ parentPlaneID, JSON.stringify(stateTree), linkElement.current ]);\n const handleKeyUp = event => {\n if (event.code === \"Enter\") {\n handleClick(event);\n defocusLink();\n return;\n }\n return;\n };\n React.useEffect((() => {\n const parentPlaneID = getPluridPlaneIDByData$1(linkElement.current);\n setParentPlaneID(parentPlaneID);\n const linkCoordinates = getPluridLinkCoordinates();\n setLinkCoordinates(linkCoordinates);\n }), []);\n React.useEffect((() => {\n if (showLink) {\n debouncedUpdateLinkCoordinates();\n }\n }), [ showLink, JSON.stringify(stateViewSize), JSON.stringify(stateTree) ]);\n React.useEffect((() => {\n if (!preview) {\n return;\n }\n if (mouseOver && hoverOutTimeout.current) {\n hoverInTimeout.current = setTimeout((() => {\n setShowPreview(true);\n }), previewAppearTime);\n clearTimeout(hoverOutTimeout.current);\n }\n if (!mouseOver) {\n hoverOutTimeout.current = setTimeout((() => {\n setShowPreview(false);\n if (hoverInTimeout.current) {\n clearTimeout(hoverInTimeout.current);\n }\n }), previewDisappearTime);\n }\n return () => {\n if (hoverOutTimeout.current) {\n clearTimeout(hoverOutTimeout.current);\n }\n if (hoverInTimeout.current) {\n clearTimeout(hoverInTimeout.current);\n }\n };\n }), [ preview, mouseOver ]);\n React.useEffect((() => {}), []);\n React.useEffect((() => {\n const openClosedPlaneIndex = defaultPubSub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.OPEN_CLOSED_PLANE,\n callback: () => {\n if (stateLastClosedPlane === pluridPlaneID) {\n togglePlane();\n dispatchSetSpaceField({\n field: \"lastClosedPlane\",\n value: \"\"\n });\n }\n }\n });\n return () => {\n defaultPubSub.unsubscribe(openClosedPlaneIndex);\n };\n }), [ showLink, pluridPlaneID, JSON.stringify(stateTree) ]);\n React.useEffect((() => {\n const closePlaneIndex = defaultPubSub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.CLOSE_PLANE,\n callback: data => {\n const {id: id} = data;\n if (id === pluridPlaneID) {\n if (showLink) {\n const show = false;\n togglePlane(show);\n dispatchSetSpaceField({\n field: \"lastClosedPlane\",\n value: id\n });\n }\n }\n }\n });\n return () => {\n defaultPubSub.unsubscribe(closePlaneIndex);\n };\n }), [ showLink, pluridPlaneID, JSON.stringify(stateTree) ]);\n React.useEffect((() => () => {\n if (showLink && linkElement.current === null) {\n removePlane();\n }\n }), [ showLink, showPreview, pluridPlaneID, parentPlaneID, JSON.stringify(stateTree) ]);\n return React__default[\"default\"].createElement(StyledPluridLink, {\n ref: linkElement,\n onClick: event => handleClick(event),\n onMouseEnter: () => setMouseOver(true),\n onMouseLeave: () => setMouseOver(false),\n onKeyUp: event => handleKeyUp(event),\n theme: stateGeneralTheme,\n suffix: suffix,\n devisible: devisible,\n style: Object.assign({}, style),\n className: className,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_LINK,\n tabIndex: 0\n }, children, showPreview && !showLink && React__default[\"default\"].createElement(PluridPortal, {\n elementID: `preview-${parentPlaneID}`,\n rootID: parentPlaneID\n }, React__default[\"default\"].createElement(ConnectedPluridPlanePreview, {\n planeRoute: planeRouteResolved,\n linkCoordinates: linkCoordinates,\n previewComponent: previewComponent,\n previewOffsetX: previewOffsetX,\n previewOffsetY: previewOffsetY\n })));\n};\n\nconst mapStateToProperties$5 = state => ({\n stateTree: selectors.space.getTree(state),\n stateLastClosedPlane: selectors.space.getLastClosedPlane(state),\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateViewSize: selectors.space.getViewSize(state)\n});\n\nconst mapDispatchToProperties$5 = dispatch => ({\n dispatch: dispatch,\n dispatchSetTree: payload => dispatch(actions.space.setTree(payload)),\n dispatchSetSpaceField: payload => dispatch(actions.space.setSpaceField(payload)),\n dispatchUpdateSpaceLinkCoordinates: payload => dispatch(actions.space.updateSpaceLinkCoordinates(payload))\n});\n\nconst ConnectedPluridLink = reactRedux.connect(mapStateToProperties$5, mapDispatchToProperties$5, null, {\n context: StateContext\n})(PluridLink);\n\nconst commonStyle = styled.css`\n color: ${({theme: theme}) => theme.colorTertiary};\n\n @media (hover:hover) {\n :hover {\n color: ${({theme: theme}) => theme.colorPrimary};\n }\n }\n`;\n\nconst StyledPluridRouterLinkAnchor = styled__default[\"default\"].a`\n ${commonStyle}\n`;\n\nconst StyledPluridRouterLinkDiv = styled__default[\"default\"].div`\n cursor: pointer;\n\n ${commonStyle}\n`;\n\nconst PluridRouterLink = properties => {\n const {route: route, children: children, asAnchor: asAnchorProperty, target: target, theme: themeProperty, style: style, className: className, atClick: atClick} = properties;\n const asAnchor = asAnchorProperty !== null && asAnchorProperty !== void 0 ? asAnchorProperty : DEFAULT_ROUTER_LINK_AS_ANCHOR;\n const theme = themeProperty || themes$2.plurid;\n const handleClick = event => {\n if (atClick) {\n const exit = atClick(event);\n if (exit) {\n return;\n }\n }\n event.preventDefault();\n if (target === \"_blank\") {\n window.open(route);\n return;\n }\n pluridEngine.pluridRouterNavigate(route);\n };\n const handleKeyUp = event => {\n if (event.code === \"Enter\") {\n handleClick(event);\n return;\n }\n return;\n };\n const renderProperties = {\n tabIndex: 0,\n theme: theme,\n style: style,\n className: className,\n onClick: handleClick,\n onKeyUp: handleKeyUp\n };\n if (!asAnchor) {\n return React__default[\"default\"].createElement(StyledPluridRouterLinkDiv, Object.assign({}, renderProperties), children);\n }\n return React__default[\"default\"].createElement(StyledPluridRouterLinkAnchor, Object.assign({\n href: route\n }, renderProperties), children);\n};\n\nconst StyledPluridApplicationConfigurator = styled__default[\"default\"].div`\n position: absolute;\n height: 0;\n width: 0;\n user-select: none;\n pointer-events: none;\n`;\n\nconst PluridApplicationConfigurator = properties => {\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {registerPubSub: registerPubSub} = context;\n const {configuration: configuration, pubsub: pubsub, stateConfiguration: stateConfiguration, dispatchSetConfiguration: dispatchSetConfiguration} = properties;\n const configuratorElement = React.useRef(null);\n React.useEffect((() => {\n const computedConfiguration = pluridEngine.general.configuration.merge(configuration, stateConfiguration);\n dispatchSetConfiguration(computedConfiguration);\n }), [ configuration ]);\n React.useEffect((() => {\n if (pubsub) {\n registerPubSub(pubsub);\n }\n }), [ pubsub ]);\n return React__default[\"default\"].createElement(StyledPluridApplicationConfigurator, {\n ref: configuratorElement,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_APPLICATION_CONFIGURATOR\n });\n};\n\nconst mapStateToProps$1 = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$1 = dispatch => ({\n dispatchSetConfiguration: payload => dispatch(actions.configuration.setConfiguration(payload))\n});\n\nconst ConnectedPluridApplicationConfigurator = reactRedux.connect(mapStateToProps$1, mapDispatchToProps$1, null, {\n context: StateContext\n})(PluridApplicationConfigurator);\n\nconst StyledPluridPlaneConfigurator = styled__default[\"default\"].div`\n position: absolute;\n height: 0;\n width: 0;\n user-select: none;\n pointer-events: none;\n`;\n\nconst {getPluridPlaneIDByData: getPluridPlaneIDByData} = pluridEngine.planes;\n\nconst PluridPlaneConfigurator = properties => {\n const configuratorElement = React.useRef(null);\n const [planePlaneID, setParentPlaneID] = React.useState(\"\");\n React.useEffect((() => {\n const parentPlaneID = getPluridPlaneIDByData(configuratorElement.current);\n setParentPlaneID(parentPlaneID);\n }), []);\n return React__default[\"default\"].createElement(StyledPluridPlaneConfigurator, {\n ref: configuratorElement,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE_CONFIGURATOR\n });\n};\n\nconst mapStateToProperties$4 = state => ({});\n\nconst mapDispatchToProperties$4 = dispatch => ({});\n\nconst ConnectedPluridPlaneConfigurator = reactRedux.connect(mapStateToProperties$4, mapDispatchToProperties$4, null, {\n context: StateContext\n})(PluridPlaneConfigurator);\n\nconst StyledExternalPlane = styled__default[\"default\"].div`\n`;\n\nconst getPttpUrl = path => {\n const re = /^pttp:\\/\\/(\\w+(\\.|:)\\w+)\\/?/;\n const match = path.match(re);\n if (!match) {\n return {\n domain: \"\",\n url: \"\"\n };\n }\n const domain = match[1];\n const protocol = \"http\";\n const url = `${protocol}://${domain}/pttp`;\n return {\n domain: domain,\n url: url\n };\n};\n\nconst getPttpPath = (domain, path) => {\n if (!domain) {\n return;\n }\n const pttpPath = path.replace(`pttp://${domain}`, \"\");\n return pttpPath;\n};\n\nconst elementRequest = (url, path) => __awaiter(void 0, void 0, void 0, (function*() {\n try {\n const response = yield fetch__default[\"default\"](url, {\n method: \"post\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n path: path\n }),\n credentials: \"include\"\n });\n const data = yield response.json();\n if (!data.element) {\n return;\n }\n const {element: element} = data;\n const elementQLClient = new elementqlClientReact.ElementQLClient({\n url: element.url\n });\n const {status: status, Elements: Elements} = yield elementQLClient.get(element.json, \"json\");\n if (!status) {\n return;\n }\n const Element = Elements[element.name];\n return () => Element;\n } catch (error) {\n return;\n }\n}));\n\nconst ExternalPlane = properties => {\n const {plurid: plurid} = properties;\n const route = plurid.value;\n const mounted = React.useRef(false);\n const [Component, setComponent] = React.useState();\n React.useEffect((() => {\n mounted.current = true;\n return () => {\n mounted.current = false;\n };\n }));\n React.useEffect((() => {\n let loading = false;\n const load = () => __awaiter(void 0, void 0, void 0, (function*() {\n if (loading) {\n return;\n }\n loading = true;\n try {\n const {domain: domain, url: url} = getPttpUrl(route);\n const pttpPath = getPttpPath(domain, route);\n if (!url || !pttpPath) {\n return;\n }\n const Component = yield elementRequest(url, pttpPath);\n if (!mounted.current) {\n return;\n }\n if (Component) {\n setComponent(Component);\n }\n } catch (error) {\n return;\n }\n }));\n load();\n }), []);\n return React__default[\"default\"].createElement(StyledExternalPlane, null, Component && React__default[\"default\"].createElement(Component, null));\n};\n\nconst mapStateToProperties$3 = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$3 = dispatch => ({});\n\nconst ConnectedExternalPlane = reactRedux.connect(mapStateToProperties$3, mapDispatchToProperties$3, null, {\n context: StateContext\n})(ExternalPlane);\n\nconst StyledIframePlane = styled__default[\"default\"].div`\n`;\n\nconst IframePlane = properties => {\n const {plurid: plurid} = properties;\n const route = plurid.value;\n return React__default[\"default\"].createElement(StyledIframePlane, null, React__default[\"default\"].createElement(\"iframe\", {\n src: route\n }));\n};\n\nconst mapStateToProperties$2 = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$2 = dispatch => ({});\n\nconst ConnectedIframePlane = reactRedux.connect(mapStateToProperties$2, mapDispatchToProperties$2, null, {\n context: StateContext\n})(IframePlane);\n\nconst VirtualListItem = properties => {\n const {top: top, index: index, element: element, setHeight: setHeight} = properties;\n const el = React.useRef(null);\n React.useEffect((() => {\n if (el.current) {\n setHeight(el.current.offsetHeight, index);\n }\n }), [ el.current ]);\n return React__default[\"default\"].createElement(\"div\", {\n ref: el,\n style: {\n position: \"absolute\",\n top: top + \"px\"\n }\n }, element);\n};\n\nconst {markers: {Spinner: PluridSpinner}} = pluridUiComponentsReact.universal;\n\nconst PluridVirtualList = properties => {\n const {items: items, generalHeight: generalHeight, translationY: translationY, viewSize: viewSize} = properties;\n const _generalHeight = generalHeight || 100;\n const listElement = React.useRef(null);\n const rows = React.useRef([]);\n const heights = React.useRef(Array(items.length).fill(_generalHeight));\n const [start, setStart] = React.useState(0);\n const [end, setEnd] = React.useState(Math.floor(1e3 / _generalHeight));\n const [elementHeight, setElementHeight] = React.useState(_generalHeight * (end - start));\n const [resizing, setResizing] = React.useState(false);\n const setHeight = (value, index) => {\n heights.current[index] = value;\n };\n const renderRows = () => {\n rows.current = [];\n for (let i = start; i <= end; i++) {\n const item = items[i];\n rows.current.push(React__default[\"default\"].createElement(VirtualListItem, {\n key: i + Math.random(),\n index: i,\n top: pluridFunctions.mathematics.arithmetic.sum(heights.current, i),\n element: item,\n setHeight: setHeight\n }));\n }\n return rows.current;\n };\n React.useEffect((() => {\n if (heights.current) {\n const elementHeight = pluridFunctions.mathematics.arithmetic.sum(heights.current, heights.current.length);\n setElementHeight(elementHeight);\n }\n }), [ start, end, heights.current ]);\n React.useEffect((() => {\n let sum = 0;\n for (const [index, value] of heights.current.entries()) {\n sum += value;\n if (translationY < 0) {\n if (sum < Math.abs(translationY)) {\n setStart(index);\n }\n if (sum > Math.abs(translationY) + viewSize.height && sum < Math.abs(translationY) + viewSize.height + 400) {\n setEnd(index);\n }\n } else {\n setStart(0);\n setEnd(10);\n }\n }\n }), [ viewSize.height, translationY ]);\n React.useEffect((() => {\n setResizing(true);\n setTimeout((() => {\n const elementHeight = pluridFunctions.mathematics.arithmetic.sum(heights.current, heights.current.length);\n setElementHeight(elementHeight);\n setResizing(false);\n }), 400);\n }), [ viewSize ]);\n return React__default[\"default\"].createElement(\"div\", {\n style: {\n height: elementHeight\n },\n ref: listElement\n }, resizing && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(PluridSpinner, null)), !resizing && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, renderRows()));\n};\n\nconst mapStateToProps = state => ({\n translationY: selectors.space.getTranslationY(state),\n viewSize: selectors.space.getViewSize(state)\n});\n\nconst mapDispatchToProps = dispatch => ({});\n\nconst ConnectedPluridVirtualList = reactRedux.connect(mapStateToProps, mapDispatchToProps, null, {\n context: StateContext\n})(PluridVirtualList);\n\nconst StyledPluridPlaneDebugger = styled__default[\"default\"].div`\n`;\n\nconst PluridPlaneDebugger = properties => React__default[\"default\"].createElement(StyledPluridPlaneDebugger, null, \"PluridPlaneDebugger\");\n\nconst mapStateToProperties$1 = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$1 = dispatch => ({});\n\nconst ConnectedPluridPlaneDebugger = reactRedux.connect(mapStateToProperties$1, mapDispatchToProperties$1, null, {\n context: StateContext\n})(PluridPlaneDebugger);\n\nconst StyledPluridSpaceDebugger = styled__default[\"default\"].div`\n`;\n\nconst PluridSpaceDebugger = properties => React__default[\"default\"].createElement(StyledPluridSpaceDebugger, null, \"PluridSpaceDebugger\");\n\nconst mapStateToProperties = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties = dispatch => ({});\n\nconst ConnectedPluridSpaceDebugger = reactRedux.connect(mapStateToProperties, mapDispatchToProperties, null, {\n context: StateContext\n})(PluridSpaceDebugger);\n\nconst serverComputeMetastate = (isoMatch, paths, globals) => __awaiter(void 0, void 0, void 0, (function*() {\n const protocol = \"http\";\n const host = \"localhost:63000\";\n const pluridApplications = yield collectApplicationsFromPath(isoMatch, protocol, host, globals);\n const states = {};\n for (const application of pluridApplications) {\n const {planes: planes, view: view, configuration: configuration} = application;\n const {computedTree: computedTree, appConfiguration: appConfiguration} = computeApplication(planes, isoMatch.data.defaultConfiguration, view);\n const state = {\n configuration: Object.assign({}, appConfiguration),\n shortcuts: {\n global: true\n },\n themes: {\n general: themes__default[\"default\"].plurid,\n interaction: themes__default[\"default\"].plurid\n },\n ui: {\n toolbarScrollPosition: 50\n },\n space: {\n loading: false,\n animatedTransform: false,\n scale: 1,\n rotationX: 0,\n rotationY: 0,\n translationX: 0,\n translationY: 0,\n translationZ: 0,\n tree: computedTree,\n activeUniverseID: \"\",\n camera: {\n x: 0,\n y: 0,\n z: 0\n },\n viewSize: {\n width: 1440,\n height: 821\n },\n spaceSize: {\n width: 1440,\n height: 821,\n depth: 0,\n topCorner: {\n x: 0,\n y: 0,\n z: 0\n }\n },\n view: view,\n culledView: []\n }\n };\n const id = isoMatch.data.value;\n states[id] = state;\n }\n return {\n states: states\n };\n}));\n\nconst usePluridRouter = () => {\n const [routerValue, setRouterValue] = React.useState(\"\");\n React.useEffect((() => {\n const fetchState = () => {\n const state = pluridFunctions.storage.loadState(pluridData.PLURID_ROUTER_STORAGE);\n if (state) {\n setRouterValue(state);\n }\n };\n fetchState();\n window.addEventListener(pluridData.PLURID_ROUTER_LOCATION_STORED, fetchState);\n return () => {\n window.removeEventListener(pluridData.PLURID_ROUTER_LOCATION_STORED, fetchState);\n };\n }), []);\n return routerValue;\n};\n\nconst {IsoMatcher: PluridIsoMatcher, RouteParser: PluridRouteParser} = pluridEngine.routing;\n\nconst internals = {\n PluridPlaneBridge: ConnectedPluridPlaneBridge,\n PluridPlaneContent: PluridPlaneContent,\n PluridPlaneControls: ConnectedPluridPlaneControls,\n PluridPlaneDebugger: ConnectedPluridPlaneDebugger,\n PluridSpaceDebugger: ConnectedPluridSpaceDebugger\n};\n\nconst Plurid = {\n Application: PluridApplication,\n RouterStatic: PluridRouterStatic,\n RouterBrowser: PluridRouterBrowser,\n Provider: PluridProvider,\n Link: ConnectedPluridLink,\n RouterLink: PluridRouterLink,\n ApplicationConfigurator: ConnectedPluridApplicationConfigurator,\n PlaneConfigurator: ConnectedPluridPlaneConfigurator,\n ExternalPlane: ConnectedExternalPlane,\n IframePlane: ConnectedIframePlane,\n VirtualList: ConnectedPluridVirtualList,\n SPACE_LAYOUT: pluridData.LAYOUT_TYPES,\n SIZES: pluridData.SIZES,\n TRANSFORM_MODES: pluridData.TRANSFORM_MODES,\n TRANSFORM_TOUCHES: pluridData.TRANSFORM_TOUCHES,\n PubSub: PluridPubSub__default[\"default\"],\n PUBSUB_TOPIC: pluridData.PLURID_PUBSUB_TOPIC,\n serverComputeMetastate: serverComputeMetastate,\n IsoMatcher: PluridIsoMatcher,\n routerNavigate: pluridEngine.pluridRouterNavigate,\n internals: internals\n};\n\nObject.defineProperty(exports, \"PLURID_PUBSUB_TOPIC\", {\n enumerable: true,\n get: function() {\n return pluridData.PLURID_PUBSUB_TOPIC;\n }\n});\n\nObject.defineProperty(exports, \"PLURID_ROUTER_LOCATION_CHANGED\", {\n enumerable: true,\n get: function() {\n return pluridData.PLURID_ROUTER_LOCATION_CHANGED;\n }\n});\n\nObject.defineProperty(exports, \"PLURID_ROUTER_LOCATION_STORED\", {\n enumerable: true,\n get: function() {\n return pluridData.PLURID_ROUTER_LOCATION_STORED;\n }\n});\n\nObject.defineProperty(exports, \"SIZES\", {\n enumerable: true,\n get: function() {\n return pluridData.SIZES;\n }\n});\n\nObject.defineProperty(exports, \"SPACE_LAYOUT\", {\n enumerable: true,\n get: function() {\n return pluridData.LAYOUT_TYPES;\n }\n});\n\nObject.defineProperty(exports, \"TRANSFORM_MODES\", {\n enumerable: true,\n get: function() {\n return pluridData.TRANSFORM_MODES;\n }\n});\n\nObject.defineProperty(exports, \"TRANSFORM_TOUCHES\", {\n enumerable: true,\n get: function() {\n return pluridData.TRANSFORM_TOUCHES;\n }\n});\n\nObject.defineProperty(exports, \"pluridRouterNavigate\", {\n enumerable: true,\n get: function() {\n return pluridEngine.pluridRouterNavigate;\n }\n});\n\nObject.defineProperty(exports, \"PluridPubSub\", {\n enumerable: true,\n get: function() {\n return PluridPubSub__default[\"default\"];\n }\n});\n\nexports.PluridApplication = PluridApplication;\n\nexports.PluridApplicationConfigurator = ConnectedPluridApplicationConfigurator;\n\nexports.PluridExternalPlane = ConnectedExternalPlane;\n\nexports.PluridIframePlane = ConnectedIframePlane;\n\nexports.PluridIsoMatcher = PluridIsoMatcher;\n\nexports.PluridLink = ConnectedPluridLink;\n\nexports.PluridPlaneConfigurator = ConnectedPluridPlaneConfigurator;\n\nexports.PluridProvider = PluridProvider;\n\nexports.PluridRouteParser = PluridRouteParser;\n\nexports.PluridRouterBrowser = PluridRouterBrowser;\n\nexports.PluridRouterLink = PluridRouterLink;\n\nexports.PluridRouterStatic = PluridRouterStatic;\n\nexports.PluridVirtualList = ConnectedPluridVirtualList;\n\nexports[\"default\"] = Plurid;\n\nexports.getDirectPlaneMatch = getDirectPlaneMatch;\n\nexports.internals = internals;\n\nexports.pluridStateModules = modules;\n\nexports.serverComputeMetastate = serverComputeMetastate;\n\nexports.usePluridRouter = usePluridRouter;\n//# sourceMappingURL=index.js.map\n"],"names":["Object","defineProperty","exports","value","pluridData","require$$0","pluridEngine","require$$1","PluridPubSub","require$$2","React","require$$3","reactRedux","require$$4","toolkit","require$$5","pluridFunctions","require$$6","themes$2","require$$7","styled","require$$8","pluridFunctionsReact","require$$9","pluridIconsReact","require$$10","pluridUiComponentsReact","require$$11","reactDom","require$$12","fetch","require$$13","elementqlClientReact","require$$14","_interopDefaultLegacy","e","default","PluridPubSub__default","React__default","themes__default","styled__default","fetch__default","PluridContext","createContext","undefined","initialState$5","assign","defaultConfiguration","configuration","createSlice","name","initialState","reducers","setConfiguration","state","action","payload","setConfigurationMicro","elements","toolbar","show","plane","controls","viewcube","setConfigurationPlaneControls","setConfigurationPlaneOpacity","opacity","setConfigurationThemeGeneral","updatedTheme","general","interaction","global","theme","setConfigurationThemeInteraction","setConfigurationLanguage","language","toggleConfigurationViewcubeHide","toggleConfigurationViewcubeButtons","buttons","toggleConfigurationViewcubeOpaque","opaque","toggleConfigurationViewcubeConceal","conceal","toggleConfigurationToolbarConceal","toggleConfigurationToolbarTransformIcons","transformIcons","toggleConfigurationToolbarTransformButtons","transformButtons","toggleConfigurationShowTransformOrigin","space","transformOrigin","toggleConfigurationToolbarOpaque","toggleConfigurationSpaceTransparentUI","transparentUI","setConfigurationSpaceTransformOriginSize","size","setConfigurationSpaceTransformMode","transformMode","TRANSFORM_MODES","ALL","toggleConfigurationSpaceTransformMultimode","transformMultimode","setConfigurationSpaceTransformTouch","transformTouch","toggleConfigurationSpaceFirstPerson","firstPerson","toggleConfigurationToolbarToggleDrawer","toggledDrawers","includes","updatedDrawers","filter","el","setConfigurationSpaceTransformLocks","transformLocks","updatedTransformLocks","setConfigurationSpaceLayout","layout","type","LAYOUT_TYPES","setConfigurationSpaceCullingDistance","cullingDistance","actions$6","actions","getConfiguration","selectors$6","reducer$6","reducer","configuration$1","freeze","__proto__","selectors","actions$5","getGeneral","selectors$5","reducer$5","general$1","shortcuts","setGlobalShortcuts","actions$4","getGlobal","selectors$4","reducer$4","shortcuts$1","registerPlanes","getRegisteredPlanes","getPlanesRegistrar","getPluridPlaneIDByData","getPluridPlaneIDByData$1","getRegisteredPlane","resolvePluridRoutePlaneData","resolvePluridPlaneData","Registrar","PluridPlanesRegistrar","planes","IsoMatcher","PluridIsoMatcher$1","resolveRoute","computePlaneAddress","routing","quaternion","quaternion$1","matrix","matrix$1","degToRad","degToRad$2","matrixArrayToCSSMatrix","matrixArrayToCSSMatrix$1","rotateMatrix","rotateMatrix$2","multiplyArrayOfMatrices","multiplyArrayOfMatrices$2","scaleMatrix","scaleMatrix$2","translateMatrix","translateMatrix$2","computeMatrix","spaceState","translationX","translationY","translationZ","rotationX","rotationY","scale","transformOriginX","window","innerWidth","transformOriginY","innerHeight","transformOriginZ","rotationMatrix","translationMatrix","scalationMatrix","transformMatrix","transform","selectors$3","getSpace","getLoading","loading","getTransformMatrix","getAnimatedTransform","animatedTransform","getTransformTime","transformTime","getRotationX","getRotationY","getTranslationX","getTranslationY","getTranslationZ","getScale","getTree","tree","getTransform","getActiveUniverseID","activeUniverseID","getView","view","getViewSize","viewSize","getCulledView","culledView","getActivePlaneID","activePlaneID","getIsolatePlane","isolatePlane","getLastClosedPlane","lastClosedPlane","toRadians","mathematics","geometry","initialState$2","camera","x","y","z","width","height","spaceSize","depth","topCorner","setSpaceField","field","setSpaceLoading","changeTransform","setTransform","resolvedTranslationX","resolvedTranslationY","resolvedTranslationZ","resolvedRotationX","resolvedRotationY","resolvedScale","setAnimatedTransform","setTransformTime","setSpaceLocation","viewCameraMoveForward","TRANSLATION_STEP","Math","cos","sin","viewCameraMoveBackward","viewCameraMoveLeft","viewCameraMoveRight","viewCameraMoveUp","viewCameraMoveDown","viewCameraTurnUp","ROTATION_STEP","viewCameraTurnDown","viewCameraTurnLeft","viewCameraTurnRight","rotateUp","rotateDown","rotateX","rotateXWith","rotateLeft","rotateRight","rotateY","rotateYWith","translateUp","translateDown","translateLeft","translateRight","translateIn","translateOut","translateXWith","translateYWith","translateZWith","scaleUp","computedScale","SCALE_STEP","SCALE_UPPER_LIMIT","scaleDown","SCALE_LOWER_LIMIT","scaleUpWith","abs","scaleDownWith","setTree","setActiveUniverse","spaceResetTransform","setViewSize","setSpaceSize","updateSpaceTreePlane","updatedTree","updateTreePlane","updateSpaceLinkCoordinates","planeID","linkCoordinates","updateTreeByPlaneIDWithLinkCoordinates","spaceSetView","spaceSetCulledView","actions$3","reducer$3","space$1","initialState$1","plurid","themes","setGeneralTheme","setInteractionTheme","actions$2","getGeneralTheme","getInteractionTheme","selectors$2","reducer$2","themes$1","ui","toolbarScrollPosition","setUIToolbarScrollPosition","actions$1","getToolbarScrollPosition","selectors$1","reducer$1","modules","combineReducers","store","preloadedState","configureStore","devTools","StateContext","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","result","done","then","apply","Context","degToRad$1","radToDeg","multiplyMatricesArray","translateMatrix$1","rotateYMatrix","matrixToCSSMatrix","arrayToMatrix","inverseMatrix","getTransformRotate","getTransformTranslate","getTransformScale","matrix3d","rotateMatrix$1","translateMatrixArray","scaleMatrix$1","multiplyArrayOfMatrices$1","computeApplication","appConfiguration","merge","planeData","route","currentView","absoluteView","viewItem","viewPath","push","origin","registrarPlanes","getAll","computedTree","Tree","compute","data","useAnimatedTransform","timeout","dispatch","dispatchSetAnimatedTransform","clearTimeout","setTimeout","PLURID_DEFAULT_ANIMATED_TRANSFORM_TIMEOUT","factoryUseAnimatedTransform","navigateToPluridPlane","event","deisolate","ctrlKey","metaKey","dispatchSetSpaceField","location","translateX","translateY","translateZ","inverseTransformMatrix","matrix3dTransformMatrix","rotate","translate","zSign1","zSign2","xOffset","parentPlaneID","newMatrix","getMatrix3d","computePlaneLocation","selector","FOCUS_ANCHOR_SUFFIX","focusAnchor","document","querySelector","focus","focusPluridPlaneAnchor","getActivePlane","logic","getTreePlaneByID","treePlane","findRootIndex","currentRootIndex","index","entries","children","rootIndex","navigateToRoot","root","focusPreviousRoot","focusNextRoot","focusRootIndex","direction","directionLogic","handleGlobalShortcuts","pubsub","locks","defaultPrevented","dom","verifyPathInputElement","getEventPath","noModifiers","shiftKey","altKey","code","ROTATION","TRANSLATION","SCALE","key","activePlane","focusActivePlane","parentPlane","focusParentActivePlane","id","publish","topic","PLURID_PUBSUB_TOPIC","REFRESH_PLANE","refreshActivePlane","ISOLATE_PLANE","isolateActivePlane","OPEN_CLOSED_PLANE","openClosedPlane","CLOSE_PLANE","closeActivePlane","startsWith","parseInt","replace","loadHammer","__esModule","n","create","keys","forEach","k","d","getOwnPropertyDescriptor","get","enumerable","_interopNamespace","require$$15","GlobalStyle","createGlobalStyle","preventOverscroll","fontFamilySansSerif","StyledView","div","props","fullHeight","backgroundColorTertiary","backgroundColorPrimary","ErrorBoundary","Component","constructor","super","this","hasError","static","error","componentDidCatch","errorInfo","render","renderError","createElement","StyledPluridPlane","mouseOver","planeOpacity","backgroundColorPrimaryAlpha","decomposedColor","decomposeColor","hue","saturation","lightness","boxShadowUmbra","colorPrimary","planeControls","StyledFocusAnchor","a","StyledPluridPlaneBridge","backgroundColorDark","ConnectedPluridPlaneBridge","connect","stateGeneralTheme","stateConfiguration","context","properties","PLURID_ENTITY_PLANE_BRIDGE","ControlRefresh","refreshing","refreshPlane","PluridIconReset","atClick","title","style","pointerEvents","ControlIsolate","isolated","fill","PluridIconRectangle","StyledPluridPlaneControls","boxShadowUmbraInset","styleCommonControls","css","StyledPluridPlaneControlsLeft","StyledPluridPlaneControlsCenter","StyledPluridPlaneControlsRight","ConnectedPluridPlaneControls","stateInteractionTheme","stateIsolatePlane","parentTreePlane","closePlane","pathbar","routeDivisions","protocol","host","encodeURIComponent","path","setPath","useState","PLURID_ENTITY_PLANE_CONTROLS","PluridIconArrowLeft","PluridIconFrame","Fragment","PluridIconDelete","StyledPluridPlaneContent","PluridPlaneContent","planeContentElement","useRef","ref","PLURID_ENTITY_PLANE_CONTENT","ConnectedPluridPlane","stateTree","stateViewSize","stateActivePlaneID","dispatchUpdateSpaceTreePlane","useContext","planeRenderError","defaultPubSub","planeWidth","showPlaneControls","numbers","checkIntegerNonUnit","planeRef","remountKey","setRemountKey","setRefreshing","setMouseOver","REFRESH_TIMEOUT","debouncedSetActivePlane","useDebouncedCallback","useEffect","refreshPlaneIndex","subscribe","callback","unsubscribe","focusAnchorID","isolatePlaneOpacity","computeIsolatePlaneOpacity","isolatePointerEvents","computeIsolatePointerEvents","cleanTemplate","planeContentProperties","onMouseEnter","onMouseLeave","onMouseOver","onMouseMove","PLURID_ENTITY_PLANE","tabIndex","isReactRenderable","component","url","StyledPluridRoot","ConnectedPluridRoot","planesRegistrar","planeContext","PlaneContext","planeContextValue","customPlane","matchedRoute","CustomPluridPlane","computeChildrenPlanes","length","planesRegistry","child","sourceID","renderPlane","Plane","pluridProperty","absolute","fragments","parameters","query","match","pubSub","renderablePlane","renderableCustomPlane","planeProperties","Provider","childrenPlanes","useMemo","JSON","stringify","pluridPlaneID","pluridPlane","PLURID_ENTITY_ROOT","StyledPluridRoots","ConnectedPluridRoots","spaceTransformMatrix","spaceAnimatedTransform","spaceTransformTime","transition","PLURID_ENTITY_ROOTS","map","fadeIn","keyframes","fadeInAnimation","fadeInTime","StyledPluridSpace","isMounted","ConnectedPluridSpace","setIsMounted","PLURID_ENTITY_SPACE","resolveSize","SIZES","SMALL","NORMAL","LARGE","StyledOrigin","backgroundColorTertiaryAlpha","ConnectedOrigin","showTransformOrigin","transformOriginSize","PLURID_ENTITY_TRANSFORM_ORIGIN","MENUS","StyledToolbar","mouseIn","showMenu","NONE","StyledToolbarButtons","backgroundColorSecondary","showIcons","showTransformButtons","documentsBased","StyledToolbarButton","button","active","StyledIcon","StyledPluridMenuUniverses","afterline","StyledPluridMenuUniversesScroll","li","boxShadowUmbraColor","ConnectedPluridMenuUniverses","interactionTheme","dispatchSetActiveUniverse","documentID","StyledPluridDrawer","toggled","StyledPluridDrawerHeading","StyledPluridDrawerItems","typography","Heading","PluridHeading","universal","ConnectedPluridDrawer","heading","items","toggle","onClick","StyledPluridMoreMenu","StyledPluridMoreMenuItem","last","StyledPluridMoreMenuScroll","inputs","Dropdown","PluridDropdown$1","ConnectedPluridMenuMoreGlobal","stateLanguage","dispatchSetConfigurationThemeGeneralAction","dispatchSetConfigurationThemeInteractionAction","dispatchSetConfigurationLanguage","dispatchSetGeneralTheme","dispatchSetInteractionTheme","selectedTheme","generalThemeName","setGeneralThemeName","interactionThemeName","setInteractionThemeName","internatiolate","internationalization","fields","toolbarDrawerGlobalGeneralTheme","selectables","selected","atSelect","selection","filterable","heightItems","fontSize","toolbarDrawerGlobalInteractionTheme","toolbarDrawerGlobalLanguage","languages","Switch","PluridSwitch$3","ConnectedPluridMenuMoreTransform","dispatchToggleConfigurationSpaceTransformMultimode","multimode","dispatchSetConfigurationSpaceTransformTouch","touch","dispatchSetConfigurationSpaceTransformLocks","lock","toolbarDrawerTransformMultiModeTransform","checked","atChange","exclusive","level","toolbarDrawerTransformAllowRotationX","toolbarDrawerTransformAllowRotationY","toolbarDrawerTransformAllowTranslationX","toolbarDrawerTransformAllowTranslationY","toolbarDrawerTransformAllowTranslationZ","toolbarDrawerTransformAllowScale","toolbarDrawerTransformTouchTransform","TRANSFORM_TOUCHES","PAN","SWIPE","PluridDropdown","PluridSwitch$2","Slider","PluridSlider$1","ConnectedPluridMenuMoreSpace","dispatchSetConfigurationPlaneOpacity","dispatchToggleConfigurationSpaceTransparentUI","dispatchToggleConfigurationSpaceShowTransformOrigin","dispatchSetConfigurationSpaceTransformOriginSize","dispatchSetConfigurationSpaceLayoutType","layoutType","layoutNames","toolbarDrawerSpaceTransparentUserInterface","toolbarDrawerSpaceShowTransformOrigin","toolbarDrawerSpaceTransformOriginSize","toLowerCase","toUpperCase","toolbarDrawerSpacePlaneOpacity","max","min","defaultValue","thumbSize","toolbarDrawerSpaceLayoutType","values","PluridSwitch$1","ConnectedPluridMenuMoreToolbar","dispatchToggleConfigurationToolbarConceal","dispatchToggleConfigurationToolbarTransformIcons","dispatchToggleConfigurationToolbarTransformButtons","dispatchToggleConfigurationToolbarOpaque","viewSizeSmall","setViewSizeSmall","toolbarDrawerToolbarAlwaysOpaque","toolbarDrawerToolbarShowTransformIcons","toolbarDrawerToolbarShowTransformArrows","toolbarDrawerToolbarConcealToolbar","PluridSwitch","ConnectedPluridMenuMoreViewcube","dispatchToggleConfigurationViewcubeHide","dispatchToggleConfigurationViewcubeButtons","dispatchToggleConfigurationViewcubeOpaque","dispatchToggleConfigurationViewcubeConceal","toolbarDrawerViewcubeShowViewcube","toolbarDrawerViewcubeShowTransformButtons","toolbarDrawerViewcubeAlwaysOpaque","toolbarDrawerViewcubeConcealViewcube","PluridSlider","ConnectedPluridMenuMoreTechnical","dispatchSetConfigurationSpaceCullingDistance","localCullingDistance","setLocalCullingDistance","dispatchCullingDistanceUpdate","toolbarDrawerTechnicalCullingDistance","ConnectedPluridMenuMoreShortcuts","defaultShortcuts","shortcut","shortcutData","shortcutsNames","internationalizedKey","modifier","modifierString","Array","isArray","reduce","total","element","internationalizedName","keyAsAny","keyName","moreMenusRecord","GLOBAL","toolbarDrawerGlobalTitle","drawer","TOOLBAR_DRAWERS","TRANSFORM","toolbarDrawerTransformTitle","SPACE","toolbarDrawerSpaceTitle","TOOLBAR","toolbarDrawerToolbarTitle","VIEWCUBE","toolbarDrawerViewcubeTitle","TECHNICAL","toolbarDrawerTechnicalTitle","SHORTCUTS","toolbarDrawerShortcutsTitle","moreMenus","ConnectedPluridMoreMenu","stateToolbarMenuScrollPosition","dispatchToggleConfigurationToolbarToggleDrawer","dispatchSetUIToolbarScrollPosition","drawers","menus","resolvedMenus","menu","resolveMenus","moreMenuScrollElement","handleWheel","_event","current","scrollPosition","scrollTop","addEventListener","removeEventListener","moreMenu","StyledPluridToolbarRotate","StyledPluridTransformArrow","pressed","arrowSigns","left","right","up","down","events","ConnectedPluridTransformArrow","arrowSign","pressingInterval","arrowElement","setPressed","handleTouch","eventData","srcEvent","clearInterval","setInterval","Hammer","on","off","ConnectedPluridToolbarRotate","toggleTransform","PluridIconRotate","toolbarTransformRotate","StyledPluridToolbarScale","ConnectedPluridToolbarScale","PluridIconScale","toolbarTransformScale","StyledPluridToolbarTranslate","ConnectedPluridToolbarTranslate","PluridIconTranslate","toolbarTransformTranslate","ConnectedPluridToolbar","dispatchToggleConfigurationSpaceFirstPerson","dispatchSetConfigurationSpaceTransformMode","mode","showToolbar","menuTimeout","setMouseIn","setShowMenu","setShowIcons","setShowTransformButtons","TYPE","PLURID_ENTITY_TOOLBAR","PluridIconFirstPerson","handleShowMenu","MORE","PluridIconMore","UNIVERSES","StyledPluridViewcube","StyledPluridViewcubeArrow","StyledPluridViewcubeArrowIcon","StyledFitView","StyledPluridViewcubeFace","colorTertiary","face","boxShadowPenumbraColor","StyledPluridViewcubeFaceZone","hovered","colorSecondary","faceTypes","zoneCodes","frontTopLeft","frontTopCenter","frontTopRight","frontMiddleLeft","frontMiddleCenter","frontMiddleRight","frontBottomLeft","frontBottomCenter","frontBottomRight","rightTopLeft","rightTopCenter","rightTopRight","rightMiddleLeft","rightMiddleCenter","rightMiddleRight","rightBottomLeft","rightBottomCenter","rightBottomRight","backTopLeft","backTopCenter","backTopRight","backMiddleLeft","backMiddleCenter","backMiddleRight","backBottomLeft","backBottomCenter","backBottomRight","leftTopLeft","leftTopCenter","leftTopRight","leftMiddleLeft","leftMiddleCenter","leftMiddleRight","leftBottomLeft","leftBottomCenter","leftBottomRight","topTopLeft","topTopCenter","topTopRight","topMiddleLeft","topMiddleCenter","topMiddleRight","topBottomLeft","topBottomCenter","topBottomRight","baseTopLeft","baseTopCenter","baseTopRight","baseMiddleLeft","baseMiddleCenter","baseMiddleRight","baseBottomLeft","baseBottomCenter","baseBottomRight","faceTransform","A1","A2","A3","B1","B2","B3","C1","C2","C3","A4","A5","B4","B5","C4","C5","A6","A7","B6","B7","C6","C7","A8","B8","C8","D1","E1","ConnectedPluridViewcubeFace","generalTheme","dispatchRotateX","angleX","dispatchRotateY","angleY","animated","faceText","hoveredZone","setHoveredZone","activeZone","setActiveZone","opaqueFace","handleClick","zoneCode","StyledPluridViewcubeModel","StyledPluridViewcubeModelContainer","StyledPluridViewcubeModelCube","ConnectedPluridViewcubeModel","spaceRotationX","spaceRotationY","stateAnimatedTransform","stateTransformTime","offsets","transformOrigins","computeTransform","suppressHydrationWarning","viewcubeFront","viewcubeBack","viewcubeLeft","viewcubeRight","viewcubeTop","viewcubeBase","ConnectedPluridViewcube","dispatchRotateXWith","dispatchRotateYWith","dispatchSpaceResetTransform","showViewcube","animatedRotate","PLURID_ENTITY_VIEWCUBE","gridArea","PluridIconGlobal","PluridViewContainer","_properties","ConnectedPluridView","stateTransform","stateSpaceLoading","stateSpaceView","dispatchSetConfiguration","dispatchSetConfigurationMicro","dispatchSpaceSetViewSize","dispatchSetSpaceLoading","dispatchSetTransformTime","dispatchSetSpaceLocation","dispatchSetTree","dispatchTranslateXWith","dispatchTranslateYWith","dispatchTranslateZWith","dispatchScaleUpWith","dispatchScaleDownWith","dispatchSpaceSetView","planeNotFound","hostname","viewElement","scrollTimeout","pluridPubSub","setPluridPubSub","setPreventOverscroll","shortcutsCallback","useCallback","wheelCallback","PLURID_DEFAULT_PREVENT_OVERSCROLL_TIMEOUT","handlePreventOverscroll","transformModes","rotation","translation","modes","preventDefault","deltas","deltaX","deltaY","getWheelDirection","directions","handleGlobalWheel","treeUpdate","statePlane","computedPlane","objects","equals","treeUpdateCallback","handlePubSubSubscribe","subscriptions","CONFIGURATION","internal","computedConfiguration","SPACE_TRANSFORM","SPACE_ANIMATED_TRANSFORM","time","SPACE_ROTATE_X_WITH","SPACE_ROTATE_X_TO","SPACE_ROTATE_Y_WITH","SPACE_ROTATE_Y_TO","SPACE_TRANSLATE_X_WITH","SPACE_TRANSLATE_X_TO","SPACE_TRANSLATE_Y_WITH","SPACE_TRANSLATE_Y_TO","SPACE_TRANSLATE_Z_WITH","SPACE_TRANSLATE_Z_TO","VIEW_ADD_PLANE","updatedView","VIEW_SET_PLANES","VIEW_REMOVE_PLANE","NAVIGATE_TO_PLANE","find","forceShow","togglePlaneFromTree","PREVIOUS_ROOT","NEXT_ROOT","NAVIGATE_TO_ROOT","focusRootID","indexes","subscription","handlePubSubPublish","internalTransform","handleSwipe","velocity","distance","rotationMode","translationMode","scalationMode","handlePan","rotationVelocity","translationVelocity","scaleVelocity","handlePinch","handlePinchin","handlePinchout","passive","handleResize","meta","debounce","offsetWidth","offsetHeight","PLURID_DEFAULT_RESIZE_DEBOUNCE_TIME","defaults","cssProps","userSelect","userDrag","tapHighlightColor","touchSelect","set","DIRECTION_ALL","enable","handleGamepadConnect","navigator","getGamepads","gamepad","handleGamepadDisconnect","unsubscribers","unsubscriber","pluridContext","registerPubSub","pluridPubSubs","PLURID_ENTITY_VIEW","PluridApplication","storeID","defaultStore","computeStore","subscribeStore","componentDidUpdate","updatedStore","componentWillUnmount","storeUnubscriber","precomputedState","useLocalStorage","currentState","getState","localState","local","load","contextState","states","pathname","loadStateFromContext","localStorage","stateData","setItem","contextType","StyledSpaces","alignment","snapType","computePluridRoute","isoMatcher","directPlane","kind","renderDirectPlane","notFoundRoute","exterior","spaces","slotted","resolver","pluridRouteProperty","PluridRouteExterior","displayName","pluridApplication","PluridRoute","_a","_b","_c","_d","_e","_f","multispaceAlignment","multispace","multispaceSnapType","PluridExterior","PluridSpaces","spacesArray","fullPath","PLURID_ROUTE_DEFAULT_PATH_VALUE","PLURID_ROUTE_DEFAULT_PATH","utilities","cleanPathElement","PLURID_ROUTE_DEFAULT_SPACE_VALUE","PLURID_ROUTE_DEFAULT_SPACE","PLURID_ROUTE_DEFAULT_UNIVERSE","PLURID_ROUTE_DEFAULT_CLUSTER","join","PLURID_ROUTE_SEPARATOR","universes","universe","PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE","pluridPlanesRegistrar","App","uuid","generate","pluridPlanes","MultispaceHeader","MultispaceFooter","header","footer","PLURID_ENTITY_MULTISPACE","renderMultispace","routePlane","flat","pluridRoute","Flat","DirectPlane","PluridRouterBrowser","routes","shell","staticContext","cleanNavigationView","cleanNavigation","notFoundPath","notFoundPathProperty","link","gatherPluridPlanes","pluridIsoMatcher","routePlanes","mounted","useMounted","matchedPath","setMatchedPath","search","computeInitialMatchedPath","setMatchedRoute","setPluridRoute","handleLocation","detail","PluridRouterExterior","PLURID_ROUTER_LOCATION_CHANGED","history","pushState","storage","saveState","PLURID_ROUTER_STORAGE","locationStoredEvent","CustomEvent","PLURID_ROUTER_LOCATION_STORED","dispatchEvent","PluridRouterShell","PluridRouterStatic","protocolProperty","hostnameProperty","gateway","gatewayQuery","gatewayQueryProperty","gatewayEndpoint","gatewayEndpointProperty","PluridProvider","metastate","defaultLinkCoordinates","PluridPortal","elementID","rootID","target","usePortal","createPortal","StyledPluridPlanePreview","ConnectedPluridPlanePreview","planeRoute","previewComponent","previewOffsetX","previewOffsetY","resolvedLinkCoordinates","StyledPluridLink","devisible","suffix","ConnectedPluridLink","stateLastClosedPlane","dispatchUpdateSpaceLinkCoordinates","_devisible","_suffix","className","preview","previewFadeIn","previewFadeOut","previewAppearTime","PLURID_DEFAULT_CONFIGURATION_LINK_PREVIEW_FADE_IN","previewDisappearTime","PLURID_DEFAULT_CONFIGURATION_LINK_PREVIEW_FADE_OUT","planeRouteResolved","absolutePlaneRoute","network","PLURID_DEFAULT_CONFIGURATION_LINK_SUFFIX","linkElement","hoverInTimeout","hoverOutTimeout","showPreview","setShowPreview","showLink","setShowLink","setPluridPlaneID","setParentPlaneID","setLinkCoordinates","getPluridLinkCoordinates","partialTop","partialLeft","staticSet","searching","top","getComputedStyle","position","offsetTop","offsetLeft","scrollLeft","parentElement","dataset","pluridEntity","planeControlsHeight","debouncedUpdateLinkCoordinates","newLinkCoordinates","updatePlaneLocation","clone","updateLinkCoordinates","togglePlane","updatedPlane","handlePlaneNavigation","handleShowPluridPlane","toggleLinkFromTree","updatedTreePlane","updateTreeWithNewPlane","updateTreeWithLink","defocusLink","blur","openClosedPlaneIndex","closePlaneIndex","removePlaneFromTree","removePlane","onKeyUp","handleKeyUp","PLURID_ENTITY_LINK","commonStyle","StyledPluridRouterLinkAnchor","StyledPluridRouterLinkDiv","PluridRouterLink","asAnchor","asAnchorProperty","themeProperty","pluridRouterNavigate","open","renderProperties","href","StyledPluridApplicationConfigurator","ConnectedPluridApplicationConfigurator","configuratorElement","PLURID_ENTITY_APPLICATION_CONFIGURATOR","StyledPluridPlaneConfigurator","ConnectedPluridPlaneConfigurator","planePlaneID","PLURID_ENTITY_PLANE_CONFIGURATOR","StyledExternalPlane","ConnectedExternalPlane","setComponent","domain","getPttpUrl","pttpPath","getPttpPath","response","method","headers","Accept","body","credentials","json","elementQLClient","ElementQLClient","status","Elements","Element","elementRequest","StyledIframePlane","ConnectedIframePlane","src","VirtualListItem","setHeight","markers","Spinner","PluridSpinner","ConnectedPluridVirtualList","generalHeight","_generalHeight","listElement","rows","heights","start","setStart","end","setEnd","floor","elementHeight","setElementHeight","resizing","setResizing","arithmetic","sum","i","item","random","renderRows","StyledPluridPlaneDebugger","ConnectedPluridPlaneDebugger","StyledPluridSpaceDebugger","ConnectedPluridSpaceDebugger","serverComputeMetastate","isoMatch","paths","globals","pluridApplications","routeData","plurids","clusters","cluster","PLURID_ROUTE_DEFAULT_CLUSTER_VALUE","collectApplicationsFromPath","application","PluridIsoMatcher","RouteParser","PluridRouteParser","internals","PluridPlaneBridge","PluridPlaneControls","PluridPlaneDebugger","PluridSpaceDebugger","Plurid","Application","RouterStatic","RouterBrowser","Link","RouterLink","ApplicationConfigurator","PlaneConfigurator","ExternalPlane","IframePlane","VirtualList","SPACE_LAYOUT","PubSub","PUBSUB_TOPIC","routerNavigate","PluridApplicationConfigurator","PluridExternalPlane","PluridIframePlane","PluridLink","PluridPlaneConfigurator","PluridVirtualList","getDirectPlaneMatch","matchRoute","matchPlane","matchPath","planePath","pluridStateModules","usePluridRouter","routerValue","setRouterValue","fetchState","loadState"],"mappings":"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"}
|