@plurid/plurid-react 0.0.0-20 → 0.0.0-21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/distribution/distribution/services/logic/router/index.d.ts +2 -2
- package/distribution/index.es.js +4 -1
- package/distribution/index.es.js.map +1 -1
- package/distribution/index.js +4 -1
- package/distribution/index.js.map +1 -1
- package/distribution/index.min.js +525 -525
- package/distribution/index.min.js.map +1 -1
- package/distribution/services/logic/router/index.d.ts +2 -2
- package/package.json +30 -30
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.min.js","sources":["index.js"],"sourcesContent":["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar pluridData = require(\"@plurid/plurid-data\");\n\nvar pluridEngine = require(\"@plurid/plurid-engine\");\n\nvar PluridPubSub = require(\"@plurid/plurid-pubsub\");\n\nvar React = require(\"react\");\n\nvar reactRedux = require(\"react-redux\");\n\nvar redux = require(\"redux\");\n\nvar thunk = require(\"redux-thunk\");\n\nvar pluridFunctions = require(\"@plurid/plurid-functions\");\n\nvar themes$1 = require(\"@plurid/plurid-themes\");\n\nvar styled = require(\"styled-components\");\n\nvar pluridUiComponentsReact = require(\"@plurid/plurid-ui-components-react\");\n\nvar pluridIconsReact = require(\"@plurid/plurid-icons-react\");\n\nvar pluridFunctionsReact = require(\"@plurid/plurid-functions-react\");\n\nvar reactDom = require(\"react-dom\");\n\nvar fetch = require(\"cross-fetch\");\n\nvar elementqlClientReact = require(\"@plurid/elementql-client-react\");\n\nfunction _interopDefaultLegacy(e) {\n return e && typeof e === \"object\" && \"default\" in e ? e : {\n default: e\n };\n}\n\nfunction _interopNamespace(e) {\n if (e && e.__esModule) return e;\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach((function(k) {\n if (k !== \"default\") {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return e[k];\n }\n });\n }\n }));\n }\n n[\"default\"] = e;\n return Object.freeze(n);\n}\n\nvar PluridPubSub__default = _interopDefaultLegacy(PluridPubSub);\n\nvar React__default = _interopDefaultLegacy(React);\n\nvar thunk__default = _interopDefaultLegacy(thunk);\n\nvar themes__default = _interopDefaultLegacy(themes$1);\n\nvar styled__default = _interopDefaultLegacy(styled);\n\nvar fetch__default = _interopDefaultLegacy(fetch);\n\nconst PluridContext = React__default[\"default\"].createContext(undefined);\n\nconst SET_CONFIGURATION = \"SET_CONFIGURATION\";\n\nconst SET_CONFIGURATION_MICRO = \"SET_CONFIGURATION_MICRO\";\n\nconst SET_CONFIGURATION_PLANE_CONTROLS = \"SET_CONFIGURATION_PLANE_CONTROLS\";\n\nconst SET_CONFIGURATION_PLANE_OPACITY = \"SET_CONFIGURATION_PLANE_OPACITY\";\n\nconst SET_CONFIGURATION_THEME_GENERAL = \"SET_CONFIGURATION_THEME_GENERAL\";\n\nconst SET_CONFIGURATION_THEME_INTERACTION = \"SET_CONFIGURATION_THEME_INTERACTION\";\n\nconst SET_CONFIGURATION_LANGUAGE = \"SET_CONFIGURATION_LANGUAGE\";\n\nconst TOGGLE_CONFIGURATION_VIEWCUBE_HIDE = \"TOGGLE_CONFIGURATION_VIEWCUBE_HIDE\";\n\nconst TOGGLE_CONFIGURATION_VIEWCUBE_BUTTONS = \"TOGGLE_CONFIGURATION_VIEWCUBE_BUTTONS\";\n\nconst TOGGLE_CONFIGURATION_VIEWCUBE_OPAQUE = \"TOGGLE_CONFIGURATION_VIEWCUBE_OPAQUE\";\n\nconst TOGGLE_CONFIGURATION_VIEWCUBE_CONCEAL = \"TOGGLE_CONFIGURATION_VIEWCUBE_CONCEAL\";\n\nconst TOGGLE_CONFIGURATION_TOOLBAR_CONCEAL = \"TOGGLE_CONFIGURATION_TOOLBAR_CONCEAL\";\n\nconst TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_ICONS = \"TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_ICONS\";\n\nconst TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_BUTTONS = \"TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_BUTTONS\";\n\nconst TOGGLE_CONFIGURATION_TOOLBAR_OPAQUE = \"TOGGLE_CONFIGURATION_TOOLBAR_OPAQUE\";\n\nconst TOGGLE_CONFIGURATION_TOOLBAR_TOGGLE_DRAWER = \"TOGGLE_CONFIGURATION_TOOLBAR_TOGGLE_DRAWER\";\n\nconst TOGGLE_CONFIGURATION_SPACE_TRANSPARENT_UI = \"TOGGLE_CONFIGURATION_SPACE_TRANSPARENT_UI\";\n\nconst TOGGLE_CONFIGURATION_SPACE_SHOW_TRANSFORM_ORIGIN = \"TOGGLE_CONFIGURATION_SPACE_SHOW_TRANSFORM_ORIGIN\";\n\nconst SET_CONFIGURATION_SPACE_TRANSFORM_ORIGIN_SIZE = \"SET_CONFIGURATION_SPACE_TRANSFORM_ORIGIN_SIZE\";\n\nconst SET_CONFIGURATION_SPACE_TRANSFORM_MODE = \"SET_CONFIGURATION_SPACE_TRANSFORM_MODE\";\n\nconst TOGGLE_CONFIGURATION_SPACE_TRANSFORM_MULTIMODE = \"TOGGLE_CONFIGURATION_SPACE_TRANSFORM_MULTIMODE\";\n\nconst SET_CONFIGURATION_SPACE_TRANSFORM_TOUCH = \"SET_CONFIGURATION_SPACE_TRANSFORM_TOUCH\";\n\nconst TOGGLE_CONFIGURATION_SPACE_FIRST_PERSON = \"TOGGLE_CONFIGURATION_SPACE_FIRST_PERSON\";\n\nconst SET_CONFIGURATION_SPACE_TRANSFORM_LOCKS = \"SET_CONFIGURATION_SPACE_TRANSFORM_LOCKS\";\n\nconst SET_CONFIGURATION_SPACE_LAYOUT_TYPE = \"SET_CONFIGURATION_SPACE_LAYOUT_TYPE\";\n\nconst SET_CONFIGURATION_SPACE_CULLING_DISTANCE = \"SET_CONFIGURATION_SPACE_CULLING_DISTANCE\";\n\nvar index$o = Object.freeze({\n __proto__: null,\n SET_CONFIGURATION: SET_CONFIGURATION,\n SET_CONFIGURATION_MICRO: SET_CONFIGURATION_MICRO,\n SET_CONFIGURATION_PLANE_CONTROLS: SET_CONFIGURATION_PLANE_CONTROLS,\n SET_CONFIGURATION_PLANE_OPACITY: SET_CONFIGURATION_PLANE_OPACITY,\n SET_CONFIGURATION_THEME_GENERAL: SET_CONFIGURATION_THEME_GENERAL,\n SET_CONFIGURATION_THEME_INTERACTION: SET_CONFIGURATION_THEME_INTERACTION,\n SET_CONFIGURATION_LANGUAGE: SET_CONFIGURATION_LANGUAGE,\n TOGGLE_CONFIGURATION_VIEWCUBE_HIDE: TOGGLE_CONFIGURATION_VIEWCUBE_HIDE,\n TOGGLE_CONFIGURATION_VIEWCUBE_BUTTONS: TOGGLE_CONFIGURATION_VIEWCUBE_BUTTONS,\n TOGGLE_CONFIGURATION_VIEWCUBE_OPAQUE: TOGGLE_CONFIGURATION_VIEWCUBE_OPAQUE,\n TOGGLE_CONFIGURATION_VIEWCUBE_CONCEAL: TOGGLE_CONFIGURATION_VIEWCUBE_CONCEAL,\n TOGGLE_CONFIGURATION_TOOLBAR_CONCEAL: TOGGLE_CONFIGURATION_TOOLBAR_CONCEAL,\n TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_ICONS: TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_ICONS,\n TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_BUTTONS: TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_BUTTONS,\n TOGGLE_CONFIGURATION_TOOLBAR_OPAQUE: TOGGLE_CONFIGURATION_TOOLBAR_OPAQUE,\n TOGGLE_CONFIGURATION_TOOLBAR_TOGGLE_DRAWER: TOGGLE_CONFIGURATION_TOOLBAR_TOGGLE_DRAWER,\n TOGGLE_CONFIGURATION_SPACE_TRANSPARENT_UI: TOGGLE_CONFIGURATION_SPACE_TRANSPARENT_UI,\n TOGGLE_CONFIGURATION_SPACE_SHOW_TRANSFORM_ORIGIN: TOGGLE_CONFIGURATION_SPACE_SHOW_TRANSFORM_ORIGIN,\n SET_CONFIGURATION_SPACE_TRANSFORM_ORIGIN_SIZE: SET_CONFIGURATION_SPACE_TRANSFORM_ORIGIN_SIZE,\n SET_CONFIGURATION_SPACE_TRANSFORM_MODE: SET_CONFIGURATION_SPACE_TRANSFORM_MODE,\n TOGGLE_CONFIGURATION_SPACE_TRANSFORM_MULTIMODE: TOGGLE_CONFIGURATION_SPACE_TRANSFORM_MULTIMODE,\n SET_CONFIGURATION_SPACE_TRANSFORM_TOUCH: SET_CONFIGURATION_SPACE_TRANSFORM_TOUCH,\n TOGGLE_CONFIGURATION_SPACE_FIRST_PERSON: TOGGLE_CONFIGURATION_SPACE_FIRST_PERSON,\n SET_CONFIGURATION_SPACE_TRANSFORM_LOCKS: SET_CONFIGURATION_SPACE_TRANSFORM_LOCKS,\n SET_CONFIGURATION_SPACE_LAYOUT_TYPE: SET_CONFIGURATION_SPACE_LAYOUT_TYPE,\n SET_CONFIGURATION_SPACE_CULLING_DISTANCE: SET_CONFIGURATION_SPACE_CULLING_DISTANCE\n});\n\nconst setConfiguration$1 = payload => ({\n type: SET_CONFIGURATION,\n payload: payload\n});\n\nconst setConfigurationMicro$1 = () => ({\n type: SET_CONFIGURATION_MICRO\n});\n\nconst setConfigurationPlaneControls$1 = planeControls => ({\n type: SET_CONFIGURATION_PLANE_CONTROLS,\n payload: planeControls\n});\n\nconst setConfigurationPlaneOpacity$1 = value => ({\n type: SET_CONFIGURATION_PLANE_OPACITY,\n payload: value\n});\n\nconst setConfigurationThemeGeneralAction = payload => ({\n type: SET_CONFIGURATION_THEME_GENERAL,\n payload: payload\n});\n\nconst setConfigurationThemeInteractionAction = payload => ({\n type: SET_CONFIGURATION_THEME_INTERACTION,\n payload: payload\n});\n\nconst setConfigurationLanguageAction = payload => ({\n type: SET_CONFIGURATION_LANGUAGE,\n payload: payload\n});\n\nconst toggleConfigurationViewcubeHide$1 = toggle => ({\n type: TOGGLE_CONFIGURATION_VIEWCUBE_HIDE,\n payload: toggle\n});\n\nconst toggleConfigurationViewcubeButtons$1 = toggle => ({\n type: TOGGLE_CONFIGURATION_VIEWCUBE_BUTTONS,\n payload: toggle\n});\n\nconst toggleConfigurationViewcubeOpaque$1 = toggle => ({\n type: TOGGLE_CONFIGURATION_VIEWCUBE_OPAQUE,\n payload: toggle\n});\n\nconst toggleConfigurationViewcubeConceal$1 = () => ({\n type: TOGGLE_CONFIGURATION_VIEWCUBE_CONCEAL\n});\n\nconst toggleConfigurationToolbarConceal$1 = () => ({\n type: TOGGLE_CONFIGURATION_TOOLBAR_CONCEAL\n});\n\nconst toggleConfigurationToolbarTransformIcons$1 = () => ({\n type: TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_ICONS\n});\n\nconst toggleConfigurationToolbarTransformButtons$1 = () => ({\n type: TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_BUTTONS\n});\n\nconst toggleConfigurationSpaceTransparentUI$1 = () => ({\n type: TOGGLE_CONFIGURATION_SPACE_TRANSPARENT_UI\n});\n\nconst toggleConfigurationSpaceShowTransformOrigin = () => ({\n type: TOGGLE_CONFIGURATION_SPACE_SHOW_TRANSFORM_ORIGIN\n});\n\nconst toggleConfigurationToolbarOpaque$1 = () => ({\n type: TOGGLE_CONFIGURATION_TOOLBAR_OPAQUE\n});\n\nconst toggleConfigurationToolbarToggleDrawer$1 = drawer => ({\n type: TOGGLE_CONFIGURATION_TOOLBAR_TOGGLE_DRAWER,\n payload: drawer\n});\n\nconst setConfigurationSpaceTransformOriginSize$1 = size => ({\n type: SET_CONFIGURATION_SPACE_TRANSFORM_ORIGIN_SIZE,\n payload: size\n});\n\nconst setConfigurationSpaceTransformMode$1 = mode => ({\n type: SET_CONFIGURATION_SPACE_TRANSFORM_MODE,\n payload: mode\n});\n\nconst toggleConfigurationSpaceTransformMultimode$1 = toggle => ({\n type: TOGGLE_CONFIGURATION_SPACE_TRANSFORM_MULTIMODE,\n payload: toggle\n});\n\nconst setConfigurationSpaceTransformTouch$1 = touch => ({\n type: SET_CONFIGURATION_SPACE_TRANSFORM_TOUCH,\n payload: touch\n});\n\nconst toggleConfigurationSpaceFirstPerson$1 = () => ({\n type: TOGGLE_CONFIGURATION_SPACE_FIRST_PERSON\n});\n\nconst setConfigurationSpaceTransformLocks$1 = transformLock => ({\n type: SET_CONFIGURATION_SPACE_TRANSFORM_LOCKS,\n payload: transformLock\n});\n\nconst setConfigurationSpaceLayoutType = layoutType => ({\n type: SET_CONFIGURATION_SPACE_LAYOUT_TYPE,\n payload: layoutType\n});\n\nconst setConfigurationSpaceCullingDistance$1 = value => ({\n type: SET_CONFIGURATION_SPACE_CULLING_DISTANCE,\n payload: value\n});\n\nvar index$n = Object.freeze({\n __proto__: null,\n setConfiguration: setConfiguration$1,\n setConfigurationMicro: setConfigurationMicro$1,\n setConfigurationPlaneControls: setConfigurationPlaneControls$1,\n setConfigurationPlaneOpacity: setConfigurationPlaneOpacity$1,\n setConfigurationThemeGeneralAction: setConfigurationThemeGeneralAction,\n setConfigurationThemeInteractionAction: setConfigurationThemeInteractionAction,\n setConfigurationLanguageAction: setConfigurationLanguageAction,\n toggleConfigurationViewcubeHide: toggleConfigurationViewcubeHide$1,\n toggleConfigurationViewcubeButtons: toggleConfigurationViewcubeButtons$1,\n toggleConfigurationViewcubeOpaque: toggleConfigurationViewcubeOpaque$1,\n toggleConfigurationViewcubeConceal: toggleConfigurationViewcubeConceal$1,\n toggleConfigurationToolbarConceal: toggleConfigurationToolbarConceal$1,\n toggleConfigurationToolbarTransformIcons: toggleConfigurationToolbarTransformIcons$1,\n toggleConfigurationToolbarTransformButtons: toggleConfigurationToolbarTransformButtons$1,\n toggleConfigurationSpaceTransparentUI: toggleConfigurationSpaceTransparentUI$1,\n toggleConfigurationSpaceShowTransformOrigin: toggleConfigurationSpaceShowTransformOrigin,\n toggleConfigurationToolbarOpaque: toggleConfigurationToolbarOpaque$1,\n toggleConfigurationToolbarToggleDrawer: toggleConfigurationToolbarToggleDrawer$1,\n setConfigurationSpaceTransformOriginSize: setConfigurationSpaceTransformOriginSize$1,\n setConfigurationSpaceTransformMode: setConfigurationSpaceTransformMode$1,\n toggleConfigurationSpaceTransformMultimode: toggleConfigurationSpaceTransformMultimode$1,\n setConfigurationSpaceTransformTouch: setConfigurationSpaceTransformTouch$1,\n toggleConfigurationSpaceFirstPerson: toggleConfigurationSpaceFirstPerson$1,\n setConfigurationSpaceTransformLocks: setConfigurationSpaceTransformLocks$1,\n setConfigurationSpaceLayoutType: setConfigurationSpaceLayoutType,\n setConfigurationSpaceCullingDistance: setConfigurationSpaceCullingDistance$1\n});\n\nconst initialState$5 = Object.assign({}, pluridData.defaultConfiguration);\n\nconst setConfiguration = (state, action) => Object.assign(Object.assign({}, state), action.payload);\n\nconst setConfigurationMicro = state => {\n const newState = Object.assign({}, state);\n newState.elements.toolbar.show = false;\n newState.elements.plane.controls.show = false;\n newState.elements.viewcube.show = false;\n return Object.assign({}, newState);\n};\n\nconst setConfigurationPlaneControls = (state, action) => {\n const newState = Object.assign({}, state);\n newState.elements.plane.controls.show = action.payload;\n return Object.assign({}, newState);\n};\n\nconst setConfigurationPlaneOpacity = (state, action) => {\n const newState = Object.assign({}, state);\n newState.elements.plane.opacity = action.payload;\n return Object.assign({}, newState);\n};\n\nconst setConfigurationThemeGeneral = (state, action) => {\n const newState = Object.assign({}, state);\n const updatedTheme = {\n general: action.payload,\n interaction: typeof newState.global.theme === \"object\" ? newState.global.theme.interaction : \"plurid\"\n };\n return Object.assign(Object.assign({}, newState), {\n global: Object.assign(Object.assign({}, newState.global), {\n theme: updatedTheme\n })\n });\n};\n\nconst setConfigurationThemeInteraction = (state, action) => {\n const newState = Object.assign({}, state);\n const updatedTheme = {\n general: typeof newState.global.theme === \"object\" ? newState.global.theme.general : \"plurid\",\n interaction: action.payload\n };\n return Object.assign(Object.assign({}, newState), {\n global: Object.assign(Object.assign({}, newState.global), {\n theme: updatedTheme\n })\n });\n};\n\nconst setConfigurationLanguage = (state, action) => Object.assign(Object.assign({}, state), {\n global: Object.assign(Object.assign({}, state.global), {\n language: action.payload\n })\n});\n\nconst toggleConfigurationViewcubeHide = (state, action) => {\n const newState = Object.assign({}, state);\n newState.elements.viewcube.show = action.payload;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationViewcubeButtons = (state, action) => {\n const newState = Object.assign({}, state);\n newState.elements.viewcube.buttons = action.payload;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationViewcubeOpaque = (state, action) => {\n const newState = Object.assign({}, state);\n newState.elements.viewcube.opaque = action.payload;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationViewcubeConceal = state => {\n const {conceal: conceal} = state.elements.viewcube;\n const newState = Object.assign({}, state);\n newState.elements.viewcube.conceal = !conceal;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationToolbarConceal = state => {\n const {conceal: conceal} = state.elements.toolbar;\n const newState = Object.assign({}, state);\n newState.elements.toolbar.conceal = !conceal;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationToolbarTransformIcons = state => {\n const {transformIcons: transformIcons} = state.elements.toolbar;\n const newState = Object.assign({}, state);\n newState.elements.toolbar.transformIcons = !transformIcons;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationToolbarTransformButtons = state => {\n const {transformButtons: transformButtons} = state.elements.toolbar;\n const newState = Object.assign({}, state);\n newState.elements.toolbar.transformButtons = !transformButtons;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationShowTransformOrigin = state => {\n const {show: show} = state.space.transformOrigin;\n const newState = Object.assign({}, state);\n newState.space.transformOrigin.show = !show;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationToolbarOpaque = state => {\n const {opaque: opaque} = state.elements.toolbar;\n const newState = Object.assign({}, state);\n newState.elements.toolbar.opaque = !opaque;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationSpaceTransparentUI = state => {\n const newState = Object.assign({}, state);\n newState.global.transparentUI = !state.global.transparentUI;\n return Object.assign({}, newState);\n};\n\nconst setConfigurationSpaceTransformOriginSize = (state, action) => {\n const newState = Object.assign({}, state);\n newState.space.transformOrigin.size = action.payload;\n return Object.assign({}, newState);\n};\n\nconst setConfigurationSpaceTransformMode = (state, action) => {\n const newState = Object.assign({}, state);\n if (newState.space.transformMode !== action.payload) {\n newState.space.transformMode = action.payload;\n } else {\n newState.space.transformMode = pluridData.TRANSFORM_MODES.ALL;\n }\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationSpaceTransformMultimode = (state, action) => {\n const newState = Object.assign({}, state);\n newState.space.transformMultimode = action.payload;\n return Object.assign({}, newState);\n};\n\nconst setConfigurationSpaceTransformTouch = (state, action) => {\n const newState = Object.assign({}, state);\n newState.space.transformTouch = action.payload;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationSpaceFirstPerson = state => {\n const {firstPerson: firstPerson} = state.space;\n const newState = Object.assign({}, state);\n newState.space.firstPerson = !firstPerson;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationToolbarToggleDrawer = (state, action) => {\n const {toggledDrawers: toggledDrawers} = state.elements.toolbar;\n const newState = Object.assign({}, state);\n if (toggledDrawers.includes(action.payload)) {\n const updatedDrawers = toggledDrawers.filter((el => el !== action.payload));\n newState.elements.toolbar.toggledDrawers = [ ...updatedDrawers ];\n } else {\n newState.elements.toolbar.toggledDrawers = [ ...toggledDrawers, action.payload ];\n }\n return Object.assign({}, newState);\n};\n\nconst setConfigurationSpaceTransformLocks = (state, action) => {\n const {transformLocks: transformLocks} = state.space;\n const newState = Object.assign({}, state);\n const updatedTransformLocks = Object.assign({}, transformLocks);\n updatedTransformLocks[action.payload] = !transformLocks[action.payload];\n newState.space.transformLocks = Object.assign({}, updatedTransformLocks);\n return Object.assign({}, newState);\n};\n\nconst setConfigurationSpaceLayout = (state, action) => {\n const newState = Object.assign({}, state);\n const layout = {\n type: pluridData.LAYOUT_TYPES[action.payload]\n };\n newState.space.layout = Object.assign({}, layout);\n return Object.assign({}, newState);\n};\n\nconst setConfigurationSpaceCullingDistance = (state, action) => {\n const newState = Object.assign({}, state);\n newState.space.cullingDistance = action.payload;\n return Object.assign({}, newState);\n};\n\nvar index$m = Object.freeze({\n __proto__: null,\n setConfiguration: setConfiguration,\n setConfigurationMicro: setConfigurationMicro,\n setConfigurationPlaneControls: setConfigurationPlaneControls,\n setConfigurationPlaneOpacity: setConfigurationPlaneOpacity,\n setConfigurationThemeGeneral: setConfigurationThemeGeneral,\n setConfigurationThemeInteraction: setConfigurationThemeInteraction,\n setConfigurationLanguage: setConfigurationLanguage,\n toggleConfigurationViewcubeHide: toggleConfigurationViewcubeHide,\n toggleConfigurationViewcubeButtons: toggleConfigurationViewcubeButtons,\n toggleConfigurationViewcubeOpaque: toggleConfigurationViewcubeOpaque,\n toggleConfigurationViewcubeConceal: toggleConfigurationViewcubeConceal,\n toggleConfigurationToolbarConceal: toggleConfigurationToolbarConceal,\n toggleConfigurationToolbarTransformIcons: toggleConfigurationToolbarTransformIcons,\n toggleConfigurationToolbarTransformButtons: toggleConfigurationToolbarTransformButtons,\n toggleConfigurationShowTransformOrigin: toggleConfigurationShowTransformOrigin,\n toggleConfigurationToolbarOpaque: toggleConfigurationToolbarOpaque,\n toggleConfigurationSpaceTransparentUI: toggleConfigurationSpaceTransparentUI,\n setConfigurationSpaceTransformOriginSize: setConfigurationSpaceTransformOriginSize,\n setConfigurationSpaceTransformMode: setConfigurationSpaceTransformMode,\n toggleConfigurationSpaceTransformMultimode: toggleConfigurationSpaceTransformMultimode,\n setConfigurationSpaceTransformTouch: setConfigurationSpaceTransformTouch,\n toggleConfigurationSpaceFirstPerson: toggleConfigurationSpaceFirstPerson,\n toggleConfigurationToolbarToggleDrawer: toggleConfigurationToolbarToggleDrawer,\n setConfigurationSpaceTransformLocks: setConfigurationSpaceTransformLocks,\n setConfigurationSpaceLayout: setConfigurationSpaceLayout,\n setConfigurationSpaceCullingDistance: setConfigurationSpaceCullingDistance\n});\n\nconst SET_STATE = \"SET_STATE\";\n\nconst reducer$5 = (state = initialState$5, action) => {\n switch (action.type) {\n case SET_STATE:\n return Object.assign(Object.assign({}, state), action.payload.configuration);\n\n case SET_CONFIGURATION:\n return setConfiguration(state, action);\n\n case SET_CONFIGURATION_MICRO:\n return setConfigurationMicro(state);\n\n case SET_CONFIGURATION_PLANE_CONTROLS:\n return setConfigurationPlaneControls(state, action);\n\n case SET_CONFIGURATION_PLANE_OPACITY:\n return setConfigurationPlaneOpacity(state, action);\n\n case SET_CONFIGURATION_THEME_GENERAL:\n return setConfigurationThemeGeneral(state, action);\n\n case SET_CONFIGURATION_THEME_INTERACTION:\n return setConfigurationThemeInteraction(state, action);\n\n case SET_CONFIGURATION_LANGUAGE:\n return setConfigurationLanguage(state, action);\n\n case TOGGLE_CONFIGURATION_VIEWCUBE_HIDE:\n return toggleConfigurationViewcubeHide(state, action);\n\n case TOGGLE_CONFIGURATION_VIEWCUBE_BUTTONS:\n return toggleConfigurationViewcubeButtons(state, action);\n\n case TOGGLE_CONFIGURATION_VIEWCUBE_OPAQUE:\n return toggleConfigurationViewcubeOpaque(state, action);\n\n case TOGGLE_CONFIGURATION_VIEWCUBE_CONCEAL:\n return toggleConfigurationViewcubeConceal(state);\n\n case TOGGLE_CONFIGURATION_TOOLBAR_CONCEAL:\n return toggleConfigurationToolbarConceal(state);\n\n case TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_ICONS:\n return toggleConfigurationToolbarTransformIcons(state);\n\n case TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_BUTTONS:\n return toggleConfigurationToolbarTransformButtons(state);\n\n case TOGGLE_CONFIGURATION_TOOLBAR_TOGGLE_DRAWER:\n return toggleConfigurationToolbarToggleDrawer(state, action);\n\n case TOGGLE_CONFIGURATION_TOOLBAR_OPAQUE:\n return toggleConfigurationToolbarOpaque(state);\n\n case TOGGLE_CONFIGURATION_SPACE_TRANSPARENT_UI:\n return toggleConfigurationSpaceTransparentUI(state);\n\n case TOGGLE_CONFIGURATION_SPACE_SHOW_TRANSFORM_ORIGIN:\n return toggleConfigurationShowTransformOrigin(state);\n\n case SET_CONFIGURATION_SPACE_TRANSFORM_ORIGIN_SIZE:\n return setConfigurationSpaceTransformOriginSize(state, action);\n\n case SET_CONFIGURATION_SPACE_TRANSFORM_MODE:\n return setConfigurationSpaceTransformMode(state, action);\n\n case TOGGLE_CONFIGURATION_SPACE_TRANSFORM_MULTIMODE:\n return toggleConfigurationSpaceTransformMultimode(state, action);\n\n case SET_CONFIGURATION_SPACE_TRANSFORM_TOUCH:\n return setConfigurationSpaceTransformTouch(state, action);\n\n case TOGGLE_CONFIGURATION_SPACE_FIRST_PERSON:\n return toggleConfigurationSpaceFirstPerson(state);\n\n case SET_CONFIGURATION_SPACE_TRANSFORM_LOCKS:\n return setConfigurationSpaceTransformLocks(state, action);\n\n case SET_CONFIGURATION_SPACE_LAYOUT_TYPE:\n return setConfigurationSpaceLayout(state, action);\n\n case SET_CONFIGURATION_SPACE_CULLING_DISTANCE:\n return setConfigurationSpaceCullingDistance(state, action);\n\n default:\n return Object.assign({}, state);\n }\n};\n\nconst getConfiguration = state => state.configuration;\n\nvar index$l = {\n getConfiguration: getConfiguration\n};\n\nvar configuration = Object.freeze({\n __proto__: null,\n actions: index$n,\n initialState: initialState$5,\n reducer: reducer$5,\n resolvers: index$m,\n selectors: index$l,\n Types: index$o\n});\n\nvar index$j = {};\n\nvar index$k = Object.freeze({\n __proto__: null,\n default: index$j\n});\n\nconst initialState$4 = {};\n\nconst reducer$4 = (state = initialState$4, action) => Object.assign({}, state);\n\nvar index$i = Object.freeze({\n __proto__: null\n});\n\nvar index$h = {};\n\nvar index$g = Object.freeze({\n __proto__: null\n});\n\nvar general = Object.freeze({\n __proto__: null,\n actions: index$k,\n initialState: initialState$4,\n reducer: reducer$4,\n resolvers: index$i,\n selectors: index$h,\n Types: index$g\n});\n\nconst SHORTCUTS_SET_GLOBAL_SHORTCUTS = \"SHORTCUTS_SET_GLOBAL_SHORTCUTS\";\n\nconst SHORTCUTS_UNSET_GLOBAL_SHORTCUTS = \"SHORTCUTS_UNSET_GLOBAL_SHORTCUTS\";\n\nvar index$f = Object.freeze({\n __proto__: null,\n SHORTCUTS_SET_GLOBAL_SHORTCUTS: SHORTCUTS_SET_GLOBAL_SHORTCUTS,\n SHORTCUTS_UNSET_GLOBAL_SHORTCUTS: SHORTCUTS_UNSET_GLOBAL_SHORTCUTS\n});\n\nconst setGlobalShortcuts$1 = () => ({\n type: SHORTCUTS_SET_GLOBAL_SHORTCUTS\n});\n\nconst unsetGlobalShortcuts$1 = () => ({\n type: SHORTCUTS_UNSET_GLOBAL_SHORTCUTS\n});\n\nvar index$e = Object.freeze({\n __proto__: null,\n setGlobalShortcuts: setGlobalShortcuts$1,\n unsetGlobalShortcuts: unsetGlobalShortcuts$1\n});\n\nconst initialState$3 = {\n global: true\n};\n\nconst setGlobalShortcuts = state => Object.assign(Object.assign({}, state), {\n global: true\n});\n\nconst unsetGlobalShortcuts = state => Object.assign(Object.assign({}, state), {\n global: false\n});\n\nvar index$d = Object.freeze({\n __proto__: null,\n setGlobalShortcuts: setGlobalShortcuts,\n unsetGlobalShortcuts: unsetGlobalShortcuts\n});\n\nconst reducer$3 = (state = initialState$3, action) => {\n switch (action.type) {\n case SET_STATE:\n return Object.assign(Object.assign({}, state), action.payload.shortcuts);\n\n case SHORTCUTS_SET_GLOBAL_SHORTCUTS:\n return setGlobalShortcuts(state);\n\n case SHORTCUTS_UNSET_GLOBAL_SHORTCUTS:\n return unsetGlobalShortcuts(state);\n\n default:\n return Object.assign({}, state);\n }\n};\n\nconst getGlobal = state => state.shortcuts.global;\n\nvar index$c = {\n getGlobal: getGlobal\n};\n\nvar shortcuts = Object.freeze({\n __proto__: null,\n actions: index$e,\n initialState: initialState$3,\n reducer: reducer$3,\n resolvers: index$d,\n selectors: index$c,\n Types: index$f\n});\n\nconst SET_SPACE_FIELD = \"SET_SPACE_FIELD\";\n\nconst SET_SPACE_LOADING = \"SET_SPACE_LOADING\";\n\nconst SET_TRANSFORM = \"SET_TRANSFORM\";\n\nconst SET_ANIMATED_TRANSFORM = \"SET_ANIMATED_TRANSFORM\";\n\nconst SET_TRANSFORM_TIME = \"SET_TRANSFORM_TIME\";\n\nconst SET_SPACE_LOCATION = \"SET_SPACE_LOCATION\";\n\nconst VIEW_CAMERA_MOVE_FORWARD = \"VIEW_CAMERA_MOVE_FORWARD\";\n\nconst VIEW_CAMERA_MOVE_BACKWARD = \"VIEW_CAMERA_MOVE_BACKWARD\";\n\nconst VIEW_CAMERA_MOVE_LEFT = \"VIEW_CAMERA_MOVE_LEFT\";\n\nconst VIEW_CAMERA_MOVE_RIGHT = \"VIEW_CAMERA_MOVE_RIGHT\";\n\nconst VIEW_CAMERA_MOVE_UP = \"VIEW_CAMERA_MOVE_UP\";\n\nconst VIEW_CAMERA_MOVE_DOWN = \"VIEW_CAMERA_MOVE_DOWN\";\n\nconst VIEW_CAMERA_TURN_UP = \"VIEW_CAMERA_TURN_UP\";\n\nconst VIEW_CAMERA_TURN_DOWN = \"VIEW_CAMERA_TURN_DOWN\";\n\nconst VIEW_CAMERA_TURN_LEFT = \"VIEW_CAMERA_TURN_LEFT\";\n\nconst VIEW_CAMERA_TURN_RIGHT = \"VIEW_CAMERA_TURN_RIGHT\";\n\nconst ROTATE_UP = \"ROTATE_UP\";\n\nconst ROTATE_DOWN = \"ROTATE_DOWN\";\n\nconst ROTATE_LEFT = \"ROTATE_LEFT\";\n\nconst ROTATE_X = \"ROTATE_X\";\n\nconst ROTATE_X_WITH = \"ROTATE_X_WITH\";\n\nconst ROTATE_RIGHT = \"ROTATE_RIGHT\";\n\nconst ROTATE_Y = \"ROTATE_Y\";\n\nconst ROTATE_Y_WITH = \"ROTATE_Y_WITH\";\n\nconst TRANSLATE_UP = \"TRANSLATE_UP\";\n\nconst TRANSLATE_DOWN = \"TRANSLATE_DOWN\";\n\nconst TRANSLATE_LEFT = \"TRANSLATE_LEFT\";\n\nconst TRANSLATE_RIGHT = \"TRANSLATE_RIGHT\";\n\nconst TRANSLATE_IN = \"TRANSLATE_IN\";\n\nconst TRANSLATE_OUT = \"TRANSLATE_OUT\";\n\nconst TRANSLATE_X_WITH = \"TRANSLATE_X_WITH\";\n\nconst TRANSLATE_Y_WITH = \"TRANSLATE_Y_WITH\";\n\nconst SCALE_UP = \"SCALE_UP\";\n\nconst SCALE_DOWN = \"SCALE_DOWN\";\n\nconst SCALE_UP_WITH = \"SCALE_UP_WITH\";\n\nconst SCALE_DOWN_WITH = \"SCALE_DOWN_WITH\";\n\nconst SET_INITIAL_TREE = \"SET_INITIAL_TREE\";\n\nconst SET_TREE = \"SET_TREE\";\n\nconst SET_ACTIVE_UNIVERSE = \"SET_ACTIVE_UNIVERSE\";\n\nconst SPACE_RESET_TRANSFORM = \"SPACE_RESET_TRANSFORM\";\n\nconst SET_VIEW_SIZE = \"SET_VIEW_SIZE\";\n\nconst SET_SPACE_SIZE = \"SET_SPACE_SIZE\";\n\nconst UPDATE_SPACE_TREE_PLANE = \"UPDATE_SPACE_TREE_PLANE\";\n\nconst UPDATE_SPACE_LINK_COORDINATES = \"UPDATE_SPACE_LINK_COORDINATES\";\n\nconst SPACE_SET_VIEW = \"SPACE_SET_VIEW\";\n\nconst SPACE_SET_CULLED_VIEW = \"SPACE_SET_CULLED_VIEW\";\n\nvar index$b = Object.freeze({\n __proto__: null,\n SET_SPACE_FIELD: SET_SPACE_FIELD,\n SET_SPACE_LOADING: SET_SPACE_LOADING,\n SET_TRANSFORM: SET_TRANSFORM,\n SET_ANIMATED_TRANSFORM: SET_ANIMATED_TRANSFORM,\n SET_TRANSFORM_TIME: SET_TRANSFORM_TIME,\n SET_SPACE_LOCATION: SET_SPACE_LOCATION,\n VIEW_CAMERA_MOVE_FORWARD: VIEW_CAMERA_MOVE_FORWARD,\n VIEW_CAMERA_MOVE_BACKWARD: VIEW_CAMERA_MOVE_BACKWARD,\n VIEW_CAMERA_MOVE_LEFT: VIEW_CAMERA_MOVE_LEFT,\n VIEW_CAMERA_MOVE_RIGHT: VIEW_CAMERA_MOVE_RIGHT,\n VIEW_CAMERA_MOVE_UP: VIEW_CAMERA_MOVE_UP,\n VIEW_CAMERA_MOVE_DOWN: VIEW_CAMERA_MOVE_DOWN,\n VIEW_CAMERA_TURN_UP: VIEW_CAMERA_TURN_UP,\n VIEW_CAMERA_TURN_DOWN: VIEW_CAMERA_TURN_DOWN,\n VIEW_CAMERA_TURN_LEFT: VIEW_CAMERA_TURN_LEFT,\n VIEW_CAMERA_TURN_RIGHT: VIEW_CAMERA_TURN_RIGHT,\n ROTATE_UP: ROTATE_UP,\n ROTATE_DOWN: ROTATE_DOWN,\n ROTATE_LEFT: ROTATE_LEFT,\n ROTATE_X: ROTATE_X,\n ROTATE_X_WITH: ROTATE_X_WITH,\n ROTATE_RIGHT: ROTATE_RIGHT,\n ROTATE_Y: ROTATE_Y,\n ROTATE_Y_WITH: ROTATE_Y_WITH,\n TRANSLATE_UP: TRANSLATE_UP,\n TRANSLATE_DOWN: TRANSLATE_DOWN,\n TRANSLATE_LEFT: TRANSLATE_LEFT,\n TRANSLATE_RIGHT: TRANSLATE_RIGHT,\n TRANSLATE_IN: TRANSLATE_IN,\n TRANSLATE_OUT: TRANSLATE_OUT,\n TRANSLATE_X_WITH: TRANSLATE_X_WITH,\n TRANSLATE_Y_WITH: TRANSLATE_Y_WITH,\n SCALE_UP: SCALE_UP,\n SCALE_DOWN: SCALE_DOWN,\n SCALE_UP_WITH: SCALE_UP_WITH,\n SCALE_DOWN_WITH: SCALE_DOWN_WITH,\n SET_INITIAL_TREE: SET_INITIAL_TREE,\n SET_TREE: SET_TREE,\n SET_ACTIVE_UNIVERSE: SET_ACTIVE_UNIVERSE,\n SPACE_RESET_TRANSFORM: SPACE_RESET_TRANSFORM,\n SET_VIEW_SIZE: SET_VIEW_SIZE,\n SET_SPACE_SIZE: SET_SPACE_SIZE,\n UPDATE_SPACE_TREE_PLANE: UPDATE_SPACE_TREE_PLANE,\n UPDATE_SPACE_LINK_COORDINATES: UPDATE_SPACE_LINK_COORDINATES,\n SPACE_SET_VIEW: SPACE_SET_VIEW,\n SPACE_SET_CULLED_VIEW: SPACE_SET_CULLED_VIEW\n});\n\nconst setSpaceField$1 = payload => ({\n type: SET_SPACE_FIELD,\n payload: payload\n});\n\nconst setSpaceLoading$1 = payload => ({\n type: SET_SPACE_LOADING,\n payload: payload\n});\n\nconst setTransform$1 = payload => ({\n type: SET_TRANSFORM,\n payload: payload\n});\n\nconst setAnimatedTransform$1 = payload => ({\n type: SET_ANIMATED_TRANSFORM,\n payload: payload\n});\n\nconst setTransformTime$1 = payload => ({\n type: SET_TRANSFORM_TIME,\n payload: payload\n});\n\nconst setSpaceLocation$1 = payload => ({\n type: SET_SPACE_LOCATION,\n payload: payload\n});\n\nconst viewCameraMoveForward$1 = () => ({\n type: VIEW_CAMERA_MOVE_FORWARD\n});\n\nconst viewCameraMoveBackward$1 = () => ({\n type: VIEW_CAMERA_MOVE_BACKWARD\n});\n\nconst viewCameraMoveLeft$1 = () => ({\n type: VIEW_CAMERA_MOVE_LEFT\n});\n\nconst viewCameraMoveRight$1 = () => ({\n type: VIEW_CAMERA_MOVE_RIGHT\n});\n\nconst viewCameraMoveUp$1 = () => ({\n type: VIEW_CAMERA_MOVE_UP\n});\n\nconst viewCameraMoveDown$1 = () => ({\n type: VIEW_CAMERA_MOVE_DOWN\n});\n\nconst viewCameraTurnUp$1 = () => ({\n type: VIEW_CAMERA_TURN_UP\n});\n\nconst viewCameraTurnDown$1 = () => ({\n type: VIEW_CAMERA_TURN_DOWN\n});\n\nconst viewCameraTurnLeft$1 = () => ({\n type: VIEW_CAMERA_TURN_LEFT\n});\n\nconst viewCameraTurnRight$1 = () => ({\n type: VIEW_CAMERA_TURN_RIGHT\n});\n\nconst rotateUp$1 = () => ({\n type: ROTATE_UP\n});\n\nconst rotateDown$1 = () => ({\n type: ROTATE_DOWN\n});\n\nconst rotateX$1 = payload => ({\n type: ROTATE_X,\n payload: payload\n});\n\nconst rotateXWith$1 = payload => ({\n type: ROTATE_X_WITH,\n payload: payload\n});\n\nconst rotateLeft$1 = () => ({\n type: ROTATE_LEFT\n});\n\nconst rotateRight$1 = () => ({\n type: ROTATE_RIGHT\n});\n\nconst rotateY$1 = payload => ({\n type: ROTATE_Y,\n payload: payload\n});\n\nconst rotateYWith$1 = payload => ({\n type: ROTATE_Y_WITH,\n payload: payload\n});\n\nconst translateUp$1 = () => ({\n type: TRANSLATE_UP\n});\n\nconst translateDown$1 = () => ({\n type: TRANSLATE_DOWN\n});\n\nconst translateLeft$1 = () => ({\n type: TRANSLATE_LEFT\n});\n\nconst translateRight$1 = () => ({\n type: TRANSLATE_RIGHT\n});\n\nconst translateIn$1 = () => ({\n type: TRANSLATE_IN\n});\n\nconst translateOut$1 = () => ({\n type: TRANSLATE_OUT\n});\n\nconst translateXWith$1 = payload => ({\n type: TRANSLATE_X_WITH,\n payload: payload\n});\n\nconst translateYWith$1 = payload => ({\n type: TRANSLATE_Y_WITH,\n payload: payload\n});\n\nconst scaleUp$1 = () => ({\n type: SCALE_UP\n});\n\nconst scaleDown$1 = () => ({\n type: SCALE_DOWN\n});\n\nconst scaleUpWith$1 = value => ({\n type: SCALE_UP_WITH,\n payload: value\n});\n\nconst scaleDownWith$1 = value => ({\n type: SCALE_DOWN_WITH,\n payload: value\n});\n\nconst setInitialTree$1 = payload => ({\n type: SET_INITIAL_TREE,\n payload: payload\n});\n\nconst setTree$1 = payload => ({\n type: SET_TREE,\n payload: payload\n});\n\nconst setActiveUniverse$1 = universeID => ({\n type: SET_ACTIVE_UNIVERSE,\n payload: universeID\n});\n\nconst spaceResetTransform$1 = () => ({\n type: SPACE_RESET_TRANSFORM\n});\n\nconst setViewSize$1 = payload => ({\n type: SET_VIEW_SIZE,\n payload: payload\n});\n\nconst setSpaceSize$1 = payload => ({\n type: SET_SPACE_SIZE,\n payload: payload\n});\n\nconst updateSpaceTreePlane$1 = payload => ({\n type: UPDATE_SPACE_TREE_PLANE,\n payload: payload\n});\n\nconst updateSpaceLinkCoordinates$1 = payload => ({\n type: UPDATE_SPACE_LINK_COORDINATES,\n payload: payload\n});\n\nconst spaceSetView$1 = payload => ({\n type: SPACE_SET_VIEW,\n payload: payload\n});\n\nconst spaceSetCulledView$1 = payload => ({\n type: SPACE_SET_CULLED_VIEW,\n payload: payload\n});\n\nvar index$a = Object.freeze({\n __proto__: null,\n setSpaceField: setSpaceField$1,\n setSpaceLoading: setSpaceLoading$1,\n setTransform: setTransform$1,\n setAnimatedTransform: setAnimatedTransform$1,\n setTransformTime: setTransformTime$1,\n setSpaceLocation: setSpaceLocation$1,\n viewCameraMoveForward: viewCameraMoveForward$1,\n viewCameraMoveBackward: viewCameraMoveBackward$1,\n viewCameraMoveLeft: viewCameraMoveLeft$1,\n viewCameraMoveRight: viewCameraMoveRight$1,\n viewCameraMoveUp: viewCameraMoveUp$1,\n viewCameraMoveDown: viewCameraMoveDown$1,\n viewCameraTurnUp: viewCameraTurnUp$1,\n viewCameraTurnDown: viewCameraTurnDown$1,\n viewCameraTurnLeft: viewCameraTurnLeft$1,\n viewCameraTurnRight: viewCameraTurnRight$1,\n rotateUp: rotateUp$1,\n rotateDown: rotateDown$1,\n rotateX: rotateX$1,\n rotateXWith: rotateXWith$1,\n rotateLeft: rotateLeft$1,\n rotateRight: rotateRight$1,\n rotateY: rotateY$1,\n rotateYWith: rotateYWith$1,\n translateUp: translateUp$1,\n translateDown: translateDown$1,\n translateLeft: translateLeft$1,\n translateRight: translateRight$1,\n translateIn: translateIn$1,\n translateOut: translateOut$1,\n translateXWith: translateXWith$1,\n translateYWith: translateYWith$1,\n scaleUp: scaleUp$1,\n scaleDown: scaleDown$1,\n scaleUpWith: scaleUpWith$1,\n scaleDownWith: scaleDownWith$1,\n setInitialTree: setInitialTree$1,\n setTree: setTree$1,\n setActiveUniverse: setActiveUniverse$1,\n spaceResetTransform: spaceResetTransform$1,\n setViewSize: setViewSize$1,\n setSpaceSize: setSpaceSize$1,\n updateSpaceTreePlane: updateSpaceTreePlane$1,\n updateSpaceLinkCoordinates: updateSpaceLinkCoordinates$1,\n spaceSetView: spaceSetView$1,\n spaceSetCulledView: spaceSetCulledView$1\n});\n\nconst initialState$2 = {\n loading: true,\n transform: \"matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)\",\n animatedTransform: false,\n transformTime: 450,\n scale: 1,\n rotationX: 0,\n rotationY: 0,\n translationX: 0,\n translationY: 0,\n translationZ: 0,\n initialTree: [],\n tree: [],\n activeUniverseID: \"\",\n camera: {\n x: 0,\n y: 0,\n z: 0\n },\n viewSize: {\n width: typeof window === \"undefined\" ? 1440 : window.innerWidth,\n height: typeof window === \"undefined\" ? 821 : window.innerHeight\n },\n spaceSize: {\n width: typeof window === \"undefined\" ? 1440 : window.innerWidth,\n height: typeof window === \"undefined\" ? 821 : window.innerHeight,\n depth: 0,\n topCorner: {\n x: 0,\n y: 0,\n z: 0\n }\n },\n view: [],\n culledView: []\n};\n\nconst {quaternion: quaternion, matrix: matrix} = pluridEngine.interaction;\n\nconst {matrixArrayToCSSMatrix: matrixArrayToCSSMatrix$1, rotateMatrix: rotateMatrix$1, multiplyArrayOfMatrices: multiplyArrayOfMatrices$1, scaleMatrix: scaleMatrix$1, translateMatrix: translateMatrix$2} = matrix;\n\nconst {degToRad: degToRad$2} = quaternion;\n\nconst computeMatrix = spaceState => {\n const {translationX: translationX, translationY: translationY, translationZ: translationZ, rotationX: rotationX, rotationY: rotationY, scale: scale} = spaceState;\n const innerWidth = typeof window === \"undefined\" ? 720 : window.innerWidth / 2;\n const innerHeight = typeof window === \"undefined\" ? 400 : window.innerHeight / 2;\n const transformOriginX = translationX * -1 + innerWidth;\n const transformOriginY = translationY * -1 + innerHeight;\n const transformOriginZ = translationZ * -1;\n const rotationMatrix = rotateMatrix$1(degToRad$2(-rotationX), degToRad$2(-rotationY));\n const translationMatrix = translateMatrix$2(translationX, translationY, translationZ);\n const scalationMatrix = scaleMatrix$1(scale);\n const transformMatrix = multiplyArrayOfMatrices$1([ translationMatrix, multiplyArrayOfMatrices$1([ translateMatrix$2(transformOriginX, transformOriginY, transformOriginZ), rotationMatrix, translateMatrix$2(-transformOriginX, -transformOriginY, -transformOriginZ) ]), scalationMatrix ]);\n const transform = matrixArrayToCSSMatrix$1(transformMatrix);\n return transform;\n};\n\nconst {toRadians: toRadians} = pluridFunctions.mathematics.geometry;\n\nconst getNewState = state => pluridFunctions.objects.clone(state, \"any\");\n\nconst setSpaceField = (state, action) => {\n const {field: field, value: value} = action.payload;\n const newState = getNewState(state);\n newState[field] = value;\n return Object.assign({}, newState);\n};\n\nconst setSpaceLoading = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n loading: action.payload\n });\n};\n\nconst setTransform = (state, action) => {\n const {translationX: translationX, translationY: translationY, translationZ: translationZ, rotationX: rotationX, rotationY: rotationY, scale: scale} = action.payload;\n const resolvedTranslationX = translationX !== null && translationX !== void 0 ? translationX : state.translationX;\n const resolvedTranslationY = translationY !== null && translationY !== void 0 ? translationY : state.translationY;\n const resolvedTranslationZ = translationZ !== null && translationZ !== void 0 ? translationZ : state.translationZ;\n const resolvedRotationX = rotationX !== null && rotationX !== void 0 ? rotationX : state.rotationX;\n const resolvedRotationY = rotationY !== null && rotationY !== void 0 ? rotationY : state.rotationY;\n const resolvedScale = scale !== null && scale !== void 0 ? scale : state.scale;\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n translationX: resolvedTranslationX,\n translationY: resolvedTranslationY,\n translationZ: resolvedTranslationZ,\n rotationX: resolvedRotationX,\n rotationY: resolvedRotationY,\n scale: resolvedScale\n });\n};\n\nconst setAnimatedTransform = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n animatedTransform: action.payload\n });\n};\n\nconst setTransformTime = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n transformTime: action.payload\n });\n};\n\nconst setSpaceLocation = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), action.payload);\n};\n\nconst viewCameraMoveForward = state => {\n const newState = getNewState(state);\n newState.translationZ = state.translationZ + pluridData.TRANSLATION_STEP * 6 * Math.cos(toRadians(-state.rotationY));\n newState.translationX = state.translationX + pluridData.TRANSLATION_STEP * 6 * Math.sin(toRadians(-state.rotationY));\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst viewCameraMoveBackward = state => {\n const newState = getNewState(state);\n newState.translationZ = state.translationZ - pluridData.TRANSLATION_STEP * 6 * Math.cos(toRadians(-state.rotationY));\n newState.translationX = state.translationX - pluridData.TRANSLATION_STEP * 6 * Math.sin(toRadians(-state.rotationY));\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst viewCameraMoveLeft = state => {\n const newState = getNewState(state);\n newState.translationX = state.translationX + pluridData.TRANSLATION_STEP * 3 * Math.cos(toRadians(state.rotationY));\n newState.translationZ = state.translationZ + pluridData.TRANSLATION_STEP * 3 * Math.sin(toRadians(state.rotationY));\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst viewCameraMoveRight = state => {\n const newState = getNewState(state);\n newState.translationX = state.translationX - pluridData.TRANSLATION_STEP * 3 * Math.cos(toRadians(state.rotationY));\n newState.translationZ = state.translationZ - pluridData.TRANSLATION_STEP * 3 * Math.sin(toRadians(state.rotationY));\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst viewCameraMoveUp = state => {\n const newState = getNewState(state);\n newState.translationY = state.translationY + pluridData.TRANSLATION_STEP * 3;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst viewCameraMoveDown = state => {\n const newState = getNewState(state);\n newState.translationY = state.translationY - pluridData.TRANSLATION_STEP * 3;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst viewCameraTurnUp = state => {\n const newState = getNewState(state);\n newState.rotationX = (state.rotationX + pluridData.ROTATION_STEP) % 360;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst viewCameraTurnDown = state => {\n const newState = getNewState(state);\n newState.rotationX = (state.rotationX - pluridData.ROTATION_STEP) % 360;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst viewCameraTurnLeft = state => {\n const newState = getNewState(state);\n newState.rotationY = (state.rotationY - pluridData.ROTATION_STEP) % 360;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst viewCameraTurnRight = state => {\n const newState = getNewState(state);\n newState.rotationY = (state.rotationY + pluridData.ROTATION_STEP) % 360;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst rotateUp = state => {\n const newState = getNewState(state);\n newState.rotationX = (state.rotationX + pluridData.ROTATION_STEP) % 360;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst rotateDown = state => {\n const newState = getNewState(state);\n newState.rotationX = (state.rotationX - pluridData.ROTATION_STEP) % 360;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst rotateX = (state, action) => {\n const newState = getNewState(state);\n newState.rotationX = action.payload;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst rotateXWith = (state, action) => {\n const newState = getNewState(state);\n newState.rotationX = state.rotationX + action.payload;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst rotateLeft = state => {\n const newState = getNewState(state);\n newState.rotationY = (state.rotationY + pluridData.ROTATION_STEP) % 360;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst rotateRight = state => {\n const newState = getNewState(state);\n newState.rotationY = (state.rotationY - pluridData.ROTATION_STEP) % 360;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst rotateY = (state, action) => {\n const newState = getNewState(state);\n newState.rotationY = action.payload;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst rotateYWith = (state, action) => {\n const newState = getNewState(state);\n newState.rotationY = state.rotationY + action.payload;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst translateUp = state => {\n const newState = getNewState(state);\n newState.translationY = state.translationY - pluridData.TRANSLATION_STEP;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst translateDown = state => {\n const newState = getNewState(state);\n newState.translationY = state.translationY + pluridData.TRANSLATION_STEP;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst translateLeft = state => {\n const newState = getNewState(state);\n newState.translationX = state.translationX - pluridData.TRANSLATION_STEP * Math.cos(toRadians(state.rotationY));\n newState.translationZ = state.translationZ - pluridData.TRANSLATION_STEP * Math.sin(toRadians(state.rotationY));\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst translateRight = state => {\n const newState = getNewState(state);\n newState.translationX = state.translationX + pluridData.TRANSLATION_STEP * Math.cos(toRadians(state.rotationY));\n newState.translationZ = state.translationZ + pluridData.TRANSLATION_STEP * Math.sin(toRadians(state.rotationY));\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst translateIn = state => {\n const newState = getNewState(state);\n newState.translationZ = state.translationZ - pluridData.TRANSLATION_STEP * 3 * Math.cos(toRadians(-state.rotationY));\n newState.translationX = state.translationX - pluridData.TRANSLATION_STEP * 3 * Math.sin(toRadians(-state.rotationY));\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst translateOut = state => {\n const newState = getNewState(state);\n newState.translationZ = state.translationZ + pluridData.TRANSLATION_STEP * 3 * Math.cos(toRadians(-state.rotationY));\n newState.translationX = state.translationX + pluridData.TRANSLATION_STEP * 3 * Math.sin(toRadians(-state.rotationY));\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst translateXWith = (state, action) => {\n const newState = getNewState(state);\n newState.translationX = state.translationX + action.payload * Math.cos(toRadians(state.rotationY));\n newState.translationZ = state.translationZ + action.payload * Math.sin(toRadians(state.rotationY));\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst translateYWith = (state, action) => {\n const newState = getNewState(state);\n newState.translationY = state.translationY + action.payload;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst scaleUp = state => {\n const computedScale = state.scale + pluridData.SCALE_STEP;\n const scale = computedScale < pluridData.SCALE_UPPER_LIMIT ? computedScale : pluridData.SCALE_UPPER_LIMIT;\n const newState = getNewState(state);\n newState.scale = scale;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst scaleDown = state => {\n const computedScale = state.scale - pluridData.SCALE_STEP;\n const scale = computedScale > pluridData.SCALE_LOWER_LIMIT ? computedScale : pluridData.SCALE_LOWER_LIMIT;\n const newState = getNewState(state);\n newState.scale = scale;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst scaleUpWith = (state, action) => {\n const computedScale = state.scale + Math.abs(action.payload);\n const scale = computedScale < pluridData.SCALE_UPPER_LIMIT ? computedScale : pluridData.SCALE_UPPER_LIMIT;\n const newState = getNewState(state);\n newState.scale = scale;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst scaleDownWith = (state, action) => {\n const computedScale = state.scale - Math.abs(action.payload);\n const scale = computedScale > pluridData.SCALE_LOWER_LIMIT ? computedScale : pluridData.SCALE_LOWER_LIMIT;\n const newState = getNewState(state);\n newState.scale = scale;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst setInitialTree = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n initialTree: [ ...action.payload ]\n });\n};\n\nconst setTree = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n tree: [ ...action.payload ]\n });\n};\n\nconst setActiveUniverse = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n activeUniverseID: action.payload\n });\n};\n\nconst spaceResetTransform = state => {\n const newState = getNewState(state);\n newState.scale = 1;\n newState.rotationX = 0;\n newState.rotationY = 0;\n newState.translationX = 0;\n newState.translationY = 0;\n newState.translationZ = 0;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst setViewSize = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n viewSize: Object.assign({}, action.payload)\n });\n};\n\nconst setSpaceSize = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n spaceSize: Object.assign({}, action.payload)\n });\n};\n\nconst updateSpaceTreePlane = (state, action) => {\n const newState = getNewState(state);\n const updatedTree = pluridEngine.general.tree.updateTreePlane(newState.tree, action.payload);\n return Object.assign(Object.assign({}, newState), {\n tree: updatedTree\n });\n};\n\nconst updateSpaceLinkCoordinates = (state, action) => {\n const {planeID: planeID, linkCoordinates: linkCoordinates} = action.payload;\n const newState = getNewState(state);\n const updatedTree = pluridEngine.general.tree.updateTreeByPlaneIDWithLinkCoordinates(newState.tree, planeID, linkCoordinates);\n return Object.assign(Object.assign({}, newState), {\n tree: updatedTree\n });\n};\n\nconst spaceSetView = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n view: action.payload\n });\n};\n\nconst spaceSetCulledView = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n culledView: action.payload\n });\n};\n\nvar index$9 = Object.freeze({\n __proto__: null,\n setSpaceField: setSpaceField,\n setSpaceLoading: setSpaceLoading,\n setTransform: setTransform,\n setAnimatedTransform: setAnimatedTransform,\n setTransformTime: setTransformTime,\n setSpaceLocation: setSpaceLocation,\n viewCameraMoveForward: viewCameraMoveForward,\n viewCameraMoveBackward: viewCameraMoveBackward,\n viewCameraMoveLeft: viewCameraMoveLeft,\n viewCameraMoveRight: viewCameraMoveRight,\n viewCameraMoveUp: viewCameraMoveUp,\n viewCameraMoveDown: viewCameraMoveDown,\n viewCameraTurnUp: viewCameraTurnUp,\n viewCameraTurnDown: viewCameraTurnDown,\n viewCameraTurnLeft: viewCameraTurnLeft,\n viewCameraTurnRight: viewCameraTurnRight,\n rotateUp: rotateUp,\n rotateDown: rotateDown,\n rotateX: rotateX,\n rotateXWith: rotateXWith,\n rotateLeft: rotateLeft,\n rotateRight: rotateRight,\n rotateY: rotateY,\n rotateYWith: rotateYWith,\n translateUp: translateUp,\n translateDown: translateDown,\n translateLeft: translateLeft,\n translateRight: translateRight,\n translateIn: translateIn,\n translateOut: translateOut,\n translateXWith: translateXWith,\n translateYWith: translateYWith,\n scaleUp: scaleUp,\n scaleDown: scaleDown,\n scaleUpWith: scaleUpWith,\n scaleDownWith: scaleDownWith,\n setInitialTree: setInitialTree,\n setTree: setTree,\n setActiveUniverse: setActiveUniverse,\n spaceResetTransform: spaceResetTransform,\n setViewSize: setViewSize,\n setSpaceSize: setSpaceSize,\n updateSpaceTreePlane: updateSpaceTreePlane,\n updateSpaceLinkCoordinates: updateSpaceLinkCoordinates,\n spaceSetView: spaceSetView,\n spaceSetCulledView: spaceSetCulledView\n});\n\nconst reducer$2 = (state = initialState$2, action) => {\n switch (action.type) {\n case SET_STATE:\n return Object.assign(Object.assign({}, state), action.payload.space);\n\n case SET_SPACE_FIELD:\n return setSpaceField(state, action);\n\n case SET_SPACE_LOADING:\n return setSpaceLoading(state, action);\n\n case SET_TRANSFORM:\n return setTransform(state, action);\n\n case SET_ANIMATED_TRANSFORM:\n return setAnimatedTransform(state, action);\n\n case SET_TRANSFORM_TIME:\n return setTransformTime(state, action);\n\n case SET_SPACE_LOCATION:\n return setSpaceLocation(state, action);\n\n case VIEW_CAMERA_MOVE_FORWARD:\n return viewCameraMoveForward(state);\n\n case VIEW_CAMERA_MOVE_BACKWARD:\n return viewCameraMoveBackward(state);\n\n case VIEW_CAMERA_MOVE_LEFT:\n return viewCameraMoveLeft(state);\n\n case VIEW_CAMERA_MOVE_RIGHT:\n return viewCameraMoveRight(state);\n\n case VIEW_CAMERA_MOVE_UP:\n return viewCameraMoveUp(state);\n\n case VIEW_CAMERA_MOVE_DOWN:\n return viewCameraMoveDown(state);\n\n case VIEW_CAMERA_TURN_UP:\n return viewCameraTurnUp(state);\n\n case VIEW_CAMERA_TURN_DOWN:\n return viewCameraTurnDown(state);\n\n case VIEW_CAMERA_TURN_LEFT:\n return viewCameraTurnLeft(state);\n\n case VIEW_CAMERA_TURN_RIGHT:\n return viewCameraTurnRight(state);\n\n case ROTATE_UP:\n return rotateUp(state);\n\n case ROTATE_DOWN:\n return rotateDown(state);\n\n case ROTATE_X:\n return rotateX(state, action);\n\n case ROTATE_X_WITH:\n return rotateXWith(state, action);\n\n case ROTATE_LEFT:\n return rotateLeft(state);\n\n case ROTATE_RIGHT:\n return rotateRight(state);\n\n case ROTATE_Y:\n return rotateY(state, action);\n\n case ROTATE_Y_WITH:\n return rotateYWith(state, action);\n\n case TRANSLATE_UP:\n return translateUp(state);\n\n case TRANSLATE_DOWN:\n return translateDown(state);\n\n case TRANSLATE_LEFT:\n return translateLeft(state);\n\n case TRANSLATE_RIGHT:\n return translateRight(state);\n\n case TRANSLATE_IN:\n return translateIn(state);\n\n case TRANSLATE_OUT:\n return translateOut(state);\n\n case TRANSLATE_X_WITH:\n return translateXWith(state, action);\n\n case TRANSLATE_Y_WITH:\n return translateYWith(state, action);\n\n case SCALE_UP:\n return scaleUp(state);\n\n case SCALE_DOWN:\n return scaleDown(state);\n\n case SCALE_UP_WITH:\n return scaleUpWith(state, action);\n\n case SCALE_DOWN_WITH:\n return scaleDownWith(state, action);\n\n case SET_INITIAL_TREE:\n return setInitialTree(state, action);\n\n case SET_TREE:\n return setTree(state, action);\n\n case SET_ACTIVE_UNIVERSE:\n return setActiveUniverse(state, action);\n\n case SPACE_RESET_TRANSFORM:\n return spaceResetTransform(state);\n\n case SET_VIEW_SIZE:\n return setViewSize(state, action);\n\n case SET_SPACE_SIZE:\n return setSpaceSize(state, action);\n\n case UPDATE_SPACE_TREE_PLANE:\n return updateSpaceTreePlane(state, action);\n\n case UPDATE_SPACE_LINK_COORDINATES:\n return updateSpaceLinkCoordinates(state, action);\n\n case SPACE_SET_VIEW:\n return spaceSetView(state, action);\n\n case SPACE_SET_CULLED_VIEW:\n return spaceSetCulledView(state, action);\n\n default:\n return Object.assign({}, state);\n }\n};\n\nconst getLoading = state => state.space.loading;\n\nconst getTransformMatrix = state => state.space.transform;\n\nconst getAnimatedTransform = state => state.space.animatedTransform;\n\nconst getTransformTime = state => state.space.transformTime;\n\nconst getRotationX = state => state.space.rotationX;\n\nconst getRotationY = state => state.space.rotationY;\n\nconst getTranslationX = state => state.space.translationX;\n\nconst getTranslationY = state => state.space.translationY;\n\nconst getTranslationZ = state => state.space.translationZ;\n\nconst getScale = state => state.space.scale;\n\nconst getInitialTree = state => state.space.initialTree;\n\nconst getTree = state => state.space.tree;\n\nconst getTransform = state => ({\n rotationX: state.space.rotationX,\n rotationY: state.space.rotationY,\n translationX: state.space.translationX,\n translationY: state.space.translationY,\n translationZ: state.space.translationZ,\n scale: state.space.scale\n});\n\nconst getActiveUniverseID = state => state.space.activeUniverseID;\n\nconst getView = state => state.space.view;\n\nconst getViewSize = state => state.space.viewSize;\n\nconst getCulledView = state => state.space.culledView;\n\nvar index$8 = {\n getLoading: getLoading,\n getTransformMatrix: getTransformMatrix,\n getAnimatedTransform: getAnimatedTransform,\n getTransformTime: getTransformTime,\n getRotationX: getRotationX,\n getRotationY: getRotationY,\n getTranslationX: getTranslationX,\n getTranslationY: getTranslationY,\n getTranslationZ: getTranslationZ,\n getScale: getScale,\n getTransform: getTransform,\n getInitialTree: getInitialTree,\n getTree: getTree,\n getActiveUniverseID: getActiveUniverseID,\n getView: getView,\n getViewSize: getViewSize,\n getCulledView: getCulledView\n};\n\nvar space = Object.freeze({\n __proto__: null,\n actions: index$a,\n initialState: initialState$2,\n reducer: reducer$2,\n resolvers: index$9,\n selectors: index$8,\n Types: index$b\n});\n\nconst THEMES_SET_GENERAL_THEME = \"THEMES_SET_GENERAL_THEME\";\n\nconst THEMES_SET_INTERACTION_THEME = \"THEMES_SET_INTERACTION_THEME\";\n\nvar index$7 = Object.freeze({\n __proto__: null,\n THEMES_SET_GENERAL_THEME: THEMES_SET_GENERAL_THEME,\n THEMES_SET_INTERACTION_THEME: THEMES_SET_INTERACTION_THEME\n});\n\nconst setGeneralTheme$1 = theme => ({\n type: THEMES_SET_GENERAL_THEME,\n payload: theme\n});\n\nconst setInteractionTheme$1 = theme => ({\n type: THEMES_SET_INTERACTION_THEME,\n payload: theme\n});\n\nvar index$6 = Object.freeze({\n __proto__: null,\n setGeneralTheme: setGeneralTheme$1,\n setInteractionTheme: setInteractionTheme$1\n});\n\nconst initialState$1 = {\n general: themes$1.plurid,\n interaction: themes$1.plurid\n};\n\nconst setGeneralTheme = (state, action) => Object.assign(Object.assign({}, state), {\n general: Object.assign({}, action.payload)\n});\n\nconst setInteractionTheme = (state, action) => Object.assign(Object.assign({}, state), {\n interaction: Object.assign({}, action.payload)\n});\n\nvar index$5 = Object.freeze({\n __proto__: null,\n setGeneralTheme: setGeneralTheme,\n setInteractionTheme: setInteractionTheme\n});\n\nconst reducer$1 = (state = initialState$1, action) => {\n switch (action.type) {\n case SET_STATE:\n return Object.assign(Object.assign({}, state), action.payload.themes);\n\n case THEMES_SET_GENERAL_THEME:\n return setGeneralTheme(state, action);\n\n case THEMES_SET_INTERACTION_THEME:\n return setInteractionTheme(state, action);\n\n default:\n return Object.assign({}, state);\n }\n};\n\nconst getGeneralTheme = state => state.themes.general;\n\nconst getInteractionTheme = state => state.themes.interaction;\n\nvar index$4 = {\n getGeneralTheme: getGeneralTheme,\n getInteractionTheme: getInteractionTheme\n};\n\nvar themes = Object.freeze({\n __proto__: null,\n actions: index$6,\n initialState: initialState$1,\n reducer: reducer$1,\n resolvers: index$5,\n selectors: index$4,\n Types: index$7\n});\n\nconst SET_UI_TOOLBAR_SCROLL_POSITION = \"SET_UI_TOOLBAR_SCROLL_POSITION\";\n\nvar index$3 = Object.freeze({\n __proto__: null,\n SET_UI_TOOLBAR_SCROLL_POSITION: SET_UI_TOOLBAR_SCROLL_POSITION\n});\n\nconst setUIToolbarScrollPosition$1 = value => ({\n type: SET_UI_TOOLBAR_SCROLL_POSITION,\n payload: value\n});\n\nvar index$2 = Object.freeze({\n __proto__: null,\n setUIToolbarScrollPosition: setUIToolbarScrollPosition$1\n});\n\nconst initialState = {\n toolbarScrollPosition: 0\n};\n\nconst setUIToolbarScrollPosition = (state, action) => Object.assign(Object.assign({}, state), {\n toolbarScrollPosition: action.payload\n});\n\nvar index$1 = Object.freeze({\n __proto__: null,\n setUIToolbarScrollPosition: setUIToolbarScrollPosition\n});\n\nconst reducer = (state = initialState, action) => {\n switch (action.type) {\n case SET_STATE:\n return Object.assign(Object.assign({}, state), action.payload.ui);\n\n case SET_UI_TOOLBAR_SCROLL_POSITION:\n return setUIToolbarScrollPosition(state, action);\n\n default:\n return Object.assign({}, state);\n }\n};\n\nconst getToolbarScrollPosition = state => state.ui.toolbarScrollPosition;\n\nvar index = {\n getToolbarScrollPosition: getToolbarScrollPosition\n};\n\nvar ui = Object.freeze({\n __proto__: null,\n actions: index$2,\n initialState: initialState,\n reducer: reducer,\n resolvers: index$1,\n selectors: index,\n Types: index$3\n});\n\nvar modules = {\n configuration: configuration,\n general: general,\n shortcuts: shortcuts,\n space: space,\n themes: themes,\n ui: ui\n};\n\nconst rootReducer = redux.combineReducers({\n configuration: modules.configuration.reducer,\n general: modules.general.reducer,\n shortcuts: modules.shortcuts.reducer,\n space: modules.space.reducer,\n themes: modules.themes.reducer,\n ui: modules.ui.reducer\n});\n\nconst store$1 = preloadedState => redux.createStore(rootReducer, preloadedState, redux.applyMiddleware(thunk__default[\"default\"]));\n\nconst store = store$1;\n\nconst StateContext = React__default[\"default\"].createContext({});\n\nfunction __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P((function(resolve) {\n resolve(value);\n }));\n }\n return new (P || (P = Promise))((function(resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n }));\n}\n\nconst Context = React__default[\"default\"].createContext(null);\n\nvar actions = {\n configuration: modules.configuration.actions,\n general: modules.general.actions,\n shortcuts: modules.shortcuts.actions,\n space: modules.space.actions,\n themes: modules.themes.actions,\n ui: modules.ui.actions\n};\n\nconst {direction: directionLogic} = pluridEngine.interaction;\n\nconst handleGlobalShortcuts = (dispatch, event, firstPerson, locks) => {\n if (event.defaultPrevented) {\n return;\n }\n const inputOnPath = pluridFunctions.dom.verifyPathInputElement(event.path);\n if (inputOnPath) {\n return;\n }\n const noModifiers = !event.shiftKey && !event.altKey && !event.ctrlKey && !event.metaKey;\n if (event.code === \"KeyF\" && noModifiers) {\n return dispatch(actions.configuration.toggleConfigurationSpaceFirstPerson());\n }\n if (firstPerson) {\n if (event.code === \"KeyW\" && noModifiers && locks.translationZ) {\n return dispatch(actions.space.viewCameraMoveForward());\n }\n if (event.code === \"KeyS\" && noModifiers && locks.translationZ) {\n return dispatch(actions.space.viewCameraMoveBackward());\n }\n if (event.code === \"KeyA\" && noModifiers && locks.translationX) {\n return dispatch(actions.space.viewCameraMoveLeft());\n }\n if (event.code === \"KeyA\" && event.shiftKey && locks.rotationY) {\n return dispatch(actions.space.viewCameraTurnLeft());\n }\n if (event.code === \"KeyD\" && noModifiers && locks.translationX) {\n return dispatch(actions.space.viewCameraMoveRight());\n }\n if (event.code === \"KeyD\" && event.shiftKey && locks.rotationY) {\n return dispatch(actions.space.viewCameraTurnRight());\n }\n if (event.code === \"KeyQ\" && noModifiers && locks.rotationX) {\n return dispatch(actions.space.viewCameraTurnUp());\n }\n if (event.code === \"KeyZ\" && noModifiers && locks.rotationX) {\n return dispatch(actions.space.viewCameraTurnDown());\n }\n if (event.code === \"KeyE\" && noModifiers && locks.translationY) {\n return dispatch(actions.space.viewCameraMoveUp());\n }\n if (event.code === \"KeyC\" && noModifiers && locks.translationY) {\n return dispatch(actions.space.viewCameraMoveDown());\n }\n }\n if (event.code === \"KeyR\" && noModifiers) {\n return dispatch(actions.configuration.setConfigurationSpaceTransformMode(pluridData.TRANSFORM_MODES.ROTATION));\n }\n if (event.code === \"KeyT\" && noModifiers) {\n return dispatch(actions.configuration.setConfigurationSpaceTransformMode(pluridData.TRANSFORM_MODES.TRANSLATION));\n }\n if (event.code === \"KeyS\" && noModifiers && !firstPerson) {\n return dispatch(actions.configuration.setConfigurationSpaceTransformMode(pluridData.TRANSFORM_MODES.SCALE));\n }\n if (event.key === \"ArrowRight\") {\n if (event.shiftKey && locks.rotationY) {\n return dispatch(actions.space.rotateLeft());\n }\n if (event.altKey && locks.translationX) {\n return dispatch(actions.space.translateRight());\n }\n }\n if (event.key === \"ArrowLeft\") {\n if (event.shiftKey && locks.rotationY) {\n return dispatch(actions.space.rotateRight());\n }\n if (event.altKey && locks.translationX) {\n return dispatch(actions.space.translateLeft());\n }\n }\n if (event.key === \"ArrowUp\") {\n if (event.shiftKey && event.altKey && locks.translationZ) {\n return dispatch(actions.space.translateIn());\n }\n if (event.shiftKey && !event.altKey && locks.rotationX) {\n return dispatch(actions.space.rotateUp());\n }\n if (event.altKey && !event.shiftKey && locks.translationY) {\n return dispatch(actions.space.translateUp());\n }\n if (event.metaKey || event.ctrlKey && locks.scale) {\n return dispatch(actions.space.scaleUp());\n }\n }\n if (event.key === \"ArrowDown\") {\n if (event.shiftKey && event.altKey && locks.translationZ) {\n return dispatch(actions.space.translateOut());\n }\n if (event.shiftKey && !event.altKey && locks.rotationX) {\n return dispatch(actions.space.rotateDown());\n }\n if (event.altKey && !event.shiftKey && locks.translationY) {\n return dispatch(actions.space.translateDown());\n }\n if (event.metaKey || event.ctrlKey && locks.scale) {\n return dispatch(actions.space.scaleDown());\n }\n }\n return;\n};\n\nconst handleGlobalWheel = (dispatch, event, modes, locks) => {\n if (event.shiftKey || event.metaKey || event.altKey || event.ctrlKey || modes.rotation || modes.translation || modes.scale) {\n event.preventDefault();\n }\n const deltas = {\n deltaX: event.deltaX,\n deltaY: event.deltaY\n };\n const direction = directionLogic.getWheelDirection(deltas);\n if (modes.rotation) {\n if (direction === \"left\" && locks.rotationY) {\n dispatch(actions.space.rotateLeft());\n }\n if (direction === \"right\" && locks.rotationY) {\n dispatch(actions.space.rotateRight());\n }\n if (direction === \"up\" && locks.rotationX) {\n dispatch(actions.space.rotateUp());\n }\n if (direction === \"down\" && locks.rotationX) {\n dispatch(actions.space.rotateDown());\n }\n }\n if (event.shiftKey && !event.altKey) {\n if (direction === \"up\" && locks.rotationX) {\n dispatch(actions.space.rotateUp());\n }\n if (direction === \"down\" && locks.rotationX) {\n dispatch(actions.space.rotateDown());\n }\n if (direction === \"left\" && locks.rotationY) {\n dispatch(actions.space.rotateLeft());\n }\n if (direction === \"right\" && locks.rotationY) {\n dispatch(actions.space.rotateRight());\n }\n }\n if (modes.translation) {\n if (direction === \"up\" && locks.translationY) {\n dispatch(actions.space.translateDown());\n }\n if (direction === \"down\" && locks.translationY) {\n dispatch(actions.space.translateUp());\n }\n if (direction === \"left\" && locks.translationX) {\n dispatch(actions.space.translateRight());\n }\n if (direction === \"right\" && locks.translationX) {\n dispatch(actions.space.translateLeft());\n }\n }\n if (event.altKey && event.shiftKey) {\n if (direction === \"up\" && locks.translationZ) {\n dispatch(actions.space.translateIn());\n }\n if (direction === \"down\" && locks.translationZ) {\n dispatch(actions.space.translateOut());\n }\n }\n if (event.altKey && !event.shiftKey) {\n if (direction === \"up\" && locks.translationY) {\n dispatch(actions.space.translateDown());\n }\n if (direction === \"down\" && locks.translationY) {\n dispatch(actions.space.translateUp());\n }\n if (direction === \"left\" && locks.translationX) {\n dispatch(actions.space.translateRight());\n }\n if (direction === \"right\" && locks.translationX) {\n dispatch(actions.space.translateLeft());\n }\n }\n if (modes.scale) {\n if (direction === \"down\" && locks.scale) {\n dispatch(actions.space.scaleUp());\n }\n if (direction === \"up\" && locks.scale) {\n dispatch(actions.space.scaleDown());\n }\n }\n if (event.metaKey || event.ctrlKey) {\n if (direction === \"down\" && locks.scale) {\n dispatch(actions.space.scaleUp());\n }\n if (direction === \"up\" && locks.scale) {\n dispatch(actions.space.scaleDown());\n }\n }\n};\n\nconst loadHammer = () => __awaiter(void 0, void 0, void 0, (function*() {\n const hammer = yield Promise.resolve().then((function() {\n return _interopNamespace(require(\"hammerjs\"));\n }));\n return hammer;\n}));\n\nvar selectors = {\n configuration: modules.configuration.selectors,\n general: modules.general.selectors,\n shortcuts: modules.shortcuts.selectors,\n space: modules.space.selectors,\n themes: modules.themes.selectors,\n ui: modules.ui.selectors\n};\n\nfunction styleInject(css, ref) {\n if (ref === void 0) ref = {};\n var insertAt = ref.insertAt;\n if (!css || typeof document === \"undefined\") {\n return;\n }\n var head = document.head || document.getElementsByTagName(\"head\")[0];\n var style = document.createElement(\"style\");\n style.type = \"text/css\";\n if (insertAt === \"top\") {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css_248z = \"@import url('https://fonts.googleapis.com/css?family=Ubuntu&display=swap');\\n\";\n\nstyleInject(css_248z);\n\nconst GlobalStyle = styled.createGlobalStyle`\n *,\n *:after,\n *:before {\n box-sizing: border-box;\n font-kerning: auto;\n text-rendering: optimizeLegibility;\n }\n\n html, body {\n margin: 0;\n height: 100%;\n width: 100%;\n }\n\n html {\n overflow: hidden;\n background: black;\n color: white;\n font-family: Ubuntu, -apple-system, BlinkMacSystemFont, Roboto,\n 'Open Sans', 'Helvetica Neue', 'Lucida Sans', sans-serif;\n\n /*\n * HACK\n * Prevents Chrome from going backward/forward in page history on wheel event.\n *\n * TODO\n * Apply it dinamically.\n */\n overscroll-behavior-x: contain;\n }\n`;\n\nconst StyledView = styled__default[\"default\"].div`\n height: 100%;\n min-height: ${props => {\n if (props.fullHeight) {\n return \"100vh\";\n }\n return \"100%\";\n}};\n min-height: ${props => {\n if (props.fullHeight) {\n return \"-webkit-fill-available\";\n }\n return \"100%\";\n}};\n\n width: 100%;\n position: relative;\n scroll-snap-align: start;\n outline: none;\n overflow: hidden;\n\n cursor: ${props => {\n if (props.transformMode === pluridData.TRANSFORM_MODES.TRANSLATION || props.transformMode === pluridData.TRANSFORM_MODES.ROTATION) {\n return \"all-scroll\";\n }\n if (props.transformMode === pluridData.TRANSFORM_MODES.SCALE) {\n return \"ns-resize\";\n }\n return \"initial\";\n}};\n user-select: ${props => {\n if (props.transformMode !== \"ALL\") {\n return \"none\";\n }\n return \"initial !important\";\n}};\n touch-action: ${props => {\n if (props.transformMode !== \"ALL\") {\n return \"none !important\";\n }\n return \"initial !important\";\n}};\n -webkit-user-drag: ${props => {\n if (props.transformMode !== \"ALL\") {\n return \"none\";\n }\n return \"initial !important\";\n}};\n -webkit-tap-highlight-color: ${props => {\n if (props.transformMode !== \"ALL\") {\n return \"rgba(0, 0, 0, 0)\";\n }\n return \"initial !important\";\n}};\n`;\n\nstyled__default[\"default\"].div`\n outline: none;\n background: ${props => {\n if (props.opaque) {\n const foregroundGradient = props.theme.type === \"dark\" ? props.theme.backgroundColorTertiary : props.theme.backgroundColorPrimary;\n const backgroundGradient = props.theme.type === \"dark\" ? props.theme.backgroundColorPrimary : props.theme.backgroundColorTertiary;\n return `radial-gradient(\\n ellipse at center,\\n ${foregroundGradient} 0%,\\n ${backgroundGradient} 100%)\\n `;\n }\n return \"transparent\";\n}};\n`;\n\nclass ErrorBoundary extends React__default[\"default\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n hasError: false\n };\n }\n static getDerivedStateFromError(error) {\n return {\n hasError: true\n };\n }\n componentDidCatch(error, errorInfo) {}\n render() {\n if (this.state.hasError) {\n if (this.props.renderError) {\n return this.props.renderError;\n }\n return React__default[\"default\"].createElement(\"h1\", null, \"Something went wrong.\");\n }\n return this.props.children;\n }\n}\n\nconst StyledPluridPlane = styled__default[\"default\"].div`\n background-color: ${({transparentUI: transparentUI, mouseOver: mouseOver, theme: theme, planeOpacity: planeOpacity}) => {\n if (transparentUI && !mouseOver) {\n return theme.backgroundColorPrimaryAlpha;\n }\n if (planeOpacity !== 1) {\n const decomposedColor = themes$1.decomposeColor(theme.backgroundColorPrimary);\n if (decomposedColor) {\n const color = `hsla(${decomposedColor.hue}, ${decomposedColor.saturation}%, ${decomposedColor.lightness}%, ${planeOpacity})`;\n return color;\n }\n return \"transparent\";\n }\n return theme.backgroundColorPrimary;\n}};\n box-shadow: ${({planeOpacity: planeOpacity, theme: theme}) => {\n if (planeOpacity === 0) {\n return \"none\";\n }\n return theme.boxShadowUmbra;\n}};\n color: ${({theme: theme}) => theme.colorPrimary};\n opacity: ${({show: show}) => {\n if (!show) {\n return \"0\";\n }\n return \"1\";\n}};\n user-select: ${({show: show}) => {\n if (!show) {\n return \"none\";\n }\n return \"auto\";\n}};\n\n position: absolute;\n height: auto;\n width: 100%;\n font-size: 0.9rem;\n font-family: ${({theme: theme}) => theme.fontFamilySansSerif};\n transition: background-color 300ms linear;\n\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: ${({planeControls: planeControls}) => {\n if (planeControls) {\n return \"56px auto\";\n }\n return \"auto\";\n}};\n\n transform-origin: 0 0 0;\n`;\n\nconst StyledPluridPlaneBridge = styled__default[\"default\"].div`\n background-color: ${({planeOpacity: planeOpacity, planeControls: planeControls, theme: theme}) => {\n if (planeOpacity === 0) {\n return \"transparent\";\n }\n if (!planeControls) {\n return theme.backgroundColorPrimary;\n }\n return theme.backgroundColorDark;\n}};\n\n position: absolute;\n top: 0;\n left: -100px;\n height: 30px;\n width: 100px;\n opacity: 0.5;\n`;\n\nconst PluridPlaneBridge = properties => {\n const {stateGeneralTheme: stateGeneralTheme, stateConfiguration: stateConfiguration} = properties;\n const {controls: controls, opacity: opacity} = stateConfiguration.elements.plane;\n return React__default[\"default\"].createElement(StyledPluridPlaneBridge, {\n theme: stateGeneralTheme,\n planeControls: controls.show,\n planeOpacity: opacity,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE_BRIDGE\n });\n};\n\nconst mapStateToProperties$i = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProperties$i = dispatch => ({});\n\nconst ConnectedPluridPlaneBridge = reactRedux.connect(mapStateToProperties$i, mapDispatchToProperties$i, null, {\n context: StateContext\n})(PluridPlaneBridge);\n\nconst StyledPluridPlaneControls = styled__default[\"default\"].div`\n background-color: ${({transparentUI: transparentUI, mouseOver: mouseOver, theme: theme}) => {\n if (transparentUI && !mouseOver) {\n return \"transparent\";\n }\n return theme.backgroundColorDark;\n}};\n box-shadow: ${({theme: theme}) => theme.boxShadowUmbraInset};\n\n width: 100%;\n display: grid;\n align-items: center;\n justify-content: center;\n grid-template-rows: 1fr;\n grid-template-columns: 1fr 2fr 1fr;\n transition: background-color 300ms linear;\n\n @media (max-width: 800px) {\n grid-template-columns: 1fr 3fr 1fr;\n }\n`;\n\nconst StyledPluridPlaneControlsLeft = styled__default[\"default\"].div`\n`;\n\nconst StyledPluridPlaneControlsCenter = styled__default[\"default\"].div`\n width: 100%;\n height: 38px;\n position: relative;\n`;\n\nconst StyledPluridPlaneControlsRight = styled__default[\"default\"].div`\n display: grid;\n grid-template-columns: repeat(4, 30px);\n padding: 0 1rem;\n`;\n\nconst {inputs: {Textline: PluridTextline}} = pluridUiComponentsReact.universal;\n\nconst PluridPlaneControls = properties => {\n const {plane: plane, treePlane: treePlane, mouseOver: mouseOver, configuration: configuration, generalTheme: generalTheme, interactionTheme: interactionTheme} = properties;\n const {global: global, elements: elements} = configuration;\n const {transparentUI: transparentUI} = global;\n const {pathbar: pathbar} = elements.plane.controls;\n const {route: route, routeDivisions: routeDivisions} = treePlane;\n const {protocol: protocol, host: host} = routeDivisions;\n const gateway = \"gateway\";\n `${protocol}://${host.value}/${gateway}?plurid=` + encodeURIComponent(route);\n const [path, setPath] = React.useState(treePlane.route);\n React.useState(false);\n const [showSearch, setShowSearch] = React.useState(false);\n const onPathInput = event => {\n setPath(event.target.value);\n if (pathbar.onChange) {\n const id = plane.route.absolute;\n pathbar.onChange(event, id);\n }\n };\n const handleOnKeyDown = event => {\n if (!showSearch) {\n setShowSearch(true);\n }\n if (event.key === \"Escape\") {\n setShowSearch(false);\n }\n if (pathbar.onKeyDown) {\n const id = plane.route.absolute;\n pathbar.onKeyDown(event, id);\n }\n };\n return React__default[\"default\"].createElement(StyledPluridPlaneControls, {\n theme: generalTheme,\n mouseOver: mouseOver,\n transparentUI: transparentUI,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE_CONTROLS\n }, React__default[\"default\"].createElement(StyledPluridPlaneControlsLeft, null), React__default[\"default\"].createElement(StyledPluridPlaneControlsCenter, null, React__default[\"default\"].createElement(PluridTextline, {\n theme: interactionTheme,\n text: path,\n atChange: onPathInput,\n atKeyDown: handleOnKeyDown,\n ariaLabel: \"Plurid Pathbar\"\n })), React__default[\"default\"].createElement(StyledPluridPlaneControlsRight, null));\n};\n\nconst mapStateToProps$g = state => ({\n configuration: selectors.configuration.getConfiguration(state),\n generalTheme: selectors.themes.getGeneralTheme(state),\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$g = dispatch => ({});\n\nconst ConnectedPluridPlaneControls = reactRedux.connect(mapStateToProps$g, mapDispatchToProps$g, null, {\n context: StateContext\n})(PluridPlaneControls);\n\nconst StyledPluridPlaneContent = styled__default[\"default\"].div`\n position: relative;\n`;\n\nconst PluridPlaneContent = properties => {\n const {children: children} = properties;\n const planeContentElement = React.useRef(null);\n return React__default[\"default\"].createElement(StyledPluridPlaneContent, {\n ref: planeContentElement,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE_CONTENT\n }, children);\n};\n\nconst PluridPlane = properties => {\n const {planeID: planeID, plane: plane, treePlane: treePlane, children: children, stateViewSize: stateViewSize, stateGeneralTheme: stateGeneralTheme, stateConfiguration: stateConfiguration, dispatchUpdateSpaceTreePlane: dispatchUpdateSpaceTreePlane} = properties;\n const {global: global, elements: elements} = stateConfiguration;\n const {transparentUI: transparentUI} = global;\n const {controls: controls, width: planeWidth, opacity: planeOpacity} = elements.plane;\n const showPlaneControls = controls.show;\n pluridFunctions.mathematics.numbers.checkIntegerNonUnit(planeWidth) ? planeWidth : planeWidth * stateViewSize.width;\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {planeRenderError: planeRenderError} = context;\n const [mouseOver, setMouseOver] = React.useState(false);\n const planeContentProperties = {};\n return React__default[\"default\"].createElement(StyledPluridPlane, {\n suppressHydrationWarning: true,\n theme: stateGeneralTheme,\n planeControls: showPlaneControls,\n planeOpacity: planeOpacity,\n show: treePlane.show,\n id: planeID,\n style: {\n width: \"100%\",\n transform: pluridEngine.cleanTemplate(`\\n translateX(${treePlane.location.translateX}px)\\n translateY(${treePlane.location.translateY}px)\\n translateZ(${treePlane.location.translateZ}px)\\n rotateX(${treePlane.location.rotateX}deg)\\n rotateY(${treePlane.location.rotateY}deg)\\n `)\n },\n onMouseEnter: () => setMouseOver(true),\n onMouseLeave: () => setMouseOver(false),\n transparentUI: transparentUI,\n mouseOver: mouseOver,\n \"data-plurid-plane\": planeID,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE\n }, treePlane.show && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, treePlane.parentPlaneID && React__default[\"default\"].createElement(ConnectedPluridPlaneBridge, null), showPlaneControls && React__default[\"default\"].createElement(ConnectedPluridPlaneControls, {\n plane: plane,\n treePlane: treePlane,\n mouseOver: mouseOver\n }), planeRenderError ? React__default[\"default\"].createElement(ErrorBoundary, {\n renderError: typeof planeRenderError !== \"boolean\" ? planeRenderError : undefined\n }, React__default[\"default\"].createElement(PluridPlaneContent, Object.assign({}, planeContentProperties), children)) : React__default[\"default\"].createElement(PluridPlaneContent, Object.assign({}, planeContentProperties), children)));\n};\n\nconst mapStateToProps$f = state => ({\n stateViewSize: selectors.space.getViewSize(state),\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$f = dispatch => ({\n dispatchUpdateSpaceTreePlane: treePlane => dispatch(actions.space.updateSpaceTreePlane(treePlane))\n});\n\nconst ConnectedPluridPlane = reactRedux.connect(mapStateToProps$f, mapDispatchToProps$f, null, {\n context: StateContext\n})(PluridPlane);\n\nconst isReactRenderable = component => {\n if (!component) {\n return false;\n }\n if (typeof component === \"string\" || component.url) {\n return false;\n }\n return true;\n};\n\nconst StyledPluridRoot = styled__default[\"default\"].div`\n transform-style: preserve-3d;\n`;\n\nconst {getPlanesRegistrar: getPlanesRegistrar$2, getRegisteredPlane: getRegisteredPlane} = pluridEngine.planes;\n\nconst PluridRoot = properties => {\n const {plane: plane} = properties;\n const {location: location} = plane;\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {planesRegistrar: planesRegistrar, planeContext: PlaneContext, planeContextValue: planeContextValue, customPlane: customPlane, matchedRoute: matchedRoute} = context;\n const CustomPluridPlane = customPlane;\n const [childrenPlanes, setChildrenPlanes] = React.useState([]);\n const computeChildrenPlanes = plane => {\n if (!plane.children) {\n return;\n }\n const planesRegistry = getPlanesRegistrar$2(planesRegistrar);\n plane.children.map((child => {\n if (!planesRegistry) {\n return;\n }\n const planeID = child.sourceID;\n const activePlane = planesRegistry.get(planeID);\n let plane = React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n if (activePlane) {\n const Plane = activePlane.component;\n const pluridProperty = {\n plane: {\n value: activePlane.route.absolute,\n planeID: child.planeID,\n parentPlaneID: child.parentPlaneID,\n fragments: activePlane.route.fragments,\n parameters: activePlane.route.parameters,\n query: activePlane.route.query\n },\n route: {\n value: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.value) || \"\",\n parameters: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.parameters) || {},\n query: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.query) || {}\n }\n };\n const properties = {\n plurid: Object.assign({}, pluridProperty)\n };\n const renderablePlane = isReactRenderable(Plane);\n const renderableCustomPlane = isReactRenderable(CustomPluridPlane);\n plane = !CustomPluridPlane ? renderablePlane ? React__default[\"default\"].createElement(ConnectedPluridPlane, {\n key: child.planeID,\n plane: activePlane,\n treePlane: child,\n planeID: child.planeID,\n location: child.location\n }, !PlaneContext ? React__default[\"default\"].createElement(Plane, Object.assign({}, properties)) : React__default[\"default\"].createElement(PlaneContext.Provider, {\n value: planeContextValue\n }, React__default[\"default\"].createElement(Plane, Object.assign({}, properties)))) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null) : renderableCustomPlane ? React__default[\"default\"].createElement(CustomPluridPlane, {\n key: child.planeID,\n plane: activePlane,\n treePlane: child,\n planeID: child.planeID,\n location: child.location\n }) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n setChildrenPlanes((planes => [ ...planes, plane ]));\n }\n if (child.children) {\n computeChildrenPlanes(child);\n }\n }));\n };\n React.useEffect((() => {\n setChildrenPlanes([]);\n computeChildrenPlanes(plane);\n }), [ JSON.stringify(plane) ]);\n const pluridPlaneID = plane.sourceID;\n if (!pluridPlaneID) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const pluridPlane = getRegisteredPlane(pluridPlaneID, planesRegistrar);\n if (!pluridPlane) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const Plane = pluridPlane.component;\n const pluridProperty = {\n plane: {\n value: pluridPlane.route.absolute,\n planeID: plane.planeID,\n parentPlaneID: plane.parentPlaneID,\n fragments: pluridPlane.route.fragments,\n parameters: pluridPlane.route.parameters,\n query: pluridPlane.route.query\n },\n route: {\n value: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.value) || \"\",\n parameters: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.parameters) || {},\n query: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.query) || {}\n }\n };\n const planeProperties = {\n plurid: Object.assign({}, pluridProperty)\n };\n if (CustomPluridPlane) {\n if (typeof CustomPluridPlane !== \"function\") {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledPluridRoot, {\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_ROOT\n }, React__default[\"default\"].createElement(CustomPluridPlane, {\n plane: pluridPlane,\n treePlane: plane,\n planeID: plane.planeID,\n location: location\n }), childrenPlanes);\n }\n return React__default[\"default\"].createElement(StyledPluridRoot, {\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_ROOT\n }, React__default[\"default\"].createElement(ConnectedPluridPlane, {\n plane: pluridPlane,\n treePlane: plane,\n planeID: plane.planeID,\n location: location\n }, !PlaneContext ? React__default[\"default\"].createElement(Plane, Object.assign({}, planeProperties)) : React__default[\"default\"].createElement(PlaneContext.Provider, {\n value: planeContextValue\n }, React__default[\"default\"].createElement(Plane, Object.assign({}, planeProperties)))), childrenPlanes);\n};\n\nconst mapStateToProperties$h = state => ({});\n\nconst mapDispatchToProperties$h = dispatch => ({});\n\nconst ConnectedPluridRoot = reactRedux.connect(mapStateToProperties$h, mapDispatchToProperties$h, null, {\n context: StateContext\n})(PluridRoot);\n\nconst StyledPluridRoots = styled__default[\"default\"].div`\n transform-style: preserve-3d;\n transform-origin: 0 0 0;\n`;\n\nconst PluridRoots = properties => {\n const {spaceTransformMatrix: spaceTransformMatrix, spaceAnimatedTransform: spaceAnimatedTransform, spaceTransformTime: spaceTransformTime, stateTree: stateTree} = properties;\n return React__default[\"default\"].createElement(StyledPluridRoots, {\n suppressHydrationWarning: true,\n style: {\n width: \"100%\",\n height: typeof window !== \"undefined\" ? window.innerHeight + \"px\" : \"821px\",\n transform: spaceTransformMatrix,\n transition: spaceAnimatedTransform ? `transform ${spaceTransformTime}ms ease-in-out` : \"initial\"\n },\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_ROOTS\n }, stateTree.map((plane => React__default[\"default\"].createElement(ConnectedPluridRoot, {\n key: plane.planeID,\n plane: plane\n }))));\n};\n\nconst mapStateToProperties$g = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state),\n spaceTransformMatrix: selectors.space.getTransformMatrix(state),\n spaceAnimatedTransform: selectors.space.getAnimatedTransform(state),\n spaceTransformTime: selectors.space.getTransformTime(state),\n stateTree: selectors.space.getTree(state)\n});\n\nconst mapDispatchToProperties$g = dispatch => ({});\n\nconst ConnectedPluridRoots = reactRedux.connect(mapStateToProperties$g, mapDispatchToProperties$g, null, {\n context: StateContext\n})(PluridRoots);\n\nconst fadeIn = styled.keyframes`\n from {\n opacity: 0%;\n }\n\n to {\n opacity: 100%;\n }\n`;\n\nconst fadeInAnimation = fadeInTime => styled.css`${fadeIn} ${fadeInTime}ms linear 100ms forwards`;\n\nconst StyledPluridSpace = styled__default[\"default\"].div`\n position: relative;\n height: 100%;\n overflow: hidden;\n perspective: 2000px;\n outline: none;\n\n background: ${({opaque: opaque, theme: theme}) => {\n if (opaque) {\n const foregroundGradient = theme.type === \"dark\" ? theme.backgroundColorTertiary : theme.backgroundColorPrimary;\n const backgroundGradient = theme.type === \"dark\" ? theme.backgroundColorPrimary : theme.backgroundColorTertiary;\n return `radial-gradient(\\n ellipse at center,\\n ${foregroundGradient} 0%,\\n ${backgroundGradient} 100%)\\n `;\n }\n return \"transparent\";\n}};\n\n /* TOFIX */\n /* opacity: ${({fadeInTime: fadeInTime}) => {\n if (fadeInTime) {\n return \"0\";\n }\n return \"1\";\n}};\n animation: ${({isMounted: isMounted, fadeInTime: fadeInTime}) => {\n if (isMounted && fadeInTime) {\n return fadeInAnimation(fadeInTime);\n }\n return \"\";\n}}; */\n`;\n\nconst PluridSpace = properties => {\n const {stateConfiguration: stateConfiguration, stateGeneralTheme: stateGeneralTheme} = properties;\n const {space: space} = stateConfiguration;\n const {opaque: opaque, fadeInTime: fadeInTime} = space;\n const [isMounted, setIsMounted] = React.useState(false);\n React.useEffect((() => {\n setIsMounted(true);\n }), []);\n return React__default[\"default\"].createElement(StyledPluridSpace, {\n theme: stateGeneralTheme,\n opaque: opaque,\n isMounted: isMounted,\n fadeInTime: fadeInTime,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_SPACE\n }, React__default[\"default\"].createElement(ConnectedPluridRoots, null));\n};\n\nconst mapStateToProperties$f = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateGeneralTheme: selectors.themes.getGeneralTheme(state)\n});\n\nconst mapDispatchToProperties$f = dispatch => ({});\n\nconst ConnectedPluridSpace = reactRedux.connect(mapStateToProperties$f, mapDispatchToProperties$f, null, {\n context: StateContext\n})(PluridSpace);\n\nconst resolveSize = ({size: size}) => {\n switch (size) {\n case pluridData.SIZES.SMALL:\n return \"5px\";\n\n case pluridData.SIZES.NORMAL:\n return \"10px\";\n\n case pluridData.SIZES.LARGE:\n return \"15px\";\n\n default:\n return \"10px\";\n }\n};\n\nconst StyledOrigin = styled__default[\"default\"].div`\n background-color: ${({theme: theme}) => theme.backgroundColorTertiaryAlpha};\n height: ${resolveSize};\n width: ${resolveSize};\n\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n z-index: 99999;\n border-radius: 100px;\n user-select: none;\n pointer-events: none;\n touch-action: none;\n`;\n\nconst Origin = properties => {\n const {stateGeneralTheme: stateGeneralTheme, stateConfiguration: stateConfiguration} = properties;\n const {space: space} = stateConfiguration;\n const {transformOrigin: transformOrigin} = space;\n const {show: showTransformOrigin, size: transformOriginSize} = transformOrigin;\n if (!showTransformOrigin) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledOrigin, {\n theme: stateGeneralTheme,\n size: transformOriginSize,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_TRANSFORM_ORIGIN\n });\n};\n\nconst mapStateToProperties$e = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProperties$e = dispatch => ({});\n\nconst ConnectedOrigin = reactRedux.connect(mapStateToProperties$e, mapDispatchToProperties$e, null, {\n context: StateContext\n})(Origin);\n\nvar MENUS;\n\n(function(MENUS) {\n MENUS[\"NONE\"] = \"NONE\";\n MENUS[\"UNIVERSES\"] = \"UNIVERSES\";\n MENUS[\"MORE\"] = \"MORE\";\n})(MENUS || (MENUS = {}));\n\nconst VIEW_SIZE_WIDTH_LIMIT = 800;\n\nconst StyledToolbar = styled__default[\"default\"].div`\n bottom: ${({conceal: conceal, mouseIn: mouseIn}) => {\n if (!conceal) {\n return \"-5px\";\n }\n if (mouseIn) {\n return \"-5px\";\n }\n return \"-55px\";\n}};\n pointer-events: ${({showMenu: showMenu}) => {\n if (showMenu !== MENUS.NONE) {\n return \"all\";\n }\n return \"none\";\n}};\n opacity: ${({fadeInTime: fadeInTime}) => {\n if (fadeInTime) {\n return \"0\";\n }\n return \"1\";\n}};\n animation: ${({fadeInTime: fadeInTime, isMounted: isMounted}) => {\n if (isMounted && fadeInTime) {\n return fadeInAnimation(fadeInTime);\n }\n return \"\";\n}};\n\n display: grid;\n position: absolute;\n left: 0;\n right: 0;\n height: 75px;\n z-index: 9999;\n transition: bottom 300ms ease-in-out;\n`;\n\nconst StyledToolbarButtons = styled__default[\"default\"].div`\n color: ${({theme: theme}) => theme.colorPrimary};\n background-color: ${({theme: theme, transparentUI: transparentUI}) => {\n if (transparentUI) {\n return theme.backgroundColorPrimaryAlpha;\n }\n return theme.backgroundColorSecondary;\n}};\n box-shadow: ${({theme: theme}) => theme.boxShadowUmbra};\n grid-template-columns: ${({showIcons: showIcons, showTransformButtons: showTransformButtons, documentsBased: documentsBased}) => {\n if (showIcons && !showTransformButtons) {\n if (documentsBased) {\n return \"repeat(6, minmax(min-content, 40px))\";\n } else {\n return \"repeat(5, minmax(min-content, 40px))\";\n }\n }\n if (!showTransformButtons) {\n if (documentsBased) {\n return \"repeat(6, minmax(min-content, 40px))\";\n } else {\n return \"repeat(5, minmax(min-content, 40px))\";\n }\n }\n if (documentsBased) {\n return \"40px 200px 200px 200px 40px 40px\";\n }\n return \"40px 200px 200px 200px 40px\";\n}};\n opacity: ${({opaque: opaque, mouseIn: mouseIn}) => {\n if (!opaque && !mouseIn) {\n return \"0.4\";\n }\n return \"1\";\n}};\n\n z-index: 9999;\n user-select: none;\n /* height: 75px; */\n display: grid;\n pointer-events: all;\n display: grid;\n align-items: center;\n justify-content: center;\n justify-items: center;\n border-radius: 22.5px;\n margin: 0 auto;\n margin-top: 10px;\n margin-bottom: 20px;\n padding: 0 22.5px;\n font-size: 12px;\n height: 45px;\n transition: opacity 300ms ease-in-out;\n\n :after {\n content: '';\n position: absolute;\n top: 55px;\n left: 0;\n right: 0;\n height: 20px;\n }\n`;\n\nconst StyledToolbarButton = styled__default[\"default\"].div`\n padding: ${({button: button, showIcons: showIcons, showTransformButtons: showTransformButtons}) => {\n if (button) {\n return \"0\";\n }\n if (showIcons && !showTransformButtons) {\n return \"0\";\n }\n return \"0 7px\";\n}};\n background-color: ${({active: active, theme: theme}) => {\n if (active) {\n return theme.backgroundColorTertiary;\n }\n return \"transparent\";\n}};\n min-width: ${({button: button}) => {\n if (button) {\n return \"40px\";\n }\n return \"70px\";\n}};\n\n height: 45px;\n display: grid;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n user-select: none;\n\n :hover {\n background: ${({theme: theme}) => theme.backgroundColorTertiary};\n }\n`;\n\nconst StyledIcon = styled__default[\"default\"].div`\n width: 40px;\n display: grid;\n place-content: center;\n\n /* svg {\n height: 15px;\n width: 15px;\n fill: white;\n } */\n`;\n\nconst StyledPluridMenuUniverses = styled__default[\"default\"].div`\n position: absolute;\n bottom: 75px;\n max-height: 250px;\n width: 380px;\n left: 50%;\n transform: translateX(-50%);\n border-radius: 22.5px;\n padding: 22px;\n font-size: 0.8rem;\n overflow: hidden;\n\n background-color: ${props => props.theme.backgroundColorSecondary};\n box-shadow: ${props => props.theme.boxShadowUmbra};\n\n ul {\n padding: 0;\n list-style: none;\n }\n`;\n\nstyled__default[\"default\"].div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n position: relative;\n\n margin-bottom: ${props => {\n if (props.afterline) {\n return \"30px\";\n }\n return \"10px\";\n}};\n\n ${props => {\n if (props.afterline) {\n return `\\n ::after {\\n position: absolute;\\n content: '';\\n left: 0;\\n right: 0;\\n bottom: -15px;\\n height: 1px;\\n background-color: white;\\n }\\n `;\n }\n return \"\";\n}};\n`;\n\nconst StyledPluridMenuUniversesScroll = styled__default[\"default\"].div`\n max-height: 210px;\n overflow: scroll;\n padding: 0 5px;\n\n /* Hide Scrollbar */\n scrollbar-width: none; /* Firefox 64 */\n -ms-overflow-style: none; /* Internet Explorer 11 */\n ::-webkit-scrollbar { /** WebKit */\n display: none;\n }\n\n h5::first-child {\n margin-top: 0;\n }\n`;\n\nstyled__default[\"default\"].li`\n margin: 10px 0;\n padding: 10px 20px;\n border-radius: 100px;\n\n cursor: ${props => {\n if (props.active) {\n return \"initial\";\n }\n return \"pointer\";\n}};\n background-color: ${props => {\n if (props.active) {\n return props.theme.backgroundColorTertiary;\n }\n return \"\";\n}};\n box-shadow: ${props => {\n if (props.active) {\n return \"inset 0px -1px 6px 0px \" + props.theme.boxShadowUmbraColor;\n }\n return \"\";\n}};\n\n :hover {\n background-color: ${props => props.theme.backgroundColorTertiary};\n box-shadow: ${props => {\n if (props.active) {\n return \"inset 0px -1px 6px 0px \" + props.theme.boxShadowUmbraColor;\n }\n return props.theme.boxShadowUmbra;\n}};\n }\n`;\n\nconst PluridMenuUniverses = properties => {\n const {interactionTheme: interactionTheme, activeUniverseID: activeUniverseID, dispatchSetActiveUniverse: dispatchSetActiveUniverse} = properties;\n return React__default[\"default\"].createElement(StyledPluridMenuUniverses, {\n theme: interactionTheme\n }, React__default[\"default\"].createElement(StyledPluridMenuUniversesScroll, null));\n};\n\nconst mapStateToProps$e = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state),\n activeUniverseID: selectors.space.getActiveUniverseID(state)\n});\n\nconst mapDispatchToProps$e = dispatch => ({\n dispatchSetActiveUniverse: documentID => dispatch(actions.space.setActiveUniverse(documentID))\n});\n\nconst ConnectedPluridMenuUniverses = reactRedux.connect(mapStateToProps$e, mapDispatchToProps$e, null, {\n context: StateContext\n})(PluridMenuUniverses);\n\nconst StyledPluridDrawer = styled__default[\"default\"].div`\n h5 {\n font-size: 1rem;\n margin: 0;\n }\n\n margin-bottom: 2rem;\n border-top-left-radius: 15px;\n border-top-right-radius: 15px;\n\n padding-bottom: ${props => {\n if (props.transparentUI && props.toggled) {\n return \"0.5rem\";\n }\n return \"0\";\n}};\n background-color: ${props => {\n if (props.transparentUI && props.mouseOver) {\n return props.theme.backgroundColorSecondary;\n }\n return \"transparent\";\n}};\n box-shadow: ${props => {\n if (props.transparentUI && props.mouseOver) {\n return props.theme.boxShadowUmbra;\n }\n return \"none\";\n}};\n color: ${props => props.theme.colorPrimary};\n`;\n\nconst StyledPluridDrawerHeading = styled__default[\"default\"].div`\n user-select: none;\n cursor: pointer;\n padding: 0.5rem;\n margin-bottom: 0.5rem;\n border-bottom: 1px solid transparent;\n text-align: left;\n\n :hover {\n border-bottom: 1px solid ${props => props.theme.colorPrimary};\n }\n`;\n\nconst StyledPluridDrawerItems = styled__default[\"default\"].div`\n`;\n\nconst {typography: {Heading: PluridHeading}} = pluridUiComponentsReact.universal;\n\nconst PluridDrawer = properties => {\n const {heading: heading, items: items, toggled: toggled, toggle: toggle, interactionTheme: interactionTheme, configuration: configuration} = properties;\n const {global: global} = configuration;\n const {transparentUI: transparentUI} = global;\n const [mouseOver, setMouseOver] = React.useState(false);\n return React__default[\"default\"].createElement(StyledPluridDrawer, {\n theme: interactionTheme,\n onMouseEnter: () => setMouseOver(true),\n onMouseLeave: () => setMouseOver(false),\n transparentUI: transparentUI,\n mouseOver: mouseOver,\n toggled: toggled\n }, React__default[\"default\"].createElement(StyledPluridDrawerHeading, {\n theme: interactionTheme,\n onClick: () => toggle()\n }, React__default[\"default\"].createElement(PluridHeading, {\n theme: interactionTheme,\n type: \"h5\"\n }, heading)), toggled && React__default[\"default\"].createElement(StyledPluridDrawerItems, null, items));\n};\n\nconst mapStateToProps$d = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$d = dispatch => ({});\n\nconst ConnectedPluridDrawer = reactRedux.connect(mapStateToProps$d, mapDispatchToProps$d, null, {\n context: StateContext\n})(PluridDrawer);\n\nconst StyledPluridMoreMenu = styled__default[\"default\"].div`\n position: absolute;\n bottom: 75px;\n height: 280px;\n width: 380px;\n left: 50%;\n transform: translateX(-50%);\n border-radius: 22.5px;\n padding: 22px;\n font-size: 0.8rem;\n overflow: hidden;\n\n background-color: ${props => {\n if (props.transparentUI) {\n return props.theme.backgroundColorPrimaryAlpha;\n }\n return props.theme.backgroundColorSecondary;\n}};\n box-shadow: ${props => props.theme.boxShadowUmbra};\n`;\n\nconst StyledPluridMoreMenuItem = styled__default[\"default\"].div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n position: relative;\n min-height: 30px;\n padding: 0 0.5rem;\n\n margin-bottom: ${props => {\n if (props.last) {\n return \"0\";\n }\n if (props.afterline) {\n return \"30px\";\n }\n return \"10px\";\n}};\n\n ${props => {\n if (props.afterline) {\n return `\\n ::after {\\n position: absolute;\\n content: '';\\n left: 0;\\n right: 0;\\n bottom: -15px;\\n height: 1px;\\n background-color: ${props.theme ? props.theme.colorPrimary : \"white\"};\\n }\\n `;\n }\n return \"\";\n}};\n`;\n\nconst StyledPluridMoreMenuScroll = styled__default[\"default\"].div`\n height: 240px;\n overflow: scroll;\n padding: 0 5px;\n\n /* Hide Scrollbar */\n scrollbar-width: none; /* Firefox 64 */\n -ms-overflow-style: none; /* Internet Explorer 11 */\n ::-webkit-scrollbar { /** WebKit */\n display: none;\n }\n\n h5::first-child {\n margin-top: 0;\n }\n`;\n\nconst {inputs: {Dropdown: PluridDropdown$1}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreGlobal = properties => {\n const {stateLanguage: stateLanguage, interactionTheme: interactionTheme, configuration: configuration, dispatchSetGeneralTheme: dispatchSetGeneralTheme, dispatchSetInteractionTheme: dispatchSetInteractionTheme, dispatchSetConfigurationThemeGeneralAction: dispatchSetConfigurationThemeGeneralAction, dispatchSetConfigurationThemeInteractionAction: dispatchSetConfigurationThemeInteractionAction, dispatchSetConfigurationLanguage: dispatchSetConfigurationLanguage} = properties;\n const selectedTheme = configuration.global.theme;\n const [generalThemeName, setGeneralThemeName] = React.useState(typeof selectedTheme === \"object\" ? selectedTheme.general : selectedTheme);\n const [interactionThemeName, setInteractionThemeName] = React.useState(typeof selectedTheme === \"object\" ? selectedTheme.interaction : selectedTheme);\n const setGeneralTheme = selectedTheme => {\n dispatchSetGeneralTheme(themes__default[\"default\"][selectedTheme]);\n dispatchSetConfigurationThemeGeneralAction(selectedTheme);\n };\n const setInteractionTheme = selectedTheme => {\n dispatchSetInteractionTheme(themes__default[\"default\"][selectedTheme]);\n dispatchSetConfigurationThemeInteractionAction(selectedTheme);\n };\n const setLanguage = selectedLanguage => {\n dispatchSetConfigurationLanguage(selectedLanguage);\n };\n React.useEffect((() => {\n if (typeof selectedTheme === \"object\") {\n setGeneralThemeName(selectedTheme.general);\n setInteractionThemeName(selectedTheme.interaction);\n } else {\n setGeneralThemeName(selectedTheme);\n setInteractionThemeName(selectedTheme);\n }\n }), [ selectedTheme ]);\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerGlobalGeneralTheme), React__default[\"default\"].createElement(PluridDropdown$1, {\n selectables: Object.keys(themes__default[\"default\"]),\n selected: typeof generalThemeName === \"string\" ? generalThemeName : \"\",\n atSelect: selection => setGeneralTheme(selection),\n theme: interactionTheme,\n filterable: true,\n heightItems: 3,\n width: 90,\n style: {\n fontSize: \"0.8rem\"\n }\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerGlobalInteractionTheme), React__default[\"default\"].createElement(PluridDropdown$1, {\n selectables: Object.keys(themes__default[\"default\"]),\n selected: typeof interactionThemeName === \"string\" ? interactionThemeName : \"\",\n atSelect: selection => setInteractionTheme(selection),\n theme: interactionTheme,\n heightItems: 3,\n filterable: true,\n width: 90,\n style: {\n fontSize: \"0.8rem\"\n }\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerGlobalLanguage), React__default[\"default\"].createElement(PluridDropdown$1, {\n selectables: pluridData.internationalization.languages,\n selected: stateLanguage,\n atSelect: selection => setLanguage(selection),\n theme: interactionTheme,\n heightItems: 3,\n width: 90,\n style: {\n fontSize: \"0.8rem\"\n }\n })));\n};\n\nconst mapStateToProps$c = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$c = dispatch => ({\n dispatchSetConfigurationThemeGeneralAction: theme => dispatch(actions.configuration.setConfigurationThemeGeneralAction(theme)),\n dispatchSetConfigurationThemeInteractionAction: theme => dispatch(actions.configuration.setConfigurationThemeInteractionAction(theme)),\n dispatchSetConfigurationLanguage: language => dispatch(actions.configuration.setConfigurationLanguageAction(language)),\n dispatchSetGeneralTheme: theme => dispatch(actions.themes.setGeneralTheme(theme)),\n dispatchSetInteractionTheme: theme => dispatch(actions.themes.setInteractionTheme(theme))\n});\n\nconst ConnectedPluridMenuMoreGlobal = reactRedux.connect(mapStateToProps$c, mapDispatchToProps$c, null, {\n context: StateContext\n})(PluridMenuMoreGlobal);\n\nconst {inputs: {Switch: PluridSwitch$3}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreTransform = properties => {\n const {stateLanguage: stateLanguage, interactionTheme: interactionTheme, configuration: configuration, dispatchToggleConfigurationSpaceTransformMultimode: dispatchToggleConfigurationSpaceTransformMultimode, dispatchSetConfigurationSpaceTransformTouch: dispatchSetConfigurationSpaceTransformTouch, dispatchSetConfigurationSpaceTransformLocks: dispatchSetConfigurationSpaceTransformLocks} = properties;\n const {transformMultimode: transformMultimode, transformLocks: transformLocks, transformTouch: transformTouch} = configuration.space;\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformMultiModeTransform)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformMultimode,\n atChange: () => dispatchToggleConfigurationSpaceTransformMultimode(!transformMultimode),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowRotationX)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.rotationX,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"rotationX\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowRotationY)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.rotationY,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"rotationY\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowTranslationX)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.translationX,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"translationX\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowTranslationY)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.translationY,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"translationY\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowTranslationZ)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.translationZ,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"translationZ\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowScale)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.scale,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"scale\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformTouchTransform), \": \", transformTouch === pluridData.TRANSFORM_TOUCHES.PAN ? \"pan\" : \"swipe\"), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformTouch === pluridData.TRANSFORM_TOUCHES.PAN,\n atChange: () => transformTouch === pluridData.TRANSFORM_TOUCHES.PAN ? dispatchSetConfigurationSpaceTransformTouch(pluridData.TRANSFORM_TOUCHES.SWIPE) : dispatchSetConfigurationSpaceTransformTouch(pluridData.TRANSFORM_TOUCHES.PAN),\n level: 2\n })));\n};\n\nconst mapStateToProps$b = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$b = dispatch => ({\n dispatchToggleConfigurationSpaceTransformMultimode: multimode => dispatch(actions.configuration.toggleConfigurationSpaceTransformMultimode(multimode)),\n dispatchSetConfigurationSpaceTransformTouch: touch => dispatch(actions.configuration.setConfigurationSpaceTransformTouch(touch)),\n dispatchSetConfigurationSpaceTransformLocks: lock => dispatch(actions.configuration.setConfigurationSpaceTransformLocks(lock))\n});\n\nconst ConnectedPluridMenuMoreTransform = reactRedux.connect(mapStateToProps$b, mapDispatchToProps$b, null, {\n context: StateContext\n})(PluridMenuMoreTransform);\n\nconst {inputs: {Dropdown: PluridDropdown, Switch: PluridSwitch$2, Slider: PluridSlider$1}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreSpace = properties => {\n const {interactionTheme: interactionTheme, configuration: configuration, dispatchSetConfigurationPlaneOpacity: dispatchSetConfigurationPlaneOpacity, dispatchToggleConfigurationSpaceTransparentUI: dispatchToggleConfigurationSpaceTransparentUI, dispatchToggleConfigurationSpaceShowTransformOrigin: dispatchToggleConfigurationSpaceShowTransformOrigin, dispatchSetConfigurationSpaceTransformOriginSize: dispatchSetConfigurationSpaceTransformOriginSize, dispatchSetConfigurationSpaceLayoutType: dispatchSetConfigurationSpaceLayoutType} = properties;\n const {global: global, space: space, elements: elements} = configuration;\n const {transparentUI: transparentUI, language: language} = global;\n const {layout: layout, transformOrigin: transformOrigin} = space;\n const layoutType = pluridData.layoutNames[layout.type];\n const {show: showTransformOrigin, size: transformOriginSize} = transformOrigin;\n const planeOpacity = elements.plane.opacity;\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpaceTransparentUserInterface), React__default[\"default\"].createElement(PluridSwitch$2, {\n checked: transparentUI,\n atChange: () => dispatchToggleConfigurationSpaceTransparentUI(),\n exclusive: true,\n level: 2,\n theme: interactionTheme\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpaceShowTransformOrigin), React__default[\"default\"].createElement(PluridSwitch$2, {\n checked: showTransformOrigin,\n atChange: () => dispatchToggleConfigurationSpaceShowTransformOrigin(),\n exclusive: true,\n level: 2,\n theme: interactionTheme\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpaceTransformOriginSize), React__default[\"default\"].createElement(PluridDropdown, {\n selectables: [ \"small\", \"normal\", \"large\" ],\n selected: transformOriginSize.toLowerCase(),\n atSelect: selection => {\n const selected = selection.toUpperCase();\n if (selected === pluridData.SIZES.SMALL || selected === pluridData.SIZES.NORMAL || selected === pluridData.SIZES.LARGE) {\n dispatchSetConfigurationSpaceTransformOriginSize(selected);\n }\n },\n heightItems: 3,\n theme: interactionTheme\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpacePlaneOpacity), React__default[\"default\"].createElement(PluridSlider$1, {\n value: planeOpacity,\n max: 1,\n min: 0,\n step: .1,\n defaultValue: 100,\n atChange: value => dispatchSetConfigurationPlaneOpacity(value),\n thumbSize: \"large\",\n level: 2,\n theme: interactionTheme\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpaceLayoutType), React__default[\"default\"].createElement(PluridDropdown, {\n selectables: [ ...Object.values(pluridData.layoutNames) ],\n selected: layoutType,\n atSelect: selection => {\n const selected = selection.toUpperCase().replace(/\\s/g, \"_\");\n dispatchSetConfigurationSpaceLayoutType(selected);\n },\n heightItems: 3,\n theme: interactionTheme,\n width: 100\n })));\n};\n\nconst mapStateToProps$a = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$a = dispatch => ({\n dispatchSetConfigurationPlaneOpacity: value => dispatch(actions.configuration.setConfigurationPlaneOpacity(value)),\n dispatchToggleConfigurationSpaceTransparentUI: () => dispatch(actions.configuration.toggleConfigurationSpaceTransparentUI()),\n dispatchToggleConfigurationSpaceShowTransformOrigin: () => dispatch(actions.configuration.toggleConfigurationSpaceShowTransformOrigin()),\n dispatchSetConfigurationSpaceTransformOriginSize: size => dispatch(actions.configuration.setConfigurationSpaceTransformOriginSize(size)),\n dispatchSetConfigurationSpaceLayoutType: layoutType => dispatch(actions.configuration.setConfigurationSpaceLayoutType(layoutType))\n});\n\nconst ConnectedPluridMenuMoreSpace = reactRedux.connect(mapStateToProps$a, mapDispatchToProps$a, null, {\n context: StateContext\n})(PluridMenuMoreSpace);\n\nconst {inputs: {Switch: PluridSwitch$1}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreToolbar = properties => {\n const {stateLanguage: stateLanguage, interactionTheme: interactionTheme, configuration: configuration, viewSize: viewSize, dispatchToggleConfigurationToolbarConceal: dispatchToggleConfigurationToolbarConceal, dispatchToggleConfigurationToolbarTransformIcons: dispatchToggleConfigurationToolbarTransformIcons, dispatchToggleConfigurationToolbarTransformButtons: dispatchToggleConfigurationToolbarTransformButtons, dispatchToggleConfigurationToolbarOpaque: dispatchToggleConfigurationToolbarOpaque} = properties;\n const {toolbar: toolbar} = configuration.elements;\n const {conceal: conceal, opaque: opaque, transformIcons: transformIcons, transformButtons: transformButtons} = toolbar;\n const [viewSizeSmall, setViewSizeSmall] = React.useState(false);\n React.useEffect((() => {\n if (viewSize.width < 800) {\n setViewSizeSmall(true);\n } else {\n setViewSizeSmall(false);\n }\n }), [ viewSize.width ]);\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerToolbarAlwaysOpaque)), React__default[\"default\"].createElement(PluridSwitch$1, {\n theme: interactionTheme,\n checked: opaque,\n atChange: () => dispatchToggleConfigurationToolbarOpaque(),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerToolbarShowTransformIcons)), React__default[\"default\"].createElement(PluridSwitch$1, {\n theme: interactionTheme,\n checked: transformIcons,\n atChange: () => dispatchToggleConfigurationToolbarTransformIcons(),\n exclusive: true,\n level: 2\n })), !viewSizeSmall && React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerToolbarShowTransformArrows)), React__default[\"default\"].createElement(PluridSwitch$1, {\n theme: interactionTheme,\n checked: transformButtons,\n atChange: () => dispatchToggleConfigurationToolbarTransformButtons(),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerToolbarConcealToolbar)), React__default[\"default\"].createElement(PluridSwitch$1, {\n theme: interactionTheme,\n checked: conceal,\n atChange: () => dispatchToggleConfigurationToolbarConceal(),\n exclusive: true,\n level: 2\n })));\n};\n\nconst mapStateToProps$9 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state),\n viewSize: selectors.space.getViewSize(state)\n});\n\nconst mapDispatchToProps$9 = dispatch => ({\n dispatchToggleConfigurationToolbarConceal: () => dispatch(actions.configuration.toggleConfigurationToolbarConceal()),\n dispatchToggleConfigurationToolbarTransformIcons: () => dispatch(actions.configuration.toggleConfigurationToolbarTransformIcons()),\n dispatchToggleConfigurationToolbarTransformButtons: () => dispatch(actions.configuration.toggleConfigurationToolbarTransformButtons()),\n dispatchToggleConfigurationToolbarOpaque: () => dispatch(actions.configuration.toggleConfigurationToolbarOpaque())\n});\n\nconst ConnectedPluridMenuMoreToolbar = reactRedux.connect(mapStateToProps$9, mapDispatchToProps$9, null, {\n context: StateContext\n})(PluridMenuMoreToolbar);\n\nconst {inputs: {Switch: PluridSwitch}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreViewcube = properties => {\n const {stateLanguage: stateLanguage, interactionTheme: interactionTheme, configuration: configuration, dispatchToggleConfigurationViewcubeHide: dispatchToggleConfigurationViewcubeHide, dispatchToggleConfigurationViewcubeButtons: dispatchToggleConfigurationViewcubeButtons, dispatchToggleConfigurationViewcubeOpaque: dispatchToggleConfigurationViewcubeOpaque, dispatchToggleConfigurationViewcubeConceal: dispatchToggleConfigurationViewcubeConceal} = properties;\n const {viewcube: viewcube} = configuration.elements;\n const {show: show, buttons: buttons, opaque: opaque, conceal: conceal} = viewcube;\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: !show ? true : false\n }, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerViewcubeShowViewcube)), React__default[\"default\"].createElement(PluridSwitch, {\n theme: interactionTheme,\n checked: show,\n atChange: () => dispatchToggleConfigurationViewcubeHide(!show),\n exclusive: true,\n level: 2\n })), show && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerViewcubeShowTransformButtons)), React__default[\"default\"].createElement(PluridSwitch, {\n theme: interactionTheme,\n checked: buttons,\n atChange: () => dispatchToggleConfigurationViewcubeButtons(!buttons),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerViewcubeAlwaysOpaque)), React__default[\"default\"].createElement(PluridSwitch, {\n theme: interactionTheme,\n checked: opaque,\n atChange: () => dispatchToggleConfigurationViewcubeOpaque(!opaque),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerViewcubeConcealViewcube)), React__default[\"default\"].createElement(PluridSwitch, {\n theme: interactionTheme,\n checked: conceal,\n atChange: () => dispatchToggleConfigurationViewcubeConceal(),\n exclusive: true,\n level: 2\n }))));\n};\n\nconst mapStateToProps$8 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$8 = dispatch => ({\n dispatchToggleConfigurationViewcubeHide: toggle => dispatch(actions.configuration.toggleConfigurationViewcubeHide(toggle)),\n dispatchToggleConfigurationViewcubeButtons: toggle => dispatch(actions.configuration.toggleConfigurationViewcubeButtons(toggle)),\n dispatchToggleConfigurationViewcubeOpaque: toggle => dispatch(actions.configuration.toggleConfigurationViewcubeOpaque(toggle)),\n dispatchToggleConfigurationViewcubeConceal: () => dispatch(actions.configuration.toggleConfigurationViewcubeConceal())\n});\n\nconst ConnectedPluridMenuMoreViewcube = reactRedux.connect(mapStateToProps$8, mapDispatchToProps$8, null, {\n context: StateContext\n})(PluridMenuMoreViewcube);\n\nconst {inputs: {Slider: PluridSlider}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreTechnical = properties => {\n const {stateLanguage: stateLanguage, stateConfiguration: stateConfiguration, stateInteractionTheme: stateInteractionTheme, dispatchSetConfigurationSpaceCullingDistance: dispatchSetConfigurationSpaceCullingDistance} = properties;\n const {cullingDistance: cullingDistance} = stateConfiguration.space;\n const [localCullingDistance, setLocalCullingDistance] = React.useState(cullingDistance);\n const dispatchCullingDistanceUpdateFunction = value => {\n dispatchSetConfigurationSpaceCullingDistance(value);\n };\n const dispatchCullingDistanceUpdate = pluridFunctionsReact.useDebouncedCallback(dispatchCullingDistanceUpdateFunction, 300);\n const handleCullingDistance = value => {\n setLocalCullingDistance(value);\n dispatchCullingDistanceUpdate(value);\n };\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTechnicalCullingDistance)), React__default[\"default\"].createElement(PluridSlider, {\n theme: stateInteractionTheme,\n value: localCullingDistance,\n atChange: handleCullingDistance,\n min: 1e3,\n max: 5e3,\n defaultValue: 1500\n })));\n};\n\nconst mapStateToProps$7 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$7 = dispatch => ({\n dispatchSetConfigurationSpaceCullingDistance: value => dispatch(actions.configuration.setConfigurationSpaceCullingDistance(value))\n});\n\nconst ConnectedPluridMenuMoreTechnical = reactRedux.connect(mapStateToProps$7, mapDispatchToProps$7, null, {\n context: StateContext\n})(PluridMenuMoreTechnical);\n\nconst PluridMenuMoreShortcuts = properties => {\n const {interactionTheme: interactionTheme, configuration: configuration} = properties;\n const {global: global} = configuration;\n const {language: language} = global;\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridData.defaultShortcuts.map(((shortcut, index) => {\n const {type: type} = shortcut;\n const shortcutData = pluridData.shortcutsNames[type];\n const {name: name, internationalizedKey: internationalizedKey, key: key, modifier: modifier} = shortcutData;\n const modifierString = Array.isArray(modifier) ? modifier.reduce(((total, element) => total + \" + \" + element)) + \" +\" : typeof modifier === \"string\" ? modifier + \" +\" : \"\";\n const internationalizedName = pluridEngine.internatiolate(language, name);\n const keyAsAny = key;\n const keyName = internationalizedKey ? pluridEngine.internatiolate(language, keyAsAny) : key;\n return React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n key: name,\n theme: interactionTheme,\n afterline: type === \"TURN_DOWN\" || type === \"TOGGLE_ROTATE\" || type === \"TOGGLE_TRANSLATE\",\n last: index === pluridData.defaultShortcuts.length - 1 ? true : false\n }, React__default[\"default\"].createElement(\"div\", null, internationalizedName), React__default[\"default\"].createElement(\"div\", null, modifierString, \" \", keyName));\n })));\n};\n\nconst mapStateToProps$6 = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$6 = dispatch => ({});\n\nconst ConnectedPluridMenuMoreShortcuts = reactRedux.connect(mapStateToProps$6, mapDispatchToProps$6, null, {\n context: StateContext\n})(PluridMenuMoreShortcuts);\n\nconst moreMenusRecord = {\n GLOBAL: {\n name: pluridData.internationalization.fields.toolbarDrawerGlobalTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.GLOBAL,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreGlobal, null)\n },\n TRANSFORM: {\n name: pluridData.internationalization.fields.toolbarDrawerTransformTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.TRANSFORM,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreTransform, null)\n },\n SPACE: {\n name: pluridData.internationalization.fields.toolbarDrawerSpaceTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.SPACE,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreSpace, null)\n },\n TOOLBAR: {\n name: pluridData.internationalization.fields.toolbarDrawerToolbarTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.TOOLBAR,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreToolbar, null)\n },\n VIEWCUBE: {\n name: pluridData.internationalization.fields.toolbarDrawerViewcubeTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.VIEWCUBE,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreViewcube, null)\n },\n TECHNICAL: {\n name: pluridData.internationalization.fields.toolbarDrawerTechnicalTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.TECHNICAL,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreTechnical, null)\n },\n SHORTCUTS: {\n name: pluridData.internationalization.fields.toolbarDrawerShortcutsTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.SHORTCUTS,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreShortcuts, null)\n }\n};\n\nconst moreMenus = Object.values(moreMenusRecord);\n\nconst resolveMenus = drawers => {\n if (drawers.length === 0 || drawers.includes(\"ALL\")) {\n return moreMenus;\n }\n const resolvedMenus = [];\n for (const drawer of drawers) {\n const menu = moreMenusRecord[drawer];\n resolvedMenus.push(menu);\n }\n return resolvedMenus;\n};\n\nconst PluridMoreMenu = properties => {\n const {stateLanguage: stateLanguage, stateInteractionTheme: stateInteractionTheme, stateConfiguration: stateConfiguration, stateToolbarMenuScrollPosition: stateToolbarMenuScrollPosition, dispatchToggleConfigurationToolbarToggleDrawer: dispatchToggleConfigurationToolbarToggleDrawer, dispatchSetUIToolbarScrollPosition: dispatchSetUIToolbarScrollPosition} = properties;\n const {global: global, elements: elements} = stateConfiguration;\n const {transparentUI: transparentUI} = global;\n const {toolbar: toolbar} = elements;\n const {drawers: drawers, toggledDrawers: toggledDrawers} = toolbar;\n const menus = resolveMenus(drawers);\n const moreMenuScrollElement = React.useRef(null);\n const handleWheel = pluridFunctionsReact.useDebouncedCallback((_event => {\n if (moreMenuScrollElement.current) {\n const scrollPosition = moreMenuScrollElement.current.scrollTop;\n dispatchSetUIToolbarScrollPosition(scrollPosition);\n }\n }), 100);\n React.useEffect((() => {\n if (moreMenuScrollElement.current) {\n moreMenuScrollElement.current.addEventListener(\"wheel\", handleWheel);\n }\n return () => {\n if (moreMenuScrollElement.current) {\n moreMenuScrollElement.current.removeEventListener(\"wheel\", handleWheel);\n }\n };\n }), [ moreMenuScrollElement.current ]);\n React.useEffect((() => {\n if (moreMenuScrollElement.current) {\n moreMenuScrollElement.current.scrollTop = stateToolbarMenuScrollPosition;\n }\n }), [ stateToolbarMenuScrollPosition, moreMenuScrollElement.current ]);\n return React__default[\"default\"].createElement(StyledPluridMoreMenu, {\n theme: stateInteractionTheme,\n transparentUI: transparentUI\n }, React__default[\"default\"].createElement(StyledPluridMoreMenuScroll, {\n ref: moreMenuScrollElement\n }, menus.map((moreMenu => {\n const {name: name, drawer: drawer, component: component} = moreMenu;\n const internationalizedName = pluridEngine.internatiolate(stateLanguage, name);\n return React__default[\"default\"].createElement(ConnectedPluridDrawer, {\n key: name,\n heading: internationalizedName,\n items: React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, component),\n toggled: toggledDrawers.includes(\"ALL\") || toggledDrawers.includes(drawer),\n toggle: () => dispatchToggleConfigurationToolbarToggleDrawer(drawer)\n });\n }))));\n};\n\nconst mapStateToProperties$d = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n stateInteractionTheme: selectors.themes.getInteractionTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateToolbarMenuScrollPosition: selectors.ui.getToolbarScrollPosition(state)\n});\n\nconst mapDispatchToProperties$d = dispatch => ({\n dispatchToggleConfigurationToolbarToggleDrawer: drawer => dispatch(actions.configuration.toggleConfigurationToolbarToggleDrawer(drawer)),\n dispatchSetUIToolbarScrollPosition: value => dispatch(actions.ui.setUIToolbarScrollPosition(value))\n});\n\nconst ConnectedPluridMoreMenu = reactRedux.connect(mapStateToProperties$d, mapDispatchToProperties$d, null, {\n context: StateContext\n})(PluridMoreMenu);\n\nconst StyledPluridToolbarRotate = styled__default[\"default\"].div`\n display: grid;\n align-items: center;\n justify-items: center;\n grid-template-columns: ${props => {\n if (!props.showTransformButtons) {\n return \"1fr\";\n }\n return \"30px 30px 60px 30px 30px\";\n}};\n`;\n\nconst StyledPluridTransformArrow = styled__default[\"default\"].div`\n user-select: none;\n cursor: pointer;\n border-radius: 50px;\n width: 25px;\n height: 25px;\n display: grid;\n place-content: center;\n padding: 2px;\n\n background-color: ${({pressed: pressed, theme: theme}) => {\n if (pressed) {\n return theme.backgroundColorTertiary;\n }\n return \"initial\";\n}};\n\n :hover {\n background-color: ${({theme: theme}) => theme.backgroundColorTertiary};\n }\n`;\n\nconst arrowSigns = {\n left: \"◀\",\n right: \"▶\",\n up: \"▲\",\n down: \"▼\"\n};\n\nconst PluridTransformArrow = properties => {\n const {direction: direction, transform: transform, interactionTheme: interactionTheme} = properties;\n const arrowSign = arrowSigns[direction];\n const pressingInterval = React.useRef(null);\n const arrowElement = React.useRef(null);\n const [pressed, setPressed] = React.useState(false);\n const handleTouch = event => {\n switch (event.type) {\n case \"tap\":\n transform();\n if (pressingInterval.current) {\n setPressed(false);\n clearInterval(pressingInterval.current);\n }\n break;\n\n case \"press\":\n setPressed(true);\n pressingInterval.current = setInterval((() => {\n transform();\n }), 30);\n break;\n\n case \"pressup\":\n setPressed(false);\n if (pressingInterval.current) {\n clearInterval(pressingInterval.current);\n }\n break;\n }\n };\n const handleMouseLeave = () => {\n if (pressingInterval.current) {\n setPressed(false);\n clearInterval(pressingInterval.current);\n }\n };\n React.useEffect((() => {\n if (typeof window === \"undefined\") {\n return;\n }\n let touch;\n const loadTouch = () => __awaiter(void 0, void 0, void 0, (function*() {\n const HammerImport = yield loadHammer();\n const Hammer = HammerImport.default;\n touch = new Hammer(arrowElement.current);\n touch.on(\"tap press pressup\", handleTouch);\n }));\n loadTouch();\n return () => {\n if (touch) {\n touch.off(\"tap press pressup\", handleTouch);\n }\n };\n }), [ arrowElement.current ]);\n return React__default[\"default\"].createElement(StyledPluridTransformArrow, {\n ref: arrowElement,\n theme: interactionTheme,\n pressed: pressed,\n onMouseLeave: () => handleMouseLeave()\n }, arrowSign);\n};\n\nconst mapStateToProps$5 = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$5 = dispatch => ({});\n\nconst ConnectedPluridTransformArrow = reactRedux.connect(mapStateToProps$5, mapDispatchToProps$5, null, {\n context: StateContext\n})(PluridTransformArrow);\n\nconst PluridToolbarRotate = properties => {\n const {showTransformButtons: showTransformButtons, showIcons: showIcons, transformMode: transformMode, toggleTransform: toggleTransform, stateLanguage: stateLanguage, interactionTheme: interactionTheme, rotateUp: rotateUp, rotateDown: rotateDown, rotateLeft: rotateLeft, rotateRight: rotateRight} = properties;\n return React__default[\"default\"].createElement(StyledPluridToolbarRotate, {\n showTransformButtons: showTransformButtons\n }, showTransformButtons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"left\",\n transform: () => rotateRight()\n }), React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"up\",\n transform: () => rotateUp()\n })), React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: interactionTheme,\n onClick: () => toggleTransform(pluridData.TRANSFORM_MODES.ROTATION),\n active: transformMode === pluridData.TRANSFORM_MODES.ROTATION,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons,\n button: showIcons\n }, showIcons ? React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconRotate, null)) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarTransformRotate))), showTransformButtons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"down\",\n transform: () => rotateDown()\n }), React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"right\",\n transform: () => rotateLeft()\n })));\n};\n\nconst mapStateToProps$4 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$4 = dispatch => ({\n rotateUp: () => dispatch(actions.space.rotateUp()),\n rotateDown: () => dispatch(actions.space.rotateDown()),\n rotateLeft: () => dispatch(actions.space.rotateLeft()),\n rotateRight: () => dispatch(actions.space.rotateRight())\n});\n\nconst ConnectedPluridToolbarRotate = reactRedux.connect(mapStateToProps$4, mapDispatchToProps$4, null, {\n context: StateContext\n})(PluridToolbarRotate);\n\nconst StyledPluridToolbarScale = styled__default[\"default\"].div`\n display: grid;\n align-items: center;\n justify-items: center;\n grid-template-columns: ${props => {\n if (!props.showTransformButtons) {\n return \"1fr\";\n }\n return \"30px 60px 30px\";\n}};\n`;\n\nconst PluridToolbarScale = properties => {\n const {showTransformButtons: showTransformButtons, showIcons: showIcons, transformMode: transformMode, toggleTransform: toggleTransform, stateLanguage: stateLanguage, interactionTheme: interactionTheme, scaleUp: scaleUp, scaleDown: scaleDown} = properties;\n return React__default[\"default\"].createElement(StyledPluridToolbarScale, {\n showTransformButtons: showTransformButtons\n }, showTransformButtons && React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"up\",\n transform: () => scaleUp()\n }), React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: interactionTheme,\n onClick: () => toggleTransform(pluridData.TRANSFORM_MODES.SCALE),\n active: transformMode === pluridData.TRANSFORM_MODES.SCALE,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons,\n button: showIcons\n }, showIcons ? React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconScale, null)) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarTransformScale))), showTransformButtons && React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"down\",\n transform: () => scaleDown()\n }));\n};\n\nconst mapStateToProps$3 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$3 = dispatch => ({\n scaleUp: () => dispatch(actions.space.scaleUp()),\n scaleDown: () => dispatch(actions.space.scaleDown())\n});\n\nconst ConnectedPluridToolbarScale = reactRedux.connect(mapStateToProps$3, mapDispatchToProps$3, null, {\n context: StateContext\n})(PluridToolbarScale);\n\nconst StyledPluridToolbarTranslate = styled__default[\"default\"].div`\n display: grid;\n align-items: center;\n justify-items: center;\n grid-template-columns: ${props => {\n if (!props.showTransformButtons) {\n return \"1fr\";\n }\n return \"30px 30px 60px 30px 30px\";\n}};\n`;\n\nconst PluridToolbarTranslate = properties => {\n const {showTransformButtons: showTransformButtons, showIcons: showIcons, transformMode: transformMode, toggleTransform: toggleTransform, stateLanguage: stateLanguage, interactionTheme: interactionTheme, translateUp: translateUp, translateDown: translateDown, translateLeft: translateLeft, translateRight: translateRight} = properties;\n return React__default[\"default\"].createElement(StyledPluridToolbarTranslate, {\n showTransformButtons: showTransformButtons\n }, showTransformButtons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"left\",\n transform: () => translateLeft()\n }), React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"up\",\n transform: () => translateUp()\n })), React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: interactionTheme,\n onClick: () => toggleTransform(pluridData.TRANSFORM_MODES.TRANSLATION),\n active: transformMode === pluridData.TRANSFORM_MODES.TRANSLATION,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons,\n button: showIcons\n }, showIcons ? React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconTranslate, null)) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarTransformTranslate))), showTransformButtons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"down\",\n transform: () => translateDown()\n }), React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"right\",\n transform: () => translateRight()\n })));\n};\n\nconst mapStateToProperties$c = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$c = dispatch => ({\n translateUp: () => dispatch(actions.space.translateUp()),\n translateDown: () => dispatch(actions.space.translateDown()),\n translateLeft: () => dispatch(actions.space.translateLeft()),\n translateRight: () => dispatch(actions.space.translateRight())\n});\n\nconst ConnectedPluridToolbarTranslate = reactRedux.connect(mapStateToProperties$c, mapDispatchToProperties$c, null, {\n context: StateContext\n})(PluridToolbarTranslate);\n\nconst PluridToolbar = properties => {\n const {theme: theme, configuration: configuration, viewSize: viewSize, dispatchToggleConfigurationSpaceFirstPerson: dispatchToggleConfigurationSpaceFirstPerson, dispatchSetConfigurationSpaceTransformMode: dispatchSetConfigurationSpaceTransformMode} = properties;\n const {global: global, elements: elements, space: space} = configuration;\n const {transparentUI: transparentUI} = global;\n const {firstPerson: firstPerson, transformMode: transformMode, fadeInTime: fadeInTime} = space;\n const {toolbar: toolbar} = elements;\n const {conceal: conceal, opaque: opaque, transformIcons: transformIcons, transformButtons: transformButtons} = toolbar;\n const showToolbar = toolbar.show;\n const menuTimeout = React.useRef(null);\n const [mouseIn, setMouseIn] = React.useState(false);\n const [showMenu, setShowMenu] = React.useState(MENUS.NONE);\n const [showIcons, setShowIcons] = React.useState(transformIcons);\n const [showTransformButtons, setShowTransformButtons] = React.useState(transformButtons);\n const [isMounted, setIsMounted] = React.useState(false);\n const toggleTransform = TYPE => {\n if (showMenu !== MENUS.NONE) {\n setShowMenu(MENUS.NONE);\n }\n dispatchSetConfigurationSpaceTransformMode(TYPE);\n };\n const handleShowMenu = menu => {\n if (showMenu === menu) {\n setShowMenu(MENUS.NONE);\n } else {\n dispatchSetConfigurationSpaceTransformMode(pluridData.TRANSFORM_MODES.ALL);\n setShowMenu(menu);\n }\n };\n React.useEffect((() => {\n setIsMounted(true);\n }), []);\n React.useEffect((() => {\n if (viewSize.width < VIEW_SIZE_WIDTH_LIMIT) {\n if (transformButtons) {\n setShowTransformButtons(false);\n }\n }\n if (viewSize.width > VIEW_SIZE_WIDTH_LIMIT) {\n setShowTransformButtons(transformButtons);\n }\n }), [ viewSize.width ]);\n React.useEffect((() => {\n setShowIcons(transformIcons);\n setShowTransformButtons(transformButtons);\n }), [ transformIcons, transformButtons ]);\n React.useEffect((() => {\n if (mouseIn && menuTimeout.current) {\n clearTimeout(menuTimeout.current);\n }\n if (!mouseIn) {\n menuTimeout.current = setTimeout((() => {\n setShowMenu(MENUS.NONE);\n }), 400);\n }\n return () => {\n if (menuTimeout.current) {\n clearTimeout(menuTimeout.current);\n }\n };\n }), [ mouseIn ]);\n if (!showToolbar) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledToolbar, {\n onMouseEnter: () => setMouseIn(true),\n onMouseLeave: () => setMouseIn(false),\n mouseIn: mouseIn,\n conceal: conceal,\n showMenu: showMenu,\n isMounted: isMounted,\n fadeInTime: fadeInTime,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_TOOLBAR\n }, React__default[\"default\"].createElement(StyledToolbarButtons, {\n theme: theme,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons,\n documentsBased: false,\n mouseIn: mouseIn,\n opaque: opaque,\n transparentUI: transparentUI\n }, React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: theme,\n onClick: () => dispatchToggleConfigurationSpaceFirstPerson(),\n active: firstPerson,\n button: true,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons\n }, React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconFirstPerson, null))), React__default[\"default\"].createElement(ConnectedPluridToolbarRotate, {\n showTransformButtons: showTransformButtons,\n showIcons: showIcons,\n transformMode: transformMode,\n toggleTransform: toggleTransform\n }), React__default[\"default\"].createElement(ConnectedPluridToolbarScale, {\n showTransformButtons: showTransformButtons,\n showIcons: showIcons,\n transformMode: transformMode,\n toggleTransform: toggleTransform\n }), React__default[\"default\"].createElement(ConnectedPluridToolbarTranslate, {\n showTransformButtons: showTransformButtons,\n showIcons: showIcons,\n transformMode: transformMode,\n toggleTransform: toggleTransform\n }), React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: theme,\n onClick: () => handleShowMenu(MENUS.MORE),\n active: showMenu === MENUS.MORE,\n button: true,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons\n }, React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconMore, null)))), showMenu === MENUS.UNIVERSES && React__default[\"default\"].createElement(ConnectedPluridMenuUniverses, null), showMenu === MENUS.MORE && React__default[\"default\"].createElement(ConnectedPluridMoreMenu, null));\n};\n\nconst mapStateToProperties$b = state => ({\n configuration: selectors.configuration.getConfiguration(state),\n theme: selectors.themes.getInteractionTheme(state),\n viewSize: selectors.space.getViewSize(state)\n});\n\nconst mapDispatchToProperties$b = dispatch => ({\n dispatchToggleConfigurationSpaceFirstPerson: () => dispatch(actions.configuration.toggleConfigurationSpaceFirstPerson()),\n dispatchSetConfigurationSpaceTransformMode: mode => dispatch(actions.configuration.setConfigurationSpaceTransformMode(mode))\n});\n\nconst ConnectedPluridToolbar = reactRedux.connect(mapStateToProperties$b, mapDispatchToProperties$b, null, {\n context: StateContext\n})(PluridToolbar);\n\nconst StyledPluridViewcube = styled__default[\"default\"].div`\n position: absolute;\n @media (max-width: 800px) {\n top: ${({conceal: conceal, mouseOver: mouseOver}) => {\n if (conceal && !mouseOver) {\n return \"-90px\";\n }\n return \"0\";\n}};\n }\n bottom: ${({conceal: conceal, mouseOver: mouseOver}) => {\n if (conceal && !mouseOver) {\n return \"-90px\";\n }\n return \"0\";\n}};\n right: ${({conceal: conceal, mouseOver: mouseOver}) => {\n if (conceal && !mouseOver) {\n return \"-100px\";\n }\n return \"0\";\n}};\n position: absolute;\n user-select: none;\n transition: all 300ms ease-in-out;\n z-index: 9998;\n height: 165px;\n display: grid;\n grid-template-areas: \"PVScale PVScale PVScale PVScale\"\n \"PVEmptyOne PVRotateUp PVEmptyTwo PVTranslateY\"\n \"PVRotateLeft PVModel PVRotateRight PVTranslateY\"\n \"PVEmptyThree PVRotateDown PVFitview PVTranslateY\"\n \"PVTranslateX PVTranslateX PVTranslateX PVTranslateX\";\n grid-template-rows: 20px 15px 95px 15px 20px;\n grid-template-columns: 15px 115px 15px 20px;\n\n opacity: ${({fadeInTime: fadeInTime}) => {\n if (fadeInTime) {\n return \"0\";\n }\n return \"1\";\n}};\n animation: ${({fadeInTime: fadeInTime, isMounted: isMounted}) => {\n if (isMounted && fadeInTime) {\n return fadeInAnimation(fadeInTime);\n }\n return \"\";\n}};\n\n :hover {\n opacity: 1;\n }\n`;\n\nconst StyledPluridViewcubeArrow = styled__default[\"default\"].div`\n display: grid;\n place-content: center;\n\n /* TODO\n * Themed color\n */\n color: white;\n`;\n\nconst StyledPluridViewcubeArrowIcon = styled__default[\"default\"].div`\n user-select: none;\n font-size: 0.6rem;\n width: 1.2rem;\n height: 1.2rem;\n border-radius: 0.6rem;\n display: grid;\n place-content: center;\n cursor: pointer;\n\n :hover {\n background-color: ${({theme: theme}) => theme.backgroundColorTertiary};\n }\n`;\n\nconst StyledFitView = styled__default[\"default\"].div`\n grid-area: PVFitview;\n display: grid;\n place-content: center;\n cursor: pointer;\n user-select: none;\n\n svg {\n height: 0.8rem;\n width: 0.8rem;\n fill: white;\n }\n`;\n\nconst StyledPluridViewcubeFace = styled__default[\"default\"].div`\n font-size: 0.6rem;\n position: absolute;\n height: 50px;\n width: 50px;\n pointer-events: none;\n display: grid;\n transform-style: preserve-3d;\n grid-template-areas: \"PVFTopLeft PVFTopCenter PVFTopRight\"\n \"PVFMiddleLeft PVFMiddleCenter PVFMiddleRight\"\n \"PVFBottomLeft PVFBottomCenter PVFBottomRight\";\n grid-template-rows: 10px 30px 10px;\n grid-template-columns: 10px 30px 10px;\n box-sizing: content-box;\n transition: all 300ms linear;\n\n border: 1px solid ${({mouseOver: mouseOver, theme: theme}) => {\n if (mouseOver) {\n return theme.colorTertiary;\n }\n return theme.backgroundColorSecondary;\n}};\n box-shadow: ${({face: face, theme: theme}) => {\n if (face === \"base\") {\n return \"0px 0px 12px 2px \" + theme.boxShadowPenumbraColor;\n }\n return \"\";\n}};\n opacity: ${({opaque: opaque, mouseOver: mouseOver}) => {\n if (!opaque) {\n if (mouseOver) {\n return \"0.8\";\n }\n if (!mouseOver) {\n return \"0.4\";\n }\n }\n return \"1\";\n}};\n transform: ${({face: face}) => {\n switch (face) {\n case \"front\":\n return \"translateZ(25px) rotateY(0deg)\";\n\n case \"back\":\n return \"translateZ(-25px) rotateY(-180deg)\";\n\n case \"left\":\n return \"translateX(-25px) rotateY(-90deg)\";\n\n case \"right\":\n return \"translateX(25px) rotateY(90deg)\";\n\n case \"top\":\n return \"translateY(-25px) rotateX(90deg)\";\n\n case \"base\":\n return \"translateY(25px) rotateX(-90deg)\";\n }\n return \"\";\n}};\n`;\n\nconst StyledPluridViewcubeFaceZone = styled__default[\"default\"].div`\n display: grid;\n place-content: center;\n cursor: pointer;\n pointer-events: all;\n\n grid-area: ${({type: type}) => `PVF${type}`};\n color: ${({theme: theme, hovered: hovered}) => {\n if (hovered) {\n return theme.colorPrimary;\n }\n return theme.colorSecondary;\n}};\n background-color: ${({theme: theme, transparentUI: transparentUI, hovered: hovered, active: active}) => {\n if (transparentUI && !hovered) {\n return theme.backgroundColorPrimaryAlpha;\n }\n if (active) {\n return theme.backgroundColorTertiary;\n }\n if (hovered) {\n return theme.backgroundColorTertiary;\n }\n return theme.backgroundColorSecondary;\n}};\n border: 1px solid ${({theme: theme, transparentUI: transparentUI, hovered: hovered}) => {\n if (transparentUI && !hovered) {\n return \"transparent\";\n }\n if (hovered) {\n return theme.colorTertiary;\n }\n return theme.backgroundColorSecondary;\n}};\n\n :hover {\n background-color: ${({theme: theme}) => theme.backgroundColorTertiary};\n }\n`;\n\nconst faceTypes = {\n topLeft: \"TopLeft\",\n topCenter: \"TopCenter\",\n topRight: \"TopRight\",\n middleLeft: \"MiddleLeft\",\n middleCenter: \"MiddleCenter\",\n middleRight: \"MiddleRight\",\n bottomLeft: \"BottomLeft\",\n bottomCenter: \"BottomCenter\",\n bottomRight: \"BottomRight\"\n};\n\nconst zoneCodes = {\n frontTopLeft: \"A1\",\n frontTopCenter: \"A2\",\n frontTopRight: \"A3\",\n frontMiddleLeft: \"B1\",\n frontMiddleCenter: \"B2\",\n frontMiddleRight: \"B3\",\n frontBottomLeft: \"C1\",\n frontBottomCenter: \"C2\",\n frontBottomRight: \"C3\",\n rightTopLeft: \"A3\",\n rightTopCenter: \"A4\",\n rightTopRight: \"A5\",\n rightMiddleLeft: \"B3\",\n rightMiddleCenter: \"B4\",\n rightMiddleRight: \"B5\",\n rightBottomLeft: \"C3\",\n rightBottomCenter: \"C4\",\n rightBottomRight: \"C5\",\n backTopLeft: \"A5\",\n backTopCenter: \"A6\",\n backTopRight: \"A7\",\n backMiddleLeft: \"B5\",\n backMiddleCenter: \"B6\",\n backMiddleRight: \"B7\",\n backBottomLeft: \"C5\",\n backBottomCenter: \"C6\",\n backBottomRight: \"C7\",\n leftTopLeft: \"A7\",\n leftTopCenter: \"A8\",\n leftTopRight: \"A1\",\n leftMiddleLeft: \"B7\",\n leftMiddleCenter: \"B8\",\n leftMiddleRight: \"B1\",\n leftBottomLeft: \"C7\",\n leftBottomCenter: \"C8\",\n leftBottomRight: \"C1\",\n topTopLeft: \"A7\",\n topTopCenter: \"A6\",\n topTopRight: \"A5\",\n topMiddleLeft: \"A8\",\n topMiddleCenter: \"D1\",\n topMiddleRight: \"A4\",\n topBottomLeft: \"A1\",\n topBottomCenter: \"A2\",\n topBottomRight: \"A3\",\n baseTopLeft: \"C1\",\n baseTopCenter: \"C2\",\n baseTopRight: \"C3\",\n baseMiddleLeft: \"C8\",\n baseMiddleCenter: \"E1\",\n baseMiddleRight: \"C4\",\n baseBottomLeft: \"C7\",\n baseBottomCenter: \"C6\",\n baseBottomRight: \"C5\"\n};\n\nconst faceTransform = {\n A1: {\n rotateX: -45,\n rotateY: 45\n },\n A2: {\n rotateX: -45,\n rotateY: 0\n },\n A3: {\n rotateX: -45,\n rotateY: -45\n },\n B1: {\n rotateX: 0,\n rotateY: 45\n },\n B2: {\n rotateX: 0,\n rotateY: 0\n },\n B3: {\n rotateX: 0,\n rotateY: -45\n },\n C1: {\n rotateX: 45,\n rotateY: 45\n },\n C2: {\n rotateX: 45,\n rotateY: 0\n },\n C3: {\n rotateX: 45,\n rotateY: -45\n },\n A4: {\n rotateX: -45,\n rotateY: 270.1\n },\n A5: {\n rotateX: -45,\n rotateY: 225\n },\n B4: {\n rotateX: 0,\n rotateY: 270.1\n },\n B5: {\n rotateX: 0,\n rotateY: 225\n },\n C4: {\n rotateX: 45,\n rotateY: 270.1\n },\n C5: {\n rotateX: 45,\n rotateY: 225\n },\n A6: {\n rotateX: -45,\n rotateY: 180\n },\n A7: {\n rotateX: -45,\n rotateY: 135\n },\n B6: {\n rotateX: 0,\n rotateY: 180.1\n },\n B7: {\n rotateX: 0,\n rotateY: 135\n },\n C6: {\n rotateX: 45,\n rotateY: 180.1\n },\n C7: {\n rotateX: 45,\n rotateY: 135\n },\n A8: {\n rotateX: -45,\n rotateY: 90.1\n },\n B8: {\n rotateX: 0,\n rotateY: 90.1\n },\n C8: {\n rotateX: 45,\n rotateY: 90.1\n },\n D1: {\n rotateX: -90.1,\n rotateY: 0\n },\n E1: {\n rotateX: 90.1,\n rotateY: 0\n }\n};\n\nconst PluridViewcubeFace = properties => {\n const {face: face, faceText: faceText, mouseOver: mouseOver, hoveredZone: hoveredZone, setHoveredZone: setHoveredZone, activeZone: activeZone, setActiveZone: setActiveZone, generalTheme: generalTheme, interactionTheme: interactionTheme, configuration: configuration, dispatchRotateX: dispatchRotateX, dispatchRotateY: dispatchRotateY, dispatchSetAnimatedTransform: dispatchSetAnimatedTransform} = properties;\n const {global: global, elements: elements} = configuration;\n const {transparentUI: transparentUI} = global;\n const opaqueFace = elements.viewcube.opaque;\n const handleClick = type => {\n const faceType = `${face}${type}`;\n const zoneCode = zoneCodes[faceType];\n const transform = faceTransform[zoneCode];\n setActiveZone(zoneCode);\n dispatchSetAnimatedTransform(true);\n dispatchRotateX(transform.rotateX);\n dispatchRotateY(transform.rotateY);\n setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), 450);\n };\n return React__default[\"default\"].createElement(StyledPluridViewcubeFace, {\n theme: generalTheme,\n face: face,\n opaque: opaqueFace,\n mouseOver: mouseOver\n }, React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.topLeft,\n active: activeZone === zoneCodes[`${face}${faceTypes.topLeft}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.topLeft}`],\n onClick: () => handleClick(faceTypes.topLeft),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.topLeft}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.topCenter,\n active: activeZone === zoneCodes[`${face}${faceTypes.topCenter}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.topCenter}`],\n onClick: () => handleClick(faceTypes.topCenter),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.topCenter}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.topRight,\n active: activeZone === zoneCodes[`${face}${faceTypes.topRight}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.topRight}`],\n onClick: () => handleClick(faceTypes.topRight),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.topRight}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.middleLeft,\n active: activeZone === zoneCodes[`${face}${faceTypes.middleLeft}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.middleLeft}`],\n onClick: () => handleClick(faceTypes.middleLeft),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.middleLeft}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.middleCenter,\n active: activeZone === zoneCodes[`${face}${faceTypes.middleCenter}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.middleCenter}`],\n onClick: () => handleClick(faceTypes.middleCenter),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.middleCenter}`]),\n transparentUI: transparentUI\n }, faceText), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.middleRight,\n active: activeZone === zoneCodes[`${face}${faceTypes.middleRight}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.middleRight}`],\n onClick: () => handleClick(faceTypes.middleRight),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.middleRight}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.bottomLeft,\n active: activeZone === zoneCodes[`${face}${faceTypes.bottomLeft}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.bottomLeft}`],\n onClick: () => handleClick(faceTypes.bottomLeft),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.bottomLeft}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.bottomCenter,\n active: activeZone === zoneCodes[`${face}${faceTypes.bottomCenter}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.bottomCenter}`],\n onClick: () => handleClick(faceTypes.bottomCenter),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.bottomCenter}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.bottomRight,\n active: activeZone === zoneCodes[`${face}${faceTypes.bottomRight}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.bottomRight}`],\n onClick: () => handleClick(faceTypes.bottomRight),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.bottomRight}`]),\n transparentUI: transparentUI\n }));\n};\n\nconst mapStateToProperties$a = state => ({\n generalTheme: selectors.themes.getGeneralTheme(state),\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProperties$a = dispatch => ({\n dispatchRotateX: angleX => dispatch(actions.space.rotateX(angleX)),\n dispatchRotateY: angleY => dispatch(actions.space.rotateY(angleY)),\n dispatchSetAnimatedTransform: animated => dispatch(actions.space.setAnimatedTransform(animated))\n});\n\nconst ConnectedPluridViewcubeFace = reactRedux.connect(mapStateToProperties$a, mapDispatchToProperties$a, null, {\n context: StateContext\n})(PluridViewcubeFace);\n\nconst StyledPluridViewcubeModel = styled__default[\"default\"].div`\n grid-area: PVModel;\n`;\n\nconst StyledPluridViewcubeModelContainer = styled__default[\"default\"].div`\n perspective: 2000px;\n perspective-origin: 50% 50%;\n`;\n\nconst StyledPluridViewcubeModelCube = styled__default[\"default\"].div`\n transform-style: preserve-3d;\n width: 50px;\n height: 50px;\n`;\n\nconst {matrixArrayToCSSMatrix: matrixArrayToCSSMatrix, rotateMatrix: rotateMatrix, multiplyArrayOfMatrices: multiplyArrayOfMatrices, scaleMatrix: scaleMatrix, translateMatrix: translateMatrix$1} = pluridEngine.interaction.matrix;\n\nconst {degToRad: degToRad$1} = pluridEngine.interaction.quaternion;\n\nconst PluridViewcubeModel = properties => {\n const {mouseOver: mouseOver, stateLanguage: stateLanguage, spaceRotationX: spaceRotationX, spaceRotationY: spaceRotationY, stateAnimatedTransform: stateAnimatedTransform, stateTransformTime: stateTransformTime} = properties;\n const [hoveredZone, setHoveredZone] = React.useState(\"\");\n const [activeZone, setActiveZone] = React.useState(\"\");\n const handleMouseLeave = () => {\n setHoveredZone(\"\");\n };\n const computeTransform = () => {\n const offsets = {\n x: 32,\n y: 23,\n z: 0\n };\n const transformOrigins = {\n x: 0,\n y: 0,\n z: 0\n };\n const scale = 1;\n const rotationMatrix = rotateMatrix(degToRad$1(-spaceRotationX), degToRad$1(-spaceRotationY));\n const translationMatrix = translateMatrix$1(offsets.x, offsets.y, offsets.z);\n const scalationMatrix = scaleMatrix(scale);\n const transformMatrix = multiplyArrayOfMatrices([ translationMatrix, multiplyArrayOfMatrices([ translateMatrix$1(transformOrigins.x, transformOrigins.y, transformOrigins.z), rotationMatrix, translateMatrix$1(-transformOrigins.x, -transformOrigins.y, -transformOrigins.z) ]), scalationMatrix ]);\n const transform = matrixArrayToCSSMatrix(transformMatrix);\n return transform;\n };\n React.useEffect((() => {\n if (!hoveredZone) {\n setActiveZone(\"\");\n }\n }), [ spaceRotationX, spaceRotationY ]);\n const transform = computeTransform();\n return React__default[\"default\"].createElement(StyledPluridViewcubeModel, null, React__default[\"default\"].createElement(StyledPluridViewcubeModelContainer, null, React__default[\"default\"].createElement(StyledPluridViewcubeModelCube, {\n suppressHydrationWarning: true,\n style: {\n transform: transform,\n transition: mouseOver || stateAnimatedTransform ? `transform ${stateTransformTime}ms ease-in-out` : \"\"\n },\n onMouseLeave: () => handleMouseLeave()\n }, React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"front\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeFront),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"back\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeBack),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"left\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeLeft),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"right\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeRight),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"top\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeTop),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"base\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeBase),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }))));\n};\n\nconst mapStateToProperties$9 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n spaceRotationX: selectors.space.getRotationX(state),\n spaceRotationY: selectors.space.getRotationY(state),\n stateAnimatedTransform: selectors.space.getAnimatedTransform(state),\n stateTransformTime: selectors.space.getTransformTime(state)\n});\n\nconst mapDispatchToProperties$9 = dispatch => ({});\n\nconst ConnectedPluridViewcubeModel = reactRedux.connect(mapStateToProperties$9, mapDispatchToProperties$9, null, {\n context: StateContext\n})(PluridViewcubeModel);\n\nconst PluridViewcube = properties => {\n const {stateConfiguration: stateConfiguration, stateInteractionTheme: stateInteractionTheme, stateTransformTime: stateTransformTime, dispatchRotateXWith: dispatchRotateXWith, dispatchRotateYWith: dispatchRotateYWith, dispatchSetAnimatedTransform: dispatchSetAnimatedTransform, dispatchSpaceResetTransform: dispatchSpaceResetTransform} = properties;\n const {elements: elements, space: space} = stateConfiguration;\n const {viewcube: viewcube} = elements;\n const {buttons: buttons, conceal: conceal} = viewcube;\n const {fadeInTime: fadeInTime} = space;\n const showViewcube = viewcube.show;\n const [mouseOver, setMouseOver] = React.useState(false);\n const [isMounted, setIsMounted] = React.useState(false);\n const animatedRotate = (type, value) => {\n dispatchSetAnimatedTransform(true);\n switch (type) {\n case \"rotateX\":\n dispatchRotateXWith(value);\n break;\n\n case \"rotateY\":\n dispatchRotateYWith(value);\n break;\n }\n setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), stateTransformTime);\n };\n const animatedReset = event => {\n if (event.ctrlKey || event.metaKey) {\n return;\n }\n dispatchSetAnimatedTransform(true);\n dispatchSpaceResetTransform();\n setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), stateTransformTime);\n };\n React.useEffect((() => {\n setIsMounted(true);\n }), []);\n if (!showViewcube) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledPluridViewcube, {\n onMouseEnter: () => setMouseOver(true),\n onMouseLeave: () => setMouseOver(false),\n onMouseMove: () => !mouseOver ? setMouseOver(true) : null,\n conceal: conceal,\n mouseOver: mouseOver,\n isMounted: isMounted,\n fadeInTime: fadeInTime,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_VIEWCUBE\n }, React__default[\"default\"].createElement(ConnectedPluridViewcubeModel, {\n mouseOver: mouseOver\n }), mouseOver && buttons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridViewcubeArrow, {\n style: {\n gridArea: \"PVRotateUp\"\n }\n }, React__default[\"default\"].createElement(StyledPluridViewcubeArrowIcon, {\n theme: stateInteractionTheme,\n onClick: () => animatedRotate(\"rotateX\", -90.1)\n }, \"▲\")), React__default[\"default\"].createElement(StyledPluridViewcubeArrow, {\n theme: stateInteractionTheme,\n style: {\n gridArea: \"PVRotateDown\"\n }\n }, React__default[\"default\"].createElement(StyledPluridViewcubeArrowIcon, {\n theme: stateInteractionTheme,\n onClick: () => animatedRotate(\"rotateX\", 90.1)\n }, \"▼\")), React__default[\"default\"].createElement(StyledPluridViewcubeArrow, {\n theme: stateInteractionTheme,\n style: {\n gridArea: \"PVRotateLeft\"\n }\n }, React__default[\"default\"].createElement(StyledPluridViewcubeArrowIcon, {\n theme: stateInteractionTheme,\n onClick: () => animatedRotate(\"rotateY\", 90.1)\n }, \"◀\")), React__default[\"default\"].createElement(StyledPluridViewcubeArrow, {\n theme: stateInteractionTheme,\n style: {\n gridArea: \"PVRotateRight\"\n }\n }, React__default[\"default\"].createElement(StyledPluridViewcubeArrowIcon, {\n theme: stateInteractionTheme,\n onClick: () => animatedRotate(\"rotateY\", -90.1)\n }, \"▶\")), React__default[\"default\"].createElement(StyledFitView, {\n onClick: animatedReset\n }, React__default[\"default\"].createElement(pluridIconsReact.PluridIconGlobal, null))));\n};\n\nconst mapStateToProperties$8 = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state),\n stateTransformTime: selectors.space.getTransformTime(state)\n});\n\nconst mapDispatchToProperties$8 = dispatch => ({\n dispatchRotateXWith: value => dispatch(actions.space.rotateXWith(value)),\n dispatchRotateYWith: value => dispatch(actions.space.rotateYWith(value)),\n dispatchSetAnimatedTransform: animated => dispatch(actions.space.setAnimatedTransform(animated)),\n dispatchSpaceResetTransform: () => dispatch(actions.space.spaceResetTransform())\n});\n\nconst ConnectedPluridViewcube = reactRedux.connect(mapStateToProperties$8, mapDispatchToProperties$8, null, {\n context: StateContext\n})(PluridViewcube);\n\nconst PluridPlanesView = properties => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridSpace, null), React__default[\"default\"].createElement(ConnectedOrigin, null), React__default[\"default\"].createElement(ConnectedPluridToolbar, null), React__default[\"default\"].createElement(ConnectedPluridViewcube, null));\n\nconst mapStateToProps$2 = state => ({});\n\nconst mapDispatchToProps$2 = dispatch => ({});\n\nconst ConnectedPluridPlanesView = reactRedux.connect(mapStateToProps$2, mapDispatchToProps$2, null, {\n context: StateContext\n})(PluridPlanesView);\n\nconst handleView = view => {\n if (view.length === 0) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(ConnectedPluridPlanesView, null);\n};\n\nconst {getRegisteredPlanes: getRegisteredPlanes} = pluridEngine.planes;\n\nconst PluridView = properties => {\n const {planesRegistrar: planesRegistrar, customPlane: customPlane, planeContext: planeContext, planeContextValue: planeContextValue, pubsub: pubsub, planeNotFound: planeNotFound, planeRenderError: planeRenderError, matchedRoute: matchedRoute, stateConfiguration: stateConfiguration, stateTransform: stateTransform, stateSpaceView: stateSpaceView, stateTree: stateTree, dispatch: dispatch, dispatchSetConfiguration: dispatchSetConfiguration, dispatchSetGeneralTheme: dispatchSetGeneralTheme, dispatchSetInteractionTheme: dispatchSetInteractionTheme, dispatchSetSpaceLocation: dispatchSetSpaceLocation, dispatchSetAnimatedTransform: dispatchSetAnimatedTransform, dispatchSetTransformTime: dispatchSetTransformTime, dispatchSetTree: dispatchSetTree, dispatchRotateXWith: dispatchRotateXWith, dispatchRotateX: dispatchRotateX, dispatchRotateYWith: dispatchRotateYWith, dispatchRotateY: dispatchRotateY, dispatchTranslateXWith: dispatchTranslateXWith, dispatchTranslateYWith: dispatchTranslateYWith, dispatchScaleUpWith: dispatchScaleUpWith, dispatchScaleDownWith: dispatchScaleDownWith, dispatchSpaceSetViewSize: dispatchSpaceSetViewSize, dispatchSpaceSetView: dispatchSpaceSetView} = properties;\n const viewElement = React.useRef(null);\n const [pluridPubSub, setPluridPubSub] = React.useState(pubsub ? [ pubsub ] : []);\n const shortcutsCallback = React.useCallback((event => {\n const {transformLocks: transformLocks} = stateConfiguration.space;\n handleGlobalShortcuts(dispatch, event, stateConfiguration.space.firstPerson, transformLocks);\n }), [ stateConfiguration.space.firstPerson, stateConfiguration.space.transformLocks, dispatch ]);\n const wheelCallback = React.useCallback((event => {\n const {transformMode: transformMode, transformLocks: transformLocks} = stateConfiguration.space;\n const transformModes = {\n rotation: transformMode === pluridData.TRANSFORM_MODES.ROTATION,\n translation: transformMode === pluridData.TRANSFORM_MODES.TRANSLATION,\n scale: transformMode === pluridData.TRANSFORM_MODES.SCALE\n };\n handleGlobalWheel(dispatch, event, transformModes, transformLocks);\n }), [ dispatch, stateConfiguration.space.transformMode, stateConfiguration.space.transformLocks ]);\n const treeUpdate = (view, configuration = stateConfiguration) => {\n const planes = getRegisteredPlanes(planesRegistrar);\n const spaceTree = new pluridEngine.space.tree.Tree({\n planes: planes,\n configuration: configuration,\n view: view\n });\n const computedTree = spaceTree.compute();\n for (const statePlane of stateTree) {\n for (const [index, computedPlane] of computedTree.entries()) {\n if (statePlane.route === computedPlane.route) {\n if (statePlane.children) {\n computedTree[index].children = statePlane.children;\n }\n }\n }\n }\n dispatchSetTree(computedTree);\n };\n const treeUpdateCallback = React.useCallback((() => {\n treeUpdate(stateSpaceView);\n }), [ stateSpaceView, stateConfiguration ]);\n const handlePubSubSubscribe = pubsub => {\n const configurationIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.CONFIGURATION,\n callback: data => {\n if (data.internal) {\n return;\n }\n const computedConfiguration = pluridEngine.general.configuration.merge(data, stateConfiguration);\n if (typeof computedConfiguration.global.theme === \"object\") {\n if (typeof computedConfiguration.global.theme.general === \"string\") {\n dispatchSetGeneralTheme(themes__default[\"default\"][computedConfiguration.global.theme.general]);\n } else {\n dispatchSetGeneralTheme(computedConfiguration.global.theme.general);\n }\n if (typeof computedConfiguration.global.theme.interaction === \"string\") {\n dispatchSetInteractionTheme(themes__default[\"default\"][computedConfiguration.global.theme.interaction]);\n } else {\n dispatchSetInteractionTheme(computedConfiguration.global.theme.interaction);\n }\n } else if (typeof computedConfiguration.global.theme === \"string\") {\n dispatchSetGeneralTheme(themes__default[\"default\"][computedConfiguration.global.theme]);\n dispatchSetInteractionTheme(themes__default[\"default\"][computedConfiguration.global.theme]);\n }\n dispatchSetConfiguration(computedConfiguration);\n }\n });\n const spaceTransformIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSFORM,\n callback: data => {\n const {value: value, internal: internal} = data;\n if (internal) {\n return;\n }\n dispatchSetSpaceLocation(value);\n }\n });\n const spaceAnimatedTransformIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ANIMATED_TRANSFORM,\n callback: data => {\n const {value: value} = data;\n dispatchSetAnimatedTransform(value.active);\n if (value.time) {\n dispatchSetTransformTime(value.time);\n } else {\n dispatchSetTransformTime(450);\n }\n }\n });\n const spaceRotateXWithIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_X_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchRotateXWith(value);\n }\n });\n const spaceRotateXToIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_X_TO,\n callback: data => {\n const {value: value} = data;\n dispatchRotateX(value);\n }\n });\n const spaceRotateYWithIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_Y_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchRotateYWith(value);\n }\n });\n const spaceRotateYToIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_Y_TO,\n callback: data => {\n const {value: value} = data;\n dispatchRotateY(value);\n }\n });\n const spaceTranslateXWithIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_X_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchTranslateXWith(value);\n }\n });\n const spaceTranslateYWithIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_Y_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchTranslateYWith(value);\n }\n });\n const viewAddPlaneIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.VIEW_ADD_PLANE,\n callback: data => {\n const {plane: plane} = data;\n const updatedView = [ ...stateSpaceView, plane ];\n dispatchSpaceSetView(updatedView);\n treeUpdate(updatedView);\n }\n });\n const viewSetPlanesIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.VIEW_SET_PLANES,\n callback: data => {\n const {view: view} = data;\n dispatchSpaceSetView([ ...view ]);\n treeUpdate(view);\n }\n });\n const viewRemovePlaneIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.VIEW_REMOVE_PLANE,\n callback: data => {\n const {plane: plane} = data;\n const updatedView = stateSpaceView.filter((view => {\n if (typeof view === \"string\") {\n return view === plane;\n }\n return true;\n }));\n dispatchSpaceSetView(updatedView);\n treeUpdate(updatedView);\n }\n });\n return () => {\n pubsub.unsubscribe(configurationIndex, pluridData.PLURID_PUBSUB_TOPIC.CONFIGURATION);\n pubsub.unsubscribe(spaceTransformIndex, pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSFORM);\n pubsub.unsubscribe(spaceAnimatedTransformIndex, pluridData.PLURID_PUBSUB_TOPIC.SPACE_ANIMATED_TRANSFORM);\n pubsub.unsubscribe(spaceRotateXWithIndex, pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_X_WITH);\n pubsub.unsubscribe(spaceRotateXToIndex, pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_X_TO);\n pubsub.unsubscribe(spaceRotateYWithIndex, pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_Y_WITH);\n pubsub.unsubscribe(spaceRotateYToIndex, pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_Y_TO);\n pubsub.unsubscribe(spaceTranslateXWithIndex, pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_X_WITH);\n pubsub.unsubscribe(spaceTranslateYWithIndex, pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_Y_WITH);\n pubsub.unsubscribe(viewAddPlaneIndex, pluridData.PLURID_PUBSUB_TOPIC.VIEW_ADD_PLANE);\n pubsub.unsubscribe(viewSetPlanesIndex, pluridData.PLURID_PUBSUB_TOPIC.VIEW_SET_PLANES);\n pubsub.unsubscribe(viewRemovePlaneIndex, pluridData.PLURID_PUBSUB_TOPIC.VIEW_REMOVE_PLANE);\n };\n };\n const handlePubSubPublish = pubsub => {\n const internalTransform = {\n value: Object.assign({}, stateTransform),\n internal: true\n };\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSFORM,\n data: internalTransform\n });\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.CONFIGURATION,\n data: Object.assign(Object.assign({}, stateConfiguration), {\n internal: true\n })\n });\n };\n const registerPubSub = pubsub => {\n const pluridPubSubs = [ ...pluridPubSub, pubsub ];\n setPluridPubSub(pluridPubSubs);\n };\n const handleSwipe = event => {\n const {transformMode: transformMode} = stateConfiguration.space;\n if (transformMode === pluridData.TRANSFORM_MODES.ALL) {\n return;\n }\n const {velocity: velocity, distance: distance, direction: direction} = event;\n const rotationMode = transformMode === pluridData.TRANSFORM_MODES.ROTATION;\n const translationMode = transformMode === pluridData.TRANSFORM_MODES.TRANSLATION;\n const scalationMode = transformMode === pluridData.TRANSFORM_MODES.SCALE;\n dispatchSetAnimatedTransform(true);\n switch (direction) {\n case 2:\n if (rotationMode) {\n dispatchRotateYWith(velocity * 60);\n }\n if (translationMode) {\n dispatchTranslateXWith(-1 * distance);\n }\n break;\n\n case 4:\n if (rotationMode) {\n dispatchRotateYWith(velocity * 60);\n }\n if (translationMode) {\n dispatchTranslateXWith(distance);\n }\n break;\n\n case 8:\n if (rotationMode) {\n dispatchRotateXWith(velocity * 60);\n }\n if (translationMode) {\n dispatchTranslateYWith(-1 * distance);\n }\n if (scalationMode) {\n dispatchScaleUpWith(velocity);\n }\n break;\n\n case 16:\n if (rotationMode) {\n dispatchRotateXWith(velocity * 60);\n }\n if (translationMode) {\n dispatchTranslateYWith(distance);\n }\n if (scalationMode) {\n dispatchScaleDownWith(velocity);\n }\n break;\n }\n setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), 450);\n };\n const handlePan = event => {\n const {transformMode: transformMode} = stateConfiguration.space;\n if (transformMode === pluridData.TRANSFORM_MODES.ALL) {\n return;\n }\n const {velocity: velocity, distance: distance, direction: direction} = event;\n const rotationMode = transformMode === pluridData.TRANSFORM_MODES.ROTATION;\n const translationMode = transformMode === pluridData.TRANSFORM_MODES.TRANSLATION;\n const scalationMode = transformMode === pluridData.TRANSFORM_MODES.SCALE;\n const rotationVelocity = velocity * 20;\n const translationVelocity = distance / 5;\n const scaleVelocity = velocity / 4;\n switch (direction) {\n case 2:\n if (rotationMode) {\n dispatchRotateYWith(rotationVelocity);\n }\n if (translationMode) {\n dispatchTranslateXWith(-1 * translationVelocity);\n }\n break;\n\n case 4:\n if (rotationMode) {\n dispatchRotateYWith(rotationVelocity);\n }\n if (translationMode) {\n dispatchTranslateXWith(translationVelocity);\n }\n break;\n\n case 8:\n if (rotationMode) {\n dispatchRotateXWith(rotationVelocity);\n }\n if (translationMode) {\n dispatchTranslateYWith(-1 * translationVelocity);\n }\n if (scalationMode) {\n dispatchScaleUpWith(scaleVelocity);\n }\n break;\n\n case 16:\n if (rotationMode) {\n dispatchRotateXWith(rotationVelocity);\n }\n if (translationMode) {\n dispatchTranslateYWith(translationVelocity);\n }\n if (scalationMode) {\n dispatchScaleDownWith(scaleVelocity);\n }\n break;\n }\n };\n React.useEffect((() => {\n if (viewElement.current) {\n viewElement.current.addEventListener(\"keydown\", shortcutsCallback, {\n passive: false\n });\n viewElement.current.addEventListener(\"wheel\", wheelCallback, {\n passive: false\n });\n }\n return () => {\n if (viewElement.current) {\n viewElement.current.removeEventListener(\"keydown\", shortcutsCallback);\n viewElement.current.removeEventListener(\"wheel\", wheelCallback);\n }\n };\n }), [ viewElement.current, stateConfiguration.space.transformMode, stateConfiguration.space.firstPerson ]);\n React.useEffect((() => {\n const handleResize = pluridFunctions.meta.debounce((() => {\n if (viewElement && viewElement.current) {\n const width = viewElement.current.offsetWidth;\n const height = viewElement.current.offsetHeight;\n dispatchSpaceSetViewSize({\n width: width,\n height: height\n });\n }\n }), 150);\n handleResize();\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }), []);\n React.useEffect((() => {\n window.addEventListener(\"resize\", treeUpdateCallback);\n return () => {\n window.removeEventListener(\"resize\", treeUpdateCallback);\n };\n }), [ stateSpaceView, stateConfiguration ]);\n React.useEffect((() => {\n if (typeof window === \"undefined\") {\n return;\n }\n let touch;\n const handleTouch = () => __awaiter(void 0, void 0, void 0, (function*() {\n const HammerImport = yield loadHammer();\n const Hammer = HammerImport.default;\n const {transformTouch: transformTouch} = stateConfiguration.space;\n delete Hammer.defaults.cssProps.userSelect;\n delete Hammer.defaults.cssProps.userDrag;\n delete Hammer.defaults.cssProps.tapHighlightColor;\n delete Hammer.defaults.cssProps.touchSelect;\n if (!viewElement.current) {\n return;\n }\n touch = new Hammer(viewElement.current);\n touch.get(\"pan\").set({\n direction: Hammer.DIRECTION_ALL\n });\n touch.get(\"swipe\").set({\n direction: Hammer.DIRECTION_ALL\n });\n if (transformTouch === pluridData.TRANSFORM_TOUCHES.PAN) {\n touch.on(\"pan\", handlePan);\n } else {\n touch.on(\"swipe\", handleSwipe);\n }\n }));\n handleTouch();\n return () => {\n if (!touch) {\n return;\n }\n const {transformTouch: transformTouch} = stateConfiguration.space;\n if (transformTouch === pluridData.TRANSFORM_TOUCHES.PAN) {\n touch.off(\"pan\", handlePan);\n } else {\n touch.off(\"swipe\", handleSwipe);\n }\n };\n }), [ viewElement.current, stateConfiguration.space.transformTouch, stateConfiguration.space.transformMode ]);\n React.useEffect((() => {\n const handleGamepadConnect = event => {\n const gamepad = navigator.getGamepads()[event.gamepad.index];\n if (!gamepad) {\n return;\n }\n };\n const handleGamepadDisconnect = event => {\n const gamepad = navigator.getGamepads()[event.gamepad.index];\n if (!gamepad) {\n return;\n }\n };\n window.addEventListener(\"gamepadconnected\", handleGamepadConnect);\n window.addEventListener(\"gamepaddisconnected\", handleGamepadDisconnect);\n return () => {\n window.removeEventListener(\"gamepadconnected\", handleGamepadConnect);\n window.removeEventListener(\"gamepaddisconnected\", handleGamepadDisconnect);\n };\n }), []);\n React.useEffect((() => {\n const unsubscribers = [];\n for (const pubsub of pluridPubSub) {\n const unsubscriber = handlePubSubSubscribe(pubsub);\n unsubscribers.push(unsubscriber);\n }\n return () => {\n for (const unsubscriber of unsubscribers) {\n unsubscriber();\n }\n };\n }), [ pluridPubSub.length ]);\n React.useEffect((() => {\n for (const pubsub of pluridPubSub) {\n handlePubSubPublish(pubsub);\n }\n }), [ pluridPubSub.length, stateConfiguration, stateTransform ]);\n const pluridContext = {\n planesRegistrar: planesRegistrar,\n planeContext: planeContext,\n planeContextValue: planeContextValue,\n customPlane: customPlane,\n planeNotFound: planeNotFound,\n planeRenderError: planeRenderError,\n matchedRoute: matchedRoute,\n registerPubSub: registerPubSub\n };\n const viewContainer = handleView(stateSpaceView);\n return React__default[\"default\"].createElement(StyledView, {\n ref: viewElement,\n tabIndex: 0,\n transformMode: stateConfiguration.space.transformMode,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_VIEW\n }, React__default[\"default\"].createElement(GlobalStyle, null), React__default[\"default\"].createElement(Context.Provider, {\n value: pluridContext\n }, viewContainer));\n};\n\nconst mapStateToProperties$7 = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateTransform: selectors.space.getTransform(state),\n stateTree: selectors.space.getTree(state),\n stateSpaceLoading: selectors.space.getLoading(state),\n stateSpaceView: selectors.space.getView(state)\n});\n\nconst mapDispatchToProperties$7 = dispatch => ({\n dispatch: dispatch,\n dispatchSetConfiguration: configuration => dispatch(actions.configuration.setConfiguration(configuration)),\n dispatchSetConfigurationMicro: () => dispatch(actions.configuration.setConfigurationMicro()),\n dispatchSpaceSetViewSize: viewSize => dispatch(actions.space.setViewSize(viewSize)),\n dispatchSetSpaceLoading: loading => dispatch(actions.space.setSpaceLoading(loading)),\n dispatchSetAnimatedTransform: animated => dispatch(actions.space.setAnimatedTransform(animated)),\n dispatchSetTransformTime: value => dispatch(actions.space.setTransformTime(value)),\n dispatchSetSpaceLocation: spaceLocation => dispatch(actions.space.setSpaceLocation(spaceLocation)),\n dispatchSetInitialTree: tree => dispatch(actions.space.setInitialTree(tree)),\n dispatchSetTree: tree => dispatch(actions.space.setTree(tree)),\n dispatchSetGeneralTheme: theme => dispatch(actions.themes.setGeneralTheme(theme)),\n dispatchSetInteractionTheme: theme => dispatch(actions.themes.setInteractionTheme(theme)),\n dispatchRotateX: value => dispatch(actions.space.rotateX(value)),\n dispatchRotateXWith: value => dispatch(actions.space.rotateXWith(value)),\n dispatchRotateY: value => dispatch(actions.space.rotateY(value)),\n dispatchRotateYWith: value => dispatch(actions.space.rotateYWith(value)),\n dispatchTranslateXWith: value => dispatch(actions.space.translateXWith(value)),\n dispatchTranslateYWith: value => dispatch(actions.space.translateYWith(value)),\n dispatchScaleUpWith: value => dispatch(actions.space.scaleUpWith(value)),\n dispatchScaleDownWith: value => dispatch(actions.space.scaleDownWith(value)),\n dispatchSpaceSetView: view => dispatch(actions.space.spaceSetView(view))\n});\n\nconst ConnectedView = reactRedux.connect(mapStateToProperties$7, mapDispatchToProperties$7, null, {\n context: StateContext\n})(PluridView);\n\nconst {registerPlanes: registerPlanes} = pluridEngine.planes;\n\nclass PluridApplication extends React.Component {\n constructor(properties, context) {\n super(properties);\n this.storeID = properties.id || \"default\";\n this.context = context;\n const defaultStore = this.computeStore();\n this.store = store(defaultStore);\n this.subscribeStore();\n }\n componentDidUpdate() {\n const updatedStore = this.computeStore();\n this.store.dispatch({\n type: \"SET_STATE\",\n payload: updatedStore\n });\n }\n componentWillUnmount() {\n if (this.storeUnubscriber) {\n this.storeUnubscriber();\n }\n }\n render() {\n return React__default[\"default\"].createElement(reactRedux.Provider, {\n store: this.store,\n context: StateContext\n }, React__default[\"default\"].createElement(ConnectedView, Object.assign({}, this.props)));\n }\n computeStore() {\n const {view: view, planes: planes, configuration: configuration, precomputedState: precomputedState, planesRegistrar: planesRegistrar, id: id, useLocalStorage: useLocalStorage} = this.props;\n registerPlanes(planes, planesRegistrar);\n const currentState = this.store ? this.store.getState() : undefined;\n const localState = pluridEngine.state.local.load(this.storeID, useLocalStorage);\n const contextState = id && this.context && this.context.states[id] ? this.context.states[id] : undefined;\n const store = pluridEngine.state.compute(view, configuration, planesRegistrar, currentState, localState, precomputedState, contextState);\n return store;\n }\n subscribeStore() {\n if (!this.store) {\n return;\n }\n if (typeof localStorage === \"undefined\") {\n return;\n }\n if (!this.props.useLocalStorage) {\n return;\n }\n this.storeUnubscriber = this.store.subscribe((() => {\n const state = this.store.getState();\n const stateData = JSON.stringify(state);\n localStorage.setItem(\"pluridState-\" + this.storeID, stateData);\n }));\n }\n}\n\nPluridApplication.contextType = PluridContext;\n\nconst StyledSpaces = styled__default[\"default\"].div`\n scroll-snap-type: ${properties => {\n const {alignment: alignment, snapType: snapType} = properties;\n if (snapType === \"none\") {\n return \"none\";\n }\n return alignment + \" \" + snapType;\n}};\n\n flex-direction: ${properties => {\n const {alignment: alignment} = properties;\n if (alignment === \"x\") {\n return \"row\";\n }\n return \"column\";\n}};\n\n outline: none;\n overflow: auto;\n /* display: flex; */\n height: 100vh;\n height: -webkit-fill-available;\n width: 100vw;\n`;\n\nconst {resolvePluridRoutePlaneData: resolvePluridRoutePlaneData, Registrar: PluridPlanesRegistrar$1} = pluridEngine.planes;\n\nconst computeIndexedPlanes = (routes, protocol, host) => {\n const indexedPlanes = new Map;\n for (const path of routes) {\n if (path.planes) {\n for (const plane of path.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const pathName = path.value === \"/\" ? \"p\" : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = \"s\";\n const universeName = \"u\";\n const clusterName = \"c\";\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const planeAddressElements = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const planeAddress = planeAddressElements.join(\"://\");\n const indexedPlane = {\n protocol: protocol,\n host: host,\n path: pathName,\n space: spaceName,\n universe: universeName,\n cluster: clusterName,\n plane: planeName,\n component: planeData.component,\n route: planeAddress\n };\n indexedPlanes.set(planeAddress, indexedPlane);\n }\n }\n if (!path.spaces) {\n const pathName = path.value === \"/\" ? \"p\" : pluridEngine.utilities.cleanPathElement(path.value);\n const planeAddressElements = [ protocol, host, pathName ];\n const planeAddress = planeAddressElements.join(\"://\");\n const indexedPlane = {\n protocol: protocol,\n host: host,\n path: pathName,\n space: \"\",\n universe: \"\",\n cluster: \"\",\n plane: \"\",\n component: path.exterior || (() => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null)),\n route: planeAddress\n };\n indexedPlanes.set(planeAddress, indexedPlane);\n continue;\n }\n for (const space of path.spaces) {\n if (!space.universes) {\n continue;\n }\n for (const universe of space.universes) {\n if (!universe.clusters) {\n continue;\n }\n for (const cluster of universe.clusters) {\n for (const plane of cluster.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const pathName = path.value === \"/\" ? \"p\" : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = space.value === \"default\" ? \"s\" : pluridEngine.utilities.cleanPathElement(space.value);\n const universeName = universe.value === \"default\" ? \"u\" : pluridEngine.utilities.cleanPathElement(universe.value);\n const clusterName = cluster.value === \"default\" ? \"c\" : pluridEngine.utilities.cleanPathElement(cluster.value);\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const planeAddressElements = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const planeAddress = planeAddressElements.join(\"://\");\n const indexedPlane = {\n protocol: protocol,\n host: host,\n path: pathName,\n space: spaceName,\n universe: universeName,\n cluster: clusterName,\n plane: planeName,\n component: planeData.component,\n route: planeAddress\n };\n indexedPlanes.set(planeAddress, indexedPlane);\n }\n }\n }\n }\n }\n return indexedPlanes;\n};\n\nconst collectApplicationsFromPath = (isoMatch, protocol, host, globals) => __awaiter(void 0, void 0, void 0, (function*() {\n const path = {\n planes: [],\n spaces: [],\n view: [],\n value: \"\"\n };\n if (isoMatch.kind === \"Route\") {\n let routeData = isoMatch.data;\n if (isoMatch.data.resolver) {\n routeData = yield isoMatch.data.resolver(globals);\n }\n path.planes = routeData.planes || [];\n path.spaces = routeData.spaces || [];\n path.view = routeData.view || [];\n path.value = isoMatch.data.value || \"\";\n }\n const {planes: planes, spaces: spaces, view: view} = path;\n const plurids = [];\n if (spaces) {\n for (const space of spaces) {\n const planes = [];\n const view = [];\n if (space.planes) {\n for (const plane of space.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n pluridEngine.utilities.cleanPathElement(planeData.value);\n }\n }\n if (space.universes) {\n for (const universe of space.universes) {\n if (universe.clusters) {\n for (const cluster of universe.clusters) {\n for (const plane of cluster.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n universe.value === pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE : pluridEngine.utilities.cleanPathElement(universe.value);\n cluster.value === pluridData.PLURID_ROUTE_DEFAULT_CLUSTER_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_CLUSTER : pluridEngine.utilities.cleanPathElement(cluster.value);\n pluridEngine.utilities.cleanPathElement(planeData.value);\n }\n }\n }\n if (universe.planes) {\n for (const plane of universe.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n universe.value === pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE : pluridEngine.utilities.cleanPathElement(universe.value);\n pluridEngine.utilities.cleanPathElement(planeData.value);\n }\n }\n }\n }\n const pluridApplication = {\n planes: planes,\n view: view\n };\n plurids.push(pluridApplication);\n }\n }\n if (planes) {\n const pluridPlanes = [];\n for (const plane of planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n pluridEngine.utilities.cleanPathElement(planeData.value);\n }\n const pluridApplication = {\n planes: pluridPlanes,\n view: view || []\n };\n plurids.push(pluridApplication);\n }\n return plurids;\n}));\n\nconst gatherPluridPlanes = (routes, planes) => {\n const pluridPlanes = [];\n for (const route of routes) {\n if (route.planes) {\n for (const plane of route.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const planeRoute = planeData.link ? planeData.link : planeData.value.startsWith(\"/\") ? planeData.value : route.value + \"/\" + planeData.value;\n const pluridPlane = {\n route: planeRoute,\n component: planeData.component\n };\n pluridPlanes.push(pluridPlane);\n }\n }\n if (route.spaces) ;\n }\n if (planes) {\n for (const plane of planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const pluridPlane = {\n route: planeData.value,\n component: planeData.component\n };\n pluridPlanes.push(pluridPlane);\n }\n }\n return pluridPlanes;\n};\n\nconst renderMultispace = matchedRoute => {\n var _a, _b, _c, _d, _e, _f;\n if (matchedRoute.kind !== \"Route\") {\n return () => () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const protocol = \"http\";\n const host = \"localhost:63000\";\n const {match: match, data: path} = matchedRoute;\n const {parameters: parameters, query: query} = match;\n const pluridRouteProperty = {\n value: match.value,\n parameters: parameters,\n query: query\n };\n const {exterior: exterior, planes: planes, spaces: spaces, slotted: slotted} = matchedRoute.data;\n const multispaceAlignment = ((_a = path.multispace) === null || _a === void 0 ? void 0 : _a.alignment) || \"y\";\n const multispaceSnapType = ((_b = path.multispace) === null || _b === void 0 ? void 0 : _b.snapType) || \"mandatory\";\n let PluridExterior = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n if (isReactRenderable(exterior)) {\n PluridExterior = exterior;\n }\n let PluridSpaces = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n const spacesArray = [];\n if (spaces) {\n for (const space of spaces) {\n const planes = [];\n const view = [];\n if (space.planes) {\n for (const plane of space.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const {component: component} = planeData;\n const pathName = path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n const universeName = pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE;\n const clusterName = pluridData.PLURID_ROUTE_DEFAULT_CLUSTER;\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const pathDivisions = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const fullPath = pathDivisions.join(pluridData.PLURID_ROUTE_SEPARATOR);\n const pluridPlane = {\n component: component,\n route: fullPath\n };\n planes.push(pluridPlane);\n view.push(fullPath);\n }\n }\n if (space.universes) {\n for (const universe of space.universes) {\n if (universe.clusters) {\n for (const cluster of universe.clusters) {\n for (const plane of cluster.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const {component: component} = planeData;\n const pathName = path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n const universeName = universe.value === pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE : pluridEngine.utilities.cleanPathElement(universe.value);\n const clusterName = cluster.value === pluridData.PLURID_ROUTE_DEFAULT_CLUSTER_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_CLUSTER : pluridEngine.utilities.cleanPathElement(cluster.value);\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const pathDivisions = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const fullPath = pathDivisions.join(pluridData.PLURID_ROUTE_SEPARATOR);\n const pluridPlane = {\n component: component,\n route: fullPath\n };\n planes.push(pluridPlane);\n if (!path.view) {\n view.push(fullPath);\n } else {\n if (path.view.includes(planeData.value)) {\n view.push(fullPath);\n }\n }\n }\n }\n }\n if (universe.planes) {\n for (const plane of universe.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const {component: component} = planeData;\n const pathName = path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n const universeName = universe.value === pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE : pluridEngine.utilities.cleanPathElement(universe.value);\n const clusterName = pluridData.PLURID_ROUTE_DEFAULT_CLUSTER;\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const pathDivisions = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const fullPath = pathDivisions.join(pluridData.PLURID_ROUTE_SEPARATOR);\n const pluridPlane = {\n component: component,\n route: fullPath\n };\n planes.push(pluridPlane);\n view.push(fullPath);\n }\n }\n }\n }\n const pluridPlanesRegistrar = new PluridPlanesRegistrar$1;\n const App = React__default[\"default\"].createElement(PluridApplication, {\n key: pluridFunctions.uuid.generate(),\n id: path.value,\n planes: planes,\n view: view,\n configuration: space.configuration,\n planesRegistrar: pluridPlanesRegistrar\n });\n spacesArray.push(App);\n }\n }\n if (planes) {\n const pluridPlanes = [];\n const view = [];\n for (const plane of planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const {component: component} = planeData;\n const pathName = path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = pluridData.PLURID_ROUTE_DEFAULT_SPACE;\n const universeName = pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE;\n const clusterName = pluridData.PLURID_ROUTE_DEFAULT_CLUSTER;\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const pathDivisions = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const fullPath = pathDivisions.join(pluridData.PLURID_ROUTE_SEPARATOR);\n const pluridPlane = {\n component: component,\n route: fullPath\n };\n pluridPlanes.push(pluridPlane);\n if (!path.view) {\n view.push(fullPath);\n } else {\n if (path.view.includes(planeData.value)) {\n view.push(fullPath);\n }\n }\n }\n const App = React__default[\"default\"].createElement(PluridApplication, {\n key: pluridFunctions.uuid.generate(),\n id: path.value,\n planes: pluridPlanes,\n view: view,\n configuration: path.defaultConfiguration\n });\n spacesArray.push(App);\n }\n let MultispaceHeader;\n let MultispaceFooter;\n if (isReactRenderable((_c = path.multispace) === null || _c === void 0 ? void 0 : _c.header)) {\n MultispaceHeader = (_d = path.multispace) === null || _d === void 0 ? void 0 : _d.header;\n }\n if (isReactRenderable((_e = path.multispace) === null || _e === void 0 ? void 0 : _e.footer)) {\n MultispaceFooter = (_f = path.multispace) === null || _f === void 0 ? void 0 : _f.footer;\n }\n PluridSpaces = () => React__default[\"default\"].createElement(StyledSpaces, {\n alignment: multispaceAlignment,\n snapType: multispaceSnapType,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_MULTISPACE\n }, MultispaceHeader && React__default[\"default\"].createElement(MultispaceHeader, {\n plurid: pluridRouteProperty\n }), spacesArray, MultispaceFooter && React__default[\"default\"].createElement(MultispaceFooter, {\n plurid: pluridRouteProperty\n }));\n return () => {\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, exterior && React__default[\"default\"].createElement(PluridExterior, {\n spaces: slotted ? spacesArray : undefined,\n plurid: pluridRouteProperty\n }), (spaces || planes) && !slotted && React__default[\"default\"].createElement(PluridSpaces, null));\n return PluridRoute;\n };\n};\n\nconst computePluridRoute = (matchedRoute, planesRegistrar, isoMatcher, directPlane) => {\n if (directPlane || (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.kind) === \"RoutePlane\") {\n const match = directPlane || matchedRoute;\n if (!match) {\n return () => () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const DirectPlane = renderDirectPlane(match, planesRegistrar);\n return DirectPlane;\n }\n if (!matchedRoute) {\n const notFoundRoute = isoMatcher.match(\"/not-found\", \"route\");\n if (notFoundRoute && notFoundRoute.kind === \"Route\") {\n const notFoundRender = computePluridRoute(notFoundRoute, planesRegistrar, isoMatcher);\n return notFoundRender;\n }\n return () => () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {exterior: exterior, view: view, planes: planes, spaces: spaces, defaultConfiguration: defaultConfiguration, slotted: slotted, resolver: resolver} = matchedRoute.data;\n if (resolver) {\n resolver(undefined);\n }\n const pluridRouteProperty = {\n value: matchedRoute.match.value,\n parameters: matchedRoute.match.parameters,\n query: matchedRoute.match.query\n };\n let PluridRouteExterior;\n if (isReactRenderable(exterior)) {\n PluridRouteExterior = exterior;\n if (PluridRouteExterior) {\n PluridRouteExterior.displayName = \"PluridRouteExterior\";\n }\n }\n if (exterior && PluridRouteExterior && !view && !planes && !spaces) {\n return () => {\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, PluridRouteExterior && React__default[\"default\"].createElement(PluridRouteExterior, {\n plurid: pluridRouteProperty\n }));\n return PluridRoute;\n };\n }\n if (view) {\n return () => {\n const pubsub = new PluridPubSub__default[\"default\"];\n const pluridApplication = React__default[\"default\"].createElement(PluridApplication, {\n view: view,\n planesRegistrar: planesRegistrar,\n configuration: defaultConfiguration,\n pubsub: pubsub,\n matchedRoute: matchedRoute\n });\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, PluridRouteExterior && React__default[\"default\"].createElement(PluridRouteExterior, {\n plurid: pluridRouteProperty,\n pubsub: pubsub,\n spaces: slotted ? [ pluridApplication ] : undefined\n }), !slotted && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridApplication));\n return PluridRoute;\n };\n }\n return renderMultispace(matchedRoute);\n};\n\nconst computeInitialMatchedPath = staticContext => {\n if (staticContext) {\n return staticContext.path;\n }\n if (typeof window !== \"undefined\") {\n return window.location.pathname + window.location.search;\n }\n return \"/\";\n};\n\nconst getDirectPlaneMatch = (matchedPath, routes, planes) => {\n let matchRoute;\n let matchPlane;\n let matchPath;\n for (const route of routes) {\n if (route.planes) {\n for (const plane of route.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const planePath = route.value === \"/\" ? planeData.value : route.value + planeData.value;\n matchPath = planePath;\n if (matchedPath === planePath) {\n matchPlane = plane;\n break;\n }\n }\n }\n if (matchPlane) {\n matchRoute = route;\n break;\n }\n }\n if (planes) {\n for (const plane of planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n if (matchedPath === planeData.value) {\n matchPlane = plane;\n break;\n }\n }\n }\n return {\n matchRoute: matchRoute,\n matchPlane: matchPlane,\n matchPath: matchPath\n };\n};\n\nconst renderDirectPlane = (routePlane, planesRegistrar) => {\n if (routePlane.match.query.flat) {\n const flat = routePlane.match.query.flat.toLowerCase();\n const renderFlat = flat === \"true\" || flat === \"1\";\n if (renderFlat) {\n const pluridRoute = planesRegistrar.get(routePlane.match.value);\n if (pluridRoute) {\n const Flat = pluridRoute.component;\n if (typeof Flat !== \"function\") {\n return () => () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const DirectPlane = () => {\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(Flat, null));\n return PluridRoute;\n };\n return DirectPlane;\n }\n }\n }\n const {defaultConfiguration: defaultConfiguration} = routePlane === null || routePlane === void 0 ? void 0 : routePlane.data;\n const DirectPlane = () => {\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(PluridApplication, {\n view: [ routePlane.match.value ],\n planesRegistrar: planesRegistrar,\n configuration: defaultConfiguration\n }));\n return PluridRoute;\n };\n return DirectPlane;\n};\n\nconst {Registrar: PluridPlanesRegistrar} = pluridEngine.planes;\n\nconst {IsoMatcher: PluridIsoMatcher$1} = pluridEngine.routing;\n\nconst PluridRouterBrowser = properties => {\n const {routes: routes, planes: planes, exterior: exterior, shell: shell, static: staticContext, view: cleanNavigationView, cleanNavigation: cleanNavigation, notFoundPath: notFoundPathProperty} = properties;\n const notFoundPath = notFoundPathProperty || \"/not-found\";\n const pluridPlanes = gatherPluridPlanes(routes, planes);\n const pluridPlanesRegistrar = React.useRef(new PluridPlanesRegistrar(pluridPlanes));\n const pluridIsoMatcher = React.useRef(new PluridIsoMatcher$1({\n routes: routes,\n routePlanes: planes\n }));\n const mounted = pluridFunctionsReact.useMounted();\n const [matchedPath, setMatchedPath] = React.useState(computeInitialMatchedPath(staticContext));\n const [matchedRoute, setMatchedRoute] = React.useState(pluridIsoMatcher.current.match(matchedPath, \"route\"));\n const [PluridRoute, setPluridRoute] = React.useState(computePluridRoute(matchedRoute, pluridPlanesRegistrar.current, pluridIsoMatcher.current, staticContext && staticContext.directPlane ? pluridIsoMatcher.current.match(staticContext.directPlane, \"route\") : undefined));\n const handleLocation = event => {\n let matchedPath;\n if (event && event.detail && event.detail.path && !matchedPath) {\n matchedPath = event.detail.path;\n }\n if (cleanNavigation && cleanNavigationView && !matchedPath) {\n matchedPath = cleanNavigationView;\n }\n const pathname = window.location.pathname;\n if (!matchedPath) {\n matchedPath = pathname + window.location.search;\n }\n setMatchedPath(matchedPath);\n };\n React.useEffect((() => {\n window.addEventListener(\"popstate\", handleLocation);\n window.addEventListener(pluridData.PLURID_ROUTER_LOCATION_CHANGED, handleLocation);\n return () => {\n window.removeEventListener(\"popstate\", handleLocation);\n window.removeEventListener(pluridData.PLURID_ROUTER_LOCATION_CHANGED, handleLocation);\n };\n }), []);\n React.useEffect((() => {\n if (!mounted) {\n return;\n }\n if (!cleanNavigation) {\n if (location.pathname !== matchedPath) {\n history.pushState(null, \"\", matchedPath);\n }\n }\n let matchedRoute = pluridIsoMatcher.current.match(matchedPath, \"route\");\n if (matchedRoute && matchedRoute.kind === \"RoutePlane\") {\n const DirectPlane = renderDirectPlane(matchedRoute, pluridPlanesRegistrar.current);\n setMatchedRoute(matchedRoute);\n setPluridRoute(DirectPlane);\n return;\n }\n if (!matchedRoute) {\n matchedRoute = pluridIsoMatcher.current.match(notFoundPath, \"route\");\n }\n setMatchedRoute(matchedRoute);\n setPluridRoute(computePluridRoute(matchedRoute, pluridPlanesRegistrar.current, pluridIsoMatcher.current));\n }), [ mounted, matchedPath ]);\n React.useEffect((() => {\n if (!matchedRoute) {\n return;\n }\n if (matchedRoute.kind !== \"Route\") {\n return;\n }\n const path = matchedRoute.match.value;\n pluridFunctions.storage.saveState(path, pluridData.PLURID_ROUTER_STORAGE);\n const locationStoredEvent = new CustomEvent(pluridData.PLURID_ROUTER_LOCATION_STORED, {\n detail: {\n path: path\n }\n });\n window.dispatchEvent(locationStoredEvent);\n }), [ cleanNavigation, matchedRoute ]);\n let PluridRouterExterior;\n if (isReactRenderable(exterior)) {\n PluridRouterExterior = exterior;\n if (PluridRouterExterior) {\n PluridRouterExterior.displayName = \"PluridRouterExterior\";\n }\n }\n let PluridRouterShell = ({children: children}) => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, children);\n if (isReactRenderable(shell)) {\n PluridRouterShell = shell;\n if (PluridRouterShell) {\n PluridRouterShell.displayName = \"PluridRouterShell\";\n }\n }\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, PluridRouterExterior && React__default[\"default\"].createElement(PluridRouterExterior, {\n matchedRoute: matchedRoute\n }), React__default[\"default\"].createElement(PluridRouterShell, {\n matchedRoute: matchedRoute\n }, React__default[\"default\"].createElement(PluridRoute, null)));\n};\n\nconst PluridRouterStatic = properties => {\n const {path: path, directPlane: directPlane, routes: routes, planes: planes, exterior: exterior, shell: shell, protocol: protocolProperty, host: hostProperty, gateway: gateway, gatewayQuery: gatewayQueryProperty, gatewayEndpoint: gatewayEndpointProperty} = properties;\n const protocol = protocolProperty || \"http\";\n const host = hostProperty || \"localhost:63000\";\n return React__default[\"default\"].createElement(PluridRouterBrowser, {\n routes: routes,\n planes: planes,\n exterior: exterior,\n shell: shell,\n static: {\n path: path,\n directPlane: directPlane\n },\n protocol: protocol,\n host: host\n });\n};\n\nclass PluridProvider extends React.Component {\n constructor(properties) {\n super(properties);\n this.properties = properties;\n }\n render() {\n const {metastate: metastate, children: children} = this.properties;\n return React__default[\"default\"].createElement(PluridContext.Provider, {\n value: metastate\n }, children);\n }\n}\n\nPluridProvider.displayName = \"PluridProvider\";\n\nconst DEFAULT_ROUTER_LINK_AS_ANCHOR = true;\n\nconst defaultLinkCoordinates = {\n x: 0,\n y: 0\n};\n\nconst PluridPortal = properties => {\n const {elementID: elementID, rootID: rootID, children: children} = properties;\n const target = pluridFunctionsReact.usePortal(elementID, rootID);\n return reactDom.createPortal(children, target);\n};\n\nconst StyledPluridPlanePreview = styled__default[\"default\"].div`\n position: absolute;\n min-width: 600px;\n min-height: 300px;\n z-index: 99999;\n\n top: ${({linkCoordinates: linkCoordinates}) => {\n const location = linkCoordinates.y;\n return location + \"px\";\n}};\n left: ${({linkCoordinates: linkCoordinates}) => {\n const location = linkCoordinates.x + 5;\n return location + \"px\";\n}};\n background-color: ${({theme: theme}) => theme.backgroundColorSecondary};\n box-shadow: ${({theme: theme}) => theme.boxShadowUmbra};\n`;\n\nconst {getPlanesRegistrar: getPlanesRegistrar$1} = pluridEngine.planes;\n\nconst PluridPlanePreview = properties => {\n const {planeID: planeID, linkCoordinates: linkCoordinates, stateGeneralTheme: stateGeneralTheme} = properties;\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {planesRegistrar: planesRegistrar} = context;\n const planesRegistry = getPlanesRegistrar$1(planesRegistrar);\n if (!planesRegistry) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const plane = planesRegistry.get(planeID);\n if (!plane) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const Component = plane.component;\n if (typeof Component !== \"function\") {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledPluridPlanePreview, {\n theme: stateGeneralTheme,\n linkCoordinates: linkCoordinates\n }, React__default[\"default\"].createElement(Component, null));\n};\n\nconst mapStateToProperties$6 = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$6 = dispatch => ({});\n\nconst ConnectedPluridPlanePreview = reactRedux.connect(mapStateToProperties$6, mapDispatchToProperties$6, null, {\n context: StateContext\n})(PluridPlanePreview);\n\nconst StyledPluridLink = styled__default[\"default\"].a`\n /**\n * Forces element to go to the second row if inlined.\n */\n display: inline-block;\n\n cursor: pointer;\n color: ${({theme: theme}) => theme.colorTertiary};\n\n :hover {\n color: ${({theme: theme}) => theme.colorPrimary};\n }\n\n ::after {\n content: \"${({devisible: devisible, suffix: suffix}) => {\n if (!devisible) {\n if (suffix) {\n return suffix;\n }\n return \"'\";\n }\n return \"\";\n}}\";\n }\n`;\n\nconst {resolveRoute: resolveRoute, computePlaneAddress: computePlaneAddress} = pluridEngine.routing;\n\nconst {getPlanesRegistrar: getPlanesRegistrar, getPluridPlaneIDByData: getPluridPlaneIDByData$1} = pluridEngine.planes;\n\nconst {degToRad: degToRad, radToDeg: radToDeg} = pluridEngine.interaction.quaternion;\n\nconst {multiplyMatrices: multiplyMatrices, translateMatrix: translateMatrix, rotateYMatrix: rotateYMatrix} = pluridEngine.interaction.transform.general;\n\nconst {getTransformRotate: getTransformRotate, getTransformTranslate: getTransformTranslate, getTransformScale: getTransformScale} = pluridEngine.interaction.transform.matrix3d;\n\nconst PluridLink = properties => {\n const {children: children, route: planeRoute, devisible: _devisible, suffix: _suffix, atClick: atClick, style: style, className: className, stateTree: stateTree, stateGeneralTheme: stateGeneralTheme, stateConfiguration: stateConfiguration, stateViewSize: stateViewSize, dispatchSetTree: dispatchSetTree, dispatchSetAnimatedTransform: dispatchSetAnimatedTransform, dispatchSetTransform: dispatchSetTransform, dispatchSetSpaceField: dispatchSetSpaceField, dispatchUpdateSpaceLinkCoordinates: dispatchUpdateSpaceLinkCoordinates} = properties;\n const planeControls = stateConfiguration.elements.plane.controls.show;\n const previewAppearTime = pluridData.PLURID_DEFAULT_CONFIGURATION_LINK_PREVIEW_FADE_IN;\n const previewDisappearTime = pluridData.PLURID_DEFAULT_CONFIGURATION_LINK_PREVIEW_FADE_OUT;\n const planeRouteResolved = computePlaneAddress(planeRoute);\n const absolutePlaneRoute = resolveRoute(planeRouteResolved, stateConfiguration.network.protocol, stateConfiguration.network.host);\n const suffix = _suffix !== null && _suffix !== void 0 ? _suffix : pluridData.PLURID_DEFAULT_CONFIGURATION_LINK_SUFFIX;\n const devisible = _devisible !== null && _devisible !== void 0 ? _devisible : false;\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, children);\n }\n const {planesRegistrar: planesRegistrar} = context;\n const planesRegistry = getPlanesRegistrar(planesRegistrar);\n if (!planesRegistry) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, children);\n }\n const linkElement = React.useRef(null);\n const hoverInTimeout = React.useRef(null);\n const hoverOutTimeout = React.useRef(null);\n const [mouseOver, setMouseOver] = React.useState(false);\n const [showPreview, setShowPreview] = React.useState(false);\n const [showLink, setShowLink] = React.useState(false);\n const [planeID, setPlaneID] = React.useState(\"\");\n const [pluridPlaneID, setPluridPlaneID] = React.useState(\"\");\n const [parentPlaneID, setParentPlaneID] = React.useState(\"\");\n const [linkCoordinates, setLinkCoordinates] = React.useState(defaultLinkCoordinates);\n const getPluridLinkCoordinates = () => {\n const link = linkElement.current;\n if (!link) {\n return Object.assign({}, defaultLinkCoordinates);\n }\n let partialTop = 0;\n let partialLeft = 0;\n let staticSet = false;\n let element = link;\n let searching = true;\n let top = 0;\n let left = 0;\n while (searching) {\n if (window.getComputedStyle(element).position === \"static\" && !staticSet) {\n partialTop += element.offsetTop;\n partialLeft += element.offsetLeft;\n staticSet = true;\n }\n if (window.getComputedStyle(element).position === \"relative\") {\n top += partialTop;\n left += partialLeft;\n partialTop = 0;\n partialLeft = 0;\n staticSet = false;\n }\n if (element.scrollLeft) {\n left += -element.scrollLeft;\n }\n if (element.scrollTop) {\n top += -element.scrollTop;\n }\n if (element.parentElement) {\n const pluridEntity = element.parentElement.dataset.pluridEntity;\n if (pluridEntity === \"PluridPlane\") {\n searching = false;\n }\n element = element.parentElement;\n } else {\n searching = false;\n }\n }\n const planeControlsHeight = planeControls ? 56 : 0;\n const x = left + link.offsetWidth;\n const y = top + planeControlsHeight;\n return {\n x: x,\n y: y\n };\n };\n const updateTreeWithLink = event => {\n if (!parentPlaneID || !absolutePlaneRoute) {\n return;\n }\n const {route: route} = absolutePlaneRoute;\n const linkCoordinates = getPluridLinkCoordinates();\n const {pluridPlaneID: pluridPlaneID, updatedTree: updatedTree, updatedTreePlane: updatedTreePlane} = pluridEngine.space.tree.logic.updateTreeWithNewPlane(route, parentPlaneID, linkCoordinates, stateTree, planesRegistry.getAll(), stateConfiguration);\n if (pluridPlaneID) {\n navigateToPluridPlane(event, updatedTreePlane);\n dispatchSetTree(updatedTree);\n setShowLink(true);\n setPluridPlaneID(pluridPlaneID);\n }\n };\n const toggleLinkFromTree = event => {\n const {updatedTree: updatedTree, updatedPlane: updatedPlane} = pluridEngine.space.tree.logic.togglePlaneFromTree(stateTree, pluridPlaneID);\n navigateToPluridPlane(event, updatedPlane);\n dispatchSetTree(updatedTree);\n setShowLink((show => !show));\n setShowPreview(false);\n };\n const navigateToPluridPlane = (event, updatedPlane) => {\n if (!updatedPlane) {\n return;\n }\n if (showLink) {\n return;\n }\n if (event.altKey || event.metaKey) {\n return;\n }\n const {location: location} = updatedPlane;\n const {translateX: translateX, translateY: translateY, translateZ: translateZ, rotateY: rotateY} = location;\n const zSign1 = rotateY < 100 ? 1 : -1;\n const zSign2 = rotateY < 100 ? -1 : 1;\n const xOffset = rotateY < 100 ? 200 : 0;\n const newMatrix = multiplyMatrices(multiplyMatrices(multiplyMatrices(translateMatrix(-translateX, -translateY, zSign1 * translateZ), rotateYMatrix(degToRad(rotateY))), translateMatrix(translateX, translateY, zSign2 * translateZ)), translateMatrix(-(translateX + xOffset), -translateY, zSign1 * translateZ));\n const matrix3d = `matrix3d(${newMatrix.flat().join(\",\")})`;\n const rotate = getTransformRotate(matrix3d);\n const translate = getTransformTranslate(matrix3d);\n const scale = getTransformScale(matrix3d);\n dispatchSetAnimatedTransform(true);\n dispatchSetSpaceField({\n field: \"transform\",\n value: matrix3d\n });\n dispatchSetTransform({\n translationX: translate.translateX,\n translationY: translate.translateY,\n translationZ: translate.translateZ,\n rotationX: radToDeg(rotate.rotateX),\n rotationY: radToDeg(rotate.rotateY) * -1,\n scale: scale.scale\n });\n setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), 500);\n };\n const handleShowPluridPlane = event => {\n if (!showLink && !pluridPlaneID) {\n updateTreeWithLink(event);\n } else {\n toggleLinkFromTree(event);\n }\n };\n const handleClick = React.useCallback((event => {\n event.preventDefault();\n if (atClick !== undefined) {\n atClick(event);\n }\n handleShowPluridPlane(event);\n }), [ linkElement.current, stateTree ]);\n React.useEffect((() => {\n const parentPlaneID = getPluridPlaneIDByData$1(linkElement.current);\n setParentPlaneID(parentPlaneID);\n const linkCoordinates = getPluridLinkCoordinates();\n setLinkCoordinates(linkCoordinates);\n }), []);\n React.useEffect((() => {\n if (mouseOver && hoverOutTimeout.current) {\n hoverInTimeout.current = setTimeout((() => {\n setShowPreview(true);\n }), previewAppearTime);\n clearTimeout(hoverOutTimeout.current);\n }\n if (!mouseOver) {\n hoverOutTimeout.current = setTimeout((() => {\n setShowPreview(false);\n if (hoverInTimeout.current) {\n clearTimeout(hoverInTimeout.current);\n }\n }), previewDisappearTime);\n }\n return () => {\n if (hoverOutTimeout.current) {\n clearTimeout(hoverOutTimeout.current);\n }\n if (hoverInTimeout.current) {\n clearTimeout(hoverInTimeout.current);\n }\n };\n }), [ mouseOver ]);\n React.useEffect((() => {}), []);\n return React__default[\"default\"].createElement(StyledPluridLink, {\n ref: linkElement,\n onClick: event => handleClick(event),\n onMouseEnter: () => setMouseOver(true),\n onMouseLeave: () => setMouseOver(false),\n theme: stateGeneralTheme,\n suffix: suffix,\n devisible: devisible,\n style: Object.assign({}, style),\n className: className,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_LINK\n }, children, showPreview && !showLink && React__default[\"default\"].createElement(PluridPortal, {\n elementID: `preview-${parentPlaneID}`,\n rootID: parentPlaneID\n }, React__default[\"default\"].createElement(ConnectedPluridPlanePreview, {\n planeID: planeID,\n linkCoordinates: linkCoordinates\n })));\n};\n\nconst mapStateToProperties$5 = state => ({\n stateTree: selectors.space.getTree(state),\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateViewSize: selectors.space.getViewSize(state)\n});\n\nconst mapDispatchToProperties$5 = dispatch => ({\n dispatchSetTree: tree => dispatch(actions.space.setTree(tree)),\n dispatchSetAnimatedTransform: payload => dispatch(actions.space.setAnimatedTransform(payload)),\n dispatchSetTransform: payload => dispatch(actions.space.setTransform(payload)),\n dispatchSetSpaceField: payload => dispatch(actions.space.setSpaceField(payload)),\n dispatchUpdateSpaceLinkCoordinates: payload => dispatch(actions.space.updateSpaceLinkCoordinates(payload))\n});\n\nvar PluridLink$1 = reactRedux.connect(mapStateToProperties$5, mapDispatchToProperties$5, null, {\n context: StateContext\n})(PluridLink);\n\nconst StyledPluridRouterLinkAnchor = styled__default[\"default\"].a`\n`;\n\nconst StyledPluridRouterLinkDiv = styled__default[\"default\"].div`\n cursor: pointer;\n`;\n\nconst PluridRouterLink = properties => {\n const {route: route, children: children, asAnchor: asAnchorProperty, style: style, className: className, atClick: atClick} = properties;\n const asAnchor = asAnchorProperty !== null && asAnchorProperty !== void 0 ? asAnchorProperty : DEFAULT_ROUTER_LINK_AS_ANCHOR;\n const handleClick = event => {\n if (atClick) {\n const exit = atClick(event);\n if (exit) {\n return;\n }\n }\n event.preventDefault();\n pluridEngine.pluridRouterNavigate(route);\n };\n const renderProperties = {\n onClick: handleClick,\n style: style,\n className: className\n };\n if (!asAnchor) {\n return React__default[\"default\"].createElement(StyledPluridRouterLinkDiv, Object.assign({}, renderProperties), children);\n }\n return React__default[\"default\"].createElement(StyledPluridRouterLinkAnchor, Object.assign({\n href: route\n }, renderProperties), children);\n};\n\nconst StyledPluridApplicationConfigurator = styled__default[\"default\"].div`\n position: absolute;\n height: 0;\n width: 0;\n user-select: none;\n pointer-events: none;\n`;\n\nconst PluridApplicationConfigurator = properties => {\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {registerPubSub: registerPubSub} = context;\n const {configuration: configuration, pubsub: pubsub, stateConfiguration: stateConfiguration, dispatchSetConfiguration: dispatchSetConfiguration} = properties;\n const configuratorElement = React.useRef(null);\n React.useEffect((() => {\n const computedConfiguration = pluridEngine.general.configuration.merge(configuration, stateConfiguration);\n dispatchSetConfiguration(computedConfiguration);\n }), [ configuration ]);\n React.useEffect((() => {\n if (pubsub) {\n registerPubSub(pubsub);\n }\n }), [ pubsub ]);\n return React__default[\"default\"].createElement(StyledPluridApplicationConfigurator, {\n ref: configuratorElement,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_APPLICATION_CONFIGURATOR\n });\n};\n\nconst mapStateToProps$1 = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$1 = dispatch => ({\n dispatchSetConfiguration: configuration => dispatch(actions.configuration.setConfiguration(configuration))\n});\n\nconst ConnectedPluridApplicationConfigurator = reactRedux.connect(mapStateToProps$1, mapDispatchToProps$1, null, {\n context: StateContext\n})(PluridApplicationConfigurator);\n\nconst StyledPluridPlaneConfigurator = styled__default[\"default\"].div`\n position: absolute;\n height: 0;\n width: 0;\n user-select: none;\n pointer-events: none;\n`;\n\nconst {getPluridPlaneIDByData: getPluridPlaneIDByData} = pluridEngine.planes;\n\nconst PluridPlaneConfigurator = properties => {\n const configuratorElement = React.useRef(null);\n const [planePlaneID, setParentPlaneID] = React.useState(\"\");\n React.useEffect((() => {\n const parentPlaneID = getPluridPlaneIDByData(configuratorElement.current);\n setParentPlaneID(parentPlaneID);\n }), []);\n return React__default[\"default\"].createElement(StyledPluridPlaneConfigurator, {\n ref: configuratorElement,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE_CONFIGURATOR\n });\n};\n\nconst mapStateToProperties$4 = state => ({});\n\nconst mapDispatchToProperties$4 = dispatch => ({});\n\nconst ConnectedPluridPlaneConfigurator = reactRedux.connect(mapStateToProperties$4, mapDispatchToProperties$4, null, {\n context: StateContext\n})(PluridPlaneConfigurator);\n\nconst StyledExternalPlane = styled__default[\"default\"].div`\n`;\n\nconst getPttpUrl = path => {\n const re = /^pttp:\\/\\/(\\w+(\\.|:)\\w+)\\/?/;\n const match = path.match(re);\n if (!match) {\n return {\n domain: \"\",\n url: \"\"\n };\n }\n const domain = match[1];\n const protocol = \"http\";\n const url = `${protocol}://${domain}/pttp`;\n return {\n domain: domain,\n url: url\n };\n};\n\nconst getPttpPath = (domain, path) => {\n if (!domain) {\n return;\n }\n const pttpPath = path.replace(`pttp://${domain}`, \"\");\n return pttpPath;\n};\n\nconst elementRequest = (url, path) => __awaiter(void 0, void 0, void 0, (function*() {\n try {\n const response = yield fetch__default[\"default\"](url, {\n method: \"post\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n path: path\n }),\n credentials: \"include\"\n });\n const data = yield response.json();\n if (!data.element) {\n return;\n }\n const {element: element} = data;\n const elementQLClient = new elementqlClientReact.ElementQLClient({\n url: element.url\n });\n const {status: status, Elements: Elements} = yield elementQLClient.get(element.json, \"json\");\n if (!status) {\n return;\n }\n const Element = Elements[element.name];\n return () => Element;\n } catch (error) {\n return;\n }\n}));\n\nconst ExternalPlane = properties => {\n const {plurid: plurid} = properties;\n const route = plurid.value;\n const mounted = React.useRef(false);\n const [Component, setComponent] = React.useState();\n React.useEffect((() => {\n mounted.current = true;\n return () => {\n mounted.current = false;\n };\n }));\n React.useEffect((() => {\n let loading = false;\n const load = () => __awaiter(void 0, void 0, void 0, (function*() {\n if (loading) {\n return;\n }\n loading = true;\n try {\n const {domain: domain, url: url} = getPttpUrl(route);\n const pttpPath = getPttpPath(domain, route);\n if (!url || !pttpPath) {\n return;\n }\n const Component = yield elementRequest(url, pttpPath);\n if (!mounted.current) {\n return;\n }\n if (Component) {\n setComponent(Component);\n }\n } catch (error) {\n return;\n }\n }));\n load();\n }), []);\n return React__default[\"default\"].createElement(StyledExternalPlane, null, Component && React__default[\"default\"].createElement(Component, null));\n};\n\nconst mapStateToProperties$3 = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$3 = dispatch => ({});\n\nconst ConnectedExternalPlane = reactRedux.connect(mapStateToProperties$3, mapDispatchToProperties$3, null, {\n context: StateContext\n})(ExternalPlane);\n\nconst StyledIframePlane = styled__default[\"default\"].div`\n`;\n\nconst IframePlane = properties => {\n const {plurid: plurid} = properties;\n const route = plurid.value;\n return React__default[\"default\"].createElement(StyledIframePlane, null, React__default[\"default\"].createElement(\"iframe\", {\n src: route\n }));\n};\n\nconst mapStateToProperties$2 = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$2 = dispatch => ({});\n\nconst ConnectedIframePlane = reactRedux.connect(mapStateToProperties$2, mapDispatchToProperties$2, null, {\n context: StateContext\n})(IframePlane);\n\nconst VirtualListItem = properties => {\n const {top: top, index: index, element: element, setHeight: setHeight} = properties;\n const el = React.useRef(null);\n React.useEffect((() => {\n if (el.current) {\n setHeight(el.current.offsetHeight, index);\n }\n }), [ el.current ]);\n return React__default[\"default\"].createElement(\"div\", {\n ref: el,\n style: {\n position: \"absolute\",\n top: top + \"px\"\n }\n }, element);\n};\n\nconst {markers: {Spinner: PluridSpinner}} = pluridUiComponentsReact.universal;\n\nconst PluridVirtualList = properties => {\n const {items: items, generalHeight: generalHeight, translationY: translationY, viewSize: viewSize} = properties;\n const _generalHeight = generalHeight || 100;\n const listElement = React.useRef(null);\n const rows = React.useRef([]);\n const heights = React.useRef(Array(items.length).fill(_generalHeight));\n const [start, setStart] = React.useState(0);\n const [end, setEnd] = React.useState(Math.floor(1e3 / _generalHeight));\n const [elementHeight, setElementHeight] = React.useState(_generalHeight * (end - start));\n const [resizing, setResizing] = React.useState(false);\n const setHeight = (value, index) => {\n heights.current[index] = value;\n };\n const renderRows = () => {\n rows.current = [];\n for (let i = start; i <= end; i++) {\n const item = items[i];\n rows.current.push(React__default[\"default\"].createElement(VirtualListItem, {\n key: i + Math.random(),\n index: i,\n top: pluridFunctions.mathematics.arithmetic.sum(heights.current, i),\n element: item,\n setHeight: setHeight\n }));\n }\n return rows.current;\n };\n React.useEffect((() => {\n if (heights.current) {\n const elementHeight = pluridFunctions.mathematics.arithmetic.sum(heights.current, heights.current.length);\n setElementHeight(elementHeight);\n }\n }), [ start, end, heights.current ]);\n React.useEffect((() => {\n let sum = 0;\n for (const [index, value] of heights.current.entries()) {\n sum += value;\n if (translationY < 0) {\n if (sum < Math.abs(translationY)) {\n setStart(index);\n }\n if (sum > Math.abs(translationY) + viewSize.height && sum < Math.abs(translationY) + viewSize.height + 400) {\n setEnd(index);\n }\n } else {\n setStart(0);\n setEnd(10);\n }\n }\n }), [ viewSize.height, translationY ]);\n React.useEffect((() => {\n setResizing(true);\n setTimeout((() => {\n const elementHeight = pluridFunctions.mathematics.arithmetic.sum(heights.current, heights.current.length);\n setElementHeight(elementHeight);\n setResizing(false);\n }), 400);\n }), [ viewSize ]);\n return React__default[\"default\"].createElement(\"div\", {\n style: {\n height: elementHeight\n },\n ref: listElement\n }, resizing && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(PluridSpinner, null)), !resizing && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, renderRows()));\n};\n\nconst mapStateToProps = state => ({\n translationY: selectors.space.getTranslationY(state),\n viewSize: selectors.space.getViewSize(state)\n});\n\nconst mapDispatchToProps = dispatch => ({});\n\nconst ConnectedPluridVirtualList = reactRedux.connect(mapStateToProps, mapDispatchToProps, null, {\n context: StateContext\n})(PluridVirtualList);\n\nconst StyledPluridPlaneDebugger = styled__default[\"default\"].div`\n`;\n\nconst PluridPlaneDebugger = properties => React__default[\"default\"].createElement(StyledPluridPlaneDebugger, null, \"PluridPlaneDebugger\");\n\nconst mapStateToProperties$1 = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$1 = dispatch => ({});\n\nconst ConnectedPluridPlaneDebugger = reactRedux.connect(mapStateToProperties$1, mapDispatchToProperties$1, null, {\n context: StateContext\n})(PluridPlaneDebugger);\n\nconst StyledPluridSpaceDebugger = styled__default[\"default\"].div`\n`;\n\nconst PluridSpaceDebugger = properties => React__default[\"default\"].createElement(StyledPluridSpaceDebugger, null, \"PluridSpaceDebugger\");\n\nconst mapStateToProperties = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties = dispatch => ({});\n\nconst ConnectedPluridSpaceDebugger = reactRedux.connect(mapStateToProperties, mapDispatchToProperties, null, {\n context: StateContext\n})(PluridSpaceDebugger);\n\nconst {resolvePluridPlaneData: resolvePluridPlaneData} = pluridEngine.planes;\n\nconst computeApplication = (indexedPlanes, planes, configuration, view) => {\n const planesPropertiesReference = new Map;\n const computedIndexedPlanes = new Map(indexedPlanes || new Map);\n const appConfiguration = pluridEngine.general.configuration.merge(configuration);\n if (planes) {\n for (const plane of planes) {\n const planeData = resolvePluridPlaneData(plane);\n const linkPath = pluridEngine.routing.resolveRoute(planeData.route);\n if (!linkPath) {\n continue;\n }\n const {protocol: protocol, host: host, path: path, space: space, universe: universe, cluster: cluster, plane: planePath, route: route} = linkPath;\n const computedIndexedPlane = {\n protocol: protocol,\n host: \"\",\n path: \"\",\n space: \"\",\n universe: \"\",\n cluster: \"\",\n plane: \"\",\n route: route,\n component: planeData.component\n };\n const id = route;\n computedIndexedPlanes.set(id, computedIndexedPlane);\n }\n }\n const indexedPlanesReference = new Map(computedIndexedPlanes);\n const planeSources = {};\n for (const [id, indexedPlane] of computedIndexedPlanes) {\n planeSources[indexedPlane.route] = id;\n }\n for (const [id, computedIndexedPlane] of computedIndexedPlanes) {}\n const currentView = view || [];\n const absoluteView = [];\n for (const viewItem of currentView) {\n if (typeof viewItem === \"string\") {\n const viewPath = pluridEngine.routing.resolveRoute(viewItem);\n if (!viewPath) {\n continue;\n }\n absoluteView.push(viewPath.route);\n }\n }\n const data = {\n computedTree: [],\n indexedPlanesReference: indexedPlanesReference,\n planesPropertiesReference: planesPropertiesReference,\n appConfiguration: appConfiguration\n };\n return data;\n};\n\nconst serverComputeMetastate = (isoMatch, paths, globals) => __awaiter(void 0, void 0, void 0, (function*() {\n const protocol = \"http\";\n const host = \"localhost:63000\";\n const indexedPlanes = computeIndexedPlanes(paths, protocol, host);\n const pluridApplications = yield collectApplicationsFromPath(isoMatch, protocol, host, globals);\n const states = {};\n for (const application of pluridApplications) {\n const {planes: planes, view: view} = application;\n const {computedTree: computedTree, appConfiguration: appConfiguration} = computeApplication(indexedPlanes, planes, undefined, view);\n const state = {\n configuration: Object.assign({}, appConfiguration),\n shortcuts: {\n global: true\n },\n themes: {\n general: themes__default[\"default\"].plurid,\n interaction: themes__default[\"default\"].plurid\n },\n ui: {\n toolbarScrollPosition: 50\n },\n space: {\n loading: false,\n animatedTransform: false,\n scale: 1,\n rotationX: 0,\n rotationY: 0,\n translationX: 0,\n translationY: 0,\n translationZ: 0,\n initialTree: computedTree,\n tree: computedTree,\n activeUniverseID: \"\",\n camera: {\n x: 0,\n y: 0,\n z: 0\n },\n viewSize: {\n width: 1440,\n height: 821\n },\n spaceSize: {\n width: 1440,\n height: 821,\n depth: 0,\n topCorner: {\n x: 0,\n y: 0,\n z: 0\n }\n },\n view: view,\n culledView: []\n }\n };\n const id = isoMatch.data.value;\n states[id] = state;\n }\n return {\n states: states\n };\n}));\n\nconst usePluridRouter = () => {\n const [routerValue, setRouterValue] = React.useState(\"\");\n React.useEffect((() => {\n const fetchState = () => {\n const state = pluridFunctions.storage.loadState(pluridData.PLURID_ROUTER_STORAGE);\n if (state) {\n setRouterValue(state);\n }\n };\n fetchState();\n window.addEventListener(pluridData.PLURID_ROUTER_LOCATION_STORED, fetchState);\n return () => {\n window.removeEventListener(pluridData.PLURID_ROUTER_LOCATION_STORED, fetchState);\n };\n }), []);\n return routerValue;\n};\n\nconst {IsoMatcher: PluridIsoMatcher, RouteParser: PluridRouteParser} = pluridEngine.routing;\n\nconst internals = {\n PluridPlaneBridge: ConnectedPluridPlaneBridge,\n PluridPlaneContent: PluridPlaneContent,\n PluridPlaneControls: ConnectedPluridPlaneControls,\n PluridPlaneDebugger: ConnectedPluridPlaneDebugger,\n PluridSpaceDebugger: ConnectedPluridSpaceDebugger\n};\n\nconst Plurid = {\n Application: PluridApplication,\n RouterStatic: PluridRouterStatic,\n RouterBrowser: PluridRouterBrowser,\n Provider: PluridProvider,\n Link: PluridLink$1,\n RouterLink: PluridRouterLink,\n ApplicationConfigurator: ConnectedPluridApplicationConfigurator,\n PlaneConfigurator: ConnectedPluridPlaneConfigurator,\n ExternalPlane: ConnectedExternalPlane,\n IframePlane: ConnectedIframePlane,\n VirtualList: ConnectedPluridVirtualList,\n SPACE_LAYOUT: pluridData.LAYOUT_TYPES,\n SIZES: pluridData.SIZES,\n TRANSFORM_MODES: pluridData.TRANSFORM_MODES,\n TRANSFORM_TOUCHES: pluridData.TRANSFORM_TOUCHES,\n PubSub: PluridPubSub__default[\"default\"],\n PUBSUB_TOPIC: pluridData.PLURID_PUBSUB_TOPIC,\n serverComputeMetastate: serverComputeMetastate,\n IsoMatcher: PluridIsoMatcher,\n routerNavigate: pluridEngine.pluridRouterNavigate,\n internals: internals\n};\n\nObject.defineProperty(exports, \"PLURID_PUBSUB_TOPIC\", {\n enumerable: true,\n get: function() {\n return pluridData.PLURID_PUBSUB_TOPIC;\n }\n});\n\nObject.defineProperty(exports, \"PLURID_ROUTER_LOCATION_CHANGED\", {\n enumerable: true,\n get: function() {\n return pluridData.PLURID_ROUTER_LOCATION_CHANGED;\n }\n});\n\nObject.defineProperty(exports, \"PLURID_ROUTER_LOCATION_STORED\", {\n enumerable: true,\n get: function() {\n return pluridData.PLURID_ROUTER_LOCATION_STORED;\n }\n});\n\nObject.defineProperty(exports, \"SIZES\", {\n enumerable: true,\n get: function() {\n return pluridData.SIZES;\n }\n});\n\nObject.defineProperty(exports, \"SPACE_LAYOUT\", {\n enumerable: true,\n get: function() {\n return pluridData.LAYOUT_TYPES;\n }\n});\n\nObject.defineProperty(exports, \"TRANSFORM_MODES\", {\n enumerable: true,\n get: function() {\n return pluridData.TRANSFORM_MODES;\n }\n});\n\nObject.defineProperty(exports, \"TRANSFORM_TOUCHES\", {\n enumerable: true,\n get: function() {\n return pluridData.TRANSFORM_TOUCHES;\n }\n});\n\nObject.defineProperty(exports, \"pluridRouterNavigate\", {\n enumerable: true,\n get: function() {\n return pluridEngine.pluridRouterNavigate;\n }\n});\n\nObject.defineProperty(exports, \"PluridPubSub\", {\n enumerable: true,\n get: function() {\n return PluridPubSub__default[\"default\"];\n }\n});\n\nexports.PluridApplication = PluridApplication;\n\nexports.PluridApplicationConfigurator = ConnectedPluridApplicationConfigurator;\n\nexports.PluridExternalPlane = ConnectedExternalPlane;\n\nexports.PluridIframePlane = ConnectedIframePlane;\n\nexports.PluridIsoMatcher = PluridIsoMatcher;\n\nexports.PluridLink = PluridLink$1;\n\nexports.PluridPlaneConfigurator = ConnectedPluridPlaneConfigurator;\n\nexports.PluridProvider = PluridProvider;\n\nexports.PluridRouteParser = PluridRouteParser;\n\nexports.PluridRouterBrowser = PluridRouterBrowser;\n\nexports.PluridRouterLink = PluridRouterLink;\n\nexports.PluridRouterStatic = PluridRouterStatic;\n\nexports.PluridVirtualList = ConnectedPluridVirtualList;\n\nexports[\"default\"] = Plurid;\n\nexports.getDirectPlaneMatch = getDirectPlaneMatch;\n\nexports.internals = internals;\n\nexports.pluridStateModules = modules;\n\nexports.serverComputeMetastate = serverComputeMetastate;\n\nexports.usePluridRouter = usePluridRouter;\n//# sourceMappingURL=index.js.map\n"],"names":["Object","defineProperty","exports","value","pluridData","require$$0","pluridEngine","require$$1","PluridPubSub","require$$2","React","require$$3","reactRedux","require$$4","redux","require$$5","thunk","require$$6","pluridFunctions","require$$7","themes$1","require$$8","styled","require$$9","pluridUiComponentsReact","require$$10","pluridIconsReact","require$$11","pluridFunctionsReact","require$$12","reactDom","require$$13","fetch","require$$14","elementqlClientReact","require$$15","_interopDefaultLegacy","e","default","PluridPubSub__default","React__default","thunk__default","themes__default","styled__default","fetch__default","PluridContext","createContext","undefined","SET_CONFIGURATION","SET_CONFIGURATION_MICRO","SET_CONFIGURATION_PLANE_CONTROLS","SET_CONFIGURATION_PLANE_OPACITY","SET_CONFIGURATION_THEME_GENERAL","SET_CONFIGURATION_THEME_INTERACTION","SET_CONFIGURATION_LANGUAGE","TOGGLE_CONFIGURATION_VIEWCUBE_HIDE","TOGGLE_CONFIGURATION_VIEWCUBE_BUTTONS","TOGGLE_CONFIGURATION_VIEWCUBE_OPAQUE","TOGGLE_CONFIGURATION_VIEWCUBE_CONCEAL","TOGGLE_CONFIGURATION_TOOLBAR_CONCEAL","TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_ICONS","TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_BUTTONS","TOGGLE_CONFIGURATION_TOOLBAR_OPAQUE","TOGGLE_CONFIGURATION_TOOLBAR_TOGGLE_DRAWER","TOGGLE_CONFIGURATION_SPACE_TRANSPARENT_UI","TOGGLE_CONFIGURATION_SPACE_SHOW_TRANSFORM_ORIGIN","SET_CONFIGURATION_SPACE_TRANSFORM_ORIGIN_SIZE","SET_CONFIGURATION_SPACE_TRANSFORM_MODE","TOGGLE_CONFIGURATION_SPACE_TRANSFORM_MULTIMODE","SET_CONFIGURATION_SPACE_TRANSFORM_TOUCH","TOGGLE_CONFIGURATION_SPACE_FIRST_PERSON","SET_CONFIGURATION_SPACE_TRANSFORM_LOCKS","SET_CONFIGURATION_SPACE_LAYOUT_TYPE","SET_CONFIGURATION_SPACE_CULLING_DISTANCE","index$o","freeze","__proto__","index$n","setConfiguration","payload","type","setConfigurationMicro","setConfigurationPlaneControls","planeControls","setConfigurationPlaneOpacity","setConfigurationThemeGeneralAction","setConfigurationThemeInteractionAction","setConfigurationLanguageAction","toggleConfigurationViewcubeHide","toggle","toggleConfigurationViewcubeButtons","toggleConfigurationViewcubeOpaque","toggleConfigurationViewcubeConceal","toggleConfigurationToolbarConceal","toggleConfigurationToolbarTransformIcons","toggleConfigurationToolbarTransformButtons","toggleConfigurationSpaceTransparentUI","toggleConfigurationSpaceShowTransformOrigin","toggleConfigurationToolbarOpaque","toggleConfigurationToolbarToggleDrawer","drawer","setConfigurationSpaceTransformOriginSize","size","setConfigurationSpaceTransformMode","mode","toggleConfigurationSpaceTransformMultimode","setConfigurationSpaceTransformTouch","touch","toggleConfigurationSpaceFirstPerson","setConfigurationSpaceTransformLocks","transformLock","setConfigurationSpaceLayoutType","layoutType","setConfigurationSpaceCullingDistance","initialState$5","assign","defaultConfiguration","state","action","newState","elements","toolbar","show","plane","controls","viewcube","opacity","setConfigurationThemeGeneral","updatedTheme","general","interaction","global","theme","setConfigurationThemeInteraction","setConfigurationLanguage","language","buttons","opaque","conceal","transformIcons","transformButtons","toggleConfigurationShowTransformOrigin","space","transformOrigin","transparentUI","transformMode","TRANSFORM_MODES","ALL","transformMultimode","transformTouch","firstPerson","toggledDrawers","includes","updatedDrawers","filter","el","transformLocks","updatedTransformLocks","setConfigurationSpaceLayout","layout","LAYOUT_TYPES","cullingDistance","index$m","SET_STATE","index$l","getConfiguration","configuration","actions","initialState","reducer","resolvers","selectors","Types","index$k","initialState$4","index$i","index$g","SHORTCUTS_SET_GLOBAL_SHORTCUTS","SHORTCUTS_UNSET_GLOBAL_SHORTCUTS","index$f","index$e","setGlobalShortcuts","unsetGlobalShortcuts","initialState$3","index$d","index$c","getGlobal","shortcuts","SET_SPACE_FIELD","SET_SPACE_LOADING","SET_TRANSFORM","SET_ANIMATED_TRANSFORM","SET_TRANSFORM_TIME","SET_SPACE_LOCATION","VIEW_CAMERA_MOVE_FORWARD","VIEW_CAMERA_MOVE_BACKWARD","VIEW_CAMERA_MOVE_LEFT","VIEW_CAMERA_MOVE_RIGHT","VIEW_CAMERA_MOVE_UP","VIEW_CAMERA_MOVE_DOWN","VIEW_CAMERA_TURN_UP","VIEW_CAMERA_TURN_DOWN","VIEW_CAMERA_TURN_LEFT","VIEW_CAMERA_TURN_RIGHT","ROTATE_UP","ROTATE_DOWN","ROTATE_LEFT","ROTATE_X","ROTATE_X_WITH","ROTATE_RIGHT","ROTATE_Y","ROTATE_Y_WITH","TRANSLATE_UP","TRANSLATE_DOWN","TRANSLATE_LEFT","TRANSLATE_RIGHT","TRANSLATE_IN","TRANSLATE_OUT","TRANSLATE_X_WITH","TRANSLATE_Y_WITH","SCALE_UP","SCALE_DOWN","SCALE_UP_WITH","SCALE_DOWN_WITH","SET_INITIAL_TREE","SET_TREE","SET_ACTIVE_UNIVERSE","SPACE_RESET_TRANSFORM","SET_VIEW_SIZE","SET_SPACE_SIZE","UPDATE_SPACE_TREE_PLANE","UPDATE_SPACE_LINK_COORDINATES","SPACE_SET_VIEW","SPACE_SET_CULLED_VIEW","index$b","index$a","setSpaceField","setSpaceLoading","setTransform","setAnimatedTransform","setTransformTime","setSpaceLocation","viewCameraMoveForward","viewCameraMoveBackward","viewCameraMoveLeft","viewCameraMoveRight","viewCameraMoveUp","viewCameraMoveDown","viewCameraTurnUp","viewCameraTurnDown","viewCameraTurnLeft","viewCameraTurnRight","rotateUp","rotateDown","rotateX","rotateXWith","rotateLeft","rotateRight","rotateY","rotateYWith","translateUp","translateDown","translateLeft","translateRight","translateIn","translateOut","translateXWith","translateYWith","scaleUp","scaleDown","scaleUpWith","scaleDownWith","setInitialTree","setTree","setActiveUniverse","universeID","spaceResetTransform","setViewSize","setSpaceSize","updateSpaceTreePlane","updateSpaceLinkCoordinates","spaceSetView","spaceSetCulledView","initialState$2","loading","transform","animatedTransform","transformTime","scale","rotationX","rotationY","translationX","translationY","translationZ","initialTree","tree","activeUniverseID","camera","x","y","z","viewSize","width","window","innerWidth","height","innerHeight","spaceSize","depth","topCorner","view","culledView","quaternion","matrix","matrixArrayToCSSMatrix","matrixArrayToCSSMatrix$1","rotateMatrix","rotateMatrix$1","multiplyArrayOfMatrices","multiplyArrayOfMatrices$1","scaleMatrix","scaleMatrix$1","translateMatrix","translateMatrix$2","degToRad","degToRad$2","computeMatrix","spaceState","transformOriginX","transformOriginY","transformOriginZ","rotationMatrix","translationMatrix","scalationMatrix","transformMatrix","toRadians","mathematics","geometry","getNewState","objects","clone","field","resolvedTranslationX","resolvedTranslationY","resolvedTranslationZ","resolvedRotationX","resolvedRotationY","resolvedScale","TRANSLATION_STEP","Math","cos","sin","ROTATION_STEP","computedScale","SCALE_STEP","SCALE_UPPER_LIMIT","SCALE_LOWER_LIMIT","abs","updatedTree","updateTreePlane","planeID","linkCoordinates","updateTreeByPlaneIDWithLinkCoordinates","index$9","index$8","getLoading","getTransformMatrix","getAnimatedTransform","getTransformTime","getRotationX","getRotationY","getTranslationX","getTranslationY","getTranslationZ","getScale","getTransform","getInitialTree","getTree","getActiveUniverseID","getView","getViewSize","getCulledView","THEMES_SET_GENERAL_THEME","THEMES_SET_INTERACTION_THEME","index$7","index$6","setGeneralTheme","setInteractionTheme","initialState$1","plurid","index$5","index$4","getGeneralTheme","themes","getInteractionTheme","SET_UI_TOOLBAR_SCROLL_POSITION","index$3","index$2","setUIToolbarScrollPosition","toolbarScrollPosition","index$1","index","getToolbarScrollPosition","ui","modules","rootReducer","combineReducers","store","preloadedState","createStore","applyMiddleware","StateContext","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","result","done","then","apply","Context","direction","directionLogic","loadHammer","__esModule","n","create","keys","forEach","k","d","getOwnPropertyDescriptor","get","enumerable","_interopNamespace","require$$16","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","styleInject","GlobalStyle","createGlobalStyle","StyledView","div","props","fullHeight","TRANSLATION","ROTATION","SCALE","backgroundColorTertiary","backgroundColorPrimary","ErrorBoundary","Component","constructor","super","this","hasError","static","error","componentDidCatch","errorInfo","render","renderError","children","StyledPluridPlane","mouseOver","planeOpacity","backgroundColorPrimaryAlpha","decomposedColor","decomposeColor","hue","saturation","lightness","boxShadowUmbra","colorPrimary","fontFamilySansSerif","StyledPluridPlaneBridge","backgroundColorDark","ConnectedPluridPlaneBridge","connect","stateGeneralTheme","stateConfiguration","dispatch","context","properties","PLURID_ENTITY_PLANE_BRIDGE","StyledPluridPlaneControls","boxShadowUmbraInset","StyledPluridPlaneControlsLeft","StyledPluridPlaneControlsCenter","StyledPluridPlaneControlsRight","inputs","Textline","PluridTextline","universal","ConnectedPluridPlaneControls","generalTheme","interactionTheme","treePlane","pathbar","route","routeDivisions","protocol","host","encodeURIComponent","path","setPath","useState","showSearch","setShowSearch","PLURID_ENTITY_PLANE_CONTROLS","text","atChange","event","target","onChange","id","absolute","atKeyDown","key","onKeyDown","ariaLabel","StyledPluridPlaneContent","PluridPlaneContent","planeContentElement","useRef","PLURID_ENTITY_PLANE_CONTENT","ConnectedPluridPlane","stateViewSize","dispatchUpdateSpaceTreePlane","planeWidth","showPlaneControls","numbers","checkIntegerNonUnit","useContext","Fragment","planeRenderError","setMouseOver","planeContentProperties","suppressHydrationWarning","cleanTemplate","location","translateX","translateY","translateZ","onMouseEnter","onMouseLeave","PLURID_ENTITY_PLANE","parentPlaneID","isReactRenderable","component","url","StyledPluridRoot","getPlanesRegistrar","getPlanesRegistrar$2","getRegisteredPlane","planes","ConnectedPluridRoot","planesRegistrar","planeContext","PlaneContext","planeContextValue","customPlane","matchedRoute","CustomPluridPlane","childrenPlanes","setChildrenPlanes","computeChildrenPlanes","planesRegistry","map","child","sourceID","activePlane","Plane","pluridProperty","fragments","parameters","query","match","renderablePlane","renderableCustomPlane","Provider","useEffect","JSON","stringify","pluridPlaneID","pluridPlane","planeProperties","PLURID_ENTITY_ROOT","StyledPluridRoots","ConnectedPluridRoots","spaceTransformMatrix","spaceAnimatedTransform","spaceTransformTime","stateTree","transition","PLURID_ENTITY_ROOTS","fadeIn","keyframes","fadeInAnimation","fadeInTime","StyledPluridSpace","isMounted","ConnectedPluridSpace","setIsMounted","PLURID_ENTITY_SPACE","resolveSize","SIZES","SMALL","NORMAL","LARGE","StyledOrigin","backgroundColorTertiaryAlpha","ConnectedOrigin","stateInteractionTheme","showTransformOrigin","transformOriginSize","PLURID_ENTITY_TRANSFORM_ORIGIN","MENUS","StyledToolbar","mouseIn","showMenu","NONE","StyledToolbarButtons","backgroundColorSecondary","showIcons","showTransformButtons","documentsBased","StyledToolbarButton","button","active","StyledIcon","StyledPluridMenuUniverses","afterline","StyledPluridMenuUniversesScroll","li","boxShadowUmbraColor","ConnectedPluridMenuUniverses","dispatchSetActiveUniverse","documentID","StyledPluridDrawer","toggled","StyledPluridDrawerHeading","StyledPluridDrawerItems","typography","Heading","PluridHeading","ConnectedPluridDrawer","heading","items","onClick","StyledPluridMoreMenu","StyledPluridMoreMenuItem","last","StyledPluridMoreMenuScroll","Dropdown","PluridDropdown$1","ConnectedPluridMenuMoreGlobal","stateLanguage","dispatchSetConfigurationThemeGeneralAction","dispatchSetConfigurationThemeInteractionAction","dispatchSetConfigurationLanguage","dispatchSetGeneralTheme","dispatchSetInteractionTheme","selectedTheme","generalThemeName","setGeneralThemeName","interactionThemeName","setInteractionThemeName","internatiolate","internationalization","fields","toolbarDrawerGlobalGeneralTheme","selectables","selected","atSelect","selection","filterable","heightItems","fontSize","toolbarDrawerGlobalInteractionTheme","toolbarDrawerGlobalLanguage","languages","Switch","PluridSwitch$3","ConnectedPluridMenuMoreTransform","dispatchToggleConfigurationSpaceTransformMultimode","multimode","dispatchSetConfigurationSpaceTransformTouch","dispatchSetConfigurationSpaceTransformLocks","lock","toolbarDrawerTransformMultiModeTransform","checked","exclusive","level","toolbarDrawerTransformAllowRotationX","toolbarDrawerTransformAllowRotationY","toolbarDrawerTransformAllowTranslationX","toolbarDrawerTransformAllowTranslationY","toolbarDrawerTransformAllowTranslationZ","toolbarDrawerTransformAllowScale","toolbarDrawerTransformTouchTransform","TRANSFORM_TOUCHES","PAN","SWIPE","PluridDropdown","PluridSwitch$2","Slider","PluridSlider$1","ConnectedPluridMenuMoreSpace","dispatchSetConfigurationPlaneOpacity","dispatchToggleConfigurationSpaceTransparentUI","dispatchToggleConfigurationSpaceShowTransformOrigin","dispatchSetConfigurationSpaceTransformOriginSize","dispatchSetConfigurationSpaceLayoutType","layoutNames","toolbarDrawerSpaceTransparentUserInterface","toolbarDrawerSpaceShowTransformOrigin","toolbarDrawerSpaceTransformOriginSize","toLowerCase","toUpperCase","toolbarDrawerSpacePlaneOpacity","max","min","defaultValue","thumbSize","toolbarDrawerSpaceLayoutType","values","replace","PluridSwitch$1","ConnectedPluridMenuMoreToolbar","dispatchToggleConfigurationToolbarConceal","dispatchToggleConfigurationToolbarTransformIcons","dispatchToggleConfigurationToolbarTransformButtons","dispatchToggleConfigurationToolbarOpaque","viewSizeSmall","setViewSizeSmall","toolbarDrawerToolbarAlwaysOpaque","toolbarDrawerToolbarShowTransformIcons","toolbarDrawerToolbarShowTransformArrows","toolbarDrawerToolbarConcealToolbar","PluridSwitch","ConnectedPluridMenuMoreViewcube","dispatchToggleConfigurationViewcubeHide","dispatchToggleConfigurationViewcubeButtons","dispatchToggleConfigurationViewcubeOpaque","dispatchToggleConfigurationViewcubeConceal","toolbarDrawerViewcubeShowViewcube","toolbarDrawerViewcubeShowTransformButtons","toolbarDrawerViewcubeAlwaysOpaque","toolbarDrawerViewcubeConcealViewcube","PluridSlider","ConnectedPluridMenuMoreTechnical","dispatchSetConfigurationSpaceCullingDistance","localCullingDistance","setLocalCullingDistance","dispatchCullingDistanceUpdate","useDebouncedCallback","toolbarDrawerTechnicalCullingDistance","ConnectedPluridMenuMoreShortcuts","defaultShortcuts","shortcut","shortcutData","shortcutsNames","name","internationalizedKey","modifier","modifierString","Array","isArray","reduce","total","element","internationalizedName","keyAsAny","keyName","length","moreMenusRecord","GLOBAL","toolbarDrawerGlobalTitle","TOOLBAR_DRAWERS","TRANSFORM","toolbarDrawerTransformTitle","SPACE","toolbarDrawerSpaceTitle","TOOLBAR","toolbarDrawerToolbarTitle","VIEWCUBE","toolbarDrawerViewcubeTitle","TECHNICAL","toolbarDrawerTechnicalTitle","SHORTCUTS","toolbarDrawerShortcutsTitle","moreMenus","ConnectedPluridMoreMenu","stateToolbarMenuScrollPosition","dispatchToggleConfigurationToolbarToggleDrawer","dispatchSetUIToolbarScrollPosition","drawers","menus","resolvedMenus","menu","push","resolveMenus","moreMenuScrollElement","handleWheel","_event","current","scrollPosition","scrollTop","addEventListener","removeEventListener","moreMenu","StyledPluridToolbarRotate","StyledPluridTransformArrow","pressed","arrowSigns","left","right","up","down","ConnectedPluridTransformArrow","arrowSign","pressingInterval","arrowElement","setPressed","handleTouch","clearInterval","setInterval","Hammer","on","off","ConnectedPluridToolbarRotate","toggleTransform","PluridIconRotate","toolbarTransformRotate","StyledPluridToolbarScale","ConnectedPluridToolbarScale","PluridIconScale","toolbarTransformScale","StyledPluridToolbarTranslate","ConnectedPluridToolbarTranslate","PluridIconTranslate","toolbarTransformTranslate","ConnectedPluridToolbar","dispatchToggleConfigurationSpaceFirstPerson","dispatchSetConfigurationSpaceTransformMode","showToolbar","menuTimeout","setMouseIn","setShowMenu","setShowIcons","setShowTransformButtons","TYPE","clearTimeout","setTimeout","PLURID_ENTITY_TOOLBAR","PluridIconFirstPerson","handleShowMenu","MORE","PluridIconMore","UNIVERSES","StyledPluridViewcube","StyledPluridViewcubeArrow","StyledPluridViewcubeArrowIcon","StyledFitView","StyledPluridViewcubeFace","colorTertiary","face","boxShadowPenumbraColor","StyledPluridViewcubeFaceZone","hovered","colorSecondary","faceTypes","zoneCodes","frontTopLeft","frontTopCenter","frontTopRight","frontMiddleLeft","frontMiddleCenter","frontMiddleRight","frontBottomLeft","frontBottomCenter","frontBottomRight","rightTopLeft","rightTopCenter","rightTopRight","rightMiddleLeft","rightMiddleCenter","rightMiddleRight","rightBottomLeft","rightBottomCenter","rightBottomRight","backTopLeft","backTopCenter","backTopRight","backMiddleLeft","backMiddleCenter","backMiddleRight","backBottomLeft","backBottomCenter","backBottomRight","leftTopLeft","leftTopCenter","leftTopRight","leftMiddleLeft","leftMiddleCenter","leftMiddleRight","leftBottomLeft","leftBottomCenter","leftBottomRight","topTopLeft","topTopCenter","topTopRight","topMiddleLeft","topMiddleCenter","topMiddleRight","topBottomLeft","topBottomCenter","topBottomRight","baseTopLeft","baseTopCenter","baseTopRight","baseMiddleLeft","baseMiddleCenter","baseMiddleRight","baseBottomLeft","baseBottomCenter","baseBottomRight","faceTransform","A1","A2","A3","B1","B2","B3","C1","C2","C3","A4","A5","B4","B5","C4","C5","A6","A7","B6","B7","C6","C7","A8","B8","C8","D1","E1","ConnectedPluridViewcubeFace","dispatchRotateX","angleX","dispatchRotateY","angleY","dispatchSetAnimatedTransform","animated","faceText","hoveredZone","setHoveredZone","activeZone","setActiveZone","opaqueFace","handleClick","zoneCode","StyledPluridViewcubeModel","StyledPluridViewcubeModelContainer","StyledPluridViewcubeModelCube","translateMatrix$1","degToRad$1","ConnectedPluridViewcubeModel","spaceRotationX","spaceRotationY","stateAnimatedTransform","stateTransformTime","offsets","transformOrigins","computeTransform","viewcubeFront","viewcubeBack","viewcubeLeft","viewcubeRight","viewcubeTop","viewcubeBase","ConnectedPluridViewcube","dispatchRotateXWith","dispatchRotateYWith","dispatchSpaceResetTransform","showViewcube","animatedRotate","onMouseMove","PLURID_ENTITY_VIEWCUBE","gridArea","ctrlKey","metaKey","PluridIconGlobal","ConnectedPluridPlanesView","getRegisteredPlanes","ConnectedView","stateTransform","stateSpaceLoading","stateSpaceView","dispatchSetConfiguration","dispatchSetConfigurationMicro","dispatchSpaceSetViewSize","dispatchSetSpaceLoading","dispatchSetTransformTime","dispatchSetSpaceLocation","spaceLocation","dispatchSetInitialTree","dispatchSetTree","dispatchTranslateXWith","dispatchTranslateYWith","dispatchScaleUpWith","dispatchScaleDownWith","dispatchSpaceSetView","pubsub","planeNotFound","viewElement","pluridPubSub","setPluridPubSub","shortcutsCallback","useCallback","locks","defaultPrevented","dom","verifyPathInputElement","noModifiers","shiftKey","altKey","code","handleGlobalShortcuts","wheelCallback","transformModes","rotation","translation","modes","preventDefault","deltas","deltaX","deltaY","getWheelDirection","handleGlobalWheel","treeUpdate","computedTree","Tree","compute","statePlane","computedPlane","entries","treeUpdateCallback","handlePubSubSubscribe","configurationIndex","subscribe","topic","PLURID_PUBSUB_TOPIC","CONFIGURATION","callback","data","internal","computedConfiguration","merge","spaceTransformIndex","SPACE_TRANSFORM","spaceAnimatedTransformIndex","SPACE_ANIMATED_TRANSFORM","time","spaceRotateXWithIndex","SPACE_ROTATE_X_WITH","spaceRotateXToIndex","SPACE_ROTATE_X_TO","spaceRotateYWithIndex","SPACE_ROTATE_Y_WITH","spaceRotateYToIndex","SPACE_ROTATE_Y_TO","spaceTranslateXWithIndex","SPACE_TRANSLATE_X_WITH","spaceTranslateYWithIndex","SPACE_TRANSLATE_Y_WITH","viewAddPlaneIndex","VIEW_ADD_PLANE","updatedView","viewSetPlanesIndex","VIEW_SET_PLANES","viewRemovePlaneIndex","VIEW_REMOVE_PLANE","unsubscribe","handlePubSubPublish","internalTransform","publish","handleSwipe","velocity","distance","rotationMode","translationMode","scalationMode","handlePan","rotationVelocity","translationVelocity","scaleVelocity","passive","handleResize","meta","debounce","offsetWidth","offsetHeight","defaults","cssProps","userSelect","userDrag","tapHighlightColor","touchSelect","set","DIRECTION_ALL","handleGamepadConnect","navigator","getGamepads","gamepad","handleGamepadDisconnect","unsubscribers","unsubscriber","pluridContext","registerPubSub","pluridPubSubs","viewContainer","tabIndex","PLURID_ENTITY_VIEW","registerPlanes","PluridApplication","storeID","defaultStore","computeStore","subscribeStore","componentDidUpdate","updatedStore","componentWillUnmount","storeUnubscriber","precomputedState","useLocalStorage","currentState","getState","localState","local","load","contextState","states","localStorage","stateData","setItem","contextType","StyledSpaces","alignment","snapType","resolvePluridRoutePlaneData","Registrar","PluridPlanesRegistrar$1","computePluridRoute","isoMatcher","directPlane","kind","renderDirectPlane","notFoundRoute","exterior","spaces","slotted","resolver","pluridRouteProperty","PluridRouteExterior","displayName","pluridApplication","_a","_b","_c","_d","_e","_f","multispaceAlignment","multispace","multispaceSnapType","PluridExterior","PluridSpaces","spacesArray","planeData","fullPath","PLURID_ROUTE_DEFAULT_PATH_VALUE","PLURID_ROUTE_DEFAULT_PATH","utilities","cleanPathElement","PLURID_ROUTE_DEFAULT_SPACE_VALUE","PLURID_ROUTE_DEFAULT_SPACE","PLURID_ROUTE_DEFAULT_UNIVERSE","PLURID_ROUTE_DEFAULT_CLUSTER","join","PLURID_ROUTE_SEPARATOR","universes","universe","clusters","cluster","PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE","PLURID_ROUTE_DEFAULT_CLUSTER_VALUE","pluridPlanesRegistrar","App","uuid","generate","pluridPlanes","MultispaceHeader","MultispaceFooter","header","footer","PLURID_ENTITY_MULTISPACE","renderMultispace","routePlane","flat","pluridRoute","Flat","PluridPlanesRegistrar","IsoMatcher","PluridIsoMatcher$1","routing","PluridRouterBrowser","routes","shell","staticContext","cleanNavigationView","cleanNavigation","notFoundPath","notFoundPathProperty","link","startsWith","gatherPluridPlanes","pluridIsoMatcher","routePlanes","mounted","useMounted","matchedPath","setMatchedPath","pathname","search","computeInitialMatchedPath","setMatchedRoute","PluridRoute","setPluridRoute","handleLocation","detail","PluridRouterExterior","PLURID_ROUTER_LOCATION_CHANGED","history","pushState","DirectPlane","storage","saveState","PLURID_ROUTER_STORAGE","locationStoredEvent","CustomEvent","PLURID_ROUTER_LOCATION_STORED","dispatchEvent","PluridRouterShell","PluridRouterStatic","protocolProperty","hostProperty","gateway","gatewayQuery","gatewayQueryProperty","gatewayEndpoint","gatewayEndpointProperty","PluridProvider","metastate","defaultLinkCoordinates","PluridPortal","elementID","rootID","usePortal","createPortal","StyledPluridPlanePreview","getPlanesRegistrar$1","ConnectedPluridPlanePreview","StyledPluridLink","a","devisible","suffix","resolveRoute","computePlaneAddress","getPluridPlaneIDByData","getPluridPlaneIDByData$1","radToDeg","multiplyMatrices","rotateYMatrix","getTransformRotate","getTransformTranslate","getTransformScale","matrix3d","PluridLink$1","dispatchSetTransform","dispatchSetSpaceField","dispatchUpdateSpaceLinkCoordinates","planeRoute","_devisible","_suffix","atClick","className","previewAppearTime","PLURID_DEFAULT_CONFIGURATION_LINK_PREVIEW_FADE_IN","previewDisappearTime","PLURID_DEFAULT_CONFIGURATION_LINK_PREVIEW_FADE_OUT","planeRouteResolved","absolutePlaneRoute","network","PLURID_DEFAULT_CONFIGURATION_LINK_SUFFIX","linkElement","hoverInTimeout","hoverOutTimeout","showPreview","setShowPreview","showLink","setShowLink","setPlaneID","setPluridPlaneID","setParentPlaneID","setLinkCoordinates","getPluridLinkCoordinates","partialTop","partialLeft","staticSet","searching","top","getComputedStyle","position","offsetTop","offsetLeft","scrollLeft","parentElement","dataset","pluridEntity","planeControlsHeight","navigateToPluridPlane","updatedPlane","zSign1","zSign2","xOffset","rotate","translate","handleShowPluridPlane","logic","togglePlaneFromTree","toggleLinkFromTree","updatedTreePlane","updateTreeWithNewPlane","getAll","updateTreeWithLink","PLURID_ENTITY_LINK","StyledPluridRouterLinkAnchor","StyledPluridRouterLinkDiv","PluridRouterLink","asAnchor","asAnchorProperty","renderProperties","pluridRouterNavigate","href","StyledPluridApplicationConfigurator","ConnectedPluridApplicationConfigurator","configuratorElement","PLURID_ENTITY_APPLICATION_CONFIGURATOR","StyledPluridPlaneConfigurator","ConnectedPluridPlaneConfigurator","planePlaneID","PLURID_ENTITY_PLANE_CONFIGURATOR","StyledExternalPlane","ConnectedExternalPlane","setComponent","domain","getPttpUrl","pttpPath","getPttpPath","response","method","headers","Accept","body","credentials","json","elementQLClient","ElementQLClient","status","Elements","Element","elementRequest","StyledIframePlane","ConnectedIframePlane","src","VirtualListItem","setHeight","markers","Spinner","PluridSpinner","ConnectedPluridVirtualList","generalHeight","_generalHeight","listElement","rows","heights","fill","start","setStart","end","setEnd","floor","elementHeight","setElementHeight","resizing","setResizing","arithmetic","sum","i","item","random","renderRows","StyledPluridPlaneDebugger","ConnectedPluridPlaneDebugger","StyledPluridSpaceDebugger","ConnectedPluridSpaceDebugger","resolvePluridPlaneData","computeApplication","indexedPlanes","planesPropertiesReference","Map","computedIndexedPlanes","appConfiguration","linkPath","planePath","computedIndexedPlane","indexedPlanesReference","planeSources","indexedPlane","currentView","absoluteView","viewItem","viewPath","serverComputeMetastate","isoMatch","paths","globals","pathName","spaceName","universeName","clusterName","planeName","planeAddress","computeIndexedPlanes","pluridApplications","routeData","plurids","collectApplicationsFromPath","application","PluridIsoMatcher","RouteParser","PluridRouteParser","internals","PluridPlaneBridge","PluridPlaneControls","PluridPlaneDebugger","PluridSpaceDebugger","Plurid","Application","RouterStatic","RouterBrowser","Link","RouterLink","ApplicationConfigurator","PlaneConfigurator","ExternalPlane","IframePlane","VirtualList","SPACE_LAYOUT","PubSub","PUBSUB_TOPIC","routerNavigate","PluridApplicationConfigurator","PluridExternalPlane","PluridIframePlane","PluridLink","PluridPlaneConfigurator","PluridVirtualList","getDirectPlaneMatch","matchRoute","matchPlane","matchPath","pluridStateModules","usePluridRouter","routerValue","setRouterValue","fetchState","loadState"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.min.js","sources":["index.js"],"sourcesContent":["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar pluridData = require(\"@plurid/plurid-data\");\n\nvar pluridEngine = require(\"@plurid/plurid-engine\");\n\nvar PluridPubSub = require(\"@plurid/plurid-pubsub\");\n\nvar React = require(\"react\");\n\nvar reactRedux = require(\"react-redux\");\n\nvar redux = require(\"redux\");\n\nvar thunk = require(\"redux-thunk\");\n\nvar pluridFunctions = require(\"@plurid/plurid-functions\");\n\nvar themes$1 = require(\"@plurid/plurid-themes\");\n\nvar styled = require(\"styled-components\");\n\nvar pluridUiComponentsReact = require(\"@plurid/plurid-ui-components-react\");\n\nvar pluridIconsReact = require(\"@plurid/plurid-icons-react\");\n\nvar pluridFunctionsReact = require(\"@plurid/plurid-functions-react\");\n\nvar reactDom = require(\"react-dom\");\n\nvar fetch = require(\"cross-fetch\");\n\nvar elementqlClientReact = require(\"@plurid/elementql-client-react\");\n\nfunction _interopDefaultLegacy(e) {\n return e && typeof e === \"object\" && \"default\" in e ? e : {\n default: e\n };\n}\n\nfunction _interopNamespace(e) {\n if (e && e.__esModule) return e;\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach((function(k) {\n if (k !== \"default\") {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return e[k];\n }\n });\n }\n }));\n }\n n[\"default\"] = e;\n return Object.freeze(n);\n}\n\nvar PluridPubSub__default = _interopDefaultLegacy(PluridPubSub);\n\nvar React__default = _interopDefaultLegacy(React);\n\nvar thunk__default = _interopDefaultLegacy(thunk);\n\nvar themes__default = _interopDefaultLegacy(themes$1);\n\nvar styled__default = _interopDefaultLegacy(styled);\n\nvar fetch__default = _interopDefaultLegacy(fetch);\n\nconst PluridContext = React__default[\"default\"].createContext(undefined);\n\nconst SET_CONFIGURATION = \"SET_CONFIGURATION\";\n\nconst SET_CONFIGURATION_MICRO = \"SET_CONFIGURATION_MICRO\";\n\nconst SET_CONFIGURATION_PLANE_CONTROLS = \"SET_CONFIGURATION_PLANE_CONTROLS\";\n\nconst SET_CONFIGURATION_PLANE_OPACITY = \"SET_CONFIGURATION_PLANE_OPACITY\";\n\nconst SET_CONFIGURATION_THEME_GENERAL = \"SET_CONFIGURATION_THEME_GENERAL\";\n\nconst SET_CONFIGURATION_THEME_INTERACTION = \"SET_CONFIGURATION_THEME_INTERACTION\";\n\nconst SET_CONFIGURATION_LANGUAGE = \"SET_CONFIGURATION_LANGUAGE\";\n\nconst TOGGLE_CONFIGURATION_VIEWCUBE_HIDE = \"TOGGLE_CONFIGURATION_VIEWCUBE_HIDE\";\n\nconst TOGGLE_CONFIGURATION_VIEWCUBE_BUTTONS = \"TOGGLE_CONFIGURATION_VIEWCUBE_BUTTONS\";\n\nconst TOGGLE_CONFIGURATION_VIEWCUBE_OPAQUE = \"TOGGLE_CONFIGURATION_VIEWCUBE_OPAQUE\";\n\nconst TOGGLE_CONFIGURATION_VIEWCUBE_CONCEAL = \"TOGGLE_CONFIGURATION_VIEWCUBE_CONCEAL\";\n\nconst TOGGLE_CONFIGURATION_TOOLBAR_CONCEAL = \"TOGGLE_CONFIGURATION_TOOLBAR_CONCEAL\";\n\nconst TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_ICONS = \"TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_ICONS\";\n\nconst TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_BUTTONS = \"TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_BUTTONS\";\n\nconst TOGGLE_CONFIGURATION_TOOLBAR_OPAQUE = \"TOGGLE_CONFIGURATION_TOOLBAR_OPAQUE\";\n\nconst TOGGLE_CONFIGURATION_TOOLBAR_TOGGLE_DRAWER = \"TOGGLE_CONFIGURATION_TOOLBAR_TOGGLE_DRAWER\";\n\nconst TOGGLE_CONFIGURATION_SPACE_TRANSPARENT_UI = \"TOGGLE_CONFIGURATION_SPACE_TRANSPARENT_UI\";\n\nconst TOGGLE_CONFIGURATION_SPACE_SHOW_TRANSFORM_ORIGIN = \"TOGGLE_CONFIGURATION_SPACE_SHOW_TRANSFORM_ORIGIN\";\n\nconst SET_CONFIGURATION_SPACE_TRANSFORM_ORIGIN_SIZE = \"SET_CONFIGURATION_SPACE_TRANSFORM_ORIGIN_SIZE\";\n\nconst SET_CONFIGURATION_SPACE_TRANSFORM_MODE = \"SET_CONFIGURATION_SPACE_TRANSFORM_MODE\";\n\nconst TOGGLE_CONFIGURATION_SPACE_TRANSFORM_MULTIMODE = \"TOGGLE_CONFIGURATION_SPACE_TRANSFORM_MULTIMODE\";\n\nconst SET_CONFIGURATION_SPACE_TRANSFORM_TOUCH = \"SET_CONFIGURATION_SPACE_TRANSFORM_TOUCH\";\n\nconst TOGGLE_CONFIGURATION_SPACE_FIRST_PERSON = \"TOGGLE_CONFIGURATION_SPACE_FIRST_PERSON\";\n\nconst SET_CONFIGURATION_SPACE_TRANSFORM_LOCKS = \"SET_CONFIGURATION_SPACE_TRANSFORM_LOCKS\";\n\nconst SET_CONFIGURATION_SPACE_LAYOUT_TYPE = \"SET_CONFIGURATION_SPACE_LAYOUT_TYPE\";\n\nconst SET_CONFIGURATION_SPACE_CULLING_DISTANCE = \"SET_CONFIGURATION_SPACE_CULLING_DISTANCE\";\n\nvar index$o = Object.freeze({\n __proto__: null,\n SET_CONFIGURATION: SET_CONFIGURATION,\n SET_CONFIGURATION_MICRO: SET_CONFIGURATION_MICRO,\n SET_CONFIGURATION_PLANE_CONTROLS: SET_CONFIGURATION_PLANE_CONTROLS,\n SET_CONFIGURATION_PLANE_OPACITY: SET_CONFIGURATION_PLANE_OPACITY,\n SET_CONFIGURATION_THEME_GENERAL: SET_CONFIGURATION_THEME_GENERAL,\n SET_CONFIGURATION_THEME_INTERACTION: SET_CONFIGURATION_THEME_INTERACTION,\n SET_CONFIGURATION_LANGUAGE: SET_CONFIGURATION_LANGUAGE,\n TOGGLE_CONFIGURATION_VIEWCUBE_HIDE: TOGGLE_CONFIGURATION_VIEWCUBE_HIDE,\n TOGGLE_CONFIGURATION_VIEWCUBE_BUTTONS: TOGGLE_CONFIGURATION_VIEWCUBE_BUTTONS,\n TOGGLE_CONFIGURATION_VIEWCUBE_OPAQUE: TOGGLE_CONFIGURATION_VIEWCUBE_OPAQUE,\n TOGGLE_CONFIGURATION_VIEWCUBE_CONCEAL: TOGGLE_CONFIGURATION_VIEWCUBE_CONCEAL,\n TOGGLE_CONFIGURATION_TOOLBAR_CONCEAL: TOGGLE_CONFIGURATION_TOOLBAR_CONCEAL,\n TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_ICONS: TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_ICONS,\n TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_BUTTONS: TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_BUTTONS,\n TOGGLE_CONFIGURATION_TOOLBAR_OPAQUE: TOGGLE_CONFIGURATION_TOOLBAR_OPAQUE,\n TOGGLE_CONFIGURATION_TOOLBAR_TOGGLE_DRAWER: TOGGLE_CONFIGURATION_TOOLBAR_TOGGLE_DRAWER,\n TOGGLE_CONFIGURATION_SPACE_TRANSPARENT_UI: TOGGLE_CONFIGURATION_SPACE_TRANSPARENT_UI,\n TOGGLE_CONFIGURATION_SPACE_SHOW_TRANSFORM_ORIGIN: TOGGLE_CONFIGURATION_SPACE_SHOW_TRANSFORM_ORIGIN,\n SET_CONFIGURATION_SPACE_TRANSFORM_ORIGIN_SIZE: SET_CONFIGURATION_SPACE_TRANSFORM_ORIGIN_SIZE,\n SET_CONFIGURATION_SPACE_TRANSFORM_MODE: SET_CONFIGURATION_SPACE_TRANSFORM_MODE,\n TOGGLE_CONFIGURATION_SPACE_TRANSFORM_MULTIMODE: TOGGLE_CONFIGURATION_SPACE_TRANSFORM_MULTIMODE,\n SET_CONFIGURATION_SPACE_TRANSFORM_TOUCH: SET_CONFIGURATION_SPACE_TRANSFORM_TOUCH,\n TOGGLE_CONFIGURATION_SPACE_FIRST_PERSON: TOGGLE_CONFIGURATION_SPACE_FIRST_PERSON,\n SET_CONFIGURATION_SPACE_TRANSFORM_LOCKS: SET_CONFIGURATION_SPACE_TRANSFORM_LOCKS,\n SET_CONFIGURATION_SPACE_LAYOUT_TYPE: SET_CONFIGURATION_SPACE_LAYOUT_TYPE,\n SET_CONFIGURATION_SPACE_CULLING_DISTANCE: SET_CONFIGURATION_SPACE_CULLING_DISTANCE\n});\n\nconst setConfiguration$1 = payload => ({\n type: SET_CONFIGURATION,\n payload: payload\n});\n\nconst setConfigurationMicro$1 = () => ({\n type: SET_CONFIGURATION_MICRO\n});\n\nconst setConfigurationPlaneControls$1 = planeControls => ({\n type: SET_CONFIGURATION_PLANE_CONTROLS,\n payload: planeControls\n});\n\nconst setConfigurationPlaneOpacity$1 = value => ({\n type: SET_CONFIGURATION_PLANE_OPACITY,\n payload: value\n});\n\nconst setConfigurationThemeGeneralAction = payload => ({\n type: SET_CONFIGURATION_THEME_GENERAL,\n payload: payload\n});\n\nconst setConfigurationThemeInteractionAction = payload => ({\n type: SET_CONFIGURATION_THEME_INTERACTION,\n payload: payload\n});\n\nconst setConfigurationLanguageAction = payload => ({\n type: SET_CONFIGURATION_LANGUAGE,\n payload: payload\n});\n\nconst toggleConfigurationViewcubeHide$1 = toggle => ({\n type: TOGGLE_CONFIGURATION_VIEWCUBE_HIDE,\n payload: toggle\n});\n\nconst toggleConfigurationViewcubeButtons$1 = toggle => ({\n type: TOGGLE_CONFIGURATION_VIEWCUBE_BUTTONS,\n payload: toggle\n});\n\nconst toggleConfigurationViewcubeOpaque$1 = toggle => ({\n type: TOGGLE_CONFIGURATION_VIEWCUBE_OPAQUE,\n payload: toggle\n});\n\nconst toggleConfigurationViewcubeConceal$1 = () => ({\n type: TOGGLE_CONFIGURATION_VIEWCUBE_CONCEAL\n});\n\nconst toggleConfigurationToolbarConceal$1 = () => ({\n type: TOGGLE_CONFIGURATION_TOOLBAR_CONCEAL\n});\n\nconst toggleConfigurationToolbarTransformIcons$1 = () => ({\n type: TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_ICONS\n});\n\nconst toggleConfigurationToolbarTransformButtons$1 = () => ({\n type: TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_BUTTONS\n});\n\nconst toggleConfigurationSpaceTransparentUI$1 = () => ({\n type: TOGGLE_CONFIGURATION_SPACE_TRANSPARENT_UI\n});\n\nconst toggleConfigurationSpaceShowTransformOrigin = () => ({\n type: TOGGLE_CONFIGURATION_SPACE_SHOW_TRANSFORM_ORIGIN\n});\n\nconst toggleConfigurationToolbarOpaque$1 = () => ({\n type: TOGGLE_CONFIGURATION_TOOLBAR_OPAQUE\n});\n\nconst toggleConfigurationToolbarToggleDrawer$1 = drawer => ({\n type: TOGGLE_CONFIGURATION_TOOLBAR_TOGGLE_DRAWER,\n payload: drawer\n});\n\nconst setConfigurationSpaceTransformOriginSize$1 = size => ({\n type: SET_CONFIGURATION_SPACE_TRANSFORM_ORIGIN_SIZE,\n payload: size\n});\n\nconst setConfigurationSpaceTransformMode$1 = mode => ({\n type: SET_CONFIGURATION_SPACE_TRANSFORM_MODE,\n payload: mode\n});\n\nconst toggleConfigurationSpaceTransformMultimode$1 = toggle => ({\n type: TOGGLE_CONFIGURATION_SPACE_TRANSFORM_MULTIMODE,\n payload: toggle\n});\n\nconst setConfigurationSpaceTransformTouch$1 = touch => ({\n type: SET_CONFIGURATION_SPACE_TRANSFORM_TOUCH,\n payload: touch\n});\n\nconst toggleConfigurationSpaceFirstPerson$1 = () => ({\n type: TOGGLE_CONFIGURATION_SPACE_FIRST_PERSON\n});\n\nconst setConfigurationSpaceTransformLocks$1 = transformLock => ({\n type: SET_CONFIGURATION_SPACE_TRANSFORM_LOCKS,\n payload: transformLock\n});\n\nconst setConfigurationSpaceLayoutType = layoutType => ({\n type: SET_CONFIGURATION_SPACE_LAYOUT_TYPE,\n payload: layoutType\n});\n\nconst setConfigurationSpaceCullingDistance$1 = value => ({\n type: SET_CONFIGURATION_SPACE_CULLING_DISTANCE,\n payload: value\n});\n\nvar index$n = Object.freeze({\n __proto__: null,\n setConfiguration: setConfiguration$1,\n setConfigurationMicro: setConfigurationMicro$1,\n setConfigurationPlaneControls: setConfigurationPlaneControls$1,\n setConfigurationPlaneOpacity: setConfigurationPlaneOpacity$1,\n setConfigurationThemeGeneralAction: setConfigurationThemeGeneralAction,\n setConfigurationThemeInteractionAction: setConfigurationThemeInteractionAction,\n setConfigurationLanguageAction: setConfigurationLanguageAction,\n toggleConfigurationViewcubeHide: toggleConfigurationViewcubeHide$1,\n toggleConfigurationViewcubeButtons: toggleConfigurationViewcubeButtons$1,\n toggleConfigurationViewcubeOpaque: toggleConfigurationViewcubeOpaque$1,\n toggleConfigurationViewcubeConceal: toggleConfigurationViewcubeConceal$1,\n toggleConfigurationToolbarConceal: toggleConfigurationToolbarConceal$1,\n toggleConfigurationToolbarTransformIcons: toggleConfigurationToolbarTransformIcons$1,\n toggleConfigurationToolbarTransformButtons: toggleConfigurationToolbarTransformButtons$1,\n toggleConfigurationSpaceTransparentUI: toggleConfigurationSpaceTransparentUI$1,\n toggleConfigurationSpaceShowTransformOrigin: toggleConfigurationSpaceShowTransformOrigin,\n toggleConfigurationToolbarOpaque: toggleConfigurationToolbarOpaque$1,\n toggleConfigurationToolbarToggleDrawer: toggleConfigurationToolbarToggleDrawer$1,\n setConfigurationSpaceTransformOriginSize: setConfigurationSpaceTransformOriginSize$1,\n setConfigurationSpaceTransformMode: setConfigurationSpaceTransformMode$1,\n toggleConfigurationSpaceTransformMultimode: toggleConfigurationSpaceTransformMultimode$1,\n setConfigurationSpaceTransformTouch: setConfigurationSpaceTransformTouch$1,\n toggleConfigurationSpaceFirstPerson: toggleConfigurationSpaceFirstPerson$1,\n setConfigurationSpaceTransformLocks: setConfigurationSpaceTransformLocks$1,\n setConfigurationSpaceLayoutType: setConfigurationSpaceLayoutType,\n setConfigurationSpaceCullingDistance: setConfigurationSpaceCullingDistance$1\n});\n\nconst initialState$5 = Object.assign({}, pluridData.defaultConfiguration);\n\nconst setConfiguration = (state, action) => Object.assign(Object.assign({}, state), action.payload);\n\nconst setConfigurationMicro = state => {\n const newState = Object.assign({}, state);\n newState.elements.toolbar.show = false;\n newState.elements.plane.controls.show = false;\n newState.elements.viewcube.show = false;\n return Object.assign({}, newState);\n};\n\nconst setConfigurationPlaneControls = (state, action) => {\n const newState = Object.assign({}, state);\n newState.elements.plane.controls.show = action.payload;\n return Object.assign({}, newState);\n};\n\nconst setConfigurationPlaneOpacity = (state, action) => {\n const newState = Object.assign({}, state);\n newState.elements.plane.opacity = action.payload;\n return Object.assign({}, newState);\n};\n\nconst setConfigurationThemeGeneral = (state, action) => {\n const newState = Object.assign({}, state);\n const updatedTheme = {\n general: action.payload,\n interaction: typeof newState.global.theme === \"object\" ? newState.global.theme.interaction : \"plurid\"\n };\n return Object.assign(Object.assign({}, newState), {\n global: Object.assign(Object.assign({}, newState.global), {\n theme: updatedTheme\n })\n });\n};\n\nconst setConfigurationThemeInteraction = (state, action) => {\n const newState = Object.assign({}, state);\n const updatedTheme = {\n general: typeof newState.global.theme === \"object\" ? newState.global.theme.general : \"plurid\",\n interaction: action.payload\n };\n return Object.assign(Object.assign({}, newState), {\n global: Object.assign(Object.assign({}, newState.global), {\n theme: updatedTheme\n })\n });\n};\n\nconst setConfigurationLanguage = (state, action) => Object.assign(Object.assign({}, state), {\n global: Object.assign(Object.assign({}, state.global), {\n language: action.payload\n })\n});\n\nconst toggleConfigurationViewcubeHide = (state, action) => {\n const newState = Object.assign({}, state);\n newState.elements.viewcube.show = action.payload;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationViewcubeButtons = (state, action) => {\n const newState = Object.assign({}, state);\n newState.elements.viewcube.buttons = action.payload;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationViewcubeOpaque = (state, action) => {\n const newState = Object.assign({}, state);\n newState.elements.viewcube.opaque = action.payload;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationViewcubeConceal = state => {\n const {conceal: conceal} = state.elements.viewcube;\n const newState = Object.assign({}, state);\n newState.elements.viewcube.conceal = !conceal;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationToolbarConceal = state => {\n const {conceal: conceal} = state.elements.toolbar;\n const newState = Object.assign({}, state);\n newState.elements.toolbar.conceal = !conceal;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationToolbarTransformIcons = state => {\n const {transformIcons: transformIcons} = state.elements.toolbar;\n const newState = Object.assign({}, state);\n newState.elements.toolbar.transformIcons = !transformIcons;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationToolbarTransformButtons = state => {\n const {transformButtons: transformButtons} = state.elements.toolbar;\n const newState = Object.assign({}, state);\n newState.elements.toolbar.transformButtons = !transformButtons;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationShowTransformOrigin = state => {\n const {show: show} = state.space.transformOrigin;\n const newState = Object.assign({}, state);\n newState.space.transformOrigin.show = !show;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationToolbarOpaque = state => {\n const {opaque: opaque} = state.elements.toolbar;\n const newState = Object.assign({}, state);\n newState.elements.toolbar.opaque = !opaque;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationSpaceTransparentUI = state => {\n const newState = Object.assign({}, state);\n newState.global.transparentUI = !state.global.transparentUI;\n return Object.assign({}, newState);\n};\n\nconst setConfigurationSpaceTransformOriginSize = (state, action) => {\n const newState = Object.assign({}, state);\n newState.space.transformOrigin.size = action.payload;\n return Object.assign({}, newState);\n};\n\nconst setConfigurationSpaceTransformMode = (state, action) => {\n const newState = Object.assign({}, state);\n if (newState.space.transformMode !== action.payload) {\n newState.space.transformMode = action.payload;\n } else {\n newState.space.transformMode = pluridData.TRANSFORM_MODES.ALL;\n }\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationSpaceTransformMultimode = (state, action) => {\n const newState = Object.assign({}, state);\n newState.space.transformMultimode = action.payload;\n return Object.assign({}, newState);\n};\n\nconst setConfigurationSpaceTransformTouch = (state, action) => {\n const newState = Object.assign({}, state);\n newState.space.transformTouch = action.payload;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationSpaceFirstPerson = state => {\n const {firstPerson: firstPerson} = state.space;\n const newState = Object.assign({}, state);\n newState.space.firstPerson = !firstPerson;\n return Object.assign({}, newState);\n};\n\nconst toggleConfigurationToolbarToggleDrawer = (state, action) => {\n const {toggledDrawers: toggledDrawers} = state.elements.toolbar;\n const newState = Object.assign({}, state);\n if (toggledDrawers.includes(action.payload)) {\n const updatedDrawers = toggledDrawers.filter((el => el !== action.payload));\n newState.elements.toolbar.toggledDrawers = [ ...updatedDrawers ];\n } else {\n newState.elements.toolbar.toggledDrawers = [ ...toggledDrawers, action.payload ];\n }\n return Object.assign({}, newState);\n};\n\nconst setConfigurationSpaceTransformLocks = (state, action) => {\n const {transformLocks: transformLocks} = state.space;\n const newState = Object.assign({}, state);\n const updatedTransformLocks = Object.assign({}, transformLocks);\n updatedTransformLocks[action.payload] = !transformLocks[action.payload];\n newState.space.transformLocks = Object.assign({}, updatedTransformLocks);\n return Object.assign({}, newState);\n};\n\nconst setConfigurationSpaceLayout = (state, action) => {\n const newState = Object.assign({}, state);\n const layout = {\n type: pluridData.LAYOUT_TYPES[action.payload]\n };\n newState.space.layout = Object.assign({}, layout);\n return Object.assign({}, newState);\n};\n\nconst setConfigurationSpaceCullingDistance = (state, action) => {\n const newState = Object.assign({}, state);\n newState.space.cullingDistance = action.payload;\n return Object.assign({}, newState);\n};\n\nvar index$m = Object.freeze({\n __proto__: null,\n setConfiguration: setConfiguration,\n setConfigurationMicro: setConfigurationMicro,\n setConfigurationPlaneControls: setConfigurationPlaneControls,\n setConfigurationPlaneOpacity: setConfigurationPlaneOpacity,\n setConfigurationThemeGeneral: setConfigurationThemeGeneral,\n setConfigurationThemeInteraction: setConfigurationThemeInteraction,\n setConfigurationLanguage: setConfigurationLanguage,\n toggleConfigurationViewcubeHide: toggleConfigurationViewcubeHide,\n toggleConfigurationViewcubeButtons: toggleConfigurationViewcubeButtons,\n toggleConfigurationViewcubeOpaque: toggleConfigurationViewcubeOpaque,\n toggleConfigurationViewcubeConceal: toggleConfigurationViewcubeConceal,\n toggleConfigurationToolbarConceal: toggleConfigurationToolbarConceal,\n toggleConfigurationToolbarTransformIcons: toggleConfigurationToolbarTransformIcons,\n toggleConfigurationToolbarTransformButtons: toggleConfigurationToolbarTransformButtons,\n toggleConfigurationShowTransformOrigin: toggleConfigurationShowTransformOrigin,\n toggleConfigurationToolbarOpaque: toggleConfigurationToolbarOpaque,\n toggleConfigurationSpaceTransparentUI: toggleConfigurationSpaceTransparentUI,\n setConfigurationSpaceTransformOriginSize: setConfigurationSpaceTransformOriginSize,\n setConfigurationSpaceTransformMode: setConfigurationSpaceTransformMode,\n toggleConfigurationSpaceTransformMultimode: toggleConfigurationSpaceTransformMultimode,\n setConfigurationSpaceTransformTouch: setConfigurationSpaceTransformTouch,\n toggleConfigurationSpaceFirstPerson: toggleConfigurationSpaceFirstPerson,\n toggleConfigurationToolbarToggleDrawer: toggleConfigurationToolbarToggleDrawer,\n setConfigurationSpaceTransformLocks: setConfigurationSpaceTransformLocks,\n setConfigurationSpaceLayout: setConfigurationSpaceLayout,\n setConfigurationSpaceCullingDistance: setConfigurationSpaceCullingDistance\n});\n\nconst SET_STATE = \"SET_STATE\";\n\nconst reducer$5 = (state = initialState$5, action) => {\n switch (action.type) {\n case SET_STATE:\n return Object.assign(Object.assign({}, state), action.payload.configuration);\n\n case SET_CONFIGURATION:\n return setConfiguration(state, action);\n\n case SET_CONFIGURATION_MICRO:\n return setConfigurationMicro(state);\n\n case SET_CONFIGURATION_PLANE_CONTROLS:\n return setConfigurationPlaneControls(state, action);\n\n case SET_CONFIGURATION_PLANE_OPACITY:\n return setConfigurationPlaneOpacity(state, action);\n\n case SET_CONFIGURATION_THEME_GENERAL:\n return setConfigurationThemeGeneral(state, action);\n\n case SET_CONFIGURATION_THEME_INTERACTION:\n return setConfigurationThemeInteraction(state, action);\n\n case SET_CONFIGURATION_LANGUAGE:\n return setConfigurationLanguage(state, action);\n\n case TOGGLE_CONFIGURATION_VIEWCUBE_HIDE:\n return toggleConfigurationViewcubeHide(state, action);\n\n case TOGGLE_CONFIGURATION_VIEWCUBE_BUTTONS:\n return toggleConfigurationViewcubeButtons(state, action);\n\n case TOGGLE_CONFIGURATION_VIEWCUBE_OPAQUE:\n return toggleConfigurationViewcubeOpaque(state, action);\n\n case TOGGLE_CONFIGURATION_VIEWCUBE_CONCEAL:\n return toggleConfigurationViewcubeConceal(state);\n\n case TOGGLE_CONFIGURATION_TOOLBAR_CONCEAL:\n return toggleConfigurationToolbarConceal(state);\n\n case TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_ICONS:\n return toggleConfigurationToolbarTransformIcons(state);\n\n case TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_BUTTONS:\n return toggleConfigurationToolbarTransformButtons(state);\n\n case TOGGLE_CONFIGURATION_TOOLBAR_TOGGLE_DRAWER:\n return toggleConfigurationToolbarToggleDrawer(state, action);\n\n case TOGGLE_CONFIGURATION_TOOLBAR_OPAQUE:\n return toggleConfigurationToolbarOpaque(state);\n\n case TOGGLE_CONFIGURATION_SPACE_TRANSPARENT_UI:\n return toggleConfigurationSpaceTransparentUI(state);\n\n case TOGGLE_CONFIGURATION_SPACE_SHOW_TRANSFORM_ORIGIN:\n return toggleConfigurationShowTransformOrigin(state);\n\n case SET_CONFIGURATION_SPACE_TRANSFORM_ORIGIN_SIZE:\n return setConfigurationSpaceTransformOriginSize(state, action);\n\n case SET_CONFIGURATION_SPACE_TRANSFORM_MODE:\n return setConfigurationSpaceTransformMode(state, action);\n\n case TOGGLE_CONFIGURATION_SPACE_TRANSFORM_MULTIMODE:\n return toggleConfigurationSpaceTransformMultimode(state, action);\n\n case SET_CONFIGURATION_SPACE_TRANSFORM_TOUCH:\n return setConfigurationSpaceTransformTouch(state, action);\n\n case TOGGLE_CONFIGURATION_SPACE_FIRST_PERSON:\n return toggleConfigurationSpaceFirstPerson(state);\n\n case SET_CONFIGURATION_SPACE_TRANSFORM_LOCKS:\n return setConfigurationSpaceTransformLocks(state, action);\n\n case SET_CONFIGURATION_SPACE_LAYOUT_TYPE:\n return setConfigurationSpaceLayout(state, action);\n\n case SET_CONFIGURATION_SPACE_CULLING_DISTANCE:\n return setConfigurationSpaceCullingDistance(state, action);\n\n default:\n return Object.assign({}, state);\n }\n};\n\nconst getConfiguration = state => state.configuration;\n\nvar index$l = {\n getConfiguration: getConfiguration\n};\n\nvar configuration = Object.freeze({\n __proto__: null,\n actions: index$n,\n initialState: initialState$5,\n reducer: reducer$5,\n resolvers: index$m,\n selectors: index$l,\n Types: index$o\n});\n\nvar index$j = {};\n\nvar index$k = Object.freeze({\n __proto__: null,\n default: index$j\n});\n\nconst initialState$4 = {};\n\nconst reducer$4 = (state = initialState$4, action) => Object.assign({}, state);\n\nvar index$i = Object.freeze({\n __proto__: null\n});\n\nvar index$h = {};\n\nvar index$g = Object.freeze({\n __proto__: null\n});\n\nvar general = Object.freeze({\n __proto__: null,\n actions: index$k,\n initialState: initialState$4,\n reducer: reducer$4,\n resolvers: index$i,\n selectors: index$h,\n Types: index$g\n});\n\nconst SHORTCUTS_SET_GLOBAL_SHORTCUTS = \"SHORTCUTS_SET_GLOBAL_SHORTCUTS\";\n\nconst SHORTCUTS_UNSET_GLOBAL_SHORTCUTS = \"SHORTCUTS_UNSET_GLOBAL_SHORTCUTS\";\n\nvar index$f = Object.freeze({\n __proto__: null,\n SHORTCUTS_SET_GLOBAL_SHORTCUTS: SHORTCUTS_SET_GLOBAL_SHORTCUTS,\n SHORTCUTS_UNSET_GLOBAL_SHORTCUTS: SHORTCUTS_UNSET_GLOBAL_SHORTCUTS\n});\n\nconst setGlobalShortcuts$1 = () => ({\n type: SHORTCUTS_SET_GLOBAL_SHORTCUTS\n});\n\nconst unsetGlobalShortcuts$1 = () => ({\n type: SHORTCUTS_UNSET_GLOBAL_SHORTCUTS\n});\n\nvar index$e = Object.freeze({\n __proto__: null,\n setGlobalShortcuts: setGlobalShortcuts$1,\n unsetGlobalShortcuts: unsetGlobalShortcuts$1\n});\n\nconst initialState$3 = {\n global: true\n};\n\nconst setGlobalShortcuts = state => Object.assign(Object.assign({}, state), {\n global: true\n});\n\nconst unsetGlobalShortcuts = state => Object.assign(Object.assign({}, state), {\n global: false\n});\n\nvar index$d = Object.freeze({\n __proto__: null,\n setGlobalShortcuts: setGlobalShortcuts,\n unsetGlobalShortcuts: unsetGlobalShortcuts\n});\n\nconst reducer$3 = (state = initialState$3, action) => {\n switch (action.type) {\n case SET_STATE:\n return Object.assign(Object.assign({}, state), action.payload.shortcuts);\n\n case SHORTCUTS_SET_GLOBAL_SHORTCUTS:\n return setGlobalShortcuts(state);\n\n case SHORTCUTS_UNSET_GLOBAL_SHORTCUTS:\n return unsetGlobalShortcuts(state);\n\n default:\n return Object.assign({}, state);\n }\n};\n\nconst getGlobal = state => state.shortcuts.global;\n\nvar index$c = {\n getGlobal: getGlobal\n};\n\nvar shortcuts = Object.freeze({\n __proto__: null,\n actions: index$e,\n initialState: initialState$3,\n reducer: reducer$3,\n resolvers: index$d,\n selectors: index$c,\n Types: index$f\n});\n\nconst SET_SPACE_FIELD = \"SET_SPACE_FIELD\";\n\nconst SET_SPACE_LOADING = \"SET_SPACE_LOADING\";\n\nconst SET_TRANSFORM = \"SET_TRANSFORM\";\n\nconst SET_ANIMATED_TRANSFORM = \"SET_ANIMATED_TRANSFORM\";\n\nconst SET_TRANSFORM_TIME = \"SET_TRANSFORM_TIME\";\n\nconst SET_SPACE_LOCATION = \"SET_SPACE_LOCATION\";\n\nconst VIEW_CAMERA_MOVE_FORWARD = \"VIEW_CAMERA_MOVE_FORWARD\";\n\nconst VIEW_CAMERA_MOVE_BACKWARD = \"VIEW_CAMERA_MOVE_BACKWARD\";\n\nconst VIEW_CAMERA_MOVE_LEFT = \"VIEW_CAMERA_MOVE_LEFT\";\n\nconst VIEW_CAMERA_MOVE_RIGHT = \"VIEW_CAMERA_MOVE_RIGHT\";\n\nconst VIEW_CAMERA_MOVE_UP = \"VIEW_CAMERA_MOVE_UP\";\n\nconst VIEW_CAMERA_MOVE_DOWN = \"VIEW_CAMERA_MOVE_DOWN\";\n\nconst VIEW_CAMERA_TURN_UP = \"VIEW_CAMERA_TURN_UP\";\n\nconst VIEW_CAMERA_TURN_DOWN = \"VIEW_CAMERA_TURN_DOWN\";\n\nconst VIEW_CAMERA_TURN_LEFT = \"VIEW_CAMERA_TURN_LEFT\";\n\nconst VIEW_CAMERA_TURN_RIGHT = \"VIEW_CAMERA_TURN_RIGHT\";\n\nconst ROTATE_UP = \"ROTATE_UP\";\n\nconst ROTATE_DOWN = \"ROTATE_DOWN\";\n\nconst ROTATE_LEFT = \"ROTATE_LEFT\";\n\nconst ROTATE_X = \"ROTATE_X\";\n\nconst ROTATE_X_WITH = \"ROTATE_X_WITH\";\n\nconst ROTATE_RIGHT = \"ROTATE_RIGHT\";\n\nconst ROTATE_Y = \"ROTATE_Y\";\n\nconst ROTATE_Y_WITH = \"ROTATE_Y_WITH\";\n\nconst TRANSLATE_UP = \"TRANSLATE_UP\";\n\nconst TRANSLATE_DOWN = \"TRANSLATE_DOWN\";\n\nconst TRANSLATE_LEFT = \"TRANSLATE_LEFT\";\n\nconst TRANSLATE_RIGHT = \"TRANSLATE_RIGHT\";\n\nconst TRANSLATE_IN = \"TRANSLATE_IN\";\n\nconst TRANSLATE_OUT = \"TRANSLATE_OUT\";\n\nconst TRANSLATE_X_WITH = \"TRANSLATE_X_WITH\";\n\nconst TRANSLATE_Y_WITH = \"TRANSLATE_Y_WITH\";\n\nconst SCALE_UP = \"SCALE_UP\";\n\nconst SCALE_DOWN = \"SCALE_DOWN\";\n\nconst SCALE_UP_WITH = \"SCALE_UP_WITH\";\n\nconst SCALE_DOWN_WITH = \"SCALE_DOWN_WITH\";\n\nconst SET_INITIAL_TREE = \"SET_INITIAL_TREE\";\n\nconst SET_TREE = \"SET_TREE\";\n\nconst SET_ACTIVE_UNIVERSE = \"SET_ACTIVE_UNIVERSE\";\n\nconst SPACE_RESET_TRANSFORM = \"SPACE_RESET_TRANSFORM\";\n\nconst SET_VIEW_SIZE = \"SET_VIEW_SIZE\";\n\nconst SET_SPACE_SIZE = \"SET_SPACE_SIZE\";\n\nconst UPDATE_SPACE_TREE_PLANE = \"UPDATE_SPACE_TREE_PLANE\";\n\nconst UPDATE_SPACE_LINK_COORDINATES = \"UPDATE_SPACE_LINK_COORDINATES\";\n\nconst SPACE_SET_VIEW = \"SPACE_SET_VIEW\";\n\nconst SPACE_SET_CULLED_VIEW = \"SPACE_SET_CULLED_VIEW\";\n\nvar index$b = Object.freeze({\n __proto__: null,\n SET_SPACE_FIELD: SET_SPACE_FIELD,\n SET_SPACE_LOADING: SET_SPACE_LOADING,\n SET_TRANSFORM: SET_TRANSFORM,\n SET_ANIMATED_TRANSFORM: SET_ANIMATED_TRANSFORM,\n SET_TRANSFORM_TIME: SET_TRANSFORM_TIME,\n SET_SPACE_LOCATION: SET_SPACE_LOCATION,\n VIEW_CAMERA_MOVE_FORWARD: VIEW_CAMERA_MOVE_FORWARD,\n VIEW_CAMERA_MOVE_BACKWARD: VIEW_CAMERA_MOVE_BACKWARD,\n VIEW_CAMERA_MOVE_LEFT: VIEW_CAMERA_MOVE_LEFT,\n VIEW_CAMERA_MOVE_RIGHT: VIEW_CAMERA_MOVE_RIGHT,\n VIEW_CAMERA_MOVE_UP: VIEW_CAMERA_MOVE_UP,\n VIEW_CAMERA_MOVE_DOWN: VIEW_CAMERA_MOVE_DOWN,\n VIEW_CAMERA_TURN_UP: VIEW_CAMERA_TURN_UP,\n VIEW_CAMERA_TURN_DOWN: VIEW_CAMERA_TURN_DOWN,\n VIEW_CAMERA_TURN_LEFT: VIEW_CAMERA_TURN_LEFT,\n VIEW_CAMERA_TURN_RIGHT: VIEW_CAMERA_TURN_RIGHT,\n ROTATE_UP: ROTATE_UP,\n ROTATE_DOWN: ROTATE_DOWN,\n ROTATE_LEFT: ROTATE_LEFT,\n ROTATE_X: ROTATE_X,\n ROTATE_X_WITH: ROTATE_X_WITH,\n ROTATE_RIGHT: ROTATE_RIGHT,\n ROTATE_Y: ROTATE_Y,\n ROTATE_Y_WITH: ROTATE_Y_WITH,\n TRANSLATE_UP: TRANSLATE_UP,\n TRANSLATE_DOWN: TRANSLATE_DOWN,\n TRANSLATE_LEFT: TRANSLATE_LEFT,\n TRANSLATE_RIGHT: TRANSLATE_RIGHT,\n TRANSLATE_IN: TRANSLATE_IN,\n TRANSLATE_OUT: TRANSLATE_OUT,\n TRANSLATE_X_WITH: TRANSLATE_X_WITH,\n TRANSLATE_Y_WITH: TRANSLATE_Y_WITH,\n SCALE_UP: SCALE_UP,\n SCALE_DOWN: SCALE_DOWN,\n SCALE_UP_WITH: SCALE_UP_WITH,\n SCALE_DOWN_WITH: SCALE_DOWN_WITH,\n SET_INITIAL_TREE: SET_INITIAL_TREE,\n SET_TREE: SET_TREE,\n SET_ACTIVE_UNIVERSE: SET_ACTIVE_UNIVERSE,\n SPACE_RESET_TRANSFORM: SPACE_RESET_TRANSFORM,\n SET_VIEW_SIZE: SET_VIEW_SIZE,\n SET_SPACE_SIZE: SET_SPACE_SIZE,\n UPDATE_SPACE_TREE_PLANE: UPDATE_SPACE_TREE_PLANE,\n UPDATE_SPACE_LINK_COORDINATES: UPDATE_SPACE_LINK_COORDINATES,\n SPACE_SET_VIEW: SPACE_SET_VIEW,\n SPACE_SET_CULLED_VIEW: SPACE_SET_CULLED_VIEW\n});\n\nconst setSpaceField$1 = payload => ({\n type: SET_SPACE_FIELD,\n payload: payload\n});\n\nconst setSpaceLoading$1 = payload => ({\n type: SET_SPACE_LOADING,\n payload: payload\n});\n\nconst setTransform$1 = payload => ({\n type: SET_TRANSFORM,\n payload: payload\n});\n\nconst setAnimatedTransform$1 = payload => ({\n type: SET_ANIMATED_TRANSFORM,\n payload: payload\n});\n\nconst setTransformTime$1 = payload => ({\n type: SET_TRANSFORM_TIME,\n payload: payload\n});\n\nconst setSpaceLocation$1 = payload => ({\n type: SET_SPACE_LOCATION,\n payload: payload\n});\n\nconst viewCameraMoveForward$1 = () => ({\n type: VIEW_CAMERA_MOVE_FORWARD\n});\n\nconst viewCameraMoveBackward$1 = () => ({\n type: VIEW_CAMERA_MOVE_BACKWARD\n});\n\nconst viewCameraMoveLeft$1 = () => ({\n type: VIEW_CAMERA_MOVE_LEFT\n});\n\nconst viewCameraMoveRight$1 = () => ({\n type: VIEW_CAMERA_MOVE_RIGHT\n});\n\nconst viewCameraMoveUp$1 = () => ({\n type: VIEW_CAMERA_MOVE_UP\n});\n\nconst viewCameraMoveDown$1 = () => ({\n type: VIEW_CAMERA_MOVE_DOWN\n});\n\nconst viewCameraTurnUp$1 = () => ({\n type: VIEW_CAMERA_TURN_UP\n});\n\nconst viewCameraTurnDown$1 = () => ({\n type: VIEW_CAMERA_TURN_DOWN\n});\n\nconst viewCameraTurnLeft$1 = () => ({\n type: VIEW_CAMERA_TURN_LEFT\n});\n\nconst viewCameraTurnRight$1 = () => ({\n type: VIEW_CAMERA_TURN_RIGHT\n});\n\nconst rotateUp$1 = () => ({\n type: ROTATE_UP\n});\n\nconst rotateDown$1 = () => ({\n type: ROTATE_DOWN\n});\n\nconst rotateX$1 = payload => ({\n type: ROTATE_X,\n payload: payload\n});\n\nconst rotateXWith$1 = payload => ({\n type: ROTATE_X_WITH,\n payload: payload\n});\n\nconst rotateLeft$1 = () => ({\n type: ROTATE_LEFT\n});\n\nconst rotateRight$1 = () => ({\n type: ROTATE_RIGHT\n});\n\nconst rotateY$1 = payload => ({\n type: ROTATE_Y,\n payload: payload\n});\n\nconst rotateYWith$1 = payload => ({\n type: ROTATE_Y_WITH,\n payload: payload\n});\n\nconst translateUp$1 = () => ({\n type: TRANSLATE_UP\n});\n\nconst translateDown$1 = () => ({\n type: TRANSLATE_DOWN\n});\n\nconst translateLeft$1 = () => ({\n type: TRANSLATE_LEFT\n});\n\nconst translateRight$1 = () => ({\n type: TRANSLATE_RIGHT\n});\n\nconst translateIn$1 = () => ({\n type: TRANSLATE_IN\n});\n\nconst translateOut$1 = () => ({\n type: TRANSLATE_OUT\n});\n\nconst translateXWith$1 = payload => ({\n type: TRANSLATE_X_WITH,\n payload: payload\n});\n\nconst translateYWith$1 = payload => ({\n type: TRANSLATE_Y_WITH,\n payload: payload\n});\n\nconst scaleUp$1 = () => ({\n type: SCALE_UP\n});\n\nconst scaleDown$1 = () => ({\n type: SCALE_DOWN\n});\n\nconst scaleUpWith$1 = value => ({\n type: SCALE_UP_WITH,\n payload: value\n});\n\nconst scaleDownWith$1 = value => ({\n type: SCALE_DOWN_WITH,\n payload: value\n});\n\nconst setInitialTree$1 = payload => ({\n type: SET_INITIAL_TREE,\n payload: payload\n});\n\nconst setTree$1 = payload => ({\n type: SET_TREE,\n payload: payload\n});\n\nconst setActiveUniverse$1 = universeID => ({\n type: SET_ACTIVE_UNIVERSE,\n payload: universeID\n});\n\nconst spaceResetTransform$1 = () => ({\n type: SPACE_RESET_TRANSFORM\n});\n\nconst setViewSize$1 = payload => ({\n type: SET_VIEW_SIZE,\n payload: payload\n});\n\nconst setSpaceSize$1 = payload => ({\n type: SET_SPACE_SIZE,\n payload: payload\n});\n\nconst updateSpaceTreePlane$1 = payload => ({\n type: UPDATE_SPACE_TREE_PLANE,\n payload: payload\n});\n\nconst updateSpaceLinkCoordinates$1 = payload => ({\n type: UPDATE_SPACE_LINK_COORDINATES,\n payload: payload\n});\n\nconst spaceSetView$1 = payload => ({\n type: SPACE_SET_VIEW,\n payload: payload\n});\n\nconst spaceSetCulledView$1 = payload => ({\n type: SPACE_SET_CULLED_VIEW,\n payload: payload\n});\n\nvar index$a = Object.freeze({\n __proto__: null,\n setSpaceField: setSpaceField$1,\n setSpaceLoading: setSpaceLoading$1,\n setTransform: setTransform$1,\n setAnimatedTransform: setAnimatedTransform$1,\n setTransformTime: setTransformTime$1,\n setSpaceLocation: setSpaceLocation$1,\n viewCameraMoveForward: viewCameraMoveForward$1,\n viewCameraMoveBackward: viewCameraMoveBackward$1,\n viewCameraMoveLeft: viewCameraMoveLeft$1,\n viewCameraMoveRight: viewCameraMoveRight$1,\n viewCameraMoveUp: viewCameraMoveUp$1,\n viewCameraMoveDown: viewCameraMoveDown$1,\n viewCameraTurnUp: viewCameraTurnUp$1,\n viewCameraTurnDown: viewCameraTurnDown$1,\n viewCameraTurnLeft: viewCameraTurnLeft$1,\n viewCameraTurnRight: viewCameraTurnRight$1,\n rotateUp: rotateUp$1,\n rotateDown: rotateDown$1,\n rotateX: rotateX$1,\n rotateXWith: rotateXWith$1,\n rotateLeft: rotateLeft$1,\n rotateRight: rotateRight$1,\n rotateY: rotateY$1,\n rotateYWith: rotateYWith$1,\n translateUp: translateUp$1,\n translateDown: translateDown$1,\n translateLeft: translateLeft$1,\n translateRight: translateRight$1,\n translateIn: translateIn$1,\n translateOut: translateOut$1,\n translateXWith: translateXWith$1,\n translateYWith: translateYWith$1,\n scaleUp: scaleUp$1,\n scaleDown: scaleDown$1,\n scaleUpWith: scaleUpWith$1,\n scaleDownWith: scaleDownWith$1,\n setInitialTree: setInitialTree$1,\n setTree: setTree$1,\n setActiveUniverse: setActiveUniverse$1,\n spaceResetTransform: spaceResetTransform$1,\n setViewSize: setViewSize$1,\n setSpaceSize: setSpaceSize$1,\n updateSpaceTreePlane: updateSpaceTreePlane$1,\n updateSpaceLinkCoordinates: updateSpaceLinkCoordinates$1,\n spaceSetView: spaceSetView$1,\n spaceSetCulledView: spaceSetCulledView$1\n});\n\nconst initialState$2 = {\n loading: true,\n transform: \"matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)\",\n animatedTransform: false,\n transformTime: 450,\n scale: 1,\n rotationX: 0,\n rotationY: 0,\n translationX: 0,\n translationY: 0,\n translationZ: 0,\n initialTree: [],\n tree: [],\n activeUniverseID: \"\",\n camera: {\n x: 0,\n y: 0,\n z: 0\n },\n viewSize: {\n width: typeof window === \"undefined\" ? 1440 : window.innerWidth,\n height: typeof window === \"undefined\" ? 821 : window.innerHeight\n },\n spaceSize: {\n width: typeof window === \"undefined\" ? 1440 : window.innerWidth,\n height: typeof window === \"undefined\" ? 821 : window.innerHeight,\n depth: 0,\n topCorner: {\n x: 0,\n y: 0,\n z: 0\n }\n },\n view: [],\n culledView: []\n};\n\nconst {quaternion: quaternion, matrix: matrix} = pluridEngine.interaction;\n\nconst {matrixArrayToCSSMatrix: matrixArrayToCSSMatrix$1, rotateMatrix: rotateMatrix$1, multiplyArrayOfMatrices: multiplyArrayOfMatrices$1, scaleMatrix: scaleMatrix$1, translateMatrix: translateMatrix$2} = matrix;\n\nconst {degToRad: degToRad$2} = quaternion;\n\nconst computeMatrix = spaceState => {\n const {translationX: translationX, translationY: translationY, translationZ: translationZ, rotationX: rotationX, rotationY: rotationY, scale: scale} = spaceState;\n const innerWidth = typeof window === \"undefined\" ? 720 : window.innerWidth / 2;\n const innerHeight = typeof window === \"undefined\" ? 400 : window.innerHeight / 2;\n const transformOriginX = translationX * -1 + innerWidth;\n const transformOriginY = translationY * -1 + innerHeight;\n const transformOriginZ = translationZ * -1;\n const rotationMatrix = rotateMatrix$1(degToRad$2(-rotationX), degToRad$2(-rotationY));\n const translationMatrix = translateMatrix$2(translationX, translationY, translationZ);\n const scalationMatrix = scaleMatrix$1(scale);\n const transformMatrix = multiplyArrayOfMatrices$1([ translationMatrix, multiplyArrayOfMatrices$1([ translateMatrix$2(transformOriginX, transformOriginY, transformOriginZ), rotationMatrix, translateMatrix$2(-transformOriginX, -transformOriginY, -transformOriginZ) ]), scalationMatrix ]);\n const transform = matrixArrayToCSSMatrix$1(transformMatrix);\n return transform;\n};\n\nconst {toRadians: toRadians} = pluridFunctions.mathematics.geometry;\n\nconst getNewState = state => pluridFunctions.objects.clone(state, \"any\");\n\nconst setSpaceField = (state, action) => {\n const {field: field, value: value} = action.payload;\n const newState = getNewState(state);\n newState[field] = value;\n return Object.assign({}, newState);\n};\n\nconst setSpaceLoading = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n loading: action.payload\n });\n};\n\nconst setTransform = (state, action) => {\n const {translationX: translationX, translationY: translationY, translationZ: translationZ, rotationX: rotationX, rotationY: rotationY, scale: scale} = action.payload;\n const resolvedTranslationX = translationX !== null && translationX !== void 0 ? translationX : state.translationX;\n const resolvedTranslationY = translationY !== null && translationY !== void 0 ? translationY : state.translationY;\n const resolvedTranslationZ = translationZ !== null && translationZ !== void 0 ? translationZ : state.translationZ;\n const resolvedRotationX = rotationX !== null && rotationX !== void 0 ? rotationX : state.rotationX;\n const resolvedRotationY = rotationY !== null && rotationY !== void 0 ? rotationY : state.rotationY;\n const resolvedScale = scale !== null && scale !== void 0 ? scale : state.scale;\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n translationX: resolvedTranslationX,\n translationY: resolvedTranslationY,\n translationZ: resolvedTranslationZ,\n rotationX: resolvedRotationX,\n rotationY: resolvedRotationY,\n scale: resolvedScale\n });\n};\n\nconst setAnimatedTransform = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n animatedTransform: action.payload\n });\n};\n\nconst setTransformTime = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n transformTime: action.payload\n });\n};\n\nconst setSpaceLocation = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), action.payload);\n};\n\nconst viewCameraMoveForward = state => {\n const newState = getNewState(state);\n newState.translationZ = state.translationZ + pluridData.TRANSLATION_STEP * 6 * Math.cos(toRadians(-state.rotationY));\n newState.translationX = state.translationX + pluridData.TRANSLATION_STEP * 6 * Math.sin(toRadians(-state.rotationY));\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst viewCameraMoveBackward = state => {\n const newState = getNewState(state);\n newState.translationZ = state.translationZ - pluridData.TRANSLATION_STEP * 6 * Math.cos(toRadians(-state.rotationY));\n newState.translationX = state.translationX - pluridData.TRANSLATION_STEP * 6 * Math.sin(toRadians(-state.rotationY));\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst viewCameraMoveLeft = state => {\n const newState = getNewState(state);\n newState.translationX = state.translationX + pluridData.TRANSLATION_STEP * 3 * Math.cos(toRadians(state.rotationY));\n newState.translationZ = state.translationZ + pluridData.TRANSLATION_STEP * 3 * Math.sin(toRadians(state.rotationY));\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst viewCameraMoveRight = state => {\n const newState = getNewState(state);\n newState.translationX = state.translationX - pluridData.TRANSLATION_STEP * 3 * Math.cos(toRadians(state.rotationY));\n newState.translationZ = state.translationZ - pluridData.TRANSLATION_STEP * 3 * Math.sin(toRadians(state.rotationY));\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst viewCameraMoveUp = state => {\n const newState = getNewState(state);\n newState.translationY = state.translationY + pluridData.TRANSLATION_STEP * 3;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst viewCameraMoveDown = state => {\n const newState = getNewState(state);\n newState.translationY = state.translationY - pluridData.TRANSLATION_STEP * 3;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst viewCameraTurnUp = state => {\n const newState = getNewState(state);\n newState.rotationX = (state.rotationX + pluridData.ROTATION_STEP) % 360;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst viewCameraTurnDown = state => {\n const newState = getNewState(state);\n newState.rotationX = (state.rotationX - pluridData.ROTATION_STEP) % 360;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst viewCameraTurnLeft = state => {\n const newState = getNewState(state);\n newState.rotationY = (state.rotationY - pluridData.ROTATION_STEP) % 360;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst viewCameraTurnRight = state => {\n const newState = getNewState(state);\n newState.rotationY = (state.rotationY + pluridData.ROTATION_STEP) % 360;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst rotateUp = state => {\n const newState = getNewState(state);\n newState.rotationX = (state.rotationX + pluridData.ROTATION_STEP) % 360;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst rotateDown = state => {\n const newState = getNewState(state);\n newState.rotationX = (state.rotationX - pluridData.ROTATION_STEP) % 360;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst rotateX = (state, action) => {\n const newState = getNewState(state);\n newState.rotationX = action.payload;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst rotateXWith = (state, action) => {\n const newState = getNewState(state);\n newState.rotationX = state.rotationX + action.payload;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst rotateLeft = state => {\n const newState = getNewState(state);\n newState.rotationY = (state.rotationY + pluridData.ROTATION_STEP) % 360;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst rotateRight = state => {\n const newState = getNewState(state);\n newState.rotationY = (state.rotationY - pluridData.ROTATION_STEP) % 360;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst rotateY = (state, action) => {\n const newState = getNewState(state);\n newState.rotationY = action.payload;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst rotateYWith = (state, action) => {\n const newState = getNewState(state);\n newState.rotationY = state.rotationY + action.payload;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst translateUp = state => {\n const newState = getNewState(state);\n newState.translationY = state.translationY - pluridData.TRANSLATION_STEP;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst translateDown = state => {\n const newState = getNewState(state);\n newState.translationY = state.translationY + pluridData.TRANSLATION_STEP;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst translateLeft = state => {\n const newState = getNewState(state);\n newState.translationX = state.translationX - pluridData.TRANSLATION_STEP * Math.cos(toRadians(state.rotationY));\n newState.translationZ = state.translationZ - pluridData.TRANSLATION_STEP * Math.sin(toRadians(state.rotationY));\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst translateRight = state => {\n const newState = getNewState(state);\n newState.translationX = state.translationX + pluridData.TRANSLATION_STEP * Math.cos(toRadians(state.rotationY));\n newState.translationZ = state.translationZ + pluridData.TRANSLATION_STEP * Math.sin(toRadians(state.rotationY));\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst translateIn = state => {\n const newState = getNewState(state);\n newState.translationZ = state.translationZ - pluridData.TRANSLATION_STEP * 3 * Math.cos(toRadians(-state.rotationY));\n newState.translationX = state.translationX - pluridData.TRANSLATION_STEP * 3 * Math.sin(toRadians(-state.rotationY));\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst translateOut = state => {\n const newState = getNewState(state);\n newState.translationZ = state.translationZ + pluridData.TRANSLATION_STEP * 3 * Math.cos(toRadians(-state.rotationY));\n newState.translationX = state.translationX + pluridData.TRANSLATION_STEP * 3 * Math.sin(toRadians(-state.rotationY));\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst translateXWith = (state, action) => {\n const newState = getNewState(state);\n newState.translationX = state.translationX + action.payload * Math.cos(toRadians(state.rotationY));\n newState.translationZ = state.translationZ + action.payload * Math.sin(toRadians(state.rotationY));\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst translateYWith = (state, action) => {\n const newState = getNewState(state);\n newState.translationY = state.translationY + action.payload;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst scaleUp = state => {\n const computedScale = state.scale + pluridData.SCALE_STEP;\n const scale = computedScale < pluridData.SCALE_UPPER_LIMIT ? computedScale : pluridData.SCALE_UPPER_LIMIT;\n const newState = getNewState(state);\n newState.scale = scale;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst scaleDown = state => {\n const computedScale = state.scale - pluridData.SCALE_STEP;\n const scale = computedScale > pluridData.SCALE_LOWER_LIMIT ? computedScale : pluridData.SCALE_LOWER_LIMIT;\n const newState = getNewState(state);\n newState.scale = scale;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst scaleUpWith = (state, action) => {\n const computedScale = state.scale + Math.abs(action.payload);\n const scale = computedScale < pluridData.SCALE_UPPER_LIMIT ? computedScale : pluridData.SCALE_UPPER_LIMIT;\n const newState = getNewState(state);\n newState.scale = scale;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst scaleDownWith = (state, action) => {\n const computedScale = state.scale - Math.abs(action.payload);\n const scale = computedScale > pluridData.SCALE_LOWER_LIMIT ? computedScale : pluridData.SCALE_LOWER_LIMIT;\n const newState = getNewState(state);\n newState.scale = scale;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst setInitialTree = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n initialTree: [ ...action.payload ]\n });\n};\n\nconst setTree = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n tree: [ ...action.payload ]\n });\n};\n\nconst setActiveUniverse = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n activeUniverseID: action.payload\n });\n};\n\nconst spaceResetTransform = state => {\n const newState = getNewState(state);\n newState.scale = 1;\n newState.rotationX = 0;\n newState.rotationY = 0;\n newState.translationX = 0;\n newState.translationY = 0;\n newState.translationZ = 0;\n newState.transform = computeMatrix(newState);\n return Object.assign({}, newState);\n};\n\nconst setViewSize = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n viewSize: Object.assign({}, action.payload)\n });\n};\n\nconst setSpaceSize = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n spaceSize: Object.assign({}, action.payload)\n });\n};\n\nconst updateSpaceTreePlane = (state, action) => {\n const newState = getNewState(state);\n const updatedTree = pluridEngine.general.tree.updateTreePlane(newState.tree, action.payload);\n return Object.assign(Object.assign({}, newState), {\n tree: updatedTree\n });\n};\n\nconst updateSpaceLinkCoordinates = (state, action) => {\n const {planeID: planeID, linkCoordinates: linkCoordinates} = action.payload;\n const newState = getNewState(state);\n const updatedTree = pluridEngine.general.tree.updateTreeByPlaneIDWithLinkCoordinates(newState.tree, planeID, linkCoordinates);\n return Object.assign(Object.assign({}, newState), {\n tree: updatedTree\n });\n};\n\nconst spaceSetView = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n view: action.payload\n });\n};\n\nconst spaceSetCulledView = (state, action) => {\n const newState = getNewState(state);\n return Object.assign(Object.assign({}, newState), {\n culledView: action.payload\n });\n};\n\nvar index$9 = Object.freeze({\n __proto__: null,\n setSpaceField: setSpaceField,\n setSpaceLoading: setSpaceLoading,\n setTransform: setTransform,\n setAnimatedTransform: setAnimatedTransform,\n setTransformTime: setTransformTime,\n setSpaceLocation: setSpaceLocation,\n viewCameraMoveForward: viewCameraMoveForward,\n viewCameraMoveBackward: viewCameraMoveBackward,\n viewCameraMoveLeft: viewCameraMoveLeft,\n viewCameraMoveRight: viewCameraMoveRight,\n viewCameraMoveUp: viewCameraMoveUp,\n viewCameraMoveDown: viewCameraMoveDown,\n viewCameraTurnUp: viewCameraTurnUp,\n viewCameraTurnDown: viewCameraTurnDown,\n viewCameraTurnLeft: viewCameraTurnLeft,\n viewCameraTurnRight: viewCameraTurnRight,\n rotateUp: rotateUp,\n rotateDown: rotateDown,\n rotateX: rotateX,\n rotateXWith: rotateXWith,\n rotateLeft: rotateLeft,\n rotateRight: rotateRight,\n rotateY: rotateY,\n rotateYWith: rotateYWith,\n translateUp: translateUp,\n translateDown: translateDown,\n translateLeft: translateLeft,\n translateRight: translateRight,\n translateIn: translateIn,\n translateOut: translateOut,\n translateXWith: translateXWith,\n translateYWith: translateYWith,\n scaleUp: scaleUp,\n scaleDown: scaleDown,\n scaleUpWith: scaleUpWith,\n scaleDownWith: scaleDownWith,\n setInitialTree: setInitialTree,\n setTree: setTree,\n setActiveUniverse: setActiveUniverse,\n spaceResetTransform: spaceResetTransform,\n setViewSize: setViewSize,\n setSpaceSize: setSpaceSize,\n updateSpaceTreePlane: updateSpaceTreePlane,\n updateSpaceLinkCoordinates: updateSpaceLinkCoordinates,\n spaceSetView: spaceSetView,\n spaceSetCulledView: spaceSetCulledView\n});\n\nconst reducer$2 = (state = initialState$2, action) => {\n switch (action.type) {\n case SET_STATE:\n return Object.assign(Object.assign({}, state), action.payload.space);\n\n case SET_SPACE_FIELD:\n return setSpaceField(state, action);\n\n case SET_SPACE_LOADING:\n return setSpaceLoading(state, action);\n\n case SET_TRANSFORM:\n return setTransform(state, action);\n\n case SET_ANIMATED_TRANSFORM:\n return setAnimatedTransform(state, action);\n\n case SET_TRANSFORM_TIME:\n return setTransformTime(state, action);\n\n case SET_SPACE_LOCATION:\n return setSpaceLocation(state, action);\n\n case VIEW_CAMERA_MOVE_FORWARD:\n return viewCameraMoveForward(state);\n\n case VIEW_CAMERA_MOVE_BACKWARD:\n return viewCameraMoveBackward(state);\n\n case VIEW_CAMERA_MOVE_LEFT:\n return viewCameraMoveLeft(state);\n\n case VIEW_CAMERA_MOVE_RIGHT:\n return viewCameraMoveRight(state);\n\n case VIEW_CAMERA_MOVE_UP:\n return viewCameraMoveUp(state);\n\n case VIEW_CAMERA_MOVE_DOWN:\n return viewCameraMoveDown(state);\n\n case VIEW_CAMERA_TURN_UP:\n return viewCameraTurnUp(state);\n\n case VIEW_CAMERA_TURN_DOWN:\n return viewCameraTurnDown(state);\n\n case VIEW_CAMERA_TURN_LEFT:\n return viewCameraTurnLeft(state);\n\n case VIEW_CAMERA_TURN_RIGHT:\n return viewCameraTurnRight(state);\n\n case ROTATE_UP:\n return rotateUp(state);\n\n case ROTATE_DOWN:\n return rotateDown(state);\n\n case ROTATE_X:\n return rotateX(state, action);\n\n case ROTATE_X_WITH:\n return rotateXWith(state, action);\n\n case ROTATE_LEFT:\n return rotateLeft(state);\n\n case ROTATE_RIGHT:\n return rotateRight(state);\n\n case ROTATE_Y:\n return rotateY(state, action);\n\n case ROTATE_Y_WITH:\n return rotateYWith(state, action);\n\n case TRANSLATE_UP:\n return translateUp(state);\n\n case TRANSLATE_DOWN:\n return translateDown(state);\n\n case TRANSLATE_LEFT:\n return translateLeft(state);\n\n case TRANSLATE_RIGHT:\n return translateRight(state);\n\n case TRANSLATE_IN:\n return translateIn(state);\n\n case TRANSLATE_OUT:\n return translateOut(state);\n\n case TRANSLATE_X_WITH:\n return translateXWith(state, action);\n\n case TRANSLATE_Y_WITH:\n return translateYWith(state, action);\n\n case SCALE_UP:\n return scaleUp(state);\n\n case SCALE_DOWN:\n return scaleDown(state);\n\n case SCALE_UP_WITH:\n return scaleUpWith(state, action);\n\n case SCALE_DOWN_WITH:\n return scaleDownWith(state, action);\n\n case SET_INITIAL_TREE:\n return setInitialTree(state, action);\n\n case SET_TREE:\n return setTree(state, action);\n\n case SET_ACTIVE_UNIVERSE:\n return setActiveUniverse(state, action);\n\n case SPACE_RESET_TRANSFORM:\n return spaceResetTransform(state);\n\n case SET_VIEW_SIZE:\n return setViewSize(state, action);\n\n case SET_SPACE_SIZE:\n return setSpaceSize(state, action);\n\n case UPDATE_SPACE_TREE_PLANE:\n return updateSpaceTreePlane(state, action);\n\n case UPDATE_SPACE_LINK_COORDINATES:\n return updateSpaceLinkCoordinates(state, action);\n\n case SPACE_SET_VIEW:\n return spaceSetView(state, action);\n\n case SPACE_SET_CULLED_VIEW:\n return spaceSetCulledView(state, action);\n\n default:\n return Object.assign({}, state);\n }\n};\n\nconst getLoading = state => state.space.loading;\n\nconst getTransformMatrix = state => state.space.transform;\n\nconst getAnimatedTransform = state => state.space.animatedTransform;\n\nconst getTransformTime = state => state.space.transformTime;\n\nconst getRotationX = state => state.space.rotationX;\n\nconst getRotationY = state => state.space.rotationY;\n\nconst getTranslationX = state => state.space.translationX;\n\nconst getTranslationY = state => state.space.translationY;\n\nconst getTranslationZ = state => state.space.translationZ;\n\nconst getScale = state => state.space.scale;\n\nconst getInitialTree = state => state.space.initialTree;\n\nconst getTree = state => state.space.tree;\n\nconst getTransform = state => ({\n rotationX: state.space.rotationX,\n rotationY: state.space.rotationY,\n translationX: state.space.translationX,\n translationY: state.space.translationY,\n translationZ: state.space.translationZ,\n scale: state.space.scale\n});\n\nconst getActiveUniverseID = state => state.space.activeUniverseID;\n\nconst getView = state => state.space.view;\n\nconst getViewSize = state => state.space.viewSize;\n\nconst getCulledView = state => state.space.culledView;\n\nvar index$8 = {\n getLoading: getLoading,\n getTransformMatrix: getTransformMatrix,\n getAnimatedTransform: getAnimatedTransform,\n getTransformTime: getTransformTime,\n getRotationX: getRotationX,\n getRotationY: getRotationY,\n getTranslationX: getTranslationX,\n getTranslationY: getTranslationY,\n getTranslationZ: getTranslationZ,\n getScale: getScale,\n getTransform: getTransform,\n getInitialTree: getInitialTree,\n getTree: getTree,\n getActiveUniverseID: getActiveUniverseID,\n getView: getView,\n getViewSize: getViewSize,\n getCulledView: getCulledView\n};\n\nvar space = Object.freeze({\n __proto__: null,\n actions: index$a,\n initialState: initialState$2,\n reducer: reducer$2,\n resolvers: index$9,\n selectors: index$8,\n Types: index$b\n});\n\nconst THEMES_SET_GENERAL_THEME = \"THEMES_SET_GENERAL_THEME\";\n\nconst THEMES_SET_INTERACTION_THEME = \"THEMES_SET_INTERACTION_THEME\";\n\nvar index$7 = Object.freeze({\n __proto__: null,\n THEMES_SET_GENERAL_THEME: THEMES_SET_GENERAL_THEME,\n THEMES_SET_INTERACTION_THEME: THEMES_SET_INTERACTION_THEME\n});\n\nconst setGeneralTheme$1 = theme => ({\n type: THEMES_SET_GENERAL_THEME,\n payload: theme\n});\n\nconst setInteractionTheme$1 = theme => ({\n type: THEMES_SET_INTERACTION_THEME,\n payload: theme\n});\n\nvar index$6 = Object.freeze({\n __proto__: null,\n setGeneralTheme: setGeneralTheme$1,\n setInteractionTheme: setInteractionTheme$1\n});\n\nconst initialState$1 = {\n general: themes$1.plurid,\n interaction: themes$1.plurid\n};\n\nconst setGeneralTheme = (state, action) => Object.assign(Object.assign({}, state), {\n general: Object.assign({}, action.payload)\n});\n\nconst setInteractionTheme = (state, action) => Object.assign(Object.assign({}, state), {\n interaction: Object.assign({}, action.payload)\n});\n\nvar index$5 = Object.freeze({\n __proto__: null,\n setGeneralTheme: setGeneralTheme,\n setInteractionTheme: setInteractionTheme\n});\n\nconst reducer$1 = (state = initialState$1, action) => {\n switch (action.type) {\n case SET_STATE:\n return Object.assign(Object.assign({}, state), action.payload.themes);\n\n case THEMES_SET_GENERAL_THEME:\n return setGeneralTheme(state, action);\n\n case THEMES_SET_INTERACTION_THEME:\n return setInteractionTheme(state, action);\n\n default:\n return Object.assign({}, state);\n }\n};\n\nconst getGeneralTheme = state => state.themes.general;\n\nconst getInteractionTheme = state => state.themes.interaction;\n\nvar index$4 = {\n getGeneralTheme: getGeneralTheme,\n getInteractionTheme: getInteractionTheme\n};\n\nvar themes = Object.freeze({\n __proto__: null,\n actions: index$6,\n initialState: initialState$1,\n reducer: reducer$1,\n resolvers: index$5,\n selectors: index$4,\n Types: index$7\n});\n\nconst SET_UI_TOOLBAR_SCROLL_POSITION = \"SET_UI_TOOLBAR_SCROLL_POSITION\";\n\nvar index$3 = Object.freeze({\n __proto__: null,\n SET_UI_TOOLBAR_SCROLL_POSITION: SET_UI_TOOLBAR_SCROLL_POSITION\n});\n\nconst setUIToolbarScrollPosition$1 = value => ({\n type: SET_UI_TOOLBAR_SCROLL_POSITION,\n payload: value\n});\n\nvar index$2 = Object.freeze({\n __proto__: null,\n setUIToolbarScrollPosition: setUIToolbarScrollPosition$1\n});\n\nconst initialState = {\n toolbarScrollPosition: 0\n};\n\nconst setUIToolbarScrollPosition = (state, action) => Object.assign(Object.assign({}, state), {\n toolbarScrollPosition: action.payload\n});\n\nvar index$1 = Object.freeze({\n __proto__: null,\n setUIToolbarScrollPosition: setUIToolbarScrollPosition\n});\n\nconst reducer = (state = initialState, action) => {\n switch (action.type) {\n case SET_STATE:\n return Object.assign(Object.assign({}, state), action.payload.ui);\n\n case SET_UI_TOOLBAR_SCROLL_POSITION:\n return setUIToolbarScrollPosition(state, action);\n\n default:\n return Object.assign({}, state);\n }\n};\n\nconst getToolbarScrollPosition = state => state.ui.toolbarScrollPosition;\n\nvar index = {\n getToolbarScrollPosition: getToolbarScrollPosition\n};\n\nvar ui = Object.freeze({\n __proto__: null,\n actions: index$2,\n initialState: initialState,\n reducer: reducer,\n resolvers: index$1,\n selectors: index,\n Types: index$3\n});\n\nvar modules = {\n configuration: configuration,\n general: general,\n shortcuts: shortcuts,\n space: space,\n themes: themes,\n ui: ui\n};\n\nconst rootReducer = redux.combineReducers({\n configuration: modules.configuration.reducer,\n general: modules.general.reducer,\n shortcuts: modules.shortcuts.reducer,\n space: modules.space.reducer,\n themes: modules.themes.reducer,\n ui: modules.ui.reducer\n});\n\nconst store$1 = preloadedState => redux.createStore(rootReducer, preloadedState, redux.applyMiddleware(thunk__default[\"default\"]));\n\nconst store = store$1;\n\nconst StateContext = React__default[\"default\"].createContext({});\n\nfunction __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P((function(resolve) {\n resolve(value);\n }));\n }\n return new (P || (P = Promise))((function(resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n }));\n}\n\nconst Context = React__default[\"default\"].createContext(null);\n\nvar actions = {\n configuration: modules.configuration.actions,\n general: modules.general.actions,\n shortcuts: modules.shortcuts.actions,\n space: modules.space.actions,\n themes: modules.themes.actions,\n ui: modules.ui.actions\n};\n\nconst {direction: directionLogic} = pluridEngine.interaction;\n\nconst handleGlobalShortcuts = (dispatch, event, firstPerson, locks) => {\n if (event.defaultPrevented) {\n return;\n }\n const inputOnPath = pluridFunctions.dom.verifyPathInputElement(event.path);\n if (inputOnPath) {\n return;\n }\n const noModifiers = !event.shiftKey && !event.altKey && !event.ctrlKey && !event.metaKey;\n if (event.code === \"KeyF\" && noModifiers) {\n return dispatch(actions.configuration.toggleConfigurationSpaceFirstPerson());\n }\n if (firstPerson) {\n if (event.code === \"KeyW\" && noModifiers && locks.translationZ) {\n return dispatch(actions.space.viewCameraMoveForward());\n }\n if (event.code === \"KeyS\" && noModifiers && locks.translationZ) {\n return dispatch(actions.space.viewCameraMoveBackward());\n }\n if (event.code === \"KeyA\" && noModifiers && locks.translationX) {\n return dispatch(actions.space.viewCameraMoveLeft());\n }\n if (event.code === \"KeyA\" && event.shiftKey && locks.rotationY) {\n return dispatch(actions.space.viewCameraTurnLeft());\n }\n if (event.code === \"KeyD\" && noModifiers && locks.translationX) {\n return dispatch(actions.space.viewCameraMoveRight());\n }\n if (event.code === \"KeyD\" && event.shiftKey && locks.rotationY) {\n return dispatch(actions.space.viewCameraTurnRight());\n }\n if (event.code === \"KeyQ\" && noModifiers && locks.rotationX) {\n return dispatch(actions.space.viewCameraTurnUp());\n }\n if (event.code === \"KeyZ\" && noModifiers && locks.rotationX) {\n return dispatch(actions.space.viewCameraTurnDown());\n }\n if (event.code === \"KeyE\" && noModifiers && locks.translationY) {\n return dispatch(actions.space.viewCameraMoveUp());\n }\n if (event.code === \"KeyC\" && noModifiers && locks.translationY) {\n return dispatch(actions.space.viewCameraMoveDown());\n }\n }\n if (event.code === \"KeyR\" && noModifiers) {\n return dispatch(actions.configuration.setConfigurationSpaceTransformMode(pluridData.TRANSFORM_MODES.ROTATION));\n }\n if (event.code === \"KeyT\" && noModifiers) {\n return dispatch(actions.configuration.setConfigurationSpaceTransformMode(pluridData.TRANSFORM_MODES.TRANSLATION));\n }\n if (event.code === \"KeyS\" && noModifiers && !firstPerson) {\n return dispatch(actions.configuration.setConfigurationSpaceTransformMode(pluridData.TRANSFORM_MODES.SCALE));\n }\n if (event.key === \"ArrowRight\") {\n if (event.shiftKey && locks.rotationY) {\n return dispatch(actions.space.rotateLeft());\n }\n if (event.altKey && locks.translationX) {\n return dispatch(actions.space.translateRight());\n }\n }\n if (event.key === \"ArrowLeft\") {\n if (event.shiftKey && locks.rotationY) {\n return dispatch(actions.space.rotateRight());\n }\n if (event.altKey && locks.translationX) {\n return dispatch(actions.space.translateLeft());\n }\n }\n if (event.key === \"ArrowUp\") {\n if (event.shiftKey && event.altKey && locks.translationZ) {\n return dispatch(actions.space.translateIn());\n }\n if (event.shiftKey && !event.altKey && locks.rotationX) {\n return dispatch(actions.space.rotateUp());\n }\n if (event.altKey && !event.shiftKey && locks.translationY) {\n return dispatch(actions.space.translateUp());\n }\n if (event.metaKey || event.ctrlKey && locks.scale) {\n return dispatch(actions.space.scaleUp());\n }\n }\n if (event.key === \"ArrowDown\") {\n if (event.shiftKey && event.altKey && locks.translationZ) {\n return dispatch(actions.space.translateOut());\n }\n if (event.shiftKey && !event.altKey && locks.rotationX) {\n return dispatch(actions.space.rotateDown());\n }\n if (event.altKey && !event.shiftKey && locks.translationY) {\n return dispatch(actions.space.translateDown());\n }\n if (event.metaKey || event.ctrlKey && locks.scale) {\n return dispatch(actions.space.scaleDown());\n }\n }\n return;\n};\n\nconst handleGlobalWheel = (dispatch, event, modes, locks) => {\n if (event.shiftKey || event.metaKey || event.altKey || event.ctrlKey || modes.rotation || modes.translation || modes.scale) {\n event.preventDefault();\n }\n const deltas = {\n deltaX: event.deltaX,\n deltaY: event.deltaY\n };\n const direction = directionLogic.getWheelDirection(deltas);\n if (modes.rotation) {\n if (direction === \"left\" && locks.rotationY) {\n dispatch(actions.space.rotateLeft());\n }\n if (direction === \"right\" && locks.rotationY) {\n dispatch(actions.space.rotateRight());\n }\n if (direction === \"up\" && locks.rotationX) {\n dispatch(actions.space.rotateUp());\n }\n if (direction === \"down\" && locks.rotationX) {\n dispatch(actions.space.rotateDown());\n }\n }\n if (event.shiftKey && !event.altKey) {\n if (direction === \"up\" && locks.rotationX) {\n dispatch(actions.space.rotateUp());\n }\n if (direction === \"down\" && locks.rotationX) {\n dispatch(actions.space.rotateDown());\n }\n if (direction === \"left\" && locks.rotationY) {\n dispatch(actions.space.rotateLeft());\n }\n if (direction === \"right\" && locks.rotationY) {\n dispatch(actions.space.rotateRight());\n }\n }\n if (modes.translation) {\n if (direction === \"up\" && locks.translationY) {\n dispatch(actions.space.translateDown());\n }\n if (direction === \"down\" && locks.translationY) {\n dispatch(actions.space.translateUp());\n }\n if (direction === \"left\" && locks.translationX) {\n dispatch(actions.space.translateRight());\n }\n if (direction === \"right\" && locks.translationX) {\n dispatch(actions.space.translateLeft());\n }\n }\n if (event.altKey && event.shiftKey) {\n if (direction === \"up\" && locks.translationZ) {\n dispatch(actions.space.translateIn());\n }\n if (direction === \"down\" && locks.translationZ) {\n dispatch(actions.space.translateOut());\n }\n }\n if (event.altKey && !event.shiftKey) {\n if (direction === \"up\" && locks.translationY) {\n dispatch(actions.space.translateDown());\n }\n if (direction === \"down\" && locks.translationY) {\n dispatch(actions.space.translateUp());\n }\n if (direction === \"left\" && locks.translationX) {\n dispatch(actions.space.translateRight());\n }\n if (direction === \"right\" && locks.translationX) {\n dispatch(actions.space.translateLeft());\n }\n }\n if (modes.scale) {\n if (direction === \"down\" && locks.scale) {\n dispatch(actions.space.scaleUp());\n }\n if (direction === \"up\" && locks.scale) {\n dispatch(actions.space.scaleDown());\n }\n }\n if (event.metaKey || event.ctrlKey) {\n if (direction === \"down\" && locks.scale) {\n dispatch(actions.space.scaleUp());\n }\n if (direction === \"up\" && locks.scale) {\n dispatch(actions.space.scaleDown());\n }\n }\n};\n\nconst loadHammer = () => __awaiter(void 0, void 0, void 0, (function*() {\n const hammer = yield Promise.resolve().then((function() {\n return _interopNamespace(require(\"hammerjs\"));\n }));\n return hammer;\n}));\n\nvar selectors = {\n configuration: modules.configuration.selectors,\n general: modules.general.selectors,\n shortcuts: modules.shortcuts.selectors,\n space: modules.space.selectors,\n themes: modules.themes.selectors,\n ui: modules.ui.selectors\n};\n\nfunction styleInject(css, ref) {\n if (ref === void 0) ref = {};\n var insertAt = ref.insertAt;\n if (!css || typeof document === \"undefined\") {\n return;\n }\n var head = document.head || document.getElementsByTagName(\"head\")[0];\n var style = document.createElement(\"style\");\n style.type = \"text/css\";\n if (insertAt === \"top\") {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css_248z = \"@import url('https://fonts.googleapis.com/css?family=Ubuntu&display=swap');\\n\";\n\nstyleInject(css_248z);\n\nconst GlobalStyle = styled.createGlobalStyle`\n *,\n *:after,\n *:before {\n box-sizing: border-box;\n font-kerning: auto;\n text-rendering: optimizeLegibility;\n }\n\n html, body {\n margin: 0;\n height: 100%;\n width: 100%;\n }\n\n html {\n overflow: hidden;\n background: black;\n color: white;\n font-family: Ubuntu, -apple-system, BlinkMacSystemFont, Roboto,\n 'Open Sans', 'Helvetica Neue', 'Lucida Sans', sans-serif;\n\n /*\n * HACK\n * Prevents Chrome from going backward/forward in page history on wheel event.\n *\n * TODO\n * Apply it dinamically.\n */\n overscroll-behavior-x: contain;\n }\n`;\n\nconst StyledView = styled__default[\"default\"].div`\n height: 100%;\n min-height: ${props => {\n if (props.fullHeight) {\n return \"100vh\";\n }\n return \"100%\";\n}};\n min-height: ${props => {\n if (props.fullHeight) {\n return \"-webkit-fill-available\";\n }\n return \"100%\";\n}};\n\n width: 100%;\n position: relative;\n scroll-snap-align: start;\n outline: none;\n overflow: hidden;\n\n cursor: ${props => {\n if (props.transformMode === pluridData.TRANSFORM_MODES.TRANSLATION || props.transformMode === pluridData.TRANSFORM_MODES.ROTATION) {\n return \"all-scroll\";\n }\n if (props.transformMode === pluridData.TRANSFORM_MODES.SCALE) {\n return \"ns-resize\";\n }\n return \"initial\";\n}};\n user-select: ${props => {\n if (props.transformMode !== \"ALL\") {\n return \"none\";\n }\n return \"initial !important\";\n}};\n touch-action: ${props => {\n if (props.transformMode !== \"ALL\") {\n return \"none !important\";\n }\n return \"initial !important\";\n}};\n -webkit-user-drag: ${props => {\n if (props.transformMode !== \"ALL\") {\n return \"none\";\n }\n return \"initial !important\";\n}};\n -webkit-tap-highlight-color: ${props => {\n if (props.transformMode !== \"ALL\") {\n return \"rgba(0, 0, 0, 0)\";\n }\n return \"initial !important\";\n}};\n`;\n\nstyled__default[\"default\"].div`\n outline: none;\n background: ${props => {\n if (props.opaque) {\n const foregroundGradient = props.theme.type === \"dark\" ? props.theme.backgroundColorTertiary : props.theme.backgroundColorPrimary;\n const backgroundGradient = props.theme.type === \"dark\" ? props.theme.backgroundColorPrimary : props.theme.backgroundColorTertiary;\n return `radial-gradient(\\n ellipse at center,\\n ${foregroundGradient} 0%,\\n ${backgroundGradient} 100%)\\n `;\n }\n return \"transparent\";\n}};\n`;\n\nclass ErrorBoundary extends React__default[\"default\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n hasError: false\n };\n }\n static getDerivedStateFromError(error) {\n return {\n hasError: true\n };\n }\n componentDidCatch(error, errorInfo) {}\n render() {\n if (this.state.hasError) {\n if (this.props.renderError) {\n return this.props.renderError;\n }\n return React__default[\"default\"].createElement(\"h1\", null, \"Something went wrong.\");\n }\n return this.props.children;\n }\n}\n\nconst StyledPluridPlane = styled__default[\"default\"].div`\n background-color: ${({transparentUI: transparentUI, mouseOver: mouseOver, theme: theme, planeOpacity: planeOpacity}) => {\n if (transparentUI && !mouseOver) {\n return theme.backgroundColorPrimaryAlpha;\n }\n if (planeOpacity !== 1) {\n const decomposedColor = themes$1.decomposeColor(theme.backgroundColorPrimary);\n if (decomposedColor) {\n const color = `hsla(${decomposedColor.hue}, ${decomposedColor.saturation}%, ${decomposedColor.lightness}%, ${planeOpacity})`;\n return color;\n }\n return \"transparent\";\n }\n return theme.backgroundColorPrimary;\n}};\n box-shadow: ${({planeOpacity: planeOpacity, theme: theme}) => {\n if (planeOpacity === 0) {\n return \"none\";\n }\n return theme.boxShadowUmbra;\n}};\n color: ${({theme: theme}) => theme.colorPrimary};\n opacity: ${({show: show}) => {\n if (!show) {\n return \"0\";\n }\n return \"1\";\n}};\n user-select: ${({show: show}) => {\n if (!show) {\n return \"none\";\n }\n return \"auto\";\n}};\n\n position: absolute;\n height: auto;\n width: 100%;\n font-size: 0.9rem;\n font-family: ${({theme: theme}) => theme.fontFamilySansSerif};\n transition: background-color 300ms linear;\n\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: ${({planeControls: planeControls}) => {\n if (planeControls) {\n return \"56px auto\";\n }\n return \"auto\";\n}};\n\n transform-origin: 0 0 0;\n`;\n\nconst StyledPluridPlaneBridge = styled__default[\"default\"].div`\n background-color: ${({planeOpacity: planeOpacity, planeControls: planeControls, theme: theme}) => {\n if (planeOpacity === 0) {\n return \"transparent\";\n }\n if (!planeControls) {\n return theme.backgroundColorPrimary;\n }\n return theme.backgroundColorDark;\n}};\n\n position: absolute;\n top: 0;\n left: -100px;\n height: 30px;\n width: 100px;\n opacity: 0.5;\n`;\n\nconst PluridPlaneBridge = properties => {\n const {stateGeneralTheme: stateGeneralTheme, stateConfiguration: stateConfiguration} = properties;\n const {controls: controls, opacity: opacity} = stateConfiguration.elements.plane;\n return React__default[\"default\"].createElement(StyledPluridPlaneBridge, {\n theme: stateGeneralTheme,\n planeControls: controls.show,\n planeOpacity: opacity,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE_BRIDGE\n });\n};\n\nconst mapStateToProperties$i = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProperties$i = dispatch => ({});\n\nconst ConnectedPluridPlaneBridge = reactRedux.connect(mapStateToProperties$i, mapDispatchToProperties$i, null, {\n context: StateContext\n})(PluridPlaneBridge);\n\nconst StyledPluridPlaneControls = styled__default[\"default\"].div`\n background-color: ${({transparentUI: transparentUI, mouseOver: mouseOver, theme: theme}) => {\n if (transparentUI && !mouseOver) {\n return \"transparent\";\n }\n return theme.backgroundColorDark;\n}};\n box-shadow: ${({theme: theme}) => theme.boxShadowUmbraInset};\n\n width: 100%;\n display: grid;\n align-items: center;\n justify-content: center;\n grid-template-rows: 1fr;\n grid-template-columns: 1fr 2fr 1fr;\n transition: background-color 300ms linear;\n\n @media (max-width: 800px) {\n grid-template-columns: 1fr 3fr 1fr;\n }\n`;\n\nconst StyledPluridPlaneControlsLeft = styled__default[\"default\"].div`\n`;\n\nconst StyledPluridPlaneControlsCenter = styled__default[\"default\"].div`\n width: 100%;\n height: 38px;\n position: relative;\n`;\n\nconst StyledPluridPlaneControlsRight = styled__default[\"default\"].div`\n display: grid;\n grid-template-columns: repeat(4, 30px);\n padding: 0 1rem;\n`;\n\nconst {inputs: {Textline: PluridTextline}} = pluridUiComponentsReact.universal;\n\nconst PluridPlaneControls = properties => {\n const {plane: plane, treePlane: treePlane, mouseOver: mouseOver, configuration: configuration, generalTheme: generalTheme, interactionTheme: interactionTheme} = properties;\n const {global: global, elements: elements} = configuration;\n const {transparentUI: transparentUI} = global;\n const {pathbar: pathbar} = elements.plane.controls;\n const {route: route, routeDivisions: routeDivisions} = treePlane;\n const {protocol: protocol, host: host} = routeDivisions;\n const gateway = \"gateway\";\n `${protocol}://${host.value}/${gateway}?plurid=` + encodeURIComponent(route);\n const [path, setPath] = React.useState(treePlane.route);\n React.useState(false);\n const [showSearch, setShowSearch] = React.useState(false);\n const onPathInput = event => {\n setPath(event.target.value);\n if (pathbar.onChange) {\n const id = plane.route.absolute;\n pathbar.onChange(event, id);\n }\n };\n const handleOnKeyDown = event => {\n if (!showSearch) {\n setShowSearch(true);\n }\n if (event.key === \"Escape\") {\n setShowSearch(false);\n }\n if (pathbar.onKeyDown) {\n const id = plane.route.absolute;\n pathbar.onKeyDown(event, id);\n }\n };\n return React__default[\"default\"].createElement(StyledPluridPlaneControls, {\n theme: generalTheme,\n mouseOver: mouseOver,\n transparentUI: transparentUI,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE_CONTROLS\n }, React__default[\"default\"].createElement(StyledPluridPlaneControlsLeft, null), React__default[\"default\"].createElement(StyledPluridPlaneControlsCenter, null, React__default[\"default\"].createElement(PluridTextline, {\n theme: interactionTheme,\n text: path,\n atChange: onPathInput,\n atKeyDown: handleOnKeyDown,\n ariaLabel: \"Plurid Pathbar\"\n })), React__default[\"default\"].createElement(StyledPluridPlaneControlsRight, null));\n};\n\nconst mapStateToProps$g = state => ({\n configuration: selectors.configuration.getConfiguration(state),\n generalTheme: selectors.themes.getGeneralTheme(state),\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$g = dispatch => ({});\n\nconst ConnectedPluridPlaneControls = reactRedux.connect(mapStateToProps$g, mapDispatchToProps$g, null, {\n context: StateContext\n})(PluridPlaneControls);\n\nconst StyledPluridPlaneContent = styled__default[\"default\"].div`\n position: relative;\n`;\n\nconst PluridPlaneContent = properties => {\n const {children: children} = properties;\n const planeContentElement = React.useRef(null);\n return React__default[\"default\"].createElement(StyledPluridPlaneContent, {\n ref: planeContentElement,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE_CONTENT\n }, children);\n};\n\nconst PluridPlane = properties => {\n const {planeID: planeID, plane: plane, treePlane: treePlane, children: children, stateViewSize: stateViewSize, stateGeneralTheme: stateGeneralTheme, stateConfiguration: stateConfiguration, dispatchUpdateSpaceTreePlane: dispatchUpdateSpaceTreePlane} = properties;\n const {global: global, elements: elements} = stateConfiguration;\n const {transparentUI: transparentUI} = global;\n const {controls: controls, width: planeWidth, opacity: planeOpacity} = elements.plane;\n const showPlaneControls = controls.show;\n pluridFunctions.mathematics.numbers.checkIntegerNonUnit(planeWidth) ? planeWidth : planeWidth * stateViewSize.width;\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {planeRenderError: planeRenderError} = context;\n const [mouseOver, setMouseOver] = React.useState(false);\n const planeContentProperties = {};\n return React__default[\"default\"].createElement(StyledPluridPlane, {\n suppressHydrationWarning: true,\n theme: stateGeneralTheme,\n planeControls: showPlaneControls,\n planeOpacity: planeOpacity,\n show: treePlane.show,\n id: planeID,\n style: {\n width: \"100%\",\n transform: pluridEngine.cleanTemplate(`\\n translateX(${treePlane.location.translateX}px)\\n translateY(${treePlane.location.translateY}px)\\n translateZ(${treePlane.location.translateZ}px)\\n rotateX(${treePlane.location.rotateX}deg)\\n rotateY(${treePlane.location.rotateY}deg)\\n `)\n },\n onMouseEnter: () => setMouseOver(true),\n onMouseLeave: () => setMouseOver(false),\n transparentUI: transparentUI,\n mouseOver: mouseOver,\n \"data-plurid-plane\": planeID,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE\n }, treePlane.show && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, treePlane.parentPlaneID && React__default[\"default\"].createElement(ConnectedPluridPlaneBridge, null), showPlaneControls && React__default[\"default\"].createElement(ConnectedPluridPlaneControls, {\n plane: plane,\n treePlane: treePlane,\n mouseOver: mouseOver\n }), planeRenderError ? React__default[\"default\"].createElement(ErrorBoundary, {\n renderError: typeof planeRenderError !== \"boolean\" ? planeRenderError : undefined\n }, React__default[\"default\"].createElement(PluridPlaneContent, Object.assign({}, planeContentProperties), children)) : React__default[\"default\"].createElement(PluridPlaneContent, Object.assign({}, planeContentProperties), children)));\n};\n\nconst mapStateToProps$f = state => ({\n stateViewSize: selectors.space.getViewSize(state),\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$f = dispatch => ({\n dispatchUpdateSpaceTreePlane: treePlane => dispatch(actions.space.updateSpaceTreePlane(treePlane))\n});\n\nconst ConnectedPluridPlane = reactRedux.connect(mapStateToProps$f, mapDispatchToProps$f, null, {\n context: StateContext\n})(PluridPlane);\n\nconst isReactRenderable = component => {\n if (!component) {\n return false;\n }\n if (typeof component === \"string\" || component.url) {\n return false;\n }\n return true;\n};\n\nconst StyledPluridRoot = styled__default[\"default\"].div`\n transform-style: preserve-3d;\n`;\n\nconst {getPlanesRegistrar: getPlanesRegistrar$2, getRegisteredPlane: getRegisteredPlane} = pluridEngine.planes;\n\nconst PluridRoot = properties => {\n const {plane: plane} = properties;\n const {location: location} = plane;\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {planesRegistrar: planesRegistrar, planeContext: PlaneContext, planeContextValue: planeContextValue, customPlane: customPlane, matchedRoute: matchedRoute} = context;\n const CustomPluridPlane = customPlane;\n const [childrenPlanes, setChildrenPlanes] = React.useState([]);\n const computeChildrenPlanes = plane => {\n if (!plane.children) {\n return;\n }\n const planesRegistry = getPlanesRegistrar$2(planesRegistrar);\n plane.children.map((child => {\n if (!planesRegistry) {\n return;\n }\n const planeID = child.sourceID;\n const activePlane = planesRegistry.get(planeID);\n let plane = React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n if (activePlane) {\n const Plane = activePlane.component;\n const pluridProperty = {\n plane: {\n value: activePlane.route.absolute,\n planeID: child.planeID,\n parentPlaneID: child.parentPlaneID,\n fragments: activePlane.route.fragments,\n parameters: activePlane.route.parameters,\n query: activePlane.route.query\n },\n route: {\n value: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.value) || \"\",\n parameters: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.parameters) || {},\n query: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.query) || {}\n }\n };\n const properties = {\n plurid: Object.assign({}, pluridProperty)\n };\n const renderablePlane = isReactRenderable(Plane);\n const renderableCustomPlane = isReactRenderable(CustomPluridPlane);\n plane = !CustomPluridPlane ? renderablePlane ? React__default[\"default\"].createElement(ConnectedPluridPlane, {\n key: child.planeID,\n plane: activePlane,\n treePlane: child,\n planeID: child.planeID,\n location: child.location\n }, !PlaneContext ? React__default[\"default\"].createElement(Plane, Object.assign({}, properties)) : React__default[\"default\"].createElement(PlaneContext.Provider, {\n value: planeContextValue\n }, React__default[\"default\"].createElement(Plane, Object.assign({}, properties)))) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null) : renderableCustomPlane ? React__default[\"default\"].createElement(CustomPluridPlane, {\n key: child.planeID,\n plane: activePlane,\n treePlane: child,\n planeID: child.planeID,\n location: child.location\n }) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n setChildrenPlanes((planes => [ ...planes, plane ]));\n }\n if (child.children) {\n computeChildrenPlanes(child);\n }\n }));\n };\n React.useEffect((() => {\n setChildrenPlanes([]);\n computeChildrenPlanes(plane);\n }), [ JSON.stringify(plane) ]);\n const pluridPlaneID = plane.sourceID;\n if (!pluridPlaneID) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const pluridPlane = getRegisteredPlane(pluridPlaneID, planesRegistrar);\n if (!pluridPlane) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const Plane = pluridPlane.component;\n const pluridProperty = {\n plane: {\n value: pluridPlane.route.absolute,\n planeID: plane.planeID,\n parentPlaneID: plane.parentPlaneID,\n fragments: pluridPlane.route.fragments,\n parameters: pluridPlane.route.parameters,\n query: pluridPlane.route.query\n },\n route: {\n value: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.value) || \"\",\n parameters: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.parameters) || {},\n query: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.query) || {}\n }\n };\n const planeProperties = {\n plurid: Object.assign({}, pluridProperty)\n };\n if (CustomPluridPlane) {\n if (typeof CustomPluridPlane !== \"function\") {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledPluridRoot, {\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_ROOT\n }, React__default[\"default\"].createElement(CustomPluridPlane, {\n plane: pluridPlane,\n treePlane: plane,\n planeID: plane.planeID,\n location: location\n }), childrenPlanes);\n }\n return React__default[\"default\"].createElement(StyledPluridRoot, {\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_ROOT\n }, React__default[\"default\"].createElement(ConnectedPluridPlane, {\n plane: pluridPlane,\n treePlane: plane,\n planeID: plane.planeID,\n location: location\n }, !PlaneContext ? React__default[\"default\"].createElement(Plane, Object.assign({}, planeProperties)) : React__default[\"default\"].createElement(PlaneContext.Provider, {\n value: planeContextValue\n }, React__default[\"default\"].createElement(Plane, Object.assign({}, planeProperties)))), childrenPlanes);\n};\n\nconst mapStateToProperties$h = state => ({});\n\nconst mapDispatchToProperties$h = dispatch => ({});\n\nconst ConnectedPluridRoot = reactRedux.connect(mapStateToProperties$h, mapDispatchToProperties$h, null, {\n context: StateContext\n})(PluridRoot);\n\nconst StyledPluridRoots = styled__default[\"default\"].div`\n transform-style: preserve-3d;\n transform-origin: 0 0 0;\n`;\n\nconst PluridRoots = properties => {\n const {spaceTransformMatrix: spaceTransformMatrix, spaceAnimatedTransform: spaceAnimatedTransform, spaceTransformTime: spaceTransformTime, stateTree: stateTree} = properties;\n return React__default[\"default\"].createElement(StyledPluridRoots, {\n suppressHydrationWarning: true,\n style: {\n width: \"100%\",\n height: typeof window !== \"undefined\" ? window.innerHeight + \"px\" : \"821px\",\n transform: spaceTransformMatrix,\n transition: spaceAnimatedTransform ? `transform ${spaceTransformTime}ms ease-in-out` : \"initial\"\n },\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_ROOTS\n }, stateTree.map((plane => React__default[\"default\"].createElement(ConnectedPluridRoot, {\n key: plane.planeID,\n plane: plane\n }))));\n};\n\nconst mapStateToProperties$g = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state),\n spaceTransformMatrix: selectors.space.getTransformMatrix(state),\n spaceAnimatedTransform: selectors.space.getAnimatedTransform(state),\n spaceTransformTime: selectors.space.getTransformTime(state),\n stateTree: selectors.space.getTree(state)\n});\n\nconst mapDispatchToProperties$g = dispatch => ({});\n\nconst ConnectedPluridRoots = reactRedux.connect(mapStateToProperties$g, mapDispatchToProperties$g, null, {\n context: StateContext\n})(PluridRoots);\n\nconst fadeIn = styled.keyframes`\n from {\n opacity: 0%;\n }\n\n to {\n opacity: 100%;\n }\n`;\n\nconst fadeInAnimation = fadeInTime => styled.css`${fadeIn} ${fadeInTime}ms linear 100ms forwards`;\n\nconst StyledPluridSpace = styled__default[\"default\"].div`\n position: relative;\n height: 100%;\n overflow: hidden;\n perspective: 2000px;\n outline: none;\n\n background: ${({opaque: opaque, theme: theme}) => {\n if (opaque) {\n const foregroundGradient = theme.type === \"dark\" ? theme.backgroundColorTertiary : theme.backgroundColorPrimary;\n const backgroundGradient = theme.type === \"dark\" ? theme.backgroundColorPrimary : theme.backgroundColorTertiary;\n return `radial-gradient(\\n ellipse at center,\\n ${foregroundGradient} 0%,\\n ${backgroundGradient} 100%)\\n `;\n }\n return \"transparent\";\n}};\n\n /* TOFIX */\n /* opacity: ${({fadeInTime: fadeInTime}) => {\n if (fadeInTime) {\n return \"0\";\n }\n return \"1\";\n}};\n animation: ${({isMounted: isMounted, fadeInTime: fadeInTime}) => {\n if (isMounted && fadeInTime) {\n return fadeInAnimation(fadeInTime);\n }\n return \"\";\n}}; */\n`;\n\nconst PluridSpace = properties => {\n const {stateConfiguration: stateConfiguration, stateGeneralTheme: stateGeneralTheme} = properties;\n const {space: space} = stateConfiguration;\n const {opaque: opaque, fadeInTime: fadeInTime} = space;\n const [isMounted, setIsMounted] = React.useState(false);\n React.useEffect((() => {\n setIsMounted(true);\n }), []);\n return React__default[\"default\"].createElement(StyledPluridSpace, {\n theme: stateGeneralTheme,\n opaque: opaque,\n isMounted: isMounted,\n fadeInTime: fadeInTime,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_SPACE\n }, React__default[\"default\"].createElement(ConnectedPluridRoots, null));\n};\n\nconst mapStateToProperties$f = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateGeneralTheme: selectors.themes.getGeneralTheme(state)\n});\n\nconst mapDispatchToProperties$f = dispatch => ({});\n\nconst ConnectedPluridSpace = reactRedux.connect(mapStateToProperties$f, mapDispatchToProperties$f, null, {\n context: StateContext\n})(PluridSpace);\n\nconst resolveSize = ({size: size}) => {\n switch (size) {\n case pluridData.SIZES.SMALL:\n return \"5px\";\n\n case pluridData.SIZES.NORMAL:\n return \"10px\";\n\n case pluridData.SIZES.LARGE:\n return \"15px\";\n\n default:\n return \"10px\";\n }\n};\n\nconst StyledOrigin = styled__default[\"default\"].div`\n background-color: ${({theme: theme}) => theme.backgroundColorTertiaryAlpha};\n height: ${resolveSize};\n width: ${resolveSize};\n\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n z-index: 99999;\n border-radius: 100px;\n user-select: none;\n pointer-events: none;\n touch-action: none;\n`;\n\nconst Origin = properties => {\n const {stateGeneralTheme: stateGeneralTheme, stateConfiguration: stateConfiguration} = properties;\n const {space: space} = stateConfiguration;\n const {transformOrigin: transformOrigin} = space;\n const {show: showTransformOrigin, size: transformOriginSize} = transformOrigin;\n if (!showTransformOrigin) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledOrigin, {\n theme: stateGeneralTheme,\n size: transformOriginSize,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_TRANSFORM_ORIGIN\n });\n};\n\nconst mapStateToProperties$e = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProperties$e = dispatch => ({});\n\nconst ConnectedOrigin = reactRedux.connect(mapStateToProperties$e, mapDispatchToProperties$e, null, {\n context: StateContext\n})(Origin);\n\nvar MENUS;\n\n(function(MENUS) {\n MENUS[\"NONE\"] = \"NONE\";\n MENUS[\"UNIVERSES\"] = \"UNIVERSES\";\n MENUS[\"MORE\"] = \"MORE\";\n})(MENUS || (MENUS = {}));\n\nconst VIEW_SIZE_WIDTH_LIMIT = 800;\n\nconst StyledToolbar = styled__default[\"default\"].div`\n bottom: ${({conceal: conceal, mouseIn: mouseIn}) => {\n if (!conceal) {\n return \"-5px\";\n }\n if (mouseIn) {\n return \"-5px\";\n }\n return \"-55px\";\n}};\n pointer-events: ${({showMenu: showMenu}) => {\n if (showMenu !== MENUS.NONE) {\n return \"all\";\n }\n return \"none\";\n}};\n opacity: ${({fadeInTime: fadeInTime}) => {\n if (fadeInTime) {\n return \"0\";\n }\n return \"1\";\n}};\n animation: ${({fadeInTime: fadeInTime, isMounted: isMounted}) => {\n if (isMounted && fadeInTime) {\n return fadeInAnimation(fadeInTime);\n }\n return \"\";\n}};\n\n display: grid;\n position: absolute;\n left: 0;\n right: 0;\n height: 75px;\n z-index: 9999;\n transition: bottom 300ms ease-in-out;\n`;\n\nconst StyledToolbarButtons = styled__default[\"default\"].div`\n color: ${({theme: theme}) => theme.colorPrimary};\n background-color: ${({theme: theme, transparentUI: transparentUI}) => {\n if (transparentUI) {\n return theme.backgroundColorPrimaryAlpha;\n }\n return theme.backgroundColorSecondary;\n}};\n box-shadow: ${({theme: theme}) => theme.boxShadowUmbra};\n grid-template-columns: ${({showIcons: showIcons, showTransformButtons: showTransformButtons, documentsBased: documentsBased}) => {\n if (showIcons && !showTransformButtons) {\n if (documentsBased) {\n return \"repeat(6, minmax(min-content, 40px))\";\n } else {\n return \"repeat(5, minmax(min-content, 40px))\";\n }\n }\n if (!showTransformButtons) {\n if (documentsBased) {\n return \"repeat(6, minmax(min-content, 40px))\";\n } else {\n return \"repeat(5, minmax(min-content, 40px))\";\n }\n }\n if (documentsBased) {\n return \"40px 200px 200px 200px 40px 40px\";\n }\n return \"40px 200px 200px 200px 40px\";\n}};\n opacity: ${({opaque: opaque, mouseIn: mouseIn}) => {\n if (!opaque && !mouseIn) {\n return \"0.4\";\n }\n return \"1\";\n}};\n\n z-index: 9999;\n user-select: none;\n /* height: 75px; */\n display: grid;\n pointer-events: all;\n display: grid;\n align-items: center;\n justify-content: center;\n justify-items: center;\n border-radius: 22.5px;\n margin: 0 auto;\n margin-top: 10px;\n margin-bottom: 20px;\n padding: 0 22.5px;\n font-size: 12px;\n height: 45px;\n transition: opacity 300ms ease-in-out;\n\n :after {\n content: '';\n position: absolute;\n top: 55px;\n left: 0;\n right: 0;\n height: 20px;\n }\n`;\n\nconst StyledToolbarButton = styled__default[\"default\"].div`\n padding: ${({button: button, showIcons: showIcons, showTransformButtons: showTransformButtons}) => {\n if (button) {\n return \"0\";\n }\n if (showIcons && !showTransformButtons) {\n return \"0\";\n }\n return \"0 7px\";\n}};\n background-color: ${({active: active, theme: theme}) => {\n if (active) {\n return theme.backgroundColorTertiary;\n }\n return \"transparent\";\n}};\n min-width: ${({button: button}) => {\n if (button) {\n return \"40px\";\n }\n return \"70px\";\n}};\n\n height: 45px;\n display: grid;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n user-select: none;\n\n :hover {\n background: ${({theme: theme}) => theme.backgroundColorTertiary};\n }\n`;\n\nconst StyledIcon = styled__default[\"default\"].div`\n width: 40px;\n display: grid;\n place-content: center;\n\n /* svg {\n height: 15px;\n width: 15px;\n fill: white;\n } */\n`;\n\nconst StyledPluridMenuUniverses = styled__default[\"default\"].div`\n position: absolute;\n bottom: 75px;\n max-height: 250px;\n width: 380px;\n left: 50%;\n transform: translateX(-50%);\n border-radius: 22.5px;\n padding: 22px;\n font-size: 0.8rem;\n overflow: hidden;\n\n background-color: ${props => props.theme.backgroundColorSecondary};\n box-shadow: ${props => props.theme.boxShadowUmbra};\n\n ul {\n padding: 0;\n list-style: none;\n }\n`;\n\nstyled__default[\"default\"].div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n position: relative;\n\n margin-bottom: ${props => {\n if (props.afterline) {\n return \"30px\";\n }\n return \"10px\";\n}};\n\n ${props => {\n if (props.afterline) {\n return `\\n ::after {\\n position: absolute;\\n content: '';\\n left: 0;\\n right: 0;\\n bottom: -15px;\\n height: 1px;\\n background-color: white;\\n }\\n `;\n }\n return \"\";\n}};\n`;\n\nconst StyledPluridMenuUniversesScroll = styled__default[\"default\"].div`\n max-height: 210px;\n overflow: scroll;\n padding: 0 5px;\n\n /* Hide Scrollbar */\n scrollbar-width: none; /* Firefox 64 */\n -ms-overflow-style: none; /* Internet Explorer 11 */\n ::-webkit-scrollbar { /** WebKit */\n display: none;\n }\n\n h5::first-child {\n margin-top: 0;\n }\n`;\n\nstyled__default[\"default\"].li`\n margin: 10px 0;\n padding: 10px 20px;\n border-radius: 100px;\n\n cursor: ${props => {\n if (props.active) {\n return \"initial\";\n }\n return \"pointer\";\n}};\n background-color: ${props => {\n if (props.active) {\n return props.theme.backgroundColorTertiary;\n }\n return \"\";\n}};\n box-shadow: ${props => {\n if (props.active) {\n return \"inset 0px -1px 6px 0px \" + props.theme.boxShadowUmbraColor;\n }\n return \"\";\n}};\n\n :hover {\n background-color: ${props => props.theme.backgroundColorTertiary};\n box-shadow: ${props => {\n if (props.active) {\n return \"inset 0px -1px 6px 0px \" + props.theme.boxShadowUmbraColor;\n }\n return props.theme.boxShadowUmbra;\n}};\n }\n`;\n\nconst PluridMenuUniverses = properties => {\n const {interactionTheme: interactionTheme, activeUniverseID: activeUniverseID, dispatchSetActiveUniverse: dispatchSetActiveUniverse} = properties;\n return React__default[\"default\"].createElement(StyledPluridMenuUniverses, {\n theme: interactionTheme\n }, React__default[\"default\"].createElement(StyledPluridMenuUniversesScroll, null));\n};\n\nconst mapStateToProps$e = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state),\n activeUniverseID: selectors.space.getActiveUniverseID(state)\n});\n\nconst mapDispatchToProps$e = dispatch => ({\n dispatchSetActiveUniverse: documentID => dispatch(actions.space.setActiveUniverse(documentID))\n});\n\nconst ConnectedPluridMenuUniverses = reactRedux.connect(mapStateToProps$e, mapDispatchToProps$e, null, {\n context: StateContext\n})(PluridMenuUniverses);\n\nconst StyledPluridDrawer = styled__default[\"default\"].div`\n h5 {\n font-size: 1rem;\n margin: 0;\n }\n\n margin-bottom: 2rem;\n border-top-left-radius: 15px;\n border-top-right-radius: 15px;\n\n padding-bottom: ${props => {\n if (props.transparentUI && props.toggled) {\n return \"0.5rem\";\n }\n return \"0\";\n}};\n background-color: ${props => {\n if (props.transparentUI && props.mouseOver) {\n return props.theme.backgroundColorSecondary;\n }\n return \"transparent\";\n}};\n box-shadow: ${props => {\n if (props.transparentUI && props.mouseOver) {\n return props.theme.boxShadowUmbra;\n }\n return \"none\";\n}};\n color: ${props => props.theme.colorPrimary};\n`;\n\nconst StyledPluridDrawerHeading = styled__default[\"default\"].div`\n user-select: none;\n cursor: pointer;\n padding: 0.5rem;\n margin-bottom: 0.5rem;\n border-bottom: 1px solid transparent;\n text-align: left;\n\n :hover {\n border-bottom: 1px solid ${props => props.theme.colorPrimary};\n }\n`;\n\nconst StyledPluridDrawerItems = styled__default[\"default\"].div`\n`;\n\nconst {typography: {Heading: PluridHeading}} = pluridUiComponentsReact.universal;\n\nconst PluridDrawer = properties => {\n const {heading: heading, items: items, toggled: toggled, toggle: toggle, interactionTheme: interactionTheme, configuration: configuration} = properties;\n const {global: global} = configuration;\n const {transparentUI: transparentUI} = global;\n const [mouseOver, setMouseOver] = React.useState(false);\n return React__default[\"default\"].createElement(StyledPluridDrawer, {\n theme: interactionTheme,\n onMouseEnter: () => setMouseOver(true),\n onMouseLeave: () => setMouseOver(false),\n transparentUI: transparentUI,\n mouseOver: mouseOver,\n toggled: toggled\n }, React__default[\"default\"].createElement(StyledPluridDrawerHeading, {\n theme: interactionTheme,\n onClick: () => toggle()\n }, React__default[\"default\"].createElement(PluridHeading, {\n theme: interactionTheme,\n type: \"h5\"\n }, heading)), toggled && React__default[\"default\"].createElement(StyledPluridDrawerItems, null, items));\n};\n\nconst mapStateToProps$d = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$d = dispatch => ({});\n\nconst ConnectedPluridDrawer = reactRedux.connect(mapStateToProps$d, mapDispatchToProps$d, null, {\n context: StateContext\n})(PluridDrawer);\n\nconst StyledPluridMoreMenu = styled__default[\"default\"].div`\n position: absolute;\n bottom: 75px;\n height: 280px;\n width: 380px;\n left: 50%;\n transform: translateX(-50%);\n border-radius: 22.5px;\n padding: 22px;\n font-size: 0.8rem;\n overflow: hidden;\n\n background-color: ${props => {\n if (props.transparentUI) {\n return props.theme.backgroundColorPrimaryAlpha;\n }\n return props.theme.backgroundColorSecondary;\n}};\n box-shadow: ${props => props.theme.boxShadowUmbra};\n`;\n\nconst StyledPluridMoreMenuItem = styled__default[\"default\"].div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n position: relative;\n min-height: 30px;\n padding: 0 0.5rem;\n\n margin-bottom: ${props => {\n if (props.last) {\n return \"0\";\n }\n if (props.afterline) {\n return \"30px\";\n }\n return \"10px\";\n}};\n\n ${props => {\n if (props.afterline) {\n return `\\n ::after {\\n position: absolute;\\n content: '';\\n left: 0;\\n right: 0;\\n bottom: -15px;\\n height: 1px;\\n background-color: ${props.theme ? props.theme.colorPrimary : \"white\"};\\n }\\n `;\n }\n return \"\";\n}};\n`;\n\nconst StyledPluridMoreMenuScroll = styled__default[\"default\"].div`\n height: 240px;\n overflow: scroll;\n padding: 0 5px;\n\n /* Hide Scrollbar */\n scrollbar-width: none; /* Firefox 64 */\n -ms-overflow-style: none; /* Internet Explorer 11 */\n ::-webkit-scrollbar { /** WebKit */\n display: none;\n }\n\n h5::first-child {\n margin-top: 0;\n }\n`;\n\nconst {inputs: {Dropdown: PluridDropdown$1}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreGlobal = properties => {\n const {stateLanguage: stateLanguage, interactionTheme: interactionTheme, configuration: configuration, dispatchSetGeneralTheme: dispatchSetGeneralTheme, dispatchSetInteractionTheme: dispatchSetInteractionTheme, dispatchSetConfigurationThemeGeneralAction: dispatchSetConfigurationThemeGeneralAction, dispatchSetConfigurationThemeInteractionAction: dispatchSetConfigurationThemeInteractionAction, dispatchSetConfigurationLanguage: dispatchSetConfigurationLanguage} = properties;\n const selectedTheme = configuration.global.theme;\n const [generalThemeName, setGeneralThemeName] = React.useState(typeof selectedTheme === \"object\" ? selectedTheme.general : selectedTheme);\n const [interactionThemeName, setInteractionThemeName] = React.useState(typeof selectedTheme === \"object\" ? selectedTheme.interaction : selectedTheme);\n const setGeneralTheme = selectedTheme => {\n dispatchSetGeneralTheme(themes__default[\"default\"][selectedTheme]);\n dispatchSetConfigurationThemeGeneralAction(selectedTheme);\n };\n const setInteractionTheme = selectedTheme => {\n dispatchSetInteractionTheme(themes__default[\"default\"][selectedTheme]);\n dispatchSetConfigurationThemeInteractionAction(selectedTheme);\n };\n const setLanguage = selectedLanguage => {\n dispatchSetConfigurationLanguage(selectedLanguage);\n };\n React.useEffect((() => {\n if (typeof selectedTheme === \"object\") {\n setGeneralThemeName(selectedTheme.general);\n setInteractionThemeName(selectedTheme.interaction);\n } else {\n setGeneralThemeName(selectedTheme);\n setInteractionThemeName(selectedTheme);\n }\n }), [ selectedTheme ]);\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerGlobalGeneralTheme), React__default[\"default\"].createElement(PluridDropdown$1, {\n selectables: Object.keys(themes__default[\"default\"]),\n selected: typeof generalThemeName === \"string\" ? generalThemeName : \"\",\n atSelect: selection => setGeneralTheme(selection),\n theme: interactionTheme,\n filterable: true,\n heightItems: 3,\n width: 90,\n style: {\n fontSize: \"0.8rem\"\n }\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerGlobalInteractionTheme), React__default[\"default\"].createElement(PluridDropdown$1, {\n selectables: Object.keys(themes__default[\"default\"]),\n selected: typeof interactionThemeName === \"string\" ? interactionThemeName : \"\",\n atSelect: selection => setInteractionTheme(selection),\n theme: interactionTheme,\n heightItems: 3,\n filterable: true,\n width: 90,\n style: {\n fontSize: \"0.8rem\"\n }\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerGlobalLanguage), React__default[\"default\"].createElement(PluridDropdown$1, {\n selectables: pluridData.internationalization.languages,\n selected: stateLanguage,\n atSelect: selection => setLanguage(selection),\n theme: interactionTheme,\n heightItems: 3,\n width: 90,\n style: {\n fontSize: \"0.8rem\"\n }\n })));\n};\n\nconst mapStateToProps$c = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$c = dispatch => ({\n dispatchSetConfigurationThemeGeneralAction: theme => dispatch(actions.configuration.setConfigurationThemeGeneralAction(theme)),\n dispatchSetConfigurationThemeInteractionAction: theme => dispatch(actions.configuration.setConfigurationThemeInteractionAction(theme)),\n dispatchSetConfigurationLanguage: language => dispatch(actions.configuration.setConfigurationLanguageAction(language)),\n dispatchSetGeneralTheme: theme => dispatch(actions.themes.setGeneralTheme(theme)),\n dispatchSetInteractionTheme: theme => dispatch(actions.themes.setInteractionTheme(theme))\n});\n\nconst ConnectedPluridMenuMoreGlobal = reactRedux.connect(mapStateToProps$c, mapDispatchToProps$c, null, {\n context: StateContext\n})(PluridMenuMoreGlobal);\n\nconst {inputs: {Switch: PluridSwitch$3}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreTransform = properties => {\n const {stateLanguage: stateLanguage, interactionTheme: interactionTheme, configuration: configuration, dispatchToggleConfigurationSpaceTransformMultimode: dispatchToggleConfigurationSpaceTransformMultimode, dispatchSetConfigurationSpaceTransformTouch: dispatchSetConfigurationSpaceTransformTouch, dispatchSetConfigurationSpaceTransformLocks: dispatchSetConfigurationSpaceTransformLocks} = properties;\n const {transformMultimode: transformMultimode, transformLocks: transformLocks, transformTouch: transformTouch} = configuration.space;\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformMultiModeTransform)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformMultimode,\n atChange: () => dispatchToggleConfigurationSpaceTransformMultimode(!transformMultimode),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowRotationX)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.rotationX,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"rotationX\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowRotationY)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.rotationY,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"rotationY\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowTranslationX)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.translationX,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"translationX\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowTranslationY)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.translationY,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"translationY\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowTranslationZ)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.translationZ,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"translationZ\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowScale)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.scale,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"scale\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformTouchTransform), \": \", transformTouch === pluridData.TRANSFORM_TOUCHES.PAN ? \"pan\" : \"swipe\"), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformTouch === pluridData.TRANSFORM_TOUCHES.PAN,\n atChange: () => transformTouch === pluridData.TRANSFORM_TOUCHES.PAN ? dispatchSetConfigurationSpaceTransformTouch(pluridData.TRANSFORM_TOUCHES.SWIPE) : dispatchSetConfigurationSpaceTransformTouch(pluridData.TRANSFORM_TOUCHES.PAN),\n level: 2\n })));\n};\n\nconst mapStateToProps$b = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$b = dispatch => ({\n dispatchToggleConfigurationSpaceTransformMultimode: multimode => dispatch(actions.configuration.toggleConfigurationSpaceTransformMultimode(multimode)),\n dispatchSetConfigurationSpaceTransformTouch: touch => dispatch(actions.configuration.setConfigurationSpaceTransformTouch(touch)),\n dispatchSetConfigurationSpaceTransformLocks: lock => dispatch(actions.configuration.setConfigurationSpaceTransformLocks(lock))\n});\n\nconst ConnectedPluridMenuMoreTransform = reactRedux.connect(mapStateToProps$b, mapDispatchToProps$b, null, {\n context: StateContext\n})(PluridMenuMoreTransform);\n\nconst {inputs: {Dropdown: PluridDropdown, Switch: PluridSwitch$2, Slider: PluridSlider$1}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreSpace = properties => {\n const {interactionTheme: interactionTheme, configuration: configuration, dispatchSetConfigurationPlaneOpacity: dispatchSetConfigurationPlaneOpacity, dispatchToggleConfigurationSpaceTransparentUI: dispatchToggleConfigurationSpaceTransparentUI, dispatchToggleConfigurationSpaceShowTransformOrigin: dispatchToggleConfigurationSpaceShowTransformOrigin, dispatchSetConfigurationSpaceTransformOriginSize: dispatchSetConfigurationSpaceTransformOriginSize, dispatchSetConfigurationSpaceLayoutType: dispatchSetConfigurationSpaceLayoutType} = properties;\n const {global: global, space: space, elements: elements} = configuration;\n const {transparentUI: transparentUI, language: language} = global;\n const {layout: layout, transformOrigin: transformOrigin} = space;\n const layoutType = pluridData.layoutNames[layout.type];\n const {show: showTransformOrigin, size: transformOriginSize} = transformOrigin;\n const planeOpacity = elements.plane.opacity;\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpaceTransparentUserInterface), React__default[\"default\"].createElement(PluridSwitch$2, {\n checked: transparentUI,\n atChange: () => dispatchToggleConfigurationSpaceTransparentUI(),\n exclusive: true,\n level: 2,\n theme: interactionTheme\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpaceShowTransformOrigin), React__default[\"default\"].createElement(PluridSwitch$2, {\n checked: showTransformOrigin,\n atChange: () => dispatchToggleConfigurationSpaceShowTransformOrigin(),\n exclusive: true,\n level: 2,\n theme: interactionTheme\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpaceTransformOriginSize), React__default[\"default\"].createElement(PluridDropdown, {\n selectables: [ \"small\", \"normal\", \"large\" ],\n selected: transformOriginSize.toLowerCase(),\n atSelect: selection => {\n const selected = selection.toUpperCase();\n if (selected === pluridData.SIZES.SMALL || selected === pluridData.SIZES.NORMAL || selected === pluridData.SIZES.LARGE) {\n dispatchSetConfigurationSpaceTransformOriginSize(selected);\n }\n },\n heightItems: 3,\n theme: interactionTheme\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpacePlaneOpacity), React__default[\"default\"].createElement(PluridSlider$1, {\n value: planeOpacity,\n max: 1,\n min: 0,\n step: .1,\n defaultValue: 100,\n atChange: value => dispatchSetConfigurationPlaneOpacity(value),\n thumbSize: \"large\",\n level: 2,\n theme: interactionTheme\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpaceLayoutType), React__default[\"default\"].createElement(PluridDropdown, {\n selectables: [ ...Object.values(pluridData.layoutNames) ],\n selected: layoutType,\n atSelect: selection => {\n const selected = selection.toUpperCase().replace(/\\s/g, \"_\");\n dispatchSetConfigurationSpaceLayoutType(selected);\n },\n heightItems: 3,\n theme: interactionTheme,\n width: 100\n })));\n};\n\nconst mapStateToProps$a = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$a = dispatch => ({\n dispatchSetConfigurationPlaneOpacity: value => dispatch(actions.configuration.setConfigurationPlaneOpacity(value)),\n dispatchToggleConfigurationSpaceTransparentUI: () => dispatch(actions.configuration.toggleConfigurationSpaceTransparentUI()),\n dispatchToggleConfigurationSpaceShowTransformOrigin: () => dispatch(actions.configuration.toggleConfigurationSpaceShowTransformOrigin()),\n dispatchSetConfigurationSpaceTransformOriginSize: size => dispatch(actions.configuration.setConfigurationSpaceTransformOriginSize(size)),\n dispatchSetConfigurationSpaceLayoutType: layoutType => dispatch(actions.configuration.setConfigurationSpaceLayoutType(layoutType))\n});\n\nconst ConnectedPluridMenuMoreSpace = reactRedux.connect(mapStateToProps$a, mapDispatchToProps$a, null, {\n context: StateContext\n})(PluridMenuMoreSpace);\n\nconst {inputs: {Switch: PluridSwitch$1}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreToolbar = properties => {\n const {stateLanguage: stateLanguage, interactionTheme: interactionTheme, configuration: configuration, viewSize: viewSize, dispatchToggleConfigurationToolbarConceal: dispatchToggleConfigurationToolbarConceal, dispatchToggleConfigurationToolbarTransformIcons: dispatchToggleConfigurationToolbarTransformIcons, dispatchToggleConfigurationToolbarTransformButtons: dispatchToggleConfigurationToolbarTransformButtons, dispatchToggleConfigurationToolbarOpaque: dispatchToggleConfigurationToolbarOpaque} = properties;\n const {toolbar: toolbar} = configuration.elements;\n const {conceal: conceal, opaque: opaque, transformIcons: transformIcons, transformButtons: transformButtons} = toolbar;\n const [viewSizeSmall, setViewSizeSmall] = React.useState(false);\n React.useEffect((() => {\n if (viewSize.width < 800) {\n setViewSizeSmall(true);\n } else {\n setViewSizeSmall(false);\n }\n }), [ viewSize.width ]);\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerToolbarAlwaysOpaque)), React__default[\"default\"].createElement(PluridSwitch$1, {\n theme: interactionTheme,\n checked: opaque,\n atChange: () => dispatchToggleConfigurationToolbarOpaque(),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerToolbarShowTransformIcons)), React__default[\"default\"].createElement(PluridSwitch$1, {\n theme: interactionTheme,\n checked: transformIcons,\n atChange: () => dispatchToggleConfigurationToolbarTransformIcons(),\n exclusive: true,\n level: 2\n })), !viewSizeSmall && React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerToolbarShowTransformArrows)), React__default[\"default\"].createElement(PluridSwitch$1, {\n theme: interactionTheme,\n checked: transformButtons,\n atChange: () => dispatchToggleConfigurationToolbarTransformButtons(),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerToolbarConcealToolbar)), React__default[\"default\"].createElement(PluridSwitch$1, {\n theme: interactionTheme,\n checked: conceal,\n atChange: () => dispatchToggleConfigurationToolbarConceal(),\n exclusive: true,\n level: 2\n })));\n};\n\nconst mapStateToProps$9 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state),\n viewSize: selectors.space.getViewSize(state)\n});\n\nconst mapDispatchToProps$9 = dispatch => ({\n dispatchToggleConfigurationToolbarConceal: () => dispatch(actions.configuration.toggleConfigurationToolbarConceal()),\n dispatchToggleConfigurationToolbarTransformIcons: () => dispatch(actions.configuration.toggleConfigurationToolbarTransformIcons()),\n dispatchToggleConfigurationToolbarTransformButtons: () => dispatch(actions.configuration.toggleConfigurationToolbarTransformButtons()),\n dispatchToggleConfigurationToolbarOpaque: () => dispatch(actions.configuration.toggleConfigurationToolbarOpaque())\n});\n\nconst ConnectedPluridMenuMoreToolbar = reactRedux.connect(mapStateToProps$9, mapDispatchToProps$9, null, {\n context: StateContext\n})(PluridMenuMoreToolbar);\n\nconst {inputs: {Switch: PluridSwitch}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreViewcube = properties => {\n const {stateLanguage: stateLanguage, interactionTheme: interactionTheme, configuration: configuration, dispatchToggleConfigurationViewcubeHide: dispatchToggleConfigurationViewcubeHide, dispatchToggleConfigurationViewcubeButtons: dispatchToggleConfigurationViewcubeButtons, dispatchToggleConfigurationViewcubeOpaque: dispatchToggleConfigurationViewcubeOpaque, dispatchToggleConfigurationViewcubeConceal: dispatchToggleConfigurationViewcubeConceal} = properties;\n const {viewcube: viewcube} = configuration.elements;\n const {show: show, buttons: buttons, opaque: opaque, conceal: conceal} = viewcube;\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: !show ? true : false\n }, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerViewcubeShowViewcube)), React__default[\"default\"].createElement(PluridSwitch, {\n theme: interactionTheme,\n checked: show,\n atChange: () => dispatchToggleConfigurationViewcubeHide(!show),\n exclusive: true,\n level: 2\n })), show && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerViewcubeShowTransformButtons)), React__default[\"default\"].createElement(PluridSwitch, {\n theme: interactionTheme,\n checked: buttons,\n atChange: () => dispatchToggleConfigurationViewcubeButtons(!buttons),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerViewcubeAlwaysOpaque)), React__default[\"default\"].createElement(PluridSwitch, {\n theme: interactionTheme,\n checked: opaque,\n atChange: () => dispatchToggleConfigurationViewcubeOpaque(!opaque),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerViewcubeConcealViewcube)), React__default[\"default\"].createElement(PluridSwitch, {\n theme: interactionTheme,\n checked: conceal,\n atChange: () => dispatchToggleConfigurationViewcubeConceal(),\n exclusive: true,\n level: 2\n }))));\n};\n\nconst mapStateToProps$8 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$8 = dispatch => ({\n dispatchToggleConfigurationViewcubeHide: toggle => dispatch(actions.configuration.toggleConfigurationViewcubeHide(toggle)),\n dispatchToggleConfigurationViewcubeButtons: toggle => dispatch(actions.configuration.toggleConfigurationViewcubeButtons(toggle)),\n dispatchToggleConfigurationViewcubeOpaque: toggle => dispatch(actions.configuration.toggleConfigurationViewcubeOpaque(toggle)),\n dispatchToggleConfigurationViewcubeConceal: () => dispatch(actions.configuration.toggleConfigurationViewcubeConceal())\n});\n\nconst ConnectedPluridMenuMoreViewcube = reactRedux.connect(mapStateToProps$8, mapDispatchToProps$8, null, {\n context: StateContext\n})(PluridMenuMoreViewcube);\n\nconst {inputs: {Slider: PluridSlider}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreTechnical = properties => {\n const {stateLanguage: stateLanguage, stateConfiguration: stateConfiguration, stateInteractionTheme: stateInteractionTheme, dispatchSetConfigurationSpaceCullingDistance: dispatchSetConfigurationSpaceCullingDistance} = properties;\n const {cullingDistance: cullingDistance} = stateConfiguration.space;\n const [localCullingDistance, setLocalCullingDistance] = React.useState(cullingDistance);\n const dispatchCullingDistanceUpdateFunction = value => {\n dispatchSetConfigurationSpaceCullingDistance(value);\n };\n const dispatchCullingDistanceUpdate = pluridFunctionsReact.useDebouncedCallback(dispatchCullingDistanceUpdateFunction, 300);\n const handleCullingDistance = value => {\n setLocalCullingDistance(value);\n dispatchCullingDistanceUpdate(value);\n };\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTechnicalCullingDistance)), React__default[\"default\"].createElement(PluridSlider, {\n theme: stateInteractionTheme,\n value: localCullingDistance,\n atChange: handleCullingDistance,\n min: 1e3,\n max: 5e3,\n defaultValue: 1500\n })));\n};\n\nconst mapStateToProps$7 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$7 = dispatch => ({\n dispatchSetConfigurationSpaceCullingDistance: value => dispatch(actions.configuration.setConfigurationSpaceCullingDistance(value))\n});\n\nconst ConnectedPluridMenuMoreTechnical = reactRedux.connect(mapStateToProps$7, mapDispatchToProps$7, null, {\n context: StateContext\n})(PluridMenuMoreTechnical);\n\nconst PluridMenuMoreShortcuts = properties => {\n const {interactionTheme: interactionTheme, configuration: configuration} = properties;\n const {global: global} = configuration;\n const {language: language} = global;\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridData.defaultShortcuts.map(((shortcut, index) => {\n const {type: type} = shortcut;\n const shortcutData = pluridData.shortcutsNames[type];\n const {name: name, internationalizedKey: internationalizedKey, key: key, modifier: modifier} = shortcutData;\n const modifierString = Array.isArray(modifier) ? modifier.reduce(((total, element) => total + \" + \" + element)) + \" +\" : typeof modifier === \"string\" ? modifier + \" +\" : \"\";\n const internationalizedName = pluridEngine.internatiolate(language, name);\n const keyAsAny = key;\n const keyName = internationalizedKey ? pluridEngine.internatiolate(language, keyAsAny) : key;\n return React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n key: name,\n theme: interactionTheme,\n afterline: type === \"TURN_DOWN\" || type === \"TOGGLE_ROTATE\" || type === \"TOGGLE_TRANSLATE\",\n last: index === pluridData.defaultShortcuts.length - 1 ? true : false\n }, React__default[\"default\"].createElement(\"div\", null, internationalizedName), React__default[\"default\"].createElement(\"div\", null, modifierString, \" \", keyName));\n })));\n};\n\nconst mapStateToProps$6 = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$6 = dispatch => ({});\n\nconst ConnectedPluridMenuMoreShortcuts = reactRedux.connect(mapStateToProps$6, mapDispatchToProps$6, null, {\n context: StateContext\n})(PluridMenuMoreShortcuts);\n\nconst moreMenusRecord = {\n GLOBAL: {\n name: pluridData.internationalization.fields.toolbarDrawerGlobalTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.GLOBAL,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreGlobal, null)\n },\n TRANSFORM: {\n name: pluridData.internationalization.fields.toolbarDrawerTransformTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.TRANSFORM,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreTransform, null)\n },\n SPACE: {\n name: pluridData.internationalization.fields.toolbarDrawerSpaceTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.SPACE,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreSpace, null)\n },\n TOOLBAR: {\n name: pluridData.internationalization.fields.toolbarDrawerToolbarTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.TOOLBAR,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreToolbar, null)\n },\n VIEWCUBE: {\n name: pluridData.internationalization.fields.toolbarDrawerViewcubeTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.VIEWCUBE,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreViewcube, null)\n },\n TECHNICAL: {\n name: pluridData.internationalization.fields.toolbarDrawerTechnicalTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.TECHNICAL,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreTechnical, null)\n },\n SHORTCUTS: {\n name: pluridData.internationalization.fields.toolbarDrawerShortcutsTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.SHORTCUTS,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreShortcuts, null)\n }\n};\n\nconst moreMenus = Object.values(moreMenusRecord);\n\nconst resolveMenus = drawers => {\n if (drawers.length === 0 || drawers.includes(\"ALL\")) {\n return moreMenus;\n }\n const resolvedMenus = [];\n for (const drawer of drawers) {\n const menu = moreMenusRecord[drawer];\n resolvedMenus.push(menu);\n }\n return resolvedMenus;\n};\n\nconst PluridMoreMenu = properties => {\n const {stateLanguage: stateLanguage, stateInteractionTheme: stateInteractionTheme, stateConfiguration: stateConfiguration, stateToolbarMenuScrollPosition: stateToolbarMenuScrollPosition, dispatchToggleConfigurationToolbarToggleDrawer: dispatchToggleConfigurationToolbarToggleDrawer, dispatchSetUIToolbarScrollPosition: dispatchSetUIToolbarScrollPosition} = properties;\n const {global: global, elements: elements} = stateConfiguration;\n const {transparentUI: transparentUI} = global;\n const {toolbar: toolbar} = elements;\n const {drawers: drawers, toggledDrawers: toggledDrawers} = toolbar;\n const menus = resolveMenus(drawers);\n const moreMenuScrollElement = React.useRef(null);\n const handleWheel = pluridFunctionsReact.useDebouncedCallback((_event => {\n if (moreMenuScrollElement.current) {\n const scrollPosition = moreMenuScrollElement.current.scrollTop;\n dispatchSetUIToolbarScrollPosition(scrollPosition);\n }\n }), 100);\n React.useEffect((() => {\n if (moreMenuScrollElement.current) {\n moreMenuScrollElement.current.addEventListener(\"wheel\", handleWheel);\n }\n return () => {\n if (moreMenuScrollElement.current) {\n moreMenuScrollElement.current.removeEventListener(\"wheel\", handleWheel);\n }\n };\n }), [ moreMenuScrollElement.current ]);\n React.useEffect((() => {\n if (moreMenuScrollElement.current) {\n moreMenuScrollElement.current.scrollTop = stateToolbarMenuScrollPosition;\n }\n }), [ stateToolbarMenuScrollPosition, moreMenuScrollElement.current ]);\n return React__default[\"default\"].createElement(StyledPluridMoreMenu, {\n theme: stateInteractionTheme,\n transparentUI: transparentUI\n }, React__default[\"default\"].createElement(StyledPluridMoreMenuScroll, {\n ref: moreMenuScrollElement\n }, menus.map((moreMenu => {\n const {name: name, drawer: drawer, component: component} = moreMenu;\n const internationalizedName = pluridEngine.internatiolate(stateLanguage, name);\n return React__default[\"default\"].createElement(ConnectedPluridDrawer, {\n key: name,\n heading: internationalizedName,\n items: React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, component),\n toggled: toggledDrawers.includes(\"ALL\") || toggledDrawers.includes(drawer),\n toggle: () => dispatchToggleConfigurationToolbarToggleDrawer(drawer)\n });\n }))));\n};\n\nconst mapStateToProperties$d = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n stateInteractionTheme: selectors.themes.getInteractionTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateToolbarMenuScrollPosition: selectors.ui.getToolbarScrollPosition(state)\n});\n\nconst mapDispatchToProperties$d = dispatch => ({\n dispatchToggleConfigurationToolbarToggleDrawer: drawer => dispatch(actions.configuration.toggleConfigurationToolbarToggleDrawer(drawer)),\n dispatchSetUIToolbarScrollPosition: value => dispatch(actions.ui.setUIToolbarScrollPosition(value))\n});\n\nconst ConnectedPluridMoreMenu = reactRedux.connect(mapStateToProperties$d, mapDispatchToProperties$d, null, {\n context: StateContext\n})(PluridMoreMenu);\n\nconst StyledPluridToolbarRotate = styled__default[\"default\"].div`\n display: grid;\n align-items: center;\n justify-items: center;\n grid-template-columns: ${props => {\n if (!props.showTransformButtons) {\n return \"1fr\";\n }\n return \"30px 30px 60px 30px 30px\";\n}};\n`;\n\nconst StyledPluridTransformArrow = styled__default[\"default\"].div`\n user-select: none;\n cursor: pointer;\n border-radius: 50px;\n width: 25px;\n height: 25px;\n display: grid;\n place-content: center;\n padding: 2px;\n\n background-color: ${({pressed: pressed, theme: theme}) => {\n if (pressed) {\n return theme.backgroundColorTertiary;\n }\n return \"initial\";\n}};\n\n :hover {\n background-color: ${({theme: theme}) => theme.backgroundColorTertiary};\n }\n`;\n\nconst arrowSigns = {\n left: \"◀\",\n right: \"▶\",\n up: \"▲\",\n down: \"▼\"\n};\n\nconst PluridTransformArrow = properties => {\n const {direction: direction, transform: transform, interactionTheme: interactionTheme} = properties;\n const arrowSign = arrowSigns[direction];\n const pressingInterval = React.useRef(null);\n const arrowElement = React.useRef(null);\n const [pressed, setPressed] = React.useState(false);\n const handleTouch = event => {\n switch (event.type) {\n case \"tap\":\n transform();\n if (pressingInterval.current) {\n setPressed(false);\n clearInterval(pressingInterval.current);\n }\n break;\n\n case \"press\":\n setPressed(true);\n pressingInterval.current = setInterval((() => {\n transform();\n }), 30);\n break;\n\n case \"pressup\":\n setPressed(false);\n if (pressingInterval.current) {\n clearInterval(pressingInterval.current);\n }\n break;\n }\n };\n const handleMouseLeave = () => {\n if (pressingInterval.current) {\n setPressed(false);\n clearInterval(pressingInterval.current);\n }\n };\n React.useEffect((() => {\n if (typeof window === \"undefined\") {\n return;\n }\n let touch;\n const loadTouch = () => __awaiter(void 0, void 0, void 0, (function*() {\n const HammerImport = yield loadHammer();\n const Hammer = HammerImport.default;\n touch = new Hammer(arrowElement.current);\n touch.on(\"tap press pressup\", handleTouch);\n }));\n loadTouch();\n return () => {\n if (touch) {\n touch.off(\"tap press pressup\", handleTouch);\n }\n };\n }), [ arrowElement.current ]);\n return React__default[\"default\"].createElement(StyledPluridTransformArrow, {\n ref: arrowElement,\n theme: interactionTheme,\n pressed: pressed,\n onMouseLeave: () => handleMouseLeave()\n }, arrowSign);\n};\n\nconst mapStateToProps$5 = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$5 = dispatch => ({});\n\nconst ConnectedPluridTransformArrow = reactRedux.connect(mapStateToProps$5, mapDispatchToProps$5, null, {\n context: StateContext\n})(PluridTransformArrow);\n\nconst PluridToolbarRotate = properties => {\n const {showTransformButtons: showTransformButtons, showIcons: showIcons, transformMode: transformMode, toggleTransform: toggleTransform, stateLanguage: stateLanguage, interactionTheme: interactionTheme, rotateUp: rotateUp, rotateDown: rotateDown, rotateLeft: rotateLeft, rotateRight: rotateRight} = properties;\n return React__default[\"default\"].createElement(StyledPluridToolbarRotate, {\n showTransformButtons: showTransformButtons\n }, showTransformButtons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"left\",\n transform: () => rotateRight()\n }), React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"up\",\n transform: () => rotateUp()\n })), React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: interactionTheme,\n onClick: () => toggleTransform(pluridData.TRANSFORM_MODES.ROTATION),\n active: transformMode === pluridData.TRANSFORM_MODES.ROTATION,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons,\n button: showIcons\n }, showIcons ? React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconRotate, null)) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarTransformRotate))), showTransformButtons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"down\",\n transform: () => rotateDown()\n }), React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"right\",\n transform: () => rotateLeft()\n })));\n};\n\nconst mapStateToProps$4 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$4 = dispatch => ({\n rotateUp: () => dispatch(actions.space.rotateUp()),\n rotateDown: () => dispatch(actions.space.rotateDown()),\n rotateLeft: () => dispatch(actions.space.rotateLeft()),\n rotateRight: () => dispatch(actions.space.rotateRight())\n});\n\nconst ConnectedPluridToolbarRotate = reactRedux.connect(mapStateToProps$4, mapDispatchToProps$4, null, {\n context: StateContext\n})(PluridToolbarRotate);\n\nconst StyledPluridToolbarScale = styled__default[\"default\"].div`\n display: grid;\n align-items: center;\n justify-items: center;\n grid-template-columns: ${props => {\n if (!props.showTransformButtons) {\n return \"1fr\";\n }\n return \"30px 60px 30px\";\n}};\n`;\n\nconst PluridToolbarScale = properties => {\n const {showTransformButtons: showTransformButtons, showIcons: showIcons, transformMode: transformMode, toggleTransform: toggleTransform, stateLanguage: stateLanguage, interactionTheme: interactionTheme, scaleUp: scaleUp, scaleDown: scaleDown} = properties;\n return React__default[\"default\"].createElement(StyledPluridToolbarScale, {\n showTransformButtons: showTransformButtons\n }, showTransformButtons && React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"up\",\n transform: () => scaleUp()\n }), React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: interactionTheme,\n onClick: () => toggleTransform(pluridData.TRANSFORM_MODES.SCALE),\n active: transformMode === pluridData.TRANSFORM_MODES.SCALE,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons,\n button: showIcons\n }, showIcons ? React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconScale, null)) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarTransformScale))), showTransformButtons && React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"down\",\n transform: () => scaleDown()\n }));\n};\n\nconst mapStateToProps$3 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$3 = dispatch => ({\n scaleUp: () => dispatch(actions.space.scaleUp()),\n scaleDown: () => dispatch(actions.space.scaleDown())\n});\n\nconst ConnectedPluridToolbarScale = reactRedux.connect(mapStateToProps$3, mapDispatchToProps$3, null, {\n context: StateContext\n})(PluridToolbarScale);\n\nconst StyledPluridToolbarTranslate = styled__default[\"default\"].div`\n display: grid;\n align-items: center;\n justify-items: center;\n grid-template-columns: ${props => {\n if (!props.showTransformButtons) {\n return \"1fr\";\n }\n return \"30px 30px 60px 30px 30px\";\n}};\n`;\n\nconst PluridToolbarTranslate = properties => {\n const {showTransformButtons: showTransformButtons, showIcons: showIcons, transformMode: transformMode, toggleTransform: toggleTransform, stateLanguage: stateLanguage, interactionTheme: interactionTheme, translateUp: translateUp, translateDown: translateDown, translateLeft: translateLeft, translateRight: translateRight} = properties;\n return React__default[\"default\"].createElement(StyledPluridToolbarTranslate, {\n showTransformButtons: showTransformButtons\n }, showTransformButtons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"left\",\n transform: () => translateLeft()\n }), React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"up\",\n transform: () => translateUp()\n })), React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: interactionTheme,\n onClick: () => toggleTransform(pluridData.TRANSFORM_MODES.TRANSLATION),\n active: transformMode === pluridData.TRANSFORM_MODES.TRANSLATION,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons,\n button: showIcons\n }, showIcons ? React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconTranslate, null)) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarTransformTranslate))), showTransformButtons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"down\",\n transform: () => translateDown()\n }), React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"right\",\n transform: () => translateRight()\n })));\n};\n\nconst mapStateToProperties$c = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$c = dispatch => ({\n translateUp: () => dispatch(actions.space.translateUp()),\n translateDown: () => dispatch(actions.space.translateDown()),\n translateLeft: () => dispatch(actions.space.translateLeft()),\n translateRight: () => dispatch(actions.space.translateRight())\n});\n\nconst ConnectedPluridToolbarTranslate = reactRedux.connect(mapStateToProperties$c, mapDispatchToProperties$c, null, {\n context: StateContext\n})(PluridToolbarTranslate);\n\nconst PluridToolbar = properties => {\n const {theme: theme, configuration: configuration, viewSize: viewSize, dispatchToggleConfigurationSpaceFirstPerson: dispatchToggleConfigurationSpaceFirstPerson, dispatchSetConfigurationSpaceTransformMode: dispatchSetConfigurationSpaceTransformMode} = properties;\n const {global: global, elements: elements, space: space} = configuration;\n const {transparentUI: transparentUI} = global;\n const {firstPerson: firstPerson, transformMode: transformMode, fadeInTime: fadeInTime} = space;\n const {toolbar: toolbar} = elements;\n const {conceal: conceal, opaque: opaque, transformIcons: transformIcons, transformButtons: transformButtons} = toolbar;\n const showToolbar = toolbar.show;\n const menuTimeout = React.useRef(null);\n const [mouseIn, setMouseIn] = React.useState(false);\n const [showMenu, setShowMenu] = React.useState(MENUS.NONE);\n const [showIcons, setShowIcons] = React.useState(transformIcons);\n const [showTransformButtons, setShowTransformButtons] = React.useState(transformButtons);\n const [isMounted, setIsMounted] = React.useState(false);\n const toggleTransform = TYPE => {\n if (showMenu !== MENUS.NONE) {\n setShowMenu(MENUS.NONE);\n }\n dispatchSetConfigurationSpaceTransformMode(TYPE);\n };\n const handleShowMenu = menu => {\n if (showMenu === menu) {\n setShowMenu(MENUS.NONE);\n } else {\n dispatchSetConfigurationSpaceTransformMode(pluridData.TRANSFORM_MODES.ALL);\n setShowMenu(menu);\n }\n };\n React.useEffect((() => {\n setIsMounted(true);\n }), []);\n React.useEffect((() => {\n if (viewSize.width < VIEW_SIZE_WIDTH_LIMIT) {\n if (transformButtons) {\n setShowTransformButtons(false);\n }\n }\n if (viewSize.width > VIEW_SIZE_WIDTH_LIMIT) {\n setShowTransformButtons(transformButtons);\n }\n }), [ viewSize.width ]);\n React.useEffect((() => {\n setShowIcons(transformIcons);\n setShowTransformButtons(transformButtons);\n }), [ transformIcons, transformButtons ]);\n React.useEffect((() => {\n if (mouseIn && menuTimeout.current) {\n clearTimeout(menuTimeout.current);\n }\n if (!mouseIn) {\n menuTimeout.current = setTimeout((() => {\n setShowMenu(MENUS.NONE);\n }), 400);\n }\n return () => {\n if (menuTimeout.current) {\n clearTimeout(menuTimeout.current);\n }\n };\n }), [ mouseIn ]);\n if (!showToolbar) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledToolbar, {\n onMouseEnter: () => setMouseIn(true),\n onMouseLeave: () => setMouseIn(false),\n mouseIn: mouseIn,\n conceal: conceal,\n showMenu: showMenu,\n isMounted: isMounted,\n fadeInTime: fadeInTime,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_TOOLBAR\n }, React__default[\"default\"].createElement(StyledToolbarButtons, {\n theme: theme,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons,\n documentsBased: false,\n mouseIn: mouseIn,\n opaque: opaque,\n transparentUI: transparentUI\n }, React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: theme,\n onClick: () => dispatchToggleConfigurationSpaceFirstPerson(),\n active: firstPerson,\n button: true,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons\n }, React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconFirstPerson, null))), React__default[\"default\"].createElement(ConnectedPluridToolbarRotate, {\n showTransformButtons: showTransformButtons,\n showIcons: showIcons,\n transformMode: transformMode,\n toggleTransform: toggleTransform\n }), React__default[\"default\"].createElement(ConnectedPluridToolbarScale, {\n showTransformButtons: showTransformButtons,\n showIcons: showIcons,\n transformMode: transformMode,\n toggleTransform: toggleTransform\n }), React__default[\"default\"].createElement(ConnectedPluridToolbarTranslate, {\n showTransformButtons: showTransformButtons,\n showIcons: showIcons,\n transformMode: transformMode,\n toggleTransform: toggleTransform\n }), React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: theme,\n onClick: () => handleShowMenu(MENUS.MORE),\n active: showMenu === MENUS.MORE,\n button: true,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons\n }, React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconMore, null)))), showMenu === MENUS.UNIVERSES && React__default[\"default\"].createElement(ConnectedPluridMenuUniverses, null), showMenu === MENUS.MORE && React__default[\"default\"].createElement(ConnectedPluridMoreMenu, null));\n};\n\nconst mapStateToProperties$b = state => ({\n configuration: selectors.configuration.getConfiguration(state),\n theme: selectors.themes.getInteractionTheme(state),\n viewSize: selectors.space.getViewSize(state)\n});\n\nconst mapDispatchToProperties$b = dispatch => ({\n dispatchToggleConfigurationSpaceFirstPerson: () => dispatch(actions.configuration.toggleConfigurationSpaceFirstPerson()),\n dispatchSetConfigurationSpaceTransformMode: mode => dispatch(actions.configuration.setConfigurationSpaceTransformMode(mode))\n});\n\nconst ConnectedPluridToolbar = reactRedux.connect(mapStateToProperties$b, mapDispatchToProperties$b, null, {\n context: StateContext\n})(PluridToolbar);\n\nconst StyledPluridViewcube = styled__default[\"default\"].div`\n position: absolute;\n @media (max-width: 800px) {\n top: ${({conceal: conceal, mouseOver: mouseOver}) => {\n if (conceal && !mouseOver) {\n return \"-90px\";\n }\n return \"0\";\n}};\n }\n bottom: ${({conceal: conceal, mouseOver: mouseOver}) => {\n if (conceal && !mouseOver) {\n return \"-90px\";\n }\n return \"0\";\n}};\n right: ${({conceal: conceal, mouseOver: mouseOver}) => {\n if (conceal && !mouseOver) {\n return \"-100px\";\n }\n return \"0\";\n}};\n position: absolute;\n user-select: none;\n transition: all 300ms ease-in-out;\n z-index: 9998;\n height: 165px;\n display: grid;\n grid-template-areas: \"PVScale PVScale PVScale PVScale\"\n \"PVEmptyOne PVRotateUp PVEmptyTwo PVTranslateY\"\n \"PVRotateLeft PVModel PVRotateRight PVTranslateY\"\n \"PVEmptyThree PVRotateDown PVFitview PVTranslateY\"\n \"PVTranslateX PVTranslateX PVTranslateX PVTranslateX\";\n grid-template-rows: 20px 15px 95px 15px 20px;\n grid-template-columns: 15px 115px 15px 20px;\n\n opacity: ${({fadeInTime: fadeInTime}) => {\n if (fadeInTime) {\n return \"0\";\n }\n return \"1\";\n}};\n animation: ${({fadeInTime: fadeInTime, isMounted: isMounted}) => {\n if (isMounted && fadeInTime) {\n return fadeInAnimation(fadeInTime);\n }\n return \"\";\n}};\n\n :hover {\n opacity: 1;\n }\n`;\n\nconst StyledPluridViewcubeArrow = styled__default[\"default\"].div`\n display: grid;\n place-content: center;\n\n /* TODO\n * Themed color\n */\n color: white;\n`;\n\nconst StyledPluridViewcubeArrowIcon = styled__default[\"default\"].div`\n user-select: none;\n font-size: 0.6rem;\n width: 1.2rem;\n height: 1.2rem;\n border-radius: 0.6rem;\n display: grid;\n place-content: center;\n cursor: pointer;\n\n :hover {\n background-color: ${({theme: theme}) => theme.backgroundColorTertiary};\n }\n`;\n\nconst StyledFitView = styled__default[\"default\"].div`\n grid-area: PVFitview;\n display: grid;\n place-content: center;\n cursor: pointer;\n user-select: none;\n\n svg {\n height: 0.8rem;\n width: 0.8rem;\n fill: white;\n }\n`;\n\nconst StyledPluridViewcubeFace = styled__default[\"default\"].div`\n font-size: 0.6rem;\n position: absolute;\n height: 50px;\n width: 50px;\n pointer-events: none;\n display: grid;\n transform-style: preserve-3d;\n grid-template-areas: \"PVFTopLeft PVFTopCenter PVFTopRight\"\n \"PVFMiddleLeft PVFMiddleCenter PVFMiddleRight\"\n \"PVFBottomLeft PVFBottomCenter PVFBottomRight\";\n grid-template-rows: 10px 30px 10px;\n grid-template-columns: 10px 30px 10px;\n box-sizing: content-box;\n transition: all 300ms linear;\n\n border: 1px solid ${({mouseOver: mouseOver, theme: theme}) => {\n if (mouseOver) {\n return theme.colorTertiary;\n }\n return theme.backgroundColorSecondary;\n}};\n box-shadow: ${({face: face, theme: theme}) => {\n if (face === \"base\") {\n return \"0px 0px 12px 2px \" + theme.boxShadowPenumbraColor;\n }\n return \"\";\n}};\n opacity: ${({opaque: opaque, mouseOver: mouseOver}) => {\n if (!opaque) {\n if (mouseOver) {\n return \"0.8\";\n }\n if (!mouseOver) {\n return \"0.4\";\n }\n }\n return \"1\";\n}};\n transform: ${({face: face}) => {\n switch (face) {\n case \"front\":\n return \"translateZ(25px) rotateY(0deg)\";\n\n case \"back\":\n return \"translateZ(-25px) rotateY(-180deg)\";\n\n case \"left\":\n return \"translateX(-25px) rotateY(-90deg)\";\n\n case \"right\":\n return \"translateX(25px) rotateY(90deg)\";\n\n case \"top\":\n return \"translateY(-25px) rotateX(90deg)\";\n\n case \"base\":\n return \"translateY(25px) rotateX(-90deg)\";\n }\n return \"\";\n}};\n`;\n\nconst StyledPluridViewcubeFaceZone = styled__default[\"default\"].div`\n display: grid;\n place-content: center;\n cursor: pointer;\n pointer-events: all;\n\n grid-area: ${({type: type}) => `PVF${type}`};\n color: ${({theme: theme, hovered: hovered}) => {\n if (hovered) {\n return theme.colorPrimary;\n }\n return theme.colorSecondary;\n}};\n background-color: ${({theme: theme, transparentUI: transparentUI, hovered: hovered, active: active}) => {\n if (transparentUI && !hovered) {\n return theme.backgroundColorPrimaryAlpha;\n }\n if (active) {\n return theme.backgroundColorTertiary;\n }\n if (hovered) {\n return theme.backgroundColorTertiary;\n }\n return theme.backgroundColorSecondary;\n}};\n border: 1px solid ${({theme: theme, transparentUI: transparentUI, hovered: hovered}) => {\n if (transparentUI && !hovered) {\n return \"transparent\";\n }\n if (hovered) {\n return theme.colorTertiary;\n }\n return theme.backgroundColorSecondary;\n}};\n\n :hover {\n background-color: ${({theme: theme}) => theme.backgroundColorTertiary};\n }\n`;\n\nconst faceTypes = {\n topLeft: \"TopLeft\",\n topCenter: \"TopCenter\",\n topRight: \"TopRight\",\n middleLeft: \"MiddleLeft\",\n middleCenter: \"MiddleCenter\",\n middleRight: \"MiddleRight\",\n bottomLeft: \"BottomLeft\",\n bottomCenter: \"BottomCenter\",\n bottomRight: \"BottomRight\"\n};\n\nconst zoneCodes = {\n frontTopLeft: \"A1\",\n frontTopCenter: \"A2\",\n frontTopRight: \"A3\",\n frontMiddleLeft: \"B1\",\n frontMiddleCenter: \"B2\",\n frontMiddleRight: \"B3\",\n frontBottomLeft: \"C1\",\n frontBottomCenter: \"C2\",\n frontBottomRight: \"C3\",\n rightTopLeft: \"A3\",\n rightTopCenter: \"A4\",\n rightTopRight: \"A5\",\n rightMiddleLeft: \"B3\",\n rightMiddleCenter: \"B4\",\n rightMiddleRight: \"B5\",\n rightBottomLeft: \"C3\",\n rightBottomCenter: \"C4\",\n rightBottomRight: \"C5\",\n backTopLeft: \"A5\",\n backTopCenter: \"A6\",\n backTopRight: \"A7\",\n backMiddleLeft: \"B5\",\n backMiddleCenter: \"B6\",\n backMiddleRight: \"B7\",\n backBottomLeft: \"C5\",\n backBottomCenter: \"C6\",\n backBottomRight: \"C7\",\n leftTopLeft: \"A7\",\n leftTopCenter: \"A8\",\n leftTopRight: \"A1\",\n leftMiddleLeft: \"B7\",\n leftMiddleCenter: \"B8\",\n leftMiddleRight: \"B1\",\n leftBottomLeft: \"C7\",\n leftBottomCenter: \"C8\",\n leftBottomRight: \"C1\",\n topTopLeft: \"A7\",\n topTopCenter: \"A6\",\n topTopRight: \"A5\",\n topMiddleLeft: \"A8\",\n topMiddleCenter: \"D1\",\n topMiddleRight: \"A4\",\n topBottomLeft: \"A1\",\n topBottomCenter: \"A2\",\n topBottomRight: \"A3\",\n baseTopLeft: \"C1\",\n baseTopCenter: \"C2\",\n baseTopRight: \"C3\",\n baseMiddleLeft: \"C8\",\n baseMiddleCenter: \"E1\",\n baseMiddleRight: \"C4\",\n baseBottomLeft: \"C7\",\n baseBottomCenter: \"C6\",\n baseBottomRight: \"C5\"\n};\n\nconst faceTransform = {\n A1: {\n rotateX: -45,\n rotateY: 45\n },\n A2: {\n rotateX: -45,\n rotateY: 0\n },\n A3: {\n rotateX: -45,\n rotateY: -45\n },\n B1: {\n rotateX: 0,\n rotateY: 45\n },\n B2: {\n rotateX: 0,\n rotateY: 0\n },\n B3: {\n rotateX: 0,\n rotateY: -45\n },\n C1: {\n rotateX: 45,\n rotateY: 45\n },\n C2: {\n rotateX: 45,\n rotateY: 0\n },\n C3: {\n rotateX: 45,\n rotateY: -45\n },\n A4: {\n rotateX: -45,\n rotateY: 270.1\n },\n A5: {\n rotateX: -45,\n rotateY: 225\n },\n B4: {\n rotateX: 0,\n rotateY: 270.1\n },\n B5: {\n rotateX: 0,\n rotateY: 225\n },\n C4: {\n rotateX: 45,\n rotateY: 270.1\n },\n C5: {\n rotateX: 45,\n rotateY: 225\n },\n A6: {\n rotateX: -45,\n rotateY: 180\n },\n A7: {\n rotateX: -45,\n rotateY: 135\n },\n B6: {\n rotateX: 0,\n rotateY: 180.1\n },\n B7: {\n rotateX: 0,\n rotateY: 135\n },\n C6: {\n rotateX: 45,\n rotateY: 180.1\n },\n C7: {\n rotateX: 45,\n rotateY: 135\n },\n A8: {\n rotateX: -45,\n rotateY: 90.1\n },\n B8: {\n rotateX: 0,\n rotateY: 90.1\n },\n C8: {\n rotateX: 45,\n rotateY: 90.1\n },\n D1: {\n rotateX: -90.1,\n rotateY: 0\n },\n E1: {\n rotateX: 90.1,\n rotateY: 0\n }\n};\n\nconst PluridViewcubeFace = properties => {\n const {face: face, faceText: faceText, mouseOver: mouseOver, hoveredZone: hoveredZone, setHoveredZone: setHoveredZone, activeZone: activeZone, setActiveZone: setActiveZone, generalTheme: generalTheme, interactionTheme: interactionTheme, configuration: configuration, dispatchRotateX: dispatchRotateX, dispatchRotateY: dispatchRotateY, dispatchSetAnimatedTransform: dispatchSetAnimatedTransform} = properties;\n const {global: global, elements: elements} = configuration;\n const {transparentUI: transparentUI} = global;\n const opaqueFace = elements.viewcube.opaque;\n const handleClick = type => {\n const faceType = `${face}${type}`;\n const zoneCode = zoneCodes[faceType];\n const transform = faceTransform[zoneCode];\n setActiveZone(zoneCode);\n dispatchSetAnimatedTransform(true);\n dispatchRotateX(transform.rotateX);\n dispatchRotateY(transform.rotateY);\n setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), 450);\n };\n return React__default[\"default\"].createElement(StyledPluridViewcubeFace, {\n theme: generalTheme,\n face: face,\n opaque: opaqueFace,\n mouseOver: mouseOver\n }, React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.topLeft,\n active: activeZone === zoneCodes[`${face}${faceTypes.topLeft}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.topLeft}`],\n onClick: () => handleClick(faceTypes.topLeft),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.topLeft}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.topCenter,\n active: activeZone === zoneCodes[`${face}${faceTypes.topCenter}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.topCenter}`],\n onClick: () => handleClick(faceTypes.topCenter),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.topCenter}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.topRight,\n active: activeZone === zoneCodes[`${face}${faceTypes.topRight}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.topRight}`],\n onClick: () => handleClick(faceTypes.topRight),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.topRight}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.middleLeft,\n active: activeZone === zoneCodes[`${face}${faceTypes.middleLeft}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.middleLeft}`],\n onClick: () => handleClick(faceTypes.middleLeft),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.middleLeft}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.middleCenter,\n active: activeZone === zoneCodes[`${face}${faceTypes.middleCenter}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.middleCenter}`],\n onClick: () => handleClick(faceTypes.middleCenter),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.middleCenter}`]),\n transparentUI: transparentUI\n }, faceText), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.middleRight,\n active: activeZone === zoneCodes[`${face}${faceTypes.middleRight}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.middleRight}`],\n onClick: () => handleClick(faceTypes.middleRight),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.middleRight}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.bottomLeft,\n active: activeZone === zoneCodes[`${face}${faceTypes.bottomLeft}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.bottomLeft}`],\n onClick: () => handleClick(faceTypes.bottomLeft),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.bottomLeft}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.bottomCenter,\n active: activeZone === zoneCodes[`${face}${faceTypes.bottomCenter}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.bottomCenter}`],\n onClick: () => handleClick(faceTypes.bottomCenter),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.bottomCenter}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.bottomRight,\n active: activeZone === zoneCodes[`${face}${faceTypes.bottomRight}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.bottomRight}`],\n onClick: () => handleClick(faceTypes.bottomRight),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.bottomRight}`]),\n transparentUI: transparentUI\n }));\n};\n\nconst mapStateToProperties$a = state => ({\n generalTheme: selectors.themes.getGeneralTheme(state),\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProperties$a = dispatch => ({\n dispatchRotateX: angleX => dispatch(actions.space.rotateX(angleX)),\n dispatchRotateY: angleY => dispatch(actions.space.rotateY(angleY)),\n dispatchSetAnimatedTransform: animated => dispatch(actions.space.setAnimatedTransform(animated))\n});\n\nconst ConnectedPluridViewcubeFace = reactRedux.connect(mapStateToProperties$a, mapDispatchToProperties$a, null, {\n context: StateContext\n})(PluridViewcubeFace);\n\nconst StyledPluridViewcubeModel = styled__default[\"default\"].div`\n grid-area: PVModel;\n`;\n\nconst StyledPluridViewcubeModelContainer = styled__default[\"default\"].div`\n perspective: 2000px;\n perspective-origin: 50% 50%;\n`;\n\nconst StyledPluridViewcubeModelCube = styled__default[\"default\"].div`\n transform-style: preserve-3d;\n width: 50px;\n height: 50px;\n`;\n\nconst {matrixArrayToCSSMatrix: matrixArrayToCSSMatrix, rotateMatrix: rotateMatrix, multiplyArrayOfMatrices: multiplyArrayOfMatrices, scaleMatrix: scaleMatrix, translateMatrix: translateMatrix$1} = pluridEngine.interaction.matrix;\n\nconst {degToRad: degToRad$1} = pluridEngine.interaction.quaternion;\n\nconst PluridViewcubeModel = properties => {\n const {mouseOver: mouseOver, stateLanguage: stateLanguage, spaceRotationX: spaceRotationX, spaceRotationY: spaceRotationY, stateAnimatedTransform: stateAnimatedTransform, stateTransformTime: stateTransformTime} = properties;\n const [hoveredZone, setHoveredZone] = React.useState(\"\");\n const [activeZone, setActiveZone] = React.useState(\"\");\n const handleMouseLeave = () => {\n setHoveredZone(\"\");\n };\n const computeTransform = () => {\n const offsets = {\n x: 32,\n y: 23,\n z: 0\n };\n const transformOrigins = {\n x: 0,\n y: 0,\n z: 0\n };\n const scale = 1;\n const rotationMatrix = rotateMatrix(degToRad$1(-spaceRotationX), degToRad$1(-spaceRotationY));\n const translationMatrix = translateMatrix$1(offsets.x, offsets.y, offsets.z);\n const scalationMatrix = scaleMatrix(scale);\n const transformMatrix = multiplyArrayOfMatrices([ translationMatrix, multiplyArrayOfMatrices([ translateMatrix$1(transformOrigins.x, transformOrigins.y, transformOrigins.z), rotationMatrix, translateMatrix$1(-transformOrigins.x, -transformOrigins.y, -transformOrigins.z) ]), scalationMatrix ]);\n const transform = matrixArrayToCSSMatrix(transformMatrix);\n return transform;\n };\n React.useEffect((() => {\n if (!hoveredZone) {\n setActiveZone(\"\");\n }\n }), [ spaceRotationX, spaceRotationY ]);\n const transform = computeTransform();\n return React__default[\"default\"].createElement(StyledPluridViewcubeModel, null, React__default[\"default\"].createElement(StyledPluridViewcubeModelContainer, null, React__default[\"default\"].createElement(StyledPluridViewcubeModelCube, {\n suppressHydrationWarning: true,\n style: {\n transform: transform,\n transition: mouseOver || stateAnimatedTransform ? `transform ${stateTransformTime}ms ease-in-out` : \"\"\n },\n onMouseLeave: () => handleMouseLeave()\n }, React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"front\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeFront),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"back\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeBack),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"left\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeLeft),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"right\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeRight),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"top\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeTop),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"base\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeBase),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }))));\n};\n\nconst mapStateToProperties$9 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n spaceRotationX: selectors.space.getRotationX(state),\n spaceRotationY: selectors.space.getRotationY(state),\n stateAnimatedTransform: selectors.space.getAnimatedTransform(state),\n stateTransformTime: selectors.space.getTransformTime(state)\n});\n\nconst mapDispatchToProperties$9 = dispatch => ({});\n\nconst ConnectedPluridViewcubeModel = reactRedux.connect(mapStateToProperties$9, mapDispatchToProperties$9, null, {\n context: StateContext\n})(PluridViewcubeModel);\n\nconst PluridViewcube = properties => {\n const {stateConfiguration: stateConfiguration, stateInteractionTheme: stateInteractionTheme, stateTransformTime: stateTransformTime, dispatchRotateXWith: dispatchRotateXWith, dispatchRotateYWith: dispatchRotateYWith, dispatchSetAnimatedTransform: dispatchSetAnimatedTransform, dispatchSpaceResetTransform: dispatchSpaceResetTransform} = properties;\n const {elements: elements, space: space} = stateConfiguration;\n const {viewcube: viewcube} = elements;\n const {buttons: buttons, conceal: conceal} = viewcube;\n const {fadeInTime: fadeInTime} = space;\n const showViewcube = viewcube.show;\n const [mouseOver, setMouseOver] = React.useState(false);\n const [isMounted, setIsMounted] = React.useState(false);\n const animatedRotate = (type, value) => {\n dispatchSetAnimatedTransform(true);\n switch (type) {\n case \"rotateX\":\n dispatchRotateXWith(value);\n break;\n\n case \"rotateY\":\n dispatchRotateYWith(value);\n break;\n }\n setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), stateTransformTime);\n };\n const animatedReset = event => {\n if (event.ctrlKey || event.metaKey) {\n return;\n }\n dispatchSetAnimatedTransform(true);\n dispatchSpaceResetTransform();\n setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), stateTransformTime);\n };\n React.useEffect((() => {\n setIsMounted(true);\n }), []);\n if (!showViewcube) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledPluridViewcube, {\n onMouseEnter: () => setMouseOver(true),\n onMouseLeave: () => setMouseOver(false),\n onMouseMove: () => !mouseOver ? setMouseOver(true) : null,\n conceal: conceal,\n mouseOver: mouseOver,\n isMounted: isMounted,\n fadeInTime: fadeInTime,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_VIEWCUBE\n }, React__default[\"default\"].createElement(ConnectedPluridViewcubeModel, {\n mouseOver: mouseOver\n }), mouseOver && buttons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridViewcubeArrow, {\n style: {\n gridArea: \"PVRotateUp\"\n }\n }, React__default[\"default\"].createElement(StyledPluridViewcubeArrowIcon, {\n theme: stateInteractionTheme,\n onClick: () => animatedRotate(\"rotateX\", -90.1)\n }, \"▲\")), React__default[\"default\"].createElement(StyledPluridViewcubeArrow, {\n theme: stateInteractionTheme,\n style: {\n gridArea: \"PVRotateDown\"\n }\n }, React__default[\"default\"].createElement(StyledPluridViewcubeArrowIcon, {\n theme: stateInteractionTheme,\n onClick: () => animatedRotate(\"rotateX\", 90.1)\n }, \"▼\")), React__default[\"default\"].createElement(StyledPluridViewcubeArrow, {\n theme: stateInteractionTheme,\n style: {\n gridArea: \"PVRotateLeft\"\n }\n }, React__default[\"default\"].createElement(StyledPluridViewcubeArrowIcon, {\n theme: stateInteractionTheme,\n onClick: () => animatedRotate(\"rotateY\", 90.1)\n }, \"◀\")), React__default[\"default\"].createElement(StyledPluridViewcubeArrow, {\n theme: stateInteractionTheme,\n style: {\n gridArea: \"PVRotateRight\"\n }\n }, React__default[\"default\"].createElement(StyledPluridViewcubeArrowIcon, {\n theme: stateInteractionTheme,\n onClick: () => animatedRotate(\"rotateY\", -90.1)\n }, \"▶\")), React__default[\"default\"].createElement(StyledFitView, {\n onClick: animatedReset\n }, React__default[\"default\"].createElement(pluridIconsReact.PluridIconGlobal, null))));\n};\n\nconst mapStateToProperties$8 = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state),\n stateTransformTime: selectors.space.getTransformTime(state)\n});\n\nconst mapDispatchToProperties$8 = dispatch => ({\n dispatchRotateXWith: value => dispatch(actions.space.rotateXWith(value)),\n dispatchRotateYWith: value => dispatch(actions.space.rotateYWith(value)),\n dispatchSetAnimatedTransform: animated => dispatch(actions.space.setAnimatedTransform(animated)),\n dispatchSpaceResetTransform: () => dispatch(actions.space.spaceResetTransform())\n});\n\nconst ConnectedPluridViewcube = reactRedux.connect(mapStateToProperties$8, mapDispatchToProperties$8, null, {\n context: StateContext\n})(PluridViewcube);\n\nconst PluridPlanesView = properties => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridSpace, null), React__default[\"default\"].createElement(ConnectedOrigin, null), React__default[\"default\"].createElement(ConnectedPluridToolbar, null), React__default[\"default\"].createElement(ConnectedPluridViewcube, null));\n\nconst mapStateToProps$2 = state => ({});\n\nconst mapDispatchToProps$2 = dispatch => ({});\n\nconst ConnectedPluridPlanesView = reactRedux.connect(mapStateToProps$2, mapDispatchToProps$2, null, {\n context: StateContext\n})(PluridPlanesView);\n\nconst handleView = view => {\n if (view.length === 0) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(ConnectedPluridPlanesView, null);\n};\n\nconst {getRegisteredPlanes: getRegisteredPlanes} = pluridEngine.planes;\n\nconst PluridView = properties => {\n const {planesRegistrar: planesRegistrar, customPlane: customPlane, planeContext: planeContext, planeContextValue: planeContextValue, pubsub: pubsub, planeNotFound: planeNotFound, planeRenderError: planeRenderError, matchedRoute: matchedRoute, stateConfiguration: stateConfiguration, stateTransform: stateTransform, stateSpaceView: stateSpaceView, stateTree: stateTree, dispatch: dispatch, dispatchSetConfiguration: dispatchSetConfiguration, dispatchSetGeneralTheme: dispatchSetGeneralTheme, dispatchSetInteractionTheme: dispatchSetInteractionTheme, dispatchSetSpaceLocation: dispatchSetSpaceLocation, dispatchSetAnimatedTransform: dispatchSetAnimatedTransform, dispatchSetTransformTime: dispatchSetTransformTime, dispatchSetTree: dispatchSetTree, dispatchRotateXWith: dispatchRotateXWith, dispatchRotateX: dispatchRotateX, dispatchRotateYWith: dispatchRotateYWith, dispatchRotateY: dispatchRotateY, dispatchTranslateXWith: dispatchTranslateXWith, dispatchTranslateYWith: dispatchTranslateYWith, dispatchScaleUpWith: dispatchScaleUpWith, dispatchScaleDownWith: dispatchScaleDownWith, dispatchSpaceSetViewSize: dispatchSpaceSetViewSize, dispatchSpaceSetView: dispatchSpaceSetView} = properties;\n const viewElement = React.useRef(null);\n const [pluridPubSub, setPluridPubSub] = React.useState(pubsub ? [ pubsub ] : []);\n const shortcutsCallback = React.useCallback((event => {\n const {transformLocks: transformLocks} = stateConfiguration.space;\n handleGlobalShortcuts(dispatch, event, stateConfiguration.space.firstPerson, transformLocks);\n }), [ stateConfiguration.space.firstPerson, stateConfiguration.space.transformLocks, dispatch ]);\n const wheelCallback = React.useCallback((event => {\n const {transformMode: transformMode, transformLocks: transformLocks} = stateConfiguration.space;\n const transformModes = {\n rotation: transformMode === pluridData.TRANSFORM_MODES.ROTATION,\n translation: transformMode === pluridData.TRANSFORM_MODES.TRANSLATION,\n scale: transformMode === pluridData.TRANSFORM_MODES.SCALE\n };\n handleGlobalWheel(dispatch, event, transformModes, transformLocks);\n }), [ dispatch, stateConfiguration.space.transformMode, stateConfiguration.space.transformLocks ]);\n const treeUpdate = (view, configuration = stateConfiguration) => {\n const planes = getRegisteredPlanes(planesRegistrar);\n const spaceTree = new pluridEngine.space.tree.Tree({\n planes: planes,\n configuration: configuration,\n view: view\n });\n const computedTree = spaceTree.compute();\n for (const statePlane of stateTree) {\n for (const [index, computedPlane] of computedTree.entries()) {\n if (statePlane.route === computedPlane.route) {\n if (statePlane.children) {\n computedTree[index].children = statePlane.children;\n }\n }\n }\n }\n dispatchSetTree(computedTree);\n };\n const treeUpdateCallback = React.useCallback((() => {\n treeUpdate(stateSpaceView);\n }), [ stateSpaceView, stateConfiguration ]);\n const handlePubSubSubscribe = pubsub => {\n const configurationIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.CONFIGURATION,\n callback: data => {\n if (data.internal) {\n return;\n }\n const computedConfiguration = pluridEngine.general.configuration.merge(data, stateConfiguration);\n if (typeof computedConfiguration.global.theme === \"object\") {\n if (typeof computedConfiguration.global.theme.general === \"string\") {\n dispatchSetGeneralTheme(themes__default[\"default\"][computedConfiguration.global.theme.general]);\n } else {\n dispatchSetGeneralTheme(computedConfiguration.global.theme.general);\n }\n if (typeof computedConfiguration.global.theme.interaction === \"string\") {\n dispatchSetInteractionTheme(themes__default[\"default\"][computedConfiguration.global.theme.interaction]);\n } else {\n dispatchSetInteractionTheme(computedConfiguration.global.theme.interaction);\n }\n } else if (typeof computedConfiguration.global.theme === \"string\") {\n dispatchSetGeneralTheme(themes__default[\"default\"][computedConfiguration.global.theme]);\n dispatchSetInteractionTheme(themes__default[\"default\"][computedConfiguration.global.theme]);\n }\n dispatchSetConfiguration(computedConfiguration);\n }\n });\n const spaceTransformIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSFORM,\n callback: data => {\n const {value: value, internal: internal} = data;\n if (internal) {\n return;\n }\n dispatchSetSpaceLocation(value);\n }\n });\n const spaceAnimatedTransformIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ANIMATED_TRANSFORM,\n callback: data => {\n const {value: value} = data;\n dispatchSetAnimatedTransform(value.active);\n if (value.time) {\n dispatchSetTransformTime(value.time);\n } else {\n dispatchSetTransformTime(450);\n }\n }\n });\n const spaceRotateXWithIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_X_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchRotateXWith(value);\n }\n });\n const spaceRotateXToIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_X_TO,\n callback: data => {\n const {value: value} = data;\n dispatchRotateX(value);\n }\n });\n const spaceRotateYWithIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_Y_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchRotateYWith(value);\n }\n });\n const spaceRotateYToIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_Y_TO,\n callback: data => {\n const {value: value} = data;\n dispatchRotateY(value);\n }\n });\n const spaceTranslateXWithIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_X_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchTranslateXWith(value);\n }\n });\n const spaceTranslateYWithIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_Y_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchTranslateYWith(value);\n }\n });\n const viewAddPlaneIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.VIEW_ADD_PLANE,\n callback: data => {\n const {plane: plane} = data;\n const updatedView = [ ...stateSpaceView, plane ];\n dispatchSpaceSetView(updatedView);\n treeUpdate(updatedView);\n }\n });\n const viewSetPlanesIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.VIEW_SET_PLANES,\n callback: data => {\n const {view: view} = data;\n dispatchSpaceSetView([ ...view ]);\n treeUpdate(view);\n }\n });\n const viewRemovePlaneIndex = pubsub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.VIEW_REMOVE_PLANE,\n callback: data => {\n const {plane: plane} = data;\n const updatedView = stateSpaceView.filter((view => {\n if (typeof view === \"string\") {\n return view === plane;\n }\n return true;\n }));\n dispatchSpaceSetView(updatedView);\n treeUpdate(updatedView);\n }\n });\n return () => {\n pubsub.unsubscribe(configurationIndex, pluridData.PLURID_PUBSUB_TOPIC.CONFIGURATION);\n pubsub.unsubscribe(spaceTransformIndex, pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSFORM);\n pubsub.unsubscribe(spaceAnimatedTransformIndex, pluridData.PLURID_PUBSUB_TOPIC.SPACE_ANIMATED_TRANSFORM);\n pubsub.unsubscribe(spaceRotateXWithIndex, pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_X_WITH);\n pubsub.unsubscribe(spaceRotateXToIndex, pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_X_TO);\n pubsub.unsubscribe(spaceRotateYWithIndex, pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_Y_WITH);\n pubsub.unsubscribe(spaceRotateYToIndex, pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_Y_TO);\n pubsub.unsubscribe(spaceTranslateXWithIndex, pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_X_WITH);\n pubsub.unsubscribe(spaceTranslateYWithIndex, pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_Y_WITH);\n pubsub.unsubscribe(viewAddPlaneIndex, pluridData.PLURID_PUBSUB_TOPIC.VIEW_ADD_PLANE);\n pubsub.unsubscribe(viewSetPlanesIndex, pluridData.PLURID_PUBSUB_TOPIC.VIEW_SET_PLANES);\n pubsub.unsubscribe(viewRemovePlaneIndex, pluridData.PLURID_PUBSUB_TOPIC.VIEW_REMOVE_PLANE);\n };\n };\n const handlePubSubPublish = pubsub => {\n const internalTransform = {\n value: Object.assign({}, stateTransform),\n internal: true\n };\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSFORM,\n data: internalTransform\n });\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.CONFIGURATION,\n data: Object.assign(Object.assign({}, stateConfiguration), {\n internal: true\n })\n });\n };\n const registerPubSub = pubsub => {\n const pluridPubSubs = [ ...pluridPubSub, pubsub ];\n setPluridPubSub(pluridPubSubs);\n };\n const handleSwipe = event => {\n const {transformMode: transformMode} = stateConfiguration.space;\n if (transformMode === pluridData.TRANSFORM_MODES.ALL) {\n return;\n }\n const {velocity: velocity, distance: distance, direction: direction} = event;\n const rotationMode = transformMode === pluridData.TRANSFORM_MODES.ROTATION;\n const translationMode = transformMode === pluridData.TRANSFORM_MODES.TRANSLATION;\n const scalationMode = transformMode === pluridData.TRANSFORM_MODES.SCALE;\n dispatchSetAnimatedTransform(true);\n switch (direction) {\n case 2:\n if (rotationMode) {\n dispatchRotateYWith(velocity * 60);\n }\n if (translationMode) {\n dispatchTranslateXWith(-1 * distance);\n }\n break;\n\n case 4:\n if (rotationMode) {\n dispatchRotateYWith(velocity * 60);\n }\n if (translationMode) {\n dispatchTranslateXWith(distance);\n }\n break;\n\n case 8:\n if (rotationMode) {\n dispatchRotateXWith(velocity * 60);\n }\n if (translationMode) {\n dispatchTranslateYWith(-1 * distance);\n }\n if (scalationMode) {\n dispatchScaleUpWith(velocity);\n }\n break;\n\n case 16:\n if (rotationMode) {\n dispatchRotateXWith(velocity * 60);\n }\n if (translationMode) {\n dispatchTranslateYWith(distance);\n }\n if (scalationMode) {\n dispatchScaleDownWith(velocity);\n }\n break;\n }\n setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), 450);\n };\n const handlePan = event => {\n const {transformMode: transformMode} = stateConfiguration.space;\n if (transformMode === pluridData.TRANSFORM_MODES.ALL) {\n return;\n }\n const {velocity: velocity, distance: distance, direction: direction} = event;\n const rotationMode = transformMode === pluridData.TRANSFORM_MODES.ROTATION;\n const translationMode = transformMode === pluridData.TRANSFORM_MODES.TRANSLATION;\n const scalationMode = transformMode === pluridData.TRANSFORM_MODES.SCALE;\n const rotationVelocity = velocity * 20;\n const translationVelocity = distance / 5;\n const scaleVelocity = velocity / 4;\n switch (direction) {\n case 2:\n if (rotationMode) {\n dispatchRotateYWith(rotationVelocity);\n }\n if (translationMode) {\n dispatchTranslateXWith(-1 * translationVelocity);\n }\n break;\n\n case 4:\n if (rotationMode) {\n dispatchRotateYWith(rotationVelocity);\n }\n if (translationMode) {\n dispatchTranslateXWith(translationVelocity);\n }\n break;\n\n case 8:\n if (rotationMode) {\n dispatchRotateXWith(rotationVelocity);\n }\n if (translationMode) {\n dispatchTranslateYWith(-1 * translationVelocity);\n }\n if (scalationMode) {\n dispatchScaleUpWith(scaleVelocity);\n }\n break;\n\n case 16:\n if (rotationMode) {\n dispatchRotateXWith(rotationVelocity);\n }\n if (translationMode) {\n dispatchTranslateYWith(translationVelocity);\n }\n if (scalationMode) {\n dispatchScaleDownWith(scaleVelocity);\n }\n break;\n }\n };\n React.useEffect((() => {\n if (viewElement.current) {\n viewElement.current.addEventListener(\"keydown\", shortcutsCallback, {\n passive: false\n });\n viewElement.current.addEventListener(\"wheel\", wheelCallback, {\n passive: false\n });\n }\n return () => {\n if (viewElement.current) {\n viewElement.current.removeEventListener(\"keydown\", shortcutsCallback);\n viewElement.current.removeEventListener(\"wheel\", wheelCallback);\n }\n };\n }), [ viewElement.current, stateConfiguration.space.transformMode, stateConfiguration.space.firstPerson ]);\n React.useEffect((() => {\n const handleResize = pluridFunctions.meta.debounce((() => {\n if (viewElement && viewElement.current) {\n const width = viewElement.current.offsetWidth;\n const height = viewElement.current.offsetHeight;\n dispatchSpaceSetViewSize({\n width: width,\n height: height\n });\n }\n }), 150);\n handleResize();\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }), []);\n React.useEffect((() => {\n window.addEventListener(\"resize\", treeUpdateCallback);\n return () => {\n window.removeEventListener(\"resize\", treeUpdateCallback);\n };\n }), [ stateSpaceView, stateConfiguration ]);\n React.useEffect((() => {\n if (typeof window === \"undefined\") {\n return;\n }\n let touch;\n const handleTouch = () => __awaiter(void 0, void 0, void 0, (function*() {\n const HammerImport = yield loadHammer();\n const Hammer = HammerImport.default;\n const {transformTouch: transformTouch} = stateConfiguration.space;\n delete Hammer.defaults.cssProps.userSelect;\n delete Hammer.defaults.cssProps.userDrag;\n delete Hammer.defaults.cssProps.tapHighlightColor;\n delete Hammer.defaults.cssProps.touchSelect;\n if (!viewElement.current) {\n return;\n }\n touch = new Hammer(viewElement.current);\n touch.get(\"pan\").set({\n direction: Hammer.DIRECTION_ALL\n });\n touch.get(\"swipe\").set({\n direction: Hammer.DIRECTION_ALL\n });\n if (transformTouch === pluridData.TRANSFORM_TOUCHES.PAN) {\n touch.on(\"pan\", handlePan);\n } else {\n touch.on(\"swipe\", handleSwipe);\n }\n }));\n handleTouch();\n return () => {\n if (!touch) {\n return;\n }\n const {transformTouch: transformTouch} = stateConfiguration.space;\n if (transformTouch === pluridData.TRANSFORM_TOUCHES.PAN) {\n touch.off(\"pan\", handlePan);\n } else {\n touch.off(\"swipe\", handleSwipe);\n }\n };\n }), [ viewElement.current, stateConfiguration.space.transformTouch, stateConfiguration.space.transformMode ]);\n React.useEffect((() => {\n const handleGamepadConnect = event => {\n const gamepad = navigator.getGamepads()[event.gamepad.index];\n if (!gamepad) {\n return;\n }\n };\n const handleGamepadDisconnect = event => {\n const gamepad = navigator.getGamepads()[event.gamepad.index];\n if (!gamepad) {\n return;\n }\n };\n window.addEventListener(\"gamepadconnected\", handleGamepadConnect);\n window.addEventListener(\"gamepaddisconnected\", handleGamepadDisconnect);\n return () => {\n window.removeEventListener(\"gamepadconnected\", handleGamepadConnect);\n window.removeEventListener(\"gamepaddisconnected\", handleGamepadDisconnect);\n };\n }), []);\n React.useEffect((() => {\n const unsubscribers = [];\n for (const pubsub of pluridPubSub) {\n const unsubscriber = handlePubSubSubscribe(pubsub);\n unsubscribers.push(unsubscriber);\n }\n return () => {\n for (const unsubscriber of unsubscribers) {\n unsubscriber();\n }\n };\n }), [ pluridPubSub.length ]);\n React.useEffect((() => {\n for (const pubsub of pluridPubSub) {\n handlePubSubPublish(pubsub);\n }\n }), [ pluridPubSub.length, stateConfiguration, stateTransform ]);\n React.useEffect((() => {\n treeUpdateCallback();\n }), []);\n const pluridContext = {\n planesRegistrar: planesRegistrar,\n planeContext: planeContext,\n planeContextValue: planeContextValue,\n customPlane: customPlane,\n planeNotFound: planeNotFound,\n planeRenderError: planeRenderError,\n matchedRoute: matchedRoute,\n registerPubSub: registerPubSub\n };\n const viewContainer = handleView(stateSpaceView);\n return React__default[\"default\"].createElement(StyledView, {\n ref: viewElement,\n tabIndex: 0,\n transformMode: stateConfiguration.space.transformMode,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_VIEW\n }, React__default[\"default\"].createElement(GlobalStyle, null), React__default[\"default\"].createElement(Context.Provider, {\n value: pluridContext\n }, viewContainer));\n};\n\nconst mapStateToProperties$7 = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateTransform: selectors.space.getTransform(state),\n stateTree: selectors.space.getTree(state),\n stateSpaceLoading: selectors.space.getLoading(state),\n stateSpaceView: selectors.space.getView(state)\n});\n\nconst mapDispatchToProperties$7 = dispatch => ({\n dispatch: dispatch,\n dispatchSetConfiguration: configuration => dispatch(actions.configuration.setConfiguration(configuration)),\n dispatchSetConfigurationMicro: () => dispatch(actions.configuration.setConfigurationMicro()),\n dispatchSpaceSetViewSize: viewSize => dispatch(actions.space.setViewSize(viewSize)),\n dispatchSetSpaceLoading: loading => dispatch(actions.space.setSpaceLoading(loading)),\n dispatchSetAnimatedTransform: animated => dispatch(actions.space.setAnimatedTransform(animated)),\n dispatchSetTransformTime: value => dispatch(actions.space.setTransformTime(value)),\n dispatchSetSpaceLocation: spaceLocation => dispatch(actions.space.setSpaceLocation(spaceLocation)),\n dispatchSetInitialTree: tree => dispatch(actions.space.setInitialTree(tree)),\n dispatchSetTree: tree => dispatch(actions.space.setTree(tree)),\n dispatchSetGeneralTheme: theme => dispatch(actions.themes.setGeneralTheme(theme)),\n dispatchSetInteractionTheme: theme => dispatch(actions.themes.setInteractionTheme(theme)),\n dispatchRotateX: value => dispatch(actions.space.rotateX(value)),\n dispatchRotateXWith: value => dispatch(actions.space.rotateXWith(value)),\n dispatchRotateY: value => dispatch(actions.space.rotateY(value)),\n dispatchRotateYWith: value => dispatch(actions.space.rotateYWith(value)),\n dispatchTranslateXWith: value => dispatch(actions.space.translateXWith(value)),\n dispatchTranslateYWith: value => dispatch(actions.space.translateYWith(value)),\n dispatchScaleUpWith: value => dispatch(actions.space.scaleUpWith(value)),\n dispatchScaleDownWith: value => dispatch(actions.space.scaleDownWith(value)),\n dispatchSpaceSetView: view => dispatch(actions.space.spaceSetView(view))\n});\n\nconst ConnectedView = reactRedux.connect(mapStateToProperties$7, mapDispatchToProperties$7, null, {\n context: StateContext\n})(PluridView);\n\nconst {registerPlanes: registerPlanes} = pluridEngine.planes;\n\nclass PluridApplication extends React.Component {\n constructor(properties, context) {\n super(properties);\n this.storeID = properties.id || \"default\";\n this.context = context;\n const defaultStore = this.computeStore();\n this.store = store(defaultStore);\n this.subscribeStore();\n }\n componentDidUpdate() {\n const updatedStore = this.computeStore();\n this.store.dispatch({\n type: \"SET_STATE\",\n payload: updatedStore\n });\n }\n componentWillUnmount() {\n if (this.storeUnubscriber) {\n this.storeUnubscriber();\n }\n }\n render() {\n return React__default[\"default\"].createElement(reactRedux.Provider, {\n store: this.store,\n context: StateContext\n }, React__default[\"default\"].createElement(ConnectedView, Object.assign({}, this.props)));\n }\n computeStore() {\n const {view: view, planes: planes, configuration: configuration, precomputedState: precomputedState, planesRegistrar: planesRegistrar, id: id, useLocalStorage: useLocalStorage} = this.props;\n registerPlanes(planes, planesRegistrar);\n const currentState = this.store ? this.store.getState() : undefined;\n const localState = pluridEngine.state.local.load(this.storeID, useLocalStorage);\n const contextState = id && this.context && this.context.states[id] ? this.context.states[id] : undefined;\n const store = pluridEngine.state.compute(view, configuration, planesRegistrar, currentState, localState, precomputedState, contextState);\n return store;\n }\n subscribeStore() {\n if (!this.store) {\n return;\n }\n if (typeof localStorage === \"undefined\") {\n return;\n }\n if (!this.props.useLocalStorage) {\n return;\n }\n this.storeUnubscriber = this.store.subscribe((() => {\n const state = this.store.getState();\n const stateData = JSON.stringify(state);\n localStorage.setItem(\"pluridState-\" + this.storeID, stateData);\n }));\n }\n}\n\nPluridApplication.contextType = PluridContext;\n\nconst StyledSpaces = styled__default[\"default\"].div`\n scroll-snap-type: ${properties => {\n const {alignment: alignment, snapType: snapType} = properties;\n if (snapType === \"none\") {\n return \"none\";\n }\n return alignment + \" \" + snapType;\n}};\n\n flex-direction: ${properties => {\n const {alignment: alignment} = properties;\n if (alignment === \"x\") {\n return \"row\";\n }\n return \"column\";\n}};\n\n outline: none;\n overflow: auto;\n /* display: flex; */\n height: 100vh;\n height: -webkit-fill-available;\n width: 100vw;\n`;\n\nconst {resolvePluridRoutePlaneData: resolvePluridRoutePlaneData, Registrar: PluridPlanesRegistrar$1} = pluridEngine.planes;\n\nconst computeIndexedPlanes = (routes, protocol, host) => {\n const indexedPlanes = new Map;\n for (const path of routes) {\n if (path.planes) {\n for (const plane of path.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const pathName = path.value === \"/\" ? \"p\" : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = \"s\";\n const universeName = \"u\";\n const clusterName = \"c\";\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const planeAddressElements = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const planeAddress = planeAddressElements.join(\"://\");\n const indexedPlane = {\n protocol: protocol,\n host: host,\n path: pathName,\n space: spaceName,\n universe: universeName,\n cluster: clusterName,\n plane: planeName,\n component: planeData.component,\n route: planeAddress\n };\n indexedPlanes.set(planeAddress, indexedPlane);\n }\n }\n if (!path.spaces) {\n const pathName = path.value === \"/\" ? \"p\" : pluridEngine.utilities.cleanPathElement(path.value);\n const planeAddressElements = [ protocol, host, pathName ];\n const planeAddress = planeAddressElements.join(\"://\");\n const indexedPlane = {\n protocol: protocol,\n host: host,\n path: pathName,\n space: \"\",\n universe: \"\",\n cluster: \"\",\n plane: \"\",\n component: path.exterior || (() => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null)),\n route: planeAddress\n };\n indexedPlanes.set(planeAddress, indexedPlane);\n continue;\n }\n for (const space of path.spaces) {\n if (!space.universes) {\n continue;\n }\n for (const universe of space.universes) {\n if (!universe.clusters) {\n continue;\n }\n for (const cluster of universe.clusters) {\n for (const plane of cluster.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const pathName = path.value === \"/\" ? \"p\" : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = space.value === \"default\" ? \"s\" : pluridEngine.utilities.cleanPathElement(space.value);\n const universeName = universe.value === \"default\" ? \"u\" : pluridEngine.utilities.cleanPathElement(universe.value);\n const clusterName = cluster.value === \"default\" ? \"c\" : pluridEngine.utilities.cleanPathElement(cluster.value);\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const planeAddressElements = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const planeAddress = planeAddressElements.join(\"://\");\n const indexedPlane = {\n protocol: protocol,\n host: host,\n path: pathName,\n space: spaceName,\n universe: universeName,\n cluster: clusterName,\n plane: planeName,\n component: planeData.component,\n route: planeAddress\n };\n indexedPlanes.set(planeAddress, indexedPlane);\n }\n }\n }\n }\n }\n return indexedPlanes;\n};\n\nconst collectApplicationsFromPath = (isoMatch, protocol, host, globals) => __awaiter(void 0, void 0, void 0, (function*() {\n const path = {\n planes: [],\n spaces: [],\n view: [],\n value: \"\"\n };\n if (isoMatch.kind === \"Route\") {\n let routeData = isoMatch.data;\n if (isoMatch.data.resolver) {\n routeData = yield isoMatch.data.resolver(globals);\n }\n path.planes = routeData.planes || [];\n path.spaces = routeData.spaces || [];\n path.view = routeData.view || [];\n path.value = isoMatch.data.value || \"\";\n }\n const {planes: planes, spaces: spaces, view: view} = path;\n const plurids = [];\n if (spaces) {\n for (const space of spaces) {\n const planes = [];\n const view = [];\n if (space.planes) {\n for (const plane of space.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n pluridEngine.utilities.cleanPathElement(planeData.value);\n }\n }\n if (space.universes) {\n for (const universe of space.universes) {\n if (universe.clusters) {\n for (const cluster of universe.clusters) {\n for (const plane of cluster.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n universe.value === pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE : pluridEngine.utilities.cleanPathElement(universe.value);\n cluster.value === pluridData.PLURID_ROUTE_DEFAULT_CLUSTER_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_CLUSTER : pluridEngine.utilities.cleanPathElement(cluster.value);\n pluridEngine.utilities.cleanPathElement(planeData.value);\n }\n }\n }\n if (universe.planes) {\n for (const plane of universe.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n universe.value === pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE : pluridEngine.utilities.cleanPathElement(universe.value);\n pluridEngine.utilities.cleanPathElement(planeData.value);\n }\n }\n }\n }\n const pluridApplication = {\n planes: planes,\n view: view\n };\n plurids.push(pluridApplication);\n }\n }\n if (planes) {\n const pluridPlanes = [];\n for (const plane of planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n pluridEngine.utilities.cleanPathElement(planeData.value);\n }\n const pluridApplication = {\n planes: pluridPlanes,\n view: view || []\n };\n plurids.push(pluridApplication);\n }\n return plurids;\n}));\n\nconst gatherPluridPlanes = (routes, planes) => {\n const pluridPlanes = [];\n for (const route of routes) {\n if (route.planes) {\n for (const plane of route.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const planeRoute = planeData.link ? planeData.link : planeData.value.startsWith(\"/\") ? planeData.value : route.value + \"/\" + planeData.value;\n const pluridPlane = {\n route: planeRoute,\n component: planeData.component\n };\n pluridPlanes.push(pluridPlane);\n }\n }\n if (route.spaces) ;\n }\n if (planes) {\n for (const plane of planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const pluridPlane = {\n route: planeData.value,\n component: planeData.component\n };\n pluridPlanes.push(pluridPlane);\n }\n }\n return pluridPlanes;\n};\n\nconst renderMultispace = matchedRoute => {\n var _a, _b, _c, _d, _e, _f;\n if (matchedRoute.kind !== \"Route\") {\n return () => () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const protocol = \"http\";\n const host = \"localhost:63000\";\n const {match: match, data: path} = matchedRoute;\n const {parameters: parameters, query: query} = match;\n const pluridRouteProperty = {\n value: match.value,\n parameters: parameters,\n query: query\n };\n const {exterior: exterior, planes: planes, spaces: spaces, slotted: slotted} = matchedRoute.data;\n const multispaceAlignment = ((_a = path.multispace) === null || _a === void 0 ? void 0 : _a.alignment) || \"y\";\n const multispaceSnapType = ((_b = path.multispace) === null || _b === void 0 ? void 0 : _b.snapType) || \"mandatory\";\n let PluridExterior = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n if (isReactRenderable(exterior)) {\n PluridExterior = exterior;\n }\n let PluridSpaces = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n const spacesArray = [];\n if (spaces) {\n for (const space of spaces) {\n const planes = [];\n const view = [];\n if (space.planes) {\n for (const plane of space.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const {component: component} = planeData;\n const pathName = path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n const universeName = pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE;\n const clusterName = pluridData.PLURID_ROUTE_DEFAULT_CLUSTER;\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const pathDivisions = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const fullPath = pathDivisions.join(pluridData.PLURID_ROUTE_SEPARATOR);\n const pluridPlane = {\n component: component,\n route: fullPath\n };\n planes.push(pluridPlane);\n view.push(fullPath);\n }\n }\n if (space.universes) {\n for (const universe of space.universes) {\n if (universe.clusters) {\n for (const cluster of universe.clusters) {\n for (const plane of cluster.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const {component: component} = planeData;\n const pathName = path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n const universeName = universe.value === pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE : pluridEngine.utilities.cleanPathElement(universe.value);\n const clusterName = cluster.value === pluridData.PLURID_ROUTE_DEFAULT_CLUSTER_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_CLUSTER : pluridEngine.utilities.cleanPathElement(cluster.value);\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const pathDivisions = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const fullPath = pathDivisions.join(pluridData.PLURID_ROUTE_SEPARATOR);\n const pluridPlane = {\n component: component,\n route: fullPath\n };\n planes.push(pluridPlane);\n if (!path.view) {\n view.push(fullPath);\n } else {\n if (path.view.includes(planeData.value)) {\n view.push(fullPath);\n }\n }\n }\n }\n }\n if (universe.planes) {\n for (const plane of universe.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const {component: component} = planeData;\n const pathName = path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n const universeName = universe.value === pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE : pluridEngine.utilities.cleanPathElement(universe.value);\n const clusterName = pluridData.PLURID_ROUTE_DEFAULT_CLUSTER;\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const pathDivisions = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const fullPath = pathDivisions.join(pluridData.PLURID_ROUTE_SEPARATOR);\n const pluridPlane = {\n component: component,\n route: fullPath\n };\n planes.push(pluridPlane);\n view.push(fullPath);\n }\n }\n }\n }\n const pluridPlanesRegistrar = new PluridPlanesRegistrar$1;\n const App = React__default[\"default\"].createElement(PluridApplication, {\n key: pluridFunctions.uuid.generate(),\n id: path.value,\n planes: planes,\n view: view,\n configuration: space.configuration,\n planesRegistrar: pluridPlanesRegistrar\n });\n spacesArray.push(App);\n }\n }\n if (planes) {\n const pluridPlanes = [];\n const view = [];\n for (const plane of planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const {component: component} = planeData;\n const pathName = path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = pluridData.PLURID_ROUTE_DEFAULT_SPACE;\n const universeName = pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE;\n const clusterName = pluridData.PLURID_ROUTE_DEFAULT_CLUSTER;\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const pathDivisions = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const fullPath = pathDivisions.join(pluridData.PLURID_ROUTE_SEPARATOR);\n const pluridPlane = {\n component: component,\n route: fullPath\n };\n pluridPlanes.push(pluridPlane);\n if (!path.view) {\n view.push(fullPath);\n } else {\n if (path.view.includes(planeData.value)) {\n view.push(fullPath);\n }\n }\n }\n const App = React__default[\"default\"].createElement(PluridApplication, {\n key: pluridFunctions.uuid.generate(),\n id: path.value,\n planes: pluridPlanes,\n view: view,\n configuration: path.defaultConfiguration\n });\n spacesArray.push(App);\n }\n let MultispaceHeader;\n let MultispaceFooter;\n if (isReactRenderable((_c = path.multispace) === null || _c === void 0 ? void 0 : _c.header)) {\n MultispaceHeader = (_d = path.multispace) === null || _d === void 0 ? void 0 : _d.header;\n }\n if (isReactRenderable((_e = path.multispace) === null || _e === void 0 ? void 0 : _e.footer)) {\n MultispaceFooter = (_f = path.multispace) === null || _f === void 0 ? void 0 : _f.footer;\n }\n PluridSpaces = () => React__default[\"default\"].createElement(StyledSpaces, {\n alignment: multispaceAlignment,\n snapType: multispaceSnapType,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_MULTISPACE\n }, MultispaceHeader && React__default[\"default\"].createElement(MultispaceHeader, {\n plurid: pluridRouteProperty\n }), spacesArray, MultispaceFooter && React__default[\"default\"].createElement(MultispaceFooter, {\n plurid: pluridRouteProperty\n }));\n return () => {\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, exterior && React__default[\"default\"].createElement(PluridExterior, {\n spaces: slotted ? spacesArray : undefined,\n plurid: pluridRouteProperty\n }), (spaces || planes) && !slotted && React__default[\"default\"].createElement(PluridSpaces, null));\n return PluridRoute;\n };\n};\n\nconst computePluridRoute = (matchedRoute, planesRegistrar, isoMatcher, directPlane) => {\n if (directPlane || (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.kind) === \"RoutePlane\") {\n const match = directPlane || matchedRoute;\n if (!match) {\n return () => () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const DirectPlane = renderDirectPlane(match, planesRegistrar);\n return DirectPlane;\n }\n if (!matchedRoute) {\n const notFoundRoute = isoMatcher.match(\"/not-found\", \"route\");\n if (notFoundRoute && notFoundRoute.kind === \"Route\") {\n const notFoundRender = computePluridRoute(notFoundRoute, planesRegistrar, isoMatcher);\n return notFoundRender;\n }\n return () => () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {exterior: exterior, view: view, planes: planes, spaces: spaces, defaultConfiguration: defaultConfiguration, slotted: slotted, resolver: resolver} = matchedRoute.data;\n if (resolver) {\n resolver(undefined);\n }\n const pluridRouteProperty = {\n value: matchedRoute.match.value,\n parameters: matchedRoute.match.parameters,\n query: matchedRoute.match.query\n };\n let PluridRouteExterior;\n if (isReactRenderable(exterior)) {\n PluridRouteExterior = exterior;\n if (PluridRouteExterior) {\n PluridRouteExterior.displayName = \"PluridRouteExterior\";\n }\n }\n if (exterior && PluridRouteExterior && !view && !planes && !spaces) {\n return () => {\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, PluridRouteExterior && React__default[\"default\"].createElement(PluridRouteExterior, {\n plurid: pluridRouteProperty\n }));\n return PluridRoute;\n };\n }\n if (view) {\n return () => {\n const pubsub = new PluridPubSub__default[\"default\"];\n const pluridApplication = React__default[\"default\"].createElement(PluridApplication, {\n view: view,\n planesRegistrar: planesRegistrar,\n configuration: defaultConfiguration,\n pubsub: pubsub,\n matchedRoute: matchedRoute\n });\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, PluridRouteExterior && React__default[\"default\"].createElement(PluridRouteExterior, {\n plurid: pluridRouteProperty,\n pubsub: pubsub,\n spaces: slotted ? [ pluridApplication ] : undefined\n }), !slotted && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridApplication));\n return PluridRoute;\n };\n }\n return renderMultispace(matchedRoute);\n};\n\nconst computeInitialMatchedPath = staticContext => {\n if (staticContext) {\n return staticContext.path;\n }\n if (typeof window !== \"undefined\") {\n return window.location.pathname + window.location.search;\n }\n return \"/\";\n};\n\nconst getDirectPlaneMatch = (matchedPath, routes, planes) => {\n let matchRoute;\n let matchPlane;\n let matchPath;\n for (const route of routes) {\n if (route.planes) {\n for (const plane of route.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const planePath = route.value === \"/\" ? planeData.value : route.value + planeData.value;\n matchPath = planePath;\n if (matchedPath === planePath) {\n matchPlane = plane;\n break;\n }\n }\n }\n if (matchPlane) {\n matchRoute = route;\n break;\n }\n }\n if (planes) {\n for (const plane of planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n if (matchedPath === planeData.value) {\n matchPlane = plane;\n break;\n }\n }\n }\n return {\n matchRoute: matchRoute,\n matchPlane: matchPlane,\n matchPath: matchPath\n };\n};\n\nconst renderDirectPlane = (routePlane, planesRegistrar) => {\n if (routePlane.match.query.flat) {\n const flat = routePlane.match.query.flat.toLowerCase();\n const renderFlat = flat === \"true\" || flat === \"1\";\n if (renderFlat) {\n const pluridRoute = planesRegistrar.get(routePlane.match.value);\n if (pluridRoute) {\n const Flat = pluridRoute.component;\n if (typeof Flat !== \"function\") {\n return () => () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const DirectPlane = () => {\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(Flat, null));\n return PluridRoute;\n };\n return DirectPlane;\n }\n }\n }\n const {defaultConfiguration: defaultConfiguration} = routePlane === null || routePlane === void 0 ? void 0 : routePlane.data;\n const DirectPlane = () => {\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(PluridApplication, {\n view: [ routePlane.match.value ],\n planesRegistrar: planesRegistrar,\n configuration: defaultConfiguration\n }));\n return PluridRoute;\n };\n return DirectPlane;\n};\n\nconst {Registrar: PluridPlanesRegistrar} = pluridEngine.planes;\n\nconst {IsoMatcher: PluridIsoMatcher$1} = pluridEngine.routing;\n\nconst PluridRouterBrowser = properties => {\n const {routes: routes, planes: planes, exterior: exterior, shell: shell, static: staticContext, view: cleanNavigationView, cleanNavigation: cleanNavigation, notFoundPath: notFoundPathProperty} = properties;\n const notFoundPath = notFoundPathProperty || \"/not-found\";\n const pluridPlanes = gatherPluridPlanes(routes, planes);\n const pluridPlanesRegistrar = React.useRef(new PluridPlanesRegistrar(pluridPlanes));\n const pluridIsoMatcher = React.useRef(new PluridIsoMatcher$1({\n routes: routes,\n routePlanes: planes\n }));\n const mounted = pluridFunctionsReact.useMounted();\n const [matchedPath, setMatchedPath] = React.useState(computeInitialMatchedPath(staticContext));\n const [matchedRoute, setMatchedRoute] = React.useState(pluridIsoMatcher.current.match(matchedPath, \"route\"));\n const [PluridRoute, setPluridRoute] = React.useState(computePluridRoute(matchedRoute, pluridPlanesRegistrar.current, pluridIsoMatcher.current, staticContext && staticContext.directPlane ? pluridIsoMatcher.current.match(staticContext.directPlane, \"route\") : undefined));\n const handleLocation = event => {\n let matchedPath;\n if (event && event.detail && event.detail.path && !matchedPath) {\n matchedPath = event.detail.path;\n }\n if (cleanNavigation && cleanNavigationView && !matchedPath) {\n matchedPath = cleanNavigationView;\n }\n const pathname = window.location.pathname;\n if (!matchedPath) {\n matchedPath = pathname + window.location.search;\n }\n setMatchedPath(matchedPath);\n };\n React.useEffect((() => {\n window.addEventListener(\"popstate\", handleLocation);\n window.addEventListener(pluridData.PLURID_ROUTER_LOCATION_CHANGED, handleLocation);\n return () => {\n window.removeEventListener(\"popstate\", handleLocation);\n window.removeEventListener(pluridData.PLURID_ROUTER_LOCATION_CHANGED, handleLocation);\n };\n }), []);\n React.useEffect((() => {\n if (!mounted) {\n return;\n }\n if (!cleanNavigation) {\n if (location.pathname !== matchedPath) {\n history.pushState(null, \"\", matchedPath);\n }\n }\n let matchedRoute = pluridIsoMatcher.current.match(matchedPath, \"route\");\n if (matchedRoute && matchedRoute.kind === \"RoutePlane\") {\n const DirectPlane = renderDirectPlane(matchedRoute, pluridPlanesRegistrar.current);\n setMatchedRoute(matchedRoute);\n setPluridRoute(DirectPlane);\n return;\n }\n if (!matchedRoute) {\n matchedRoute = pluridIsoMatcher.current.match(notFoundPath, \"route\");\n }\n setMatchedRoute(matchedRoute);\n setPluridRoute(computePluridRoute(matchedRoute, pluridPlanesRegistrar.current, pluridIsoMatcher.current));\n }), [ mounted, matchedPath ]);\n React.useEffect((() => {\n if (!matchedRoute) {\n return;\n }\n if (matchedRoute.kind !== \"Route\") {\n return;\n }\n const path = matchedRoute.match.value;\n pluridFunctions.storage.saveState(path, pluridData.PLURID_ROUTER_STORAGE);\n const locationStoredEvent = new CustomEvent(pluridData.PLURID_ROUTER_LOCATION_STORED, {\n detail: {\n path: path\n }\n });\n window.dispatchEvent(locationStoredEvent);\n }), [ cleanNavigation, matchedRoute ]);\n let PluridRouterExterior;\n if (isReactRenderable(exterior)) {\n PluridRouterExterior = exterior;\n if (PluridRouterExterior) {\n PluridRouterExterior.displayName = \"PluridRouterExterior\";\n }\n }\n let PluridRouterShell = ({children: children}) => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, children);\n if (isReactRenderable(shell)) {\n PluridRouterShell = shell;\n if (PluridRouterShell) {\n PluridRouterShell.displayName = \"PluridRouterShell\";\n }\n }\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, PluridRouterExterior && React__default[\"default\"].createElement(PluridRouterExterior, {\n matchedRoute: matchedRoute\n }), React__default[\"default\"].createElement(PluridRouterShell, {\n matchedRoute: matchedRoute\n }, React__default[\"default\"].createElement(PluridRoute, null)));\n};\n\nconst PluridRouterStatic = properties => {\n const {path: path, directPlane: directPlane, routes: routes, planes: planes, exterior: exterior, shell: shell, protocol: protocolProperty, host: hostProperty, gateway: gateway, gatewayQuery: gatewayQueryProperty, gatewayEndpoint: gatewayEndpointProperty} = properties;\n const protocol = protocolProperty || \"http\";\n const host = hostProperty || \"localhost:63000\";\n return React__default[\"default\"].createElement(PluridRouterBrowser, {\n routes: routes,\n planes: planes,\n exterior: exterior,\n shell: shell,\n static: {\n path: path,\n directPlane: directPlane\n },\n protocol: protocol,\n host: host\n });\n};\n\nclass PluridProvider extends React.Component {\n constructor(properties) {\n super(properties);\n this.properties = properties;\n }\n render() {\n const {metastate: metastate, children: children} = this.properties;\n return React__default[\"default\"].createElement(PluridContext.Provider, {\n value: metastate\n }, children);\n }\n}\n\nPluridProvider.displayName = \"PluridProvider\";\n\nconst DEFAULT_ROUTER_LINK_AS_ANCHOR = true;\n\nconst defaultLinkCoordinates = {\n x: 0,\n y: 0\n};\n\nconst PluridPortal = properties => {\n const {elementID: elementID, rootID: rootID, children: children} = properties;\n const target = pluridFunctionsReact.usePortal(elementID, rootID);\n return reactDom.createPortal(children, target);\n};\n\nconst StyledPluridPlanePreview = styled__default[\"default\"].div`\n position: absolute;\n min-width: 600px;\n min-height: 300px;\n z-index: 99999;\n\n top: ${({linkCoordinates: linkCoordinates}) => {\n const location = linkCoordinates.y;\n return location + \"px\";\n}};\n left: ${({linkCoordinates: linkCoordinates}) => {\n const location = linkCoordinates.x + 5;\n return location + \"px\";\n}};\n background-color: ${({theme: theme}) => theme.backgroundColorSecondary};\n box-shadow: ${({theme: theme}) => theme.boxShadowUmbra};\n`;\n\nconst {getPlanesRegistrar: getPlanesRegistrar$1} = pluridEngine.planes;\n\nconst PluridPlanePreview = properties => {\n const {planeID: planeID, linkCoordinates: linkCoordinates, stateGeneralTheme: stateGeneralTheme} = properties;\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {planesRegistrar: planesRegistrar} = context;\n const planesRegistry = getPlanesRegistrar$1(planesRegistrar);\n if (!planesRegistry) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const plane = planesRegistry.get(planeID);\n if (!plane) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const Component = plane.component;\n if (typeof Component !== \"function\") {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledPluridPlanePreview, {\n theme: stateGeneralTheme,\n linkCoordinates: linkCoordinates\n }, React__default[\"default\"].createElement(Component, null));\n};\n\nconst mapStateToProperties$6 = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$6 = dispatch => ({});\n\nconst ConnectedPluridPlanePreview = reactRedux.connect(mapStateToProperties$6, mapDispatchToProperties$6, null, {\n context: StateContext\n})(PluridPlanePreview);\n\nconst StyledPluridLink = styled__default[\"default\"].a`\n /**\n * Forces element to go to the second row if inlined.\n */\n display: inline-block;\n\n cursor: pointer;\n color: ${({theme: theme}) => theme.colorTertiary};\n\n :hover {\n color: ${({theme: theme}) => theme.colorPrimary};\n }\n\n ::after {\n content: \"${({devisible: devisible, suffix: suffix}) => {\n if (!devisible) {\n if (suffix) {\n return suffix;\n }\n return \"'\";\n }\n return \"\";\n}}\";\n }\n`;\n\nconst {resolveRoute: resolveRoute, computePlaneAddress: computePlaneAddress} = pluridEngine.routing;\n\nconst {getPlanesRegistrar: getPlanesRegistrar, getPluridPlaneIDByData: getPluridPlaneIDByData$1} = pluridEngine.planes;\n\nconst {degToRad: degToRad, radToDeg: radToDeg} = pluridEngine.interaction.quaternion;\n\nconst {multiplyMatrices: multiplyMatrices, translateMatrix: translateMatrix, rotateYMatrix: rotateYMatrix} = pluridEngine.interaction.transform.general;\n\nconst {getTransformRotate: getTransformRotate, getTransformTranslate: getTransformTranslate, getTransformScale: getTransformScale} = pluridEngine.interaction.transform.matrix3d;\n\nconst PluridLink = properties => {\n const {children: children, route: planeRoute, devisible: _devisible, suffix: _suffix, atClick: atClick, style: style, className: className, stateTree: stateTree, stateGeneralTheme: stateGeneralTheme, stateConfiguration: stateConfiguration, stateViewSize: stateViewSize, dispatchSetTree: dispatchSetTree, dispatchSetAnimatedTransform: dispatchSetAnimatedTransform, dispatchSetTransform: dispatchSetTransform, dispatchSetSpaceField: dispatchSetSpaceField, dispatchUpdateSpaceLinkCoordinates: dispatchUpdateSpaceLinkCoordinates} = properties;\n const planeControls = stateConfiguration.elements.plane.controls.show;\n const previewAppearTime = pluridData.PLURID_DEFAULT_CONFIGURATION_LINK_PREVIEW_FADE_IN;\n const previewDisappearTime = pluridData.PLURID_DEFAULT_CONFIGURATION_LINK_PREVIEW_FADE_OUT;\n const planeRouteResolved = computePlaneAddress(planeRoute);\n const absolutePlaneRoute = resolveRoute(planeRouteResolved, stateConfiguration.network.protocol, stateConfiguration.network.host);\n const suffix = _suffix !== null && _suffix !== void 0 ? _suffix : pluridData.PLURID_DEFAULT_CONFIGURATION_LINK_SUFFIX;\n const devisible = _devisible !== null && _devisible !== void 0 ? _devisible : false;\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, children);\n }\n const {planesRegistrar: planesRegistrar} = context;\n const planesRegistry = getPlanesRegistrar(planesRegistrar);\n if (!planesRegistry) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, children);\n }\n const linkElement = React.useRef(null);\n const hoverInTimeout = React.useRef(null);\n const hoverOutTimeout = React.useRef(null);\n const [mouseOver, setMouseOver] = React.useState(false);\n const [showPreview, setShowPreview] = React.useState(false);\n const [showLink, setShowLink] = React.useState(false);\n const [planeID, setPlaneID] = React.useState(\"\");\n const [pluridPlaneID, setPluridPlaneID] = React.useState(\"\");\n const [parentPlaneID, setParentPlaneID] = React.useState(getPluridPlaneIDByData$1(linkElement.current));\n const [linkCoordinates, setLinkCoordinates] = React.useState(defaultLinkCoordinates);\n const getPluridLinkCoordinates = () => {\n const link = linkElement.current;\n if (!link) {\n return Object.assign({}, defaultLinkCoordinates);\n }\n let partialTop = 0;\n let partialLeft = 0;\n let staticSet = false;\n let element = link;\n let searching = true;\n let top = 0;\n let left = 0;\n while (searching) {\n if (window.getComputedStyle(element).position === \"static\" && !staticSet) {\n partialTop += element.offsetTop;\n partialLeft += element.offsetLeft;\n staticSet = true;\n }\n if (window.getComputedStyle(element).position === \"relative\") {\n top += partialTop;\n left += partialLeft;\n partialTop = 0;\n partialLeft = 0;\n staticSet = false;\n }\n if (element.scrollLeft) {\n left += -element.scrollLeft;\n }\n if (element.scrollTop) {\n top += -element.scrollTop;\n }\n if (element.parentElement) {\n const pluridEntity = element.parentElement.dataset.pluridEntity;\n if (pluridEntity === \"PluridPlane\") {\n searching = false;\n }\n element = element.parentElement;\n } else {\n searching = false;\n }\n }\n const planeControlsHeight = planeControls ? 56 : 0;\n const x = left + link.offsetWidth;\n const y = top + planeControlsHeight;\n return {\n x: x,\n y: y\n };\n };\n const updateTreeWithLink = event => {\n if (!parentPlaneID || !absolutePlaneRoute) {\n return;\n }\n const {route: route} = absolutePlaneRoute;\n const linkCoordinates = getPluridLinkCoordinates();\n const {pluridPlaneID: pluridPlaneID, updatedTree: updatedTree, updatedTreePlane: updatedTreePlane} = pluridEngine.space.tree.logic.updateTreeWithNewPlane(route, parentPlaneID, linkCoordinates, stateTree, planesRegistry.getAll(), stateConfiguration);\n if (pluridPlaneID) {\n navigateToPluridPlane(event, updatedTreePlane);\n dispatchSetTree(updatedTree);\n setShowLink(true);\n setPluridPlaneID(pluridPlaneID);\n }\n };\n const toggleLinkFromTree = event => {\n const {updatedTree: updatedTree, updatedPlane: updatedPlane} = pluridEngine.space.tree.logic.togglePlaneFromTree(stateTree, pluridPlaneID);\n navigateToPluridPlane(event, updatedPlane);\n dispatchSetTree(updatedTree);\n setShowLink((show => !show));\n setShowPreview(false);\n };\n const navigateToPluridPlane = (event, updatedPlane) => {\n if (!updatedPlane) {\n return;\n }\n if (showLink) {\n return;\n }\n if (event.altKey || event.metaKey) {\n return;\n }\n const {location: location} = updatedPlane;\n const {translateX: translateX, translateY: translateY, translateZ: translateZ, rotateY: rotateY} = location;\n const zSign1 = rotateY < 100 ? 1 : -1;\n const zSign2 = rotateY < 100 ? -1 : 1;\n const xOffset = rotateY < 100 ? 200 : 0;\n const newMatrix = multiplyMatrices(multiplyMatrices(multiplyMatrices(translateMatrix(-translateX, -translateY, zSign1 * translateZ), rotateYMatrix(degToRad(rotateY))), translateMatrix(translateX, translateY, zSign2 * translateZ)), translateMatrix(-(translateX + xOffset), -translateY, zSign1 * translateZ));\n const matrix3d = `matrix3d(${newMatrix.flat().join(\",\")})`;\n const rotate = getTransformRotate(matrix3d);\n const translate = getTransformTranslate(matrix3d);\n const scale = getTransformScale(matrix3d);\n dispatchSetAnimatedTransform(true);\n dispatchSetSpaceField({\n field: \"transform\",\n value: matrix3d\n });\n dispatchSetTransform({\n translationX: translate.translateX,\n translationY: translate.translateY,\n translationZ: translate.translateZ,\n rotationX: radToDeg(rotate.rotateX),\n rotationY: radToDeg(rotate.rotateY) * -1,\n scale: scale.scale\n });\n setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), 500);\n };\n const handleShowPluridPlane = event => {\n if (!showLink && !pluridPlaneID) {\n updateTreeWithLink(event);\n } else {\n toggleLinkFromTree(event);\n }\n };\n const handleClick = React.useCallback((event => {\n event.preventDefault();\n if (atClick !== undefined) {\n atClick(event);\n }\n handleShowPluridPlane(event);\n }), [ linkElement.current, stateTree ]);\n React.useEffect((() => {\n const parentPlaneID = getPluridPlaneIDByData$1(linkElement.current);\n setParentPlaneID(parentPlaneID);\n const linkCoordinates = getPluridLinkCoordinates();\n setLinkCoordinates(linkCoordinates);\n }), []);\n React.useEffect((() => {\n if (mouseOver && hoverOutTimeout.current) {\n hoverInTimeout.current = setTimeout((() => {\n setShowPreview(true);\n }), previewAppearTime);\n clearTimeout(hoverOutTimeout.current);\n }\n if (!mouseOver) {\n hoverOutTimeout.current = setTimeout((() => {\n setShowPreview(false);\n if (hoverInTimeout.current) {\n clearTimeout(hoverInTimeout.current);\n }\n }), previewDisappearTime);\n }\n return () => {\n if (hoverOutTimeout.current) {\n clearTimeout(hoverOutTimeout.current);\n }\n if (hoverInTimeout.current) {\n clearTimeout(hoverInTimeout.current);\n }\n };\n }), [ mouseOver ]);\n React.useEffect((() => {}), []);\n return React__default[\"default\"].createElement(StyledPluridLink, {\n ref: linkElement,\n onClick: event => handleClick(event),\n onMouseEnter: () => setMouseOver(true),\n onMouseLeave: () => setMouseOver(false),\n theme: stateGeneralTheme,\n suffix: suffix,\n devisible: devisible,\n style: Object.assign({}, style),\n className: className,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_LINK\n }, children, showPreview && !showLink && React__default[\"default\"].createElement(PluridPortal, {\n elementID: `preview-${parentPlaneID}`,\n rootID: parentPlaneID\n }, React__default[\"default\"].createElement(ConnectedPluridPlanePreview, {\n planeID: planeID,\n linkCoordinates: linkCoordinates\n })));\n};\n\nconst mapStateToProperties$5 = state => ({\n stateTree: selectors.space.getTree(state),\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateViewSize: selectors.space.getViewSize(state)\n});\n\nconst mapDispatchToProperties$5 = dispatch => ({\n dispatchSetTree: tree => dispatch(actions.space.setTree(tree)),\n dispatchSetAnimatedTransform: payload => dispatch(actions.space.setAnimatedTransform(payload)),\n dispatchSetTransform: payload => dispatch(actions.space.setTransform(payload)),\n dispatchSetSpaceField: payload => dispatch(actions.space.setSpaceField(payload)),\n dispatchUpdateSpaceLinkCoordinates: payload => dispatch(actions.space.updateSpaceLinkCoordinates(payload))\n});\n\nvar PluridLink$1 = reactRedux.connect(mapStateToProperties$5, mapDispatchToProperties$5, null, {\n context: StateContext\n})(PluridLink);\n\nconst StyledPluridRouterLinkAnchor = styled__default[\"default\"].a`\n`;\n\nconst StyledPluridRouterLinkDiv = styled__default[\"default\"].div`\n cursor: pointer;\n`;\n\nconst PluridRouterLink = properties => {\n const {route: route, children: children, asAnchor: asAnchorProperty, style: style, className: className, atClick: atClick} = properties;\n const asAnchor = asAnchorProperty !== null && asAnchorProperty !== void 0 ? asAnchorProperty : DEFAULT_ROUTER_LINK_AS_ANCHOR;\n const handleClick = event => {\n if (atClick) {\n const exit = atClick(event);\n if (exit) {\n return;\n }\n }\n event.preventDefault();\n pluridEngine.pluridRouterNavigate(route);\n };\n const renderProperties = {\n onClick: handleClick,\n style: style,\n className: className\n };\n if (!asAnchor) {\n return React__default[\"default\"].createElement(StyledPluridRouterLinkDiv, Object.assign({}, renderProperties), children);\n }\n return React__default[\"default\"].createElement(StyledPluridRouterLinkAnchor, Object.assign({\n href: route\n }, renderProperties), children);\n};\n\nconst StyledPluridApplicationConfigurator = styled__default[\"default\"].div`\n position: absolute;\n height: 0;\n width: 0;\n user-select: none;\n pointer-events: none;\n`;\n\nconst PluridApplicationConfigurator = properties => {\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {registerPubSub: registerPubSub} = context;\n const {configuration: configuration, pubsub: pubsub, stateConfiguration: stateConfiguration, dispatchSetConfiguration: dispatchSetConfiguration} = properties;\n const configuratorElement = React.useRef(null);\n React.useEffect((() => {\n const computedConfiguration = pluridEngine.general.configuration.merge(configuration, stateConfiguration);\n dispatchSetConfiguration(computedConfiguration);\n }), [ configuration ]);\n React.useEffect((() => {\n if (pubsub) {\n registerPubSub(pubsub);\n }\n }), [ pubsub ]);\n return React__default[\"default\"].createElement(StyledPluridApplicationConfigurator, {\n ref: configuratorElement,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_APPLICATION_CONFIGURATOR\n });\n};\n\nconst mapStateToProps$1 = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$1 = dispatch => ({\n dispatchSetConfiguration: configuration => dispatch(actions.configuration.setConfiguration(configuration))\n});\n\nconst ConnectedPluridApplicationConfigurator = reactRedux.connect(mapStateToProps$1, mapDispatchToProps$1, null, {\n context: StateContext\n})(PluridApplicationConfigurator);\n\nconst StyledPluridPlaneConfigurator = styled__default[\"default\"].div`\n position: absolute;\n height: 0;\n width: 0;\n user-select: none;\n pointer-events: none;\n`;\n\nconst {getPluridPlaneIDByData: getPluridPlaneIDByData} = pluridEngine.planes;\n\nconst PluridPlaneConfigurator = properties => {\n const configuratorElement = React.useRef(null);\n const [planePlaneID, setParentPlaneID] = React.useState(\"\");\n React.useEffect((() => {\n const parentPlaneID = getPluridPlaneIDByData(configuratorElement.current);\n setParentPlaneID(parentPlaneID);\n }), []);\n return React__default[\"default\"].createElement(StyledPluridPlaneConfigurator, {\n ref: configuratorElement,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE_CONFIGURATOR\n });\n};\n\nconst mapStateToProperties$4 = state => ({});\n\nconst mapDispatchToProperties$4 = dispatch => ({});\n\nconst ConnectedPluridPlaneConfigurator = reactRedux.connect(mapStateToProperties$4, mapDispatchToProperties$4, null, {\n context: StateContext\n})(PluridPlaneConfigurator);\n\nconst StyledExternalPlane = styled__default[\"default\"].div`\n`;\n\nconst getPttpUrl = path => {\n const re = /^pttp:\\/\\/(\\w+(\\.|:)\\w+)\\/?/;\n const match = path.match(re);\n if (!match) {\n return {\n domain: \"\",\n url: \"\"\n };\n }\n const domain = match[1];\n const protocol = \"http\";\n const url = `${protocol}://${domain}/pttp`;\n return {\n domain: domain,\n url: url\n };\n};\n\nconst getPttpPath = (domain, path) => {\n if (!domain) {\n return;\n }\n const pttpPath = path.replace(`pttp://${domain}`, \"\");\n return pttpPath;\n};\n\nconst elementRequest = (url, path) => __awaiter(void 0, void 0, void 0, (function*() {\n try {\n const response = yield fetch__default[\"default\"](url, {\n method: \"post\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n path: path\n }),\n credentials: \"include\"\n });\n const data = yield response.json();\n if (!data.element) {\n return;\n }\n const {element: element} = data;\n const elementQLClient = new elementqlClientReact.ElementQLClient({\n url: element.url\n });\n const {status: status, Elements: Elements} = yield elementQLClient.get(element.json, \"json\");\n if (!status) {\n return;\n }\n const Element = Elements[element.name];\n return () => Element;\n } catch (error) {\n return;\n }\n}));\n\nconst ExternalPlane = properties => {\n const {plurid: plurid} = properties;\n const route = plurid.value;\n const mounted = React.useRef(false);\n const [Component, setComponent] = React.useState();\n React.useEffect((() => {\n mounted.current = true;\n return () => {\n mounted.current = false;\n };\n }));\n React.useEffect((() => {\n let loading = false;\n const load = () => __awaiter(void 0, void 0, void 0, (function*() {\n if (loading) {\n return;\n }\n loading = true;\n try {\n const {domain: domain, url: url} = getPttpUrl(route);\n const pttpPath = getPttpPath(domain, route);\n if (!url || !pttpPath) {\n return;\n }\n const Component = yield elementRequest(url, pttpPath);\n if (!mounted.current) {\n return;\n }\n if (Component) {\n setComponent(Component);\n }\n } catch (error) {\n return;\n }\n }));\n load();\n }), []);\n return React__default[\"default\"].createElement(StyledExternalPlane, null, Component && React__default[\"default\"].createElement(Component, null));\n};\n\nconst mapStateToProperties$3 = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$3 = dispatch => ({});\n\nconst ConnectedExternalPlane = reactRedux.connect(mapStateToProperties$3, mapDispatchToProperties$3, null, {\n context: StateContext\n})(ExternalPlane);\n\nconst StyledIframePlane = styled__default[\"default\"].div`\n`;\n\nconst IframePlane = properties => {\n const {plurid: plurid} = properties;\n const route = plurid.value;\n return React__default[\"default\"].createElement(StyledIframePlane, null, React__default[\"default\"].createElement(\"iframe\", {\n src: route\n }));\n};\n\nconst mapStateToProperties$2 = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$2 = dispatch => ({});\n\nconst ConnectedIframePlane = reactRedux.connect(mapStateToProperties$2, mapDispatchToProperties$2, null, {\n context: StateContext\n})(IframePlane);\n\nconst VirtualListItem = properties => {\n const {top: top, index: index, element: element, setHeight: setHeight} = properties;\n const el = React.useRef(null);\n React.useEffect((() => {\n if (el.current) {\n setHeight(el.current.offsetHeight, index);\n }\n }), [ el.current ]);\n return React__default[\"default\"].createElement(\"div\", {\n ref: el,\n style: {\n position: \"absolute\",\n top: top + \"px\"\n }\n }, element);\n};\n\nconst {markers: {Spinner: PluridSpinner}} = pluridUiComponentsReact.universal;\n\nconst PluridVirtualList = properties => {\n const {items: items, generalHeight: generalHeight, translationY: translationY, viewSize: viewSize} = properties;\n const _generalHeight = generalHeight || 100;\n const listElement = React.useRef(null);\n const rows = React.useRef([]);\n const heights = React.useRef(Array(items.length).fill(_generalHeight));\n const [start, setStart] = React.useState(0);\n const [end, setEnd] = React.useState(Math.floor(1e3 / _generalHeight));\n const [elementHeight, setElementHeight] = React.useState(_generalHeight * (end - start));\n const [resizing, setResizing] = React.useState(false);\n const setHeight = (value, index) => {\n heights.current[index] = value;\n };\n const renderRows = () => {\n rows.current = [];\n for (let i = start; i <= end; i++) {\n const item = items[i];\n rows.current.push(React__default[\"default\"].createElement(VirtualListItem, {\n key: i + Math.random(),\n index: i,\n top: pluridFunctions.mathematics.arithmetic.sum(heights.current, i),\n element: item,\n setHeight: setHeight\n }));\n }\n return rows.current;\n };\n React.useEffect((() => {\n if (heights.current) {\n const elementHeight = pluridFunctions.mathematics.arithmetic.sum(heights.current, heights.current.length);\n setElementHeight(elementHeight);\n }\n }), [ start, end, heights.current ]);\n React.useEffect((() => {\n let sum = 0;\n for (const [index, value] of heights.current.entries()) {\n sum += value;\n if (translationY < 0) {\n if (sum < Math.abs(translationY)) {\n setStart(index);\n }\n if (sum > Math.abs(translationY) + viewSize.height && sum < Math.abs(translationY) + viewSize.height + 400) {\n setEnd(index);\n }\n } else {\n setStart(0);\n setEnd(10);\n }\n }\n }), [ viewSize.height, translationY ]);\n React.useEffect((() => {\n setResizing(true);\n setTimeout((() => {\n const elementHeight = pluridFunctions.mathematics.arithmetic.sum(heights.current, heights.current.length);\n setElementHeight(elementHeight);\n setResizing(false);\n }), 400);\n }), [ viewSize ]);\n return React__default[\"default\"].createElement(\"div\", {\n style: {\n height: elementHeight\n },\n ref: listElement\n }, resizing && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(PluridSpinner, null)), !resizing && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, renderRows()));\n};\n\nconst mapStateToProps = state => ({\n translationY: selectors.space.getTranslationY(state),\n viewSize: selectors.space.getViewSize(state)\n});\n\nconst mapDispatchToProps = dispatch => ({});\n\nconst ConnectedPluridVirtualList = reactRedux.connect(mapStateToProps, mapDispatchToProps, null, {\n context: StateContext\n})(PluridVirtualList);\n\nconst StyledPluridPlaneDebugger = styled__default[\"default\"].div`\n`;\n\nconst PluridPlaneDebugger = properties => React__default[\"default\"].createElement(StyledPluridPlaneDebugger, null, \"PluridPlaneDebugger\");\n\nconst mapStateToProperties$1 = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$1 = dispatch => ({});\n\nconst ConnectedPluridPlaneDebugger = reactRedux.connect(mapStateToProperties$1, mapDispatchToProperties$1, null, {\n context: StateContext\n})(PluridPlaneDebugger);\n\nconst StyledPluridSpaceDebugger = styled__default[\"default\"].div`\n`;\n\nconst PluridSpaceDebugger = properties => React__default[\"default\"].createElement(StyledPluridSpaceDebugger, null, \"PluridSpaceDebugger\");\n\nconst mapStateToProperties = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties = dispatch => ({});\n\nconst ConnectedPluridSpaceDebugger = reactRedux.connect(mapStateToProperties, mapDispatchToProperties, null, {\n context: StateContext\n})(PluridSpaceDebugger);\n\nconst {resolvePluridPlaneData: resolvePluridPlaneData} = pluridEngine.planes;\n\nconst computeApplication = (indexedPlanes, planes, configuration, view) => {\n const planesPropertiesReference = new Map;\n const computedIndexedPlanes = new Map(indexedPlanes || new Map);\n const appConfiguration = pluridEngine.general.configuration.merge(configuration);\n if (planes) {\n for (const plane of planes) {\n const planeData = resolvePluridPlaneData(plane);\n const linkPath = pluridEngine.routing.resolveRoute(planeData.route);\n if (!linkPath) {\n continue;\n }\n const {protocol: protocol, host: host, path: path, space: space, universe: universe, cluster: cluster, plane: planePath, route: route} = linkPath;\n const computedIndexedPlane = {\n protocol: protocol,\n host: \"\",\n path: \"\",\n space: \"\",\n universe: \"\",\n cluster: \"\",\n plane: \"\",\n route: route,\n component: planeData.component\n };\n const id = route;\n computedIndexedPlanes.set(id, computedIndexedPlane);\n }\n }\n const indexedPlanesReference = new Map(computedIndexedPlanes);\n const planeSources = {};\n for (const [id, indexedPlane] of computedIndexedPlanes) {\n planeSources[indexedPlane.route] = id;\n }\n for (const [id, computedIndexedPlane] of computedIndexedPlanes) {}\n const currentView = view || [];\n const absoluteView = [];\n for (const viewItem of currentView) {\n if (typeof viewItem === \"string\") {\n const viewPath = pluridEngine.routing.resolveRoute(viewItem);\n if (!viewPath) {\n continue;\n }\n absoluteView.push(viewPath.route);\n }\n }\n const data = {\n computedTree: [],\n indexedPlanesReference: indexedPlanesReference,\n planesPropertiesReference: planesPropertiesReference,\n appConfiguration: appConfiguration\n };\n return data;\n};\n\nconst serverComputeMetastate = (isoMatch, paths, globals) => __awaiter(void 0, void 0, void 0, (function*() {\n const protocol = \"http\";\n const host = \"localhost:63000\";\n const indexedPlanes = computeIndexedPlanes(paths, protocol, host);\n const pluridApplications = yield collectApplicationsFromPath(isoMatch, protocol, host, globals);\n const states = {};\n for (const application of pluridApplications) {\n const {planes: planes, view: view} = application;\n const {computedTree: computedTree, appConfiguration: appConfiguration} = computeApplication(indexedPlanes, planes, undefined, view);\n const state = {\n configuration: Object.assign({}, appConfiguration),\n shortcuts: {\n global: true\n },\n themes: {\n general: themes__default[\"default\"].plurid,\n interaction: themes__default[\"default\"].plurid\n },\n ui: {\n toolbarScrollPosition: 50\n },\n space: {\n loading: false,\n animatedTransform: false,\n scale: 1,\n rotationX: 0,\n rotationY: 0,\n translationX: 0,\n translationY: 0,\n translationZ: 0,\n initialTree: computedTree,\n tree: computedTree,\n activeUniverseID: \"\",\n camera: {\n x: 0,\n y: 0,\n z: 0\n },\n viewSize: {\n width: 1440,\n height: 821\n },\n spaceSize: {\n width: 1440,\n height: 821,\n depth: 0,\n topCorner: {\n x: 0,\n y: 0,\n z: 0\n }\n },\n view: view,\n culledView: []\n }\n };\n const id = isoMatch.data.value;\n states[id] = state;\n }\n return {\n states: states\n };\n}));\n\nconst usePluridRouter = () => {\n const [routerValue, setRouterValue] = React.useState(\"\");\n React.useEffect((() => {\n const fetchState = () => {\n const state = pluridFunctions.storage.loadState(pluridData.PLURID_ROUTER_STORAGE);\n if (state) {\n setRouterValue(state);\n }\n };\n fetchState();\n window.addEventListener(pluridData.PLURID_ROUTER_LOCATION_STORED, fetchState);\n return () => {\n window.removeEventListener(pluridData.PLURID_ROUTER_LOCATION_STORED, fetchState);\n };\n }), []);\n return routerValue;\n};\n\nconst {IsoMatcher: PluridIsoMatcher, RouteParser: PluridRouteParser} = pluridEngine.routing;\n\nconst internals = {\n PluridPlaneBridge: ConnectedPluridPlaneBridge,\n PluridPlaneContent: PluridPlaneContent,\n PluridPlaneControls: ConnectedPluridPlaneControls,\n PluridPlaneDebugger: ConnectedPluridPlaneDebugger,\n PluridSpaceDebugger: ConnectedPluridSpaceDebugger\n};\n\nconst Plurid = {\n Application: PluridApplication,\n RouterStatic: PluridRouterStatic,\n RouterBrowser: PluridRouterBrowser,\n Provider: PluridProvider,\n Link: PluridLink$1,\n RouterLink: PluridRouterLink,\n ApplicationConfigurator: ConnectedPluridApplicationConfigurator,\n PlaneConfigurator: ConnectedPluridPlaneConfigurator,\n ExternalPlane: ConnectedExternalPlane,\n IframePlane: ConnectedIframePlane,\n VirtualList: ConnectedPluridVirtualList,\n SPACE_LAYOUT: pluridData.LAYOUT_TYPES,\n SIZES: pluridData.SIZES,\n TRANSFORM_MODES: pluridData.TRANSFORM_MODES,\n TRANSFORM_TOUCHES: pluridData.TRANSFORM_TOUCHES,\n PubSub: PluridPubSub__default[\"default\"],\n PUBSUB_TOPIC: pluridData.PLURID_PUBSUB_TOPIC,\n serverComputeMetastate: serverComputeMetastate,\n IsoMatcher: PluridIsoMatcher,\n routerNavigate: pluridEngine.pluridRouterNavigate,\n internals: internals\n};\n\nObject.defineProperty(exports, \"PLURID_PUBSUB_TOPIC\", {\n enumerable: true,\n get: function() {\n return pluridData.PLURID_PUBSUB_TOPIC;\n }\n});\n\nObject.defineProperty(exports, \"PLURID_ROUTER_LOCATION_CHANGED\", {\n enumerable: true,\n get: function() {\n return pluridData.PLURID_ROUTER_LOCATION_CHANGED;\n }\n});\n\nObject.defineProperty(exports, \"PLURID_ROUTER_LOCATION_STORED\", {\n enumerable: true,\n get: function() {\n return pluridData.PLURID_ROUTER_LOCATION_STORED;\n }\n});\n\nObject.defineProperty(exports, \"SIZES\", {\n enumerable: true,\n get: function() {\n return pluridData.SIZES;\n }\n});\n\nObject.defineProperty(exports, \"SPACE_LAYOUT\", {\n enumerable: true,\n get: function() {\n return pluridData.LAYOUT_TYPES;\n }\n});\n\nObject.defineProperty(exports, \"TRANSFORM_MODES\", {\n enumerable: true,\n get: function() {\n return pluridData.TRANSFORM_MODES;\n }\n});\n\nObject.defineProperty(exports, \"TRANSFORM_TOUCHES\", {\n enumerable: true,\n get: function() {\n return pluridData.TRANSFORM_TOUCHES;\n }\n});\n\nObject.defineProperty(exports, \"pluridRouterNavigate\", {\n enumerable: true,\n get: function() {\n return pluridEngine.pluridRouterNavigate;\n }\n});\n\nObject.defineProperty(exports, \"PluridPubSub\", {\n enumerable: true,\n get: function() {\n return PluridPubSub__default[\"default\"];\n }\n});\n\nexports.PluridApplication = PluridApplication;\n\nexports.PluridApplicationConfigurator = ConnectedPluridApplicationConfigurator;\n\nexports.PluridExternalPlane = ConnectedExternalPlane;\n\nexports.PluridIframePlane = ConnectedIframePlane;\n\nexports.PluridIsoMatcher = PluridIsoMatcher;\n\nexports.PluridLink = PluridLink$1;\n\nexports.PluridPlaneConfigurator = ConnectedPluridPlaneConfigurator;\n\nexports.PluridProvider = PluridProvider;\n\nexports.PluridRouteParser = PluridRouteParser;\n\nexports.PluridRouterBrowser = PluridRouterBrowser;\n\nexports.PluridRouterLink = PluridRouterLink;\n\nexports.PluridRouterStatic = PluridRouterStatic;\n\nexports.PluridVirtualList = ConnectedPluridVirtualList;\n\nexports[\"default\"] = Plurid;\n\nexports.getDirectPlaneMatch = getDirectPlaneMatch;\n\nexports.internals = internals;\n\nexports.pluridStateModules = modules;\n\nexports.serverComputeMetastate = serverComputeMetastate;\n\nexports.usePluridRouter = usePluridRouter;\n//# sourceMappingURL=index.js.map\n"],"names":["Object","defineProperty","exports","value","pluridData","require$$0","pluridEngine","require$$1","PluridPubSub","require$$2","React","require$$3","reactRedux","require$$4","redux","require$$5","thunk","require$$6","pluridFunctions","require$$7","themes$1","require$$8","styled","require$$9","pluridUiComponentsReact","require$$10","pluridIconsReact","require$$11","pluridFunctionsReact","require$$12","reactDom","require$$13","fetch","require$$14","elementqlClientReact","require$$15","_interopDefaultLegacy","e","default","PluridPubSub__default","React__default","thunk__default","themes__default","styled__default","fetch__default","PluridContext","createContext","undefined","SET_CONFIGURATION","SET_CONFIGURATION_MICRO","SET_CONFIGURATION_PLANE_CONTROLS","SET_CONFIGURATION_PLANE_OPACITY","SET_CONFIGURATION_THEME_GENERAL","SET_CONFIGURATION_THEME_INTERACTION","SET_CONFIGURATION_LANGUAGE","TOGGLE_CONFIGURATION_VIEWCUBE_HIDE","TOGGLE_CONFIGURATION_VIEWCUBE_BUTTONS","TOGGLE_CONFIGURATION_VIEWCUBE_OPAQUE","TOGGLE_CONFIGURATION_VIEWCUBE_CONCEAL","TOGGLE_CONFIGURATION_TOOLBAR_CONCEAL","TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_ICONS","TOGGLE_CONFIGURATION_TOOLBAR_TRANSFORM_BUTTONS","TOGGLE_CONFIGURATION_TOOLBAR_OPAQUE","TOGGLE_CONFIGURATION_TOOLBAR_TOGGLE_DRAWER","TOGGLE_CONFIGURATION_SPACE_TRANSPARENT_UI","TOGGLE_CONFIGURATION_SPACE_SHOW_TRANSFORM_ORIGIN","SET_CONFIGURATION_SPACE_TRANSFORM_ORIGIN_SIZE","SET_CONFIGURATION_SPACE_TRANSFORM_MODE","TOGGLE_CONFIGURATION_SPACE_TRANSFORM_MULTIMODE","SET_CONFIGURATION_SPACE_TRANSFORM_TOUCH","TOGGLE_CONFIGURATION_SPACE_FIRST_PERSON","SET_CONFIGURATION_SPACE_TRANSFORM_LOCKS","SET_CONFIGURATION_SPACE_LAYOUT_TYPE","SET_CONFIGURATION_SPACE_CULLING_DISTANCE","index$o","freeze","__proto__","index$n","setConfiguration","payload","type","setConfigurationMicro","setConfigurationPlaneControls","planeControls","setConfigurationPlaneOpacity","setConfigurationThemeGeneralAction","setConfigurationThemeInteractionAction","setConfigurationLanguageAction","toggleConfigurationViewcubeHide","toggle","toggleConfigurationViewcubeButtons","toggleConfigurationViewcubeOpaque","toggleConfigurationViewcubeConceal","toggleConfigurationToolbarConceal","toggleConfigurationToolbarTransformIcons","toggleConfigurationToolbarTransformButtons","toggleConfigurationSpaceTransparentUI","toggleConfigurationSpaceShowTransformOrigin","toggleConfigurationToolbarOpaque","toggleConfigurationToolbarToggleDrawer","drawer","setConfigurationSpaceTransformOriginSize","size","setConfigurationSpaceTransformMode","mode","toggleConfigurationSpaceTransformMultimode","setConfigurationSpaceTransformTouch","touch","toggleConfigurationSpaceFirstPerson","setConfigurationSpaceTransformLocks","transformLock","setConfigurationSpaceLayoutType","layoutType","setConfigurationSpaceCullingDistance","initialState$5","assign","defaultConfiguration","state","action","newState","elements","toolbar","show","plane","controls","viewcube","opacity","setConfigurationThemeGeneral","updatedTheme","general","interaction","global","theme","setConfigurationThemeInteraction","setConfigurationLanguage","language","buttons","opaque","conceal","transformIcons","transformButtons","toggleConfigurationShowTransformOrigin","space","transformOrigin","transparentUI","transformMode","TRANSFORM_MODES","ALL","transformMultimode","transformTouch","firstPerson","toggledDrawers","includes","updatedDrawers","filter","el","transformLocks","updatedTransformLocks","setConfigurationSpaceLayout","layout","LAYOUT_TYPES","cullingDistance","index$m","SET_STATE","index$l","getConfiguration","configuration","actions","initialState","reducer","resolvers","selectors","Types","index$k","initialState$4","index$i","index$g","SHORTCUTS_SET_GLOBAL_SHORTCUTS","SHORTCUTS_UNSET_GLOBAL_SHORTCUTS","index$f","index$e","setGlobalShortcuts","unsetGlobalShortcuts","initialState$3","index$d","index$c","getGlobal","shortcuts","SET_SPACE_FIELD","SET_SPACE_LOADING","SET_TRANSFORM","SET_ANIMATED_TRANSFORM","SET_TRANSFORM_TIME","SET_SPACE_LOCATION","VIEW_CAMERA_MOVE_FORWARD","VIEW_CAMERA_MOVE_BACKWARD","VIEW_CAMERA_MOVE_LEFT","VIEW_CAMERA_MOVE_RIGHT","VIEW_CAMERA_MOVE_UP","VIEW_CAMERA_MOVE_DOWN","VIEW_CAMERA_TURN_UP","VIEW_CAMERA_TURN_DOWN","VIEW_CAMERA_TURN_LEFT","VIEW_CAMERA_TURN_RIGHT","ROTATE_UP","ROTATE_DOWN","ROTATE_LEFT","ROTATE_X","ROTATE_X_WITH","ROTATE_RIGHT","ROTATE_Y","ROTATE_Y_WITH","TRANSLATE_UP","TRANSLATE_DOWN","TRANSLATE_LEFT","TRANSLATE_RIGHT","TRANSLATE_IN","TRANSLATE_OUT","TRANSLATE_X_WITH","TRANSLATE_Y_WITH","SCALE_UP","SCALE_DOWN","SCALE_UP_WITH","SCALE_DOWN_WITH","SET_INITIAL_TREE","SET_TREE","SET_ACTIVE_UNIVERSE","SPACE_RESET_TRANSFORM","SET_VIEW_SIZE","SET_SPACE_SIZE","UPDATE_SPACE_TREE_PLANE","UPDATE_SPACE_LINK_COORDINATES","SPACE_SET_VIEW","SPACE_SET_CULLED_VIEW","index$b","index$a","setSpaceField","setSpaceLoading","setTransform","setAnimatedTransform","setTransformTime","setSpaceLocation","viewCameraMoveForward","viewCameraMoveBackward","viewCameraMoveLeft","viewCameraMoveRight","viewCameraMoveUp","viewCameraMoveDown","viewCameraTurnUp","viewCameraTurnDown","viewCameraTurnLeft","viewCameraTurnRight","rotateUp","rotateDown","rotateX","rotateXWith","rotateLeft","rotateRight","rotateY","rotateYWith","translateUp","translateDown","translateLeft","translateRight","translateIn","translateOut","translateXWith","translateYWith","scaleUp","scaleDown","scaleUpWith","scaleDownWith","setInitialTree","setTree","setActiveUniverse","universeID","spaceResetTransform","setViewSize","setSpaceSize","updateSpaceTreePlane","updateSpaceLinkCoordinates","spaceSetView","spaceSetCulledView","initialState$2","loading","transform","animatedTransform","transformTime","scale","rotationX","rotationY","translationX","translationY","translationZ","initialTree","tree","activeUniverseID","camera","x","y","z","viewSize","width","window","innerWidth","height","innerHeight","spaceSize","depth","topCorner","view","culledView","quaternion","matrix","matrixArrayToCSSMatrix","matrixArrayToCSSMatrix$1","rotateMatrix","rotateMatrix$1","multiplyArrayOfMatrices","multiplyArrayOfMatrices$1","scaleMatrix","scaleMatrix$1","translateMatrix","translateMatrix$2","degToRad","degToRad$2","computeMatrix","spaceState","transformOriginX","transformOriginY","transformOriginZ","rotationMatrix","translationMatrix","scalationMatrix","transformMatrix","toRadians","mathematics","geometry","getNewState","objects","clone","field","resolvedTranslationX","resolvedTranslationY","resolvedTranslationZ","resolvedRotationX","resolvedRotationY","resolvedScale","TRANSLATION_STEP","Math","cos","sin","ROTATION_STEP","computedScale","SCALE_STEP","SCALE_UPPER_LIMIT","SCALE_LOWER_LIMIT","abs","updatedTree","updateTreePlane","planeID","linkCoordinates","updateTreeByPlaneIDWithLinkCoordinates","index$9","index$8","getLoading","getTransformMatrix","getAnimatedTransform","getTransformTime","getRotationX","getRotationY","getTranslationX","getTranslationY","getTranslationZ","getScale","getTransform","getInitialTree","getTree","getActiveUniverseID","getView","getViewSize","getCulledView","THEMES_SET_GENERAL_THEME","THEMES_SET_INTERACTION_THEME","index$7","index$6","setGeneralTheme","setInteractionTheme","initialState$1","plurid","index$5","index$4","getGeneralTheme","themes","getInteractionTheme","SET_UI_TOOLBAR_SCROLL_POSITION","index$3","index$2","setUIToolbarScrollPosition","toolbarScrollPosition","index$1","index","getToolbarScrollPosition","ui","modules","rootReducer","combineReducers","store","preloadedState","createStore","applyMiddleware","StateContext","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","result","done","then","apply","Context","direction","directionLogic","loadHammer","__esModule","n","create","keys","forEach","k","d","getOwnPropertyDescriptor","get","enumerable","_interopNamespace","require$$16","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","styleInject","GlobalStyle","createGlobalStyle","StyledView","div","props","fullHeight","TRANSLATION","ROTATION","SCALE","backgroundColorTertiary","backgroundColorPrimary","ErrorBoundary","Component","constructor","super","this","hasError","static","error","componentDidCatch","errorInfo","render","renderError","children","StyledPluridPlane","mouseOver","planeOpacity","backgroundColorPrimaryAlpha","decomposedColor","decomposeColor","hue","saturation","lightness","boxShadowUmbra","colorPrimary","fontFamilySansSerif","StyledPluridPlaneBridge","backgroundColorDark","ConnectedPluridPlaneBridge","connect","stateGeneralTheme","stateConfiguration","dispatch","context","properties","PLURID_ENTITY_PLANE_BRIDGE","StyledPluridPlaneControls","boxShadowUmbraInset","StyledPluridPlaneControlsLeft","StyledPluridPlaneControlsCenter","StyledPluridPlaneControlsRight","inputs","Textline","PluridTextline","universal","ConnectedPluridPlaneControls","generalTheme","interactionTheme","treePlane","pathbar","route","routeDivisions","protocol","host","encodeURIComponent","path","setPath","useState","showSearch","setShowSearch","PLURID_ENTITY_PLANE_CONTROLS","text","atChange","event","target","onChange","id","absolute","atKeyDown","key","onKeyDown","ariaLabel","StyledPluridPlaneContent","PluridPlaneContent","planeContentElement","useRef","PLURID_ENTITY_PLANE_CONTENT","ConnectedPluridPlane","stateViewSize","dispatchUpdateSpaceTreePlane","planeWidth","showPlaneControls","numbers","checkIntegerNonUnit","useContext","Fragment","planeRenderError","setMouseOver","planeContentProperties","suppressHydrationWarning","cleanTemplate","location","translateX","translateY","translateZ","onMouseEnter","onMouseLeave","PLURID_ENTITY_PLANE","parentPlaneID","isReactRenderable","component","url","StyledPluridRoot","getPlanesRegistrar","getPlanesRegistrar$2","getRegisteredPlane","planes","ConnectedPluridRoot","planesRegistrar","planeContext","PlaneContext","planeContextValue","customPlane","matchedRoute","CustomPluridPlane","childrenPlanes","setChildrenPlanes","computeChildrenPlanes","planesRegistry","map","child","sourceID","activePlane","Plane","pluridProperty","fragments","parameters","query","match","renderablePlane","renderableCustomPlane","Provider","useEffect","JSON","stringify","pluridPlaneID","pluridPlane","planeProperties","PLURID_ENTITY_ROOT","StyledPluridRoots","ConnectedPluridRoots","spaceTransformMatrix","spaceAnimatedTransform","spaceTransformTime","stateTree","transition","PLURID_ENTITY_ROOTS","fadeIn","keyframes","fadeInAnimation","fadeInTime","StyledPluridSpace","isMounted","ConnectedPluridSpace","setIsMounted","PLURID_ENTITY_SPACE","resolveSize","SIZES","SMALL","NORMAL","LARGE","StyledOrigin","backgroundColorTertiaryAlpha","ConnectedOrigin","stateInteractionTheme","showTransformOrigin","transformOriginSize","PLURID_ENTITY_TRANSFORM_ORIGIN","MENUS","StyledToolbar","mouseIn","showMenu","NONE","StyledToolbarButtons","backgroundColorSecondary","showIcons","showTransformButtons","documentsBased","StyledToolbarButton","button","active","StyledIcon","StyledPluridMenuUniverses","afterline","StyledPluridMenuUniversesScroll","li","boxShadowUmbraColor","ConnectedPluridMenuUniverses","dispatchSetActiveUniverse","documentID","StyledPluridDrawer","toggled","StyledPluridDrawerHeading","StyledPluridDrawerItems","typography","Heading","PluridHeading","ConnectedPluridDrawer","heading","items","onClick","StyledPluridMoreMenu","StyledPluridMoreMenuItem","last","StyledPluridMoreMenuScroll","Dropdown","PluridDropdown$1","ConnectedPluridMenuMoreGlobal","stateLanguage","dispatchSetConfigurationThemeGeneralAction","dispatchSetConfigurationThemeInteractionAction","dispatchSetConfigurationLanguage","dispatchSetGeneralTheme","dispatchSetInteractionTheme","selectedTheme","generalThemeName","setGeneralThemeName","interactionThemeName","setInteractionThemeName","internatiolate","internationalization","fields","toolbarDrawerGlobalGeneralTheme","selectables","selected","atSelect","selection","filterable","heightItems","fontSize","toolbarDrawerGlobalInteractionTheme","toolbarDrawerGlobalLanguage","languages","Switch","PluridSwitch$3","ConnectedPluridMenuMoreTransform","dispatchToggleConfigurationSpaceTransformMultimode","multimode","dispatchSetConfigurationSpaceTransformTouch","dispatchSetConfigurationSpaceTransformLocks","lock","toolbarDrawerTransformMultiModeTransform","checked","exclusive","level","toolbarDrawerTransformAllowRotationX","toolbarDrawerTransformAllowRotationY","toolbarDrawerTransformAllowTranslationX","toolbarDrawerTransformAllowTranslationY","toolbarDrawerTransformAllowTranslationZ","toolbarDrawerTransformAllowScale","toolbarDrawerTransformTouchTransform","TRANSFORM_TOUCHES","PAN","SWIPE","PluridDropdown","PluridSwitch$2","Slider","PluridSlider$1","ConnectedPluridMenuMoreSpace","dispatchSetConfigurationPlaneOpacity","dispatchToggleConfigurationSpaceTransparentUI","dispatchToggleConfigurationSpaceShowTransformOrigin","dispatchSetConfigurationSpaceTransformOriginSize","dispatchSetConfigurationSpaceLayoutType","layoutNames","toolbarDrawerSpaceTransparentUserInterface","toolbarDrawerSpaceShowTransformOrigin","toolbarDrawerSpaceTransformOriginSize","toLowerCase","toUpperCase","toolbarDrawerSpacePlaneOpacity","max","min","defaultValue","thumbSize","toolbarDrawerSpaceLayoutType","values","replace","PluridSwitch$1","ConnectedPluridMenuMoreToolbar","dispatchToggleConfigurationToolbarConceal","dispatchToggleConfigurationToolbarTransformIcons","dispatchToggleConfigurationToolbarTransformButtons","dispatchToggleConfigurationToolbarOpaque","viewSizeSmall","setViewSizeSmall","toolbarDrawerToolbarAlwaysOpaque","toolbarDrawerToolbarShowTransformIcons","toolbarDrawerToolbarShowTransformArrows","toolbarDrawerToolbarConcealToolbar","PluridSwitch","ConnectedPluridMenuMoreViewcube","dispatchToggleConfigurationViewcubeHide","dispatchToggleConfigurationViewcubeButtons","dispatchToggleConfigurationViewcubeOpaque","dispatchToggleConfigurationViewcubeConceal","toolbarDrawerViewcubeShowViewcube","toolbarDrawerViewcubeShowTransformButtons","toolbarDrawerViewcubeAlwaysOpaque","toolbarDrawerViewcubeConcealViewcube","PluridSlider","ConnectedPluridMenuMoreTechnical","dispatchSetConfigurationSpaceCullingDistance","localCullingDistance","setLocalCullingDistance","dispatchCullingDistanceUpdate","useDebouncedCallback","toolbarDrawerTechnicalCullingDistance","ConnectedPluridMenuMoreShortcuts","defaultShortcuts","shortcut","shortcutData","shortcutsNames","name","internationalizedKey","modifier","modifierString","Array","isArray","reduce","total","element","internationalizedName","keyAsAny","keyName","length","moreMenusRecord","GLOBAL","toolbarDrawerGlobalTitle","TOOLBAR_DRAWERS","TRANSFORM","toolbarDrawerTransformTitle","SPACE","toolbarDrawerSpaceTitle","TOOLBAR","toolbarDrawerToolbarTitle","VIEWCUBE","toolbarDrawerViewcubeTitle","TECHNICAL","toolbarDrawerTechnicalTitle","SHORTCUTS","toolbarDrawerShortcutsTitle","moreMenus","ConnectedPluridMoreMenu","stateToolbarMenuScrollPosition","dispatchToggleConfigurationToolbarToggleDrawer","dispatchSetUIToolbarScrollPosition","drawers","menus","resolvedMenus","menu","push","resolveMenus","moreMenuScrollElement","handleWheel","_event","current","scrollPosition","scrollTop","addEventListener","removeEventListener","moreMenu","StyledPluridToolbarRotate","StyledPluridTransformArrow","pressed","arrowSigns","left","right","up","down","ConnectedPluridTransformArrow","arrowSign","pressingInterval","arrowElement","setPressed","handleTouch","clearInterval","setInterval","Hammer","on","off","ConnectedPluridToolbarRotate","toggleTransform","PluridIconRotate","toolbarTransformRotate","StyledPluridToolbarScale","ConnectedPluridToolbarScale","PluridIconScale","toolbarTransformScale","StyledPluridToolbarTranslate","ConnectedPluridToolbarTranslate","PluridIconTranslate","toolbarTransformTranslate","ConnectedPluridToolbar","dispatchToggleConfigurationSpaceFirstPerson","dispatchSetConfigurationSpaceTransformMode","showToolbar","menuTimeout","setMouseIn","setShowMenu","setShowIcons","setShowTransformButtons","TYPE","clearTimeout","setTimeout","PLURID_ENTITY_TOOLBAR","PluridIconFirstPerson","handleShowMenu","MORE","PluridIconMore","UNIVERSES","StyledPluridViewcube","StyledPluridViewcubeArrow","StyledPluridViewcubeArrowIcon","StyledFitView","StyledPluridViewcubeFace","colorTertiary","face","boxShadowPenumbraColor","StyledPluridViewcubeFaceZone","hovered","colorSecondary","faceTypes","zoneCodes","frontTopLeft","frontTopCenter","frontTopRight","frontMiddleLeft","frontMiddleCenter","frontMiddleRight","frontBottomLeft","frontBottomCenter","frontBottomRight","rightTopLeft","rightTopCenter","rightTopRight","rightMiddleLeft","rightMiddleCenter","rightMiddleRight","rightBottomLeft","rightBottomCenter","rightBottomRight","backTopLeft","backTopCenter","backTopRight","backMiddleLeft","backMiddleCenter","backMiddleRight","backBottomLeft","backBottomCenter","backBottomRight","leftTopLeft","leftTopCenter","leftTopRight","leftMiddleLeft","leftMiddleCenter","leftMiddleRight","leftBottomLeft","leftBottomCenter","leftBottomRight","topTopLeft","topTopCenter","topTopRight","topMiddleLeft","topMiddleCenter","topMiddleRight","topBottomLeft","topBottomCenter","topBottomRight","baseTopLeft","baseTopCenter","baseTopRight","baseMiddleLeft","baseMiddleCenter","baseMiddleRight","baseBottomLeft","baseBottomCenter","baseBottomRight","faceTransform","A1","A2","A3","B1","B2","B3","C1","C2","C3","A4","A5","B4","B5","C4","C5","A6","A7","B6","B7","C6","C7","A8","B8","C8","D1","E1","ConnectedPluridViewcubeFace","dispatchRotateX","angleX","dispatchRotateY","angleY","dispatchSetAnimatedTransform","animated","faceText","hoveredZone","setHoveredZone","activeZone","setActiveZone","opaqueFace","handleClick","zoneCode","StyledPluridViewcubeModel","StyledPluridViewcubeModelContainer","StyledPluridViewcubeModelCube","translateMatrix$1","degToRad$1","ConnectedPluridViewcubeModel","spaceRotationX","spaceRotationY","stateAnimatedTransform","stateTransformTime","offsets","transformOrigins","computeTransform","viewcubeFront","viewcubeBack","viewcubeLeft","viewcubeRight","viewcubeTop","viewcubeBase","ConnectedPluridViewcube","dispatchRotateXWith","dispatchRotateYWith","dispatchSpaceResetTransform","showViewcube","animatedRotate","onMouseMove","PLURID_ENTITY_VIEWCUBE","gridArea","ctrlKey","metaKey","PluridIconGlobal","ConnectedPluridPlanesView","getRegisteredPlanes","ConnectedView","stateTransform","stateSpaceLoading","stateSpaceView","dispatchSetConfiguration","dispatchSetConfigurationMicro","dispatchSpaceSetViewSize","dispatchSetSpaceLoading","dispatchSetTransformTime","dispatchSetSpaceLocation","spaceLocation","dispatchSetInitialTree","dispatchSetTree","dispatchTranslateXWith","dispatchTranslateYWith","dispatchScaleUpWith","dispatchScaleDownWith","dispatchSpaceSetView","pubsub","planeNotFound","viewElement","pluridPubSub","setPluridPubSub","shortcutsCallback","useCallback","locks","defaultPrevented","dom","verifyPathInputElement","noModifiers","shiftKey","altKey","code","handleGlobalShortcuts","wheelCallback","transformModes","rotation","translation","modes","preventDefault","deltas","deltaX","deltaY","getWheelDirection","handleGlobalWheel","treeUpdate","computedTree","Tree","compute","statePlane","computedPlane","entries","treeUpdateCallback","handlePubSubSubscribe","configurationIndex","subscribe","topic","PLURID_PUBSUB_TOPIC","CONFIGURATION","callback","data","internal","computedConfiguration","merge","spaceTransformIndex","SPACE_TRANSFORM","spaceAnimatedTransformIndex","SPACE_ANIMATED_TRANSFORM","time","spaceRotateXWithIndex","SPACE_ROTATE_X_WITH","spaceRotateXToIndex","SPACE_ROTATE_X_TO","spaceRotateYWithIndex","SPACE_ROTATE_Y_WITH","spaceRotateYToIndex","SPACE_ROTATE_Y_TO","spaceTranslateXWithIndex","SPACE_TRANSLATE_X_WITH","spaceTranslateYWithIndex","SPACE_TRANSLATE_Y_WITH","viewAddPlaneIndex","VIEW_ADD_PLANE","updatedView","viewSetPlanesIndex","VIEW_SET_PLANES","viewRemovePlaneIndex","VIEW_REMOVE_PLANE","unsubscribe","handlePubSubPublish","internalTransform","publish","handleSwipe","velocity","distance","rotationMode","translationMode","scalationMode","handlePan","rotationVelocity","translationVelocity","scaleVelocity","passive","handleResize","meta","debounce","offsetWidth","offsetHeight","defaults","cssProps","userSelect","userDrag","tapHighlightColor","touchSelect","set","DIRECTION_ALL","handleGamepadConnect","navigator","getGamepads","gamepad","handleGamepadDisconnect","unsubscribers","unsubscriber","pluridContext","registerPubSub","pluridPubSubs","viewContainer","tabIndex","PLURID_ENTITY_VIEW","registerPlanes","PluridApplication","storeID","defaultStore","computeStore","subscribeStore","componentDidUpdate","updatedStore","componentWillUnmount","storeUnubscriber","precomputedState","useLocalStorage","currentState","getState","localState","local","load","contextState","states","localStorage","stateData","setItem","contextType","StyledSpaces","alignment","snapType","resolvePluridRoutePlaneData","Registrar","PluridPlanesRegistrar$1","computePluridRoute","isoMatcher","directPlane","kind","renderDirectPlane","notFoundRoute","exterior","spaces","slotted","resolver","pluridRouteProperty","PluridRouteExterior","displayName","pluridApplication","_a","_b","_c","_d","_e","_f","multispaceAlignment","multispace","multispaceSnapType","PluridExterior","PluridSpaces","spacesArray","planeData","fullPath","PLURID_ROUTE_DEFAULT_PATH_VALUE","PLURID_ROUTE_DEFAULT_PATH","utilities","cleanPathElement","PLURID_ROUTE_DEFAULT_SPACE_VALUE","PLURID_ROUTE_DEFAULT_SPACE","PLURID_ROUTE_DEFAULT_UNIVERSE","PLURID_ROUTE_DEFAULT_CLUSTER","join","PLURID_ROUTE_SEPARATOR","universes","universe","clusters","cluster","PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE","PLURID_ROUTE_DEFAULT_CLUSTER_VALUE","pluridPlanesRegistrar","App","uuid","generate","pluridPlanes","MultispaceHeader","MultispaceFooter","header","footer","PLURID_ENTITY_MULTISPACE","renderMultispace","routePlane","flat","pluridRoute","Flat","PluridPlanesRegistrar","IsoMatcher","PluridIsoMatcher$1","routing","PluridRouterBrowser","routes","shell","staticContext","cleanNavigationView","cleanNavigation","notFoundPath","notFoundPathProperty","link","startsWith","gatherPluridPlanes","pluridIsoMatcher","routePlanes","mounted","useMounted","matchedPath","setMatchedPath","pathname","search","computeInitialMatchedPath","setMatchedRoute","PluridRoute","setPluridRoute","handleLocation","detail","PluridRouterExterior","PLURID_ROUTER_LOCATION_CHANGED","history","pushState","DirectPlane","storage","saveState","PLURID_ROUTER_STORAGE","locationStoredEvent","CustomEvent","PLURID_ROUTER_LOCATION_STORED","dispatchEvent","PluridRouterShell","PluridRouterStatic","protocolProperty","hostProperty","gateway","gatewayQuery","gatewayQueryProperty","gatewayEndpoint","gatewayEndpointProperty","PluridProvider","metastate","defaultLinkCoordinates","PluridPortal","elementID","rootID","usePortal","createPortal","StyledPluridPlanePreview","getPlanesRegistrar$1","ConnectedPluridPlanePreview","StyledPluridLink","a","devisible","suffix","resolveRoute","computePlaneAddress","getPluridPlaneIDByData","getPluridPlaneIDByData$1","radToDeg","multiplyMatrices","rotateYMatrix","getTransformRotate","getTransformTranslate","getTransformScale","matrix3d","PluridLink$1","dispatchSetTransform","dispatchSetSpaceField","dispatchUpdateSpaceLinkCoordinates","planeRoute","_devisible","_suffix","atClick","className","previewAppearTime","PLURID_DEFAULT_CONFIGURATION_LINK_PREVIEW_FADE_IN","previewDisappearTime","PLURID_DEFAULT_CONFIGURATION_LINK_PREVIEW_FADE_OUT","planeRouteResolved","absolutePlaneRoute","network","PLURID_DEFAULT_CONFIGURATION_LINK_SUFFIX","linkElement","hoverInTimeout","hoverOutTimeout","showPreview","setShowPreview","showLink","setShowLink","setPlaneID","setPluridPlaneID","setParentPlaneID","setLinkCoordinates","getPluridLinkCoordinates","partialTop","partialLeft","staticSet","searching","top","getComputedStyle","position","offsetTop","offsetLeft","scrollLeft","parentElement","dataset","pluridEntity","planeControlsHeight","navigateToPluridPlane","updatedPlane","zSign1","zSign2","xOffset","rotate","translate","handleShowPluridPlane","logic","togglePlaneFromTree","toggleLinkFromTree","updatedTreePlane","updateTreeWithNewPlane","getAll","updateTreeWithLink","PLURID_ENTITY_LINK","StyledPluridRouterLinkAnchor","StyledPluridRouterLinkDiv","PluridRouterLink","asAnchor","asAnchorProperty","renderProperties","pluridRouterNavigate","href","StyledPluridApplicationConfigurator","ConnectedPluridApplicationConfigurator","configuratorElement","PLURID_ENTITY_APPLICATION_CONFIGURATOR","StyledPluridPlaneConfigurator","ConnectedPluridPlaneConfigurator","planePlaneID","PLURID_ENTITY_PLANE_CONFIGURATOR","StyledExternalPlane","ConnectedExternalPlane","setComponent","domain","getPttpUrl","pttpPath","getPttpPath","response","method","headers","Accept","body","credentials","json","elementQLClient","ElementQLClient","status","Elements","Element","elementRequest","StyledIframePlane","ConnectedIframePlane","src","VirtualListItem","setHeight","markers","Spinner","PluridSpinner","ConnectedPluridVirtualList","generalHeight","_generalHeight","listElement","rows","heights","fill","start","setStart","end","setEnd","floor","elementHeight","setElementHeight","resizing","setResizing","arithmetic","sum","i","item","random","renderRows","StyledPluridPlaneDebugger","ConnectedPluridPlaneDebugger","StyledPluridSpaceDebugger","ConnectedPluridSpaceDebugger","resolvePluridPlaneData","computeApplication","indexedPlanes","planesPropertiesReference","Map","computedIndexedPlanes","appConfiguration","linkPath","planePath","computedIndexedPlane","indexedPlanesReference","planeSources","indexedPlane","currentView","absoluteView","viewItem","viewPath","serverComputeMetastate","isoMatch","paths","globals","pathName","spaceName","universeName","clusterName","planeName","planeAddress","computeIndexedPlanes","pluridApplications","routeData","plurids","collectApplicationsFromPath","application","PluridIsoMatcher","RouteParser","PluridRouteParser","internals","PluridPlaneBridge","PluridPlaneControls","PluridPlaneDebugger","PluridSpaceDebugger","Plurid","Application","RouterStatic","RouterBrowser","Link","RouterLink","ApplicationConfigurator","PlaneConfigurator","ExternalPlane","IframePlane","VirtualList","SPACE_LAYOUT","PubSub","PUBSUB_TOPIC","routerNavigate","PluridApplicationConfigurator","PluridExternalPlane","PluridIframePlane","PluridLink","PluridPlaneConfigurator","PluridVirtualList","getDirectPlaneMatch","matchRoute","matchPlane","matchPath","pluridStateModules","usePluridRouter","routerValue","setRouterValue","fetchState","loadState"],"mappings":"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"}
|