@plurid/plurid-react 0.0.0-25 → 0.0.0-26
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/package.json +16 -16
- package/distribution/components/links/Link/components/Preview/index.d.ts +0 -19
- package/distribution/components/links/Link/components/Preview/styled.d.ts +0 -7
- package/distribution/components/links/Link/index.d.ts +0 -24
- package/distribution/components/links/Link/styled.d.ts +0 -7
- package/distribution/components/links/RouterLink/index.d.ts +0 -20
- package/distribution/components/links/RouterLink/styled.d.ts +0 -6
- package/distribution/components/planes/ExternalPlane/index.d.ts +0 -14
- package/distribution/components/planes/ExternalPlane/styled.d.ts +0 -5
- package/distribution/components/planes/IframePlane/index.d.ts +0 -14
- package/distribution/components/planes/IframePlane/styled.d.ts +0 -5
- package/distribution/components/structural/Plane/components/PlaneBridge/index.d.ts +0 -17
- package/distribution/components/structural/Plane/components/PlaneBridge/styled.d.ts +0 -9
- package/distribution/components/structural/Plane/components/PlaneContent/index.d.ts +0 -6
- package/distribution/components/structural/Plane/components/PlaneContent/styled.d.ts +0 -1
- package/distribution/components/structural/Plane/components/PlaneControls/components/ControlIsolate/index.d.ts +0 -9
- package/distribution/components/structural/Plane/components/PlaneControls/components/ControlRefresh/index.d.ts +0 -9
- package/distribution/components/structural/Plane/components/PlaneControls/components/SearchItem/index.d.ts +0 -19
- package/distribution/components/structural/Plane/components/PlaneControls/components/SearchItem/styled.d.ts +0 -1
- package/distribution/components/structural/Plane/components/PlaneControls/components/SearchList/index.d.ts +0 -18
- package/distribution/components/structural/Plane/components/PlaneControls/components/SearchList/styled.d.ts +0 -2
- package/distribution/components/structural/Plane/components/PlaneControls/index.d.ts +0 -29
- package/distribution/components/structural/Plane/components/PlaneControls/styled.d.ts +0 -11
- package/distribution/components/structural/Plane/components/PlaneDebugger/index.d.ts +0 -13
- package/distribution/components/structural/Plane/components/PlaneDebugger/styled.d.ts +0 -1
- package/distribution/components/structural/Plane/index.d.ts +0 -27
- package/distribution/components/structural/Plane/styled.d.ts +0 -11
- package/distribution/components/structural/Root/index.d.ts +0 -15
- package/distribution/components/structural/Root/styled.d.ts +0 -1
- package/distribution/components/structural/Roots/index.d.ts +0 -18
- package/distribution/components/structural/Roots/styled.d.ts +0 -3
- package/distribution/components/structural/Space/components/SpaceDebugger/index.d.ts +0 -13
- package/distribution/components/structural/Space/components/SpaceDebugger/styled.d.ts +0 -1
- package/distribution/components/structural/Space/index.d.ts +0 -14
- package/distribution/components/structural/Space/styled.d.ts +0 -8
- package/distribution/components/utilities/ApplicationConfigurator/index.d.ts +0 -18
- package/distribution/components/utilities/ApplicationConfigurator/styled.d.ts +0 -1
- package/distribution/components/utilities/ErrorBoundary/index.d.ts +0 -18
- package/distribution/components/utilities/NotFound/index.d.ts +0 -13
- package/distribution/components/utilities/NotFound/styled.d.ts +0 -1
- package/distribution/components/utilities/Origin/index.d.ts +0 -15
- package/distribution/components/utilities/Origin/styled.d.ts +0 -7
- package/distribution/components/utilities/PlaneConfigurator/index.d.ts +0 -13
- package/distribution/components/utilities/PlaneConfigurator/styled.d.ts +0 -1
- package/distribution/components/utilities/Portal/index.d.ts +0 -15
- package/distribution/components/utilities/Toolbar/Button/index.d.ts +0 -15
- package/distribution/components/utilities/Toolbar/Button/styled.d.ts +0 -13
- package/distribution/components/utilities/Toolbar/General/components/Drawer/index.d.ts +0 -18
- package/distribution/components/utilities/Toolbar/General/components/Drawer/styled.d.ts +0 -3
- package/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Global/index.d.ts +0 -22
- package/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Shortcuts/index.d.ts +0 -14
- package/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Space/index.d.ts +0 -21
- package/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Technical/index.d.ts +0 -18
- package/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Toolbar/index.d.ts +0 -23
- package/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Transform/index.d.ts +0 -20
- package/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Viewcube/index.d.ts +0 -21
- package/distribution/components/utilities/Toolbar/General/components/MenuMore/data.d.ts +0 -9
- package/distribution/components/utilities/Toolbar/General/components/MenuMore/index.d.ts +0 -22
- package/distribution/components/utilities/Toolbar/General/components/MenuMore/styled.d.ts +0 -3
- package/distribution/components/utilities/Toolbar/General/components/MenuUniverses/index.d.ts +0 -16
- package/distribution/components/utilities/Toolbar/General/components/MenuUniverses/styled.d.ts +0 -4
- package/distribution/components/utilities/Toolbar/General/components/ToolbarRotate/index.d.ts +0 -24
- package/distribution/components/utilities/Toolbar/General/components/ToolbarRotate/styled.d.ts +0 -1
- package/distribution/components/utilities/Toolbar/General/components/ToolbarScale/index.d.ts +0 -22
- package/distribution/components/utilities/Toolbar/General/components/ToolbarScale/styled.d.ts +0 -1
- package/distribution/components/utilities/Toolbar/General/components/ToolbarTranslate/index.d.ts +0 -26
- package/distribution/components/utilities/Toolbar/General/components/ToolbarTranslate/styled.d.ts +0 -1
- package/distribution/components/utilities/Toolbar/General/components/TransformArrow/data.d.ts +0 -7
- package/distribution/components/utilities/Toolbar/General/components/TransformArrow/index.d.ts +0 -16
- package/distribution/components/utilities/Toolbar/General/components/TransformArrow/styled.d.ts +0 -6
- package/distribution/components/utilities/Toolbar/General/data.d.ts +0 -6
- package/distribution/components/utilities/Toolbar/General/index.d.ts +0 -21
- package/distribution/components/utilities/Toolbar/General/styled.d.ts +0 -29
- package/distribution/components/utilities/UniverseExplorer/index.d.ts +0 -16
- package/distribution/components/utilities/UniverseExplorer/styled.d.ts +0 -2
- package/distribution/components/utilities/Viewcube/components/ViewcubeFace/data.d.ts +0 -391
- package/distribution/components/utilities/Viewcube/components/ViewcubeFace/index.d.ts +0 -27
- package/distribution/components/utilities/Viewcube/components/ViewcubeFace/styled.d.ts +0 -16
- package/distribution/components/utilities/Viewcube/components/ViewcubeModel/index.d.ts +0 -17
- package/distribution/components/utilities/Viewcube/components/ViewcubeModel/styled.d.ts +0 -3
- package/distribution/components/utilities/Viewcube/components/ViewcubeTransformAreas/TransformArea/data.d.ts +0 -5
- package/distribution/components/utilities/Viewcube/components/ViewcubeTransformAreas/TransformArea/index.d.ts +0 -11
- package/distribution/components/utilities/Viewcube/components/ViewcubeTransformAreas/TransformArea/styled.d.ts +0 -17
- package/distribution/components/utilities/Viewcube/components/ViewcubeTransformAreas/index.d.ts +0 -13
- package/distribution/components/utilities/Viewcube/components/ViewcubeTransformAreas/styled.d.ts +0 -13
- package/distribution/components/utilities/Viewcube/index.d.ts +0 -23
- package/distribution/components/utilities/Viewcube/styled.d.ts +0 -19
- package/distribution/components/virtuals/List/components/ListItem/index.d.ts +0 -9
- package/distribution/components/virtuals/List/index.d.ts +0 -15
- package/distribution/components/virtuals/List/styled.d.ts +0 -1
- package/distribution/containers/Application/View/Container/index.d.ts +0 -5
- package/distribution/containers/Application/View/index.d.ts +0 -48
- package/distribution/containers/Application/View/styled.d.ts +0 -8
- package/distribution/containers/Application/index.d.ts +0 -18
- package/distribution/containers/Provider/context.d.ts +0 -4
- package/distribution/containers/Provider/index.d.ts +0 -12
- package/distribution/containers/RouterBrowser/index.d.ts +0 -7
- package/distribution/containers/RouterBrowser/styled.d.ts +0 -1
- package/distribution/containers/RouterStatic/index.d.ts +0 -18
- package/distribution/data/constants/index.d.ts +0 -3
- package/distribution/data/interfaces/index.d.ts +0 -20
- package/distribution/data/interfaces/utility.d.ts +0 -3
- package/distribution/index.d.ts +0 -117
- package/distribution/index.es.js +0 -6436
- package/distribution/index.es.js.map +0 -1
- package/distribution/index.js +0 -6573
- package/distribution/index.js.map +0 -1
- package/distribution/index.min.js +0 -562
- package/distribution/index.min.js.map +0 -1
- package/distribution/services/context/index.d.ts +0 -5
- package/distribution/services/engine/index.d.ts +0 -22
- package/distribution/services/hooks/event/index.d.ts +0 -4
- package/distribution/services/hooks/index.d.ts +0 -2
- package/distribution/services/hooks/router/index.d.ts +0 -1
- package/distribution/services/logic/animation/index.d.ts +0 -16
- package/distribution/services/logic/computing/index.d.ts +0 -17
- package/distribution/services/logic/router/index.d.ts +0 -40
- package/distribution/services/logic/router/styled.d.ts +0 -5
- package/distribution/services/logic/server/index.d.ts +0 -3
- package/distribution/services/logic/shortcuts/index.d.ts +0 -15
- package/distribution/services/logic/shortcuts/logic.d.ts +0 -6
- package/distribution/services/logic/state/index.d.ts +0 -3
- package/distribution/services/logic/transform/index.d.ts +0 -3
- package/distribution/services/state/actions/index.d.ts +0 -247
- package/distribution/services/state/context/index.d.ts +0 -3
- package/distribution/services/state/hooks/index.d.ts +0 -4
- package/distribution/services/state/modules/configuration/index.d.ts +0 -66
- package/distribution/services/state/modules/general/index.d.ts +0 -10
- package/distribution/services/state/modules/index.d.ts +0 -16
- package/distribution/services/state/modules/shortcuts/index.d.ts +0 -16
- package/distribution/services/state/modules/space/index.d.ts +0 -169
- package/distribution/services/state/modules/space/selectors.d.ts +0 -22
- package/distribution/services/state/modules/space/types.d.ts +0 -42
- package/distribution/services/state/modules/themes/index.d.ts +0 -22
- package/distribution/services/state/modules/ui/index.d.ts +0 -16
- package/distribution/services/state/selectors/index.d.ts +0 -62
- package/distribution/services/state/store/development/index.d.ts +0 -5
- package/distribution/services/state/store/index.d.ts +0 -23
- package/distribution/services/state/store/production/index.d.ts +0 -5
- package/distribution/services/state/store/reducer/index.d.ts +0 -10
- package/distribution/services/styled/index.d.ts +0 -2
- package/distribution/services/utilities/environment/index.d.ts +0 -7
- package/distribution/services/utilities/imports/index.d.ts +0 -49
- package/distribution/services/utilities/react/index.d.ts +0 -3
|
@@ -1 +0,0 @@
|
|
|
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 name = \"space\";\n\nconst space = toolkit.createSlice({\n name: name,\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 const newState = Object.assign(Object.assign({}, state), action.payload);\n const transform = computeMatrix(newState);\n return Object.assign(Object.assign({}, newState), {\n transform: transform\n });\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 name: name,\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 let root = tree[treeIndex];\n if (!root) {\n if (type === \"previous\") {\n root = tree[tree.length - 1];\n } else {\n root = tree[0];\n }\n if (!root) {\n return;\n }\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 === \"Tab\") {\n event.preventDefault();\n if (event.shiftKey) {\n focusPreviousRoot(dispatch, state);\n } else {\n focusNextRoot(dispatch, state);\n }\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, JSON.stringify(stateTree) ]);\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, JSON.stringify(stateTree) ]);\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 PluridScrollTop = styled__default[\"default\"].div`\n height: 0;\n width: 0;\n`;\n\nconst PluridRouterBrowser = properties => {\n const {routes: routes, planes: planes, exterior: exterior, shell: shell, hostname: hostname, scrollToTop: scrollToTop, static: staticContext, view: cleanNavigationView, cleanNavigation: cleanNavigation, notFoundPath: notFoundPathProperty} = properties;\n const notFoundPath = notFoundPathProperty || \"/not-found\";\n const pluridPlanes = gatherPluridPlanes(routes, planes);\n const topContainer = React.useRef(null);\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 scrollTop = () => {\n if (!topContainer.current || scrollToTop === false) {\n return;\n }\n const behavior = typeof scrollToTop === \"undefined\" || scrollToTop === true || scrollToTop === \"smooth\" ? \"smooth\" : \"auto\";\n topContainer.current.scrollIntoView({\n behavior: behavior\n });\n };\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 scrollTop();\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, React__default[\"default\"].createElement(PluridScrollTop, {\n ref: topContainer\n }), 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 transform: \"matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)\",\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","newState","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","length","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","preventDefault","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","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","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","PluridScrollTop","PluridRouterBrowser","routes","shell","scrollToTop","staticContext","cleanNavigationView","cleanNavigation","notFoundPath","notFoundPathProperty","link","gatherPluridPlanes","topContainer","pluridIsoMatcher","routePlanes","mounted","useMounted","matchedPath","setMatchedPath","search","computeInitialMatchedPath","setMatchedRoute","setPluridRoute","handleLocation","detail","behavior","scrollIntoView","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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"}
|